Co-workers who think they're funny/smart, because you've accidently left your screen unlocked, and altering your background, sending out mails and generally being an ass. We all know them. In the GNOME2 days there was the 'free the fish' joke, which was quite harmless. Nowadays GNOME3 doesn't have that anymore and people start causing havoc to 'teach' you to lock your screen.
Don't get me wrong, not locking your screen is a no-go and marks you as an incompetent noob who shouldn't be allowed to handle sensitive information, but that's not my point. My point is that you can also tell the other person discretely that they should lock their screen before leaving the desk.
So to stop those wannabe-security-officers, I've created a simple script that you can leave running without locking your screen:
#!/bin/bash # # People love to get their hands on someone else's pc while they # go away and forget to lock their computer # # Activate this little script and then walk away, tricking the # ignorant and arrogant alike to think you forgot to lock your screen. # # Then, when they try to 'modify' your wallpaper/settings/etc. the # script will detect the unauthorized access and put them on the # wall of shame. That is, taking a picture using the webcam, # adding some text and then displaying it to them, before locking # the computer. # # L.S. Keijser #------------------------------------------------------------------#~ # initial delay so we don't get shamed ourselves sleep 5 # change to homedir cd ~ # delete old shame files rm -f 00000001.png wallpaper.png me # start watching for intruders while true ; do # this produces idle time in miliseconds IDLETIME=$(xprintidle) # check if somebody is typing and/or using the mouse if [ $IDLETIME -lt 3500 ]; then # give owner a chance to kill the script sleep 3 # extra bonus protection: check for a 'me' file in the homedir if [ -f ~/me ]; then # ah, it's the owner .. exit! exit 0 fi # so, someone was actively using it? initiate shame-routine! # step 1: take picture mplayer -vo png -frames 1 tv:// # step 2: add text convert -pointsize 30 -fill red -draw 'text 0,460 "WALL OF SHAME - do not mess with my laptop"' 00000001.png ~/shame.png # step 3: show user their mistake eog -f ~/shame.png & # step 4: let them know we know sleep 5 # step 5: set as lockscreen export $(cat /proc/$(pgrep -u `whoami` ^gnome-shell$)/environ | grep -z DBUS_SESSION_BUS_ADDRESS) DISPLAY=:0 GSETTINGS_BACKEND=dconf /usr/bin/gsettings set org.gnome.desktop.background picture-uri file://$HOME/shame.png DISPLAY=:0 GSETTINGS_BACKEND=dconf /usr/bin/gsettings set org.gnome.desktop.screensaver picture-options zoom # step 6: activate lock screen dbus-send --type=method_call --dest=org.gnome.ScreenSaver /org/gnome/ScreenSaver org.gnome.ScreenSaver.Lock # exit normally exit 0 fi # wait a little bit before checking idle time sleep 1 done
It take s a little work because it requires the following tools to be installed on your distribution:
- xprintidle
- mplayer
- imagemagick
- a working webcam
The first one might not be available on your distribution. I know Fedora 22 and higher doesn't include it in any standard repository. I've found a copy of the source code here. Unfortunately it wouldn't compile on my laptop. When issuing ./configure , I got:
configure: error: libX11 not found
So after some googling, I managed to get it working. Here's a patch I made:
--- xprintidle-0.2/configure 2008-10-14 16:53:24.000000000 +0200 +++ xprintidle-0.2-modified/configure 2015-11-09 17:10:14.698582780 +0100 @@ -3977,7 +3977,7 @@ # Checks for libraries. user_LIBS=$LIBS -LIBS="$LIBS -L$x_libraries" +LIBS="$LIBS" { $as_echo "$as_me:$LINENO: checking for XOpenDisplay in -lX11" >&5 $as_echo_n "checking for XOpenDisplay in -lX11... " >&6; }
To patch it, extract the xprintidle tar.gz and run:
~ $ cd xprintidle-0.2 xprintidle-0.2 $ patch -p1 < ../xprintidle.patch patching file configure
Then run ./configure && make && sudo make install.
Save the script in your homedir or something, and use it like this:
- you run the script from a terminal
- don't touch the keyboard or mouse anymore
- leave your laptop unlocked
- walk away from your desk
Now when someone sees your unlocked screen and tries something (that it, pressing a key or moving the mouse) the following happens:
- a picture is being taken using your webcam
- the picture is saved and modfied (text added) using imagemagick tool 'convert'
- the resulting image is opened using Eye of GNOME (eog) and displayed to the person
- the script waits a couple of seconds to let them view the image and text
- image is set as the lockscreen image
- screen is being locked
Enjoy!