Skip to content
labwc 0.9.0

The main focus has been to port labwc to wlroots 0.19 [#2388] and fix associated
issues. Special thanks to @Consolatis @jlindgren90 for this.

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. For context: This is due to ambiguity in the
  specifications and contrary implementations. For example, Gtk applications are
  broken under KWin in this regard, while vice versa Qt clients are broken under
  other compositors like Weston, Mutter and labwc. It has been decided not to
  block the release due to this regression as it is an eco-system wide issue
  that has existed for a long time. [#2787]
- 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` [#2887]

Added

- Add client `lab-sensible-terminal` and add a `Terminal` entry to the default
  root-menu @johanmalm [#2877]
- Enhance `-v|--version` option by adding feature flags like `+xwayland -rsvg`.
  @Consolatis [#2873]
- Send drm leases to XWayland clients. This requires XWayland >= 21.1.9.
  @Consolatis [#553] [#2873]
- Add `<windowRule iconPriority="client|server">`. @Consolatis @tokyo4j [#2839]
- Support theme colors defined by X11-color-names and '#rgb' syntax @jlindgren90
  [#2686]
- Support basic vertical titlebar gradients and the additional theme options
  listed below. @jlindgren90 [#2686]

```
window.*.title.bg: Solid | Gradient ( Vertical | SplitVertical )
window.*.title.bg.colorTo:
window.*.title.bg.color.splitTo:
window.*.title.bg.colorTo.splitTo:
```

- Support the XWayland `_NET_WM_ICON` property. Use the new `iconPriority`
  window rule to enable this. @Consolatis @tokyo4j [#2840]
- Add config option `<core><primarySelection>`. This enables autoscroll
  (middle-click to scroll up/down) in Chromium and electron based clients
  without inadvertantly pasting the primary clipboard. @johanmalm [#2832]
- Bump `xdg_shell` version from 3 to 6 @tokyo4j [#2814]
- Bump `wl_compositor` version from 5 to 6 @tokyo4j [#2812]
- Support tablet tool mouse buttons @jp7677 [#2778]
- Add libinput config options:
  - `<threeFingerDrag>` @m4rch3n1ng [#2795]
  - `<dragLock>sticky</dragLock>` @tokyo4j [#2803]
  - `<scrollMethod>none|twofinger|edge</scrollMethod>` @Consolatis [#2767]
- Add `{left,right}-occupied` options to `GoToDesktop` @DreamMaoMao [#2790]
- Add config option `<theme><dropShadowsOnTiled>` @diredocks [#2789]
- Add missing tracking of configure serials for xdg-shell surface to fix issue
  with mpv @jlindgren90 [#2774] [#2788]
- Add support for the following Wayland protocols:
  - `ext-data-control` @Consolatis [#2829]
  - `alpha-modifier` @Consolatis [#2829]
  - `xdg-toplevel-icon protocol`. Use the new `iconPriority` window rule to
     enable this. @tokyo4j [#2755]
  - `drm-syncobj` protocol @zeusgoose [#2737]
  - `ext-image-copy-capture` protocol @any1 [#2740]
- Support both axis for XWayland client side maximize requests.
  @Consolatis [#2728]
- Add scroll emulation for cursor motion and associated actions @jp7677
  [#2678]:
   - `EnableScrollWheelEmulation`
   - `DisableScrollWheelEmulation`
   - `ToggleScrollWheelEmulation`

Fixed

- Fix flicking with negative screen/window resistance @ahesford [#2886]
- Fix layer-shell UAF bug on TTY change @johanmalm @Consolatis [#2874]
- Allow dragged windows to be moved to other workspaces. @Sumandora [#2868]
- Destroy xdg-shell popups when their parent is destroyed to fix potential
  compositor crash. @Consolatis [#2846]
- Clear SSD hover effects after touch-up @jp7677 [#2837]
- Close compositor menus on first touch up/down event to prevent menus from
  staying open during touch interactions in native touch mode. @jp7677 [#2827]
- Omit pointer cursor shape for tablet tools to prevent a resize cursor for
  out-of-surface scrolling with a tablet tool in recent GTK4 (which uses the
  cursor shape protocol). @jp7677 [#2808]
- For XWayland, give focus to a modal dialog rather than its parent.
  @jlindgren90 [#2722]
- Do not send configure events in unmap handler to fix issues with `wshowkeys`
  and `kitten` @tokyo4j @johanmalm [#1153] [#1154] [#2867]
- Window switcher fixes: @tokyo4j [#2770]
  - Always show title with `<field content="title">`. Before this patch, titles
    were not shown if identical to identifiers.
  - Always show output name with `<field content="output">`. Before this patch,
    output names were not shown if there was only one output.
- Send fractional scale to layer-shell surfaces before map. @Consolatis [#2768]
- Only configure initialized layer-shell surfaces to fix bug with
  `kitten quick-access-terminal` @alex-huff [#2736] [#2745]
- Improve focus semantics for XWayland windows using the Globally Active input
  model to fix issues with Zoom, WeChat and CLion @jlindgren90 [#1142]
  [#2811] [#2819]
- Provide better support for XWayland client keyboard focus grabs by using the
  new `grab_focus` signal. @jlindgren90 [#1142]
- Guard against negative sizes in window-switching and menu graphical artefacts.
  @tokyo4j [#2727]
- Do not broadcast keyboard modifiers from virtual keyboards to fix issue with
  per-window layout settings. @orfeasxyz [#2723] [#2724]
- Gracefully exit when no fonts are installed @tokyo4j [#2713]
- config: validate total osd field width to ensure it does not exceed 100%.
  @tokyo4j [#2710]

Changed

- Replace alacritty in default keybind with `lab-sensible-terminal` @tokyo4j
  [#2891]
- Use the `Super` modifier instead of `Alt` for the default mousebinds `A-Left`
  and `A-Right` (for move and resize) to avoid interfering with some clients
  like CAD programs and games @johanmalm [#2831]
- Deprecate the default keybinds listed below. @johanmalm [#2831]
  - `A-F3` for bemenu-run because it is too close to A-F4 and it is better to be
    agnostic on choice of launcher.
  - `A-<arrow>` for `MoveToEdge` because `Alt-` keybinds should be for clients
    to use and this one results in frequent user complaints because it prevents
    some common usage patterns like alt-left/right in web browers.
- Change default titlebar menu button from a dot to an arrow @johanmalm [#2844]
- When `dragLock` is set to `yes`, the drag no longer expires after a short
  delay (known as `Sticky` mode) as recommended by libinput [#2803]. The timeout
  based behavior can be restored via the snippet below.

```xml
<libinput>
  <device>
    <dragLock>timeout</dragLock>
  </device>
</libinput>
```