1

I am trying to setup bspwn on a multi monitor setup. I have an ultrawide 21:9 (2560x1080) and a standard 16:9 (1920x1080). So far I have gotten it working so that it loads the window manager properly on both screens but the monitors are the wrong way arround.

How they look on my desk
##########    ##################
#        #    #                #
#  16:9  #    #     21:9       #
#        #    #                #
##########    ##################

How the monitors are displayed in bspwm
##################    ##########
#                #    #        #
#     21:9       #    #  16:9  #
#                #    #        #
##################    ##########

So I tried to fix the position of them by running a xrandr command

xrandr --output DP-1 --primary --mode 2560x1080 --rate 75.00
xrandr --output HDMI-1 --mode 1920x1080 --rate 60.00 --left-of DP-1

Afterwards my first desktop on bspwm always defaults to the 16:9 display when I want it on my 21:9. I think that when I run the xrandr commands the screens switches positions bspwm going of the positions relative to other monitors. Is there some way that I can switch the displayed positions of the monitors without it messing with bspwm?


~/.config/bspwm/bspwmrc

#! /bin/sh

#
# bspwmrc
#

sxhkd &

bspc monitor DP-1 -n center
bspc monitor HDMI-1 -n left

bspc monitor center -d I II III
bspc monitor left -d IV V VI

bspc config border_width         2
bspc config window_gap          12

bspc config split_ratio          0.50
bspc config borderless_monocle   true
bspc config gapless_monocle      true

bspc rule -a Gimp desktop='^8' state=floating follow=on
bspc rule -a Chromium desktop='^2'
bspc rule -a mplayer2 state=floating
bspc rule -a Kupfer.py focus=on
bspc rule -a Screenkey manage=off

~/.config/sxhkd/sxhkdrc

#
# wm independent hotkeys
#

# terminal emulator
super + Return
    urxvt

# program launcher
super + @space
    rofi -show run

# make sxhkd reload its configuration files:
super + Escape
    pkill -USR1 -x sxhkd

#
# bspwm hotkeys
#

# quit/restart bspwm
super + alt + {q,r}
    bspc {quit,wm -r}

# close and kill
super + {_,shift + }w
    bspc node -{c,k}

# alternate between the tiled and monocle layout
super + m
    bspc desktop -l next

# send the newest marked node to the newest preselected node
super + y
    bspc node newest.marked.local -n newest.!automatic.local

# swap the current node and the biggest node
super + g
    bspc node -s biggest

#
# state/flags
#

# set the window state
super + {t,shift + t,s,f}
    bspc node -t {tiled,pseudo_tiled,floating,fullscreen}

# set the node flags
super + ctrl + {m,x,y,z}
    bspc node -g {marked,locked,sticky,private}

#
# focus/swap
#

# focus the node in the given direction
super + {_,shift + }{h,j,k,l}
    bspc node -{f,s} {west,south,north,east}

# focus the node for the given path jump
super + {p,b,comma,period}
    bspc node -f @{parent,brother,first,second}

# focus the next/previous node in the current desktop
super + {_,shift + }c
    bspc node -f {next,prev}.local

# focus the next/previous desktop in the current monitor
super + bracket{left,right}
    bspc desktop -f {prev,next}.local

# focus the last node/desktop
super + {grave,Tab}
    bspc {node,desktop} -f last

# focus the older or newer node in the focus history
super + {o,i}
    bspc wm -h off; \
    bspc node {older,newer} -f; \
    bspc wm -h on

# focus or send to the given desktop
super + {_,shift + }{1-9,0}
    bspc {desktop -f,node -d} '^{1-9,10}'

#
# preselect
#

# preselect the direction
super + ctrl + {h,j,k,l}
    bspc node -p {west,south,north,east}

# preselect the ratio
super + ctrl + {1-9}
    bspc node -o 0.{1-9}

# cancel the preselection for the focused node
super + ctrl + space
    bspc node -p cancel

# cancel the preselection for the focused desktop
super + ctrl + shift + space
    bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel

#
# move/resize
#

# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
    bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}

# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
    bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}

# move a floating window
super + {Left,Down,Up,Right}
    bspc node -v {-20 0,0 20,0 -20,20 0}

~/.xinitrc

#!/bin/sh

#
# .xinitrc
#

# Setup X
[[ -f ~/.Xresources ]] && xrdb $HOME/.Xresources
#xrandr --output DP-1 --auto --output HDMI-1 --auto --left-of DP-1
xrandr --output DP-1 --primary --mode 2560x1080 --rate 75.00
xrandr --output HDMI-1 --mode 1920x1080 --rate 60.00 --left-of DP-1

# Launch Window Manager
sxhkd &
exec bspwm
0

After playing around with it for a few hours I tried to use arandr since I might not be doing something correct with xrandr and got the xrandr command that works for me.

xrandr --output DVI-I-1 --off --output DP-1 --primary --mode 2560x1080 --pos 1915x0 --rotate normal --output DP-2 --off --output DP-3 --off --output HDMI-1 --mode 1920x1080 --pos 0x0 --rotate normal

EDIT: Above just moved the monitors so that they were switched around and not lined up properly which I found out when setting up lemon bar.

I just figured out the commands which setup the monitors then swaps them

bspc monitor DP-0 -d IV V VI
bspc monitor HDMI-0 -d I II III
bspc monitor DP-0 -s HDMI-0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.