Releases: swaywm/sway
sway 1.0
Sway 1.0 (together with wlroots) includes 6,875 changes from 205 contributors. This is the first stable release of sway. The recommended wlroots release for use with sway 1.0 is wlroots 0.5.
Changes
- We have completely overhauled the codebase. Some behaviors were changed to match i3 behavior, in breaking ways. There are likely many bugs we don't know about. Your millage may vary.
- swaygrab has been removed. For screenshots, try grim, and for video capture try wlstream
- This release depends on wlroots 0.5 and drops the dependency on wlc.
- This release depends on scdoc for generating man pages, and drops the dependency on asciidoc.
- Experimental Nvidia support has been deprecated since its inception, and has now been removed entirely. Please use nouveau and consider future purchases from GPU vendors that support open source. Other proprietary drivers are also unsupported.
- swaylock is now distributed separately
- swayidle, a new idle management daemon, is available separately
New Features
- 100% i3 compatible*
- 100% i3 IPC compatible*
- 100% i3-gaps compatible
- 100% i3bar compatible
* Not including a small number of features which are are deliberately unsupported, such as layout save/restore or features which only make sense on X11
Sway features
- swayidle, a daemon for managing DPMS and idle activity (e.g. automatic lock after a timeout), has been added -
man swayidle
to get started - swaynag, an i3-nagbar replacement, has been added, with additional features not supported by i3-nagbar -
man swaynag
to get started bindsym --locked
now adds keybindings which work when the screen is locked- Command blocks are now generic and work with any command
- Window opacity can now be adjusted with the
opacity
command border csd
now enables client-side decorations explicitly- Atomic layout updates ensure that, when resizing windows and adjusting your layout, you never see an invalid frame with partially drawn clients
- Urgency hints from Xwayland are now supported
- Output damage tracking significantly improves CPU performance and power usage
- Hardware cursors are now supported, improving performance
- The Wayland, x11, and headless backends are now supported for end-user use, enabling nested and headless sway sessions
- On-screen keyboards like virtboard are now supported
- Moving tiled windows with the mouse now behaves like the proposed i3 feature
- Pointer constraints allow video games and other applications to grab your pointer
Outputs
man 5 sway-output
- Output rotation (e.g.
output NAME transform 90
) - Fractional scaling (e.g.
output NAME scale 1.5
) - see man page for warnings - Windows can now be dragged between outputs with the mouse (and display correctly when dragged between outputs with different scale factors)
- Output resolution is now applied via modesetting
- Sway can now run on multiple GPUs
- Support for daisy-chained DisplayPort and other exotic configurations
- All sway clients (e.g. swaylock) now support HiDPI correctly
- A new gamma control interface with broader hardware support has been implemented* - see this redshift patch
* Some users will have issues with buggy drivers, particularly certain AMDGPU configurations
Inputs
man 5 sway-input
- Keyboard layout and XKB options may be specified in the config file
- Multitouch support is now stable
- Drawing tablets are now supported (partially - it emulates a mouse)
- You can now specify the status of num lock and caps lock on startup
- Multiple input devices can be bound to a single on-screen cursor (or several cursors)
- Multiple keyboards with different layouts can be used interchangeably
- Multiple seats can be configured (each with their own input devices and focused window)
- Input devices can be mapped to limit their influence to specific outputs or regions of the screen
- Input devices which provide absolutely positioned events (e.g. drawing tablets) can now limit their influence to a subregion of the input device
- Mouse movement and button presses can now be simulated with sway commands
Wayland Features
- Drag and drop is now supported
- Rich content (images, etc) can now be copied between Xwayland and Wayland
- GTK's primary selection protocol has been implemented (and syncs with Xwayland primary selection)
- The layer-shell protocol has been implemented (which allows for third-party panels, lock screens, notification daemons, etc)
- A real time screen capture protocol has been developed and implemented (which allows for future third-party screenshot and video capture tools)
- The idle & idle inhibit protocols have been implemented (which permits DPMS and the inhibition of DPMS by e.g. video players to work)
- Client-side/server-side window decorations negotiation has been standardized and implemented
- The xdg-shell stable protocol is now supported
swaylock
man swaylock
- Now supports different images on each output
- Appearance can now be configured
- Adds an optional config file
Misc
- Xwayland is now started only when the first X11 client is started
Bugs fixed
- All known problems with xdg-shell have been fixed (such as blurry menus that don't accept focus)
- All known problems with Xwayland have been fixed (such as Firefox menu weirdness)
- All known HiDPI bugs
- All known swaylock & swaybar bugs
- Reloading your config doesn't cause crashes
- TTY switching doesn't hang your system
- Most bugs in general are fixed
sway 1.0-rc5
Sway 1.0-rc5 contains 19 changes from 7 contributors since 1.0-rc4, and only
contains bug fixes.
The recommended wlroots version to use with this sway release is 0.4.1.
Package maintainers: please do not package this release.
Brian Ashworth (7):
execute_command: do not strip qoutes for cmd_mode
Add sway-ipc.7.scd to document IPC protocol
sway-ipc.7: clarify window_rect omits decorations
floating_maximum_size: change default behavior
render_floating: skip fullscreen floaters
sway.1.scd: document environment vars set by sway
meson: update scdoc requirement to >= 1.9.2
Ian Fan (1):
tray: fix pixmap colors
Noam Preil (1):
Fixes crash in spawn_swaybg (closes #3733)
Rouven Czerwinski (3):
cursor: remove unused node assignement
cursor: intitialize sx and sy to zero
config: remove double assignement to result in get_output_config
Ryan Dwyer (1):
Allow concurrent clicks
emersion (5):
Set minimum wlroots version
Print Meson features
Add output dpms to manpage
seat: don't send button release when not pressed
meson: check scdoc version
hugbubby (1):
Minor fix of code duplication.
1.0-rc4
Sway 1.0-rc4 contains 20 changes from 9 contributors since 1.0-rc3, and only contains bug fixes.
The recommended wlroots version to use with this sway release is 0.4.
Package maintainers: please do not package this release.
Brian Ashworth (7):
output_evacuate: call workspace_consider_destroy
output_get_active_workspace: check workspaces length
Handle NULL from output_get_active_workspace
move scratchpad: hide visible scratchpad container
input/cursor: allow whole-window bindings on ws
handle_layer_shell_surface: do not use noop output
handle_seat_node_destroy: update seat->workspace
Caleb Bassi (1):
ipc: add missing fields to disabled outputs
Carlo Abelli (1):
fix smart_borders description in manual
Connor E (1):
Make load_include_configs void. Fix some cases where WD would not be restored.
Eric Drechsel (1):
layout cmd: always operate on parent container, like i3Fixes #3724
Rouven Czerwinski (4):
ipc-client: free payload after sending it over the socket
run_as_ipc_client: free response after running the IPC command
commands/move: reintroduce wrongly removed NULL check
view: set xdg_decoration->view to NULL, check decoration destroy
Yorick van Pelt (1):
Add 'visible' key to view json response
emersion (3):
Fix drag icon map listener not removed
Don't use SOCK_CLOEXEC
Update for swaywm/wlroots#1517
minus (1):
Fix crash exiting fullscreened floating container
1.0-rc3
sway 1.0-rc3
Sway 1.0-rc3 contains 24 changes from 6 contributors since 1.0-rc2, and
only contains bug fixes.
The recommended wlroots version to use with this sway release is 0.3.
Package maintainers: please do not package this release.
Brian Ashworth (11):
cursor: relative-pointer-v1 time is usec
subsurface_get_root_coords: break on NULL
seatop_move_tiling: use tab/stack parent not self
seat: allow tree focus changes while layer focused
seatop_move_tiling: do not move to descendant
apply_output_config: dpms on before modeset
Fix reload freeze when not modsetting current mode
sway-input.5: document wildcard and identifier troubleshooting
workspace_next_name: fallback to next available number
seat_cmd_cursor: fix typo in expected syntax
Use container under cursor for mouse bindings
Drew DeVault (1):
Remove refs to unimplemented debuglog command
Ian Fan (4):
swaybar: prevent signal handler from firing during termination
tray: use correct parameter to set bus slot to floating
tray: when a service is lost, remove all matching items
tray: fix memory leaks
Vincent Vanlaer (1):
Check layout before getting pointer surface coords
athrungithub (1):
Don't remove from scratchpad on move to workspace
emersion (6):
Rebase cursor when a layer surface maps
Fix --version when building from tarball
Disable unneeded wlroots subproject features
Remove unused header include/sway/tree/output.h
Fix Meson subproject boolean default options
Disconnect swaybg instead of killing it
1.0-rc2
sway 1.0-rc2 Sway 1.0-rc2 contains 28 changes from 7 contributors since 1.0-rc1, and only contains bug fixes. The recommended wlroots version to use with this sway release is 0.3. Package maintainers: please do not package this release. Brian Ashworth (19): seat_cmd_cursor: do not create non-existing seat load_include_configs: fix wordexp fail condition swaynag: remove trailing newlines in config execute_command: dont strip quotes for exec_always IPC_COMMAND: split on newline cmd_workspace_gaps: fix double free on bad amount output_cmd_background: fix no file + valid mode load_main_config: add realpath to config_chain Clarify error for options and positional args load_main_config: use given path, store realpath seat_configure_tablet_tool: configure xcursor bar_cmd_modifier: add support for none container_at_stacked: skip titles when zero pixels input/keyboard: respect solo repeat_{rate,delay} view: remove pointer constraints on unmap ipc: handle unnamed xkb_active_layout_name fix misc memory leaks Abort early when XDG_RUNTIME_DIR is not set workspace_get_initial_output: handle focused layer Connor E (2): If validating the config, do it as early as possible. Initialize server so input manager is available. Daniel Eklöf (1): ipc_has_event_listeners: fix inverted check of subscribed_events Michael Vetter (1): Set version in project file Rouven Czerwinski (1): fix double free for mode toggle if bar was invisible emersion (2): Fix quote stripping Fix close_popups for xdg-shell vilhalmer (1): Focus ws inactive node with focus_follows_mouse
1.0-rc1
Sway 1.0-rc1 contains 311 changes from 32 contributors since 1.0-beta2. The release candidates are considered complete and will receive no new features, only bug fixes. Once a release candidate sees a week of testing without turning up any new bugs, it will become a stable release.
The recommended wlroots version to use with this sway release is 0.3.
Package maintainers: please do not package this release.
Changes
- swayidle and swaylock are now standalone projects and must be installed separately. These no longer depend on wlroots or sway's internals and can be used with other Wayland compositors.
- The minimum required scdoc version is now 1.8.1 (for generating man pages)
- The minimum required systemd version (for optional systemd integration) is now 239
New features
- Add tray support to swaybar. Note: this is limited to the SNI protocol. The legacy Xembed protocol is not yet supported, nor is the canonical dbus menu.
- Pointer constraints (necessary for locking the pointer in video games) is now supported
- Add
hide_cursor <timeout>
to hide the cursor when not in use - Support for clipboard managers such as wl-clipboard via the data-control-v1 protocol
- Tiling containers can now be stickied
- i3's
fullscreen global
command has been implemented - Seat commands can now refer to seat "-" to affect the current seat
- Add a new
xwayland
command to disable Xwayland in the config file - Add a new
tiling_drag_threshold
command
Improvements
- swaylock: clear password buffer on Ctrl-C, submit password on Ctrl-D
- Use meson feature options for build configuration
- Allow output ids and wildcard for workspace output
- Add option to bindsym/bindcode to suppress warning on override
- Add relative coordinates in JSON for i3bar click events
- swaybar: handle block->urgent
- Add
fullscreen_mode
to get_tree output - Allow tiling views to be dragged by the titlebar
- Change mouse buttons to x11 map and libevdev names
- Revamp seat configs
- swaylock: Add caps lock state to indicator
- swaybar: add status_padding command
- swaybar: add status_edge_padding command
- cursor: allow mapping to all outputs
- cursor: allow scrolling tabs/stack on title border
- bind{code,sym}, seat_cmd_cursor, bar_cmd_bind, input_cmd_scroll_button: improve mouse button parsing
- input_cmd_events: implement toggle
- get_inputs: add libinput send events mode
- Extend
input <identifier> events toggle
with a list of modes to toggle through
Bugfixes
This release is mostly bug fixes.
- Various shell completion improvements and fixes
- Fix the error result of the fullscreen command
- Fix outputs that are never enabled
- Keep focus when destroying containers on non-visible workspace
- swaybar: fix seperator block width for mixed scales
- swaybar: fix cursor scale
- swaynag: damage the cursor surface on update
- Terminate swaybg in output_disable
- Fix crash when scratchpad contains split containers
- Set font options when computing text width
- seat: unhide the cursor if it is warped to focus
- swaybar: fix rendering of border and background
- swaybar: obey height if given
- Handle empty $XDG_CONFIG_HOME better, without setting it
- Remove 'input' field of IPC command return json
- Disarm key repeat on reload
- Resize only current and immediate siblings rather than all siblings
- Handle hidden scratchpad containers in commands
- Permit resizing hidden scratchpad containers in some cases
- Don't abort when creating layer surfaces with zero outputs
sway 1.0-beta.2
Sway 1.0-beta.2 contains 274 changes from 36 contributors since 1.0-beta.1. Beta releases are considered feature-complete, but are not thought to be bug-free. Nevertheless, it should be suitable for most users, and we did not ship it with any known major bugs. Please use it and provide feedback.
The recommended wlroots version to use with this sway release is 0.2.
Package maintainers: please do not package this release.
New features
- Add
strip_workspace_name
(i3 4.16 feature) - Add
title_align
(i3 4.16 feature) - Add pixel argument for
border toggle
(i3 4.16 feature) - Add
width
andheight
toresize set
(i3 4.16 feature) - Allow multiple assignments of workspaces to output (i3 4.16 feature)
- Add a
scroll_factor
command to change linear scroll speed - Implement bar gaps
- Add
titlebar_border_thickness
andtitlebar_padding
to customize titlebar borders and padding - Add warnings to
swaynag
for duplicate keybindings and invalid background image path - Implement the presentation-time protocol
- Add multiseat support to swaylock
- Add support for SUBSCRIBE messages in
swaymsg
(i3 4.16 feature) - Implement per side and per direction outer gaps
- Add active keyboard layout to
swaymsg -t get_inputs
- Add
output XXX transform <transform> clockwise|anticlockwise
for relative
transforms - Add
focus_follows_mouse always
- Make
swayidle
enter idle state on SIGUSR1
Improvements
workspace back_and_forth
is now per-seat- Support for additional i3 window types
- Add
window_properties
for Xwayland views in IPC replies - Update the surface under the cursor when switching views
- Add a flag to make
swaynag
run commands directly instead of in a terminal (i3 4.16 feature) - Add scratchpad containers to
get_tree
reply - Improved fish shell completions
- Match single-key bindings if no multi-key binding matched
- Improved
swaymsg -t get_outputs
mode information - Allow variables to contain commands and multiple arguments
- Allow multiple outputs for
workspace <workspace> output <outputs...>
Bugfixes
This release is mostly bug fixes.
- Fix
focused
properties inget_outputs
replies - Fix pango markup for
title_format
- Fix
swaybar
output hotplug - Fix font sizes on
reload
- Fix
swayidle
event loop - Various fixes to make Firefox Nightly with native Wayland work
- Change
exec
to return a list of results - Fix crash when moving a container to a fullscreen workspace
move to workspace
: fix moving floating container to non-empty workspace- Fix crash when quitting a QT app on the wayland backend using menu
- Fix xwayland
wants_floating
logic - Fix move events for scratchpad containers
- Fix crash when resizing container hidden in the scratchpad
- Fix
cmd_swaynag_command
- Fix swaybar crash when there's no status_command
- Fix sway clients not exiting when compositor exits
- Fix dormant cursor when using multiple seats
- When scrolling on a tab titlebar, set focus inactive if not focused
- Fix containers not being resized when entering scratchpad
resize set
: convert ppt to px for floating containers- Fix swaybar scrolling
- Fix crashes when there's no output connected
- Fix re-tiling for floating containers
- Fix focus after a non-visible workspace's last container is destroyed
- Wrap to fartherest output when running focus output
- exec_always: defer command on config validation
1.0-beta.1
Sway 1.0-beta.1 contains 2,544 changes from 80 contributors since 0.15.2, plus 3,225 changes from 67 contributors via wlroots, for a total of 5,769 changes from 128 people over the past 14 months, and is the first beta release of sway 1.0. Beta releases are considered feature-complete, but are not thought to be bug-free. Nevertheless, it should be suitable for most users, and we did not ship it with any known major bugs. Please use it and provide feedback.
Package maintainers: please do not package this release.
Breaking Changes
- We have completely overhauled the codebase. Some behaviors were changed to match i3 behavior, in breaking ways. There are likely many bugs we don't know about. Your mileage may vary.
- swaygrab has been removed. For screenshots, try grim, and for video capture try wlstream
- This release depends on wlroots 0.1 and drops the dependency on wlc.
- This release depends on scdoc for generating man pages, and drops the dependency on asciidoc.
- Experimental Nvidia support has been deprecated since its inception, and has now been removed entirely. Please use nouveau and consider future purchases from GPU vendors that support open source. Other proprietary drivers are also unsupported.
New Features
- 100% i3 compatible*
- 100% i3 IPC compatible*
- 100% i3-gaps compatible
- 100% i3bar compatible**
* Not including a small number of features which are are deliberately unsupported, such as layout save/restore or features which only make sense on X11
** Not including tray icons
Sway features
- swayidle, a daemon for managing DPMS and idle activity (e.g. automatic lock after a timeout), has been added -
man swayidle
to get started - swaynag, an i3-nagbar replacement, has been added, with additional features not supported by i3-nagbar -
man swaynag
to get started bindsym --locked
now adds keybindings which work when the screen is locked- Command blocks are now generic and work with any command
- Window opacity can now be adjusted with the
opacity
command border csd
now enables client-side decorations explicitly- Atomic layout updates ensure that, when resizing windows and adjusting your layout, you never see an invalid frame with partially drawn clients
- Urgency hints from Xwayland are now supported
- Output damage tracking significantly improves CPU performance and power usage
- Hardware cursors are now supported, improving performance
- The Wayland, x11, and headless backends are now supported for end-user use, enabling nested and headless sway sessions
- On-screen keyboards like virtboard are now supported
- Moving tiled windows with the mouse now behaves like the proposed i3 feature
Outputs
man 5 sway-output
- Output rotation (e.g.
output NAME transform 90
) - Fractional scaling (e.g.
output NAME scale 1.5
) - see man page for warnings - Windows can now be dragged between outputs with the mouse (and display correctly when dragged between outputs with different scale factors)
- Output resolution is now applied via modesetting
- Sway can now run on multiple GPUs
- Support for daisy-chained DisplayPort and other exotic configurations
- All sway clients (e.g. swaylock) now support HiDPI correctly
- A new gamma control interface with broader hardware support has been implemented* - see this redshift patch
* Some users will have issues with buggy drivers, particularly certain AMDGPU configurations
Inputs
man 5 sway-input
- Keyboard layout and XKB options may be specified in the config file
- Multitouch support is now stable
- Drawing tablets are now supported (partially - it emulates a mouse)
- You can now specify the status of num lock and caps lock on startup
- Multiple input devices can be bound to a single on-screen cursor (or several cursors)
- Multiple keyboards with different layouts can be used interchangeably
- Multiple seats can be configured (each with their own input devices and focused window)
- Input devices can be mapped to limit their influence to specific outputs or regions of the screen
- Input devices which provide absolutely positioned events (e.g. drawing tablets) can now limit their influence to a subregion of the input device
- Mouse movement and button presses can now be simulated with sway commands
Wayland Features
- Drag and drop is now supported
- Rich content (images, etc) can now be copied between Xwayland and Wayland
- GTK's primary selection protocol has been implemented (and syncs with Xwayland primary selection)
- The layer-shell protocol has been implemented (which allows for third-party panels, lock screens, notification daemons, etc)
- A real time screen capture protocol has been developed and implemented (which allows for future third-party screenshot and video capture tools)
- The idle & idle inhibit protocols have been implemented (which permits DPMS and the inhibition of DPMS by e.g. video players to work)
- Client-side/server-side window decorations negotiation has been standardized and implemented
- The xdg-shell stable protocol is now supported
swaylock
man swaylock
- Now supports different images on each output
- Appearance can now be configured
- Adds an optional config file
Misc
- Xwayland is now started only when the first X11 client is started
Bugs fixed
- All known problems with xdg-shell have been fixed (such as blurry menus that don't accept focus)
- All known problems with Xwayland have been fixed (such as Firefox menu weirdness)
- All known HiDPI bugs
- All known swaylock & swaybar bugs
- Reloading your config doesn't cause crashes
- TTY switching doesn't hang your system
- Most bugs in general are fixed
1.0-alpha.6
Sway 1.0-alpha.6 contains 390 changes from 18 contributors. Note that sway alpha releases are not considered complete, are missing many features, and will have many bugs. You are strongly encouraged to remain on sway 0.15.x if you are not prepared to deal with constant breakage and keep quiet about it. Please do not submit bug reports for this version of sway. Submit patches instead.
Most of this release is bug fixes and aligning sway ever closer with i3 - our compatibility checklist is 92% complete. We have only a few items left on our todo list for 1.0-beta.1: security features, full drawing tablet support, and pointer locking being the big ones. We also landed a large refactoring in this release, which may make things more unstable for a little while but in the long run will flush out more bugs than not.
The recommended wlroots version to use with this sway release is 842368e.
Package maintainers: please do not package this release.
This changelog only includes new features since 1.0-alpha.5. Bugfixes are not included.
New Features
- Moving & resizing tiled windows with the mouse is now supported*
resize grow|shrink <direction> <amt>
now supported for tiled containers*move to workspace <n>
now works with floating containerswindow_role
critiera now supported- You can now specify a fallback color for swaybg
This release is mostly bug fixes.
* Works even better than on i3!
1.0-alpha.5
Sway 1.0-alpha.5 contains 273 changes from 21 contributors. Note that sway alpha releases are not considered complete, are missing many features, and will have many bugs. You are strongly encouraged to remain on sway 0.15.x if you are not prepared to deal with constant breakage and keep quiet about it. Please do not submit bug reports for this version of sway. Submit patches instead.
We're starting to see the light at the end of the tunnel here. We've defined the list of features necessary to ship 1.0-beta.1, which will be considered the feature-complete 1.0 release (but not considered bug-free). Sway 1.0 is drawing near!
The recommended wlroots version to use with this sway release is 4ed6ee0.
Package maintainers: please do not package this release.
This changelog only includes new features since 1.0-alpha.4. Bugfixes are not included.
New Features
- Interactive move and resize of floating views (with the mouse)
- Scratchpad support
- Support for running sway on multiple GPUs
- "swaynag" added to offer similar functionality to i3-nagbar
- Virtual keyboard protocol added for on-screen keyboards
- Specify numlock and capslock's value on startup (
input * xkb_numlock enabled|disabled
) - pid->workspace mappings (if you start a program and switch workspaces, we remember where you were and open the window there)
- Mouse bindings
- Full support for i3-compatible IPC events
focus output [name]
assign [critera] to output [name]