Skip to content

1.10

Latest
Compare
Choose a tag to compare
@emersion emersion released this 27 Oct 20:49
· 103 commits to master since this release
1.10

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 Taliesin (1):
      Removed destination-is-ancestor check from container_move_to_container to match i3 behaviour

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

Ronan Pigott (4):
      launcher: track the seat in the launcher ctx
      commands/move: do not force focus on the moved container
      view: send scale notification when the output is known
      xdg-activation: launcher tokens are activation requests

Scott Dubinsky (1):
      Remove unguarded double include

Sergei Trofimovich (1):
      sway/config.c: use `memcpy()` for known buffer size

ShootingStarDragons (1):
      fix: sway crashes if switch to another workspace with surface when IME popup is shown

Simon Ser (66):
      Add wlr/util/transform.h includes
      Pass wl_display to wlr_output_layout
      desktop/xwayland: correctly handle association on o-r change
      Drop fglrx detection
      Detect Nvidia proprietary driver via drmGetVersion()
      Detect proprietary DisplayLink drivers
      input/seat: drop exclusive_client
      input/{keyboard,switch}: rename input_inhibited variable to locked
      input/seat: inline seat_set_exclusive_client() with NULL client
      input/seat: rename seat_set_exclusive_client()
      input/seat: simplify seat_is_input_allowed()
      Check wlr_pointer_constraint_v1_state.cursor_hint.enabled
      input: reconfigure send_events on output hotplug
      readme: add swaybg as optional dep
      Drop wl_drm
      Mark DRM lease protocol privileged
      Clarify gdk-pixbuf dependency purpose
      Add debug flag to re-enable wl_drm
      build: bump version to 1.10-dev
      Drop old security config remnants
      commands/primary_selection: drop duplicate bool parsing
      commands: note how xwayland/primary_selection are reset on reload
      commands: make primary_selection a config-only command
      config: use format_str() instead of hand-rolled snprintf()
      Fix build with wlroots DRM backend disabled
      Drop unnecessary includes from sway/server.h
      input/text_input: fix dangling listeners
      Define _POSIX_C_SOURCE globally
      Add release script
      Convert to new pointer enums
      config: error out on keysym translation XKB state failure
      config: add fallback without env vars for keysym translation XKB keymap
      Fetch input device vendor/product from libinput
      xdg-shell: implement popup repositioning
      xdg-shell: send WM capabilities
      config/output: drop enabling flag
      server: fix wlr_seat use-after-free on exit
      Re-create renderer when lost
      man: drop fractional scale warning
      man: document that the scale might be adjusted
      input: pass wlr_seat_client to wlr_seat_touch_notify_cancel()
      config/output: fix NULL derefs in store_output_config()
      config/output: drop fast path in store_output_config()
      tree/container: ensure pixman rect is valid in container_arrange_title_bar()
      build: disable wayland-protocols subproject tests by default
      build: drop xwayland option
      server: hide xdg_output from unprivileged clients
      input/text_input: ensure keyboard is set before sending modifiers
      Drop server.h include from input/input-manager.h
      Set color transform when calling wlr_scene_output_build_state()
      tree/view: set default min size to 1×1
      tree/view: ensure content_{width,height} is positive
      desktop/output: unify page-flip codepath
      tree/container: drop decl for container_update_textures_recursive()
      sway_text_node: avoid unnecessary redraws
      ci: pin wlroots to v0.18.x
      desktop/xwayland: don't restack when marking window as inactive
      Bind a few utilities to special keys in default config
      Switch default config to wmenu-run
      Add support for alpha-modifier-v1
      build: bump version to 1.10-rc1
      release: push tags before creating GitHub release
      build: bump version to 1.10-rc2
      build: bump version to 1.10-rc3
      build: bump version to 1.10-rc4
      build: bump version to v1.10

Steffen Dirkwinkel (1):
      config/output: support DRM_FORMAT_ARGB8888

Tamino Bauknecht (2):
      sway: raise error on non-accessible background file
      sway/output: Improve logging of swaybg execvp failure and more checks

Tarcísio Eduardo Moreira Crocomo (2):
      Implement clickfinger_button_map support.
      build: bump libinput version required

Violet Purcell (2):
      sway/config.c: only reset primary_selection at launch
      Update for versioned wlroots files

apreiml (1):
      Update README.de.md to match the EN one

bretello (2):
      fix crash when setting urgency on an hidden scratchpad container
      prevent workspace_find_container from crashing with NULL workspaces

llyyr (13):
      meson: bump wlroots version after 0.17.0 release
      Chase wlroots!4440
      input/text_input: parent wlr_box may be uninitialized
      text_input: don't destroy scene_node twice
      ipc: add `floating` property to GET_TREE
      ipc: add `scratchpad_state` property to GET_TREE
      input/keyboard: don't send key release if we don't have focused surface
      input/seat: don't send redundant leave/enter on device creation
      input/keyboard: refactor into sway_keyboard_set_layout
      input/keyboard: don't set layout for virtual keyboard device
      xdg_shell: don't send configure events to uninitialized surfaces
      sway/tree/container: don't trunc coords in `floating_fix_coordinates`
      sway/input/keyboard: always set active keyboard if there is none

mrusme (1):
      Update sway.5.scd

novenary (2):
      transaction: fix missing top border with hide_lone_tab
      ipc: properly check for titlebars

thal (1):
      tree/view: Do not clip to geometry if using CSD