J'aimerais lancer un écran si la session Gnome est verrouillée et déverrouillée. Existe-t-il un moyen d'intercepter cela et d'effectuer certaines actions lorsque le poste de travail est verrouillé ou déverrouillé?
54
Gnome-screensaver émet des signaux sur dbus quand quelque chose se passe.
Ici la documentation (avec quelques exemples).
Vous pouvez écrire un script qui exécute:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'"
et c’est ce dont vous avez besoin à tout moment, dbus-monitor
une ligne indiquant que l’écran est verrouillé / déverrouillé.
Voici une commande bash pour faire ce dont vous avez besoin:
dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" |
while read x; do
case "$x" in
*"boolean true"*) echo SCREEN_LOCKED;;
*"boolean false"*) echo SCREEN_UNLOCKED;;
esac
done
Il suffit de remplacer echo SCREEN_LOCKED
et echo SCREEN_UNLOCKED
avec ce dont vous avez besoin.
gnome-screensaver-command
c'est déjà là. En passant-a
à,gnome-screensaver-command
vous verrouillez l'écran pendant que vous le déverrouillez avec-d
. Quoi qu'il en soit, la plupart des applications gnome utilisent dbus de manière intensive, vous pourrez donc faire beaucoup de choses étonnantes avec.Dans Ubuntu 14.04, l’événement DBus pour le déverrouillage du verrouillage de l’écran a changé et le nouveau script de liaison aux événements de verrouillage et de déverrouillage de l’écran ressemble à ce qui suit:
la source
De nos jours, je pense qu'il est préférable d'écouter les
LockedHint
messages plutôt que les écrans de veille. De cette façon, vous n'êtes pas lié à une implémentation d'économiseur d'écran.Voici un script simple pour le faire:
Donne ceci:
la source
Ubuntu 16.04: La solution d'ozma n'a pas fonctionné pour moi, mais celle-ci a fonctionné:
la source
Développer la réponse déjà donnée.
Si vous essayez d'exécuter un script depuis une session
screen
outmux
, vous devez d'abord trouver le correct$DBUS_SESSION_BUS_ADDRESS
et le transmettre comme argument pourdbus-monitor
au lieu de--session
. De même, si vous l'exécutez en tant que démon, vous devez vous assurer qu'une seule instance est en cours d'exécution à la fois (avec un fichier de verrouillage, par exemple) et que le script se nettoie après lui-mêmetrap
. L'exemple suivant fonctionnera comme un démon dans la plupart des environnements Gnome actuels (testé sur Ubuntu GNOME 16.04):Si cela ne fonctionne pas pour vous, c'est probablement parce que:
la source
Si vous êtes sur Kubuntu ou utilisez KDE / Plasma comme environnement de bureau, vous devez écouter l'interface
org.freedesktop.ScreenSaver
afin que le script permettant d'écouter cet événement se présente comme suit:la source
Personalization>Notifications>Notifications>Screensaver
.upstart
Prise en charge des travaux de la sessiondesktop-lock
etdesktop-unlock
événements enstart on
strophe. Créez simplement un travail .conf pour votre utilisateur avec les déclencheurs et les commandes pertinents à appeler sous$XDG_CONFIG_HOME/upstart/
ou$HOME/.config/upstart
comme exemple ci-dessous:la source
ce n'est peut-être pas la solution la plus propre, mais cela fonctionne pour moi quand
dbus-monitor ...
ne fonctionne pas:Doit renvoyer un flux de lignes avec des chaînes 'true' ou 'false'
Utilisation de: Fedora version 30 (trente)
la source
c'est ce qui a fonctionné pour moi dans Ubuntu 16.04
la source