spectrwm 3.5.0 released!
spectrwm 3.5.0
Released on Oct 22, 2023
Includes a bunch of major new features and improvements, such as dock/panel
support, an always mapped window mode, floating workspace layout, transparent
color support, tons of fixes, and more!
- Add free window mode.
- free windows are floating windows that are not in a workspace. They remain
mapped and may be resized, positioned and stacked anywhere. When iconified,
they appear at the end of the uniconify menu. Note that free windows can be
stacked above/below workspace windows but must be put into a workspace and
unfloated to be part of its tiling layout.float_toggle
is convenient for
this purpose. - Add
free_toggle
action (default:M-S-grave
). Toggle focused window
between workspace mode and free mode. - Add
focus_free
action (default:M-grave
). Switch focus to/from windows in
free mode, if any. - Add related color and focus mark options.
- free windows are floating windows that are not in a workspace. They remain
- Improve EWMH (Extended Window Manager Hints) support.
- Add support for docks/panels and desktop managers.
- Add strut support for windows (e.g. panels) to automatically reserve screen
real estate. - Add support for applications to initiate move/resize operations.
- Add demands attention support to urgency features to include windows that
request focus but are denied. - Add support for below state to keep windows stacked below others.
- Improve _NET_ACTIVE_WINDOW handling.
- Fix _NET_DESKTOP_VIEWPORT should update on workspace and region changes.
- Improve window stacking.
- Overhaul window stacking for improved reliability and flexibility required
for new features/fixes. Windows are now stacked as a whole instead of per
region/workspace. - Add
click_to_raise
option (default:1
(enabled)). Raises stacking
priority when clicking on a window. - Add
below_toggle
action (default:M-S-t
). Toggles below state on a
focused window to keep it below other windows.raise
can be used to
temporarily bring a window above all others. - Fix
raise
andalways_raise
stacking issues. - Fix follow mode stacking issues.
- Fix stacking order issues.
- Restore stacking order after leaving fullscreen/maximized state.
- Overhaul window stacking for improved reliability and flexibility required
- Workaround application issues related to ICCCM 6.3 button grabs.
- If X Input Extension >= 2.1 is available, handle button bindings with the
REPLAY
flag passively, without grabs. For other button bindings, establish
grabs on root. - Otherwise, for compatibility, establish all button binding grabs directly on
client windows.
- If X Input Extension >= 2.1 is available, handle button bindings with the
- Add alpha transparent color support for use with compositing managers. Colors
can now be specified with an alpha component via the format
rbga:rr/gg/bb/aa
(values in hex.) - Improve bar fonts.
- Fallback to a "fail-safe" font if the default/user
bar_font
fails to load. - Add fallback handling for missing glyphs when using multiple fonts with Xft.
- Add supplementary private-use code points to
bar_font_pua
. - Fix
$bar_font
program variable substitution should not include fallbacks.
- Fallback to a "fail-safe" font if the default/user
- Improve window mapping.
- Add
maximize_hide_other
andfullscreen_hide_other
options. When a
maximized/fullscreen window is focused, hide unrelated windows on the same
workspace. Useful for transparent windows. - Fix window mapping issue when handling simultaneous screen changes.
- Improve reliability.
- Add
- Improve (re)start handling.
- Set intial focus more reliably.
- Focus on fullscreen/maximized windows before main.
- Restore window floating geometry on shutdown.
- Improve focus handling.
- Add
prior
setting tofocus_close
. When the focused window is closed,
fallback to the last focused window in the workspace. - Add
focus_prior
action. Focus last focused window on workspace.
(Default binding:M-S-a
.) - Improve previous focus fallback.
- Fix iconified window focus issue.
- Fix input focus fallback.
- Fix setting focus with EWMH should unmaximize other windows.
- Fix move/resize operation should abort on focus loss.
- Fix
focus_main
issue with iconified/floating windows. - Fix max layout focus issue when closing transients.
- Fix
warp_pointer
issues.
- Add
- Improve focus follow mode.
- Fix handling of ConfigureWindow and EWMH requests.
- Fix workspace switching issues.
- Improve status bar.
- Add character sequence for workspace list indicator (+L).
- Add workspace mark options for the workspace indicator (+L).
- Add stack mark options for the stacking indicator (+S).
- Add focus mark options for the focus status indicator (+F).
- Add character sequence for number of windows in workspace (+w) (lowercase).
- Add unfocused options to color bar text and background.
- Add color options for when a window in free mode is focused.
- Fix
bar_action
piping deadlock issue. - Fix
name_workspace
should clear on empty string. - Fix refresh bar on
name_workspace
. - Set WM_CLASS, WM_NAME and _NET_WM_NAME on the bar window.
- Add
floating
workspace layout stacking mode.- In floating layout, windows are not tiled and may be freely moved around
and resized. - Add
stack_mark_floating
option for the stacking indicator
(default:'[~]'
). - Add
layout_floating
action (default: unbound). Directly switch to floating
layout. - Add
floating
stack_mode
to thelayout
option.
- In floating layout, windows are not tiled and may be freely moved around
- Improve max layout.
- Allow windows to be unmaximized/floated in max layout.
- Add
max_layout_maximize
option to configure default maximized state. - Allow floating windows to remain floating when dragged between regions into
a max layout workspace.
- Improve window handling.
- Add snap behavior when dragging tiled/maximized windows. Prevents
accidentally floating tiled windows. - Add
snap_range
option (default 25). Sets the pixel distance a
tiled/maximized window must be dragged (with the pointer) to make it
float and move freely. Set to 0 to unsnap/float immediately. - Add
maximized_unfocus
andfullscreen_unfocus
options. Configures
handling of maximized/fullscreen windows that lose focus. - Add support for ICCCM
WM_CHANGE_STATE
ClientMessage. Enables applications
to iconify their own windows. - Add support for window gravity. Improves floating window positioning by
applications. - Disable border on maximized windows when
disable_border = always
. - Add window titles to
search_win
. - Fix maximize handling.
- Fix handling when a window is lost immediately after ReparentWindow.
- Fix Java workaround.
- Add snap behavior when dragging tiled/maximized windows. Prevents
- Improve workspace handling.
- Add
workspace_autorotate
option. When switching workspaces between regions,
automatically "rotate" vertical/horizontal layouts based on RandR rotation
data. - Add
prior_layout
action. Switch to the last used layout.
(Unbound by default.) - Add optional rotation argument to
region
option. - Fix ws cycle actions should skip visible workspaces.
- Add
cycle_visible
option to the man page and example conf.
- Add
- Improve debugging.
- Add
-d
command-line option to enable debug mode. Enables debug mode
actions and logging to stderr without the need to rebuild with
-DSWM_DEBUG
. - Add multi-line support to
debug_toggle
overlay (default: M-d). - Add atom name cache to avoid redundant requests/syncs when printing output.
- Add
- Fix X connection error handling to exit on a failed connection.
- Fix build issues.
- Fix compile error when building against musl.
- Fix build with clang 16 on Linux.
- Improve OpenBSD
pledge(2)
support.- Add "wpath" pledge for sparc64 support
- Simplify usage.
- Improve Linux Makefile.
- Improve manual and examples.
- Add details to
modkey
option in man page. - Add stack modes and window states to man page.
- Fix incorrect key binding for
ws_6
in spectrwm_fr.conf. - Fix man page
wmctrl(1)
examples. - Fix
iostat(8)
issue in example baraction.sh script for OpenBSD. - Update man page note regarding
dmenu(1)
Xft support. - Update example spectrwm.conf.
- Update
keyboard_mapping
example configuration files. - Update html manual.
- Add details to