1 Commits

Author SHA256 Message Date
54ed9a7fa2 Fix layershell unmap segfault when no outputs left (boo#1254386, upstream gh#labwc/labwc#2576)
* Backported 2577.patch from upstream
2025-12-13 19:36:58 +01:00
7 changed files with 49 additions and 191 deletions

31
2577.patch Normal file
View File

@@ -0,0 +1,31 @@
From 3b033dced78fe6e04a739f905e654c0f278a7481 Mon Sep 17 00:00:00 2001
From: Consolatis <35009135+Consolatis@users.noreply.github.com>
Date: Wed, 12 Feb 2025 15:14:16 +0100
Subject: [PATCH] src/layers: handle unmap without any outputs left
---
src/layers.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/layers.c b/src/layers.c
index fc0b2b6ff2..6ce9527dba 100644
--- a/src/layers.c
+++ b/src/layers.c
@@ -136,6 +136,9 @@ try_to_focus_next_layer_or_toplevel(struct server *server)
{
struct seat *seat = &server->seat;
struct output *output = output_nearest_to_cursor(server);
+ if (!output) {
+ goto no_output;
+ }
enum zwlr_layer_shell_v1_layer overlay = ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY;
enum zwlr_layer_shell_v1_layer top = ZWLR_LAYER_SHELL_V1_LAYER_TOP;
@@ -169,6 +172,7 @@ try_to_focus_next_layer_or_toplevel(struct server *server)
* Unfocus the current layer-surface and focus the topmost toplevel if
* one exists on the current workspace.
*/
+no_output:
if (seat->focused_layer) {
seat_set_focus_layer(seat, NULL);
}

3
labwc-0.8.1.tar.gz Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:8e510655cf0c84875c541f4afeb636e707d365210993ad22d64d8bc3108a3433
size 458858

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:38d273faa4e021b9f99e1bf1a5f4bf881cc6a592e00c7b3426b37c0a0b67d126
size 541257

View File

@@ -1,176 +1,8 @@
-------------------------------------------------------------------
Fri Dec 19 22:40:00 UTC 2025 - Muhammad Akbar Yanuar Mantari <mantarimay@pm.me>
Sat Dec 13 18:19:55 UTC 2025 - Lucas Sanchez Sagrado <lucsansag@gmail.com>
- Update to version 0.9.3:
+ Added
- `<windowSwitcher order="focus|age"/>` to sort windows
by focus or age
- New snapping config:
`<snapping><range inner="" outer="">`
- `direction` option for `Resize` action
(up-left, right, down, etc.)
- `sendEventsMode` option to disable keyboard input
- Window switcher OSD options:
+ `thumbnailLabelFormat`
+ `output="all|focused|cursor"`
- Click-to-focus in window switcher OSD
- Support for `xdg-dialog` protocol
- `--keyboard-focus` option for labnag
- Option to unshade windows during window switching
+ Changed
- Alt-Tab now selects the previously focused window
- Deprecated old `<snapping><range>` syntax
- Refactored window switcher configuration
- OSD placement now centered on output
+ Fixed
- Desktop files with dots in filenames
- Incorrect cursor motion from absolute events
- Mouse issues with constrained surfaces
- XCB race between Raise and input
- Window switcher layout and geometry issues
-------------------------------------------------------------------
Sat Oct 11 22:27:04 UTC 2025 - Muhammad Akbar Yanuar Mantari <mantarimay@pm.me>
- Update to version 0.9.2:
+ Added
- Allow `SnapToEdge` and `ToggleSnapToEdge` to combine two
cardinal directions with the config option
`combine="yes|no"`.
- Support `Border` context for mousebinds as an alias for
`Top`...`BRCorner` to make configuration easier.
- Add window-switcher mode with thumbnails. This can be
enabled with: `<windowSwitcher style="thumbnail">`.
- Add `toggle` option to `GoToDesktop` action. This has the
effect of going back to the last desktop if already on
the target.
- Add `<theme maximizedDecoration="titlebar|none"/>` to
allow hiding titlebar when window is maximized.
- Use client-send-to-menu as 'Workspace' submenu in built-in
client-menu.
- Allow overwriting submenu icon to increase flexibility
and enhance Openbox compatibility.
- Allow client-{list-combined,send-to}-menu as submenu of
static menu.
- Add `labnag` (a dialog client with message and buttons)
and associated `<prompt>` option in 'If' actions.
- Support config option `<core><promptCommand>`.
- Allow snapping to corner edges during interactive move
with associated config options `<snapping><cornerRange>`.
- Support new values "up-left", "up-right", "down-left"
and "down-right" with `<action name="(Toggle)SnapToEdge"
direction="[value]">` and `<query tiled="[value]">`.
- XML parsing improvements:
- Support nested `If` and `ForEach` actions
- Parse CDATA as text all nodes
- Remove ordering constraint of attributes in
`<keybind>`, `<mousebind>` and `<windowRule>`
- `If` actions now work for menus
- For menus, the `name` argument no longer has to be the
first argument of `<action>`; and the `label` argument
no longer has to be the first argument of `<item>`
- Toggle mousebinds with the `ToggleKeybinds` action
- Add support for direction value 'any' with tiled queries.
This allows users to query for any snap directions
without using multiple query statements
+ Fixed
- On detecting broken icon theme, fall back on 'hicolor'.
- Restore initially-maximized window position after
unplug/plug.
- Fix large client-side icon not being loaded when the
rendered icon size is larger than icon sizes from the
client.
- Improve debug logging for configuring input devices.
- Fix false positives when matching desktop entries.
- Prevent accidental downcasting of scale in
scaled-icon-buffer to avoid blurry icons on non-integer
scales and a cairo assert when using a output scale < 1.
- Fix xdg-shell windows moving between outputs due to
configure timeout.
- Fix segfault with toplevel `<separator>` in `menu.xml`.
- Prevent hi-res mice triggering scroll actions too often.
+ 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` or use the `<keyboard><default/>` option.
Previous behavior can be restored by setting
`combine="no"`.
- `Focus` and `Raise` on window border press to align with
Openbox behavior.
- On interactive resize, only un-maximize the axis/axes
that are being resized.
- Change theme setting `osd.window-switcher.*` to
`osd.window-switcher.style-classic.*`. Backward
compatibility is preserved.
- In client-list menu, add brackets around the titles of
any minimised windows.
- Respect client-initiated window resize of non-maximized
axis, for example remember the width of
vertically-maximized window resizing itself
horizontally.
- Remember position of window along non-maximized axis
during interactive move.
- Restore default libinput device values on reconfigure
with empty value.
- Change `If` action when used without a focused window to
execute the `<else>` branch (previously it was just
ignored).
- Make `autoEnableOutputs=no` apply only to drm outputs.
- Take into account `<core><gap>` for edge and region
overlays.
-------------------------------------------------------------------
Sat Aug 2 20:30:16 UTC 2025 - Muhammad Akbar Yanuar Mantari <mantarimay@pm.me>
- Update to version 0.9.1:
+ This is an earlier-than-usual release containinig bug fixes
only:
- Prevent interaction with un-initialized xdg-shell windows
after unmap to fix a bug exposed by wlroots-0.19.0 resulting
in a compositor crash in certain (unusual) circumstances
- Fix double-free in img_svg_render() failure path
- Fix swapped width/height in XWayland client _NET_WM_ICON
stride calculation
-------------------------------------------------------------------
Sat Jul 12 11:26:44 UTC 2025 - Muhammad Akbar Yanuar Mantari <mantarimay@pm.me>
- Update to version 0.9.0:
+ The main focus has been to port labwc to wlroots 0.19 and fix
associated issues. There is a regression warning worth noting
for the switch to wlroots 0.19:
- Menu item can no longer be activated in any Gtk applications
with a single press-drag-release mouse action.
- VR headset support is disabled when compiled with wlroots
0.19.0 to work around a bug on the wlroots side which is
expected to be fixed in wlroots 0.19.1
+ Read completely changelog on NEWS.md
+ Change pkgconfig(wlroots-0.18) BuildRequires to
pkgconfig(wlroots-0.19)
+ Fix all xdg-portal open if open thunar (labwc only need wl+gtk)
- Update libsfdo to version 0.1.4:
+ sfdo-version.h with macros indicating libsfdo version.
+ More descriptive libsfdo-desktop-file errors.
+ libsfdo-icon loader is slightly more robust now.
+ Documentation improvements.
-------------------------------------------------------------------
Sat May 3 11:00:35 UTC 2025 - Muhammad Akbar Yanuar Mantari <mantarimay@pm.me>
- Update to version 0.8.4
* This release predominantly consists of bug-fixes, code
simplification and usability improvements, read completely on
NEWS.md.
* Add new features the most noteworthy is the addition of icons
support in the window-switcher and client-list-combined-menu.
-------------------------------------------------------------------
Sat Feb 22 02:21:14 UTC 2025 - Muhammad Akbar Yanuar Mantari <mantarimay@pm.me>
- Update to version 0.8.3
* Support for the ext-workspace protocol.
* Menu enhancements including icons and dynamic root-menus.
- Fix layershell unmap segfault when no outputs left (boo#1254386, upstream gh#labwc/labwc#2576)
* Backported 2577.patch from upstream
-------------------------------------------------------------------
Fri Oct 25 20:07:15 UTC 2024 - Muhammad Akbar Yanuar Mantari <mantarimay@pm.me>

View File

@@ -1,7 +1,6 @@
#
# spec file for package labwc
#
# Copyright (c) 2025 mantarimay
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
@@ -22,15 +21,17 @@
%define swname wlroots
%define swver 0.17.4
%define slname libsfdo
%define slver 0.1.4
%define slver 0.1.3
Name: labwc
Version: 0.9.3
Version: 0.8.1
Release: 0
Summary: A Wayland window-stacking compositor
License: GPL-2.0-only
URL: https://github.com/labwc/labwc
Source0: %{url}/archive/%{version}/%{name}-%{version}.tar.gz
Source1: https://gitlab.freedesktop.org/vyivel/libsfdo/-/archive/v%{slver}/%{slname}-v%{slver}.tar.bz2
# PATCH-FIX-UPSTREAM handle_layershell_unmap_without_outputs_left.patch boo#1254386 -- based on PR 2577, fixes gh#labwc/labwc#2576
Patch0: https://github.com/labwc/labwc/pull/2577.patch
%if %{with warp}
Source2: https://gitlab.freedesktop.org/wlroots/wlroots/-/archive/%{swver}/%{swname}-%{swver}.tar.bz2
Provides: bundled(wlroots)
@@ -51,14 +52,14 @@ BuildRequires: pkgconfig(xcb-render)
BuildRequires: pkgconfig(xcb-renderutil)
BuildRequires: pkgconfig(xcb-xfixes)
BuildRequires: pkgconfig(xcb-xkb)
BuildRequires: pkgconfig(xwaylandproto)
%else
BuildRequires: pkgconfig(wlroots-0.19)
%endif
%if %{with xwayland}
BuildRequires: pkgconfig(xcb-errors)
BuildRequires: pkgconfig(xwayland)
%endif
BuildRequires: pkgconfig(xwaylandproto)
%else
BuildRequires: pkgconfig(wlroots-0.18)
%endif
BuildRequires: hicolor-icon-theme
BuildRequires: meson
BuildRequires: ninja
@@ -90,7 +91,7 @@ by openbox.
%lang_package
%prep
%autosetup
%autosetup -p1
%if %{with warp}
mkdir subprojects/%{swname}
tar -xf %{SOURCE2} --strip-components 1 -C subprojects/%{swname}
@@ -99,9 +100,6 @@ tar -xf %{SOURCE2} --strip-components 1 -C subprojects/%{swname}
mkdir subprojects/%{slname}
tar -xf %{SOURCE1} --strip-components 1 -C subprojects/%{slname}
# only need specific portal, no need trigger all portal
sed -i 's/;.*//' data/labwc-portals.conf
%build
%meson \
-Dman-pages=enabled \
@@ -123,8 +121,6 @@ install -Dm 0644 docs/*.xml -t %{buildroot}%{_sysconfdir}/xdg/%{name}/
%license LICENSE
%doc NEWS.md README.md
%{_bindir}/%{name}
%{_bindir}/lab-sensible-terminal
%{_bindir}/labnag
%dir %{_sysconfdir}/xdg/%{name}
%config(noreplace) %{_sysconfdir}/xdg/%{name}/menu.xml
%config(noreplace) %{_sysconfdir}/xdg/%{name}/rc.xml
@@ -133,7 +129,6 @@ install -Dm 0644 docs/*.xml -t %{buildroot}%{_sysconfdir}/xdg/%{name}/
%{_datadir}/wayland-sessions/%{name}.desktop
%{_datadir}/icons/hicolor/scalable/apps/labwc*.svg
%{_mandir}/man?/%{name}*.?%{?ext_man}
%{_mandir}/man?/labnag*.?%{?ext_man}
%{_datadir}/doc/%{name}/
%files lang -f %{name}.lang

3
libsfdo-v0.1.3.tar.bz2 Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:3798657acd816e0e735703396b9c79d8dfcd4971bbc3dcad4292e1cfa468e084
size 41920

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:155702f21c282693ead7818198fde194ab7c76e0cf1a21bc7b404e5f9ec2c369
size 43519