aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorLines
2021-06-24Remove usage of surface->sx|syKenny Levinsen-4/+4
These coordinates contain the all-time accumulated buffer attach point, which is a way to perform incremental client-side initiated movement of windows, intended as a way to maintain logical window positioning while compensating for layout changes such as folding in a left side panel. This value is not useful for implementing this feature, and break things if they ever become non-zero. Their inclusion in calculations also tend to cause confusion. Remove usage of these coordinates, removing the ability for clients to move themselves. This may again be supported if a better API is made available from wlroots. (cherry picked from commit 7ec9d07fc597c739760df5223469e9f15340db78)
2021-06-24tree/view: don't give focus to views mapped under fullscreen viewsTudor Brindus-8/+11
Fixes #6211. (cherry picked from commit 80128d23ba9f0a6a92284b2c6077e304f35e7a76)
2021-06-24view_destroy: fix use-after-free with subsurface_destroyDominique Martinet-0/+1
remove view from its own unmap event listener so when subsurfaces link try to remove themselves they won't run into it. This fixes the following ASAN use-after-free error on a build slightly modified to instrument wl_list operations: ==71705==ERROR: AddressSanitizer: heap-use-after-free on address 0x6160000829a0 at pc 0x000000508eb7 bp 0x7ffec8fd8030 sp 0x7ffec8fd8028 WRITE of size 8 at 0x6160000829a0 thread T0 #0 0x508eb6 in wl_list_remove ../common/list.c:181 #1 0x4f4998 in view_child_destroy ../sway/tree/view.c:1131 #2 0x4f38fa in subsurface_handle_destroy ../sway/tree/view.c:946 #3 0x7fda50744892 in wlr_signal_emit_safe ../util/signal.c:29 #4 0x7fda5072f0dd in subsurface_destroy ../types/wlr_surface.c:649 #5 0x7fda507312c4 in subsurface_handle_surface_destroy ../types/wlr_surface.c:1094 #6 0x7fda50744892 in wlr_signal_emit_safe ../util/signal.c:29 #7 0x7fda5072f305 in surface_handle_resource_destroy ../types/wlr_surface.c:677 #8 0x7fda508180ce in destroy_resource (/lib64/libwayland-server.so.0+0xc0ce) #9 0x7fda508187f2 in wl_client_destroy (/lib64/libwayland-server.so.0+0xc7f2) #10 0x7fda50818e5f in wl_client_connection_data (/lib64/libwayland-server.so.0+0xce5f) #11 0x7fda50818219 in wl_event_loop_dispatch (/lib64/libwayland-server.so.0+0xc219) #12 0x7fda50818984 in wl_display_run (/lib64/libwayland-server.so.0+0xc984) #13 0x43122c in server_run ../sway/server.c:254 #14 0x42f47c in main ../sway/main.c:433 #15 0x7fda503cab74 in __libc_start_main (/lib64/libc.so.6+0x27b74) #16 0x40f6fd in _start (/opt/wayland/bin/sway+0x40f6fd) 0x6160000829a0 is located 288 bytes inside of 592-byte region [0x616000082880,0x616000082ad0) freed by thread T0 here: #0 0x7fda50f01a27 in free (/lib64/libasan.so.6+0xaea27) #1 0x4532d8 in destroy ../sway/desktop/xdg_shell.c:262 #2 0x4ed17b in view_destroy ../sway/tree/view.c:67 #3 0x4ed300 in view_begin_destroy ../sway/tree/view.c:83 #4 0x454a3f in handle_destroy ../sway/desktop/xdg_shell.c:507 #5 0x7fda50744892 in wlr_signal_emit_safe ../util/signal.c:29 #6 0x7fda506e2c87 in reset_xdg_surface ../types/xdg_shell/wlr_xdg_surface.c:481 #7 0x7fda506e3018 in destroy_xdg_surface ../types/xdg_shell/wlr_xdg_surface.c:516 #8 0x7fda506dfbe5 in xdg_client_handle_resource_destroy ../types/xdg_shell/wlr_xdg_shell.c:71 #9 0x7fda508180ce in destroy_resource (/lib64/libwayland-server.so.0+0xc0ce) previously allocated by thread T0 here: #0 0x7fda50f01ed7 in calloc (/lib64/libasan.so.6+0xaeed7) #1 0x454bc8 in handle_xdg_shell_surface ../sway/desktop/xdg_shell.c:528 #2 0x7fda50744892 in wlr_signal_emit_safe ../util/signal.c:29 #3 0x7fda506e2363 in handle_xdg_surface_commit ../types/xdg_shell/wlr_xdg_surface.c:378 #4 0x7fda5072e368 in surface_commit_state ../types/wlr_surface.c:455 #5 0x7fda5072e51d in surface_commit_pending ../types/wlr_surface.c:474 #6 0x7fda5072ea58 in surface_commit ../types/wlr_surface.c:542 #7 0x7fda4fb3ac03 in ffi_call_unix64 (/lib64/libffi.so.6+0x6c03) Fixes #5168 (cherry picked from commit 8529141150ef2d9a07b9c0fad193bdbc12d3ad42)
2021-06-24Avoid creating zero-sized textures for marksSimon Ser-0/+4
Same as 6327f1b36196 ("Avoid creating zero-sized textures for titlebars") but for marks. (cherry picked from commit e3e99d961dc445258c08ec47b22ec83af38197f6)
2021-06-24Avoid creating zero-sized textures for titlebarsSimon Ser-0/+4
Creating a zero-sized wlr_texture is incorrect. (cherry picked from commit 6327f1b36196d5b6e22be9c9f839f29d5f23f346)
2021-06-24Prevent use-after-free on first bar subcommand errorMichael Weiser-0/+1
If any error is encountered during execution of the first subcommand of a freshly created bar configuration, parsing apparently is to be aborted and the current bar config is freed. The pointer to that memory is left dangling though, leading to a use-after-free on successive bar subcommands. This quite reliably ends in a crash like so: sway -c reproducer.config 00:00:00.083 [sway/config.c:865] Error on line 2 'foo bar': Unknown/invalid command 'foo' (s) free(): double free detected in tcache 2 00:00:00.608 [swaynag/swaynag.c:451] failed to register with the wayland display Aborted (core dumped) Minimal reproducer config: bar { foo bar position top } Other messages: malloc(): unaligned fastbin chunk detected double free or corruption (fasttop) The invalid command has to be the first for a newly created bar config. Removing the command or switching order so it's not the first one masks the problem. Prevent this from occuring by resetting the pointer to NULL after freeing the memory. Signed-off-by: Michael Weiser <michael.weiser@gmx.de> (cherry picked from commit 730efbc89c40a534f5463b5d872ca856fe7cedc4)
2021-06-24desktop/layer_shell: fix centering for opposing anchorsfwsmit-8/+16
(cherry picked from commit 8106f01c176a61f2683b02672e29197b20b23fc2)
2021-06-24ci: stick to wlroots 0.14.0Simon Ser-3/+3
2021-06-24Iterate over subsurfaces below the parent surfaceSimon Ser-2/+8
Update for the breaking change in [1]. [1]: https://github.com/swaywm/wlroots/pull/2948 (cherry picked from commit 3162766eef14be71789478b0984bc2c1802832b2)
2021-06-24remove usage of `wlr_texture_get_size`Tobias Langendorf-6/+8
update for wlroots 6369f7093178f0d66414eb67c312a403bfbb84a4 (cherry picked from commit 12e223e7973f7d7132d95c6302328067dec732ce)
2021-06-24meson: libseat is no longer optionalKenny Levinsen-5/+0
See: https://github.com/swaywm/wlroots/pull/2839 (cherry picked from commit 4e77bc293515ea2f00ebbc4395cb0eb4446d0195)
2021-06-24ci: Install libseatKenny Levinsen-0/+3
(cherry picked from commit fcfe52de294f1998cdcf4e147bf34127c4b9dd40)
2021-06-24Log wlroots version on startupSimon Ser-0/+2
Can be useful to make sure a bugfix is included. In the future maybe the wlroots version string could include a commit hash when built from source, too. (cherry picked from commit 78fc9d0d2d4fae0565b115f5ee4b0296b4e993f2)
2021-06-24Remove WLR_HAS_XDG_FOREIGN checksSimon Ser-4/+0
References: https://github.com/swaywm/wlroots/pull/2833 (cherry picked from commit 1a72049c04b8c6e1a30f80b3887fc7808a717935)
2021-06-24build: stop checking for logindSimon Ser-3/+1
wlroots has removed its logind session backend [1]. It now relies on libseat only. [1]: https://github.com/swaywm/wlroots/pull/2786 (cherry picked from commit e49a98fcb3613d0505ce731ed6dc99b9f2c6fc8a)
2021-06-24build: update wlroots dependency version to 0.14.xSimon Ser-1/+1
The latest commit of Sway always requires the latest commit of wlroots. (cherry picked from commit 7a68a28475bfefd65d618b053b566e0877abcc75)
2021-04-07build: bump version to 1.61.6Simon Ser-2/+2
2021-04-07output: damage whole output when exiting scanoutRonan Pigott-0/+1
(cherry picked from commit 62fbf33ce2a39373a5d122a99c04cc61272f122a)
2021-03-31build: bump to version v1.6-rc31.6-rc3Simon Ser-1/+1
2021-03-31ci: add xcb-util-wm dependency for wlrootsSimon Ser-0/+2
This is now a mandatory dependency for wlroots. (cherry picked from commit 276a37a605867ceef136d2444182d8190463c74d)
2021-03-31config: allow whitespaces in config pathcolumbarius-22/+47
(cherry picked from commit 1d62d6bfa09860d7a59640dcb20d5273a55401c4)
2021-03-24build: update version to v1.6-rc21.6-rc2Simon Ser-1/+1
2021-03-24view: subsurface NULL check in view_from_wlr_surfaceKenny Levinsen-0/+3
Necessary NULL checks had been added to xdg_shell and xwayland surfaces, but subsurfaces had been missed.
2021-03-22swaybar: fail gracefully on tokener creation failTudor Brindus-1/+10
This commit adds missing error-handling to the creation of the tokener instance. The stack depth parameter is used to initialize an array that json-c prefaults ahead of time, causing INT_MAX to result in out of memory errors. Also drop the depth to 256 to prevent this OOM. Though this fix is not very satisfactory -- json-c could be made to not prefault -- it should do for now. At the very least, swaybar will not crash. Fixes #6126.
2021-03-21swaybar: use INT_MAX max JSON depth when parsing IPC responseTudor Brindus-3/+8
There's no inherent limit on the nesting Sway can generate, and the default used by `json_tokener_new`, 32, can plausibly be hit during regular usage. Fixes #6115.
2021-03-21idle_inhibit: Store wlr inhibitor instead of viewKenny Levinsen-4/+5
When an application inhibited idle, a view pointer was stored and a destroy listener was registered to the wlr inhibitor. As the wlr inhibitor lives longer than the view, this lead to a dangling view pointer between view unmap and inhibitor destroy. Store a pointer to the wlr inhibitor instead of to the view, and look up the view when needed, which may at any point be NULL. This also allows for an inhibitor to remain functional if a surface is re-mapped.
2021-03-21view: Handle NULL role object when role is setKenny Levinsen-0/+6
wlr_(xdg|xwayland)_surface_from_wlr_surface can return NULL even though wlr_surface_is_(xdg|xwayland)_surface returned true.
2021-03-20ci: Update alpine xwayland package nameKenny Levinsen-1/+1
2021-03-20swaybar: Use position from wl_pointer.enterKenny Levinsen-0/+2
Only wl_pointer.motion was used to update pointer position, which would cause issues if the pointer was not moved prior to wl_pointer.button. This also fixes touch input through wl_pointer emulation, which fires wl_pointer.button immediately after wl_pointer.enter. Copied from a similar fix made to swaynag. Closes: https://github.com/swaywm/sway/issues/6109
2021-03-17swaybar: silence missing IconThemePath messagePi-Yueh Chuang-2/+7
IconThemePath is not a standard property in XDG's StatusNotifierItem specification, so missing this property should not be logged as an error. This patch changes the log level to SWAY_DEBUG when swaybar queries the value of IconThemePath so that swaybar won't log the returned message as an error if IconThemePath does not exist. Closes: https://github.com/swaywm/sway/issues/6092
2021-03-16build: update version to v1.6-rc11.6-rc1Simon Ser-1/+1
2021-03-12Implement input method keyboard grabxdavidwu-9/+102
2021-03-12xwayland: simplify override-redirect focus restorationSimon Ser-8/+4
No need to grab the xwayland surface from the wlr_surface, the parent is already an xwayland surface.
2021-03-11output: simplify layer surface iterationVyivel-65/+28
2021-03-10container: Add view_container_content_atKenny Levinsen-2/+25
container_at checks if the position provided matches the currently focused container with view_container_at as a fast path. view_container_at checks using the main container geometry, which includes the titlebar and border area. If a tabbed container is focused, then positions over unfocused tabs are incorrectly reported as belonging to the focused container, breaking focus on click. Add view_container_content_at for use in the focused container fast path which only tests container content area, and fall back to full workspace scans for border and titlebar areas. Closes: https://github.com/swaywm/sway/issues/6074
2021-03-07swaybar: use text subpixel antialias only where it would look goodFenveireth-35/+97
Closes #5605 Text Subpixel antialiasing is : - FreeType makes glyph bitmaps containing coverage percentage for each subpixel, instead of pixel - Then draw by performing the blend for each subpixel, instead of pixel (e.g. dual-source blending in opengl) And there's only one Alpha channel, so this extra coverage data can't leave Cairo to reach the compositor through there. Therefore, it can't work as intended if output text alpha != bar background alpha. Disable it for those cases, enable it elsewhere As for color emojis, they are RGBA bitmaps. If drawn with text alpha=1.0 and background alpha=1.0 (should be completely opaque bar), then with 'CAIRO_OPERATOR_SOURCE' then texels with alpha < 1.0 result in a blend with whatever's behind the bar, instead of the bar background
2021-03-01container: Limit tiled focus to container geometryKenny Levinsen-1/+1
container_at would maintain the current focus as long as a position was over one of the container view's surfaces. If an oversized surface was being clipped, this lead to weird focus behavior. Instead, use view_container_at for this test, which intersects the container box before looking at surfaces.
2021-03-01render: Clip surfaces to container boundsKenny Levinsen-8/+34
If a surface is associated with a sway container, we limit the destination box to the container dimensions. Floating views and popups are exempt from this clipping.
2021-02-25Fix for_window criteria and mouse button bindingsftilde-15/+21
Previously, the special case handling of scratchpad and unmark commands was (probably accidentally) limited to criteria directly handled in the execute_command function. This would exclude: 1. for_window criteria, as these are handled externally for views and 2. and mouse bindings which select target the node currently under the mouse cursor. As a concrete example `for_window [app_id="foobar"] move scratchpad, scratchpad show` would show (or hide due to the toggling functionality) another window from the scratchpad, instead of showing the window with app_id "foobar". This commit replaces the "using_criteria" flag with "node_overridden" with the more general notion of signifying that the node (and container/workspace) in the current command handler context of the sway config is not defined by the currently focused node, but instead overridden by other means, i.e., criteria or mouse position.
2021-02-25focus: beyond fullscreen when focused explicitlylbonn-15/+38
When issuing a focus command on a specific container, users expect to proceed it even if is hidden by a fullscreen window. This matches the behavior of i3.
2021-02-25Automatically map built-in touchscreens/tablets to built-in panelsSimon Ser-0/+76
Detect whether an output is built-in via its type. Detect whether a touchscreen or tablet tool is built-in via its ID_PATH property.
2021-02-25man: document `input XXX map_to_output *`Simon Ser-0/+3
This is useful to reset the output mapping.
2021-02-25render: handle containers without output when rendering titlesQuantum-1/+6
In e0a94bee8da3271f942c0881ee18a7e2d4138063, it was believed that if the container is being rendered, it must have an output. This turned out not to be the case. When rendering a container, all its children are rendered, even if the children is positioned off screen and thus not having any output. This is the cause of the crash in #6061. This commit introduces a null-check, which fixes #6061.
2021-02-24output: Reconfigure xcursor when applying output configTadeo Kondrak-0/+2
Before this commit, when an output had its scale dynamically changed, Sway would not load a cursor theme with the new scale. This results in stale cursor images when moving the cursor into an area controlled by the compositor, like the background or resize areas. To reproduce: - Using IPC, set an output scale to a value that isn't currently used - Move the cursor into a compositor-controlled area - The cursor will not change
2021-02-23build: stop cargo-culting assignment alignmentSimon Ser-19/+19
The Sway style guide says we shouldn't align assignments.
2021-02-23build: Add dependency on libdrmTadeo Kondrak-0/+3
As of 66343839b146a54505b746784cd42a8efb844963, sway now uses a libdrm header. Add this dependency to the build system so headers from it can be used on systems where pkg-config is required to find them.
2021-02-23shells: Update comment about size change on commitKenny Levinsen-3/+6
2021-02-23transaction: Remove unused ready_immediatelyKenny Levinsen-14/+0
2021-02-23transaction: Note if instructions are server requestsKenny Levinsen-6/+26
On server request, we need to send configure events to inform the client of the new intended size. If the client changes size itself, sending a configure event will only cause problems. Use transaction_commit_dirty_client to distinguish between the two transaction causes.
2021-02-23Fix wl_shm_format passed to wlr_texture_from_pixelsSimon Ser-2/+3
See https://github.com/swaywm/wlroots/pull/2744