Apertura di file .jar con `pkexec` e utilizzo di voci del desktop per eseguire i comandi

Oct 19 2019

Sto scrivendo uno script bash che automatizza l'installazione di TLauncher (lanciatore di Minecraft) e la gestione delle dipendenze di base su USB che eseguono Lubuntu 18.04.

Parte dello script bash crea una voce sul desktop sotto /usr/share/applicationsper un facile avvio dal menu Lubuntu.

Ecco la voce che sto usando:

[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

Il comando funziona e avvia TLauncher se eseguito nel terminale. Tuttavia, sento che mi manca qualcosa quando inserisco il comando nella voce del desktop.pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar

Quando provo ad aprire la voce dal menu Lubuntu, il cursore mostra che qualcosa si sta caricando, ma poi non succede nulla, non importa quanto tempo aspetto. Inoltre, non sono sicuro di come eseguire il debug della voce Desktop. Ho provato alla xdg-openvoce, ma non ho ricevuto alcun output nel terminale e non è successo niente, ad esempio TLauncher non si è avviato.

Ho provato a inserire il comando in un file bash separato che assomiglia a:

#!/bin/bash

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

L'esecuzione nel terminale bash testscript.shfunziona e avvia TLauncher.

Ma quando lo metto nella voce del desktop sostituendo il execdalla voce sopra in questo modo:

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

Non funziona.

Gli script della shell hanno le autorizzazioni appropriate.

Mi sento come se stessi scrivendo il execvalore di Desktop Entry sbagliato o che pkexecnon dovrebbe funzionare da un Desktop Entry nel modo in cui sto cercando di farlo funzionare.

Vorrei essere in grado di avviare TLauncher da una voce del desktop tramite il menu e avere un popup della GUI che richiede la password per eseguire il comando come root.

Modificare:

L'uso di percorsi completi invece di ~produce anche lo stesso risultato, cioè non funziona e rimangono i problemi di cui sopra.

L'impostazione Terminal=truenon risolve questo problema per me.

Risposte

2 solidwaffle Oct 19 2019 at 07:35

Soluzione attuale: poiché il comando funziona quando viene eseguito nel terminale, è sufficiente che il Desktop Entry esegua il comando con un terminale:

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"

Appunti:

Penso di poter partire da questo per assicurarmi che quando il programma di avvio è chiuso, è effettivamente chiuso poiché ho notato ps auxche i processi non vengono effettivamente uccisi nel modo in cui mi aspetto che causino strani comportamenti la prossima volta che apro il programma di avvio.