aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
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
2025-05-19transaction: fix size of child container decorations in stacking layoutsalex-huff-1/+1
Before this commit stacking containers with more than one child sized the active container's decorations as if there was only one titlebar. Commit a25645a introduced the local variable 'net_height' but incorrectly calculated it for stacking containers. Fixes #8686.
2025-05-18raise scratchpad containerodyxz-0/+2
2025-05-18transaction: ensure border scene is enabled for floating containersalex-huff-0/+1
When a container that was previously an inactive child of a tabbed or stacking layout becomes floating it's border scene-tree remains disabled. This results in only the titlebar being rendered for the container. This commit ensures the border scene-tree is enabled when arranging floating containers. Fixes #8721
2025-05-15input/text_input: chase wlroots updateBill Li-1/+1
References: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/5032 Fix #8718
2025-05-15build: bump wlroots versionGreyXor-2/+2
2025-05-08move: fix broken titlebar when moving child to new workspacealex-huff-0/+1
Before this commit, when moving a non-leaf child of a tabbed or stacking container to a new workspace, the child would be detached from the parent container and the grandchildren would be sent to the new workspace but the child itself wouldn't be destroyed causing the titlebar to still be rendered as part of the parent container. Fixes #8648.
2025-05-06input/seatop_down: Update decorations for touchscreen inputsFurkan Sahin-0/+1
fixes #8675
2025-05-04transaction: Ensure all tabs are visible in tabbed modealex-huff-0/+2
Before this commit when a child of a tabbed or stacking container was taken out of fullscreen and a different sibling was focused in the same transaction, the titlebar of the previously fullscreen container would remain hidden. This commit makes sure that scene tree for decorations is enabled for all containers within a tabbed or stacking container when it is arranged.
2025-05-01config/output: Fix missing output config supersedesKenny Levinsen-0/+10
color_transform and allow_tearing was not handled by supersede_output_config which could lead to configuration being incorrectly applied.
2025-05-01config/output: Use INT_MAX as x/y unset valueKenny Levinsen-8/+8
We oftne use -1 to indicate unset values. In case of output (x, y), we would consider the fields set if they are not both -1. This means that (0, -1) and (-1, 0) are valid coordinates, but (-1, -1) is not. We support negative output positioning, so we cannot use -1 to mean unset. Zero is also not an option as that would disallow reverting a set position back to (0, 0). INT_MAX is an unreasonable output position, so use it to indicate unset values, and only use the value when both are set.
2025-04-28Fix includes with relative pathsPavel 'LEdoian' Turinsky-20/+4
The function `load_include_configs` already changes the directory to the one containing the parent config. Therefore, `load_include_config` trying to assemble the "full" path leads to repetition of path segments, making the `realpath` call fail with ENOENT. Just calling `realpath` on the path itself from the directory with the parent configuration is sufficient, so there is no point in passing `parent_dir` to `load_include_config`.
2025-04-27build: bump version to 1.11-rc21.11-rc2Simon Ser-1/+1
2025-04-27sway/commands: Handle incorrect resize unitFurkan Sahin-1/+1
problem: an invalid usage of the command resize set will cause sway to crash because it doesn't check for an invalid height. solution: validate height along with width.
2025-04-27Replace signal() with sigaction()Simon Ser-8/+12
The man page for signal(3) reads: > new applications should use sigaction() rather than signal()
2025-04-21Use pthread_atfork() to restore signals and NOFILE limitSimon Ser-28/+23
This ensures these functions are always called (even when a library such as wlroots or libc perform the fork) and removes the need to manually call them.
2025-04-20build: bump version to 1.11-rc11.11-rc1Simon Ser-1/+1
2025-04-20Drop wl_drm againSimon Ser-7/+0
In [1] we re-introduced a debug flag to enable wl_drm. Time has passed and Xwayland + VA-API + amdvlk now all support linux-dmabuf-v1. [1]: https://github.com/swaywm/sway/pull/7916
2025-04-17server: move sway_terminate() definition to headerSimon Ser-2/+3
2025-04-17swaymsg, swaynag: drop sway_terminate() definitionsSimon Ser-9/+0
These are unused.
2025-04-17layer_shell: destroy layer_surface on assigned output destructionllyyr-1/+1
According to the spec, the closed event should be sent when the surface is no longer shown, because the output may have been destroyed or the user may have asked for it to be removed. In such cases, the clients should destroy the resource. This fixes mako not being able to show notifications if the assigned output was destroyed while a notificataion was still visible Fixes: 188811f80861 ("scene_graph: Port layer_shell")
2025-04-17Remove duplicate arrange_containerFilip Vujičić-1/+0
2025-04-14Fix crash on shutdown when Xwayland is disabledSimon Ser-3/+5
2025-04-14server: fix shutdown crash when running on x11 backendLoukas Agorgianitis-1/+3
Signed-off-by: Loukas Agorgianitis <loukas@agorgianitis.com>
2025-04-13server: recreate renderer in idle callback to avoid UAFFerdinand Bachmann-3/+16
Destroying the wlr_renderer in a callback to its own renderer_lost event is unsafe due to wl_signal_emit*() still accessing it after it was destroyed. Delegate recreation of renderer to an idle callback and ensure that only one such idle callback is scheduled at a time by storing the returned event source.
2025-04-13tree/container: remove event listeners on destroyFerdinand Bachmann-2/+18
Change begin_destroy to remove event listeners before the final destroy, since otherwise event listeners would be removed twice, which crashes. This fixes a crash in wlroots listener checks. See #8509.
2025-04-13input/text_input: remove event listeners on destroyFerdinand Bachmann-2/+38
sway_input_method_relay can be destroyed from two sources, either the seat is destroyed or the manager protocol objects are destroyed due compositor exit. This fixes a crash in wlroots listener checks. See #8509.
2025-04-13desktop/idle_inhibit: remove event listeners on destroyFerdinand Bachmann-0/+12
This fixes a crash in wlroots listener checks. See #8509.
2025-04-13input/input-manager: remove event listeners on finiFerdinand Bachmann-0/+11
This fixes a crash in wlroots listener checks. See #8509.
2025-04-13server: remove event listeners on finiFerdinand Bachmann-0/+21
This fixes a crash in wlroots listener checks. See #8509.