Otwieranie plików .jar za pomocą `pkexec` i używanie Desktop Entries do uruchamiania poleceń

Oct 19 2019

Piszę skrypt bash, który automatyzuje instalację TLauncher (Minecraft launcher) i podstawowe zarządzanie zależnościami na USB z Lubuntu 18.04.

Część skryptu bash tworzy wpis na pulpicie w /usr/share/applicationscelu łatwego uruchamiania z menu Lubuntu.

Oto wpis, którego używam:

[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

Polecenie działa i uruchamia TLauncher, jeśli jest uruchomione w terminalu. Jednak czuję, że czegoś mi brakuje, kiedy umieszczam polecenie w polu Desktop Entry.pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar

Kiedy próbuję otworzyć wpis z menu Lubuntu, kursor pokazuje, że coś się ładuje, ale potem nic się nie dzieje, niezależnie od tego, jak długo czekam. Nie jestem też pewien, jak debugować wpis pulpitu. Próbowałem xdg-openwejść, ale nie otrzymałem wyjścia w terminalu i też nic się nie stało - tj. TLauncher się nie uruchomił.

Próbowałem umieścić polecenie w osobnym pliku bash, który wygląda tak:

#!/bin/bash

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

Uruchomienie tego w terminalu bash testscript.shdziała i uruchamia TLauncher.

Ale kiedy wstawię to we wpisie na pulpicie zastępując execz wpisu powyżej tak:

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

To nie działa.

Skrypty powłoki mają odpowiednie uprawnienia.

Wydaje mi się, że albo piszę execnieprawidłową wartość wpisu pulpitu, albo pkexecto nie powinno działać z wpisu pulpitu tak, jak staram się, aby działało.

Chciałbym móc uruchomić TLauncher z wpisu na pulpicie za pośrednictwem menu i mieć wyskakujące okienko GUi z pytaniem o hasło, aby polecenie działało jako root.

Edytować:

Używanie pełnych ścieżek zamiast ~również daje ten sam wynik -ie, to nie działa i powyższe problemy pozostają.

Ustawienie Terminal=truetego nie rozwiązuje.

Odpowiedzi

2 solidwaffle Oct 19 2019 at 07:35

Obecne rozwiązanie: Ponieważ polecenie działa po uruchomieniu w terminalu, wystarczy, że Desktop Entry uruchomi polecenie za pomocą terminala:

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"

Uwagi:

Myślę, że mógłbym to zbudować, aby upewnić się, że kiedy program uruchamiający jest zamknięty, jest faktycznie zamknięty, ponieważ zauważyłem, ps auxże procesy nie są w rzeczywistości zabijane w sposób, jakiego oczekuję, powodując dziwne zachowanie, gdy następnym razem otworzę program uruchamiający.