From: R. Steve McKown Date: Sat, 26 Mar 2016 00:23:21 +0000 (-0600) Subject: Add .Xidle X-Git-Url: https://oss.titaniummirror.com/gitweb?p=smckown%2Fdotfiles.git;a=commitdiff_plain;h=4b42b2bbfaebe7e2b76ee9cd95f924ef42456378 Add .Xidle .Xidle is a script that will be called by xss-lock when started in ~/.dwmrc if it is present. If this script is not present, xss-lock will call i3lock directly. If this script is present, it can do other stuff before locking, and then more stuff after unlocking has completed. Being used to suspend dunst messages and set XMPP status in mcabber. i3lock execution has been changed to not use DPMS but instead a black screen. Hopefully this will solve some confusions where monitors that are slow to sync don't provide enough feedback about what is going on. --- diff --git a/Xidle b/Xidle new file mode 100755 index 0000000..a6d67d8 --- /dev/null +++ b/Xidle @@ -0,0 +1,26 @@ +#!/bin/sh +# This script should be called by xss-lock on no X activity. +# xss-lock is started in ~/.dwmrc. + +# Set mcabber=1 if mcabber is present and running, else 0 +mcabber=0 +if [ -d ~/.mcabber ]; then + if [ -p ~/.mcabber/mcabber.fifo ]; then + mcabber=1 + fi +fi + +# Suspend dunst messages +killall -SIGUSR1 -u $USER dunst 2>/dev/null + +# Mark idle in mcabber +[ $mcabber -eq 1 ] && echo "/status away (Auto-idle)" > ~/.mcabber/mcabber.fifo + +# Lock the screen and wait until unlocked +i3lock --nofork --color=000000 + +# Mark online in mcabber +[ $mcabber -eq 1 ] && echo "/status online -" > ~/.mcabber/mcabber.fifo + +# Resume dunst messages +killall -SIGUSR2 -u $USER dunst 2>/dev/null diff --git a/dwmrc b/dwmrc index aeebe9a..a7baa09 100755 --- a/dwmrc +++ b/dwmrc @@ -25,9 +25,20 @@ xsetroot -solid black dispcfg # Screen saver. DPMS standby -> suspend -> off in seconds -# xss-lock calls i3lock on no X activity (DPMS standby) xset dpms 300 600 1200 -(pgrep -x xss-lock || exec xss-lock -- i3lock --dpms ) & + +# Use xss-lock to call a program on no X activity (DPMS standby) +if [ -x ~/.Xidle ]; then + # If provided, .Xidle can do stuff before and after a call to 'i3lock -n' + (pgrep -x xss-lock || exec xss-lock -- ~/.Xidle ) & +elif [ -x /usr/bin/i3lock ]; then + # Fall back to i3lock, which provides a screen lock. + # Instead of --dpms use --color. This is less confusing on monitors that + # are slow to sync back up. And since X should generally have the monitor + # suspended by this point anyway, the behavior should only change in the + # case of things like an invalid password being entered. + (pgrep -x xss-lock || exec xss-lock -- i3lock --color=000000 ) & +fi # Turn off touchpad (later use a toggle) type synclient 2>/dev/null && synclient TouchpadOff=1 diff --git a/install.sh b/install.sh index c2c947f..2028bc6 100755 --- a/install.sh +++ b/install.sh @@ -49,3 +49,4 @@ dolink ../.dotfiles/ssh_config .ssh/config dolink ../.dotfiles/mcabberrc .mcabber/mcabberrc dolink ../.dotfiles/mcabber.eventcmd .mcabber/eventcmd dolink ../../.dotfiles/profrc .config/profanity/profrc +dolink .dotfiles/Xidle .Xidle