This repository has been archived on 2025-01-31. You can view files and clone it, but cannot push or open issues or pull requests.
Files
.backup
.bin
.config
bspwm
bspwmrc
conky
dunst
firestarter
htop
i3
mpd
mpv
polybar
qt5ct
rofi
skhd
sxhkd
syncthing-gtk
yabai
dircolors
kglobalshortcutsrc
khotkeysrc
picom.conf
ptgdp.conf
redshift.conf
user-dirs.dirs
user-dirs.locale
.firestarter
.local
.ssh
.vim
.wpgen
.bashrc
.functions
.gitconfig
.gitmodules
.inputrc
.joy2keyrc
.profile
.vimrc
.xinitrc
home/.config/bspwm/bspwmrc
Salt d84d3717cb bspwm: Ignore focus, fix KeePass rule
Still no dice on Spotify, see bspwm issue 291 (Spotify's problem)
2020-10-04 18:41:30 -05:00

117 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
#
# bspwmrc
# bspwm configuration file
#
## Start a hotkey daemon
pgrep sxhkd -u "$UID" || sxhkd &
## Monitor allocation
# Honestly pretty complex
setmon() {
desktops_total=10
desktops_primary=8
desktops_secondary=$(( desktops_total - desktops_primary ))
monitor_primary="$(xrandr -q | awk '/primary/{print $1}')"
monitors_secondary=($(xrandr -q | grep ' connected' | grep -v 'primary' | awk '{print $1}'))
# Ensure we have enough for every monitor
if (( desktops_secondary < ${#monitors_secondary[@]} )); then
echo "Adding more desktops to match connected monitors"
desktops_secondary=${#monitors_secondary[@]}
desktops_total=$(( desktops_secondary + desktops_primary ))
fi
if (( ${#monitors_secondary[@]} == 0 )); then
echo "Only one monitor allocated"
layout=$(seq --separator=" " 1 $desktops_total)
echo "Setting layout $layout"
bspc monitor $monitor_primary -d $layout
else
echo "${#monitors_secondary[@]} monitors connected"
deskpermon=$(( desktops_secondary / ${#monitors_secondary[@]} ))
layout=$(seq --separator=" " 1 $desktops_primary)
echo "Setting primary layout $layout"
bspc monitor $monitor_primary -d $layout
for m in $(seq 0 $(( ${#monitors_secondary[@]} - 1 ))); do
layout=$(seq --separator=" " \
$(( 1 + m + desktops_primary )) \
${#monitors_secondary[@]} \
"$desktops_total" \
)
echo "Setting layout for ${monitors_secondary[$m]} to $layout"
bspc monitor ${monitors_secondary[$m]} -d $layout
done
fi
}
setmon
## Behavior
# Tiling behavior
bspc config split_ratio 0.50
bspc config remove_disabled_monitors false
bspc config remove_unplugged_monitors true
# Pointer behavior
bspc config click_to_focus any
bspc config focus_follows_pointer true
bspc config pointer_follows_monitor true
bspc config pointer_modifier mod1
bspc config pointer_action1 move #LMB
bspc config pointer_action2 resize_corner #RMB
# ewmh behavior
bspc config ignore_ewmh_focus true # Fuck you, Discord
## Looks
# Padding
bspc config border_width 4
bspc config window_gap 6
bspc config single_monocle false
bspc config borderless_monocle false
bspc config gapless_monocle false
# Colors
case $THEME in
light)
bspc config normal_border_color "#bdc3c7" #Unfocused
bspc config active_border_color "#1abc9c" #Focused, but current monitor isn't
bspc config focused_border_color "#1d99f3" #Focused completely
bspc config presel_feedback_color "#eff0f1" #???
;;
*)
bspc config normal_border_color "#31363b" #Unfocused
bspc config active_border_color "#1abc9c" #Focused, but current monitor isn't
bspc config focused_border_color "#1d99f3" #Focused completely
bspc config presel_feedback_color "#eff0f1" #???
;;
esac
## Rules
bspc rule -r '*'
case $HOSTNAME in
dsk-cstm-0)
# Big boy gets pseudotiled Firefox
bspc rule -a Firefox state=pseudo_tiled rectangle=1920x1080+0+0
;;
*)
;;
esac
bspc rule -a Steam desktop=7
bspc rule -a KeePassXC desktop=8
bspc rule -a slack desktop=9
bspc rule -a Riot desktop=9
bspc rule -a Element desktop=9
bspc rule -a discord desktop=9
bspc rule -a spotify desktop=10
bspc rule -a cantata desktop=10
bspc rule -a 'Minecraft 1.7.10' state=fullscreen
# For fullscreen Wine
bspc rule -a explorer.exe state=fullscreen
# Plasma rules
bspc rule -a plasmashell state=floating sticky=on border=off
bspc rule -a krunner state=floating layer=above sticky=on border=off
# Widgets
bspc rule -a Conky state=floating layer=below sticky=on
bspc rule -a pavucontrol-qt state=floating layer=above sticky=on