Öffnen von .jar-Dateien mit `pkexec` und Verwenden von Desktop-Einträgen zum Ausführen von Befehlen

Oct 19 2019

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/applicationszum 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-openden 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.shfunktioniert und startet TLauncher.

Aber wenn ich es in den Desktop-Eintrag setze, ersetze ich das execaus 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 execWert des Desktop- Eintrags falsch schreibe oder dass er pkexecvon 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=truelöst dies für mich nicht.

Antworten

2 solidwaffle Oct 19 2019 at 07:35

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 auxdass Prozesse beim nächsten Öffnen des Launcher nicht so beendet werden, wie ich es erwartet habe.