diff --git a/home/.config/x11/xprofile b/home/.config/x11/xprofile index d323b18..f3c3b4b 100644 --- a/home/.config/x11/xprofile +++ b/home/.config/x11/xprofile @@ -6,18 +6,14 @@ # Set monitor order xrandr --output HDMI-1 --auto --output eDP-1 --right-of HDMI-1 --auto & -# XSS lock with xsecurelock -xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelock & - -# Set X11 lockscreen delays (DPMS) -xset s on & -xset s 600 10 & # 10 minutes, 5s for dimmer +# Start xsecurelock lockscreen with xss-lock +~/.local/bin/scripts/lockscreen start & # Set the background with a custom `setbg` script setbg & # Use xresources file in ~/.config/x11 -xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources +xrdb ${XDG_CONFIG_HOME:-$HOME/.config}/x11/xresources & # Start compositor manager to allow transparency picom -b --experimental-backends & @@ -44,12 +40,6 @@ numlockx & # Udiskie for simple mounting and notifications, no automount for security reasons udiskie -A -s & -# Run emacs daemon -#emacs --daemon & - -# Run urxvt daemon -#urxvtd -q -o -f & - # Enable running applications from chroot xhost +local: diff --git a/home/.config/xmonad/xmonad.hs b/home/.config/xmonad/xmonad.hs index 9de8c41..fb648b1 100644 --- a/home/.config/xmonad/xmonad.hs +++ b/home/.config/xmonad/xmonad.hs @@ -104,10 +104,6 @@ myKeys = [ ("M-S-r", spawn "xmonad --recompile; xmonad --restart") -- Recompiles xmonad , ("M-S-q", io exitSuccess) -- Quits xmonad - -- Lock screen - , ("C-M-l", spawn "xsecurelock") -- XSecureLock lockscreen - --, ("C-M-l", spawn "xset s activate") -- Send DPMS trigger for lockscreen - -- Programs , ("M-b", spawn (myBrowser)) , ("M-", spawn (myTerminal)) @@ -128,7 +124,9 @@ myKeys = -- Script shortcuts , ("M-S-p", spawn "setbg ~/Pictures/Wallpapers/Active") -- Set random background - , ("M-S-d", spawn "displayselect") + , ("M-S-d", spawn "displayselect") -- Set display configurations + , ("M-C-l", spawn "lockscreen lock") -- Lock the screen + , ("M-C-S-l", spawn "lockscreen toggle") -- Toggle automatic locking -- Kill windows , ("M-w", kill1) -- Kill the currently focused client diff --git a/home/.local/bin/scripts/lockscreen b/home/.local/bin/scripts/lockscreen new file mode 100755 index 0000000..170c722 --- /dev/null +++ b/home/.local/bin/scripts/lockscreen @@ -0,0 +1,44 @@ +#!/bin/sh + +if [ "$1" = "start" ]; then + MODE="start" +elif [ "$1" = "stop" ]; then + MODE="stop" +elif [ "$1" = "toggle" ]; then + if pidof -s xss-lock > /dev/null 2>&1; then + MODE="stop" + else + MODE="start" + fi +elif [ "$1" = "lock" ]; then + MODE="lock" +else + echo "Invalid command usage, use: lockscreen [start/stop/toggle/lock]" + exit 1 +fi + +if [ "$MODE" = "start" ]; then + echo "Starting xss-lock" + # Set X11 lockscreen delays (DPMS) + xset s on + xset s 600 10 # Dim screen after 10 minutes, lock 10s later + + # XSS lock with xsecurelock + xss-lock -n /usr/lib/xsecurelock/dimmer -l -- xsecurelock & +elif [ "$MODE" = "stop" ]; then + echo "Stopping xss-lock" + # Remove X11 lockscreen delays (DPMS) + xset s off + # Stop XSS lock + killall xss-lock +elif [ "$MODE" = "lock" ]; then + # Send a DPMS trigger if xss-lock is running to inform it + # about the lockstate, if it's not running, run xsecurelock directly + if pidof -s xss-lock > /dev/null 2>&1; then + echo "Locking screen - using DPMS (xss-lock active)" + xset s activate + else + echo "Locking screen - running xsecurelock directly (xss-lock isn't running)" + xsecurelock + fi +fi