diff options
| author | 2026-04-21 01:23:18 +0100 | |
|---|---|---|
| committer | 2026-04-21 01:23:18 +0100 | |
| commit | d00bf2cb2d5087164fa509a4f20a2be62a519044 (patch) | |
| tree | e788986ca341fa7a9d7327b48c58d2e0c0c43115 /dot_config/sway/executable_display-toggle.sh | |
| parent | 9b2af4dd6c73ea57cc921f41120db7a2700e806d (diff) | |
| download | dotfiles-d00bf2cb2d5087164fa509a4f20a2be62a519044.tar.gz dotfiles-d00bf2cb2d5087164fa509a4f20a2be62a519044.tar.bz2 dotfiles-d00bf2cb2d5087164fa509a4f20a2be62a519044.zip | |
refactor: restructure to chezmoi source state
Rename home/ contents to chezmoi naming conventions:
- dot_ prefix for dotfiles and dot-dirs
- private_dot_ for .gnupg and .ssh directories
- private_ for 0600 files (nym.pub)
- executable_ for scripts in .local/bin and display-toggle.sh
- symlink_ for mimeapps.list symlink
Diffstat (limited to 'dot_config/sway/executable_display-toggle.sh')
| -rwxr-xr-x | dot_config/sway/executable_display-toggle.sh | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/dot_config/sway/executable_display-toggle.sh b/dot_config/sway/executable_display-toggle.sh new file mode 100755 index 0000000..f39bf9b --- /dev/null +++ b/dot_config/sway/executable_display-toggle.sh @@ -0,0 +1,45 @@ +#!/bin/sh +# Toggle display mode: laptop-off ↔ side-by-side +# Bound to F7 in sway config; also runs at startup with "init" + +STATE_FILE="${XDG_RUNTIME_DIR:-/tmp}/display-mode" + +OUTPUTS=$(swaymsg -t get_outputs -r) +LAPTOP=$(echo "$OUTPUTS" | jq -r '[.[] | select(.name | test("^eDP")) | .name] | first // empty') +EXTERNAL=$(echo "$OUTPUTS" | jq -r '[.[] | select(.name | test("^eDP") | not) | .name] | first // empty') + +if [ -z "$EXTERNAL" ]; then + [ -z "$1" ] && notify-send "Display" "No external display connected" + exit 0 +fi + +[ -z "$LAPTOP" ] && exit 0 + +LAPTOP_WIDTH=$(echo "$OUTPUTS" | jq -r ".[] | select(.name == \"$LAPTOP\") | .current_mode.width // .modes[0].width") +[ -z "$LAPTOP_WIDTH" ] && LAPTOP_WIDTH=1920 + +if [ "$1" = "init" ]; then + NEXT="laptop-off" +else + CURRENT=$(cat "$STATE_FILE" 2>/dev/null || echo "laptop-off") + case "$CURRENT" in + laptop-off) NEXT="side-by-side" ;; + *) NEXT="laptop-off" ;; + esac +fi + +case "$NEXT" in + laptop-off) + swaymsg output "$LAPTOP" disable || true + swaymsg output "$EXTERNAL" enable || true + swaymsg workspace number 1 || true + echo "laptop-off" > "$STATE_FILE" + [ -z "$1" ] && notify-send "Display" "Laptop screen off" + ;; + side-by-side) + swaymsg output "$LAPTOP" enable pos 0 0 || true + swaymsg output "$EXTERNAL" enable pos "$LAPTOP_WIDTH" 0 || true + echo "side-by-side" > "$STATE_FILE" + [ -z "$1" ] && notify-send "Display" "Side by side" + ;; +esac |
