github swaywm/sway 1.5

latest releases: 1.10, 1.10-rc4, 1.10-rc3...
4 years ago

Sway 1.5 contains 284 changes from 78 contributors. This release introduces a lot of new features, but also contains numerous bug fixes.

The recommended wlroots version to use with this release is 0.11.0.

New features

  • Headless outputs can now be created dynamically via the create_output
    command, and can be used with WayVNC
  • Input method editors (IME) are now supported via the input-method and
    text-input protocols
  • Adaptive synchronization (aka. variable refresh rate, VRR) can be enabled
    to reduce stuttering in games
  • Support for the viewporter protocol, allowing older X11 games to work
    better and improve performance
  • Allow virtualization and remote desktop software to inhibit keyboard
    shortcuts
  • Support for the wlr-foreign-toplevel-management protocol, allowing
    custom docks and window switchers
Full changelog
Adam Kürthy (2):
      Take window borders into account when resizing floating windows
      Really fix floating window border resize problems

Aleksei Bavshin (1):
      Adjust focus order to match rendering order of layer shell popups.

Alex Maese (2):
      Add ability to remove the floating modifier
      Add documentation for floating_modifier

Anders (1):
      criteria: match containers without view

Andri Yngvason (6):
      input: Assign virtual input devices to their selected seats
      swaynag: Add multi-seat support
      swaybar: Fix input device removal
      input: Map virtual-pointer to the requested output
      input: Mark virtual devices as such
      input: keyboard: Never group virtual keyboards.

Bill Doyle (1):
      Only destroy swaybar surface via ipc when needed

Bor Grošelj Simić (1):
      input: implement cycling through keyboard layout list

Brian Ashworth (20):
      render: do not render indicator on floating views
      input/cursor: handle image surface destroy
      input/cursor: handle setting a NULL image surface
      view: remove workspace pid mapping for assigns
      container: add inactive fullscreen to focus stack
      desktop/output: fix mem leak in handle_new_output
      output: apply oc to outputs using wl_for_each_safe
      container_at_{tabbed,stacked}: check x-axis bounds
      config: fix validation exit code and log level
      cmd_swap: fix test_mark condition
      output: fix updating output manager config
      tree/view: do not attempt enter on hidden child
      input_cmd_events: add support for input types
      Revert "Don't apply exclusive zones of unmapped layer-shell surfaces"
      sway.5: correct description of workspace [number]
      ISSUE_TEMPLATE: note debug logs should be from TTY
      input: reset keyboard groups keyboard on reset all
      input: fix reloading crash due to keyboard group configuring
      seat_cmd_cursor: emit frame events
      input/keyboard: wlr_keyboard_group enter and leave

Campbell Vertesi (1):
      Add note on quoting to swaymsg manpage

Cassandra McCarthy (1):
      integer scaling, not integral

Cyril Levis (2):
      Add the possibility to capture only one screen if several screens are use.
      Change wording

Damien Tardy-Panis (1):
      Add views idle inhibition status in get_tree output

David Arnold (2):
      grimshot: Unary operator expected
      grimshot: fix POSIX compliance

David96 (4):
      Render layer shell popups over the top layer
      Don't transfer focus to NULL node on touch
      Don't unhide cursor on touch events
      Implement pointer simulation if client hasn't bound to touch

Dennis Schridde (1):
      Document input selector precedence

Di Ma (4):
      Fix a use-after-free error in switch binding
      Fix a use-after-free error in switch binding
      Fix a use-after-free error in switch binding
      Fix a use-after-free error in switch binding

Dominique Martinet (3):
      swaynag: fix segfault on exit when arguments are not correct
      swaynag: exit on wl_display_roundtrip error
      build: make completions respect install prefixes

Drew DeVault (4):
      Update wlroots version
      Update version to 1.4
      Implement wlr-foreign-toplevel-management-v1
      Update version to v1.5-rc2

Ejez (1):
      Correct typo in sway-output.5.scd

Eli Schwartz (3):
      meson: use join_paths to build paths, instead of string concat
      completion: use pkg-config to get install location for bash/fish
      fish-completion: use the correct fallback directory

Eric Engestrom (1):
      bash completion: swaymsg accepts --version, not --verbose

Geoffrey Casper (1):
      Reload command now matches i3's implementation

Graham Christensen (1):
      swaynag: allow specifying more buttons which execute and dismiss

Hristo Venev (2):
      Do not truncate pointer coordinates to int.
      swaybar: fix i3bar relative coordinates when scaling is used

Hugo Osvaldo Barrera (7):
      grimshot: Allow configuring default directory
      grimshot: Avoid screenshots overwriting each other
      grimshot: Show usage when on invalid command
      grimshot: Allow manually picking a window
      grimshot: Add a separate flag for notifications
      grimshot: Add a man page
      grimshot: Skip creating a temp file when copying

Ian Fan (6):
      ipc: add missing required properties
      swaybar: fix memory leaks
      tray: better errors when parsing index.theme
      tray: allow themes to inherit from multiple themes
      tray: tidy code
      tray: track SNI callbacks

Ian Huang (1):
      interpret "subpixel none" as CAIRO_ANTIALIAS_GRAY

Ihor Kalnytskyi (1):
      scdoc: unbindcode --input-device, not input-device

Isaac Freund (1):
      output: simplify loop over layer surfaces

JR Boyens (1):
      Use transparency arg in the window focus event

Jamelly Ferreira (2):
      Adding a version of README.md in Portuguese
      Adding the link to the Portuguese on the English version of README.md

James Mills (1):
      Fix typo in swaybar-protocol.7.scd

Jan Beich (2):
      common/log: bump POSIX version used after e81d9fde667e
      protocols: sync wlr-layer-shell-unstable-v1 with wlroots

Jason (2):
      Docs: explain why menu command should be passed to sway
      Update fish completions

Jason Nader (12):
      Amend typo
      commands/move: Fix crash when required args not provided
      Check argc>0 before strcasecmp. Should shortcircuit
      Docs: Add marks field to get_tree response
      i3compat: add `window_type` to IPC response
      i3compat: add `window_type` to IPC response
      ipc-server: improve error message
      Limit workspace numbers within 0..INT32_MAX
      commands/bind.c: remove unnecessary check
      sway/input/cursor.c: move NULL check to where it should be
      sway/input/cursor.c: fix undefined behaviour when event is NULL
      i3-compat: add GET_BINDING_STATE IPC command

Johan Bjäreholt (1):
      tree/view: Make foreign-toplevel app_id fallback to class

Jonas Große Sundrup (1):
      rephrase swayidle-timout example to improve readability

Josh Shone (1):
      Fix hit test for floaters that cross outputs

Kalyan Sriram (1):
      Save transform during transaction

Kenny Levinsen (9):
      Simplify repaint scheduling documentation
      view: Save all buffers associated with view
      view: update_size should only update pending size
      transaction: Account for full size when centering content
      transaction: Improve transaction commentary
      container: Remove useless surface dimensions
      shells: Resize on commit if geometry x/y changes
      transaction: Mark client resize immediately ready
      seat: Refocus seat when wlr_drag is destroyed

Leo (2):
      Fix redundant call to seat_send_focus()
      im: Fix crash when im destorying and no focused surface exists

Leon Plickat (1):
      change apply_exclusive() to closer match layer shell protocol

Linus Heckemann (1):
      add --no-repeat option for bindings

Lucas M. Dutra (1):
      fix typo

Luke Drummond (2):
      swaynag: sway_abort on failure to properly register
      swaybar: ensure correct init order for status_line

Martin Dørum (1):
      swaybar: Fix scrolling with precise trackpads

Martin Michlmayr (2):
      sway.5: make formatting more consistent
      Fix typos in comments

Michael Weiser (5):
      config: Fix typo in reload bindsym flag bitmask
      input: Add support for keyboard shortcuts inhibit
      commands: Add shortcuts_inhibitor command
      commands: Adjust style in cursors command
      commands: Add per-view shortcuts_inhibitor command

Milkey Mouse (1):
      swaybar: add NULL check when listing workspaces

Nathan Rossi (1):
      ipc: Handle unsupported binding event types

Nick Diego Yamane (1):
      input/seatop_default: properly notify pointer leave

Olivier Fourdan (1):
      input: Avoid creating the PAD device multiple times

Paul Ouellette (1):
      Fix some mistakes in grimshot docs

Pedro Côrte-Real (3):
      Avoid numerical instability in resize
      Make sure we don't calculate fractional pixel gaps
      Make all the container dimensions integers

Ronan Pigott (9):
      commands/split: Fix error message typos
      ipc-json: Remove unnecessary dereference
      sway-input.5: Document repeat_delay and repeat_rate only once
      sway.5: Document missing bindsym flags for unbindsym
      Fix crash when showing scratchpad hidden split containers
      cmd_move: Fix crash when moving to scratchpad hidden split containers
      cmd_split: Refuse to split scratchpad hidden split containers
      view: fix surface_new_subsurface use-after-free
      xdg_shell: schedule configure on maximize requests

Ross Schulman (1):
      Fix small typo in sway-input(5)

Rouven Czerwinski (3):
      xwayland: handle size_hints == NULL
      output: remove damage listeners in damage destroy
      input/seatop_default: release on empty workspace

Ryan Dwyer (1):
      Introduce pid criteria token

Simon Ser (52):
      Fix unreliable scaling filter
      Revert "Make all the container dimensions integers"
      Fix seat_set_focus_layer crash when disabling output
      Fix output scale auto-detection
      Call apply_output_config instead of output_enable
      Stop calling apply_output_config from output_enable
      Apply the output scale filter after the output commit
      Fix output transform anticlockwise
      Fix output transform rotation direction
      Specify that output transform applies clockwise rotations
      Fix get_int_prop(WINDOW_TYPE) crash
      Don't apply exclusive zones of unmapped layer-shell surfaces
      Add support for wlr-output-power-management-unstable-v1
      Make handle_destroy and output_repaint_timer_handler static
      Only schedule a frame if client has requested a frame callback
      Drop sway_output.surface_needs_frame
      Use wlr_client_buffer
      Add an adaptive_sync output command
      Add adaptive_sync_status to output IPC reply
      common/log: improve time prefix
      readme: git is an optional dependency
      Fix output mode usage
      Change focus_on_window_activation default to urgent
      Update for new wlr_buffer API
      Stop checking wlr_output_attach_buffer return value
      Introduce test_output_config
      Add test-only support to wlr-output-management-unstable-v1
      ci: don't build scdoc
      ci: remove epoll-shim hardcoded pkg-config file
      Fix initial modeset
      Don't add disabled outputs back to output layout
      Use bitshifts for bitfields
      Implement create_output command for headless backend
      Restrict relative output transforms to runtime changes
      man: add note about sway-input and sway-output pages
      Redirect questions to wiki/IRC
      build: improve feature summary
      Don't assert the cursor theme loads
      Fix invisible cursor on startup
      Add a secondary headless backend
      Log Sway version on startup
      Remove view child surface_{map,unmap} listeners on destroy
      Add support for viewporter
      Update version to 1.5-rc1
      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

Some Chinese Guy (3):
      Added focus following for touch_down
      switched to setting focus with seat_set_focus
      swapped hiding the cursor and sending a touch event as a more logical sequence

Tadeo Kondrak (1):
      Null check sway_layer_surface when checking damage

Teddy Reed (1):
      Fix ordering of setgid and setuid

Thayne McCombs (1):
      Add missing items to documentation for GET_TREE response in ipc.

TheAvidDev (1):
      Add wayland_client dependency to common

Thomas Hebb (3):
      config: fix unfocused text color
      Add each view's shell to JSON description
      Use new wlroots API for clearing keyboard/pointer focus during grabs

Till Hofmann (1):
      Avoid calling strcmp on nullptr

Tobi Fuhrimann (1):
      Reference wev instead of xev

Torstein Husebø (1):
      treewide: fix typos

Tudor Brindus (47):
      input/cursor: correctly send tablet_v2 up event when over non-v2 surface
      input/cursor: fix jerky resizing of non-tablet_v2 surfaces
      input/cursor: fix hide cursor timeouts on tablets and touchscreens
      config/output: reconfigure input devices on new output
      input/cursor: correctly transfer focus when using tablet pen
      config/output: reconfigure input devices after full output init
      input/tablet: query tablet focused surface for cursor image check
      Add debug symbol stack trace note to ISSUE_TEMPLATE.md
      input/cursor: release simulated tool tip button when over v2 surface
      input/cursor: make cursor rebasing cursor type-agnostic
      input/cursor: disambiguate cursor functions from pointer functions
      input: refactor tablet motion into seatop handler
      input: rename pointer handlers to be unambiguous
      input/cursor: remove erroneous cast for tablet tool button
      input/keyboard: use wlr_keyboard_keymaps_match from wlroots
      input/tablet: simplify parameter plumbing for tablet references
      input/cursor: don't apply pointer constraint to emulated tablet input
      input/pointer: only warp cursor when the confine region has changed
      common/log: use bright black rather than black for SWAY_DEBUG
      input/tablet: add seatop_down entry for tablet input
      input/cursor: fix heap-buffer overflow in constraint set_region
      input/cursor: keep reference to cursor in constraint
      Log Xwayland startup failures
      input/pointer: send pointer enter event on confine warp
      ipc: invert output transformation when necessary
      input/cursor: rename `simulated_tool_tip_down` to be more accurate
      tree/container: refactor `tiling_container_at` to check bounds
      xwayland: pass focus to previous unmanaged surface on unmap
      input/cursor: refactor tablet tool tip events into seatops
      common/util: fix `get_current_time_msec` returning microseconds
      tree/container: introduce `container_toplevel_ancestor` helper
      input/tablet: allow moving floating tablet v2 surfaces by pen input
      input/tablet: allow moving tiling tablet v2 surfaces by pen input
      input: tweak resize behavior to not change tab focus on border click
      tree/view: fix smart gaps when ancestor container is tabbed or stacked
      input/tablet: focus appropriate node on tip down
      input/pointer: don't trigger pointer bindings for emulated input
      input/cursor: send idle events based off device type, not input type
      input/pointer: don't trigger pointer bindings for emulated input
      input: disable events for map_to_output devices when output not present
      input/seat: don't notify keyboard grabs with NULL surface on shutdown
      input_cmd_click_method: fix typo in error text
      input/pointer: correctly handle bindings for synthetic events
      tree/view: fix smart borders with tabbed/stacked ancestor
      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

Vinko Kašljević (1):
      Add check for empty GEOM variable

Wai Hon Law (1):
      Make the default workspace commands compatible with i3

Yorick van Pelt (1):
      Fix crash: use wlr_output->name instead of possibly missing oc->name

jhalmen (1):
      fix typos in sway-input.5.scd

lbonn (1):
      ipc: show marks of containers without view in tree

r-c-f (1):
      check for workspace command name arg

rinpatch (1):
      sway.5: fix missing background scaling mode in a block example

roshal (1):
      add dots to man

salkin-mada (1):
      add danish README

skip-yell (1):
      Add Korean README.md

taminaru (1):
      Add Romanian translation

thermitegod (1):
      Fix compiling with -fno-common

wb9688 (1):
      Replace unprintable characters in input device id

xdavidwu (5):
      Port input method and text input from rootston
      input-method: remove surface listener before set
      input-method: avoid and log unneeded set_focus
      im: make text-input listeners per text-input
      im: remove listener on pending surface destoryed

Érico Rolim (2):
      security.d: remove directory
      Remove code related to the security features

Don't miss a new sway release

NewReleases is sending notifications on new releases.