Sway 1.6 contains 231 changes from 69 contributors. It contains an assortment of new features, as well as a lot of bug fixes.
The recommended wlroots version to use with this release is 0.13.0.
New features
- Input method editor (IME) improvements: better support for CJK IMEs, allow IMEs to work on desktop UIs (such as panels and lockscreens)
- Smoother interactive move/resize operations
- Allow Flatpak and snap applications to better integrate with the system via the xdg-foreign protocol
- Improved i3 compatibility for commands changing the window layout
- Add an option to hide the cursor when typing
- Add tray icon support to systems without systemd/elogind
- X11 clipboard reliability improvements
Full changelog
Aleksei Bavshin (1):
xdg-foreign: add v1 and v2 implementations
Andri Yngvason (4):
desktop: output: Scale custom output refresh rate
input: Clean up input_method_relay in seat_destoy()
input/seat: Clean up focus_stack in seat_destroy()
input/seat: Reset command handler context in seat_destroy()
Antonin Décimo (6):
Fix typos in man page.
ipc: fix aligment issue of data buffer
cmd/bar/colors: fix dereference of null pointer
Log empty value if envvar is not defined
Fix incorrect format specifiers
common/loop: check return of realloc
Arav K (1):
Fix swaybar tray for non-systemd
BrassyPanache (2):
Re-focus on parent surface if it is available
Adhere to ICCCM focus specification
Brian Ashworth (3):
ISSUE_TEMPLATE: Use the newer issue templates
input/libinput: remove input type property bias
input/keyboard: fix Group# bindings for keyboard groups
Campbell Vertesi (1):
Add note on quoting to swaymsg manpage
Charmander (1):
swaybar: allow status line cleanup to proceed when hidden
Daniel De Graaf (1):
commands/resize: don't consider 1px resizes to be invalid
Daniil (1):
Update Russian translation
David96 (2):
Make focus_follows_mouse work when hovering a layer-shell surface on another output
Add missing transaction commits to seatop_default
Dimitris Triantafyllidis (3):
Smart borders fix: always show borders for floating containers
In container_split, set a floating container's view to tiled
Fix #5643, #5064: rounding issues in floating-point -> integer conversions
Drew DeVault (3):
Remove .github/FUNDING.yml
Remove Patreon links from README.*.md
CONTRIBUTING.md: Add note on sway's scope
Falke Carlsen (1):
Fix typo in README.dk.md
Fenveireth (1):
swaybar: use text subpixel antialias only where it would look good
Geoffrey Casper (2):
Reload command now matches i3's implementation
server: Avoid using "wayland-0" as WAYLAND_DISPLAY See https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/486
Hubert Hirtz (1):
Document required '\n' in swaybar-protocol
Isaac Freund (1):
Drop gtk-primary-selection support
Jan Beich (2):
protocols: sync wlr-layer-shell-unstable-v1 with wlroots
ci: enable basu on freebsd
Jan Palus (1):
Align ordering of core node properties with i3
John Mako (1):
check parent surface before it is destroyed
Jonas Große Sundrup (1):
rephrase swayidle-timout example to improve readability
Jonas Hohmann (1):
Fix minor typos in German README
Kenny Levinsen (28):
desktop/output: Disable head if mode is NULL
swaynag: Use position from wl_pointer.enter
view: Save surface x and y on saved buffers
transaction: Move centering to view_center_surface
shells: Only center tiled views on size change
shells: Align geometry change commit handling
view: Read geometry directly in view_update_size
input: Only commit transactions when necessary
input: Commit transactions in seatop_default
transaction: Only wait for ack from visible views
transactions: Amend pending transactions
container: Move pending state to state struct
render: Use current instead of pending fullscreen
container: Add container_is_current_floating
view: Recursively check mapped of view_child tree
view: Mark subchildren as unmapped in view_child_destroy
view: Set parent for view_child subsurfaces on init
transaction: Note if instructions are server requests
transaction: Remove unused ready_immediately
shells: Update comment about size change on commit
render: Clip surfaces to container bounds
container: Limit tiled focus to container geometry
container: Add view_container_content_at
swaybar: Use position from wl_pointer.enter
ci: Update alpine xwayland package name
view: Handle NULL role object when role is set
idle_inhibit: Store wlr inhibitor instead of view
view: subsurface NULL check in view_from_wlr_surface
Konstantin Pospelov (2):
exec: fix validation during config reload
Check the output state for recorded workspaces
Ludvig Michaelsson (1):
swaybar: don't expand separator_block_width if separator is false
Manuel Stoeckl (4):
desktop/layer_shell: Fix allocation type mismatch
Declare all struct cmd_handler arrays const
Make Wayland request listeners static const when possible
Make command line option lists const
Mark Stosberg (2):
swaymsg.1: correct typo
grimshot: document support for piping to STDOUT.
Martin Michlmayr (1):
Fix typo in bug reporting template
Michael Weiss (2):
meson.build: Fix the version format
contrib/_incr_version: Disallow the "v"-prefixed version format
Michaël Defferrard (1):
readme: link to the development doc
Mukundan314 (1):
Fix #5940
Mustafa Abdul-Kader (1):
swaynag: add details background option
Nick Diego Yamane (1):
seat/dnd: support null drag icon surfaces
Nils Schulte (2):
moved and renamed movement-unit parsing to common
added ppt unit to move position command
Paul Riou (2):
common: make 'lenient_strcmp' arguments const
criteria: fix crash when comparing NULL properties
Pi-Yueh Chuang (1):
swaybar: silence missing IconThemePath message
Pierre-Albéric TROUPLIN (1):
Prevent inactive-windows-transparency.py to crash on lockscreen
Quantum (2):
render: scale titlebars correctly when straddling outputs
render: handle containers without output when rendering titles
Rex Hackbro (4):
fix typos
fix force_display_urgency_hint parsing
document force_display_urgency_hint
document parse_error
Ronan Pigott (28):
input: implement xdg_toplevel interactive resize hints
xdg_shell: schedule configure on maximize requests
sway.5: add missing underscore
view: display scratchpad hidden containers when activated by ftm
commands: disallow runtime include
view: implement foreign toplevel fullscreen indicator
view: implement foreign toplevel fullscreen request
view: remove foreign toplevel listeners on destroy
seat: use default output mapping if there is no input config
tiling_drag: emit window move ipc events
tiling_resize: abandon resize if a sibling con dies
commands/move: fix crash when moving sphsc child
xdg_shell: allow views to change geometry anytime
ci: fix archlinux builds
container: don't split single children
commands/layout: don't change the layout of workspaces with children
Revert "commands/move: maintain workspace_layout when moving"
Change workspace_layout to match i3 behavior
commands/move: rework container_move_in_direction
introduce workspace_squash
commands/move: squash workspace after directional con move
commands/move: reset geometry of promoted containers
workspace: rework workspace prev|next like i3
container: set fullscreen mode before attempting focus
cmd_move: update container representation in sibling swaps
swaymsg: use 3 digits for fractional part of the refresh rate
config/output: correct refresh rate rounding error
output: damage whole output when exiting scanout
Rouven Czerwinski (4):
input/cursor: reset event source after unhide
cursor: arm cursor hide timer immediately
cursor: update hide timer during config apply
ISSUE_TEMPLATE: the wiki is community maintained
Simon Ser (46):
seat: fix segfault in sway_input_method_relay_set_focus
Don't set xwayland cursor when wlr_xwayland failed
Unset DISPLAY when wlr_xwayland fails
tree/view: fix segfault in view_update_title
config/output: don't change output state before commit
Assert output is found before removing from list
Bump wlroots dependency to 0.11.0
Bump version to 1.5
Handle SIGINT
Use wlr_output_event_commit
build: bump wlroots dependency to 0.12.0
Replace wlr_key_state with wl_keyboard_key_state
Add missing includes for wlr_input_device.h
Log which output is using direct scan-out
Handle secondary headless backend failures
build: use WLR_HAS_* to decide whether suid is required
build: introduce sd-bus-provider option
build: add basu as sd-bus provider
Route wlroots logs into Sway logging infrastructure
common/log: write log importance
readme: releases are signed with E88F5E48
readme: remove link to non-existing wiki page
readme: use references for links
Test output before direct scan-out
Remove create_renderer_func argument
Remove call for action from WM enhancement issue template
readme: remove unused ref
man: update maintainer
desktop/xwayland: use index constants for atom array
Switch to wlr_xdg_surface_for_each_popup_surface
Rename output_layer_for_each_surface_{toplevel,popup}
protocols: update layer-shell-unstable-v1 to v4
Raise verbosity of error message in load_main_config
Log when config file is not found
readme: update French translation
build: use wlroots dependency variables
Fix wl_shm_format passed to wlr_texture_from_pixels
build: stop cargo-culting assignment alignment
man: document `input XXX map_to_output *`
Automatically map built-in touchscreens/tablets to built-in panels
xwayland: simplify override-redirect focus restoration
build: update version to v1.6-rc1
build: update version to v1.6-rc2
ci: add xcb-util-wm dependency for wlroots
build: bump to version v1.6-rc3
build: bump version to 1.6
SpizzyCoder (1):
Changed fprintf(stdout,...) to printf(...) for more readable code
Tadeo Kondrak (6):
text_input: Ignore text_input disable from unfocused windows
text_input: Only send surrounding_text and content_type if supported
text_input: Add support for focusing layer-shell surfaces
Fix incorrect damage being applied on popups
build: Add dependency on libdrm
output: Reconfigure xcursor when applying output config
Tamir Zahavi-Brunner (1):
hide_cursor: Add an option to hide when typing
Tarmack (1):
Add support for workspace_min_width bar option.
Thayne McCombs (2):
Keep windows in bounds on move to position mouse
Use wlr_output_layout_output_at to get output for move to cursor
Tobias Langendorf (2):
Fix X11 clients getting stuck minimized
xwayland: support views that change override-redirect status
Tudor Brindus (23):
Minor wording changes in Romanian README.md translation
commands/move: unwrap workspace container on move to new workspace
commands/move: maintain workspace_layout when moving
input/cursor: don't send wl_pointer.motion event on pointer unlock warp
input/pointer: update cursor activity after updating button counts
desktop/render: show indicators for top-level split
commands/move: fix single-split escaping on move
input/cursor: default tablet lens tool to relative motion
input/tablet: add tool_mode option to set tablet tools as relative input
xwayland: listen to `set_geometry` event
transaction: don't reconfigure X views unless integral coords changed
transaction: validate X transaction completions by geometry, not size
transaction: make transaction collapsing smarter with > 2 views
input: remove motion deltas from seatop callbacks
commands/focus: force container warp when fulfilling `focus mode_toggle`
input: fully change focus when scrolling tabs/stacks
input/seatop_default: consider fullscreen views to have no edges
tree/container: introduce `container_is_sticky[_or_child]` functions
Small wording change to README.ja.md
input/cursor: unhide cursor on synthetic input
commands/move: don't flatten on move; reap empty former parent instead
swaybar: use INT_MAX max JSON depth when parsing IPC response
swaybar: fail gracefully on tokener creation fail
Vinko Kašljević (1):
Add check for empty GEOM variable
Vlad Pănăzan (1):
Add layer shell subsurfaces
Vyivel (1):
output: simplify layer surface iteration
Wai Hon Law (1):
Make the default workspace commands compatible with i3
William Culhane (1):
grimshot: Fix man page issues
columbarius (1):
config: allow whitespaces in config path
ftilde (1):
Fix for_window criteria and mouse button bindings
fwsmit (1):
Implement foreign toplevel fullscreen output hints
heitor (2):
update portuguese README (fix typos, update informations...)
fix typo
lbonn (1):
focus: beyond fullscreen when focused explicitly
mwenzkowski (3):
container: Fix NULL pointer dereference
output: evacuate sticky containers only if new output has a workspace
output: Revert implementation of evacuate_sticky()
oliver-giersch (1):
swaynag: adds option to separately specify the text color for buttons
wb9688 (1):
Replace unprintable characters in input device id
xdavidwu (1):
Implement input method keyboard grab
Érico Rolim (1):
swaymsg.1: expand tip for multi-word strings.