aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbspwm/scripts/bspwm/desktops.sh27
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
;;