Download Latest Version 1.12 source code.zip (5.8 MB)
Email in envelope

Get an email when there's a new version of Sway

Home / 1.12
Name Modified Size InfoDownloads / Week
Parent folder
sway-1.12.tar.gz 2026-05-25 5.6 MB
sway-1.12.tar.gz.sig 2026-05-25 566 Bytes
1.12 source code.tar.gz 2026-05-25 5.6 MB
1.12 source code.zip 2026-05-25 5.8 MB
README.md 2026-05-25 10.8 kB
Totals: 5 Items   17.0 MB 1

Sway 1.12 contains 138 changes from 50 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 (2): Chase wlroots!3879 container: Move foreign toplevel enter/leave events to view 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 (6): input/seatop_down: Update decorations for touchscreen inputs bar_cmd_colors: fix crash on incorrect usage 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 seatop_move_tiling: clamp edge thresholds to parent box 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 (6): Make workspace_move_to_output reusable ext-workspace-v1: initial implementation Centre fullscreen surfaces smaller than output Don't ignore initialisation errors Treat ext-workspace-v1 as privileged Ignore failures creating linux-drm-syncobj Jan Palus (1): man: update drag_lock default 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 (2): swaybar: deduplicate mode and workspace rendering code input/seat: check only the last output workspace on focus 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 MATHIP6 (1): Fix typo in README.fr.md 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 Scott Leggett (2): tree/workspace: fix unwrapping children to avoid redundant split seatop_move_tiling: fix stack overflow when dropping container into itself Simon Ser (33): 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 build: bump version to 1.12-rc2 build: bump version to 1.12-rc3 build: bump version to 1.12 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 (11): 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 sway/desktop/transaction: skip freeing dirty nodes 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 someever (1): Fix typos in sway-ipc.7.scd
Source: README.md, updated 2026-05-25