baskerville / bspwm

A tiling window manager based on binary space partitioning
BSD 2-Clause "Simplified" License
7.71k stars 416 forks source link

Plugging second monitor causes first monitor to not be used at full width #637

Open ghost opened 7 years ago

ghost commented 7 years ago

Added a screenshot for clarification.

I am often switching between one and two monitors (laptop + external monitor on HDMI) and I wrote a simple script that rearrange my desktops so they are split among the two monitors. Sometimes, however, running the script causes my laptop's monitor to not be used completely, using about 30% of its width, as shown on the screenshot below.

image

It seems to only happen if I log in my laptop without the external monitor, and then plug in. If I log in with the external monitor, unplug, and replug, everything is fine.

It also doesn't seem to be a problem with xrandr, as polybar and feh don't have a problem. Resizing the screen through xrandr doesn't help either.

Below are the different config files that might be relevant:

export DOTFILES=$HOME/.dotfiles export PATH=$PATH:$DOTFILES/bin export PATH=$PATH:$HOME/.local/bin $DOTFILES/bin/load_xres

Load custom map and xcape

xmodmap $HOME/.xmodmap.conf && xcape

Add local font folder

xset +fp $HOME/.fonts/

Handle the different monitor setups

xrandr --output eDP1 --mode 1920x1200 --primary if xrandr -q | grep 'HDMI2 connected'; then xrandr --output HDMI2 --mode 1920x1080 --left-of eDP1 fi

udiskie & compton & sxhkd & exec bspwm


- bpswmrc

! /bin/sh

sxhkd &

bspc config border_width 2 bspc config window_gap 5 bspc config bottom_padding 40 bspc config left_padding 5 bspc config right_padding 5

bspc config focused_border_color "#a1b56c" bspc config normal_border_color "#585858" bspc config presel_feedback_color "#9e9e9e"

bspc config split_ratio 0.50 bspc config borderless_monocle true bspc config gapless_monocle true bspc config focus_by_distance true bspc config history_aware_focus true bspc config remove_unplugged_monitors true bspc config focus_follows_pointer true

if xrandr -q | grep 'HDMI2 connected'; then xrandr --output HDMI2 --mode 1920x1080 --left-of eDP1 bspc monitor eDP1 -d I II III IV V VI VII bspc monitor HDMI2 -d I II III else bspc monitor eDP1 -d I II III IV V VI VII VIII IX X fi xrandr --output eDP1 --mode 1920x1200

bspc rule -a Zathura state=tiled

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

feh --bg-fill $HOME/wallpapers/clone_trooper_helmet_dark.png $HOME/.config/polybar/polybar-launch.sh


- script to rearrange desktops:

! /bin/sh

sxhkd &

bspc config border_width 2 bspc config window_gap 5 bspc config bottom_padding 40 bspc config left_padding 5 bspc config right_padding 5

bspc config focused_border_color "#a1b56c" bspc config normal_border_color "#585858" bspc config presel_feedback_color "#9e9e9e"

bspc config split_ratio 0.50 bspc config borderless_monocle true bspc config gapless_monocle true bspc config focus_by_distance true bspc config history_aware_focus true bspc config remove_unplugged_monitors true bspc config focus_follows_pointer true

if xrandr -q | grep 'HDMI2 connected'; then xrandr --output HDMI2 --mode 1920x1080 --left-of eDP1 bspc monitor eDP1 -d I II III IV V VI VII bspc monitor HDMI2 -d I II III else bspc monitor eDP1 -d I II III IV V VI VII VIII IX X fi xrandr --output eDP1 --mode 1920x1200

bspc rule -a Zathura state=tiled

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

feh --bg-fill $HOME/wallpapers/clone_trooper_helmet_dark.png $HOME/.config/polybar/polybar-launch.sh

frnsys commented 7 years ago

I seem to be experiencing the same issue:

image

I've tried manually setting the monitor geometry with:

bspc monitor HDMI1 -g 1920x1080+0+0

but that didn't appear to change anything.

Also, toggling fullscreen on the window works fine (it takes up the whole monitor then).

The issue doesn't happen if the external monitor already plugged when booting.

This is using bspwm version 0.9.2-56-gcc3d306.

baskerville commented 7 years ago

The output of bspc subscribe monitor might be of interest.

frnsys commented 7 years ago

Here's some of the output after plugging in the secondary monitor:

monitor_geometry 0x01000002 1366x768+0+1080
monitor_geometry 0x01000072 1920x1080+0+0
baskerville commented 7 years ago

So, the output of bspc wm -d | jq '.monitors[] | {name, rectangle}' matches your monitor setup?

oyren commented 6 years ago

Experiencing the same issue:

i_002

oyren commented 6 years ago

Now it works fine. Bspwm Version is still the same, if i remember correctly, i just update my kernel (4.9.46).

amosbird commented 6 years ago

Hmm, same problem with kernel 4.17.13. Note i3wm also suffers this.