i3: `default_border pixel` doesn't hide title bars after upgrading to 4.21
I’m submitting a…
[x] Bug [ ] Feature Request [ ] Documentation Request [ ] Other (Please describe in detail)
Current Behavior
Title bar is shown for a single window on a workspace, even when default_border pixel 1
and default_floating_border pixel 1
are set.
Expected Behavior
Before upgrading to 4.21, opening up a single window on a workspace with default_border pixel 1
and default_floating_border pixel 1
will not show the title bar.
Reproduction Instructions
With default_border pixel 1
and default_floating_border pixel 1
, open a single window (Chrome, VSCode, etc.) on a new workspace.
Environment
Output of i3 --moreversion 2>&-
:
Binary i3 version: 4.21 (2022-09-21) © 2009 Michael Stapelberg and contributors Running i3 version: 4.21 (2022-09-21) (pid 1160) Loaded i3 config: /home/jun/.config/i3/config (main) (last modified: Thu 22 Sep 2022 14:32:17 +08, 71 seconds ago) The i3 binary you just called: /usr/bin/i3 The i3 binary you are running: i3
Config file
set $mod Mod4
default_border pixel 1
default_floating_border pixel 1
hide_edge_borders smart
font pango:DejaVu Sans Mono Nerd Font 11
floating_modifier $mod
bindsym $mod+Shift+q kill
bindsym $mod+j focus left
bindsym $mod+k focus down
bindsym $mod+l focus up
bindsym $mod+semicolon focus right
bindsym $mod+Left focus left
bindsym $mod+Down focus down
bindsym $mod+Up focus up
bindsym $mod+Right focus right
bindsym $mod+Shift+j move left
bindsym $mod+Shift+k move down
bindsym $mod+Shift+l move up
bindsym $mod+Shift+semicolon move right
bindsym $mod+Shift+Left move left
bindsym $mod+Shift+Down move down
bindsym $mod+Shift+Up move up
bindsym $mod+Shift+Right move right
bindsym $mod+h split h
bindsym $mod+v split v
bindsym $mod+f fullscreen toggle
bindsym $mod+s layout stacking
bindsym $mod+w layout tabbed
bindsym $mod+e layout toggle split
bindsym $mod+Shift+space floating toggle
bindsym $mod+space focus mode_toggle
bindsym $mod+a focus parent
#bindsym $mod+d focus child
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+Shift+1 move container to workspace number $ws1; workspace $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2; workspace $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3; workspace $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4; workspace $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5; workspace $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6; workspace $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7; workspace $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8; workspace $ws8
bindsym $mod+Shift+c reload
bindsym $mod+Shift+r restart
bindsym $mod+Shift+e exec "i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -B 'Yes, exit i3' 'i3-msg exit'"
mode "resize" {
bindsym j resize shrink width 10 px or 10 ppt
bindsym k resize grow height 10 px or 10 ppt
bindsym l resize shrink height 10 px or 10 ppt
bindsym semicolon resize grow width 10 px or 10 ppt
bindsym Left resize shrink width 10 px or 10 ppt
bindsym Down resize grow height 10 px or 10 ppt
bindsym Up resize shrink height 10 px or 10 ppt
bindsym Right resize grow width 10 px or 10 ppt
bindsym Return mode "default"
bindsym Escape mode "default"
bindsym $mod+r mode "default"
}
bindsym $mod+r mode "resize"
- Linux Distribution & Version: Arch Linux, Linux 5.19.9 - Are you using a compositor (e.g., xcompmgr or compton): No
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 77
- Comments: 50 (23 by maintainers)
Links to this issue
Commits related to this issue
- i3: Set default border to 2px using `for_window [all]` as well i3 4.21 changed behaviour and now respects the clients wishes in whether to render decorations, which overrides `default_borders`. Usin... — committed to kyrias/dotfiles by kyrias 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to orestisfl/i3 by orestisfl 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to orestisfl/i3 by orestisfl 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to orestisfl/i3 by orestisfl 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to orestisfl/i3 by orestisfl 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to orestisfl/i3 by orestisfl 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to orestisfl/i3 by orestisfl 2 years ago
- i3wm: workaround title bars after upgrading to 4.21 See https://github.com/i3/i3/issues/5149 — committed to alepez/dotfiles by alepez 2 years ago
- backport upstream fix for a title bar regression in 4.21 https://github.com/i3/i3/issues/5149 ok sthen — committed to openbsd/ports by deleted user 2 years ago
- fix(i3): address title bar hiding issue in i3 4.21 until next release Revert when next release incorporating i3/i3#5158 is released. References: i3/i3#5149 References: i3/i3#5158 Signed-off-by: Fle... — committed to fnichol/dotx by fnichol 2 years ago
- i3: add temporary border fix https://github.com/i3/i3/issues/5149 https://github.com/fnichol/dotx/commit/1b8485885f58a419ee5719200399ee6e7f9a7d54 — committed to roosta/etc by roosta 2 years ago
- :poop: Temp fix for windows borders See: https://github.com/i3/i3/issues/5149 — committed to guemidiborhane/dotfiles by guemidiborhane 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to i3/i3 by orestisfl 2 years ago
- Add work around for border issue https://github.com/i3/i3/issues/5149 — committed to regolith-linux/regolith-i3-config by deleted user 2 years ago
- Add work around for border issue https://github.com/i3/i3/issues/5149 — committed to regolith-linux/regolith-i3-config by deleted user 2 years ago
- Revert "Fix unwanted title bars appearing" This reverts commit 63a7b464c6f6e76e3d7d0247a2e5ac7a732252b4. This was a workaround for a bug in i3 which has since been fixed with the 4.2.1 release. htt... — committed to ellsclytn/dotfiles by ellsclytn 2 years ago
- i3wm: workaround title bars after upgrading to 4.21 See https://github.com/i3/i3/issues/5149 — committed to alepez/dotfiles by alepez 2 years ago
- Add work around for border issue https://github.com/i3/i3/issues/5149 — committed to regolith-linux/regolith-i3-config by deleted user 2 years ago
- Motif hints: Respect maximum border style configuration set by user Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty,... — committed to rsgowman/i3 by orestisfl 2 years ago
Also seeing this while using Alacritty.
Please use the emojis to indicate agreement so that we don’t get an email notification.
We usually act fast on regressions, I’ll investigate when I get home today.
We’ll do a bugfix release once we have a good solution for issue #5155. Until then, please stick to i3 v4.20, or use the latest version of the
next
branch.I’m also seeing this issue with alacritty, freerdp, zoom, okular, obs, helvum, google chrome, etc. Does it not make sense to ignore what a window is asking if default_border is set? Otherwise a lot of rules will have to be written for all affected programs.
Edit: freerdp uses no toolkit, helvum uses gtk and okular uses qt. I don’t think this issue is related to a specific toolkit.
I have this issue as well (with a very similar setup as yours). I noticed that this applies to Electron or Chromium based applications only.
See this image: https://files.catbox.moe/y9nz2q.webp
Discord (top left) and Element (top right) have their title bars while st (bottom left) and Firefox (bottom right) do not have these title bars.
I installed Chromium and observed the same behavior.
for_window [all] border pixel 0
is working fine for meFor anyone who relies on borders and/or
hide_edge_borders both
like me. It seems the magic is to have a border defining rule, you don’t have to set it to 0 to lose your borders altogether, this confused me at first.My section to set borders now ended up like this ↓
ADDENDUM: due to other issues I ended up downgrading (
4.20.1
seems to be the last working one), for any Arch users who want to do the same: https://archive.archlinux.org/packages/i/i3-wm/i3-wm-4.20.1-2-x86_64.pkg.tar.zst install viapacman -U ...
and ignore it in/etc/pacman.conf
viaIgnorePkg = i3-wm
for the time beingyup, same here, on chromium (and electron-based apps) and a lot of QT-based apps (teelgram desktop, dolphin, kdeconnect, qt5ct and qt6ct, …)
Yeah, this totally deserves some attention
I’m on a fully up-to-date archlinux system
For now, a working full workaround is using
for window [all] default_border pixel 5
I have opened https://github.com/i3/i3/pull/5158 that should fix this. Commit message includes elaborate explanation of the issue.
If you are affected by this please do try to run the patch locally and see if it fixes your issue for the applications you use.
That’s an excellent tip, thank you very much guys! I wasn’t aware that you can force border style on all apps like that.
That fixed the title bar issue with 4.21, and at the same time fixed the long-time annoyance of i3 respecting the ‘I’ll-handle-my-own-decorations-go-away’ window hints used by gtk3 and other CSD apps.
I think i3-4.21 is mostly fine as it is now, no changes required. I3, like all good window managers, should always have a way to override all the app developers incomprehensible windowing ideas. (I’m sorry if the wording in the original comment offended someone, it wasn’t my intention…)
Well, it’s not only Chromium. I also have this problem in the Telegram Desktop client (it doesn’t use Electron) with the “Use system window frame” option enabled.
This appears to affect a lot of users, so it’s certainly something to think about carefully. Where exactly is the issue here then – is it in applications, or some toolkit? Can we see if we can report it upstream?
That works. Here is gist of PKGBUILD https://gist.github.com/WeaponMan/b7cfba91cf19cbed6704d0ad485defe4
Niether of these “workarounds” work with wine windows. for example Classic WoW has always bar on top. Will have to downgrade,
Given the amount of applications and users impacted by this change, and the fact that the bug that was fixed here was minor, I would lean towards reverting the fix, at least for the time being.
However, I’m curious how this can be explained:
The option is always set, it just defaults to something.
We don’t want to solve such situations with more config.
Maybe they should add an option in the config so the user can decide if the decorations should be ignored. For example in my case I want to have titlebars on floating windows and no titlebars on anything else and with the current behavior I’d have to manually add so many programs to the config file
There isn’t really anything to report here, chromium asks for all decorations and we give them to it. We can either revert to ignoring these hints or accept the new behavior.
It’s not fair you guys look at free voluntary work on such urgent basis and don’t even have a way to sponsor you. Id like to buy you a coffee.
The title bar being hidden as a result of setting default_border pixel is nice but is not a bug that is considered a feature in the end? Perhaps adding a title_bar related config would be better and clearer.
Hmm, interesting, under openbox they use different motifs:
Workaround is to force it in the config:
I know this is backwards-incompatible behavior but it’s actually correct now.
@Airblader any thoughts?
I assume you mean the official packages? Then yes, you need
i3-git
.This is not a forum to attack other open source developers. Keep it civil.
Could it be that this is a window-manager specific behavior in chrome? I have certainly seen code in chrome that is aware of which window manager it runs under, and perhaps an i3-specific behavior was added?
I don’t understand how? They want all decorations, they’ve always had been asking for them but we didn’t respect them before.