blob: 6e38bb7b62e8e0d134eac94b78ec41bbc35d9276 (
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
57
58
59
|
#!/usr/bin/env bash
INTERNAL_MONITOR="eDP"
EXTERNAL_MONITOR="HDMI-A-0"
monitor_add() {
# Move first 5 desktops to external monitor
for desktop in $(bspc query -D --names -m "$INTERNAL_MONITOR" | sed 5q); do
bspc desktop "$desktop" --to-monitor "$EXTERNAL_MONITOR"
done
# Remove default desktop created by bspwm
bspc desktop Desktop --remove
# reorder monitors
bspc wm -O "$EXTERNAL_MONITOR" "$INTERNAL_MONITOR"
}
monitor_remove() {
# Add default temp desktop because a minimum of one desktop is required per monitor
bspc monitor "$EXTERNAL_MONITOR" -a Desktop
# Move all desktops except the last default desktop to internal monitor
for desktop in $(bspc query -D -m "$EXTERNAL_MONITOR"); do
bspc desktop "$desktop" --to-monitor "$INTERNAL_MONITOR"
done
# delete default desktops
bspc desktop Desktop --remove
# reorder desktops
bspc monitor "$INTERNAL_MONITOR" -o 1 2 3 4 5 6 7 8 9 10
}
if [[ $(xrandr -q | grep "${EXTERNAL_MONITOR} connected") ]]; then
# set xrandr rules for docked setup
xrandr --output "$INTERNAL_MONITOR" --mode 1920x1080 --pos 0x0 --rotate normal --output "$EXTERNAL_MONITOR" --primary --mode 1920x1080 --pos 1920x780 --rotate normal
if [[ $(bspc query -D -m "${EXTERNAL_MONITOR}" | wc -l) -ne 5 ]]; then
monitor_add
fi
bspc wm -O "$EXTERNAL_MONITOR" "$INTERNAL_MONITOR"
else
# set xrandr rules for mobile setup
xrandr --output "$INTERNAL_MONITOR" --primary --mode 1920x1080 --pos 0x0 --rotate normal --output "$EXTERNAL_MONITOR" --off
if [[ $(bspc query -D -m "${INTERNAL_MONITOR}" | wc -l) -ne 10 ]]; then
monitor_remove
fi
fi
# Set wallpaper
~/.local/bin/setbg.sh &
# Kill and relaunch polybar
kill -9 $(pgrep -f 'polybar') >/dev/null 2>&1
polybar-msg cmd quit >/dev/null 2>&1
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
if [[ $(xrandr -q | grep "${EXTERNAL_MONITOR} connected") ]]; then
polybar --reload primary -c ~/.config/polybar/config.ini </dev/null >/var/tmp/polybar-primary.log 2>&1 200>&- &
polybar --reload secondary -c ~/.config/polybar/config.ini </dev/null >/var/tmp/polybar-secondary.log 2>&1 200>&- &
else
polybar --reload primary -c ~/.config/polybar/config.ini </dev/null >/var/tmp/polybar-primary.log 2>&1 200>&- &
fi
|