aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2025-09-11readme: Update Polish translation regarding the support of display managersPrzemysław Gasiński-2/+1
2025-09-11update danish readme to reflect that display managers are supportedMartin Dørum-2/+1
2025-09-11readme: mark display managers as supportedSimon Ser-6/+3
It's been a long while since we've heard about issues related to display managers. Some used to be unreliable in the past, but by now most issues have been ironed out. Let's start supporting them officially. I've considered translating other languages but I'm concerned about messing up the sentence. I've updated languages I'm comfortable with.
2025-09-09xdg-shell: fix reported WM capabilitiesNikola Kocic-1/+1
Previously it was reporting window_menu and maximize instead of fullscreen because wlr_xdg_toplevel_set_wm_capabilities expects a bitmask (WLR_XDG_TOPLEVEL_WM_CAPABILITIES_*), and XDG_TOPLEVEL_WM_CAPABILITIES_* are supposed to be used as values in wl_array, so the values are different: XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN = 3 WLR_XDG_TOPLEVEL_WM_CAPABILITIES_FULLSCREEN = 4
2025-09-08input/text_input: chase wlroots updateBill Li-1/+1
References:https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5107
2025-08-22config/output: Only error when enabling HDRKenny Levinsen-1/+1
We currently emit errors about HDR support even if HDR is not being requested, which mean errors on every regular modeset when monitors not supporting HDR are connected. Only emit errors when attempting to enable HDR on such device.
2025-08-14Stop generating wayland-protocols server headersSimon Ser-9/+0
We still need to generate wlr-protocols server headers, as well as client headers and code. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5075
2025-08-13Add wl_fixes interfaceJoaquim Monteiro-0/+2
2025-08-03commands/resize: make resize consider all siblingsTim Hallmann-56/+47
Fixes a compatibility issue with i3 where resizing works as described hereafter: > Direction can either be one of up, down, left or right. Or you can be > less specific and use width or height, in which case i3 will take/give > space from all the other containers. Sway previously considered only the direct neighbours, not all siblings. Fixes #5936
2025-08-03sway/commands/layout: flatten parent oncebonsaiiV-0/+9
Applying layout changes to the parent of the parent, in case the parent only has a single child, stops the creation of a chain of single child containers. Closes: https://github.com/swaywm/sway/issues/7945
2025-08-03Add cursor->hidden check to handle_rebaseTomasz Buczyński-1/+1
Fixes #6245
2025-07-31tree/node: Do not mark destroying nodes as dirtyKenny Levinsen-4/+4
Node destruction currently runs through the transaction system such that a particular node is only destroyed after its use in an ongoing transaction. If a node is dirtied after the node is marked as destroying but before it is destroyed, the pointer added to dirty_nodes would become a dangling pointer once the node was destroyed. Do not dirty destroying nodes, and ensure that destroying is only set after the last dirty.
2025-07-29Revert drag_lock default to disabledSimon Ser-8/+0
I misunderstood the recommendation in the libinput release notes. Instead of making enabled_sticky the default, leave the default set to disabled. Fixes: bbadf9b8b10d ("Add support for LIBINPUT_CONFIG_DRAG_LOCK_ENABLED_STICKY") Closes: https://github.com/swaywm/sway/issues/8758
2025-07-20tree/view: save new wlr_scene_buffer fieldsFenveireth-0/+4
Visble flicker can occur during transactions, if these are not copied to the 'saved' scene
2025-07-16Add xdg_toplevel tag to criteriaSimon Ser-1/+33
2025-07-16Add xdg_toplevel tag to IPCSimon Ser-0/+7
2025-07-16Wire up xdg-toplevel-tag-v1Simon Ser-1/+39
2025-07-09Add link to README.az.mdNuran Askarov-1/+2
2025-07-09Add README.az.mdNuran Askarov-0/+66
2025-07-09Add features.hdr to output IPC responseSimon Ser-19/+33
2025-07-09Add support for color-management-v1Simon Ser-1/+30
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4962
2025-07-09Add support for HDR10 outputSimon Ser-23/+139
2025-07-08ipc-json, swaymsg: indicate when adaptive sync is unsupportedSimon Ser-1/+12
2025-07-02Drop sway_output.events.disableSimon Ser-20/+17
In general wl_signal isn't well-suited for Sway: Sway doesn't need any modularity, and signals make it trickier to track down exactly what happens down the stack. Replace Sway's output disable signal with a simple list tracking for the only user.
2025-06-28Revert "sway/tree: Simplify sway_node teardown"Kenny Levinsen-125/+149
This reverts commit e28e6484e8eafcac776ac0ec2bee8feddb19361a. This change tried to remove nodes from all points of reference to allow immediate destruction. However, it missed things like the children lists cloned by transaction states of parent nodes. Adding all that extra cleanup would not be in the spirit of a PR claiming to simplify teardown. Let's wait for someone to come up with a cleaner approach instead. Fixes: https://github.com/swaywm/sway/pull/8738
2025-06-28Revert "tree/container: Remove child from all lists"Kenny Levinsen-40/+19
This reverts commit 3d6b9a28480a398e3af869d4051181f98a042022.
2025-06-26tree/container: Remove child from all listsKenny Levinsen-19/+40
When a container is detached, we need to remove it from any lists it may be part of. We use container_get_siblings to obtain the relevant list, find our entry and remove it. If the container is in a later list than the one returned by container_get_siblings, or is in multiple lists for some reason, container_detach will fail to remove the container, leaving a dangling pointer when the container is freed. Instead of calling container_get_siblings, check and remove the container from all lists.
2025-06-26sway/tree: Simplify sway_node teardownKenny Levinsen-149/+125
A sway_node may end up being referenced in either a queued transaction, pending transaction or as a dirty node. To manage this, the transaction system has been responsible for destroying containers, workspaces and outputs at the end of their last referenced transaction. This significantly complicates the teardown flow of surfaces and outputs. Instead, remove the node from transactions and dirty lists so that the callsite can remove and free the node immediately.
2025-06-26Remove the temporary SUID warningKenny Levinsen-19/+0
A temporary SUID detection that would cause sway to exit was introduced when SUID operation was deprecated, intended to avoid cases where a user would not heed the deprecation notice, continued to use SUID and ended up with sway accidentally running as root. Remove the check, as the three years that have passed is sufficient time for users to discover the deprecation and adapt. We did not care if users intentionally want to run sway as root through SUID, we only wanted to avoid surprise root.
2025-06-23tree/view: send event unconditionally in view_send_frame_done()Simon Ser-1/+1
Previously, we were using wl_signal_emit_mutable() directly instead of wlr_scene_buffer_send_frame_done(). This bypassed any visibility checks, which matters before a surface is mapped. Fixes flickering with an invalid size when launching new programs. Fixes: eb8acfd7b1cd ("Stop using wlr_scene_buffer_send_frame_done()")
2025-06-16Add support for toplevel captureSimon Ser-5/+60
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5078
2025-06-16Stop using wlr_scene_buffer_send_frame_done()Simon Ser-7/+18
That function now takes the output as input. We don't always have the output at hand, so use the function operating on a wlr_scene_surface instead.
2025-06-16seatop_default: Call seatop_rebase with proper timestamphwsmm-1/+4
2025-06-16Rename get_current_time_msec to get_current_time_in_msec and move to util.chwsmm-8/+10
get_current_time_msec conflicts with a function with the same name in wlroots.
2025-06-16build: set wrap_mode=nodownload in default optionsSimon Ser-0/+1
This can be surprising (e.g. in CI, this can download source code instead of using system libraries) and users can easily turn it back on if desired.
2025-06-14text_input: Don't relay IM state from unfocused windowsAttila Fidan-0/+4
Otherwise, applications can enable their text input and affect IM state while a different application is focused.
2025-06-14text_input: Ignore enable requests from unfocused windowsAttila Fidan-0/+4
Unfocused windows shouldn't be allowed to activate the IM. This fixes an issue with swaymsg invocations that contain several commands which result in multiple swift focus changes. An application briefly gets text input focus, sends an enable request, then sway processes it and activates the IM only after the commands are all finished and focus is on something else which did not send an enable request.
2025-06-09build: bump version to 1.12-devSimon Ser-1/+1
2025-06-09config.in: bind XF86Audio* keycodes to playerctlCallum Andrew-0/+9
2025-06-05Remove trailing spacesSimon Ser-11/+11
2025-06-05server: fix socket path memory leakYaoBing Xiao-1/+2
The socket path allocated with strdup() in server_init() was not being freed in server_fini(). Remove const qualifier and add proper cleanup.
2025-05-25swaybar: deduplicate mode and workspace rendering codeKonstantin Pospelov-86/+58
The render_workspace_button and render_binding_mode_indicator functions are almost the same. This commit extracts the common rendering code into a new render_box function.
2025-05-25Log message on for_window command errorSimon Ser-2/+4
2025-05-24Improve example of input section in default configBonsaiiv-2/+6
Previous example included a specific device name. This can be confusing for beginners, as the default did not work on most devices.
2025-05-22tree/workspace: Remove exclude arg from get_highest_availableKenny Levinsen-8/+4
workspace_output_get_highest_available took an output to exclude as argument, meant to avoid accidentally reselecting an output we are evacuating workspaces from. Outputs are now removed from the list before we evacuate, making exclusion unnecessary. Remove the argument.
2025-05-22output: Minimize interaction with output after destroyKenny Levinsen-14/+15
When an output is destroyed, we go through the process of disabling it. This includes evacuating all content away from the output, which can lead to various modifications to the scene. With the scene_output still present, this can lead to things like output_enter events being emitted for the output currently being destroyed. Ensure that the scene output is destroyed first and that the output is immediately considered disabled. References: https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3974
2025-05-21transaction: fix floating fullscreen containersalex-huff-2/+2
8fecf3a introduced a regression where fullscreening a child of a floating container would result in a black screen. This is because the order of 'arrange_fullscreen' and 'arrange_worksplace_floating' was swapped causing the fullscreen container's scene to get reparented after it was parented in the fullscreen layer. Fixes #8729
2025-05-21layer-shell: reclaim space from unmapped layer surfacesalex-huff-5/+1
wlroots resets 'initialized' when a layer surface is unmapped and sway doesn't rearrange the layer surfaces in response to a commit of a surface where 'initialized' is false. This results in space not getting reclaimed from a recently unmapped layer surface until some other action causes 'arrange_layers' to get called. This commit makes sure all layer surfaces get rearranged when a layer surface is unmapped.
2025-05-20input: fix udev_device leakSimon Ser-10/+16
libinput_device_get_udev_device() returns a ref'ed handle: https://wayland.freedesktop.org/libinput/doc/latest/api/group__device.html#gac13c64ba19fc19094cff0e5354a2a7ce Similar to this wlroots MR: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5074
2025-05-19transaction: reparent scenes of containers behind fullscreen containersalex-huff-2/+11
Currently we do a good job of reparenting the scenes of a container when it moves into a disabled workspace. We need to do this since normally the scenes are reparented in the 'arrange_{children,container}' functions but these don't get called for disabled workspaces. However, the 'arrange_{children,container}' functions also don't get called when there is a fullscreen container hiding them. This commit makes sure to call 'disable_workspace' on workspaces with a fullscreen container so that when a container is moved into the workspace its scenes will be properly reparented. Also, when there is a fullscreen global container 'disable_workspace' is called for all workspaces since the scenes of a previously fullscreen global container may still be parented in the 'fullscreen_global' layer. Fixes #8705 #8659 #8432