Öffnen von .jar-Dateien mit `pkexec` und Verwenden von Desktop-Einträgen zum Ausführen von Befehlen
Ich schreibe ein Bash-Skript, das die Installation von TLauncher (Minecraft Launcher) und das grundlegende Abhängigkeitsmanagement auf USBs mit Lubuntu 18.04 automatisiert .
Ein Teil des Bash-Skripts erstellt einen Desktop-Eintrag unter /usr/share/applications
zum einfachen Starten über das Lubuntu-Menü.
Hier ist der Eintrag, den ich benutze:
[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
Der Befehl funktioniert und startet TLauncher, wenn er im Terminal ausgeführt wird. Ich habe jedoch das Gefühl, dass mir etwas fehlt, wenn ich den Befehl in den Desktop-Eintrag eingebe.pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
Wenn ich versuche, den Eintrag über das Lubuntu-Menü zu öffnen, zeigt der Cursor an, dass etwas geladen wird, aber dann passiert nichts, egal wie lange ich warte. Ich bin mir auch nicht sicher, wie ich den Desktop-Eintrag debuggen soll. Ich habe versucht, xdg-open
den Eintrag zu finden, aber ich habe keine Ausgabe im Terminal erhalten und es ist auch nichts passiert - dh TLauncher wurde nicht gestartet.
Ich habe versucht, den Befehl in eine separate Bash-Datei einzufügen, die wie folgt aussieht:
#!/bin/bash
pkexec env DISPLAY=:0 XAUTHORITY=/home/me/.Xauthority /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
Das Ausführen im Terminal bash testscript.sh
funktioniert und startet TLauncher.
Aber wenn ich es in den Desktop-Eintrag setze, ersetze ich das exec
aus dem obigen Eintrag wie folgt:
Exec=/bin/bash /path/to/testscript.sh
Es funktioniert nicht.
Die Shell-Skripte haben die richtigen Berechtigungen.
Ich habe das Gefühl, dass ich entweder den exec
Wert des Desktop- Eintrags falsch schreibe oder dass er pkexec
von einem Desktop-Eintrag nicht so funktionieren soll, wie ich es versuche.
Ich möchte in der Lage sein, TLauncher von einem Desktop-Eintrag über das Menü zu starten und ein GUI-Popup zu haben, das nach dem Passwort fragt, damit der Befehl ausgeführt wird root
.
Bearbeiten:
Die Verwendung vollständiger Pfade anstelle des ~
gleichen Ergebnisses - dh es funktioniert nicht und die oben genannten Probleme bleiben bestehen.
Die Einstellung Terminal=true
löst dies für mich nicht.
Antworten
Aktuelle Lösung: Da der Befehl beim Ausführen im Terminal funktioniert, lassen Sie den Desktop-Eintrag den Befehl einfach mit einem Terminal ausführen:
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"
Anmerkungen:
Ich denke, ich könnte darauf aufbauen, um sicherzustellen, dass der Launcher beim Schließen tatsächlich geschlossen wird, da ich festgestellt habe, ps aux
dass Prozesse beim nächsten Öffnen des Launcher nicht so beendet werden, wie ich es erwartet habe.