diff --git a/NEWS.md b/NEWS.md index 4216dad6..1ae97c51 100644 --- a/NEWS.md +++ b/NEWS.md @@ -9,7 +9,7 @@ The format is based on [Keep a Changelog] | Date | All Changes | wlroots version | lines-of-code | |------------|---------------|-----------------|---------------| -| 2025-09-15 | [unreleased] | 0.19.0 | 28686 | +| 2025-10-10 | [0.9.2] | 0.19.1 | 28818 | | 2025-08-02 | [0.9.1] | 0.19.0 | 28605 | | 2025-07-11 | [0.9.0] | 0.19.0 | 28586 | | 2025-05-02 | [0.8.4] | 0.18.2 | 27679 | @@ -39,6 +39,7 @@ The format is based on [Keep a Changelog] | 2021-03-05 | [0.1.0] | 0.12.0 | 4627 | [unreleased]: NEWS.md#unreleased +[0.9.2]: NEWS.md#092---2025-10-10 [0.9.1]: NEWS.md#091---2025-08-02 [0.9.0]: NEWS.md#090---2025-07-11 [0.8.4]: NEWS.md#084---2025-05-02 @@ -100,23 +101,35 @@ There are some regression warnings worth noting for the switch to wlroots 0.19: around a bug on the wlroots side which is expected to be fixed in wlroots `0.19.1` [#2887] +With wlroots compiled with libwayland (>= 1.24.0), there is an invisible margin +preventing pointer focus on some layer-shell surfaces including those created by +Gtk. In simple words, this is because libwayland now rounds floats a bit +differently [#3099]. There is a pending fix [wlroots-5159]. + [wlroots-4878]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4878 [wlroots-5098]:https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5098 +[wlroots-5159]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5159 [gtk-8792]: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8792 ## unreleased [unreleased-commits] +## 0.9.2 - 2025-10-10 + +[0.9.2-commits] + ### Added +- Allow `SnapToEdge` and `ToggleSnapToEdge` to combine two cardinal directions + with the config option `combine="yes|no"`. [#3081] @tokyo4j - Support `Border` context for mousebinds as an alias for `Top`...`BRCorner` to make configuration easier. @tokyo4j [#3047] - Add window-switcher mode with thumbnails. This can be enabled with: ``. @tokyo4j [#2981] - Add `toggle` option to `GoToDesktop` action. This has the effect of going back to the last desktop if already on the target. @RainerKuemmerle [#3024] -- Add `` to allow hiding titlebar +- Add `` to allow hiding titlebar when window is maximized. @CosmicFusion @tokyo4j [#3015] - Use client-send-to-menu as 'Workspace' submenu in built-in client-menu @johanmalm [#2995] @@ -126,6 +139,7 @@ There are some regression warnings worth noting for the switch to wlroots 0.19: [#2994] - Add `labnag` (a dialog client with message and buttons) and associated `` option in 'If' actions. @johanmalm @Consolatis @tokyo4j [#2699] +- Support config option `` @johanmalm [#3097] - Allow snapping to corner edges during interactive move with associated config options ``. @tokyo4j [#2885] - Support new values "up-left", "up-right", "down-left" and "down-right" with @@ -147,6 +161,7 @@ There are some regression warnings worth noting for the switch to wlroots 0.19: ### Fixed +- On detecting broken icon theme, fall back on 'hicolor' @Consolatis [#3126] - Restore initially-maximized window position after unplug/plug @tokyo4j [#3042] - Fix large client-side icon not being loaded when the rendered icon size is larger than icon sizes from the client. @tokyo4j [#3033] @@ -162,6 +177,27 @@ There are some regression warnings worth noting for the switch to wlroots 0.19: ### Changed +- Change default keybind `W-` to combine cardinal directions to support + resizing of windows to fill a quarter of an output. This only affects users + who do not use an `rc.xml` (thereby using default keybinds) or use the + `` option. Previous behavior can be restored by setting + `combine="no"` as shown below. [#3081] @tokyo4j + +``` + + + + + + + + + + + + +``` + - `Focus` and `Raise` on window border press because it is probably what most people expect and it makes the behavior consistent with that of Openbox. @johanmalm [#3039] [#3049] @@ -2337,7 +2373,8 @@ Compile with wlroots 0.12.0 and wayland-server >=1.16 ShowMenu [Keep a Changelog]: https://keepachangelog.com/en/1.0.0/ -[unreleased-commits]: https://github.com/labwc/labwc/compare/0.9.0...HEAD +[unreleased-commits]: https://github.com/labwc/labwc/compare/0.9.2...HEAD +[0.9.2-commits]: https://github.com/labwc/labwc/compare/0.9.1...0.9.2 [0.9.1-commits]: https://github.com/labwc/labwc/compare/0.9.0...0.9.1 [0.9.0-commits]: https://github.com/labwc/labwc/compare/0.8.4...0.9.0 [0.8.4-commits]: https://github.com/labwc/labwc/compare/0.8.3...0.8.4 @@ -2800,3 +2837,7 @@ Compile with wlroots 0.12.0 and wayland-server >=1.16 [#3043]: https://github.com/labwc/labwc/pull/3043 [#3047]: https://github.com/labwc/labwc/pull/3047 [#3049]: https://github.com/labwc/labwc/pull/3049 +[#3081]: https://github.com/labwc/labwc/pull/3081 +[#3097]: https://github.com/labwc/labwc/pull/3097 +[#3099]: https://github.com/labwc/labwc/pull/3099 +[#3126]: https://github.com/labwc/labwc/pull/3126 diff --git a/docs/labwc-config.5.scd b/docs/labwc-config.5.scd index d389c4cf..21ac2629 100644 --- a/docs/labwc-config.5.scd +++ b/docs/labwc-config.5.scd @@ -171,7 +171,6 @@ this is for compatibility with Openbox. ``` server - titlebar 0 no no @@ -188,11 +187,6 @@ this is for compatibility with Openbox. that it is not always possible to turn off client side decorations. Default is server. -** [titlebar|none] - Specify how server side decorations are shown for maximized windows. - *titlebar* shows titlebar above a maximized window. *none* shows no server - side decorations around a maximized window. Default is titlebar. - ** The distance in pixels between windows and output edges when using movement actions, for example MoveToEdge. Default is 0. @@ -603,6 +597,11 @@ extending outward from the snapped edge. Even when disabling server side decorations via ToggleDecorations, keep a small border (and resize area) around the window. Default is yes. +** [titlebar|none] + Specify how server side decorations are shown for maximized windows. + *titlebar* shows titlebar above a maximized window. *none* shows no server + side decorations around a maximized window. Default is titlebar. + ** [yes|no] Should drop-shadows be rendered behind windows. Default is no. diff --git a/docs/rc.xml.all b/docs/rc.xml.all index ed80fdf0..44ed984a 100644 --- a/docs/rc.xml.all +++ b/docs/rc.xml.all @@ -11,7 +11,6 @@ server - titlebar 0 no no @@ -45,6 +44,7 @@ 8 yes + titlebar no no diff --git a/meson.build b/meson.build index 0ac5cea1..d3ba14da 100644 --- a/meson.build +++ b/meson.build @@ -1,7 +1,7 @@ project( 'labwc', 'c', - version: '0.9.0', + version: '0.9.2', license: 'GPL-2.0-only', meson_version: '>=0.59.0', default_options: [ diff --git a/src/config/rcxml.c b/src/config/rcxml.c index 1353b3c2..4ed6bd6d 100644 --- a/src/config/rcxml.c +++ b/src/config/rcxml.c @@ -1083,12 +1083,6 @@ entry(xmlNode *node, char *nodename, char *content) } else { rc.xdg_shell_server_side_deco = true; } - } else if (!strcasecmp(nodename, "maximizedDecoration.core")) { - if (!strcasecmp(content, "titlebar")) { - rc.hide_maximized_window_titlebar = false; - } else if (!strcasecmp(content, "none")) { - rc.hide_maximized_window_titlebar = true; - } } else if (!strcmp(nodename, "gap.core")) { rc.gap = atoi(content); } else if (!strcasecmp(nodename, "adaptiveSync.core")) { @@ -1130,6 +1124,12 @@ entry(xmlNode *node, char *nodename, char *content) rc.corner_radius = atoi(content); } else if (!strcasecmp(nodename, "keepBorder.theme")) { set_bool(content, &rc.ssd_keep_border); + } else if (!strcasecmp(nodename, "maximizedDecoration.theme")) { + if (!strcasecmp(content, "titlebar")) { + rc.hide_maximized_window_titlebar = false; + } else if (!strcasecmp(content, "none")) { + rc.hide_maximized_window_titlebar = true; + } } else if (!strcasecmp(nodename, "dropShadows.theme")) { set_bool(content, &rc.shadows_enabled); } else if (!strcasecmp(nodename, "dropShadowsOnTiled.theme")) { diff --git a/src/view.c b/src/view.c index 792401cf..ddfe6b1e 100644 --- a/src/view.c +++ b/src/view.c @@ -2161,7 +2161,8 @@ view_snap_to_edge(struct view *view, enum lab_edge edge, view_set_shade(view, false); - if (lab_edge_is_cardinal(edge) && view->maximized == VIEW_AXIS_NONE) { + if (lab_edge_is_cardinal(edge) && view->maximized == VIEW_AXIS_NONE + && view->tiled != LAB_EDGE_CENTER) { enum lab_edge invert_edge = lab_edge_invert(edge); /* Represents axis of snapping direction */ enum lab_edge parallel_mask = edge | invert_edge;