web-dev-qa-db-fra.com

Ouverture de fichiers .jar avec `pkexec` et utilisation des entrées de bureau pour exécuter des commandes

J'écris un script bash qui automatise l'installation de TLauncher (lanceur Minecraft) et la gestion de base des dépendances sur les clés USB exécutant Lubuntu 18.04.

Une partie du script bash crée une entrée de bureau sous /usr/share/applications pour un lancement facile à partir du menu Lubuntu.

Voici l'entrée que j'utilise:

[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

La commande pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/Java -jar -Dswing.systemlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel ~/.minecraft/tlauncher.jar fonctionne et lance TLauncher s'il est exécuté dans le terminal. Cependant, je sens que je manque quelque chose lorsque je mets la commande dans l'entrée de bureau.

Lorsque j'essaie d'ouvrir l'entrée dans le menu Lubuntu, le curseur indique que quelque chose se charge, mais rien ne se passe, peu importe le temps que j'attends. Je ne sais pas non plus comment déboguer l'entrée Desktop. J'ai essayé dexdg-open l'entrée, mais je n'ai eu aucune sortie dans le terminal et rien ne s'est passé non plus -i.e, TLauncher ne s'est pas lancé.

J'ai essayé de mettre la commande dans un fichier bash séparé qui ressemble à:

#!/bin/bash

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

Exécuter cela dans le terminal bash testscript.sh fonctionne et lance TLauncher.

Mais quand je l'ai mis dans l'entrée de bureau en remplaçant le exec de l'entrée ci-dessus comme ceci:

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

Ça ne marche pas.

Les scripts Shell disposent des autorisations appropriées.

J'ai l'impression que j'écris mal la valeur exec de l'entrée de bureau ou que pkexec n'est pas censé fonctionner à partir d'une entrée de bureau comme j'essaye de la faire fonctionner.

Je voudrais pouvoir lancer TLauncher à partir d'une entrée de bureau via le menu et avoir une fenêtre contextuelle gui demandant le mot de passe afin que la commande s'exécute en tant que root.

Modifier:

Utilisation de chemins d'accès complets au lieu de ~ donne également le même résultat -i.e, cela ne fonctionne pas et les problèmes ci-dessus demeurent.

Réglage Terminal=true ne résout pas cela pour moi.

3
solidwaffle

Solution actuelle: Étant donné que la commande fonctionne lorsqu'elle est exécutée dans le terminal, il suffit de demander à Desktop Entry d'exécuter la commande avec un 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"

Notes:

Je pense que je pourrais construire à partir de cela pour m'assurer que lorsque le lanceur est fermé, il est en fait fermé car j'ai remarqué à travers ps aux Que les processus ne sont pas réellement tués comme je m'attends à provoquer un comportement étrange la prochaine fois J'ouvre le lanceur.

2
solidwaffle