polybar / polybar

A fast and easy-to-use status bar

Home Page:https://polybar.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[Bug]: internal/i3 padding is removed, except on the left side for most recent label on second monitor when using pin-workspaces

ItaloBorrelli opened this issue · comments

Checklist

  • I have read the appropriate section in the contributing guidelines
  • I believe this issue is a problem with polybar itself and not a misconfiguration on my part
  • I have searched for other open and closed issues that may have already reported this problem
  • I have checked the known issues page for this problem.
  • I have followed the debugging guide to narrow down the problem to a minimal config.

Steps to reproduce

I usually run through a startup script that kills all instances of and restarts polybar. The commands are as follows, with logs having been added for sake of debugging.

killall -q polybar
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
for m in $(xrandr --query | grep " connected" | cut -d" " -f1); do
    MONITOR=$m polybar -c ~/.config/polybar/config.ini -l=trace bottom > ~/log_$m 2>&1 &
done

This error does occur when running without the monitor options, which obviously only creates a bar on a single screen when there are multiple monitors. The issue doesn't occur when running on only a single monitor.

polybar -c ~/.config/polybar/config.ini -l=trace bottom > ~/log_single 2>&1 &

Minimal config

[colors]
background = #fff
foreground = #f00

[bar/bottom]
monitor = ${env:MONITOR:}
bottom = true
height = 24
background = ${colors.background}
foreground = ${colors.foreground}
font-0 = MesloLGS NF:size=14;4
enable-ipc = true

modules-center = i3

[module/i3]
type = internal/i3
label-focused = %index%
; the exact padding doesn't matter because the bug always looks practically the same
label-focused-padding = 4
label-unfocused = %index%
label-unfocused-padding = 4
label-occupied = %index%
label-occupied-padding = 4
pin-workspaces = true
fixed-center = true
label-separator = █
label-separator-foreground = #fb2

Polybar log

This is separated into a file per monitor. rdp0 had windows 0 and 1 and rdp1 had windows 2 and 3.

  • When polybar was started window 0 was focused
  • Switch to window 1
  • Switch to window 0
  • Switch to window 2
  • Switch to window 3
  • Switch to window 2
  • Switch to window 0
  • kill all instances of polybar
~/log_rdp0
polybar|notice:  Parsing config file: /home/iborrelli/.config/polybar/config.ini
polybar|trace: config_parser: Parsing /home/iborrelli/.config/polybar/config.ini
polybar|info:  Created legacy ipc fifo at '/tmp/polybar_mqueue.448131'
polybar|info:  Opening ipc socket at '/run/user/1000/polybar/ipc.448131.sock'
polybar|notice:  Listening for IPC messages (PID: 448131)
polybar|info:  Environment var reference ${MONITOR} found (value=rdp0)
polybar|info:  Loaded monitor rdp0 (1920x1080+0+0)
polybar|info:  Configured DPI = 96x96
polybar|info:  Bar geometry: 1920x24+0+1056; Borders: 0,0,0,0
polybar|trace: bar: Attach X event sink
polybar|trace: bar: Attach signal receiver
polybar|trace: controller: Setup user-defined modules
polybar|notice:  Loading module 'i3' of type 'internal/i3'
polybar|notice:  Loaded 1 modules
polybar|info:  Starting application
polybar|trace: controller: Main thread id = 1
polybar|info:  Starting module/i3
polybar|info:  Entering event loop (thread-id=1)
polybar|trace: bar: Create renderer
polybar|trace: renderer: Get TrueColor visual
polybar|trace: renderer: Allocate colormap
polybar|trace: renderer: Allocate output window
polybar|trace: renderer: Allocate window pixmaps
polybar|trace: renderer: Allocate graphic contexts
polybar|trace: renderer: Allocate alignment blocks
polybar|trace: renderer: Allocate cairo components
polybar|trace: renderer: Load fonts
polybar|trace: module/i3: Thread id = 2
polybar|notice:  Loaded font "MesloLGS NF:size=14" (name=MesloLGS NF, offset=4, file=/usr/share/fonts/TTF/MesloLGS-NF-Regular.ttf)
polybar|info:  Bar window: 0x0e00001
polybar|trace: bar: Reconfigure window
polybar|trace: bar: Set window WM_NAME
polybar|trace: bar: Set window _NET_WM_WINDOW_TYPE
polybar|trace: bar: Set window _NET_WM_STATE
polybar|trace: bar: Set window _NET_WM_DESKTOP
polybar|trace: bar: Set window _NET_WM_PID
polybar|trace: bar: Map window
polybar|trace: bar: Draw empty bar
polybar|trace: bar: Setup tray manager
polybar|info:  Disabling tray manager (reason: missing `tray-position`)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Force update
polybar|info:  Redrawing bar window
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|trace: bar: Received expose event
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=352x24+784+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|notice:  Received signal(15): Terminated
polybar|info:  Eventloop finished
polybar|notice:  Termination signal received, shutting down...
polybar|trace: controller: Detach signal receiver
polybar|trace: controller: Stop modules
polybar|info:  module/i3: Disconnecting from socket
polybar|info:  module/i3: Stopping
polybar|warn:  module/i3: Attempting to reconnect socket (reason: Unexpected EOF while reading header)
polybar|info:  module/i3: Reconnecting socket succeeded
polybar|trace: module/i3: Release sleep lock
polybar|info:  Deconstruction of module/i3 took 4 ms.
polybar|trace: module/i3: Deconstructing
polybar|trace: ipc: Removing named pipe at: /tmp/polybar_mqueue.448131
polybar|info:  Waiting for spawned processes to end
polybar|info:  Reached end of application...

~/log_rdp1
polybar|notice:  Parsing config file: /home/iborrelli/.config/polybar/config.ini
polybar|trace: config_parser: Parsing /home/iborrelli/.config/polybar/config.ini
polybar|info:  Created legacy ipc fifo at '/tmp/polybar_mqueue.448132'
polybar|info:  Opening ipc socket at '/run/user/1000/polybar/ipc.448132.sock'
polybar|notice:  Listening for IPC messages (PID: 448132)
polybar|info:  Environment var reference ${MONITOR} found (value=rdp1)
polybar|info:  Loaded monitor rdp1 (1920x1080+1920+0)
polybar|info:  Configured DPI = 96x96
polybar|info:  Bar geometry: 1920x24+1920+1056; Borders: 0,0,0,0
polybar|trace: bar: Attach X event sink
polybar|trace: bar: Attach signal receiver
polybar|trace: controller: Setup user-defined modules
polybar|notice:  Loading module 'i3' of type 'internal/i3'
polybar|notice:  Loaded 1 modules
polybar|info:  Starting application
polybar|trace: controller: Main thread id = 1
polybar|info:  Starting module/i3
polybar|info:  Entering event loop (thread-id=1)
polybar|trace: bar: Create renderer
polybar|trace: renderer: Get TrueColor visual
polybar|trace: renderer: Allocate colormap
polybar|trace: renderer: Allocate output window
polybar|trace: renderer: Allocate window pixmaps
polybar|trace: renderer: Allocate graphic contexts
polybar|trace: renderer: Allocate alignment blocks
polybar|trace: renderer: Allocate cairo components
polybar|trace: renderer: Load fonts
polybar|trace: module/i3: Thread id = 2
polybar|notice:  Loaded font "MesloLGS NF:size=14" (name=MesloLGS NF, offset=4, file=/usr/share/fonts/TTF/MesloLGS-NF-Regular.ttf)
polybar|info:  Bar window: 0x1000001
polybar|trace: bar: Reconfigure window
polybar|trace: bar: Set window WM_NAME
polybar|trace: bar: Set window _NET_WM_WINDOW_TYPE
polybar|trace: bar: Set window _NET_WM_STATE
polybar|trace: bar: Set window _NET_WM_DESKTOP
polybar|trace: bar: Set window _NET_WM_PID
polybar|trace: bar: Map window
polybar|trace: bar: Draw empty bar
polybar|trace: bar: Setup tray manager
polybar|info:  Disabling tray manager (reason: missing `tray-position`)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Force update
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=352x24+784+0, falloff=0)
polybar|trace: bar: Received expose event
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=352x24+784+0, falloff=0)
polybar|notice:  Received signal(15): Terminated
polybar|info:  Eventloop finished
polybar|notice:  Termination signal received, shutting down...
polybar|trace: controller: Detach signal receiver
polybar|trace: controller: Stop modules
polybar|info:  module/i3: Disconnecting from socket
polybar|info:  module/i3: Stopping
polybar|warn:  module/i3: Attempting to reconnect socket (reason: Unexpected EOF while reading header)
polybar|info:  module/i3: Reconnecting socket succeeded
polybar|trace: module/i3: Release sleep lock
polybar|info:  Deconstruction of module/i3 took 3 ms.
polybar|trace: module/i3: Deconstructing
polybar|trace: ipc: Removing named pipe at: /tmp/polybar_mqueue.448132
polybar|info:  Waiting for spawned processes to end
polybar|info:  Reached end of application...

Expected behavior

Suppose my label-focused, label-unfocused, label-occupied are all the same and have the exact same padding of 4. monitorA contains i3 windows 1-2-3 and monitorB contains i3 windows 4-5-6.

Suppose 2 is focused. monitorA polybars i3 module should look like this ignore the lack of background color, one can imagine it doesn't have background. I am using spaces to represent padding and the top is polybar on monitorA and the bottom is polybar on monitorB
1 █ 2 █ 3
4 █ 5 █ 6

If I switch from 2 to 5 it stays the same
1 █ 2 █ 3
4 █ 5 █ 6

If I switch from 5 to 2 it stays the same
1 █ 2 █ 3
4 █ 5 █ 6

If I now change to 3 it stays the same
1 █ 2 █ 3
4 █ 5 █ 6

Move window 3 to monitor 2
1 █ 2
3 █ 4 █ 5 █ 6

Actual behavior

Suppose my label-focused, label-unfocused, label-occupied are all the same and have the exact same padding of 4. monitorA contains i3 windows 1-2-3 and monitorB contains i3 windows 4-5-6.

Suppose 2 is focused. monitorA polybars i3 module should look like this ignore the lack of background color, one can imagine it doesn't have background. I am using spaces to represent padding and the top is polybar on monitorA and the bottom is polybar on monitorB
1 █ 2 █ 3
4 █ 5 █ 6

When I switch from screen 2 to 5 the padding around 2 is removed but one unit of padding remains in front of it
1 █ 2█ 3
4 █ 5 █ 6

If I switch from 5 to 2 the padding around 5 is removed but one unit of padding remains in front of it
1 █ 2 █ 3
4 █ 5█ 6

If I now change to 3 it stays the same
1 █ 2 █ 3
4 █ 5█ 6

Suppose window 3 is now focused and 2 was the most recent focused on monitorA aside from 3. If I move 3 to monitorB it now looks like this, with the space around 2 being removed except one unit in front:
1 █ 2
3 █ 4 █ 5 █ 6

Whichever the last focused label was on the monitor that does not have an active label always has no padding behind and one unit of padding in front.

Window Manager and Version

i3 4.22

Linux Distribution

Arch (Hosted through Hyper-V and run through RDP)

Polybar version

polybar 3.6.3

Features: +alsa +curl +i3 +mpd +network(libnl) +pulseaudio +xkeyboard

X extensions: +randr (+monitors) +composite +xkb +xrm +xcursor

Build type: Release
Compiler: /usr/bin/c++
Compiler flags: -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions         -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security         -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS -g -ffile-prefix-map=/build/polybar/src=/usr/src/debug/polybar -flto=auto -O3 -DNDEBUG -Wall -Wextra -Wpedantic -Wsuggest-override
Linker flags: -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now -flto=auto -Wall -Wextra -Wpedantic -Wsuggest-override  -Wall -Wextra -Wpedantic -Wsuggest-override

Additional Context / Screenshots

In this video I use the following config:

[colors]
background = #fff
foreground = #f00
foreground-alt = #000
primary = #0f0

[bar/bottom]
monitor = ${env:MONITOR:}
bottom = true
height = 24
background = ${colors.background}
foreground = ${colors.foreground}
font-0 = MesloLGS NF:size=14;4
enable-ipc = true

modules-center = i3

[module/i3]
type = internal/i3
label-focused = %index%
label-focused-foreground = ${colors.primary}
label-focused-background = ${colors.foreground-alt}
label-focused-padding = 0
label-unfocused = %index%
label-unfocused-padding = 0
label-occupied = %index%
label-occupied-foreground= ${colors.foreground}
label-occupied-padding = 0
pin-workspaces = true
fixed-center = true
label-separator = █
label-separator-foreground = #fb2

I can't take video across multiple monitors. This was taking using snipping tool from windows. I am using rdp and hosting my linux vm on windows, which should be inconsequential to this bug, but possibly of note. For context, I went from 1 to 0 to 2 to 0 to 3 etc in the first video and 0 to 1 to 7 to 1 etc in the second video.

https://github.com/polybar/polybar/assets/44072946/9a0f3d5d-d8c1-4a2f-821a-791c77bef04e
https://github.com/polybar/polybar/assets/44072946/3f3e76fb-220f-40d6-8ce8-60df40af1d4c

In this next video I've increased the size of the padding to 4 with everything else the same as above. I also move some screens from one to the other and create new screens in this to show how it's being affected. It only shows one monitor. I do the following:

  1. Move to window 6 on the second monitor
  2. Move to window 0
  3. Switch to the non-existent window 3 on this monitor
  4. Move window 3 to the other monitor (note 0 is affected because it was the most recent focused window)
  5. Move window 3 back this monitor
  6. Switch to window 1
  7. Move window 1 to the other monitor (note 3 is affected because it was the most recent focused window)
  8. Move window 1 back
polybar_issue_wider.mp4

The following is logs that show what happens when padding is set to 0 for all states. This is separated into a file per monitor. rdp0 had windows 0 and 1 and rdp1 had windows 2 and 3.

  • When polybar was started window 0 was focused
  • Switch to window 1
  • Switch to window 0
  • Switch to window 2
  • Switch to window 3
  • Switch to window 2
  • Switch to window 0
  • kill all instances of polybar
~/log_rdp0
polybar|notice:  Parsing config file: /home/iborrelli/.config/polybar/config.ini
polybar|trace: config_parser: Parsing /home/iborrelli/.config/polybar/config.ini
polybar|info:  Created legacy ipc fifo at '/tmp/polybar_mqueue.436657'
polybar|info:  Opening ipc socket at '/run/user/1000/polybar/ipc.436657.sock'
polybar|notice:  Listening for IPC messages (PID: 436657)
polybar|info:  Environment var reference ${MONITOR} found (value=rdp0)
polybar|info:  Loaded monitor rdp0 (1920x1080+0+0)
polybar|info:  Configured DPI = 96x96
polybar|info:  Bar geometry: 1920x24+0+1056; Borders: 0,0,0,0
polybar|trace: bar: Attach X event sink
polybar|trace: bar: Attach signal receiver
polybar|trace: controller: Setup user-defined modules
polybar|notice:  Loading module 'i3' of type 'internal/i3'
polybar|notice:  Loaded 1 modules
polybar|info:  Starting application
polybar|trace: controller: Main thread id = 1
polybar|info:  Starting module/i3
polybar|info:  Entering event loop (thread-id=1)
polybar|trace: bar: Create renderer
polybar|trace: renderer: Get TrueColor visual
polybar|trace: renderer: Allocate colormap
polybar|trace: renderer: Allocate output window
polybar|trace: renderer: Allocate window pixmaps
polybar|trace: renderer: Allocate graphic contexts
polybar|trace: renderer: Allocate alignment blocks
polybar|trace: renderer: Allocate cairo components
polybar|trace: renderer: Load fonts
polybar|trace: module/i3: Thread id = 2
polybar|notice:  Loaded font "MesloLGS NF:size=14" (name=MesloLGS NF, offset=4, file=/usr/share/fonts/TTF/MesloLGS-NF-Regular.ttf)
polybar|info:  Bar window: 0x5000001
polybar|trace: bar: Reconfigure window
polybar|trace: bar: Set window WM_NAME
polybar|trace: bar: Set window _NET_WM_WINDOW_TYPE
polybar|trace: bar: Set window _NET_WM_STATE
polybar|trace: bar: Set window _NET_WM_DESKTOP
polybar|trace: bar: Set window _NET_WM_PID
polybar|trace: bar: Map window
polybar|trace: bar: Draw empty bar
polybar|trace: bar: Setup tray manager
polybar|info:  Disabling tray manager (reason: missing `tray-position`)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Force update
polybar|info:  Redrawing bar window
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=121x24+900+0, falloff=0)
polybar|trace: bar: Received expose event
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=121x24+900+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=121x24+900+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=132x24+894+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=121x24+900+0, falloff=0)
polybar|notice:  Received signal(15): Terminated
polybar|info:  Eventloop finished
polybar|notice:  Termination signal received, shutting down...
polybar|trace: controller: Detach signal receiver
polybar|trace: controller: Stop modules
polybar|info:  module/i3: Disconnecting from socket
polybar|info:  module/i3: Stopping
polybar|warn:  module/i3: Attempting to reconnect socket (reason: Unexpected EOF while reading header)
polybar|info:  module/i3: Reconnecting socket succeeded
polybar|trace: module/i3: Release sleep lock
polybar|info:  Deconstruction of module/i3 took 4 ms.
polybar|trace: module/i3: Deconstructing
polybar|trace: ipc: Removing named pipe at: /tmp/polybar_mqueue.436657
polybar|info:  Waiting for spawned processes to end
polybar|info:  Reached end of application...

~/log_rdp1
polybar|notice:  Parsing config file: /home/iborrelli/.config/polybar/config.ini
polybar|trace: config_parser: Parsing /home/iborrelli/.config/polybar/config.ini
polybar|info:  Created legacy ipc fifo at '/tmp/polybar_mqueue.436658'
polybar|info:  Opening ipc socket at '/run/user/1000/polybar/ipc.436658.sock'
polybar|notice:  Listening for IPC messages (PID: 436658)
polybar|info:  Environment var reference ${MONITOR} found (value=rdp1)
polybar|info:  Loaded monitor rdp1 (1920x1080+1920+0)
polybar|info:  Configured DPI = 96x96
polybar|info:  Bar geometry: 1920x24+1920+1056; Borders: 0,0,0,0
polybar|trace: bar: Attach X event sink
polybar|trace: bar: Attach signal receiver
polybar|trace: controller: Setup user-defined modules
polybar|notice:  Loading module 'i3' of type 'internal/i3'
polybar|notice:  Loaded 1 modules
polybar|info:  Starting application
polybar|trace: controller: Main thread id = 1
polybar|info:  Starting module/i3
polybar|info:  Entering event loop (thread-id=1)
polybar|trace: bar: Create renderer
polybar|trace: renderer: Get TrueColor visual
polybar|trace: renderer: Allocate colormap
polybar|trace: renderer: Allocate output window
polybar|trace: renderer: Allocate window pixmaps
polybar|trace: renderer: Allocate graphic contexts
polybar|trace: renderer: Allocate alignment blocks
polybar|trace: renderer: Allocate cairo components
polybar|trace: renderer: Load fonts
polybar|trace: module/i3: Thread id = 2
polybar|notice:  Loaded font "MesloLGS NF:size=14" (name=MesloLGS NF, offset=4, file=/usr/share/fonts/TTF/MesloLGS-NF-Regular.ttf)
polybar|info:  Bar window: 0x2600001
polybar|trace: bar: Reconfigure window
polybar|trace: bar: Set window WM_NAME
polybar|trace: bar: Set window _NET_WM_WINDOW_TYPE
polybar|trace: bar: Set window _NET_WM_STATE
polybar|trace: bar: Set window _NET_WM_DESKTOP
polybar|trace: bar: Set window _NET_WM_PID
polybar|trace: bar: Map window
polybar|trace: bar: Draw empty bar
polybar|trace: bar: Setup tray manager
polybar|info:  Disabling tray manager (reason: missing `tray-position`)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Force update
polybar|info:  Redrawing bar window
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=88x24+916+0, falloff=0)
polybar|trace: bar: Received expose event
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=77x24+922+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=77x24+922+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=77x24+922+0, falloff=0)
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=88x24+916+0, falloff=0)
polybar|notice:  Received signal(15): Terminated
polybar|info:  Eventloop finished
polybar|notice:  Termination signal received, shutting down...
polybar|trace: controller: Detach signal receiver
polybar|trace: controller: Stop modules
polybar|info:  module/i3: Disconnecting from socket
polybar|info:  module/i3: Stopping
polybar|warn:  module/i3: Attempting to reconnect socket (reason: Unexpected EOF while reading header)
polybar|info:  module/i3: Reconnecting socket succeeded
polybar|trace: module/i3: Release sleep lock
polybar|info:  Deconstruction of module/i3 took 6 ms.
polybar|trace: module/i3: Deconstructing
polybar|trace: ipc: Removing named pipe at: /tmp/polybar_mqueue.436658
polybar|info:  Waiting for spawned processes to end
polybar|info:  Reached end of application...

Results of xrandr:

xrandr --query | grep " connected"
rdp0 connected primary 1920x1080+0+0 0mm x 0mm
rdp1 connected 1920x1080+1920+0 0mm x 0mm

Padding 0

This is what I notice in the logs based off my actions for padding 0 for all states

For rdp0

  • If rdp0 contains the focused window the the bar is loaded or when I change to a different window still on rdp0:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=121x24+900+0, falloff=0)
polybar|trace: bar: Received expose event
  • If I switch to rdp1 I see the following:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=132x24+894+0, falloff=0)
  • If I switch to a different window on rdp1:
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)

For rdp1

  • If rdp1 contains the focused window the the bar is loaded or when I change to a different window still on rdp1:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=77x24+922+0, falloff=0)
  • If I switch to rdp0 I see the following:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=88x24+916+0, falloff=0)
polybar|trace: bar: Received expose event
  • If I switch to a different window on rdp0:
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)

Padding 4

This is what I notice in the logs based off my actions for padding 4 for all states

For rdp0

  • If rdp0 contains the focused window the the bar is loaded or when I change to a different window still on rdp0:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
polybar|trace: bar: Received expose event
  • If I switch to rdp1 I see the following:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=352x24+784+0, falloff=0)
  • If I switch to a different window on rdp1:
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)

For rdp1

  • If rdp1 contains the focused window the the bar is loaded or when I change to a different window still on rdp1:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=429x24+746+0, falloff=0)
  • If I switch to rdp0 I see the following:
polybar|info:  module/i3: Rebuilding cache
polybar|info:  Redrawing bar window
polybar|trace: renderer: flush(2 geom=352x24+784+0, falloff=0)
polybar|trace: bar: Received expose event
  • If I switch to a different window on rdp0:
polybar|info:  module/i3: Rebuilding cache
polybar|trace: bar: Ignoring update (unchanged)

Final note, I tried this with 3 monitors with xrdp output as follows:

rdp0 connected primary 1920x1080+0+0 0mm x 0mm
rdp1 connected 1920x1080+1920+0 0mm x 0mm
rdp2 connected 1920x1080+3840+0 0mm x 0mm

I can confirm that this issue will happen on both of the 2 monitors without the focused window. I can provide more logs for this scenario if desired.

Was an issue with my config. Missed the visible option. May reopen to update documentation to explain that visible is the equivalent of the i3 "client.focused_inactive" state.