Pour pouvoir arrêter avec un raccourci clavier, nous pouvons attribuer gnome-session-quit ---power-off
à un raccourci personnalisé.
Dans Unity, cela conduira à la boîte de dialogue suivante:
Ensuite, nous avons besoin d'au moins deux frappes supplémentaires pour enfin éteindre notre système. C'est plutôt gênant et je préférerais l'ancienne boîte de dialogue d'arrêt lorsque vous pouvez éteindre en appuyant simplement Returnou en le laissant attendre le compte à rebours par défaut de 60 secondes.
Lors gnome-session-quit --poweroff
d'un appel depuis une session flashback de session GNOME sur le même système (14.04 LTS), l'ancienne boîte de dialogue comprenant le compte à rebours revient:
Nous savons donc qu'il habite quelque part.
Existe-t-il un moyen d'appeler cette ancienne boîte de dialogue lors de l'exécution d'une session Unity?
la source
Réponses:
Voici un script pour émuler le comportement souhaité. Doit être exécuté comme avec
sudo
. Peut être lié à un raccourci clavier (avec ajout préalable de lashutdown
commande au fichier sudoers pour permettre une exécution sans mot de passe ). Simpliste, concis et fait le travail.Mise à jour: 14 juin
Comme suggéré par Takkat, voici un script qui utilise l'option --timer de zenity et dbus pour obtenir le même comportement sans avoir besoin d'un accès sudo:
L'idée de base ici est que l'option de délai d'attente de zenity se termine avec un code supérieur à 0, ce qui signifie généralement que la commande a échoué. Ainsi, en traitant l'option d'annulation et le délai d'expiration de zenity comme la condition qui permettra l'arrêt, nous utilisons l'opérateur OR (
||
) pour arrêter uniquement si l'utilisateur clique sur le bouton d'annulation (étiqueté "DOIT") ou que la boîte de dialogue expire.Une autre variante pour améliorer l'expérience utilisateur peut être effectuée
yad
(doit être installée en premier avec ces commandessudo apt-add-repository ppa:webupd8team/y-ppa-manager;sudo apt-get update; sudo apg-get install yad
). Cette variante utilise la barre de progression pour indiquer à l'utilisateur le temps restantUne autre version possible, tient compte du fait que si vous modifiez le libellé du bouton ok de zenity, le bouton mis en surbrillance par défaut peut être ou non le bouton ok.
Le script arrête le système lors de tout retour différent de 0. Si le script expire, la valeur de retour 1 ou 5 indique au script d'exécuter la
else
partiela source
zenity --timeout
minuteur intégré. Par cela, nous n'aurons pas à annuler / redémarrer l'arrêt plus tard.if [[ $? -eq 1 ]] ; then exit \else dbus...
condition qui fait cela. De toute évidence, il ne semble pas possible d'appeler l'ancien aide à la déconnexion ...Pas littéralement ce que vous avez demandé, mais au moins une solution (effectivement) comparable serait de mettre le script ci-dessous sous une touche de raccourci.
Ce qu'il fait
Lorsque la touche de raccourci est utilisée:
gnome-session-quit --power-off
commande est exécutéela souris est déplacée vers le bouton "fermer" correspondant, ce qui rend le bouton d'arrêt présélectionné:
Alors:
Le script
Comment utiliser
Je suis sûr que vous savez comment l'utiliser, mais c'est parti pour des raisons d'habbit:
Le script utilise
xdotool
Copiez le script dans un fichier vide, enregistrez-le sous
run_close.py
Dans la section de tête, définissez l'emplacement de l'écran du bouton d'arrêt dans la fenêtre de fermeture (ma première supposition était juste):
et le temps d'attendre avant l'arrêt sans surveillance:
Testez-le par la commande:
Testez-le avec toutes les options: appuyez sur Enterpour un arrêt immédiat, un arrêt sans surveillance et interrompez la procédure par un mouvement de souris
Si tout fonctionne bien, ajoutez-le à une touche de raccourci: choisissez: Paramètres système> "Clavier"> "Raccourcis"> "Raccourcis personnalisés". Cliquez sur le "+" et ajoutez la commande:
ÉDITER
Ci-dessous une version du script qui ne nécessite aucun paramètre supplémentaire. Il calcule les coordonnées du bouton Quitter, quelle que soit la résolution de l'écran.
La configuration est à peu près la même, mais
[3.]
peut être ignorée.Explication
La taille de la fenêtre Session Manager pour fermer le système est toujours centrée et d'une taille fixe (absolue), indépendante de la résolution de l'écran. Par conséquent, la position par rapport au centre de l'écran est un facteur constant.
Il suffit alors de lire la résolution de l'écran et de calculer la position du bouton à partir de là.
La fonction appliquée (
get_qloc()
) calcule la résolution de l' écran de gauche , puisque c'est celle où le dialogue apparaîtra.Remarque
L'heure, définie dans la ligne,
time.sleep(0.4)
est définie pour les systèmes relativement lents, pour vous assurer que la souris est déplacée après l'apparition de la fenêtre d'arrêt. Sur les systèmes plus rapides, il peut être plus court, sur les systèmes plus lents (comme peut-être une machine virtuelle), il peut être nécessaire de définir une durée plus longue.la source