The interactive file manager requires Javascript. Please enable it or use sftp or scp.
You may still browse the files here.

Download Latest Version 0.9.2 source code.tar.gz (533.6 kB)
Email in envelope

Get an email when there's a new version of labwc

Home / 0.8.3
Name Modified Size InfoDownloads / Week
Parent folder
0.8.3 source code.tar.gz 2025-02-21 491.4 kB
0.8.3 source code.zip 2025-02-21 626.9 kB
README.md 2025-02-21 14.2 kB
Totals: 3 Items   1.1 MB 0

The eye-catching new features of this release are undoubtedly: 1. Support for the ext-workspace protocol with big thanks to @Consolatis 2. Menu enhancements including icons and dynamic root-menus. Credits here go to @Consolatis, @tokyo4j and @johanmalm for improvements to both backend buffer managements and front end menu mechanics.

However - on the whole - the main effort of this release has gone into stability, usability and performance fixes, and it really feels like we have matured nicely against the wlroots 0.18 series.

Notes to package maintainers: - This version introduces the ext-workspace protocol which breaks xfce4-panel 4.20.0. There is a fix in subsequent releases so make sure xfce4-panel is shipped at >= 4.20.1.

Added

  • Add config options <resize><cornerRange> and <resize><minimumArea> [#2529]
  • Menu icons support [#2509]

    :::xml

    <showIcons>yes</showIcons>

  • Support toplevel pipemenus [#2238] [#2239]

    :::xml <openbox_menu>

    </openbox_menu>

  • Add <theme><fallbackAppIcon> to specify the icon name to be used when lookups for an application icon have failed [#2518]

  • Use 'labwc' directory for themes as well as 'openbox-3' [#2488]
  • Add default Alt-Shift-Tab keybind for PreviousWindow [#2477]
  • Add config option <core><autoEnableOutputs> to allow users to avoid automatically enabling outputs at startup and when new outputs are connected. With autoEnableOutputs disabled, tools such as kanshi can be used to give finer-grained control of which outputs are enabled, which may be useful to avoid re-enabling outputs that disconnect and reconnect during powersave [#2458]
  • Add WarpCursor action. Written-by: @orfeasxyz [#2118]
  • Support ext-workspace protocol [#2365]

Fixed

  • Prevent black flash (caused by unnecessary output commit without buffer) when repeatedly calling wlopm --on [#2580]
  • Set custom output mode on wlopm --on to work around a wlroots issue: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3946 [#2578]
  • Handle layer-shell unmap without any outputs left [#2577]
  • Fix some odd, inconsistent behaviour with resize edges [#2529]
  • Cleanup overlay timer on exit [#2574]
  • Fix unexpected behavior when a menu is opened from another menu [#2537]
  • Taking into account SSD margin in MoveTo action [#2469] [#2563]
  • Fix UAF caused by trying to update xcursor in an output destroy-handler [#2539] [#2560]
  • Send wlr-foreign-toplevel output_enter on initialization to fix a bug which causes missing taskbar items in Waybar when configured to show windows per output. [#2550]
  • Use subsurface as reference for out-of-surface cursor movement [#2542] [#2547]
  • Dynamically look up window icons in server-side-deco titlebar for output scales [#2518]
  • Do not leak bound scroll events from touchpad to clients in some conditions [#2516]
  • Ignore duplicated buttons in <titlebar><layout> rather than ignoring all of it [#2524]
  • Set repeat information for virtual keyboards [#2513]
  • Honour modifier state of virtual keyboards when processing mousebinds. Helps some use-cases under wayvnc [#2511]
  • Accept uppercase icon endings
  • IME: fix stuck Ctrl when pressed Ctrl+F in Firefox with Fcitx5 [#2498]
  • Fix invisible cursor on application after reconfigure [#2499]
  • Fix abort() on non-ARGB32 PNG file [#2495]
  • Ignore wlr_output_state.mode/custom_mode except for client request [#2486]
  • Cancel keyboard keybind-repeat on reconfigure [#2473]
  • Send initial wlr-foreign-toplevel pre-map state [#2460]
  • Fix NULL string_prop crash when app_id is NULL [#2453]
  • Fix scaling for rendering large image in non-square rectangle [#2451]
  • Fix cursor focus when menu is closed by clicking its border [#2443]
  • Update pointer focus on xdg-popup/layer popup destruction to fix bug where closing a popup did not move the pointer focus to the main toplevel until the cursor was moved. [#2443]
  • Improve algorithm for menu placement with xdg-positioner [#2408]
  • Do not forward IME key-release without correspinding key-press to avoid stuck keys [#2437]

Changed

  • Make window switcher more Openbox-like in terms of key processing. The shift key no longer inverts the direction of window switching, so to keep the original behavior, alt-shift-tab has been added as a default keybind to cycle to the previous window [#2477]
  • Do not set numlock by default, only set on|off if user specifically requests it in the config file [#2483]
  • Demote libsfdo error-logging to WLR_INFO to avoid logging issues with .desktop files as errors [#2456]
  • Always send modifier release events. This means that when a keybind is triggered while focusing on an application, the key-release event of the modifier key is now sent to the application. This fixes the problem of stuck modifier keys in some applications including Blender and wlfreerdp. Note that this change makes existing keybinds with Alt key show Firefox's menu bar. For those who don't want to make those keybinds interfere with Firefox's menu bar, we recommend replacing Alt key (e.g. "A-s") with Win key (e.g. "W-s") in the keybinds. [#2455]
  • Removed wantAbsorbedModifierReleaseEvents window rule as it's no longer needed [#2455]
  • Clear the keyboard/pointer focus while a window is dragged, the window switcher is activated or a menu is opened. As a result, with followMouse="yes" and followMouseRequiresMovement="no" in rc.xml, keyboard-focus semantics have subtly changed when using the window-switcher. [#2455]

Shortlog

01micko (2):
      README.md: fix minor grammar error, add libsfdo as optional dependency
      README.md#Integration: add xfce4-panel

Andrew J. Hesford (2):
      ssd: make sizes of invisible SSD extents configurable
      docs/rc.xml.all: correct description of resize.cornerRange

Consolatis (33):
      CONTRIBUTING.md: update package maintainer list
      cosmic-workspaces: abstract transaction-addon
      cosmic-workspaces: add cosmic_ prefix
      cosmic-workspaces: remove workspace_set_hidden() calls
      ext-workspace protocol implementation
      ext-workspace protocol integration
      project wide: adapt to new non-NULL value of view_get_string_prop()
      wlr-foreign-toplevel: send initial pre-map state
      src/debug.c: fix inverted string_null_or_empty() check
      keyboard: cancel keybind_repeat on reconfigure
      CI: add non-feature (svg, libsfdo, xwayland) build for arch
      img: rename lab_img_cache to lab_img_data
      scaled_{img,scene}_buffer: add architecture graph
      string-helpers: add str_endswith_ignore_case()
      desktop-entry: accept uppercase icon endings
      desktop-entry: separate icon and app_id icon lookup
      scaled-scene-buffer: use outputs_update signal
      keyboard: add keyboard_get_all_modifiers()
      seat: set repeat information for virtual keyboards
      cursor.c: use subsurface as reference for out-of-surface movement
      surface-helpers: reduce log spam
      docs/labwc-menu: we only support a single menu.xml file
      src/config: let icon theme name default to theme
      src/menu: add support for scalable menu icons
      src/menu: add global config for menu.showIcons
      server: on exit, destroy backends first
      action.c: add SSD margin to MoveTo coordinates
      CI: restrict build jobs to code changes
      CI: fix Debian build, wlroots package got renamed
      src/overlay.c: clean up timer on exit
      src/layers: handle unmap without any outputs left
      output: set custom output mode on wlopm --on
      output: early return on wlopm if requested state is already set

Dima Krasner (1):
      docs: fix incorrect default for window.label.text.justify

Johan Malm (22):
      README.md: add gammastep
      labwc-actions(5): add missing position option to ShowMenu
      README.md: add "lightweight and box-inspired"
      labwc-config(5): describe how keys are processed
      s/xmlParseMemory/xmlReadMemory/
      string-helpers.c: add str_starts_with()
      menu: put menu_tree above overlay layer
      theme: demote padding.height warning
      view: fix NULL string_prop crash
      keyboard: set numlock to off by default
      desktop-entry: demote libsfdo error-logging
      Make enum three_state public
      keyboard: do not set numlock by default
      menu: support pipemenu with the toplevel <menu> element
      theme: use 'labwc' directory
      Add scripts/rip.c
      NEWS.md: start converting section 0.8.0 references
      NEWS.md: interim update
      NEWS.md convert refs to [#%d] format
      NEWS.md: update notes for 0.8.3
      NEWS.md: fix minor grammatical error
      build: bump version to 0.8.3

John Lindgren (5):
      output: auto-select mode when enabling output by client request
      output: handle outputs that are enabled but not yet added
      rcxml: add core.autoEnableOutputs option
      output: add debugging output to output_test_mode()
      output: ignore wlr_output_state.mode/custom_mode except for client request

Orfeas (3):
      query: extend "monitor" query & add missing docs
      action: add WarpCursor action
      query: encapsulate parser state into a struct

Tomi Ollila (3):
      theme: don't try to load "themerc"s if theme_name is NULL
      docs: trailing space, 1 tab to spaces, labwc-theme.5.scd to fit 80 cols
      docs: labwc-config.5.scd: dedent windowSwitcher content lists

Weblate (3):
      Translation updates from weblate
      Translation updates from weblate
      Translation updates from weblate

tinyboxvk (1):
      Fix typos

tokyo4j (58):
      view: s/scene_node/content_node/
      menu: some refactor
      font: remove arrow character from font buffer
      menu: improve algorithm for menu placement with xdg-positioner
      IME: don't forward key-release without correspinding key-press
      scaled-scene-buffer: reduce unnecessary renderings
      menu: slightly slide menus opened with atCursor="no"
      xdg-popup: update pointer focus on popup destruction
      layer: update pointer focus on popup destruction
      cursor: fix focus when menu is closed by clicking its border
      node: add node_scaled_scene_buffer_from_node
      ssd: rework titlebar button rendering
      Add LAB_INPUT_STATE_WINDOW_SWITCHER
      Check input_mode to see whether window switcher is active or not
      Don't open menu or start window switching while other server interaction
      src/output.c: remove output_usable_area_scaled()
      img: fix scaling for rendering large image in non-square rectangle
      Revert "keyboard: add window rule to send release-events (#2377)"
      Revert "keyboard: include pressed modifiers in bound set"
      Clear keyboard/pointer focus on Move/Resize, window switcher and menu
      src/desktop.c: remove osd_review_restore() call in desktop_cycle_view()
      src/osd.c: make osd_preview_restore() private in osd.c
      src/seat.c: small refactor
      osd: refactor to not write server->osd_state outside osd.c
      osd: make desktop_cycle_view() private in osd.c
      Remove cruft related to window switcher and keyboard focus
      osd: make window switcher more Openbox-like in terms of key precessing
      Add default Alt-Shift-Tab keybind for PreviousWindow
      img: remove "theme" member from lab_img
      img: fix UAF on Reconfigure by refcounting
      img: apply padding around window icon only horizontally
      src/server.c: delete a comment which was missed to erase
      img: don't abort with non-ARGB32 PNG files
      set: prevent possible segfault when keycode 0 is released
      osd: prevent preview outlines to be above OSD
      cursor: fix invisible cursor on application after reconfigure
      IME: rename pressed_keys to forwarded_pressed_keys
      IME: fix stuck Ctrl when pressed Ctrl+F in Firefox with Fcitx5
      scaled-scene-buffer: store all the scaled_scene_buffers in a single list
      scaled-scene-buffer: block sharing of buffers created before reconfigure
      rcxml: ignore duplicated buttons in <titlebar><layout>
      rcxml: replace 'icon' with 'menu' when libsfdo is not linked
      cursor: don't leak bound scroll events from touchpad to clients
      ssd: fix InactiveWindow font not working
      view: replace content_node with content_tree
      refactor: add LAB_BS_DEFAULT in lab_button_state
      Move "#if HAVE_LIBSFDO" inside desktop-entry.h
      img: remove padding_x from lab_img_render()
      string-helpers: add str_equal()
      ssd: dynamically look up window icons in titlebar for output scales
      Add <theme><fallbackAppIcon>
      wlr-foreign: send output_enter on initialization
      ssd: fix resizing on border corners and add <resize><cornerRange>
      menu: fix unexpected behavior when a menu is opened from another menu
      menu: assert no menu is opened in menu_open_root()
      menu: remove ShowMenu action from menu items
      osd: prevent preview outlines from overlapping OSD in first output
      cursor: don't un-minimize previewed window while window switching

yuiiio (2):
      xdg: cleanup request_show_window_menu listener when destroy
      ime: cleanup new_popup_surface listener when destroy
Source: README.md, updated 2025-02-21