From 145ead604f85c1dd66b5faf203f11eb4c456d13f Mon Sep 17 00:00:00 2001 From: Salt Date: Sun, 31 May 2020 18:01:57 -0500 Subject: [PATCH] bspwm: Add funky monitor allocation back --- .config/bspwm/bspwmrc | 44 +++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) mode change 100644 => 100755 .config/bspwm/bspwmrc diff --git a/.config/bspwm/bspwmrc b/.config/bspwm/bspwmrc old mode 100644 new mode 100755 index 0198baf1..afe08b07 --- a/.config/bspwm/bspwmrc +++ b/.config/bspwm/bspwmrc @@ -1,9 +1,49 @@ -#!/usr/bin/env bash +#!/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 @@ -12,7 +52,7 @@ bspc config remove_unplugged_monitors true # Pointer behavior bspc config click_to_focus any -bspc config pointer_follows_focus false +bspc config pointer_follows_focus true bspc config pointer_follows_monitor true bspc config pointer_modifier mod1 bspc config pointer_action1 move #LMB