Skip to content

labwc 0.7.2

Compare
Choose a tag to compare
@johanmalm johanmalm released this 10 May 20:16
· 169 commits to master since this release

This release is the second in a row that is larger than usual in terms of both
fixes and new features. Significant additions include input-methods, pipemenus,
snap-to-edge overlays and optionally drop-shadows.

As usual, most of the commits are by the core devs: @ahesford, @Consolatis,
@jlindgren90, @johanmalm and @tokyo4j, but we also have many great
contributions from others as noted in the log.

Added

  • Add <menu><ignoreButtonReleasePeriod> to prevent clicks with small movements
    from inadvertantly closing a menu or selecting a menu item. This is the
    equivalent of <menu><hideDelay> on Openbox. #1760
  • Support drop-shadows (disabled by default) for windows using server-side
    decorations. Written-by: @cillian64
<theme>
  <dropShadows>yes|no</dropShadows>
</theme>
window.active.shadow.size: 60
window.inactive.shadow.size: 40
window.active.shadow.color: #00000060
window.inactive.shadow.color: #00000040
  • Add window-rule ignoreConfigureRequest to ignore X11 client-side
    configure requests (positioning and resizing). #1446
  • Support window-rules based on window type: <windowRule type="">, where
    type can be for example NET_WM_WINDOW_TYPE_DESKTOP for an XWayland
    window. Written-by: @xi @txgk
  • Add none branch to the ForEach action. Written-by: @nicolas3121
    #1298
<action name="ForEach">
  <query identifier="foo"/>
  <then>
    <!-- carry out some action on match -->
  </then>
  <none>
    <!-- carry out some action if there were no matches at all -->
  </none>
</action>
  • Add -S|--session <command> option to start <command> on startup and
    to terminate the compositor when exits. This is useful for
    session management as it allows the session client (for example
    lxqt-session) to terminate labwc when exiting itself.
  • In theme setting color definitions, support inline alpha encoding like
    #aabbccff
  • Add window-switcher custom field inspired by printf formatting. #1670
    Written-by: @droc12345 and @Consolatis
<windowSwitcher>
  <fields>
    <field content="custom" format="foobar %b %3s %-10o %-20W %-10i%t" width="100%" />
  </fields>
</windowSwitcher>
  • Support defining window-switcher width as a percentage of output
    (display) width. Written-by: @droc12345
osd.window-switcher.width: 75%
  • Support Openbox compatible pipe-menus. See labwc-menu(5) for usage.
  • Add snap-to-edge overlay. Written-by: @tokyo4j. PR #1652 #1702
    This includes the following new config and theme settings:
<snapping>
  <overlay>
    <enabled>yes|no</enabled>
    <delay inner="500" outer="500"/>
  </overlay>
</snapping>
snapping.overlay.[region|edge].bg.enabled: yes|no
snapping.overlay.[region|edge].border.enabled: yes|no
snapping.overlay.[region|edge].bg.color: #8080b380
snapping.overlay.[region|edge].border.width: 1
snapping.overlay.[region|edge].border.color: #ffffff,#000000,#ffffff
  • Add theme settings listed below for window-switcher preview border.
    Written-by: @tokyo4j
osd.window-switcher.preview.border.width: 2
osd.window-switcher.preview.border.color: #ffffff,#00a2ff,#ffffff
  • Support libinput config option for calibration matrices.
    <libinput><device><calibrationMatrix>. Written-by: @SnowNF
  • Add new window-switcher field content types workspace, state,
    type_short and output. Written-by: @droc12345 PR #1623
<windowSwitcher allWorkspaces="yes">
  <fields>
    <field content="workspace" width="5%" />
    <field content="state" width="3%" />
    <field content="type_short" width="3%" />
    <field content="output" width="9%" />
    <field content="identifier" width="30%" />
    <field content="title" width="50%" />
  </fields>
</windowSwitcher>
  • Support input methods (or input method editors, commonly abbreviated
    IMEs) like Fcitx5, using protocols text-input-v3 and input-method-v2.
    This includes IME popups. Written-by: @tokyo4j
  • Add atCursor attribute to action ShowMenu so that a window's
    "client-menu" could optionally be launched at the pointer using a
    keybind as follows:
<action name="ShowMenu" menu="value" atCursor="yes" />
  • Support workspace-prefix (<desktops><prefix>) for workspace-switcher
    onscreen display when naming workspaces by digits, for example 1, 2, 3
    Written-by: @droc12345
  • Process all *.env files in an environment.d directory alongside and
    in the same way as each potential environment file.
  • Allow empty variables in environment files. In other words, respond to
    variable declarations of the form "VARIABLE=", with no following value,
    by setting the corresponding environment variable as an empty string.
  • Add optional headless fallback output that is automatically created when
    no other output exists. Enable this by setting the environment variable
    LABWC_FALLBACK_OUTPUT to the desired output name. The feature
    benefits applications like wayvnc the most by ensuring that there is
    always an output available to connect to. #1618
    Co-Authored-By: Simon Long simon@raspberrypi.com
  • Optionally show windows on all workspaces in window-switcher.
<windowSwitcher allWorkspaces="yes">
  • Handle touch on headerbar using cursor emulate events. Issue #1550
    Written-by: @spl237
  • Updated dbus activation environment with more environment variables
    (XCURSOR_SIZE, XCURSOR_THEME, XDG_SESSION_TYPE, LABWC_PID)
    Written-by: @winerysearch Issue #694
  • Run shutdown script on exit (equivalent to autostart on startup)
  • Add wrap argument to action MoveToOutput. Wrap is disabled by
    default to keep the user interface consistent. Example usage:
<action name="MoveToOutput" direction="right" wrap="yes" />

Fixed

  • Prevent Chromium from crashing when started after a virtual keyboard is
    destroyed. #1789
  • Fix top-layer not showing when there is a minimized full-screen window
    Written-by: @fberg
  • Prevent the following whilst window-switcher cycling (#1640):
    • Cursor actions on the window previews
    • Request-xdg-activation
    • Foreign toplevel request-activate
    • XWayland request-activate
  • Prevent shaded XWayland windows from getting cursor events. #1753
  • Fix menu-parser use-after-free bug. #1780
  • Update top layer visibility on map to fix bug with Steam's Big Picture Mode
    window which requests fullscreen before mapping. #1763
  • Do not update server-side-decoration if window is too small. #1762
  • Fix crash on Kill action with XWayland windows. #1739
  • Update workspaces on --reconfigure. Written-by: @tokyo4j
  • Notify idle manager when emulating cursor movement.
  • Fix GrowToEdge/ShrinkToEdge action bug caused by clients ignoring the
    requested size, for example a terminal honouring size-hints.
  • Fix assert() on VT switch. Issue #1667
  • Ensure titlebar has consistent look when using transparency. #1684
  • Fix dnd bug where dnd does not finish properly on cursor-button-release
    if there is no surface under the cursor such as on the desktop when no
    background client is running. #1673
  • Send cursor-button release event to CSD client before finishing window
    dragging to avoid a bug whereby the release event is incorrectly sent to
    a layer-shell client at the end of a drag.
  • Validate double-click against SSD part type because clicks on
    different parts of a client in quick succession should not be
    interpreted as a double click. #1657
  • Fix bug that region overlay is not shown when a modifier key is re-
    pressed.
  • Fix workspace-switcher on-screen-display positioning of text using
    right-to-left (RTL) locales. Written-by: @micko01 Issue #1633
  • Unconstrain xdg-shell popups to usable area (rather than full output) so
    that popups do not cover layer-shell clients such as panels.
    Written-by: @tokyo4j
  • Exclude unfocusable XWayland windows (for example notifications and
    floating toolbars) from being processed by wlr-foreign-toplevel protocol
    as these windows should not be shown in taskbars/docks/etc.
  • Render text buffers with opaque backgrounds because subpixel text
    rendering over a transparent background does not work properly with
    cairo/pango. PR #1631 issue #1684
  • Fallback on layout 'us' if a keymap cannot be created for the provided
    XKB_DEFAULT_LAYOUT. If keymap still cannot be created, exit with a
    helpful message instead of a segv crash.
  • Reload cursor theme and size on reconfigure. This gives instant feedback, but
    only works for server side cursors or clients using the cursor-shape protocol.
    Written-by: @spl237 and @Consolatis. #1587 #1619
  • Fix a number of surface-focus related short-comings:
    • Handle cursor-button-press on layer-shell subsurfaces and fix bug in
      get_cursor_context() which resulted in layer-surfaces not being
      detected correctly. PR #1594
    • Overhaul the logic for giving keyboard focus to layer-shell clients.
      PR #1599 Issue #1653
  • Fix move/resize bug manifesting itself on touchpad taps with
    <tapAndDrag> disabled because libinput sends button press & release
    signals so quickly that interactive_finish() is never called.
    Written-by: @tokyo4j
  • Include always-on-top windows in window-switcher.
  • Make resize flicker free again when running labwc nested (it was a
    regression caused by wlroots 0.17).
  • Clean up dbus and systemd activation environments on exit
  • Fix view_get_adjacent_output() bug resulting in often returning an
    incorrect output when using more than two outputs. Issue #1582

Changed

  • Support press-move-release when interacting with the labwc root-menu. #1750
  • In theme settings, mark color definitions in the format #rrggbb aaa as
    deprecated (still supported, but will removed in some future release) in
    favor of the more commonly used #rrggbbaa.
  • If your rc.xml contains a keybind to show menu "client-menu", it will
    be launched at pointer rather than the top-left part of the window. To
    keep the old behaviour, redefine it as follows:
<keybind key="A-Space">
  <action name="ShowMenu" menu="client-menu" atCursor="No"/>
</keybind>
  • Change action MoveToOutput argument 'name' to 'output' (because 'name'
    is already used by the action itself). Issue #1589
<action name="MoveToOutput" output="HDMI-A-1"/>
  • Do not deactivate window when giving keyboard focus to a non-view
    surface such as a popup or layer-shell surface. This matches Openbox
    behavior.
  • Treat Globally Active XWayland windows according to type to fix focus
    issues with IntelliJ IDEA and JDownloader 2. Issues: #1139 #1341
    Also revert f6e3527 which allowed re-focus between Globally Active
    XWayland windows of the same PID.
  • Only update dbus and systemd activation environments when running on
    the DRM backend or by explicit request using environment variable
    LABWC_UPDATE_ACTIVATION_ENV.