Skip to content

Releases: swaywm/sway

1.12-rc3

26 Apr 14:36
1.12-rc3

Choose a tag to compare

1.12-rc3 Pre-release
Pre-release
sway 1.12-rc3

Furkan Sahin (3):
      input/seat: end keyboard grab when clearing focus
      input/seat: fix drag-and-drop regression and improve popup dismissal
      tree/workspace: fix crash on dragging container to workspace edge

Hugo Osvaldo Barrera (2):
      Treat ext-workspace-v1 as privileged
      Ignore failures creating linux-drm-syncobj

Simon Ser (1):
      build: bump version to 1.12-rc3

llyyr (1):
      sway/desktop/transaction: skip freeing dirty nodes

someever (1):
      Fix typos in sway-ipc.7.scd

1.12-rc2

12 Apr 16:46
1.12-rc2

Choose a tag to compare

1.12-rc2 Pre-release
Pre-release
sway 1.12-rc2

Alexander Orzechowski (1):
      container: Move foreign toplevel enter/leave events to view

Hugo Osvaldo Barrera (1):
      Don't ignore initialisation errors

Simon Ser (1):
      build: bump version to 1.12-rc2

1.12-rc1

26 Mar 22:12
1.12-rc1

Choose a tag to compare

1.12-rc1 Pre-release
Pre-release

Sway 1.12-rc1 contains 119 changes from 46 contributors.

This release depends on wlroots 0.20.0. See the wlroots release notes.

New features

  • Add support for capturing individual windows.
  • Add support for HDR10 when running with the Vulkan renderer.
  • Add support for new protocols: color-management-v1, color-representation-v1, xdg-toplevel-tag-v1, ext-workspace-v1, wl_fixes.
  • Add a new --device-primaries to output color_profile to use color primaries advertised in EDID.
  • Add support for keypad slide switches.

Changes

  • The default configuration file now ships key bindings for playerctl.
  • Sway no longer refuses to start on unsupported GPUs (e.g. NVIDIA proprietary drivers). Instead, it displays an informational message. The message can be disabled via the --unsupported-gpu CLI flag or via the SWAY_UNSUPPORTED_GPU environment variable. Sway's policy hasn't changed: only the consequences when starting Sway have.
  • Display managers are now officially supported for Sway startup.
  • The srgb output color profile now applies the piece-wise sRGB transfer function rather than gamma 2.2. Use gamma22 for gamma 2.2. The effective default remains unchanged (gamma 2.2).
Full changelog
Alexander Orzechowski (1):
      Chase wlroots!3879

André Marçais (1):
      Fix logical error in criteria matching

Attila Fidan (2):
      text_input: Ignore enable requests from unfocused windows
      text_input: Don't relay IM state from unfocused windows

Bill Li (2):
      input/text_input: chase wlroots update
      input/text_input: chase wlroots update

Bonsaiiv (1):
      Improve example of input section in default config

Callum Andrew (1):
      config.in: bind XF86Audio* keycodes to playerctl

Calvin Lee (2):
      sway: change unsupported GPU message to swaynag
      sway: add details to unsupported gpu nag

Damino (1):
      tree/view: check for null workspace output

Felix Pehla (1):
      README: update German translation

Fenveireth (1):
      tree/view: save new wlr_scene_buffer fields

Furkan Sahin (2):
      input/seatop_down: Update decorations for touchscreen inputs
      bar_cmd_colors: fix crash on incorrect usage

Félix Poisot (5):
      sway/config: apply output CT before initial commit
      sway/commands/output: color_profile "srgb" applies the piece-wise TF
      sway/commands/output: add color_profile "--device-primaries"
      sway/config/output: fix hdr+color_profile conflict detection
      common/pango: get_text_size out pointers may be NULL

GreyXor (1):
      build: bump wlroots version

Hugo Osvaldo Barrera (3):
      Make workspace_move_to_output reusable
      ext-workspace-v1: initial implementation
      Centre fullscreen surfaces smaller than output

Joaquim Monteiro (1):
      Add wl_fixes interface

Kenny Levinsen (15):
      config/output: Use INT_MAX as x/y unset value
      config/output: Fix missing output config supersedes
      output: Minimize interaction with output after destroy
      tree/workspace: Remove exclude arg from get_highest_available
      Remove the temporary SUID warning
      sway/tree: Simplify sway_node teardown
      tree/container: Remove child from all lists
      Revert "tree/container: Remove child from all lists"
      Revert "sway/tree: Simplify sway_node teardown"
      tree/node: Do not mark destroying nodes as dirty
      config/output: Only error when enabling HDR
      linux-dmabuf-v1: Bump to version 5
      cursor-shape-v1: Bump to version 2
      layer-shell-v1: Bump to version 5
      protocols: Bump vendored wlr-protocols

Kirill Chibisov (2):
      readme: sync Russian translation
      readme: sync Japanese translation

Konstantin Pospelov (1):
      swaybar: deduplicate mode and workspace rendering code

Lars-Ragnar A. Haugen (1):
      layer-shell: handle popup reposition for unconstraining

Louis POIROT--HATTERMANN (1):
      commands/scratchpad: don't hide scratchpad if no pending workspace

Martin Dørum (2):
      update danish readme to reflect that display managers are supported
      Update Norwegian README to make it more in line with the English one, as well as improving grammar

Milad Alizadeh (2):
      tree/workspace: fix output priority in workspace assignment
      simplify output priority check

Nikola Kocic (1):
      xdg-shell: fix reported WM capabilities

Nuran Askarov (2):
      Add README.az.md
      Add link to README.az.md

Ole (1):
      sway-ipc(7): Clarify that the reply shown is an example

Oto Šťáva (1):
      readme: Update and reword Czech translation

Pavel 'LEdoian' Turinsky (1):
      Fix includes with relative paths

Przemysław Gasiński (1):
      readme: Update Polish translation regarding the support of display managers

Rex Fernando (1):
      sway/input/cursor: fix crash on first stylus tap after reboot via null check

Simon Ser (30):
      input: fix udev_device leak
      Log message on for_window command error
      Remove trailing spaces
      build: bump version to 1.12-dev
      build: set wrap_mode=nodownload in default options
      Stop using wlr_scene_buffer_send_frame_done()
      Add support for toplevel capture
      tree/view: send event unconditionally in view_send_frame_done()
      Drop sway_output.events.disable
      ipc-json, swaymsg: indicate when adaptive sync is unsupported
      Add support for HDR10 output
      Add support for color-management-v1
      Add features.hdr to output IPC response
      Wire up xdg-toplevel-tag-v1
      Add xdg_toplevel tag to IPC
      Add xdg_toplevel tag to criteria
      Revert drag_lock default to disabled
      Stop generating wayland-protocols server headers
      readme: mark display managers as supported
      input/text_input: stop using listener data
      Use helpers to get supported TFs/primaries
      desktop/xdg_shell: skip configure in request_maximize handler if unmapped
      Use goto-based error handling in view_init()
      Disable Xwayland restacking for toplevel capture scenes
      Add support for keypad slide switches
      common/pango: ensure we return zero on get_text_size() error
      common/pango: log on get_text_size()/render_text() format failure
      common/pango: add error handling to get_text_size()/render_text()
      ci: pin wlroots to 0.20.x
      build: bump version to 1.12-rc1

Stephane Fontaine (1):
      call disable container in arrange_root

Tim Hallmann (1):
      commands/resize: make resize consider all siblings

Tomasz Buczyński (1):
      Add cursor->hidden check to handle_rebase

Willow Barraco (1):
      Skip checking if criteria is matching the view when not mapped

YaoBing Xiao (1):
      server: fix socket path memory leak

aceydot (1):
      Add Serbian README

alex-huff (7):
      transaction: Ensure all tabs are visible in tabbed mode
      move: fix broken titlebar when moving child to new workspace
      transaction: ensure border scene is enabled for floating containers
      transaction: fix size of child container decorations in stacking layouts
      transaction: reparent scenes of containers behind fullscreen containers
      layer-shell: reclaim space from unmapped layer surfaces
      transaction: fix floating fullscreen containers

bonsaiiV (2):
      sway/commands/layout: flatten parent once
      sway/commands/layout: fix flatten parent once

g-rden (1):
      swaynag/main: free config_path

hwsmm (2):
      Rename get_current_time_msec to get_current_time_in_msec and move to util.c
      seatop_default: Call seatop_rebase with proper timestamp

johnpyp (1):
      commit dirty transactions upon window attribute changes

llyyr (10):
      sway/server: set color_manager for root scene
      sway/input/cursor: send frame event when simulating pointer from tablet
      sway/server: advertise gamma2.2 and bt1886 transfer functions
      sway/server: advertise wlr_color_representation_manager_v1
      tiling_resize: fix use-after-free on view unmap during resize
      sway/input/seat: chase wlroots breaking change
      sway: advertise color_manager_v1 version 2
      sway_text_node: fix cairo_create without a backing surface
      common/pango: use pangocairo directly instead of cairo_create(NULL)
      sway_text_node: properly check cairo_t status in text_calc_size

nortio (1):
      Update README.it.md for Italian

nyxed (1):
      build: switch to explicit 'meson setup' syntax

odyxz (1):
      raise scratchpad container

rewine (1):
      Drop org_kde_kwin_idle files

1.11

08 Jun 21:12
1.11

Choose a tag to compare

Sway 1.11 contains 189 changes from 53 contributors.

This release depends on wlroots 0.19.0. See the wlroots release notes.

New features

  • All of the enhancements from wlroots 0.19.0.
  • Add support for linux-drm-syncobj-v1 for explicit synchronization
  • Add support for alpha-modifier-v1 for setting an alpha multiplier for a surface
  • Add support for ext-image-copy-capture-v1 and ext-image-capture-source-v1 for improved screen capture
  • Add support for ext-data-control-v1 as an alternative protocol for clipboard managers
  • Improved output configuration logic for better and faster fallbacks
  • Pointer keys are now supported and can be bound in keymaps to trigger pointer events
  • security-context-v1 metadata is exposed in IPC, and can be used in criteria and title format

Changes

  • The default configuration file now ships key bindings for a few utilities: pactl, brightnessctl, grim
  • The default menu now uses wmenu-run and no longer depends on dmenu_path.
  • The default tap-and-drag lock mode has been switched to sticky as recommended by upstream
  • The sway.desktop file now sets DesktopNames (XDG_CURRENT_DESKTOP will be set by login managers)
Full changelog
Adam Chovanec (1):
      readme: update Czech translation

Alexander Orzechowski (19):
      transaction: Reparent all container children when disabling for scratchpad
      xwayland: Let scene restack
      output: Use wlr_scene_output_needs_frame
      output: Use wlr_scene_set_gamma_control_manager_v1
      output: Chase wlroots!4803
      container: Skip % char if it doesn't match a view property
      text_input: Check for allocation failure
      text_input: Move popup placement to own function
      transaction: Allow no popup descriptor in popup list
      text_input: Properly handle map/unmap events
      text_input: Inline input_popup_update into input_popup_set_focus
      Fix alpha-modifier-v1
      layer_shell: Arrange exclusive zone clients first
      layer_shell: Restore sway 1.9 ordering
      container: Properly constrain title bar padding
      swaybar: Handle opaque region properly
      output: Expose output_configure_scene to header
      output: Allow configuring scene without an output
      commands/opacity: Call output_configure_scene on updated container

Anna (navi) Figueiredo Gomes (1):
      sway/commands/move.c: arrange new workspace

AsciiWolf (1):
      Remove language bars from remaining non-English README files

Attila Fidan (1):
      input/cursor: remove tool_proximity listener in destroy

Baltazár Radics (1):
      input/libinput: fix parsing input drag_lock command

Bill Li (4):
      build: Bump wlroots version
      Chase wlroots!2434
      ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel
      Drop wlr_matrix.h include from sway/desktop/output.c

Bonsaiiv (1):
      Improve example of input section in default config

Chris Perl (1):
      Remove constraint that con->view != NULL to use __focused__ criteria

Claudia (1):
      Fix tabbed/stacking container height regression

Dan Baterisna (1):
      man: Document bar mode toggle command

Daniel De Graaf (1):
      Use wl_event_loop_add_signal for exit signals

Dennis Baurichter (1):
      man: clarify criteria (incl. PCRE2 usage)

Emil Engberg (1):
      Add toggle for output adaptive_sync

Felix Pehla (1):
      commands/output/color_profile: allows use of relative path for ICC profile

Ferdinand Bachmann (7):
      sway/ipc-json: add ext-foreign-toplevel-handle identifier to get_tree ipc output
      server: remove event listeners on fini
      input/input-manager: remove event listeners on fini
      desktop/idle_inhibit: remove event listeners on destroy
      input/text_input: remove event listeners on destroy
      tree/container: remove event listeners on destroy
      server: recreate renderer in idle callback to avoid UAF

Filip Vujičić (1):
      Remove duplicate arrange_container

Furkan Sahin (6):
      swaybar: Fix 100% cpu usage if dbus dies.
      input/mouse: bugfix button2 being interpreted as trying to move the container
      output/background: fix config ignoring fallback color
      ipc: standardize pretty print with raw print
      sway/commands: Handle incorrect resize unit
      input/seatop_down: Update decorations for touchscreen inputs

György Kurucz (1):
      input/libinput: fix builtin device detection logic

Hong Xu (1):
      Explain that the title bar always shows

Jacob McNamee (3):
      tree/view: add getters for sandbox properties
      tree/container: support sandbox properties in title format
      swaymsg: pretty-print sandbox properties

James Knight (1):
      build: avoid git repository discovery when determining version

Jan Palus (1):
      trigger container update after disabling urgent in timer

Jim (1):
      Increase max default buffer size to 1 MiB

JingMatrix (1):
      Add null-safety check for virtual keyboard keymaps

Joan Bruguera Micó (2):
      layer-shell: Restore interactive layer focus code
      swaybar: Emit property changes for SNI watcher

Jon Wallace (2):
      Use heading markdown to demarcate sections of commands Its a little tought to notice that the COMMANDS section is actually 3 sections. Use markdown to make this easier to see for the user.
      use subheadings instead

Kenny Levinsen (51):
      desktop/output: Stop repaint loop when not needed
      config/output: Do not set adaptive_sync if not supported
      config/output: Skip search if config has a mode
      desktop/output: Do not use commit listener to arrange
      tree/output: Rely on modeset arranging root
      (desktop|tree)/output: Do not use layout listener to arrange
      desktop/output: Avoid duplicate output manager update
      tree/output: Avoid duplicate input mapping configure
      tree/arrange: Remove redundant output geometry update
      desktop/transaction: Deactivate workspace on inactive outputs
      tree/arrange; Skip arranging disabled outputs
      config/output: Support multiple matches in find_output_config
      config/output: Always start with default in find_output_config
      config/output: Accept a list of output_configs to use
      config/output: Rename to apply_stored_output_configs
      ext-session-lock: Do not use commit listener to arrange
      config/output: Add support for 6-bit render fmt
      config/output: Stringify render format when logging it
      commands/gaps: Check config->reading instead
      desktop/output: Expose request_modeset
      config: Batch input/output configuration on load
      desktop/output: Clear modeset timer on output manager apply
      Re-init renderer for all outputs on lost context
      config/output: Improve modeset state logging
      config/output: Always set output states from config
      config/output: Always set all output fields on finalize
      config/output: Remove initial values in find_output_config
      config/output: Remove remaining logs from queue_output_config
      desktop/output: Store output config on request_state
      desktop/output: Add missing output config allocation checks
      config/output: Update output position in two passes
      desktop/output: Clean up output state if build_state fails
      desktop/output: Clear frame_pending even output is disabled
      config: Force modeset before running deferred configs
      ipc-server: Force modeset if needed after executing commands
      desktop/output: Clear repaint timer earlier in destroy
      sway_text_node: Apply max_width when rendering
      sway_text_node: Remove use of source box
      Rework fork/exec strategy
      Use SIG_IGN for SIGCHLD instead of our own handler
      config/output: Reset everything before swaybg exec
      desktop/output: Skip repaint if wlr_output is disabled
      Avoid crashing on too many containers
      idle_inhibit: Ignore inhibitors when locked
      idle_inhibit: Explicitly handle layer surfaces
      idle_inhibit: Assume view is invisible by default
      idle_inhibit: Check if layer surface output is enabled
      config/output: Use INT_MAX as x/y unset value
      config/output: Fix missing output config supersedes
      output: Minimize interaction with output after destroy
      tree/workspace: Remove exclude arg from get_highest_available

Kirill Primak (5):
      xwayland: chase wlr_xwayland_surface_set_maximized() change
      tearing: remove trailing whitespace
      tearing: fix UAF on destroy
      xdg-shell: chase xdg_surface geometry updates
      desktop/output: chase wlroots private fields update

Loukas Agorgianitis (1):
      server: fix shutdown crash when running on x11 backend

Manuel Stoeckl (1):
      swaynag: fix null dereference on scale change

Mark Stosberg (1):
      docs: use "window" instead of "view" throughout.

Norbert Bolanowski (1):
      move title_format to container

Olivia Taliesin (1):
      Removed destination-is-ancestor check from container_move_to_container to match i3 behaviour

Paul Riou (1):
      stringop: fix has_prefix() arg order in config parsing

Pavel 'LEdoian' Turinsky (1):
      Fix includes with relative paths

Piotr Piwoński (1):
      sway/commands: Return error if container is not in scratchpad

Puck Meerburg (2):
      ipc-json: add sandbox properties to view JSON
      criteria: add sandbox properties

Ricardo Steijn (1):
      Add support for tearing-control-v1

Scott Dubinsky (1):
      Remove unguarded double include

ShootingStarDragons (2):
      f...
Read more

1.11-rc4

25 May 21:34
1.11-rc4

Choose a tag to compare

1.11-rc4 Pre-release
Pre-release
sway 1.11-rc4

Bonsaiiv (1):
      Improve example of input section in default config

Kenny Levinsen (2):
      output: Minimize interaction with output after destroy
      tree/workspace: Remove exclude arg from get_highest_available

Simon Ser (4):
      ci: pin wlroots to 0.19.x
      input: fix udev_device leak
      Log message on for_window command error
      build: bump version to 1.11-rc4

alex-huff (4):
      transaction: fix size of child container decorations in stacking layouts
      transaction: reparent scenes of containers behind fullscreen containers
      layer-shell: reclaim space from unmapped layer surfaces
      transaction: fix floating fullscreen containers

1.11-rc3

18 May 21:58
1.11-rc3

Choose a tag to compare

1.11-rc3 Pre-release
Pre-release
sway 1.11-rc3

Furkan Sahin (1):
      input/seatop_down: Update decorations for touchscreen inputs

Kenny Levinsen (2):
      config/output: Use INT_MAX as x/y unset value
      config/output: Fix missing output config supersedes

Pavel 'LEdoian' Turinsky (1):
      Fix includes with relative paths

Simon Ser (1):
      build: bump version to 1.11-rc3

alex-huff (3):
      transaction: Ensure all tabs are visible in tabbed mode
      move: fix broken titlebar when moving child to new workspace
      transaction: ensure border scene is enabled for floating containers

odyxz (1):
      raise scratchpad container

1.11-rc2

27 Apr 20:53
1.11-rc2

Choose a tag to compare

1.11-rc2 Pre-release
Pre-release
sway 1.11-rc2

Furkan Sahin (1):
      sway/commands: Handle incorrect resize unit

Simon Ser (3):
      Use pthread_atfork() to restore signals and NOFILE limit
      Replace signal() with sigaction()
      build: bump version to 1.11-rc2

1.11-rc1

20 Apr 11:37
1.11-rc1

Choose a tag to compare

1.11-rc1 Pre-release
Pre-release

Sway 1.11-rc1 contains 163 changes from 48 contributors.

This release depends on wlroots 0.19.0-rc1. See the wlroots release notes.

New features

  • All of the enhancements from wlroots 0.19.0-rc1.
  • Add support for linux-drm-syncobj-v1 for explicit synchronization
  • Add support for alpha-modifier-v1 for setting an alpha multiplier for a surface
  • Add support for ext-image-copy-capture-v1 and ext-image-capture-source-v1 for improved screen capture
  • Add support for ext-data-control-v1 as an alternative protocol for clipboard managers
  • Improved output configuration logic for better and faster fallbacks
  • Pointer keys are now supported and can be bound in keymaps to trigger pointer events
  • security-context-v1 metadata is exposed in IPC, and can be used in criteria and title format

Changes

  • The default configuration file now ships key bindings for a few utilities: pactl, brightnessctl, grim
  • The default menu now uses wmenu-run and no longer depends on dmenu_path.
  • The default tap-and-drag lock mode has been switched to sticky as recommended by upstream
  • The sway.desktop file now sets DesktopNames (XDG_CURRENT_DESKTOP will be set by login managers)
Full changelog
Adam Chovanec (1):
      readme: update Czech translation

Alexander Orzechowski (19):
      transaction: Reparent all container children when disabling for scratchpad
      xwayland: Let scene restack
      output: Use wlr_scene_output_needs_frame
      output: Use wlr_scene_set_gamma_control_manager_v1
      output: Chase wlroots!4803
      container: Skip % char if it doesn't match a view property
      text_input: Check for allocation failure
      text_input: Move popup placement to own function
      transaction: Allow no popup descriptor in popup list
      text_input: Properly handle map/unmap events
      text_input: Inline input_popup_update into input_popup_set_focus
      Fix alpha-modifier-v1
      layer_shell: Arrange exclusive zone clients first
      layer_shell: Restore sway 1.9 ordering
      container: Properly constrain title bar padding
      swaybar: Handle opaque region properly
      output: Expose output_configure_scene to header
      output: Allow configuring scene without an output
      commands/opacity: Call output_configure_scene on updated container

Anna (navi) Figueiredo Gomes (1):
      sway/commands/move.c: arrange new workspace

AsciiWolf (1):
      Remove language bars from remaining non-English README files

Attila Fidan (1):
      input/cursor: remove tool_proximity listener in destroy

Baltazár Radics (1):
      input/libinput: fix parsing input drag_lock command

Bill Li (4):
      build: Bump wlroots version
      Chase wlroots!2434
      ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel
      Drop wlr_matrix.h include from sway/desktop/output.c

Chris Perl (1):
      Remove constraint that con->view != NULL to use __focused__ criteria

Claudia (1):
      Fix tabbed/stacking container height regression

Dan Baterisna (1):
      man: Document bar mode toggle command

Daniel De Graaf (1):
      Use wl_event_loop_add_signal for exit signals

Dennis Baurichter (1):
      man: clarify criteria (incl. PCRE2 usage)

Emil Engberg (1):
      Add toggle for output adaptive_sync

Felix Pehla (1):
      commands/output/color_profile: allows use of relative path for ICC profile

Ferdinand Bachmann (7):
      sway/ipc-json: add ext-foreign-toplevel-handle identifier to get_tree ipc output
      server: remove event listeners on fini
      input/input-manager: remove event listeners on fini
      desktop/idle_inhibit: remove event listeners on destroy
      input/text_input: remove event listeners on destroy
      tree/container: remove event listeners on destroy
      server: recreate renderer in idle callback to avoid UAF

Filip Vujičić (1):
      Remove duplicate arrange_container

Furkan Sahin (4):
      swaybar: Fix 100% cpu usage if dbus dies.
      input/mouse: bugfix button2 being interpreted as trying to move the container
      output/background: fix config ignoring fallback color
      ipc: standardize pretty print with raw print

György Kurucz (1):
      input/libinput: fix builtin device detection logic

Hong Xu (1):
      Explain that the title bar always shows

Jacob McNamee (3):
      tree/view: add getters for sandbox properties
      tree/container: support sandbox properties in title format
      swaymsg: pretty-print sandbox properties

James Knight (1):
      build: avoid git repository discovery when determining version

Jan Palus (1):
      trigger container update after disabling urgent in timer

Jim (1):
      Increase max default buffer size to 1 MiB

JingMatrix (1):
      Add null-safety check for virtual keyboard keymaps

Joan Bruguera Micó (2):
      layer-shell: Restore interactive layer focus code
      swaybar: Emit property changes for SNI watcher

Jon Wallace (2):
      Use heading markdown to demarcate sections of commands Its a little tought to notice that the COMMANDS section is actually 3 sections. Use markdown to make this easier to see for the user.
      use subheadings instead

Kenny Levinsen (47):
      desktop/output: Stop repaint loop when not needed
      config/output: Do not set adaptive_sync if not supported
      config/output: Skip search if config has a mode
      desktop/output: Do not use commit listener to arrange
      tree/output: Rely on modeset arranging root
      (desktop|tree)/output: Do not use layout listener to arrange
      desktop/output: Avoid duplicate output manager update
      tree/output: Avoid duplicate input mapping configure
      tree/arrange: Remove redundant output geometry update
      desktop/transaction: Deactivate workspace on inactive outputs
      tree/arrange; Skip arranging disabled outputs
      config/output: Support multiple matches in find_output_config
      config/output: Always start with default in find_output_config
      config/output: Accept a list of output_configs to use
      config/output: Rename to apply_stored_output_configs
      ext-session-lock: Do not use commit listener to arrange
      config/output: Add support for 6-bit render fmt
      config/output: Stringify render format when logging it
      commands/gaps: Check config->reading instead
      desktop/output: Expose request_modeset
      config: Batch input/output configuration on load
      desktop/output: Clear modeset timer on output manager apply
      Re-init renderer for all outputs on lost context
      config/output: Improve modeset state logging
      config/output: Always set output states from config
      config/output: Always set all output fields on finalize
      config/output: Remove initial values in find_output_config
      config/output: Remove remaining logs from queue_output_config
      desktop/output: Store output config on request_state
      desktop/output: Add missing output config allocation checks
      config/output: Update output position in two passes
      desktop/output: Clean up output state if build_state fails
      desktop/output: Clear frame_pending even output is disabled
      config: Force modeset before running deferred configs
      ipc-server: Force modeset if needed after executing commands
      desktop/output: Clear repaint timer earlier in destroy
      sway_text_node: Apply max_width when rendering
      sway_text_node: Remove use of source box
      Rework fork/exec strategy
      Use SIG_IGN for SIGCHLD instead of our own handler
      config/output: Reset everything before swaybg exec
      desktop/output: Skip repaint if wlr_output is disabled
      Avoid crashing on too many containers
      idle_inhibit: Ignore inhibitors when locked
      idle_inhibit: Explicitly handle layer surfaces
      idle_inhibit: Assume view is invisible by default
      idle_inhibit: Check if layer surface output is enabled

Kirill Primak (5):
      xwayland: chase wlr_xwayland_surface_set_maximized() change
      tearing: remove trailing whitespace
      tearing: fix UAF on destroy
      xdg-shell: chase xdg_surface geometry updates
      desktop/output: chase wlroots private fields update

Loukas Agorgianitis (1):
      server: fix shutdown crash when running on x11 backend

Manuel Stoeckl (1):
      swaynag: fix null dereference on scale change

Mark Stosberg (1):
      docs: use "window" instead of "view" throughout.

Norbert Bolanowski (1):
      move title_format to container

Olivia Taliesin (1):
      Removed destination-is-ancestor check from container_move_to_container to match i3 behaviour

Paul Riou (1):
      stringop: fix has_prefix() arg order in config parsing

Piotr Piwoński (1):
      sway/commands: Return error if container is not in scratchpad

Puck Meerburg (2):
      ipc-json: add sandbox properties to view JSON
      criteria: add sandbox properties

Ricardo Steijn (1):
      Add support for tearing-control-v1

Scott Dubinsky (1):
      Remove unguarded double include

ShootingStarDragons (2):
      fix: sway crashes if switch to another workspace with surface when IME popup is shown
      text_input: Fix ime panic in ext-session-lock

Simon Ser (23):
      build: use fs.relative_to() instead of hand-rolled logic
      desktop/xwayland: don't restack when marking window as inactive
      Add support for linux-drm-syncobj-v1
      Bind a few utilities to special keys in default config
      Switch default config to wmenu-run
      Add support for alpha-modifier-v1
      re...
Read more

1.10.1

26 Jan 13:44
1.10.1

Choose a tag to compare

sway 1.10.1

Alexander Orzechowski (2):
      container: Properly constrain title bar padding
      swaybar: Handle opaque region properly

György Kurucz (1):
      input/libinput: fix builtin device detection logic

Hong Xu (1):
      Explain that the title bar always shows

Joan Bruguera Micó (1):
      swaybar: Emit property changes for SNI watcher

Kenny Levinsen (8):
      desktop/output: Store output config on request_state
      desktop/output: Add missing output config allocation checks
      config/output: Update output position in two passes
      desktop/output: Clean up output state if build_state fails
      desktop/output: Clear frame_pending even output is disabled
      config: Force modeset before running deferred configs
      ipc-server: Force modeset if needed after executing commands
      desktop/output: Clear repaint timer earlier in destroy

Manuel Stoeckl (1):
      swaynag: fix null dereference on scale change

Simon Ser (4):
      release.sh: read meson-rewrite output from stdout
      ipc-json: handle LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY
      config/output: don't hardcode DMA-BUF in search_render_format()
      build: bump version to 1.10.1

llyyr (2):
      layer_shell: cleanup new_popup listener when destroying node
      config/output: don't leak background_fallback

mtvare6 (2):
      desktop/transaction: clamp vertical border length to 0
      config/output: skip format checks if all are supported

1.10

27 Oct 20:49
1.10

Choose a tag to compare

Sway 1.10 contains 237 changes from 44 contributors.

This release depends on wlroots 0.18.0. See the wlroots release notes.

New features

  • All of the enhancements from wlroots 0.18.
  • Rewrite the renderer to leverage the wlroots scene-graph API, resulting in improved performance.
  • Add GPU reset recovery for improved robustness.
  • Add a command to use an ICC profile for an output.
  • Improved output configuration algorithm to light up more outputs when the GPU bandwidth is constrained. WLR_DRM_NO_MODIFIERS shouldn't be necessary anymore to workaround black screens on Intel.
  • Add support for IME popups used for CJK.
  • Add support for tearing-control-v1, to opt-in for tearing page-flips for gaming use-cases.
  • Add support for ext-transient-seat-v1, allowing remoting apps such as wayvnc to create separate temporary seats for input events.
  • Add support for ext-foreign-toplevel-list-v1, the new standard protocol to obtain information about other toplevels. This will eventually be used by taskbars, window switchers and per-toplevel screen capture.
  • Add support for xdg-shell v5 with popup repositioning and hiding maximize/minimize buttons in CSD.

Changes

  • dmenu_run is no longer a dependency of the default config file.
  • The default config file now contains keybindings with pactl for volume adjustment, brightnessctl for brightness adjustment and grim for screenshots.
  • The legacy wl_drm protocol is now disabled by default (superseded by the standard linux-dmabuf-v1 protocol). This causes breakage in xorg-xwayland < 24.1.0, libva < 2.22.0 and amdvlk < 2024.Q4.1, and can be re-enabled manually via -Dlegacy-wl-drm.
  • The xwayland built-time option has been removed: Xwayland support is now enabled at build-time if it was enabled for wlroots.
Full changelog
Access (1):
      text_input: Implement input-method popups

Adam Chovanec (1):
      readme: update Czech translation

Aleksei Bavshin (1):
      xdg-activation: distinguish activation and urgency requests

Alexander Orzechowski (47):
      Don't destroy output layout on exit
      output: Destroy when output layout is destroyed
      desktop: Rename layers to shell_layers
      view: init function should return a success bool
      scene_graph: Maintain `wlr_scene_node`s for the sway tree.
      scene_graph: Use built-in linux dmabuf feedback handling
      scene_graph: Introduce sway_scene_descriptor
      renderer: Render scene_graph
      scene_graph: Port seat drag icons
      scene_graph: Port seatop_move_tiling indicators
      scene_graph: Port ext_session_v1
      seat: Remove dead seatop_render function
      renderer: Remove in favor of scene_graph
      Introduce sway_text_node
      input: Query scene graph for relevant surface/node intersections
      scene_graph: Port layer_shell
      scene_graph: Port container server side decorations
      transaction: ready signals will return success bools
      scene_graph: Port xdg_shell
      scene_graph: Port xwayland
      xwayland: Cleanup geometry handling on commit
      scene_graph: Port view saved buffers
      Delete old damage tracking code
      container: Don't track outputs
      scene_graph: Arrange scene graph on transaction apply
      scene_graph: Port opacity and filter modes
      scene_graph: Implement toplevel clipping
      Fix SIGSEGV on surface destroy
      remove damage debug options
      scene_graph: port wlr_forgein_toplevel_management output enter/leave events
      layer_shell: Fix typo of return instead of continue
      Ensure get_text_width() returns a positive value
      layer_shell: Arrange popups even if exclusive zone doesn't change
      xdg_shell: Extract struct for popup descriptor
      layer_shell: Handle popups through popup descriptor
      Force bilinear scaling when scaling down
      sway_text_node: Allow 0 text width
      transaction: Reparent all container children when disabling for scratchpad
      container: Skip % char if it doesn't match a view property
      text_input: Check for allocation failure
      text_input: Move popup placement to own function
      transaction: Allow no popup descriptor in popup list
      text_input: Properly handle map/unmap events
      text_input: Inline input_popup_update into input_popup_set_focus
      Fix alpha-modifier-v1
      layer_shell: Arrange exclusive zone clients first
      layer_shell: Restore sway 1.9 ordering

Andri Yngvason (1):
      Implement transient seat management

Anna (navi) Figueiredo Gomes (2):
      sway/config/output.c: fix null deref on output config
      sway/commands/move.c: arrange new workspace

Bill Li (2):
      Chase wlroots!4482
      ci: use package x11-servers/xwayland instead of x11-servers/xwayland-devel

Billli11 (1):
      Remove wlr_presentation in sway_server struct

Daniel De Graaf (1):
      Fix SIGSEGV on output destroy

Daniel Kahn Gillmor (1):
      sway-ipc(7): Escape backslashes correctly in GET_CONFIG output

Emil Engberg (1):
      Add toggle for output adaptive_sync

Felix Pehla (1):
      commands/output/color_profile: allows use of relative path for ICC profile

Ferdinand Bachmann (2):
      man: document supported modifier names
      input: add Super as alternative for Mod4

Furkan Sahin (2):
      swaybar: Fix 100% cpu usage if dbus dies.
      input/mouse: bugfix button2 being interpreted as trying to move the container

James Knight (1):
      build: avoid git repository discovery when determining version

Jan Palus (1):
      trigger container update after disabling urgent in timer

JingMatrix (1):
      Add null-safety check for virtual keyboard keymaps

Joan Bruguera Micó (1):
      layer-shell: Restore interactive layer focus code

Jon Wallace (2):
      Use heading markdown to demarcate sections of commands Its a little tought to notice that the COMMANDS section is actually 3 sections. Use markdown to make this easier to see for the user.
      use subheadings instead

Kenny Levinsen (47):
      config/output: Split apply_output_config
      config/output: Introduce apply_output_configs
      output/config: Add apply_all_output_configs
      Use apply_all_output_configs to light up outputs
      desktop/output: Use apply_output_configs for output mgmt
      config/output: Remove apply_output_config
      output/config: Remove reset_outputs and co.
      config/output: Make merge_output_config static
      output/config: Remove unused test_output_config
      commands/output/toggle: Use free_output_config
      config/output: Refactor handling of tiered configs
      server: Use wlr_renderer_get_texture_formats
      desktop/output: Fix check if config should be stored
      config/output: Use all outputs for config merge
      config/output: Search for output config fallbacks
      config/output: Print output state during tests
      config/output: Skip VRR tests when not supported
      desktop/output: Debounce modesets
      common/pango: Disable glyph position rounding
      desktop/output: Stop repaint loop when not needed
      config/output: Do not set adaptive_sync if not supported
      config/output: Skip search if config has a mode
      desktop/transaction: Deactivate workspace on inactive outputs
      config/output: Add support for 6-bit render fmt
      config/output: Stringify render format when logging it
      desktop/output: Do not use commit listener to arrange
      tree/output: Rely on modeset arranging root
      (desktop|tree)/output: Do not use layout listener to arrange
      desktop/output: Avoid duplicate output manager update
      tree/output: Avoid duplicate input mapping configure
      tree/arrange: Remove redundant output geometry update
      tree/arrange; Skip arranging disabled outputs
      config/output: Support multiple matches in find_output_config
      config/output: Always start with default in find_output_config
      config/output: Accept a list of output_configs to use
      config/output: Rename to apply_stored_output_configs
      ext-session-lock: Do not use commit listener to arrange
      commands/gaps: Check config->reading instead
      desktop/output: Expose request_modeset
      config: Batch input/output configuration on load
      desktop/output: Clear modeset timer on output manager apply
      Re-init renderer for all outputs on lost context
      config/output: Improve modeset state logging
      config/output: Always set output states from config
      config/output: Always set all output fields on finalize
      config/output: Remove initial values in find_output_config
      config/output: Remove remaining logs from queue_output_config

Kirill Primak (10):
      xdg-shell: chase events update
      layer-shell: don't try to unmap on destroy
      layer-shell: wait for an initial commit before configuring
      layer-shell: don't configure uninitialized surfaces
      Chase wlroots!4003
      Chase wlroots!4443
      view: drop ext_foreign_destroy
      protocols: use tablet-v2 xml from stable/
      tearing: remove trailing whitespace
      tearing: fix UAF on destroy

Luofan Chen (1):
      input: Rename WLR_INPUT_DEVICE_TABLET_TOOL to WLR_INPUT_DEVICE_TABLET

Manuel Stoeckl (5):
      common: Drop unused render_background_image
      common: rename load_background_image to load_image
      common: move load_image to swaybar
      desktop/layer_shell: provide fractional scale on creation
      sway/commands/output: Add command to set color profile

Merlin Lex (1):
      ext-foreign-toplevel-list: Implement protocol

Norbert Bolanowski (1):
      move title_format to container

Olivia...
Read more