X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=xinitrc;h=d3b62b4cbd48d5d70ef8a54950fb3501818b659e;hb=67bdeb0a3abdd2ebd51e68b5d157e26f90b84849;hp=162efa4c22d3c2e3ebbb61c4ab7f89b134facd09;hpb=e2fd990755824a259803852496603eb1a1130343;p=config%2Fdotfiles.git diff --git a/xinitrc b/xinitrc index 162efa4..d3b62b4 100755 --- a/xinitrc +++ b/xinitrc @@ -37,6 +37,17 @@ fi installed() { type "$1" >/dev/null 2>&1 } +error() { + xmessage "$@" & +} +# Save PID of the most recently started background process. Used to terminate +# them when logging out to prevent unused background processes. On some +# systems this is only necessary for some programs (like ssh-agent), haven't +# yet figured out why. +save_background_pid() { + background_pids="$background_pids $!" +} +background_pids= # Options, can be modified in ~/.xinitrc.local. To disable a boolean option @@ -44,6 +55,11 @@ installed() { # # Default to use a background image. set_background=yes +# Lock screen after x minutes of inactivity, requires `xautolock` to be +# installed. +screen_lock_time=3 +# Locker program to lock the screen, used below with `xautolock`. +screen_locker=xtrlock # Load settings for the local system. if test -f "$HOME/.xinitrc.local"; then @@ -86,6 +102,7 @@ fi # Display timed reminders and recheck the file for changes every minute (-z1). if installed remind && test -f "$HOME/.reminders"; then remind -z1 -k'.shell/bin/notify.py %s &' "$HOME/.reminders" & + save_background_pid fi # Set color temperature of display according to time of day. @@ -93,6 +110,16 @@ if installed redshift; then redshift -l 49.9:10.9 -t 5500:4500 >/dev/null & fi +# Automatically lock the screen after x minutes of inactivity if `xautolock` +# is available. Warn if locker wasn't found. +if installed xautolock; then + if installed "$screen_locker"; then + xautolock -secure -time "$screen_lock_time" -locker "$screen_locker" & + else + error "Locker '$screen_locker' not installed. Auto lock won't work!" + fi +fi + # XMonad doesn't start a terminal emulator on its own, start one when I login. (urxvt || rxvt || xterm) & @@ -107,3 +134,5 @@ if test -x /usr/bin/ssh-agent; then /usr/bin/ssh-agent -k >/dev/null # No `eval` necessary, we terminate anyway. fi +# Kill remaining background processes. +kill $background_pids