aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-11-05draw_util: refactor surface_initialized macro into functionMichael Stapelberg
This makes it possible to set a breakpoint in gdb on a line in the function and get a backtrace of un-initialized surface access.
2022-11-05check-spelling: add another false positive (#5247)Michael Stapelberg
2022-11-01meson.build: include new gaps1920.png file in dist tarball (#5242)Michael Stapelberg
2022-11-01config.spec: add missing smart_gaps inverse_outer commentMichael Stapelberg
2022-11-01refactor cmd_gaps to get rid of all #defineMichael Stapelberg
I’m still not 100% happy with how the function turned out (it still does too many things at once), but this seems like an improvement — at least reading and navigating the code with LSP now works better.
2022-11-01t/319-gaps.t: also test the gaps commandMichael Stapelberg
2022-11-01move gaps-specific logic out of con.c and render.c into gaps.cMichael Stapelberg
2022-11-01gaps: allow optional px suffixMichael Stapelberg
2022-11-01add basic gaps testMichael Stapelberg
2022-11-01userguide: document gaps config directive and gaps commandMichael Stapelberg
2022-11-01gaps: use logical_px() to work correctly on hi-dpi monitorsMichael Stapelberg
2022-11-01Fix config.spec commentMichael Stapelberg
2022-11-01refactor render_con() global parameter into should_inset_con()Michael Stapelberg
This bundles the logic all in one place and thereby makes it a little easier to understand.
2022-11-01remove dead code: window_rect is overwritten a few lines belowMichael Stapelberg
2022-11-01Merge gaps support as-isMichael Stapelberg
This code was copied over unmodified from https://github.com/Airblader/i3-gaps. I have split out the differences between i3-gaps and i3 into three areas: 1. Gaps 2. i3bar height 3. rgba colors
2022-10-30implement bar { padding } config directiveMichael Stapelberg
related to https://github.com/i3/i3/issues/3724 related to https://github.com/i3/i3/pull/4288 fixes https://github.com/i3/i3/issues/3721
2022-10-30add test for bar { height }Michael Stapelberg
2022-10-30Merge support for the bar { height } option as-is from i3-gapsMichael Stapelberg
related to https://github.com/i3/i3/issues/3724 related to https://github.com/i3/i3/issues/3721 In a follow-up commit, we can evolve this into the padding directive as discussed on issue #3721.
2022-10-30docs/userguide: fix asciidoc block syntax (for asciidoctor)Michael Stapelberg
asciidoctor is a bit stricter in what it accepts: the leading and trailing lines need to have the exact same number of characters, and apparently there needs to be a blank line after the trailing delimiter line.
2022-10-30delete old release notesMichael Stapelberg
2022-10-29i3-dmenu-desktop: ignore SIGPIPE when writing to dmenu (#5228)Orestis Floros
Fixes broken test
2022-10-24debian: update changelogMichael Stapelberg
2022-10-24Update debian/changelogMichael Stapelberg
2022-10-24Merge branch 'stable' into nextMichael Stapelberg
2022-10-24Merge branch 'release-4.21.1'Michael Stapelberg
2022-10-24Restore non-git version suffixMichael Stapelberg
2022-10-24release i3 4.21.14.21.1Michael Stapelberg
2022-10-24tiling drag: only start when there are drop targets (#5213)Michael Stapelberg
This prevents potentially confusing drag & drop on fullscreen containers and only-containers on workspaces. fixes https://github.com/i3/i3/issues/5184
2022-10-24tiling drag: ignore scratchpad windows when locating drop targets (#5211)Michael Stapelberg
fixes https://github.com/i3/i3/issues/5170
2022-10-24make tiling drag configurableMichael Stapelberg
fixes https://github.com/i3/i3/issues/5155
2022-10-24tiling drag: left-click needs threshold, mod-click doesn’tMichael Stapelberg
related to https://github.com/i3/i3/issues/5155
2022-10-24increase drag threshold, run it through logical_px()Michael Stapelberg
related to https://github.com/i3/i3/issues/5155
2022-10-24tiling drag: fix cursor (wrong argument passed) (#5207)Michael Stapelberg
Currently, the cursor is XCURSOR_CURSOR_TOP_RIGHT_CORNER (== BORDER_TOP), but the intended cursor was XCURSOR_CURSOR_MOVE. noticed this as part of https://github.com/i3/i3/issues/5198
2022-10-24tiling drag: allow click immediately, to focus on decoration click (#5206)Michael Stapelberg
With the introduction of tiling drag, i3’s click behavior in window decorations changed: before tiling drag, in a tabbed or stacked container, a window would be focused/raised on mouse down. After tiling drag, on mouse up. This commit sends XCB_ALLOW_REPLAY_POINTER before running the tiling drag code, thereby restoring the focus/raise-on-mouse-down behavior without affecting the tiling drag operation. fixes https://github.com/i3/i3/issues/5169
2022-10-24Escape ~ to prevent interpretation as subscript. (#5168)bodea
2022-10-24Fix segfault during config validation (#5167) (#5173)Matias Goldfeld
Configs with bar blocks will segfault during validation since they copy the i3 font which is not set during validation.
2022-10-24Raise floating windows when their border is clicked (#5196)Tudor Brindus
This logic already existed for `floating_drag_window`, but we need it for `floating_resize_window` too. Fixes #5195.
2022-10-24Fix i3-dmenu-desktop quoting (#5162)Michael Stapelberg
Commit 70f23caa9a18afc146f696fdf7d2481e5f7f0101 introduced new issues. Instead of distinguishing " and \, as that commit attempted, let’s instead keep the level of escaping by escaping each backslash, just like each double quote. I tested this with: # recommended way to quote $ and " in quoted arguments, not ambiguous Exec=/tmp/logargs "hello \\$PWD \\"and\\" more" # permitted way to quote $ and " in quoted arguments, but ambiguous Exec=/tmp/logargs "hello \$PWD \"and\" more" # permitted way to quote arguments, slightly unusual to quote first arg Exec="/tmp/logargs" hey # a complicated shell expression, not ambiguous Exec=sh -c "if [ -n \\"\\$*\\" ]; then exec /tmp/logargs --alternate-editor= --display=\\"\\$DISPLAY\\" \\"\\$@\\"; else exec /tmp/logargs --alternate-editor= --create-frame; fi" placeholder %F related to https://github.com/i3/i3/issues/4697 (electrum, original) related to https://github.com/i3/i3/issues/5152 (phpstorm, breakage) related to https://github.com/i3/i3/issues/5156 (emacsclient, breakage)
2022-10-24Fix motif logic for new floatsOrestis Floros
- manage.c still used wrong `motif_border_style == BS_NORMAL` - container must be set to floating first for correct code path and correct max_user_border_style to be used in con_set_border_style - Motif test now includes default_floating_border
2022-10-24Motif hints: Respect maximum border style configuration set by userOrestis Floros
Context: Motif hints [1] allow applications to request specific window manager frame decorations. Most applications like alacritty, chromium, and godot, use the hints as a binary flag, setting or un-setting `MWM_DECOR_ALL`. Previously [2], we had disallowed applications to set the "normal" border style through motif hints. This effectively meant that users that had set `default_border pixel` would not see applications spawning with normal decorations [3]. However, that meant that applications like godot [4] could not toggle their border between none and normal so the behaviour changed with v4.21 [5]. That change however also allowed applications to override the default none/pixel border style the user set. For example, alacritty can be configured to either have all or no decorations [6] and they always set the motif hint on startup, completely overriding i3 user's preference: 1. If decorations are disabled with alacritty's config then they will override `default_border normal` and no title will be used. 2. If decorations are enabled (also the default behavior) with alacritty's config then they will override `default_border pixel` and a title will be used. This patch redefines how we interpret motif hints. When a client sets `MWM_DECOR_ALL`, we interpret it as "the maximum decoration the user has allowed for this window". I.e., if a client was all decorations and the user expects the window to not have a title, we don't include the title in "all" decorations. The user's preference is determined by these: 1. For new tiling windows, as set by `default_border` 2. For new floating windows, as set by `default_floating_border` 3. For all windows that the user runs the `border` command, whatever is the result of that command for that window. Example: - User opens new tiling window with `default_border pixel` => maximum decoration = PIXEL - Window requests all/title decorations => i3 enforces the user maximum decoration, PIXEL (no change) - Window requests no decorations => i3 accepts it and sets border to NONE, maximum decoration remains PIXEL - User toggles the border, next style is NORMAL => maximum decoration is now NORMAL - Window requests no decorations => i3 accepts it and sets border to NONE - Window requests all/title decorations => i3 accepts it and sets the maximum border, NORMAL - User toggles the border, next style is NONE => maximum decoration is now NONE - Window requests all/title decorations => i3 enforces the user maximum decoration, NONE (no change) With this, we will still allow behaviour where windows can toggle their border style with motif hints [4][7]. Reference/footnotes: [1]: https://linux.die.net/man/3/vendorshell [2]: https://github.com/i3/i3/pull/2386 [3]: Notice how there is apparently a gap because `default border none` settings would not be respected if an application wanted just "border" decorations but this was never reported, probably because of the rare conjunction of applications requesting that and users defaulting to none borders. [4]: https://github.com/godotengine/godot/issues/40037 [5]: https://github.com/i3/i3/pull/5135 [6]: Set by an underlying library here: https://github.com/rust-windowing/winit/blob/fafdedfb7d3a7370ca4b01108f7713b685633164/src/platform_impl/linux/x11/util/hint.rs#L113-L142 called by alactitty here: https://github.com/alacritty/alacritty/blob/4ddb608563d985060d69594d1004550a680ae3bd/alacritty/src/display/window.rs#L341 [7]: https://github.com/i3/i3/issues/3678 Closes #3678 Fixes #5149
2022-10-24Order border_style_t enum according to amount of decorationOrestis Floros
The only place where this matters is with command `border toggle` which cycles through them. Luckily, the behaviour does not change because the order is the same with the new enum.
2022-10-24Adds sticky field to get_tree reply in ipc docErich Heine
2022-10-24Update actions/checkout to v3 (#5226)Orestis Floros
Fixes #5225
2022-10-24i3-dmenu-desktop test: Do not autostart i3 (#5224)Orestis Floros
This actually fixes a hang that happens on my machine for some reason. Regardless, starting i3 is not necessary for this test.
2022-10-18tiling drag: only start when there are drop targets (#5213)Michael Stapelberg
This prevents potentially confusing drag & drop on fullscreen containers and only-containers on workspaces. fixes https://github.com/i3/i3/issues/5184
2022-10-16tiling drag: ignore scratchpad windows when locating drop targets (#5211)Michael Stapelberg
fixes https://github.com/i3/i3/issues/5170
2022-10-16make tiling drag configurableMichael Stapelberg
fixes https://github.com/i3/i3/issues/5155
2022-10-16tiling drag: left-click needs threshold, mod-click doesn’tMichael Stapelberg
related to https://github.com/i3/i3/issues/5155
2022-10-16increase drag threshold, run it through logical_px()Michael Stapelberg
related to https://github.com/i3/i3/issues/5155
2022-10-16tiling drag: fix cursor (wrong argument passed) (#5207)Michael Stapelberg
Currently, the cursor is XCURSOR_CURSOR_TOP_RIGHT_CORNER (== BORDER_TOP), but the intended cursor was XCURSOR_CURSOR_MOVE. noticed this as part of https://github.com/i3/i3/issues/5198