Come eseguire un comando o uno script al blocco schermo / sblocco?

16

Sto cercando un modo per archiviare i tempi di blocco / sblocco dello schermo.

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

Che cosa ho provato:

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

Poi ho bloccato lo schermo e controllato se il file è apparso e fallisce ogni volta. Come posso controllare l'ora di?

    
posta Benjamin 05.03.2014 - 09:28

2 risposte

19

Il seguente script scriverà il tempo di blocco / sblocco in un file time_xprofile nella tua casa.

#!/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 )

salva lo script. Dagli il permesso di esecuzione.

chmod +x script.sh

Come eseguire

./script.sh &

Nota Lo script dovrebbe essere eseguito in background. Non ucciderlo Se si attiva il blocco / sblocco dello schermo mentre lo script è in esecuzione in background, il tempo di blocco / sblocco verrà registrato in time_xprofile file a casa. Si può usare per eseguire qualche comando o script al blocco schermo / sblocco.

Ricorda che se chiudi il terminale corrente il tuo script verrà ucciso. Puoi usare

nohup ./script.sh &

Quindi continuerà a funzionare anche dopo aver chiuso il terminale.

Come uccidere lo script

Per uccidere il processo, utilizzare nel terminale

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

Lo script sopra è ispirato da questa risposta

    
risposta data souravc 05.03.2014 - 10:01
5

In ubuntu 14.04 l'evento DBus per lo sblocco del blocco schermo è cambiato e il nuovo script per il collegamento agli eventi di blocco schermo e sblocco è simile al seguente

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
)

Sostituisci SCREEN_LOCKED e SCREEN_UNLOCKED con quello che devi fare.

    
risposta data Luv Agarwal 24.06.2015 - 16:41

Leggi altre domande sui tag