Is it possible to run something (e.g. a script) after a certain idle time?

Kai-Martin Knaak knaak at iqo.uni-hannover.de
Sun Oct 27 22:12:28 CET 2019


On 21. October 2019 Chris Green <cl at isbd.net> wrote:

> I have my system set up so that the Power Manager turns off the
> display after about 15 minutes idle.  Is it possible to trigger
> running a script in the same way?  I have some actions I'd like taken
> at the same time (or similar) to when the display turns off.

I maintain a bunch of semi public Desktops that enforce logout from
the graphical XFCE session. After 30 minutes idle time a dialogue is presented
with a countdown time of yet another hour. If the user fails to click
on the dialogue during this grace period an automatic logout is
initiated.

This is accomplished by a process that hooks into the screensaver mechanics. 
That way I don't have to mess with low level dbus and stuff. It requires a 
desktop entry and the script that presents the dialogue and triggers the 
actual logout:

---------------------8<----------------------
# This desktop entry is part of the automatic logout function of the computers in
# in the ElektronIQ. Clients link to this file. It starts xautolock in the background.
###########################################-<)kmk(>-2016
[Desktop Entry]
Type=Application
Name=ElektronIQ auto log out
Comment=automatically log out user after a period of inactivity and a grace time
TryExec=xautolock -time 30 -locker "/usr/local/bin/elektroniq-logout-countdown.sh
Exec=xautolock -time 30 -locker "/usr/local/bin/elektroniq-logout-countdown.sh
Icon=utilities-system-monitor.svg
OnlyShowIn=XFCE;
Terminal=false
Hidden=true
-------------------->8-----------------------

--------------------8<-----------------------
#!/bin/sh
# Logout script for the computers at ElectronIQ
# * supposed to be launched by xautolock
# * presents a count-down progress bar with zenity
# * initiates a logout via the command xfce4-session-logout
# * on logout an email is sent to the user and to an admin
# * if the user presses "cancel" or closes the dialog the session continues
#
# This script is supposed to be called by xautolock:
#    xautolock -time 60 -locker "elektronIQ-logout-countdown.sh"
#############################################-<)kmk(>-2016##################

GRACE=3600                      # grace period in seconds
GRACEMINUTES=$(($GRACE / 60))   # grace period in minutes

(
 SECONDS=$GRACE
 while [ $SECONDS -ge 0 ]
   do
     PERCENT=$((100 * $SECONDS / $GRACE ))
     if [ $PERCENT -lt 100 ]       # do not report "100" because this
       then                        # would make the progress bar close
         echo $PERCENT             # immediately.
       fi
     echo "# Automatic logout in "$(($SECONDS / 60))" minutes and "$(($SECONDS % 60))" seconds"
     SECONDS=$(($SECONDS-1))
     sleep 1
   done
) |           # pipe count-down to zenity
zenity --width=450 --progress \
       --title="Auto-Logout" \
       --text="Automatic logout..." \
       --percentage=100 \
       --auto-close

RESULT=$?
# timer got to zero --> RESULT = 0
# user pressed "cancel" --> RESULT = 1
# dialog was closed by user --> RESULT = 1

if [ $RESULT = "0" ]
 then
  echo "Timer expired --> terminate the XFCE session"

  DATE=$(date +%F)
  TIME=$(date +%R)
  HOST=$(hostname)
  EMAIL=$(ldapsearch -ZZ uid=$USER mail 2>/dev/null | awk -F ': ' '$1=="mail"{print $2}')
  ADMIN="knaak at iqo.uni-hannover.de"

  # Send an email to the user
  mail -t <<EOF
TO: $EMAIL
FROM: root@$HOST.iqo.uni-hannover.de
Reply-To: $ADMIN
SUBJECT: automatic logout from $HOST

Hello $USER.
On $DATE, $TIME you have been automatically logged out from the computer $HOST
at the electronics workshop. Automatic logout is initiated after half an hour
of inactivity and $GRACEMINUTES minutes grace period.
You can drop $ADMIN an email if you need a longer grace period.

Greetings from the faithful logout script.
EOF

  # Send an email to the admin
  mail -t <<EOF
TO: $ADMIN
FROM: root@$HOST.iqo.uni-hannover.de
SUBJECT: automatic logout of $USER from $HOST

On $DATE, $TIME $USER was automatically logged out from $HOST.

Greetings from the faithful logout script.
EOF

  # do the actual logout
  xfce4-session-logout --logout
 fi
exit
---------------------->8--------------------

Hope that helps, 

---<)kaimartin(>---

-- 
Kai-Martin Knaak
knaak at iqo.uni-hannover.de Universität Hannover, Inst. f.
Quantenoptik        tel: +49-511-762-2895 Welfengarten 1, 30167
Hannover                     fax: +49-511-762-2211
https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC13AA4CC7B0F9882
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 833 bytes
Desc: OpenPGP digital signature
URL: <https://mail.xfce.org/pipermail/xfce/attachments/20191027/428edc26/attachment.sig>


More information about the Xfce mailing list