.config
bspwm
conky
dtfscripts
devices
services
tasks
bspwm_monitorset.sh
kill_krunner.sh
xrdbupdate.sh
xset.sh
common_service.sh
common_task.sh
dtfscript
dunst
plasma-workspace
polybar
rofi
sxhkd
xob
xrdb
compton.conf
kglobalshortcutsrc
konsolerc
kscreenlockerrc
ksplashrc
redshift.conf
startupconfig
.local
.ssh
.themes
.vim
.bashrc
.gitmodules
.kshrc
.profile
.vimrc
.zshrc
81 lines
3.0 KiB
Bash
Executable File
81 lines
3.0 KiB
Bash
Executable File
#! /bin/bash
|
|
#
|
|
# monitorset.sh
|
|
# Copyright (C) 2018 salt <salt@dsk-cstm-0>
|
|
#
|
|
# Distributed under terms of the MIT license.
|
|
#
|
|
|
|
if ! pgrep bspwm > /dev/null 2>&1; then
|
|
tsk_log "Not under bspwm"
|
|
exit 1
|
|
fi
|
|
|
|
monitor_primary=$(xrandr -q | awk '/primary/{print $1}')
|
|
monitors_secondary=($(xrandr -q | grep ' connected' | grep -v 'primary' | awk '{print $1}'))
|
|
|
|
desktops_total=${BSPWM_DESKTOPS_TOTAL:-8}
|
|
desktops_primary=${BSPWM_DESKTOPS_PRIMARY:-6}
|
|
desktops_secondary=$(($desktops_total - $desktops_primary))
|
|
|
|
# Sanity checks
|
|
if ! [[ "$desktops_total" -ge 1 ]]; then
|
|
tsk_log "desktops_total cannot be $desktops_total, defaulting to 8"
|
|
desktops_total=8
|
|
fi
|
|
if ! [[ "$desktops_primary" -ge 1 ]]; then
|
|
tsk_log "desktops_primary cannot be $desktops_primary, defaulting to 6"
|
|
desktops_primary=6
|
|
fi
|
|
|
|
# Do we have enough desktops for all monitors?
|
|
# We can correct this without defaulting, so don't error
|
|
if [[ $desktops_secondary -lt ${#monitors_secondary[@]} ]]; then
|
|
tsk_log "Configuration would leave some monitors without desktops; adding more"
|
|
desktops_secondary=${#monitors_secondary[@]}
|
|
desktops_total=$(($desktops_secondary + $desktops_primary))
|
|
deskpermon=1
|
|
tsk_log "Remaining desktops set to $desktops_secondary, highest desktop is now $desktops_total"
|
|
fi
|
|
|
|
# Can we actually reach all of these desktops via keybinds?
|
|
if [[ $desktops_total -gt 10 ]]; then
|
|
tsk_log "More than ten desktops were allocated! Not all of these can be reached via keybinds!"
|
|
if [[ $(($desktops_total - $desktops_secondary)) -gt 0 ]]; then
|
|
tsk_log "Adjusting primary desktop reservation"
|
|
desktops_primary=$(($desktops_total - $desktops_secondary))
|
|
tsk_log "Set reserved desktops to $desktops_primary"
|
|
else
|
|
tsk_log "Cannot resolve this situation without starving the primary monitor of desktops!"
|
|
tsk_log "This may result in desktops being allocated that cannot be easily accessed!"
|
|
fi
|
|
fi
|
|
|
|
|
|
# The code that actually sets the monitors up
|
|
# First, do we actually have any secondaries?
|
|
if [[ $(echo ${monitors_secondary:-0}) == "0" ]]; then
|
|
# We only have one monitor, so give it everything
|
|
layout=$(seq --separator=" " 1 $desktops_total)
|
|
tsk_log "Found one monitor: $monitor_primary, so giving it layout \"$layout\""
|
|
bspc monitor $monitor_primary -d $layout
|
|
else
|
|
deskpermon=$(($desktops_secondary / ${#monitors_secondary[@]}))
|
|
layout=$(seq --separator=" " 1 $desktops_primary)
|
|
tsk_log "Giving primary monitor $monitor_primary layout \"$layout\""
|
|
bspc monitor $monitor_primary -d $layout
|
|
unset layout
|
|
tsk_log "Attempting to put $desktops_secondary desktops across ${#monitors_secondary[@]} monitors, $deskpermon each"
|
|
for m in $(seq 0 $((${#monitors_secondary[@]} - 1))); do
|
|
layout=$(seq --separator=" " $((1 + $m + $desktops_primary)) ${#monitors_secondary[@]} "$desktops_total")
|
|
tsk_log "Giving monitor $m (${monitors_secondary[$m]}) layout \"$layout\""
|
|
bspc monitor ${monitors_secondary[$m]} -d $layout
|
|
done
|
|
fi
|
|
unset monitor_primary
|
|
unset monitors_secondary
|
|
unset desktops_total
|
|
unset desktops_primary
|
|
unset desktops_secondary
|
|
|