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
.bin
.config
autostart
bspwm
bspwmrc
dunst
firestarter
htop
i3
mpd
mpv
polybar
pulse
rofi
skhd
sxhkd
syncthing-gtk
yabai
compton.conf
dircolors
kglobalshortcutsrc
khotkeysrc
ptgdp.conf
redshift.conf
user-dirs.dirs
user-dirs.locale
.firestarter
.local
.ssh
.vim
.bashrc
.functions
.gitconfig
.gitmodules
.inputrc
.joy2keyrc
.profile
.vimrc
.xinitrc
.xsessionrc
home/.config/bspwm/bspwmrc

90 lines
2.8 KiB
Bash
Executable File

#!/bin/bash
#
# bspwmrc
# bspwm configuration file
#
## Monitor allocation
# Honestly pretty complex
setmon() {
desktops_total=8
desktops_primary=6
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 pointer_follows_focus 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
## 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 true
# Colors
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" #???
## Rules
bspc rule -r '*'
bspc rule -a Firefox desktop=1
bspc rule -a Firefox-esr desktop=1
bspc rule -a Waterfox desktop=1
bspc rule -a discord desktop=7
bspc rule -a spotify desktop=8
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