baskerville / bspwm

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

Big empty space for no reason #1452

Open owocean opened 1 year ago

owocean commented 1 year ago

This happens every now and then after playing a fullscreen game. bspwm acts like there's a window there taking up space, but there is no window there. It doesn't have a title or anything. Restarting bspwm does not make it go away. I don't think it would matter, but the game that causes this is DUSKWORLD. It only happens sometimes, and goes away on restart. image Anyone experiencing the same issue and know what the problem is? Or how to fix it? Thanks in advance

gandalf3 commented 1 year ago

i have had this happen sometimes but i haven't been able to cause it on accident consistently before. typically it is a node without a client (i believe identical to a receptacle node created with bspc node -i).

to remove it, you should be able to kill it with the appropriate selector; if the currently focused node is the sibling to the receptacle node, and ideally a terminal emulator, you can run bspc node @brother -k. (though be aware floating and hidden nodes are still in the tree in places you might not expect and this will kill all child nodes too, so you may want to use the query below to inspect it first and/or try killing it by id instead)

you could also try inspecting it with something like bspc query -T --node @brother | jq which may help reveal if something very weird is going on. hope this helps!

owocean commented 1 year ago

inspecting it gave me this json

{
  "id": 98566195,
  "splitType": "vertical",
  "splitRatio": 0.520000,
  "vacant": false,
  "hidden": false,
  "sticky": false,
  "private": false,
  "locked": false,
  "marked": false,
  "presel": null,
  "rectangle": {
    "x": 10,
    "y": 48,
    "width": 993,
    "height": 1152
  },
  "constraints": {
    "min_width": 32,
    "min_height": 32
  },
  "firstChild": null,
  "secondChild": null,
  "client": {
    "className": "",
    "instanceName": "",
    "borderWidth": 1,
    "state": "tiled",
    "lastState": "tiled",
    "layer": "normal",
    "lastLayer": "normal",
    "urgent": false,
    "shown": true,
    "tiledRectangle": {
      "x": 10,
      "y": 48,
      "width": 981,
      "height": 1140
    },
    "floatingRectangle": {
      "x": 721,
      "y": 384,
      "width": 476,
      "height": 430
    }
  }
}

i have no clue if this is useful or not. the other command you provided worked though :) thanks

KorespondentAda commented 1 year ago

Have same behavior, don't know when it appear, but then I can focus it, see preselection, move and, finally, close. It has same stats except for rectangles, of course. Recently updated bspwm from Arch repos to 0.9.10.

owocean commented 1 year ago

with the new steam update, this has been happening nonstop

KorespondentAda commented 1 year ago

Once appeared right after steam "Your friend launch game" popup, but not at first or every time. Steam itself worked in background. This "window", unlike receptacle created by bspc node -i for comparsion, has client with className and instanceName fields containing empty strings, but receptacle have client field null at all. It was not closed by bspc node <id> -c but -k works.

bljordan commented 1 year ago

It appears to be steamwebhelper for me. Would a bspc rule to either dump it into an unused desktop or make it default floating fix this? I am testing it: bspc rule -a steam:steamwebhelper desktop=^8 state=floating

Also, this might be what is causing my fullscreen games to get kicked into tiled pretty regularly.

➜ ~ bspc query -T --node @brother | jq
{
  "id": 83886679,
  "splitType": "vertical",
  "splitRatio": 0.500000,
  "vacant": true,
  "hidden": false,
  "sticky": false,
  "private": false,
  "locked": false,
  "marked": false,
  "presel": null,
  "rectangle": {
    "x": 25,
    "y": 75,
    "width": 2535,
    "height": 1365
  },
  "constraints": {
    "min_width": 32,
    "min_height": 32
  },
  "firstChild": null,
  "secondChild": null,
  "client": {
    "className": "steam",
    "instanceName": "steamwebhelper",
    "borderWidth": 4,
    "state": "floating",
    "lastState": "tiled",
    "layer": "normal",
    "lastLayer": "normal",
    "urgent": false,
    "shown": true,
    "tiledRectangle": {
      "x": 0,
      "y": 0,
      "width": 0,
      "height": 0
    },
    "floatingRectangle": {
      "x": 980,
      "y": 577,
      "width": 600,
      "height": 286
    }
  }
}
gandalf3 commented 1 year ago

im wondering why i am not being hit with this.. i do have an external rule which hides steam windows that have no name and are exactly 64x24, due to this issue years ago, perhaps it is come back? i see there is a more recent report which looks similar

the exact rule i have is ugly but here it is anyway:

if [[ "$class" == "Steam" ]]; then
    # hide spurious windows generated by steam friendlist ui
    # https://github.com/ValveSoftware/steam-for-linux/issues/5584
        for w in $(xwininfo -root -children | sed -n 's/^ *\(0x[a-f0-9]*\) (has no name): ("Steam" "Steam")  64x24+0+0.*/\1/p'); do xdo hide $w; done
fi

i will investigate later as i wont be at the computer for a few days

DeusHaeresis commented 11 months ago

I'll have to try that external rule later, hopefully it works

First world problem, perhaps but it's just annoying having to cycle through nodes on the given workspace and bspc node -k'ing the empty receptacles/defunct nodes.

dennisrijsdijk commented 7 months ago

This issue has recently started cropping up for me. I'm able to minimally reproduce it from system startup by turning off my2560x1080 ultrawide screen in xrandr, then turning it on again. Usable screen space is limited to 1920 (1918, because borders = 1px, gaps = 0px) image

bspwm -v: 0.9.10-50-g8fc2269

bspc query -T --node @brother | jq doesn't return any output

bspc query -T --node | jq:

{
  "id": 27262979,
  "splitType": "vertical",
  "splitRatio": 0.500000,
  "vacant": false,
  "hidden": false,
  "sticky": false,
  "private": false,
  "locked": false,
  "marked": false,
  "presel": null,
  "rectangle": {
    "x": 0,
    "y": 29,
    "width": 1920,
    "height": 1051
  },
  "constraints": {
    "min_width": 32,
    "min_height": 32
  },
  "firstChild": null,
  "secondChild": null,
  "client": {
    "className": "Xfce4-terminal",
    "instanceName": "xfce4-terminal",
    "borderWidth": 1,
    "state": "tiled",
    "lastState": "tiled",
    "layer": "normal",
    "lastLayer": "normal",
    "urgent": false,
    "shown": true,
    "tiledRectangle": {
      "x": 0,
      "y": 29,
      "width": 1918,
      "height": 1049
    },
    "floatingRectangle": {
      "x": 865,
      "y": 256,
      "width": 826,
      "height": 566
    }
  }
}

The only way I can revert this is by fully quitting bspwm and logging in again. Restarting bspwm (bspc wm -r) doesn't have any effect.

bspwmrc:

#! /bin/sh

pgrep -x sxhkd > /dev/null || sxhkd &

# Polkit
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 &

bspc config border_width         1
bspc config window_gap          0

bspc config split_ratio          0.50
bspc config borderless_monocle   true
bspc config gapless_monocle      true
bspc config pointer_follows_focus false
bspc config focus_follows_pointer true

# Border
bspc config focused_border_color        "#6c71c4"
bspc config normal_border_color         "#073642"
bspc config active_border_color         "#073642"

# Notifications
/usr/bin/dunst &

# Dex
dex -a -s /etc/xdg/autostart/:~/.config/autostart/  &
# Picom
picom -b &

# Autolock
xss-lock --transfer-sleep-lock -- ~/.config/bspwm/scripts/i3lock-fancy/lock.sh --nofork

# Cursor
xsetroot -cursor_name left_ptr &

Please let me know if there's anymore info I should provide.