19

I am looking for a way to store lock/unlock screen times.

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

What did I try:

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

Then I locked the screen and checked whether file appeared and it failes every time. How can I check the time than?

2
  • As I read this question, I thought you were not running an X server. The answer you've selected is purely working while running an X server. Maybe you could describe your situation better... – ExploWare Mar 18 '14 at 23:45
  • FWIW, this question was also asked on Unix/Linux stackexchange. – joeytwiddle Nov 26 '15 at 3:44
21

The following script will write lock/unlock time in a file time_xprofile in your home.

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

save the script. Give it execution permission.

chmod +x script.sh

How to run

./script.sh &

Note The script should run in back ground. Do not kill it. If you turn your screen lock/unlock while the script is running in background, your time of lock/unlock will be recorded in time_xprofile file at your home. One can use it to run some command or script at screen lock/unlock.

Mind that if you close the current terminal your script will be killed. You can use

nohup ./script.sh &

Then it will continue running even after closing the terminal.

How to kill the script

To kill the process, use in terminal

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

Above script is inspired by this answer

3
  • Does it still working in ubuntu 17.10 with XServer? I don't know why is not working for me.. – eddieferetro Nov 7 '17 at 15:25
  • More than that: it only works a few times... – eddieferetro Nov 7 '17 at 22:11
  • 1
    @eddieferetro I am still on 16.04 cannot test it for you. Why don't you ask a new question specifying your issues? Dbus event for screen lock may be changed in 17.10 – sourav c. Nov 8 '17 at 2:22
6

In ubuntu 14.04 the DBus event for screen lock unlock has changed and the new script for binding to screen lock and unlock events looks like the following

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
)

Replace SCREEN_LOCKED and SCREEN_UNLOCKED with what you need to do.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.