Compare commits

...

4 commits

Author SHA1 Message Date
Johan Malm
70e5beb5ec build: bump version to 0.9.2
Some checks failed
labwc.github.io / notify (push) Has been cancelled
2025-10-10 19:53:23 +01:00
tokyo4j
d94e5da815 view: fix unexpected view->tiled with SnapToEdge against centered view
In 2ac4811, I was missing that windows can be tiled to "center".
As a result, after executing
`<action name="SnapToEdge" combined="yes" direction="left" />` against a
center-tiled window, `view->tiled` is set to `CENTER|LEFT`.
2025-10-10 19:48:42 +01:00
Johan Malm
e44a489530 NEWS.md: update notes for 0.9.2 2025-10-10 19:37:40 +01:00
tokyo4j
6cdfe32af0 rcxml: move <maximizedDecoration> from <core> to <theme> 2025-10-09 22:01:05 +01:00
6 changed files with 59 additions and 18 deletions

47
NEWS.md
View file

@ -9,7 +9,7 @@ The format is based on [Keep a Changelog]
| Date | All Changes | wlroots version | lines-of-code | | 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-08-02 | [0.9.1] | 0.19.0 | 28605 |
| 2025-07-11 | [0.9.0] | 0.19.0 | 28586 | | 2025-07-11 | [0.9.0] | 0.19.0 | 28586 |
| 2025-05-02 | [0.8.4] | 0.18.2 | 27679 | | 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 | | 2021-03-05 | [0.1.0] | 0.12.0 | 4627 |
[unreleased]: NEWS.md#unreleased [unreleased]: NEWS.md#unreleased
[0.9.2]: NEWS.md#092---2025-10-10
[0.9.1]: NEWS.md#091---2025-08-02 [0.9.1]: NEWS.md#091---2025-08-02
[0.9.0]: NEWS.md#090---2025-07-11 [0.9.0]: NEWS.md#090---2025-07-11
[0.8.4]: NEWS.md#084---2025-05-02 [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 around a bug on the wlroots side which is expected to be fixed in wlroots
`0.19.1` [#2887] `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-4878]: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4878
[wlroots-5098]:https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5098 [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 [gtk-8792]: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8792
## unreleased ## unreleased
[unreleased-commits] [unreleased-commits]
## 0.9.2 - 2025-10-10
[0.9.2-commits]
### Added ### 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 - Support `Border` context for mousebinds as an alias for `Top`...`BRCorner` to
make configuration easier. @tokyo4j [#3047] make configuration easier. @tokyo4j [#3047]
- Add window-switcher mode with thumbnails. This can be enabled with: - Add window-switcher mode with thumbnails. This can be enabled with:
`<windowSwitcher style="thumbnail">`. @tokyo4j [#2981] `<windowSwitcher style="thumbnail">`. @tokyo4j [#2981]
- Add `toggle` option to `GoToDesktop` action. This has the effect of going back - Add `toggle` option to `GoToDesktop` action. This has the effect of going back
to the last desktop if already on the target. @RainerKuemmerle [#3024] to the last desktop if already on the target. @RainerKuemmerle [#3024]
- Add `<core maximizedDecoration="titlebar|none"/>` to allow hiding titlebar - Add `<theme maximizedDecoration="titlebar|none"/>` to allow hiding titlebar
when window is maximized. @CosmicFusion @tokyo4j [#3015] when window is maximized. @CosmicFusion @tokyo4j [#3015]
- Use client-send-to-menu as 'Workspace' submenu in built-in client-menu - Use client-send-to-menu as 'Workspace' submenu in built-in client-menu
@johanmalm [#2995] @johanmalm [#2995]
@ -126,6 +139,7 @@ There are some regression warnings worth noting for the switch to wlroots 0.19:
[#2994] [#2994]
- Add `labnag` (a dialog client with message and buttons) and associated - Add `labnag` (a dialog client with message and buttons) and associated
`<prompt>` option in 'If' actions. @johanmalm @Consolatis @tokyo4j [#2699] `<prompt>` option in 'If' actions. @johanmalm @Consolatis @tokyo4j [#2699]
- Support config option `<core><promptCommand>` @johanmalm [#3097]
- Allow snapping to corner edges during interactive move with associated config - Allow snapping to corner edges during interactive move with associated config
options `<snapping><cornerRange>`. @tokyo4j [#2885] options `<snapping><cornerRange>`. @tokyo4j [#2885]
- Support new values "up-left", "up-right", "down-left" and "down-right" with - 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 ### Fixed
- On detecting broken icon theme, fall back on 'hicolor' @Consolatis [#3126]
- Restore initially-maximized window position after unplug/plug @tokyo4j [#3042] - Restore initially-maximized window position after unplug/plug @tokyo4j [#3042]
- Fix large client-side icon not being loaded when the rendered icon size is - Fix large client-side icon not being loaded when the rendered icon size is
larger than icon sizes from the client. @tokyo4j [#3033] 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 ### Changed
- Change default keybind `W-<arrow>` 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
`<keyboard><default/>` option. Previous behavior can be restored by setting
`combine="no"` as shown below. [#3081] @tokyo4j
```
<keybind key="W-Left">
<action name="SnapToEdge" direction="left" combine="no" />
</keybind>
<keybind key="W-Right">
<action name="SnapToEdge" direction="right" combine="no" />
</keybind>
<keybind key="W-Up">
<action name="SnapToEdge" direction="up" combine="no" />
</keybind>
<keybind key="W-Down">
<action name="SnapToEdge" direction="down" combine="no" />
</keybind>
```
- `Focus` and `Raise` on window border press because it is probably what most - `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. people expect and it makes the behavior consistent with that of Openbox.
@johanmalm [#3039] [#3049] @johanmalm [#3039] [#3049]
@ -2337,7 +2373,8 @@ Compile with wlroots 0.12.0 and wayland-server >=1.16
ShowMenu ShowMenu
[Keep a Changelog]: https://keepachangelog.com/en/1.0.0/ [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.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.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 [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 [#3043]: https://github.com/labwc/labwc/pull/3043
[#3047]: https://github.com/labwc/labwc/pull/3047 [#3047]: https://github.com/labwc/labwc/pull/3047
[#3049]: https://github.com/labwc/labwc/pull/3049 [#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

View file

@ -171,7 +171,6 @@ this is for compatibility with Openbox.
``` ```
<core> <core>
<decoration>server</decoration> <decoration>server</decoration>
<maximizedDecoration>titlebar</maximizedDecoration>
<gap>0</gap> <gap>0</gap>
<adaptiveSync>no</adaptiveSync> <adaptiveSync>no</adaptiveSync>
<allowTearing>no</allowTearing> <allowTearing>no</allowTearing>
@ -188,11 +187,6 @@ this is for compatibility with Openbox.
that it is not always possible to turn off client side decorations. that it is not always possible to turn off client side decorations.
Default is server. Default is server.
*<core><maximizedDecoration>* [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.
*<core><gap>* *<core><gap>*
The distance in pixels between windows and output edges when using The distance in pixels between windows and output edges when using
movement actions, for example MoveToEdge. Default is 0. 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, Even when disabling server side decorations via ToggleDecorations,
keep a small border (and resize area) around the window. Default is yes. keep a small border (and resize area) around the window. Default is yes.
*<theme><maximizedDecoration>* [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.
*<theme><dropShadows>* [yes|no] *<theme><dropShadows>* [yes|no]
Should drop-shadows be rendered behind windows. Default is no. Should drop-shadows be rendered behind windows. Default is no.

View file

@ -11,7 +11,6 @@
<core> <core>
<decoration>server</decoration> <decoration>server</decoration>
<maximizedDecoration>titlebar</maximizedDecoration>
<gap>0</gap> <gap>0</gap>
<adaptiveSync>no</adaptiveSync> <adaptiveSync>no</adaptiveSync>
<allowTearing>no</allowTearing> <allowTearing>no</allowTearing>
@ -45,6 +44,7 @@
</titlebar> </titlebar>
<cornerRadius>8</cornerRadius> <cornerRadius>8</cornerRadius>
<keepBorder>yes</keepBorder> <keepBorder>yes</keepBorder>
<maximizedDecoration>titlebar</maximizedDecoration>
<dropShadows>no</dropShadows> <dropShadows>no</dropShadows>
<dropShadowsOnTiled>no</dropShadowsOnTiled> <dropShadowsOnTiled>no</dropShadowsOnTiled>
<font place="ActiveWindow"> <font place="ActiveWindow">

View file

@ -1,7 +1,7 @@
project( project(
'labwc', 'labwc',
'c', 'c',
version: '0.9.0', version: '0.9.2',
license: 'GPL-2.0-only', license: 'GPL-2.0-only',
meson_version: '>=0.59.0', meson_version: '>=0.59.0',
default_options: [ default_options: [

View file

@ -1083,12 +1083,6 @@ entry(xmlNode *node, char *nodename, char *content)
} else { } else {
rc.xdg_shell_server_side_deco = true; 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")) { } else if (!strcmp(nodename, "gap.core")) {
rc.gap = atoi(content); rc.gap = atoi(content);
} else if (!strcasecmp(nodename, "adaptiveSync.core")) { } else if (!strcasecmp(nodename, "adaptiveSync.core")) {
@ -1130,6 +1124,12 @@ entry(xmlNode *node, char *nodename, char *content)
rc.corner_radius = atoi(content); rc.corner_radius = atoi(content);
} else if (!strcasecmp(nodename, "keepBorder.theme")) { } else if (!strcasecmp(nodename, "keepBorder.theme")) {
set_bool(content, &rc.ssd_keep_border); 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")) { } else if (!strcasecmp(nodename, "dropShadows.theme")) {
set_bool(content, &rc.shadows_enabled); set_bool(content, &rc.shadows_enabled);
} else if (!strcasecmp(nodename, "dropShadowsOnTiled.theme")) { } else if (!strcasecmp(nodename, "dropShadowsOnTiled.theme")) {

View file

@ -2161,7 +2161,8 @@ view_snap_to_edge(struct view *view, enum lab_edge edge,
view_set_shade(view, false); 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); enum lab_edge invert_edge = lab_edge_invert(edge);
/* Represents axis of snapping direction */ /* Represents axis of snapping direction */
enum lab_edge parallel_mask = edge | invert_edge; enum lab_edge parallel_mask = edge | invert_edge;