aboutsummaryrefslogtreecommitdiff
path: root/bspwm/scripts/bspwm/desktops.sh
blob: d63b0aadc5d066d2e0441f9bfa8124a50a4572a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#!/bin/sh

set -u
#set -e

# Execute an application when creating the desktop
# 
run_desktop() {
    name=$1
    application=$2
    window_name=$3
    bspc node @$name:/ -i
    gspc rule --add $window_name --one-shot node=@$name:/
    $application &
}


# This script is designed to be used with sxhkd/rofi_new.sh which populate the
# rof menu with the values.
bspc subscribe desktop | while read -r event monitor_id desktop_id name; do
    case $event in 
        desktop_focus)
            ~/scripts/bspwm/wallpaper.sh &
            for desktop in $(bspc query -D); do
                test "x${desktop}" = "x${desktop_id}" && continue

                # If the desktop is empty, delete it
                nodes=$(bspc query -d ${desktop} -N)
                test -z "${nodes}" && bspc desktop ${desktop} -r 
            done
            ;;
        desktop_add)
            bspc monitor -o $(bspc query --names -D | sort -V | tr -s '\n' ' ')
            case $name in 
                Chat)
                    run_desktop $name signal-desktop Signal
                    ;;
                Musique)
                    run_desktop $name gmpc Gmpc
                    ;;
                Web)
                    run_desktop $name firefox-esr firefox-esr
                    ;;
                Mail)
                    run_desktop $name thunderbird thunderbird
                    ;;
                Discord)
                    run_desktop $name discord discord
                    ;;
            esac
            ;;
        desktop_rename)
            bspc monitor -o $(bspc query --names -D | sort -V | tr -s '\n' ' ')
            ;;
    esac
done