`pkexec`로 .jar 파일을 열고 데스크탑 항목을 사용하여 명령 실행

Oct 19 2019

Lubuntu 18.04를 실행하는 USB에서 TLauncher (Minecraft 런처) 설치 및 기본 종속성 관리 를 자동화하는 bash 스크립트를 작성 중입니다.

bash 스크립트의 일부는 /usr/share/applicationsLubuntu 메뉴에서 쉽게 시작할 수 있도록 아래 에 데스크탑 항목을 만듭니다 .

내가 사용중인 항목은 다음과 같습니다.

[Desktop Entry]
Encoding=UTF-8
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
Icon=~/.minecraft/icons/default.png
Type=Application
Terminal=false
Name=Minecraft
GenericName=minecraft
StartupNotify=false
Categories=Game

명령이 작동하고 터미널에서 실행되는 경우 TLauncher를 시작합니다. 그러나 Desktop Entry에 명령을 입력하면 뭔가 빠진 것 같습니다.pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar

Lubuntu 메뉴에서 항목을 열려고하면 커서에 무언가로드 중이라고 표시되지만 아무리 기다려도 아무 일도 일어나지 않습니다. 데스크탑 항목을 디버그하는 방법도 모르겠습니다. xdg-open항목을 시도했지만 터미널에 출력이 없었고 아무 일도 일어나지 않았습니다. 즉, TLauncher가 시작되지 않았습니다.

다음과 같은 별도의 bash 파일에 명령을 넣어 보았습니다.

#!/bin/bash

pkexec env DISPLAY=:0 XAUTHORITY=/home/me/.Xauthority /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar

터미널에서 실행하면 bash testscript.sh작동하고 TLauncher가 시작됩니다.

그러나 exec위의 항목에서 다음과 같이 대체하는 데스크탑 항목에 넣을 때 :

Exec=/bin/bash /path/to/testscript.sh

작동하지 않습니다.

쉘 스크립트에는 적절한 권한이 있습니다.

Desktop Entry의 exec값을 잘못 쓰고 있거나 pkexec그것이 작동하도록하려는 방식으로 Desktop Entry에서 작동해서는 안되는 것 같습니다.

메뉴를 통해 데스크톱 항목에서 TLauncher를 시작하고 명령을 .NET으로 실행하기 위해 암호를 묻는 GUI 팝업을 표시하고 싶습니다 root.

편집하다:

대신 전체 경로를 사용 ~하면 동일한 결과가 생성됩니다. 즉, 작동하지 않고 위의 문제가 남아 있습니다.

설정 Terminal=true이이 문제를 해결하지 못합니다.

답변

2 solidwaffle Oct 19 2019 at 07:35

현재 솔루션 : 명령이 터미널에서 실행될 때 작동하기 때문에 데스크톱 항목이 터미널에서 명령을 실행하도록하기 만하면됩니다.

Exec=lxterminal -e "pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel /home/me/.minecraft/tlauncher.jar"

메모:

런처가 닫힐 때 ps aux다음에 런처를 열 때 이상한 동작을 일으킬 것으로 예상되는 방식으로 프로세스가 실제로 죽지 않는다는 것을 알았을 때 실제로 닫히도록 만들 수 있다고 생각 합니다.