#1 Le 12/11/2017, à 08:18
- Crestey
[Résolu] Exécuter script en sortie de veille ou entrée en veille
Bonjour à tous,
J'ai pas mal farfouillé sur google pour répondre à la question.
A chaque fois on suggère de mettre un script sous /etc/apm/resume.d ou bien de rajouter des lignes dans le script existant /etc/apm/resume.d/20alsa, et à chaque fois ça ne marche pas.
Du coup j'ai essayé moi-même pour être sûr que ça ne marche pas:
J'ai ajouté la ligne cp /home/crestey1/toto /home/crestey1/toto1 dans /etc/apm/resume.d/20alsa comme suit :
#!/bin/sh
#
# apmd proxy script for ALSA
cp /home/crestey1/toto /home/crestey1/toto1
[ -x /usr/sbin/alsactl ] || exit 0
case "$1,$2" in
suspend,*) /usr/sbin/alsactl store && /sbin/alsa suspend ;;
resume,suspend) /sbin/alsa resume && /usr/sbin/alsactl restore ;;
esac
Et effectivement elle ne s'exécute pas en sortie de veille.
Du coup, j'ai 2 questions
1) Est-ce que le script /etc/apm/resume.d/20alsa contient du code mort ? (qui ne s'exécute jamais)
2) Comment faire pour exécuter un script en sortie de veille ou juste avant d'y rentrer ?
A vous lire
Dernière modification par Crestey (Le 14/11/2017, à 11:14)
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne
#2 Le 12/11/2017, à 08:23
- Compte supprimé
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Bonjour,
Vu que la prochaine version de systemd fera aussi le café, tu devrais chercher dans sa direction. La version actuelle contient certainement une commande pour faire cela.
Edit : une piste
https://wiki.archlinux.org/index.php/Po … leep_hooks
Dernière modification par Compte supprimé (Le 12/11/2017, à 08:25)
#3 Le 13/11/2017, à 22:24
- Crestey
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Merci Tamarou,
En effet grâce à ton lien, j'ai trouvé que pour lancer un script avant mise en veille, il suffit de le placer dans /lib/systemd/system-sleep/. J'ai testé, ça marche.
Par contre, pour avoir une interaction utilisateur avant mise en veille en utilisant zenity par exemple, j'ai l'impression que c'est possible aussi mais ça dépasse un peu mes compétences. Je vais fouiller un peu.
Le besoin c'est par exemple si, lors d'une mise en veille, le système détecte qu'un redémarrage est nécessaire, alors une boite de dialogue s'ouvre pour proposer un reboot.
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne
#4 Le 14/11/2017, à 07:54
- Compte supprimé
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
interaction utilisateur avant mise en veille en utilisant zenity par exemple,
Un petit tour par ici :
https://help.gnome.org/users/zenity/stable/
#5 Le 14/11/2017, à 09:21
- kholo
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
salut,
et pour l’interaction, penser à mettre le bon DISPLAY
par exemple pour cron :
export DISPLAY=:0 && /somedirectory/your_zenity_script.sh
depuis un script en root
env DISPLAY=:0.0 zenity --question...
Hors ligne
#6 Le 14/11/2017, à 09:32
- Crestey
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Merci à vous. Du coup je progresse, lentement , mais je progresse !
j'ai mis dans /lib/systemd/system-sleep le fichier ActionsApresVeille suivant :
#!/bin/bash
export DISPLAY=:0.0
export XAUTHORITY=/home/crestey2/.Xauthority
notify-send "Bulle affichée après mise en veille"
zenity --info --text "Texte affiché après mise en veille"
Et ça m'affiche bien une bulle notify-send en haut à droite, et une boite de dialogue zenity.
Le problème qu'il me reste à résoudre, c'est que ça le fait avant mise en veille et après aussi.
Or je souhaite une action avant et une autre différente éventuellement après
Dernière modification par Crestey (Le 14/11/2017, à 09:32)
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne
#7 Le 14/11/2017, à 09:51
- Compte supprimé
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
systemd runs all executables in /usr/lib/systemd/system-sleep/, passing two arguments to each of them:
Argument 1: either pre or post, depending on whether the machine is going to sleep or waking up
Argument 2: suspend, hibernate or hybrid-sleep, depending on which is being invoked
As-tu précisé l'argument 1 ? pre ou post
Dernière modification par Compte supprimé (Le 14/11/2017, à 09:52)
#8 Le 14/11/2017, à 09:52
- MicP
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Bonjour
Vu le contenu de la page man de systemd-suspend.service
…will run all executables in /lib/systemd/system-sleep/ and pass two arguments to them. The first argument will be "pre", the second either "suspend", "hibernate", or "hybrid-sleep" depending on the chosen action. Immediately after leaving system suspend and/or hibernation the same executables are run, but the first argument is now "post". …
ton script est donc lancé avec, pour valeur de premier paramètre : pre ou post
Il te faudrait donc tester la valeur de ce premier paramètre.
EDIT : Grilled par Tamarou qui gagne avec une minute d'avance.
Dernière modification par MicP (Le 14/11/2017, à 09:59)
Hors ligne
#9 Le 14/11/2017, à 09:54
- LukePerp
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
J'ai pas mal farfouillé sur google pour répondre à la question.
Bonjour,
Pourquoi veux tu faire ça, dans quel but ? Je demande car on peux faire peut etre ton objectif final autrement qu'avec un script lors de la mise en veille.
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Utilisateur de Dapps sur Ethereum
Hors ligne
#10 Le 14/11/2017, à 11:12
- Crestey
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Merci tamarou. J'ai donc mis écrit le script suivant placé dans /lib/systemd/system-sleep
#!/bin/bash
export DISPLAY=:0.0
export XAUTHORITY=/home/crestey2/.Xauthority
case $1 in
pre)
notify-send "Bulle affichée avant en veille"
zenity --info --text "Texte affiché avant mise en veille"
;;
post)
notify-send "Bulle affichée après mise en veille"
zenity --info --text "Texte affiché après mise en veille"
;;
esac
et ça marche nickel !
Pourquoi veux tu faire ça, dans quel but ?
Il y a plusieurs cas où je me suis dit qu'un message avant ou après mise en veille peut être sympa. Mais je ne vais pas me souvenir de tous.
Exemple 1 :
Déjà je n'éteins mon PC quasiment jamais. Que si c'est nécessaire suite à une mise à jour. Je tourne avec xubuntu16.04, et à priori il y a un petit défaut sur l' update notifier qui fait que je ne suis pas informé quand un reboot est nécessaire.
Voir là : https://bugs.launchpad.net/ubuntu/+sour … ug/1246364
Donc je vais faire un script qui va voir la présence du fichier /var/run/reboot-required, et quand je mets en veille, ça me dira qu'un reboot est nécessaire et ça me proposera de rebooter.
Exemple 2 :
Je me suis retrouvé une fois avec un problème de place manquante sur "/", qui m'avait mis dans l'embarras.
Le plus simple est de mettre suffisamment d'espace, c'est sûr.!!!...
Mais j'ai installé des xubuntu chez des amis qui ont des petits disques durs.
Alors en entrée ou sortie de veille, un test qui voit la place qui reste, et en fonction, propose de faire de la place avec un autoremove, ça peut être utile
Exemple 3 :
Une bulle qui dit tout simplement la place qui reste aussi sur le home à chaque sortie de veille, ou donne des infos sur l'identité et la santé de l'ordi, ça peut être sympa aussi.
Dernière modification par Crestey (Le 14/11/2017, à 11:17)
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne
#11 Le 14/11/2017, à 12:53
- LukePerp
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Bravo à l'auteur du script ! Je l’ai mis dans ma boite à scripts, car j'ai plusieurs idées d'usage.
Si une opération est enclenchée avant la mise en veille, avons-nous la garantie que l'opération sera terminée avant la vraie mise en veille ? Si l'opération déconne, qu'arrive t il à la mise en veille (annulée ou effective) ?
@crestey : ok, je comprends mieux, tes idées sont cohérentes. A ta place je placerai ces évènements quelques secondes après le démarrage de la machine car certains utilisateurs sortent de la mise en veille pour éteindre la machine. Donc demander à l'utilisateur de faire quelque chose au moment d’arrêter la machine, certains ne le feront pas. Mais c'est une autre discussion.
Dernière modification par LukePerp (Le 14/11/2017, à 13:07)
Gamer inside - Ubuntu Mate dernière LTS - Intel i5, 16 Go - Dual boot Windows - Utilisateur de Dapps sur Ethereum
Hors ligne
#12 Le 14/11/2017, à 13:47
- Crestey
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Si une opération est enclenchée avant la mise en veille, avons-nous la garantie que l'opération sera terminée avant la vraie mise en veille ?
Je pense que oui. Le système exécute ce script comme n'importe quel script: ligne de code après ligne de code. Typiquement, si tu mets une commande zenity qui te demande de répondre, tant que tu n'as pas répondu, la boite de dialogue est là et attend ta réponse. Et tu peux atttendre 1 heure, ça ne se met pas en veille. Ça s'y mettra dès que tu auras validé le message de la boite de dialogue de zenity.
Si l'opération déconne, qu'arrive t il à la mise en veille (annulée ou effective) ?
Même chose. Tant que le script ne se termine pas, s'il y a une boucle infini par exemple, ça n'ira pas en veille. Mais s'il y a une erreur qui fait quand même passer à l'instruction suivante jusqu'à la fin du script, ça ira en veille.
J'ai un autre exemple qui devrait bien me servir: J'ai un minipc hp qui commande une enceinte bose en bluetooth. Quand je ferme le capot, il se met en veille, c'est très pratique. Mais sur une mise en veille / sortie de veille, le bluetooth pédale dans la choucroutte, et la reconnexion à mon enceinte bose est très laborieuse. Je vais donc essayer de trouver les commandes pour fermer proprement la liaison BT sur mise en veille et la ré-ouvrir proprement quand je sorts de veille.
Dernière modification par Crestey (Le 14/11/2017, à 13:51)
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne
#13 Le 14/11/2017, à 23:19
- Crestey
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Je viens d'écrire le script qui me permet de reconnecter automatiquement mon enceinte bose en bluetooth. Ça fait des mois que ma bose était infernale à reconnecter après mise en veille. Maintenant, avec ce script, je ferme le capot du minipc, ça s'éteint, je le ré-ouvre, et ça se reconnecte tout seul sans aucune action. Moi content !
#!/bin/bash
export DISPLAY=:0.0
export XAUTHORITY=/home/crestey1/.Xauthority
case $1 in
pre)
notify-send "Deconnexion de la Bose" -t 1000
rfkill block all && rfkill list bluetoot
sleep 1
;;
post)
notify-send "Connexion de la Bose"
/etc/init.d/networking restart
sleep 1
rfkill unblock bluetooth
sleep 1
rfkill unblock wifi
sleep 1
rfkill unblock bluetooth
sleep 1
/usr/local/bin/./ConnecteBose
;;
esac
remarque : il y 2 fois la commande rfkill unblock bluetooth mais c'est volontaire, car ça n'est pris en compte que la 2ème fois. Pourquoi, Mystère !
/usr/local/bin/./ConnecteBose :
#!/usr/bin/expect -f
spawn bluetoothctl
send "connect 04:52:C7:2F:6F:83\r"
sleep 4
Dernière modification par Crestey (Le 14/11/2017, à 23:22)
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne
#14 Le 15/11/2017, à 07:35
- Compte supprimé
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Moi content !
If "toi-content" then "nous-aussi-contents" fi.
/etc/init.d/networking restart
Là aussi tu peux passer à systemd.
Dernière modification par Compte supprimé (Le 15/11/2017, à 07:42)
#15 Le 15/11/2017, à 07:58
- Crestey
Re : [Résolu] Exécuter script en sortie de veille ou entrée en veille
Ah ok. Merci Tamarou. Tu veux dire cette commande a son équivalent dans systemd (qui fera bientôt le café), c'est ça ?
Je vais fouiller un peu (avec quand même le secret espoir que tu m'en dises un peu plus).
#!/bin/bash
case toi in
courageux & disponible)
M'en dire plus
fatigué)
sleep 10000000
M'en dire plus
occupé ailleurs)
no souçaille
moi remercier toi quand même
esac
Merci à tous.
Sous Ubuntu/XFCE depuis 2013. Ça fonctionne vraiment très bien.
Hors ligne