J'aimerais savoir comment écrire la commande Exec
d'un fichier .desktop pour ouvrir un nouveau terminal et y exécuter un script Shell. Le script shell fonctionne et est accessible à tous les utilisateurs. Lorsque vous lancez le script à partir du terminal, tout fonctionne, mais cela ne fonctionne pas lorsque vous essayez de lancer le script à partir d'un fichier .desktop.
Voici quelques combinaisons que j'ai déjà essayées:
Exec=gnome-terminal -x sh -c 'echo hello'
Exec=sh -c 'gnome-terminal echo hello'
Exec=sh -c 'echo hello'
Exec=echo hello
L'option de terminal .desktop est définie sur true.
Le contenu de votre fichier desktop devrait ressembler à (voir comment créer un fichier .desktop à l’aide d’un éditeur de texte ):
[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "bash -c 'echo hello;$Shell'"
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=Application;
Ou:
[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=bash -c 'echo hello;$Shell'
Icon=utilities-terminal
Terminal=true
Type=Application
Categories=Application;
Dans le premier cas, le champ Terminal
est défini sur false
(peut-être contrairement à vos attentes) et, dans le second cas, sur true
, mais le résultat est identique.
!#/bin/bash
gnome-terminal -e YOUR_COMMANDS
Créez le fichier ci-dessus. N'oubliez pas de Sudo chmod +x filename.sh
Ajoutez simplement
;$Shell
à la fin de vos commandes.
Comme pour moi, snapd
n'utilise pas toute la bande passante du système pour actualiser les captures instantanées presque à chaque fois que je travaille la nuit.
Cela a donc fonctionné pour moi de créer un fichier .sh
lié à un fichier .desktop
.
Le contenu du fichier .sh
était
echo <your password> | Sudo -S systemctl stop snapd.service
Sudo systemctl disable snapd.service;$Shell
-S
dans la première ligne du fichier .sh
sert à envoyer STDINPUT
à la commande Sudo
qui signifie exécution directe sans entrer de mot de passe.
Le contenu du fichier .desktop
était le suivant:
[Desktop Entry]
Version=1.0
Name=Test
Comment=Test the terminal running a command inside it
Exec=gnome-terminal -e "/scripts/disable_snap.sh"
Icon=terminal
Terminal=true
Type=Application
Categories=Application;
Je fais ça. La première ligne du fichier texte est! #/Bin/bash
Les lignes suivantes du fichier texte sont les commandes (le script Shell).
Enregistrez le fichier sous quelque chose.sh
Ouvrez les propriétés du fichier et activez le fichier d'exécution en tant que programme.
Maintenant, lorsque le fichier est double-cliqué, je reçois l'option de l'exécuter.