Créer un lanceur pour éteindre avec demande de confirmation

Demandez et postez vos petites astuces, répertoire des tutoriels et astuces
Kazlu
Messages : 14
Enregistré le : jeu. 1 oct. 2015 18:54

Créer un lanceur pour éteindre avec demande de confirmation

Messagepar Kazlu » mer. 28 oct. 2015 19:03

Ce tutoriel a pour but de créer un lanceur dans le tableau de bord de MATE pour éteindre l'ordinateur, avec demande de confirmation pour éviter d'éteindre sans le vouloir. Il existe déjà un lanceur qui fait à peu près ça dans Linux Mint. Mais dans mon cas, j'ai rencontré un problème sur mon installation de Linux Mint qui faisait que je ne pouvais plus éteindre l'ordinateur via le mintmenu ou via le lanceur du tableau de bord original (voir viewtopic.php?f=23&t=523). D'autre part, il est facile de personnaliser ce lanceur si on le souhaite. Il est d'ailleurs possible de faire autre chose qu'éteindre, la méthode peut être appliquée à toute commande possible et imaginable !

La première chose à faire, c'est de sauvegarder ce script dans un fichier texte quelque part sur son disque.

Code : Tout sélectionner

echo -n "Que voulez-vous faire ? Appuyez sur la touche correspondante\n"
echo -n "e : Éteindre\n"
echo -n "r : Redémarrer\n"
echo -n "v : Mettre en veille\n"
echo -n "h : Hiberner\n"
echo -n "Appuyez sur une autre touche pour annuler.\n"
stty -echo raw
c=$(dd bs=1 count=1 2>/dev/null )
stty echo -raw
if [ $c = e ]
then
   echo "Extinction..."
    dbus-send --system --print-reply --system --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop
elif [ $c = r ]
then
   echo "Redémarrage..."
    dbus-send --system --print-reply --system --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart
elif [ $c = v ]
then
   echo "Veille..."
    dbus-send --system --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Suspend
elif [ $c = h ]
then
   echo "Hibernation..."
    dbus-send --system --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower org.freedesktop.UPower.Hibernate
fi
echo

L'idéal est de le mettre dans un dossier de son /home qui soit isolé des autres pour éviter de le supprimer avec d'autres documents. Dans la suite, je supposerai que ce script, que l'on nommera "lanceur_eteindre", est enregistré dans /home/user/scripts_perso.

Ensuite, on va créer un lanceur dans le tableau de bord de MATE. Faites un clic droit dans le panneau à l'endroit où vous voulez placer le lanceur et cliquez sur "Ajouter au tableau de bord". Sélectionnez "Créer un lanceur d'application personnalisé". Dans la fenêtre qui s'ouvre, renseignez les champs comme ceci :
Type : Application dans un terminal
Nom : Extinction
Commande : /home/user/scripts_perso/lanceur_eteindre
Commentaire : Éteindre l'ordinateur

Vous pouvez choisir une icône qui vous convient pour ce lanceur. Une fois ceci fait, essayez votre lanceur. Cliquez dessus... Crotte de bique, ça ne marche pas... Un message d'erreur vous informe que xterm n'est pas installé. Qu'à cela ne tienne, on va l'installer. Installez-le via le gestionnaire de logiciels ou via la commande

Code : Tout sélectionner

sudo apt-get install xterm

Maintenant, si vous cliquez sur votre lanceur, un terminal s'ouvre en vous demandant d'appuyer sur une touche pour sélectionner une option. Par exemple, appuyez sur "e" pour éteindre. Si vous avez cliqué sur ce lanceur par erreur, appuyez sur n'importe quelle touche qui n'est pas listée (par exemple, "a" ou "échap") et la fenêtre de terminal se terminera sans rien faire.

Pistes d'améliorations :
- xterm : Ce n'est pas très propre d'installer xterm alors qu'on dispose déjà d'un émulateur de terminal (mate-terminal sur Linux Mint MATE). Je suppose qu'il doit y avoir une solution pour que l'option "lancer dans un terminal" du tableau de bord MATE appelle mate-terminal et non pas xterm ? Une variable d'environnement à changer peut-être ?
- option déconnexion : J'aurais voulu pouvoir ajouter les options "déconnexion" et peut-être "changer d'utilisateur" dans ce script. On m'a conseillé la commande suivante pour déconnecter:

Code : Tout sélectionner

dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1

mais elle ne fonctionne pas. J'ai essayé en la remplaçant par

Code : Tout sélectionner

dbus-send --session --type=method_call --print-reply --dest=org.mate.SessionManager /org/mate/SessionManager org.mate.SessionManager.Logout uint32:1

mais à cause d'un bug spécifique à mon cas ça ne fonctionne pas non plus chez moi, je ne sais pas si ça marche chez quelqu'un d'autre...

Testé dans Linux Mint MATE 17.1 32 bits.
--
Kazlu

Avatar du membre
mpat
Messages : 7262
Enregistré le : mar. 25 août 2015 21:12
Localisation : Belgique

Re: Créer un lanceur pour éteindre avec demade de confirmati

Messagepar mpat » mer. 28 oct. 2015 19:37

possible une erreur de copier coller, celle-ci testée fonctionne.

Code : Tout sélectionner

dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1
Asus x53sd, I5- 2.5/3.1 ghz, 8go ram
dual gpu Intel/Nvidia pilotes 384.98, ssd evo-pro850 256go + hdd 750go
Lmint 18.2 - Cinnamon 64-bit, kernel 4.13.10-041315

Avatar du membre
ledudulela
Messages : 162
Enregistré le : mer. 15 juil. 2015 20:49
Localisation : France - Gironde

Re: Créer un lanceur pour éteindre avec demade de confirmati

Messagepar ledudulela » mer. 28 oct. 2015 21:44

bonjour/bonsoir,
juste pour te donner un peu de boulot supplémentaire, ne serait-ce pas plus joli avec Zenity pour demander l'action à exécuter plutôt que des touches à enfoncer :?: :idea:
leDuduLéLà - Linux Mint Debian Edition 2 / MATE / 64 bits
CM: MSI H97M-G43 // CPU: i3-4150 - 3.5 GHz - 2 coeurs, 4 threads // RAM: Kingston 8Go DDR3
CG intégrée: Intel HD Graphics 4000 // Alim: Corsair 430 W // imprim. Canon MG2450

Avatar du membre
dagonh
Messages : 1523
Enregistré le : lun. 13 juil. 2015 15:41

Re: Créer un lanceur pour éteindre avec demande de confirmat

Messagepar dagonh » jeu. 29 oct. 2015 07:15

Juste une question : comme tu as fait ça sous Maté, as-tu essayé d'ajouter le lanceur d'extinction et/ou celui de fermeture de session déjà proposé dans les lanceurs "tout faits" ?
CM Gigabyte Z97-HD3, Intel i7-4790K, RAM 16 Go
système sur SSD 240 Go + 3 To pour les données (+2,5 To externes pour les sauvegardes)
Écran Hanns 27" 16/10
Sarah Maté

Kazlu
Messages : 14
Enregistré le : jeu. 1 oct. 2015 18:54

Re: Créer un lanceur pour éteindre avec demande de confirmat

Messagepar Kazlu » ven. 30 oct. 2015 19:38

ledudulela a écrit :bonjour/bonsoir,
juste pour te donner un peu de boulot supplémentaire, ne serait-ce pas plus joli avec Zenity pour demander l'action à exécuter plutôt que des touches à enfoncer :?: :idea:


Oui c'est une idée, je ne connaissais pas. Si je trouve le temps je regarderai ça.

dagonh a écrit :Juste une question : comme tu as fait ça sous Maté, as-tu essayé d'ajouter le lanceur d'extinction et/ou celui de fermeture de session déjà proposé dans les lanceurs "tout faits" ?


Oui, j'en parle dans le fil que j'ai cité, mais les lanceurs "tout faits" ne fonctionnent pas chez moi et je n'ai pas réussi à trouver pourquoi. Mais ce lanceur custom fonctionne.


Retourner vers « Trucs et Astuces »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 2 invités