Abrir archivos .jar con `pkexec` y usar entradas de escritorio para ejecutar comandos
Estoy escribiendo un script bash que automatiza la instalación de TLauncher (lanzador de Minecraft) y la administración básica de dependencias en USB que ejecutan Lubuntu 18.04.
Parte del script bash crea una entrada de escritorio debajo /usr/share/applicationspara iniciarlo fácilmente desde el menú de Lubuntu.
Aquí está la entrada que estoy 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
 
    El comando funciona y ejecuta TLauncher si se ejecuta en la terminal. Sin embargo, siento que me falta algo cuando coloco el comando en la Entrada del escritorio.pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar
Cuando intento abrir la entrada desde el menú de Lubuntu, el cursor muestra que algo se está cargando, pero luego no pasa nada, no importa cuánto tiempo espere. Tampoco estoy seguro de cómo depurar la entrada del escritorio. Intenté xdg-openingresar, pero no obtuve salida en la terminal y tampoco sucedió nada, es decir, TLauncher no se inició.
Intenté poner el comando en un archivo bash separado que se parece 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
 
    Ejecutar eso en la terminal bash testscript.shfunciona y ejecuta TLauncher.
Pero cuando lo puse en la entrada del escritorio reemplazando el execde la entrada anterior así:
Exec=/bin/bash /path/to/testscript.sh
 
    No funciona.
Los scripts de shell tienen los permisos adecuados.
Siento que estoy escribiendo execincorrectamente el valor de la Entrada de escritorio o que pkexecno se supone que funcione desde una Entrada de escritorio de la manera en que intento que funcione.
Me gustaría poder iniciar TLauncher desde una entrada del escritorio a través del menú y tener una ventana emergente de interfaz gráfica de usuario pidiendo la contraseña para que el comando se ejecute como root.
Editar:
El uso de rutas completas en lugar de ~también produce el mismo resultado, es decir, no funciona y persisten los problemas anteriores.
La configuración Terminal=trueno me resuelve esto.
Respuestas
Solución actual: dado que el comando funciona cuando se ejecuta en la terminal, simplemente haga que Desktop Entry ejecute el comando con una terminal:
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"
 
     Notas:
Creo que podría basarme en esto para asegurarme de que cuando el lanzador esté cerrado, en realidad esté cerrado, ya que noté ps auxque los procesos en realidad no se están matando de la manera que espero, causando un comportamiento extraño la próxima vez que abra el lanzador.