labwc 0.7.2
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 exampleNET_WM_WINDOW_TYPE_DESKTOP
for an XWayland
window. Written-by: @xi @txgk - Add
none
branch to theForEach
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
andoutput
. 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 actionShowMenu
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 anenvironment.d
directory alongside and
in the same way as each potentialenvironment
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 toautostart
on startup) - Add
wrap
argument to actionMoveToOutput
. 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:
- Fix move/resize bug manifesting itself on touchpad taps with
<tapAndDrag>
disabled because libinput sends button press & release
signals so quickly thatinteractive_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
.