diff options
| author | Sébastien Dailly <sebastien@dailly.me> | 2026-08-04 15:35:44 +0200 |
|---|---|---|
| committer | Sébastien Dailly <sebastien@dailly.me> | 2026-08-04 15:40:38 +0200 |
| commit | 9066e265a220f8299afa60e1689f87efeb40ee10 (patch) | |
| tree | f5da61d3a6eaf68874ca899bb3f9b7486c1c0ec8 | |
| parent | 201303c858b9cfc6b3fb073b520340d148df799d (diff) | |
bspwm: persistent option when creating placement rules for windows
| -rwxr-xr-x | bspwm/scripts/bspwm/desktops.sh | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/bspwm/scripts/bspwm/desktops.sh b/bspwm/scripts/bspwm/desktops.sh index e94c084..b94d962 100755 --- a/bspwm/scripts/bspwm/desktops.sh +++ b/bspwm/scripts/bspwm/desktops.sh @@ -1,16 +1,33 @@ #!/bin/sh -set -u +set -o nounset #set -e # Execute an application when creating the desktop +# Arguments are : +# - The Dektop label +# - The command to run +# - The window class to match +# - Optionnal : +# "persistent" make the rule persistent instead of one-shot # run_desktop() { name=$1 - application=$2 + application="$2" window_name=$3 bspc node @$name:/ -i - bspc rule --add $window_name --one-shot node=@$name:/ follow=off focus=off + # If the argument is not given, use the empty string as substitution + # FOO="${VARIABLE:-default}" # FOO will be assigned 'default' value if + # VARIABLE not set or null. + case "${4:-}" in + persistent) + # Ensure the rule does not already exists before adding a new persistent one + bspc rule -l | grep ${window_name} || bspc rule --add ${window_name} node=@$name:/ follow=off focus=off + ;; + *) + bspc rule --add $window_name --one-shot node=@$name:/ follow=off focus=off + ;; + esac $application & } @@ -33,7 +50,7 @@ bspc subscribe desktop | while read -r event monitor_id desktop_id name; do bspc monitor -o $(bspc query --names -D | sort -V | tr -s '\n' ' ') case $name in Chat) - run_desktop $name signal-desktop Signal + run_desktop $name signal-desktop "Signal:signal:Signal" persistent ;; Musique) run_desktop $name gmpc Gmpc @@ -45,7 +62,7 @@ bspc subscribe desktop | while read -r event monitor_id desktop_id name; do run_desktop $name thunderbird thunderbird-default ;; Discord) - run_desktop $name discord discord + run_desktop $name discord discord persistent ;; esac ;; |
