#! /bin/bash refocus_fullscreen_nodes() { while [ -z "$(pgrep -x permafocus)" ]; do sleep 1; done for NODE in ${FULLSCREEN_NODES}; do bspc node ${NODE} -t fullscreen done } if [ $(pgrep -x lock | wc -l) -gt 2 ]; then # Starting multiple screen lock instances may cause unintended side effects exit 0 fi # # Security # xkbcomp ~/.local/bspwm-setup/lockscreen.xkb $DISPLAY 2>/dev/null killall -qw sxhkd polybar dunstctl set-paused true # # UI # FOCUSED_MONITOR=$(bspc query -M -m) FULLSCREEN_NODES=$(bspc query -N -n any.fullscreen) bspc monitor -f 1 WINIT_X11_SCALE_FACTOR=1.0 ~/.cargo/bin/alacritty -e ~/bin/lockscr1 & while [ -z "$(ps -C lockscr1 -o pid=)" ]; do sleep 1; done while [ -z "$(ps -s $(ps -C lockscr1 -o pid=) -o pid=)" ]; do sleep 1; done PRIMARY_WINDOW=$(bspc query -N -n) if [ -n "$(xrandr --listmonitors | grep 'DP-2')" ]; then bspc monitor -f 2 WINIT_X11_SCALE_FACTOR=1.0 ~/.cargo/bin/alacritty -e ~/bin/lockscr2 & while [ -z "$(ps -C lockscr2 -o pid=)" ]; do sleep 1; done while [ -z "$(ps -s $(ps -C lockscr2 -o pid=) -o pid=)" ]; do sleep 1; done SECONDARY_WINDOW=$(bspc query -N -n) fi refocus_fullscreen_nodes & ~/bin/permafocus ${PRIMARY_WINDOW} ${SECONDARY_WINDOW} # # Unlock # setxkbmap -rules /usr/share/X11/xkb/rules/evdev dunstctl set-paused false bspc node ${PRIMARY_WINDOW} -k if [ -n "${SECONDARY_WINDOW}" ]; then bspc node ${SECONDARY_WINDOW} -k fi # Kill second tty-clock kill -9 $(ps -s $(ps -C lockscr2 -o pid=) -o pid=) bspc monitor -f ${FOCUSED_MONITOR} bspc wm -r