github swaywm/sway 1.6
sway 1.6

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

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.

Don't miss a new sway release

NewReleases is sending notifications on new releases.