Skip to content

Releases: labwc/labwc

0.20.1

Choose a tag to compare

@johanmalm johanmalm released this 15 Jun 18:48

This is a small bug fix release.

Fixed

  • Handle titles with no visible characters, for example the left-to-right mark
    (‎) @Consolatis [#3630]
  • Protect against SIGABRT when TTY switching in unusual circumstances by
    ensuring that xdg-shell windows have sensible width and height before trying
    to set size on configure. This protects against an edge case experienced when
    switching between labwc on one TTY and Xfce on XOrg on another TTY.
    @johanmalm @Tamaranch [#3617]

0.9.8

Choose a tag to compare

@johanmalm johanmalm released this 11 Jun 20:45

Fixed

  • Handle titles with no visible characters @Consolatis [#3631]
  • Save window position on initial placement to fix Raspberry Pi pygame SDL
    XWayland window starting off-screen. @tokyo4j [#3433] [#3625] [#3616]

0.20.0

Choose a tag to compare

@johanmalm johanmalm released this 25 May 19:28

This is the first release using wlroots-0.20 and therefore has an increased risk
of teething issues. Many thanks to @Consolatis for leading the effort to port
across [#2956].

In terms of new features, the most noteworthy ones include: (i) the frequently
requested show-desktop action; (ii) initial toplevel capture support to
screenshot specific windows; (iii) menu accelerators/shortcuts; and (iv) HDR10
support when running with the Vulkan renderer option.

The eagle-eyed amongst you will have noticed the sudden jump from labwc 0.9.7
to 0.20.0. The reason for this is to align the minor number to that of the
wlroots version against which the compositor is linked.

The 0.9.x series has turned into a maintenance branch named v0.9 with bug fixes
only, for anyone preferring to build with wlroots-0.19.

Note to maintainers:

Added

  • Partially support toplevel-capture. Note that the following are not yet
    implemented: (i) XWayland child windows; (ii) XWayland unmanaged windows
    (e.g. popups); (iii) xdg child window positioning; (iv) xdg subsurfaces;
    and (v) xdg popup positioning. [#2968] @Consolatis
  • Add command line option -t|--title to set the labwc window title when running
    nested [#3577] @mdsib
  • Add support for HDR10 output @kode54 @Consolatis [#3424]
  • Include wlroots version in --version string @Consolatis [#3567] [#3581]
  • Implement menu accelerators (one-letter mnemonics to quickly select/exec
    items from the current menu) @ch3rn1ka [#3505]
  • Add Next/PreviousWindowImmediate actions @elviosak @johanmalm [#3547]
  • Add labnag options --details-border-color and --details-margin
    @st0rm-shad0w [#3527]
  • Add config option <focus><raiseOnFocusDelay> to defer raise-on-focus by a
    small amount when raiseOnFocus is enabled @joske [#3513]
  • Install labwc-session.target systemd user unit when the systemd dependency
    is available @joske [#3534]
  • Add onbutton to config option <libinput><device><scrollMethod>. Also add
    associated option <libinput><device><scrollButton>. @diniamo [#3540]
  • Add overrideInhibition option to <keybind> [#3507] @drougas
  • Add action ToggleShowDesktop to hide/unhide windows, and default keybind
    Super-d to trigger this action [#3500] [#3595] @johanmalm
  • Add <privilegedInterfaces> config option so that privileged protocols can be
    restricted [#3493] @xi
  • Add action DebugToggleKeyStateIndicator to show a key-state on-screen
    display (OSD) for debugging. [#3499] @johanmalm @tokyo4j
  • Add support for color-management-v1 and color-representation-manager-v1
    protocols [#3469] @ManuLinares
  • Add configuration option <tabletTool minPressure="0.0" maxPressure="1.0" />
    to enable tablet tool pressure range libinput settings [#2916] @jp7677
  • Add wl_fixes interface [#2956] @kode54

Fixed

  • Enable labnag long option --exclusive-zone [#3576] @st0rm-shad0w
  • Position chromium popup correctly when a window is maximized on a multi-
    output setup @elviosak [#3547]
  • Run session activation environment update synchronously to avoid a race
    condition with the autostart script [#3543] @joske
  • Allow interactive resize on fully maximized windows so that a resize
    initiated by modifier plus right-mouse-button-drag is not ignored [#3525]
    @bjorn
  • Gracefully handle missing XWayland packages, so that a labwc compositor which
    has been built with XWayland support (which is optional) can be run even if
    XWayland is not installed. [#3401] @quite
  • Rework how XWayland window initial geometry is set to ensure that the natural
    geometry does not exceed the usable output area when handling initial
    maximize/fullscreen requests. [#3439] @jlindgren90.
  • For XWayland windows, sync always-on-top state back to X.Org Server. This
    makes wmctrl -b toggle,above work. [#3446] @jlindgren90
  • Fix missing title and icon with XWayland client override-redirect toggle.
    There are no known issues with clients, so this is purely for preventative
    purposes. [#3450] @jlindgren90
  • Update titlebar title when set to empty and fix an associated issue causing
    the title to be misplaced outside of the titlebar when the window is resized.
    [#3443] @tokyo4j
  • When running nested, exit compositor when last output is destroyed because
    in this situation, each output corresponds to a window in the parent
    compositor and, unlike DRM outputs, these cannot be reconnected after being
    destroyed. [#3440] @marler8997
  • Allow policy-based placement to apply when an initially-maximized/fullscreen
    view is restored to floating geometry. [#3387] [#3502] @jlindgren90

Changed

  • Change the default keybinds for XF86Audio{LowerVolume,RaiseVolume,Mute} to use
    pactl instead of amixer [#3484] @DanielRRRR
  • Drop cosmic-workspace protocol [#3031] @tokyo4j

0.9.7

Choose a tag to compare

@johanmalm johanmalm released this 17 Apr 19:19

This is a small bug fix release.

               0.9.6--------0.9.7  <--- v0.9 branch with bug-fixes only
                /
               /
0.9.4--------0.9.5--------  <-- master (built with wlroots-0.20)

Fixed

  • Fix intermittent failed-to-get-texture issue with some clients (e.g. foot)
    when using the window-switcher in the thumbnail mode. [#3511] @yuiiio
  • Fix tablet tool tilt motion. [#3494] @jp7677
  • Handle window-switcher buffer allocation failure when in 'thumbnail' mode.
    This is believed to be very unlikely to happen, but has been reported by one
    user and is believed to be GPU driver related. [#3490] @Consolatis

0.9.6

Choose a tag to compare

@johanmalm johanmalm released this 15 Mar 13:25

This is an earlier-than-usual release containing bug fixes only. It has been
done on a separate branch (0.9.5-maintenance) to avoid the inclusion of
refactoring and new features.

               0.9.6  <--- bug-fixes only
                /
               /
0.9.4--------0.9.5--------  <-- master

Fixed

  • Disable outputs where all modes fail [#3428] [#3429] @Consolatis @kode54
  • Fix regression in 0.9.4 that causes NextWindow action to segfault when
    no outputs are connected. This fixes a window-switcher crash with some
    Nvidia GPUs/drivers after suspend [#3425] [#3430] @Consolatis
  • Fix typo to allow xdg-dialog-v1 global [#3426] @xi

Changed

  • Disallow X11 window always-on-top requests by default to fix an issue whereby
    Alt+Tab cannot be used to switch to other windows when using some XWayland
    Wine games [#3441]. Add window-rule property allowAlwaysOnTop to optionally
    allow this always-on-top requests. Add the snippet below to the rc.xml file
    to restore the previous behaviour. [#3445] @Consolatis
<windowRules>
  <windowRule identifier="*" allowAlwaysOnTop="yes" />
</windowRules>

0.9.5

Choose a tag to compare

@johanmalm johanmalm released this 04 Mar 20:59

This is a small bug-fix release.

Added

Fixed

  • Allow layer-shell surfaces on disabled outputs to fix a memory leak in some
    clients (e.g. mako) when using wlopm --off. [#3410] [#3411] @Consolatis

0.9.4

Choose a tag to compare

@johanmalm johanmalm released this 27 Feb 18:23

Note to package maintainers: This release requires wayland version >=1.22.90

Added

  • Add theme option window.button.hover.bg.color [#3365] @johanmalm
  • Implement scrollable window-switcher OSD [#3291] @tokyo4j
  • Support the NextWindow options listed below [#3271] @tokyo4j
    • <action name="NextWindow" workspace="current|all"/>
    • <action name="NextWindow" output="all|focused|cursor"/>
    • <action name="NextWindow" identifier="all|current"/>
  • Add config option *<desktops><initial> for setting the active workspace on
    startup. [#3265] @5trixs0f

Fixed

  • Increase max client buffer size to 1 MiB to allows slow clients to better deal
    with large amounts of events coming in from labwc like from high refresh rate
    mice. Fixes issue with clients getting disconnected because the labwc side
    client write buffer is full. [#3400] @Consolatis
  • Fix two minor cursor position issues during interactive move/resize.
    [#3372] @jlindgren90
  • Flush X11 connection after focus/activate to mitigate a race where the
    XWayland server may generate an unwanted FocusOut event for the newly
    activated window, if it receives pointer events over the parallel wayland
    connection first. In particular, this fixes an issue with certain fullscreen
    applications (such as Minecraft) that self-minimize when receiving FocusOut.
    [#3344] [#3362] @jlindgren90
  • Cancel interactive move/resize when a window is minimized/unmapped. This is
    probably not a common occurrence but it seems cleaner to handle it properly.
    [#3350] @jlindgren90
  • Fix spurious focus change when window-switcher finishes [#3346] @tokyo4j
  • Improve logic for restoring view positions after output disconnect and
    reconnect [#3309] [#3310] @jlindgren90 @tokyo4j
  • Avoid restacking when a window is already in front; and avoid repeated focus
    changes when unminimizing a window with child windows. These changes are not
    believed to be visible to the user, but are mentioned here for completeness.
    [#3323] [#3325] @jlindgren90
  • Do not try to focus an XWayland window that is already in focus. This fixes an
    issue with old versions of Minecraft (<=1.5.2). [#3316] @ventureoo
  • Halt window-switcher on reconfigure to avoid invalid memory access in some
    circumstances. [#3297] @tokyo4j

Changed

  • Decouple the window states always-on-{top,bottom} and omnipresent. Previously
    always-on-{top,bottom} windows were always visible on all workspaces
    (omnipresent).[#3356] @tokyo4j
  • Change the following layer-shell focus semantics:
    • Do not allow clients with on-demand keyboard interactivity in the background
      and bottom layers steal focus. The reason for this is to avoid desktop
      components like pcmanfm-qt --desktop from stealing keyboard focus if they
      are re-started. [#3167] [#3373] @johanmalm
    • Give keyboard focus to xdg-popups of unfocused layer-shell clients in
      support of enabling panel menus to be opened by keyboard shortcuts
      and get keyboard focus so that they can be operated with the keyboard.
      An example use-case is the xfce4-panel applications-menu being opened by
      the command xfce4-popup-applicationsmenu. [#3165] @johanmalm
    • On popup destory, return focus to whoever had it before the popop [#3165]
      @johanmalm @tokyo4j
  • Unshade window if selected from client-list-combined-menu [#3345] @Amodio
  • Show non-dialog child windows in window-switcher [#3339] @tokyo4j
  • <windowSwitcher allWorkspaces="yes|no"> is deprecated. Instead, use:
    <action name="NextWindow" workspace="current|all">. [#3271] @tokyo4j

0.9.3

Choose a tag to compare

@johanmalm johanmalm released this 19 Dec 16:47

This release contains a good amount of bug-fixes, code simplification and
small usability improvements.

With the stability that comes with having tracked wlroots 0.19 for a decent
length of time, this feels like the best version of labwc so far.

In terms of new features, it is worth drawing attention to the click support in
the window-switcher on-screen-display by @tokyo4j [#3186] which has frequently
been requested by users.

As a general note to users, we discourage the use of empty strings in the
rc.xml configuration file, for example <theme><name></name></theme>. There
are only a few areas left where empty string are ignored (like under
<libinput>) but the intent for future releases is to consistently read empty
strings as empty strings. As a preparation, this release has added some warnings
for empty strings that are currently ignored, so that users can take action.
Also, the example docs/rc.xml.all has been updated to remove poor examples in
this regard.

A big thank you to all involved in this release.

Added

  • Add <windowSwitcher order="focus|age"/> to optionally order windows by age
    rather than most recent focus. @mbroemme [#3229]
  • Replace <snapping><range> with <snapping><range inner="" outer=""> to
    provide more granular control when configuring the size of snapping areas
    (including <topMaximize>) on output edges with and without adjacent outputs.
    @elviosak [#3241]
  • Add direction option to Resize action supporting the values up-left,
    up, up-right, left, right, down-left, down, down-right. This
    mirrors Fluxbox's StartResizing [corner] behavior. @mbroemme [#3239]
  • Allow the use of the sendEventsMode configuration option on keyboards in
    order to disable keyboard input. @cillian64 [#3208]
<libinput>
  <device category="  RPI Wired Keyboard 1">
    <sendEventsMode>no</sendEventsMode>
  </device>
</libinput>
  • Support the following new <windowSwitcher> configuration options:
    • <osd thumbnailLabelFormat="%T"> to specify the label text in each item in
      the thumbnail style window-switcher. @elviosak [#3187]
    • <osd output="all|focused|cursor"> to specify which monitor(s) to show
      the OSD(s) on. @dntxi [#3201] [#3248]
  • Support window-switcher OSD item click to focus window @tokyo4j [#3186]
  • With the window-switcher custom field state specifiers 's' and 'S', show 's'
    for shaded window @domo141 [#2895]
  • Support xdg-dialog protocol to enable better handling of modal dialogs @xi
    [#3134]
  • labnag: add --keyboard-focus option @tokyo4j [#3120]
  • Allow window switcher to temporarily unshade windows using config option
    <windowSwitcher unshade="yes|no"/> @Amodio @Consolatis [#3124]
  • For the 'classic' style window-switcher, add the following theme options:
    • osd.window-switcher.style-classic.item.active.border.color
    • osd.window-switcher.style-classic.item.active.bg.color
      @tokyo4j [#3118]

Fixed

  • Handle desktop files with dots in their names better @Consolatis [#3267]
  • Do not synthesize cursor relative motion events from absolute events to fix a
    couple of problems: Firstly to avoid unexpectedly large relative motion deltas
    with multiple input devices or in nested/VM scenarios, and secondly to fix
    erratic mouse behavior in applications that use relative events whilst locking
    with pointer constraints. @jlindgren90 [#3251]
  • Allow cursor movement until entering constraint surface, to fix an issue where
    the cursor would get stuck (immovable) outside the window of a Wine/Wayland
    game, if it was already outside when the game started (which is common with
    4:3 games on a 16:9 screen). @jlindgren90 [#3252]
  • Flush XCB connection to mitigate race between Raise and input. @jlindgren90
    [#3249]
  • Fix disappearing XWayland popups with some (less commonly used) clients like
    Imagemagick's display command, xshogi, xedit and xfig caused by
    too many surface-pings. @jlindgren90 [#3152] [#3246]
  • Center small fullscreen xdg-shell windows and add black background fill. This
    increases spec compliance and improves the user experience with games like
    SWAT4, Quake III and Splinter Cell 3. @jlindgren90 [#3233]
  • When followMouse=yes, update focus on cursor entering SSD rather than just the
    client surface. Fixes a regression in 885919f. @tokyo4j [#3211]
  • Set all foreign-toplevel initial states correctly. This is not believed to fix
    any particular user-issue, but just feels safer. @jlindgren90 [#3217]
  • Update layer-shell client top layer visiblity on unmap instead of destroy
    because it is possible for fullscreen xwayland windows to be unmapped without
    being destroyed, and in this case the top layer visibility needs to be updated
    to unhide other layer-shell clients like panels. @jlindgren90 [#3199]
  • Window-switcher fixes include:
    • Consider output transformation for percentage based widths @tokyo4j [#3177]
    • Classic theme miscalculation for osd width in percentage @tokyo4j [#3175]
    • Thumbnail theme miscalculation for item geometries @tokyo4j [#3176]
  • Do not consume mousebind scroll events under <context name="Client">.
    @elviosak [#3146] [#3168]
  • Work around client-side rounding issues at right/bottom pixel. This fixes an
    issue with some clients (notably Qt ones) where cursor coordinates in the
    rightmost or bottom fixel are incorrectly rounded up putting them outside the
    surface bounds. The issue has been particularly noticeable with layer-shell
    clients like lxqt-panel. @jlindgren90 [#3157] [#2379] [#3099]
    Note: This also avoids a similar server-side rounding issue with some
    combinations of wlroots and libwayland versions. See:
  • Don't remove newlines when parsing config, menu and XBM because doing so can
    cause parser error in some unusual situations like the one shown below.
    @tokyo4j [#3148]
<!--
 -
 - Some comments
 -
-->

Changed

  • <snapping><range> is deprecated. Use <snapping><range inner="" outer="">
    instead. @elviosak [#3241]
  • When cycling through windows (typically with Alt-Tab) there are two minor
    user-visible changes. For most users these will not be noticeable, but are
    mentioned here for completeness.
    • The initially selected window will now be the one that previously had
      keyboard focus when cycling commenced rather than the second topmost one.
      @tokyo4j [#3236]
    • Windows that are spawned whilst cycling can no longer be cycled through. The
      intent is to fix this in future releases. @tokyo4j [#3236]
  • Refactor window switcher configuration to put attributes show and style
    under <windowSwitcher><osd> rather than directly under <windowSwitcher>.
    The old configuration syntax will remain supported for at least one release.
    @dntxi [#3201]
  • Place OSDs at the center of output rather than usable area @tokyo4j [#3179]
  • If XML documents (like rc.xml and menu.xml) have an XML declaration (typically
    <?xml version="1.0"?>), this XML declaration must be the first thing in the
    document. In previous versions, line breaks (\n) were allowed before due to
    the way the files were parsed, but this is approach caused other issues like
    [#3145] and is contrary to XML syntax. [#3148] [#3153]
  • With the window-switcher custom field state specifiers 's' and 'S', change the
    display order from M|m|F to m|s|M|F; and increase the size from three
    characters wide to four. @domo141 [#2895]
  • Put labnag in overlay layer by default so that the dialog is still visible
    when a window is using fullscreen mode. @johanmalm [#3158]
  • Call labnag with on-demand keyboard interactivity by default @tokyo4j [#3120]
  • Temporarily unshade windows when switching windows. Restore old behaviour with
    <windowSwitcher unshade="no"/> @Amodio @Consolatis [#3124]
  • In the classic style window-switcher, the default color of the selected window
    item has been changed to inherit the border color but with 15% opacity
    @tokyo4j [#3118]

0.9.2

Choose a tag to compare

@johanmalm johanmalm released this 10 Oct 18:58

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:
    <windowSwitcher style="thumbnail">. @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 <theme maximizedDecoration="titlebar|none"/> 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]
  • Allow overwriting submenu icon to increase flexibility and enhance Openbox
    compatibility. @tokyo4j [#2998]
  • Allow client-{list-combined,send-to}-menu as submenu of static menu @tokyo4j
    [#2994]
  • Add labnag (a dialog client with message and buttons) and associated
    <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
    options <snapping><cornerRange>. @tokyo4j [#2885]
  • Support new values "up-left", "up-right", "down-left" and "down-right" with
    <action name="(Toggle)SnapToEdge" direction="[value]"> and
    <query tiled="[value]">. @tokyo4j [#2885]
  • XML parsing improvements as listed below. @tokyo4j [#2667] [#2967] [#2971]
    • 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 works 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 @tokyo4j [#2942]
  • Add support for direction value 'any' with tiled queries. This allows users
    to query for any snap directions without using multiple query statements
    @Lynxy [#2883]

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]
  • Improve debug logging for configuring input devices @jlindgren90 [#3028]
  • Fix false positives when matching desktop entries @datMaffin [#3004]
  • 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.
    @Consolatis #2984
  • Fix xdg-shell windows moving between outputs due to configure timeout
    @jlindgren90 [#2976]
  • Fix segfault with toplevel <separator> in menu.xml @tokyo4j [#2970]
  • Prevent hi-res mice triggering scroll actions too often @tokyo4j [#2933]

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
    people expect and it makes the behavior consistent with that of Openbox.
    @johanmalm [#3039] [#3049]
  • On interactive resize, only un-maximize the axis/axes that are being resized.
    @jlindgren90 [#3043]
  • Change theme setting osd.window-switcher.* to
    osd.window-switcher.style-classic.*. Backward compatibility is preserved.
    @tokyo4j [#2981]
  • In client-list menu, add brackets around the titles of any minimised windows
    @davidphilipbarr [#3002]
  • Respect client-initiated window resize of non-maximized axis, for example
    remember the width of vertically-maximized window resizing itself
    horizontally. @jlindgren90 [#3020]
  • Remember position of window along non-maximized axis during interactive move.
    @jlindgren90 [#3020]
  • Restore default libinput device values on reconfigure with empty value, rather
    than leaving the old configuration. This makes rc.xml more declarative.
    @tokyo4j [#3011]
  • Change If action when used without a focused window to execute the <else>
    branch (previously it was just ignored). The reason for this is to make things
    more consistent with <prompt>. It is not anticipated that this will affect
    anyone's workflow but is mentioned here for completeness.
  • Make autoEnableOutputs=no apply only to drm outputs @jlindgren90 [#2972]
  • Take into account <core><gap> for edge and region overlays @tokyo4j [#2965]

0.9.1

Choose a tag to compare

@johanmalm johanmalm released this 02 Aug 11:58

This is an earlier-than-usual release containinig bug fixes only. It has been done on a separate branch to avoid the inclusion of refactoring and new features.

               0.9.1  <--- bug-fixes only
                /
               /
0.8.4--------0.9.0--------  <-- master

Fixed

  • 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 [#2948] [#2937] [#2944] @Consolatis
  • Fix double-free in img_svg_render() failure path [#2910] @jlindgren90
  • Fix swapped width/height in XWayland client _NET_WM_ICON stride calculation
    [#2909] @jlindgren90