# Introduction
This file contains significant user-visible changes for each version.
For full changelog, use `git log`.
The format is based on [Keep a Changelog]
# Summary of Releases
| Date | All Changes | wlroots version | lines-of-code |
|------------|---------------|-----------------|---------------|
| 2024-12-13 | [0.8.2] | 0.18.2 | 26298 |
| 2024-10-25 | [0.8.1] | 0.18.1 | 25473 |
| 2024-08-16 | [0.8.0] | 0.18.0 | 23320 |
| 2024-06-19 | [0.7.4] | 0.17.4 | 22746 |
| 2024-06-12 | [0.7.3] | 0.17.4 | 22731 |
| 2024-05-10 | [0.7.2] | 0.17.3 | 21368 |
| 2024-03-01 | [0.7.1] | 0.17.1 | 18624 |
| 2023-12-22 | [0.7.0] | 0.17.1 | 16576 |
| 2023-11-25 | [0.6.6] | 0.16.2 | 15796 |
| 2023-09-23 | [0.6.5] | 0.16.2 | 14809 |
| 2023-07-14 | [0.6.4] | 0.16.2 | 13675 |
| 2023-05-08 | [0.6.3] | 0.16.2 | 13050 |
| 2023-03-20 | [0.6.2] | 0.16.2 | 12157 |
| 2023-01-29 | [0.6.1] | 0.16.1 | 11828 |
| 2022-11-17 | [0.6.0] | 0.16.0 | 10830 |
| 2022-07-15 | [0.5.3] | 0.15.1 | 9216 |
| 2022-05-17 | [0.5.2] | 0.15.1 | 8829 |
| 2022-04-08 | [0.5.1] | 0.15.1 | 8829 |
| 2022-02-18 | [0.5.0] | 0.15.1 | 8766 |
| 2021-12-31 | [0.4.0] | 0.15.0 | 8159 |
| 2021-06-28 | [0.3.0] | 0.14.0 | 5051 |
| 2021-04-15 | [0.2.0] | 0.13.0 | 5011 |
| 2021-03-05 | [0.1.0] | 0.12.0 | 4627 |
## [0.8.2]
This is a shorter release cycle compared with the usual 10-week one because it
contains a significant number of stability and cleanliness fixes which warrant
packaging.
We do not normally describe behind-the-scenes work in this log, but will mention
two here as an exception:
1. A clean run with gcc/clang memory leak check has been achieved. Thanks to
@tokyo4j for fantastic work with this [#2331]
2. A buffer-sharing mechanism has been merged to improve both processor and
memory usage in the long term. Credits to @tokyo4j and @Consolatis for this
one. [#2363]
Notes to package maintainers:
- The wlroots dependency has been increased to `0.18.1` to avoid a crash when
using ext-foreign-toplevel-list protocol.
- It is also advisable to use `0.18.2` as soon as possible to fix a crash
triggered when the xwayland server closes during a drag-and-drop with an
XWayland client.
### Added
- Add support for xdg-foreign-v1 and xdg-foreign-v2 protocols [#2400]
- Add window rule to send release-events of modifiers which are part of
keybinds. This supports clients (like blender) that want to see modifier
release events even when they are part of a keybinds. [#2377]
```xml
```
- Support menu borders [#2376]
```
menu.border.width: 1
menu.border.color: #aaaaaa
```
- Add conversion specifier `%n` to the window-switcher `` config option
to show desktop entry name in the window-switcher. Written-by: @jp7677 [#2360]
```xml
```
- Add hold gestures. @jp7677 [#2326]
- Support ext-foreign-toplevel-list protocol [#2072]
- Support additional window rule conditions including `shaded`, `maximized`,
`iconified`, `focused`, `omnipresent`, `desktop`, `tiled` and `tiled_region`.
This also works for `If` and `ForEach` queries. @orfeasxyz @ahesford [#2245]
- Add mouse emulation for touch devices. @spl237 [#2277]
- Improve handling of touch events. @jp7677 [#2273]
This includes:
- Hide the cursor on touch input and keep the cursur invisible until
pointer or tablet input
- Close xdg-popups on touch down
- Notify idle-manager on touch down/up
- Clear pointer focus on touch input to avoid pointer focus interfering
with touch input, like showing hover effect on unexpected locations
- Move touch only with one touch point - in other words do not move the
cursor when more than one finger is down
- Warp cursor to touch coordinates for consistent behaviour with
non-touch capable surfaces including the desktop
- Set environment variable `LABWC_VER` with current compositor version.
@01micko [#2257]
- Broadcast keyboard modifiers to all clients rather than just the one with
keyboard focus. [#2274]
This enables:
- Clients such as panels to display the current keyboard layout without
introducing new wayland protocols or other IPC.
- Unfocused xdg-shell clients to understand button press with keyboard
modifiers for example Ctrl+click.
### Fixed
- Fix crash caused by `rc.xml` `` options being specified as
elements rather than attributes. [#2412]
- Fix `ShowMenu` action position with x/y arguments in multi-monitor setup.
[#2409]
- Block privileged protocols for sandboxed clients [#2398]
- Fix incorrect focus behaviour when switching between workspaces with
omnipresent windows open [#2335]
- Fall back to loading icon based on app-id when `Icon` defined in .desktop file
can not be loaded [#2361]
- Fix regression introduced with `0.8.1` to allow negative values for theme
option `menu.overlap` [#2356]
- Ensure output is usable before setting adaptive sync [#2337] [#2338]
- Fix `menu.title.text.justify: right` not working [#2336]
- Keep focus on omnipresent windows when switching workspaces [#2329]
- Skip painting output when session is not active. @enometh @Madhu [#2249]
- Ignore variable assignments > 1 KiB in environment files to guard against
recursive constructs like FOO=$FOO:bar which would grow on each reconfigure.
[#2325]
- Improve support for non-compliant .desktop files by matching partial strings
to handle for example app-id="gimp-2.10" with file "gimp.desktop". @spl237
[#2266]
- Correctly center menu opened with `` @tokyo4j [#2319]
- Allow pointer speed of -1.0. @spl237 [#2321]
- Fix off-by-one bug in `buf_add_char()` [#2313]
- Fix menu separator-line padding regression introduced in `0.8.1`. @domo141
[#2291]
- Avoid permanent disabling of tearing due to rejected commits caused by the
cursor plane not allowing async page flips which causes tearing page flips
to be rejected if the cursor is moved. @RicArch97 [#2295]
- Use `MenuHeader` font height in separators with labels. @domo141 [#2276]
### Changed
- Set xwaylandPersistence default value to `yes` when compiled with wlroots
<0.18.2. This prevents a bug which has the potential to crash the compositor
when performing a drag-and-drop action at the same time as the XWayland server
is shutting down. [#2371] [#2414] [#2420]
- Set default window placement policy to `cascade` instead of `center` [#2345]
```xml
cascade
```
- Set default values of theme option `window.*.border.color` to `#aaaaaa`. This
makes the colors of window borders and titlebar different, but will let
`menu.border.color` inherit `window.active.border.color` just like Openbox
does, without making the menu borders around a selected menu item invisible.
[#2376]
- Invert the y-offset of submenus applied by `menu.overlap.y` to (i) follow
Openbox's behavior and (ii) behave as already described in our own
documentation. [#2380]
## [0.8.1]
The most noteworthy additions in this release are:
1. Titlebar window icons and layout configuration
2. Support for the cosmic-workspace protocol and the openbox inspired
client-list-combined-menu for a better user experience with workspaces.
Notes to package maintainers:
- The SSD titlebar window icon support requires [libsfdo] to be added as a
(build and run-time) dependency or statically linked. If this is not wanted,
add `-Dicon=disabled` to the `meson setup` command in the build script for the
next release.
- PRs [#1716] and [#2205] add labwc xdg-portal configuration, modify
`labwc.desktop` and amend `XDG_CURRENT_DESKTOP` which should enable better
out-of-the-box support for xdg-desktop-portal, but if you already ship a
custom setup for this or have different requirements, please review this
change.
[libsfdo]: https://gitlab.freedesktop.org/vyivel/libsfdo
### Added
- Support dmabuf feedback [#2234] [#1278]
- Add initial implementation of cosmic-workspace-unstable-v1 [#2030]
- Optionally support SSD titlebar window icons. When an icon file is not found
or could not be loaded, the window menu icon is shown as before. The icon
theme can be selected with `` [#2128]
- Add actions `ToggleSnapToEdge` and `ToggleSnapToRegion`. These behave like
`SnapToEdge` and `SnapToRegion`, except that they untile the window when
already being tiled to the given region or direction.
Written-by: @jp7677 and @tokyo4j [#2154]
- Add action `UnSnap`. This behaves like `ToggleSnapToEdge/Region` but
unconditionally. Written-by: @jp7677 and @tokyo4j [#2154]
- Handle xdg-shell `show_window_menu` requests [#2167]
- Support the openbox style menus listed below. Written-by: @droc12345
1. `client-list-combined-menu` shows windows across all workspaces. This can
be used with a mouse/key bind using:
`` [#2101]
2. `client-send-to` shows all workspaces that the current window can be sent
to. This can additional be used within a client menu using:
`` [#2152]
- Add theme option for titlebar padding and button spacing [#2189]
```
window.button.height: 26
window.titlebar.padding.width: 0
window.titlebar.padding.height: 0
window.button.spacing: 0
```
- Set titlebar height based on the maximum height of any of the objects within
it, rather than just taking the font height into account [#2152]
- Add theme option for setting button hover effect corner radius [#2127] [#2231]
```
window.button.hover.bg.corner-radius: 0
```
- Add position arguments for menus. Written-by: @droc12345 [#2102]
```xml
0
0
```
- Allow interactive window movement when horizontally or vertically maximized
and add associated config option `` [#2052]
- Add optional Shade (shade.xbm) and AllDesktops (desk.xbm) buttons and theme
options:
```
window.active.button.desk.unpressed.image.color
window.inactive.button.desk.unpressed.image.color
window.active.button.shade.unpressed.image.color
window.inactive.button.shade.unpressed.image.color
```
- Make action `FocusOutput` behave like `MoveToOutput` by adding direction and
wrap arguments. Written-by: @orfeasxyz [#2100]
- Add config option for titlebar layout. Written-by: @xi [#2088] [#2150]
```xml
icon:iconify,max,close
yes|no
```
- Add `Oblique` option to `