diff --git a/.config/etc_systemd/logind.conf.d/10-hybrid.conf b/.config/etc_systemd/logind.conf.d/10-hybrid.conf new file mode 100644 index 0000000..19a7700 --- /dev/null +++ b/.config/etc_systemd/logind.conf.d/10-hybrid.conf @@ -0,0 +1,5 @@ +[Login] +HandleLidSwitch=suspend-then-hibernate +HandleLidSwitchExternalPower=suspend-then-hibernate +HandleLidSwitchDocked=ignore + diff --git a/.config/etc_systemd/sleep.conf.d/10-hybrid.conf b/.config/etc_systemd/sleep.conf.d/10-hybrid.conf new file mode 100644 index 0000000..874ffcf --- /dev/null +++ b/.config/etc_systemd/sleep.conf.d/10-hybrid.conf @@ -0,0 +1,5 @@ +[Sleep] +AllowSuspendThenHibernate=yes +MemorySleepMode=s2idle +HibernateDelaySec=30min + diff --git a/.config/fuzzel/fuzzel.ini b/.config/fuzzel/fuzzel.ini index c80ce64..5c7c12e 100644 --- a/.config/fuzzel/fuzzel.ini +++ b/.config/fuzzel/fuzzel.ini @@ -1,3 +1,6 @@ +#Sourced from https://github.com/dracula/fuzzel +#dracula themed fuzzel + # output= font=JetBrainsMono Nerd Font Mono:size=15 match-counter = on @@ -11,7 +14,7 @@ # password-character=* # fuzzy=yes show-actions=yes - list-executables-in-path=yes + list-executables-in-path=no # terminal=$TERMINAL -e # Note: you cannot actually use environment variables here terminal=wezterm {cmd} # launch-prefix= diff --git a/.config/hypr/hyprland.conf b/.config/hypr/hyprland.conf index aed35a5..656d991 100755 --- a/.config/hypr/hyprland.conf +++ b/.config/hypr/hyprland.conf @@ -193,10 +193,9 @@ bind = , XF86MonBrightnessUp, exec, sudo brightnessctl s "+10%" bind = , XF86MonBrightnessDown, exec, sudo brightnessctl s "10%-" #lid binds -#bindl = , switch:on:Lid Switch, exec, swaylock --screenshots --effect-blur 7x5 --clock -# trigger when the switch is turning off +# trigger when the lid is opened bindl = , switch:off:Lid Switch,exec,~/bin/lid_open.sh -# # trigger when the switch is turning on +# trigger when the lid is closed bindl = , switch:on:Lid Switch,exec,~/bin/lid_close.sh # Desktop zooming or magnifier diff --git a/.config/hypr/hyprpaper.conf b/.config/hypr/hyprpaper.conf index 9234a35..74b5659 100755 --- a/.config/hypr/hyprpaper.conf +++ b/.config/hypr/hyprpaper.conf @@ -20,7 +20,7 @@ #ipc = off #wallpaper = , /home/thierry/Pictures/bg/IMG_20210913_142249.jpg - +splash = false wallpaper { monitor = eDP-1 path = /home/thierry/Pictures/bg/ diff --git a/bin/lid_close.sh b/bin/lid_close.sh index 2d64bdb..13f1984 100755 --- a/bin/lid_close.sh +++ b/bin/lid_close.sh @@ -3,24 +3,27 @@ set -euo pipefail INTERNAL="eDP-1" -# Count non-internal monitors reported by Hyprland -external_count=$( - hyprctl monitors | awk -v internal="$INTERNAL" ' - $1 == "Monitor" { - name = $2 - sub(":", "", name) # strip trailing colon - if (name != internal) { - print name - } - } - ' | wc -l +sleep 0.2 + +external_on_count=$( + hyprctl -j monitors | jq -r --arg internal "$INTERNAL" ' + [ .[] + | select(.name != $internal) + | select(.disabled != true) + | select(.dpmsStatus == true) + ] | length + ' ) -# Always turn off the laptop panel on lid close -hyprctl keyword monitor "$INTERNAL, disable" +if [ "$external_on_count" -eq 0 ]; then + # no external screen, we sleep + #systemctl hybrid-sleep + #systemctl suspend-then-hibernate -# Only lock if there is NO external monitor -if [ "$external_count" -eq 0 ]; then - hyprlock - systemctl suspend + #debounce hyprlock + pgrep -x hyprlock >/dev/null || hyprlock +else + # docked, we turn off internal screen + hyprctl keyword monitor "$INTERNAL, disable" fi + diff --git a/bin/lid_open.sh b/bin/lid_open.sh index 9c245f5..bbd7725 100755 --- a/bin/lid_open.sh +++ b/bin/lid_open.sh @@ -1,5 +1,10 @@ #!/usr/bin/env bash -hyprctl keyword monitor "eDP-1, preferred, 0x0, 1" -swayosd-server & -hyprpaper & +set -euo pipefail +INTERNAL="eDP-1" + +sleep 0.2 +hyprctl keyword monitor "$INTERNAL, preferred, 0x0, 1" + +pgrep -x swayosd-server >/dev/null || swayosd-server & +pgrep -x hyprpaper >/dev/null || hyprpaper &