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

Vos petites astuces, répertoire des tutoriels et astuces
Répondre
Kazlu
Messages : 14
Enregistré le : jeu. 1 oct. 2015 18:54

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

Message par Kazlu »

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 http://forum-francophone-linuxmint.shos ... 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 : 7845
Enregistré le : mar. 25 août 2015 21:12
Localisation : Belgique

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

Message par mpat »

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
Clevo P775DM3-G
I7 -7700k (quad-core (8 threads) 4.2-4.5 ghz
ram 64go DDR4
Nvidia gtx 1080 8go GDDR5X
2 x ssd 500go m.2 Samsung + 2 to ssd Samsung
Lmint 18.3 Cinnamon 64bit, kernel 4.13.0-45

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

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

Message par ledudulela »

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
leDuduLéLà - Linux Mint Debian Edition 1 Mate , 2 Mate , 3 Cinnamon , 4 Cinnamon , 5 Cinnamon / 64 bits 6 Cinnamon / 64 bits

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

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

Message par dagonh »

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

Message par Kazlu »

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
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.

Répondre