Sway 1.11 contains 189 changes from 53 contributors.
This release depends on wlroots 0.19.0. See the wlroots release notes.
New features
- All of the enhancements from wlroots 0.19.0.
- Add support for linux-drm-syncobj-v1 for explicit synchronization
- Add support for alpha-modifier-v1 for setting an alpha multiplier for a surface
- Add support for ext-image-copy-capture-v1 and ext-image-capture-source-v1 for improved screen capture
- Add support for ext-data-control-v1 as an alternative protocol for clipboard managers
- Improved output configuration logic for better and faster fallbacks
- Pointer keys are now supported and can be bound in keymaps to trigger pointer events
- security-context-v1 metadata is exposed in IPC, and can be used in criteria and title format
Changes
- The default configuration file now ships key bindings for a few utilities: pactl, brightnessctl, grim
- The default menu now uses wmenu-run and no longer depends on dmenu_path.
- The default tap-and-drag lock mode has been switched to sticky as recommended by upstream
- The
sway.desktop
file now setsDesktopNames
(XDG_CURRENT_DESKTOP
will be set by login managers)
Full changelog
Adam Chovanec (1):
readme: update Czech translation
Alexander Orzechowski (19):
transaction: Reparent all container children when disabling for scratchpad
xwayland: Let scene restack
output: Use wlr_scene_output_needs_frame
output: Use wlr_scene_set_gamma_control_manager_v1
output: Chase wlroots!4803
container: Skip % char if it doesn't match a view property
text_input: Check for allocation failure
text_input: Move popup placement to own function
transaction: Allow no popup descriptor in popup list
text_input: Properly handle map/unmap events
text_input: Inline input_popup_update into input_popup_set_focus
Fix alpha-modifier-v1
layer_shell: Arrange exclusive zone clients first
layer_shell: Restore sway 1.9 ordering
container: Properly constrain title bar padding
swaybar: Handle opaque region properly
output: Expose output_configure_scene to header
output: Allow configuring scene without an output
commands/opacity: Call output_configure_scene on updated container
Anna (navi) Figueiredo Gomes (1):
sway/commands/move.c: arrange new workspace
AsciiWolf (1):
Remove language bars from remaining non-English README files
Attila Fidan (1):
input/cursor: remove tool_proximity listener in destroy
Baltazár Radics (1):
input/libinput: fix parsing input drag_lock command
Bill Li (4):
build: Bump wlroots version
Chase wlroots!2434
ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel
Drop wlr_matrix.h include from sway/desktop/output.c
Bonsaiiv (1):
Improve example of input section in default config
Chris Perl (1):
Remove constraint that con->view != NULL to use __focused__ criteria
Claudia (1):
Fix tabbed/stacking container height regression
Dan Baterisna (1):
man: Document bar mode toggle command
Daniel De Graaf (1):
Use wl_event_loop_add_signal for exit signals
Dennis Baurichter (1):
man: clarify criteria (incl. PCRE2 usage)
Emil Engberg (1):
Add toggle for output adaptive_sync
Felix Pehla (1):
commands/output/color_profile: allows use of relative path for ICC profile
Ferdinand Bachmann (7):
sway/ipc-json: add ext-foreign-toplevel-handle identifier to get_tree ipc output
server: remove event listeners on fini
input/input-manager: remove event listeners on fini
desktop/idle_inhibit: remove event listeners on destroy
input/text_input: remove event listeners on destroy
tree/container: remove event listeners on destroy
server: recreate renderer in idle callback to avoid UAF
Filip Vujičić (1):
Remove duplicate arrange_container
Furkan Sahin (6):
swaybar: Fix 100% cpu usage if dbus dies.
input/mouse: bugfix button2 being interpreted as trying to move the container
output/background: fix config ignoring fallback color
ipc: standardize pretty print with raw print
sway/commands: Handle incorrect resize unit
input/seatop_down: Update decorations for touchscreen inputs
György Kurucz (1):
input/libinput: fix builtin device detection logic
Hong Xu (1):
Explain that the title bar always shows
Jacob McNamee (3):
tree/view: add getters for sandbox properties
tree/container: support sandbox properties in title format
swaymsg: pretty-print sandbox properties
James Knight (1):
build: avoid git repository discovery when determining version
Jan Palus (1):
trigger container update after disabling urgent in timer
Jim (1):
Increase max default buffer size to 1 MiB
JingMatrix (1):
Add null-safety check for virtual keyboard keymaps
Joan Bruguera Micó (2):
layer-shell: Restore interactive layer focus code
swaybar: Emit property changes for SNI watcher
Jon Wallace (2):
Use heading markdown to demarcate sections of commands Its a little tought to notice that the COMMANDS section is actually 3 sections. Use markdown to make this easier to see for the user.
use subheadings instead
Kenny Levinsen (51):
desktop/output: Stop repaint loop when not needed
config/output: Do not set adaptive_sync if not supported
config/output: Skip search if config has a mode
desktop/output: Do not use commit listener to arrange
tree/output: Rely on modeset arranging root
(desktop|tree)/output: Do not use layout listener to arrange
desktop/output: Avoid duplicate output manager update
tree/output: Avoid duplicate input mapping configure
tree/arrange: Remove redundant output geometry update
desktop/transaction: Deactivate workspace on inactive outputs
tree/arrange; Skip arranging disabled outputs
config/output: Support multiple matches in find_output_config
config/output: Always start with default in find_output_config
config/output: Accept a list of output_configs to use
config/output: Rename to apply_stored_output_configs
ext-session-lock: Do not use commit listener to arrange
config/output: Add support for 6-bit render fmt
config/output: Stringify render format when logging it
commands/gaps: Check config->reading instead
desktop/output: Expose request_modeset
config: Batch input/output configuration on load
desktop/output: Clear modeset timer on output manager apply
Re-init renderer for all outputs on lost context
config/output: Improve modeset state logging
config/output: Always set output states from config
config/output: Always set all output fields on finalize
config/output: Remove initial values in find_output_config
config/output: Remove remaining logs from queue_output_config
desktop/output: Store output config on request_state
desktop/output: Add missing output config allocation checks
config/output: Update output position in two passes
desktop/output: Clean up output state if build_state fails
desktop/output: Clear frame_pending even output is disabled
config: Force modeset before running deferred configs
ipc-server: Force modeset if needed after executing commands
desktop/output: Clear repaint timer earlier in destroy
sway_text_node: Apply max_width when rendering
sway_text_node: Remove use of source box
Rework fork/exec strategy
Use SIG_IGN for SIGCHLD instead of our own handler
config/output: Reset everything before swaybg exec
desktop/output: Skip repaint if wlr_output is disabled
Avoid crashing on too many containers
idle_inhibit: Ignore inhibitors when locked
idle_inhibit: Explicitly handle layer surfaces
idle_inhibit: Assume view is invisible by default
idle_inhibit: Check if layer surface output is enabled
config/output: Use INT_MAX as x/y unset value
config/output: Fix missing output config supersedes
output: Minimize interaction with output after destroy
tree/workspace: Remove exclude arg from get_highest_available
Kirill Primak (5):
xwayland: chase wlr_xwayland_surface_set_maximized() change
tearing: remove trailing whitespace
tearing: fix UAF on destroy
xdg-shell: chase xdg_surface geometry updates
desktop/output: chase wlroots private fields update
Loukas Agorgianitis (1):
server: fix shutdown crash when running on x11 backend
Manuel Stoeckl (1):
swaynag: fix null dereference on scale change
Mark Stosberg (1):
docs: use "window" instead of "view" throughout.
Norbert Bolanowski (1):
move title_format to container
Olivia Taliesin (1):
Removed destination-is-ancestor check from container_move_to_container to match i3 behaviour
Paul Riou (1):
stringop: fix has_prefix() arg order in config parsing
Pavel 'LEdoian' Turinsky (1):
Fix includes with relative paths
Piotr Piwoński (1):
sway/commands: Return error if container is not in scratchpad
Puck Meerburg (2):
ipc-json: add sandbox properties to view JSON
criteria: add sandbox properties
Ricardo Steijn (1):
Add support for tearing-control-v1
Scott Dubinsky (1):
Remove unguarded double include
ShootingStarDragons (2):
fix: sway crashes if switch to another workspace with surface when IME popup is shown
text_input: Fix ime panic in ext-session-lock
Simon Ser (32):
build: use fs.relative_to() instead of hand-rolled logic
desktop/xwayland: don't restack when marking window as inactive
Add support for linux-drm-syncobj-v1
Bind a few utilities to special keys in default config
Switch default config to wmenu-run
Add support for alpha-modifier-v1
release: push tags before creating GitHub release
server: check backend support for timelines
input/keyboard: add support for pointer keys
input/seatop_default: refactor move/resize button logic
release.sh: read meson-rewrite output from stdout
ipc-json: handle LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY
Add support for LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY
stringop: move over has_prefix()
Use has_prefix() instead of strncmp() throughout
Fix has_prefix() comparisons with 0
config/output: don't hardcode DMA-BUF in search_render_format()
Add ext-image-copy-capture-v1 and ext-image-capture-source-v1
Fix crash on shutdown when Xwayland is disabled
swaymsg, swaynag: drop sway_terminate() definitions
server: move sway_terminate() definition to header
Drop wl_drm again
build: bump version to 1.11-rc1
Use pthread_atfork() to restore signals and NOFILE limit
Replace signal() with sigaction()
build: bump version to 1.11-rc2
build: bump version to 1.11-rc3
ci: pin wlroots to 0.19.x
input: fix udev_device leak
Log message on for_window command error
build: bump version to 1.11-rc4
build: bump version to 1.11
Solt Budavári (1):
Fix orthographic mistakes in Hungarian README
Steffen Dirkwinkel (1):
config/output: support DRM_FORMAT_ARGB8888
Violet Purcell (1):
tree/container: remove output_{enter,leave} listeners in destroy
YaoBing Xiao (1):
server: fix socket path memory leak
alex-huff (7):
transaction: Ensure all tabs are visible in tabbed mode
move: fix broken titlebar when moving child to new workspace
transaction: ensure border scene is enabled for floating containers
transaction: fix size of child container decorations in stacking layouts
transaction: reparent scenes of containers behind fullscreen containers
layer-shell: reclaim space from unmapped layer surfaces
transaction: fix floating fullscreen containers
llyyr (7):
sway/tree/container: don't trunc coords in `floating_fix_coordinates`
sway/input/keyboard: always set active keyboard if there is none
sway/server: bind to presentation-time-v2
layer_shell: cleanup new_popup listener when destroying node
config/output: don't leak background_fallback
sway/server: create ext-data-control manager
layer_shell: destroy layer_surface on assigned output destruction
melvinm1 (1):
Fix output repositioning in global fullscreen
mtvare6 (3):
desktop/transaction: clamp vertical border length to 0
commands/include: handle many files in single line
config/output: skip format checks if all are supported
nilninull (1):
Add the DesktopNames key to the sway.desktop session file
odyxz (1):
raise scratchpad container