Skip to content

Releases: swaywm/sway

sway 1.1-rc1

03 May 17:34
Compare
Choose a tag to compare
sway 1.1-rc1 Pre-release
Pre-release

sway 1.1-rc1 includes 119 changes from 40 contributors. This release introduces a few new features, but for the most part just fixes bugs and improves i3 compatibility.

swaybg is now distributed as a standalone program which is compatible with many Wayland compositors. Unlike the other sway clients which have been split into separate projects, however, swaybg is a required dependency of sway. Packagers are encouraged to configure it as such when updating sway for their distribution.

You do not have to change your sway configuration to accomodate for the swaybg changes - the same output commands will still work.

Changes

  • swaybg is now a standalone project

New Features

  • swaybar now includes touch support - tapping to activate hotspots and dragging across to cycle through workspaces
  • You can now manually inhibit idle notifications (DPMS) when a certain criteria is active via inhibit_idle
  • Keybindings can now be unconfigured at runtime via unbind{sym,code,switch}
  • workspace {prev,next}_on_output --create will create the next workspace instead of wrapping to the start
  • Output subpixel layouts can now be explicitly configured
  • i3bar's short_text properties in the JSON protocol are now supported
  • swaybar now supports an "overlay" mode, which shows the bar on top of other windows and doesn't process input events
  • Switch devices (like lid switches) are now supported and can be bound to actions via bindswitch
  • swaymsg now supports a -p/--pretty option for explicitly enabling pretty-printing

Changelog

3ap (1):
      config.in: allow launch apps with args via dmenu

Alex Maese (7):
      Fix a crash in swaybar when an icon dir is not readable
      Create unbindsym and unbindcode commands
      Add unbindswitch command
      Add unbindsym/unbindcode command for swaybar
      Clear pointer focus during move and resize seatops
      Don't send pointer motion when rebasing the cursor
      Fix a silly mistake

Ashkan Kiani (5):
      Fix crash for floating command on scratchpad window
      Fix scratchpad logic for floating windows
      Fix potential null accesses
      Add documentation for rename workspace
      Fix the payload type returned by IPC

Benjamin Cheng (2):
      Add heuristics to differentiate touchpads
      Implement input type configs (#3784)

Brian Ashworth (33):
      get_deco_rect: fix floaters on tabbed/stacked ws
      criteria: change workspace to support regex
      xwayland: handle floating configure request size
      Set prev_workspace_name based off of focus
      output_cmd_background: validate colors
      Fix output config retrieval for new outputs
      config/output: revamp identifier/name layering
      config/output: handle wildcard in get_output_config
      cmd_mode: allow cmd_set to be a subcommand
      criteria: fix __focused__ when no focus or unset
      fix opening a floating view on the NOOP output
      Implement inhibit_idle command
      Fix xwayland configure request scratchpad crash
      floating: fix size of non-view containers
      scratchpad: set initial size
      root_scratchpad_hide: fix crash when layer focused
      idle_inhibit: fix crash during view destruction
      swaybg: one instance for all outputs
      Honor output for xdg_toplevel_set_fullscreen
      cmd_focus: raise floating for `<criteria> focus`
      Fix scratchpad fullscreen behavior and crash
      swaynag: fix pointer management
      Spawn swaynag as a wayland client
      swaymsg: add timeout and type checks
      cmd_move: allow for all i3 syntax options
      ipc: fix criteria for emitting bar_state_update
      swaynag: revamp type configs
      swaybar: hide mode visibility improvements
      swaybar: add multiseat support
      cmd_move: respect workspace layout when inserting
      cmd_move: add support for output current
      sway.5.scd: clarify workspace config commands
      swaymsg: fix quiet error reporting

Connor E (2):
      Allow 0 degree transform (normal transform).
      Add deprecation warnings for new_float, new_window, and force_focus_wrapping.

Dacheng Gao (6):
      add chinese translation
      fix cs
      fix cs
      add link to README-zh-CN
      fix typo
      fix broken link to README.zh-CN.md

Dmitri Kourennyi (3):
      Implement handling of short_text field of i3 input protocol.
      Ensure predicted position for short text handling doesn't overflow.
      Add margin to short_text handling.

Drew DeVault (5):
      swaybar: process hotspots on touch tap
      swaybar: cycle workspaces on touch drag
      Update formatting of zh-cn link in README.md
      Remove obsolete README translations
      Bump required wlroots version

Flakebi (1):
      Flush stdout in swaymsg when in subscribe mode

Geoff Greer (1):
      Add support for manually setting subpixel hinting on outputs.

Ian Fan (1):
      commands: allow tiled sticky containers to be moved

Igor Sviatniy (1):
      Update README.uk.md

Ilja Kocken (1):
      Add link to i3 in first mention of README

Jan Beich (1):
      config/output: unbreak on 32-bit architectures

Jan Pokorný (1):
      bindings: fix overwrite log argument mismatch

Konstantin Pospelov (7):
      Implement bindsym --to-code
      config: simplify keysym translation fields
      bindsym: change default keymap for --to-code
      bindsym: update the man page to include --to-code
      bindsym: consider xkb_rule_names for --to-code
      bindsym: change xkb_rule_names initialization
      config: fix clang warning

Lane Surface (1):
      Remove extra inclusion of stdio.h

Martin Michlmayr (1):
      sway-input.5: add xkeyboard-config(7) to "see also"

Maxime “pep” Buquet (1):
      Validate icon_struct in read_theme_file

Milkey Mouse (1):
      swaybar: add overlay mode (fix #1620)

Peter Grayson (1):
      Repair swaynag crash reading message from stdin

Philipe Goulet (1):
      Fix #3924

Philz69 (1):
      Updated the french readme (#3964)

Ranieri Althoff (1):
      Send disabled output available modes on IPC get_outputs

Ryan Dwyer (7):
      Replace seatup allows_events with button callback
      Introduce default seatop
      Document the title_format command
      Remove debug tree
      Clean up focus follows mouse logic
      Support focus <direction> for floating containers
      Fix null pointer crash when doing tiling drag

Ryan Walklin (1):
      Support WLR_INPUT_DEVICE_SWITCH in sway

Scott Anderson (1):
      Fix uninitialized read for wlr_surface_send_frame

Simon Ser (4):
      swaybg: add manpage
      Update for wlroots#1660
      ci: enable all features
      Don't submit too much damage

Stephan Hilb (1):
      swaybar: fix loading of malformed icon theme

Tim Sampson (1):
      fish: improve completions a little bit

Yábir Benchakhtir (1):
      Spanish translation of the README

Yábir García (2):
      Add spanish link to the home README
      Fix accents

bschacht (1):
      Set the correct version for wlroots dependency

db (1):
      add --i3 flag to hide_edge_borders

emersion (6):
      ci: add Alpine CI
      ci: add FreeBSD
      Add wp-primary-selection-unstable-v1
      ci: use scdoc-git because 1.9.1 is broken
      Fix size_t temporary underflow in log_loaded_themes
      Stop using wlr_output->{lx,ly}

jajo-11 (1):
      Add German translation of the README

ljedrz (1):
      Add Polish README

minus (1):
      Fix quoting of commands passed to for_window

mliszcz (1):
      Allow for workspace renaming during exec handling

mwenzkowski (3):
      view.c: refactor view_autoconfigure()
      Don't apply hide_edge_borders to floating windows
      hide_edge_borders.c: add missing case for --i3

sway 1.0

11 Mar 15:09
Compare
Choose a tag to compare

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

04 Mar 17:53
Compare
Choose a tag to compare
sway 1.0-rc5 Pre-release
Pre-release

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

25 Feb 22:15
Compare
Choose a tag to compare
1.0-rc4 Pre-release
Pre-release

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

18 Feb 20:18
Compare
Choose a tag to compare
1.0-rc3 Pre-release
Pre-release
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

11 Feb 15:28
Compare
Choose a tag to compare
1.0-rc2 Pre-release
Pre-release
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

03 Feb 14:13
bbfe13a
Compare
Choose a tag to compare
1.0-rc1 Pre-release
Pre-release

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

29 Nov 22:28
fd37ded
Compare
Choose a tag to compare
sway 1.0-beta.2 Pre-release
Pre-release

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 and height to resize 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 and titlebar_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 in get_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

20 Oct 22:06
3f02218
Compare
Choose a tag to compare
1.0-beta.1 Pre-release
Pre-release

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

21 Sep 13:46
Compare
Choose a tag to compare
1.0-alpha.6 Pre-release
Pre-release

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 containers
  • window_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!