Comment exécuter une commande ou un script lors du verrouillage / déverrouillage de l'écran?


19

Je cherche un moyen de mémoriser les heures de verrouillage / déverrouillage de l'écran.

A=$(date)
echo $A >> $HOME/time_xprofile

Qu'est-ce que j'ai essayé:

$HOME/.bashrc
$HOME/.bash_logout
$HOME/.bash_prompt
$HOME/.xprofile

Ensuite, j'ai verrouillé l'écran et vérifié si le fichier est apparu et il échoue à chaque fois. Comment puis-je vérifier l'heure?


En lisant cette question, je pensais que vous n'exécutiez pas de serveur X. La réponse que vous avez choisie fonctionne uniquement lors de l' exécution d'un serveur X. Peut-être pourriez-vous mieux décrire votre situation ...
ExploWare

FWIW, cette question a également été posée sur stackixchange Unix / Linux .
joeytwiddle

Réponses:


20

Le script suivant écrira l'heure de verrouillage / déverrouillage dans un fichier time_xprofilede votre maison.

#!/bin/bash

dbus-monitor --session "type='signal',interface='org.gnome.ScreenSaver'" | \
( while true
    do read X
    if echo $X | grep "boolean true" &> /dev/null; then
        echo "locking at $(date)" >> $HOME/time_xprofile
    elif echo $X | grep "boolean false" &> /dev/null; then
        echo "unlocking at $(date)" >> $HOME/time_xprofile
    fi
    done )

enregistrez le script. Donnez-lui la permission d'exécution.

chmod +x script.sh

Comment courir

./script.sh &

Remarque Le script doit s'exécuter en arrière-plan. Ne le tuez pas. Si vous activez / désactivez le verrouillage / déverrouillage de votre écran pendant que le script s'exécute en arrière-plan, votre heure de verrouillage / déverrouillage sera enregistrée dans un time_xprofilefichier à votre domicile. On peut l'utiliser pour exécuter une commande ou un script lors du verrouillage / déverrouillage de l'écran.

N'oubliez pas que si vous fermez le terminal actuel, votre script sera tué. Vous pouvez utiliser

nohup ./script.sh &

Ensuite, il continuera de fonctionner même après la fermeture du terminal.

Comment tuer le script

Pour tuer le processus, utilisez dans le terminal

ps ax| grep "[s]cript.sh" | cut -d' ' -f2 | xargs kill

Le script ci-dessus est inspiré par cette réponse


Fonctionne-t-il toujours dans Ubuntu 17.10 avec XServer? Je ne sais pas pourquoi ne travaille pas pour moi ..
eddieferetro

Plus que cela: cela ne fonctionne que quelques fois ...
eddieferetro

1
@eddieferetro Je suis toujours sur 16.04 je ne peux pas le tester pour vous. Pourquoi ne posez-vous pas une nouvelle question précisant vos problèmes? L'événement Dbus pour le verrouillage de l'écran peut être modifié en 17.10
souravc

6

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

dbus-monitor --session "type='signal',interface='com.ubuntu.Upstart0_6'" | \
(
  while true; do
    read X
    if echo $X | grep "desktop-lock" &> /dev/null; then
      SCREEN_LOCKED;
    elif echo $X | grep "desktop-unlock" &> /dev/null; then
      SCREEN_UNLOCKED;
    fi
  done
)

Remplacez SCREEN_LOCKED et SCREEN_UNLOCKED par ce que vous devez faire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.