Commit graph

1918 commits

Author SHA1 Message Date
Ian Douglas Scott
7e48191253 grabs/moving: Call cleanup_drag() unconditionally
Previously, drag placeholder would be removed in the call to
`tiling_layer.drop_window()` when dropping onto a tiling layer, but
would not be removed when dropping to a floating layer. Which would
leave a placeholder taking up space, and cause a panic on a future drag
operation.

Instead, call `cleanup_drag()` regardless, after `drop_window()`, to do
any cleanup that is still needed. This moves the call that was
previously added in 67d0a825.
2026-02-09 17:45:57 -08:00
Ian Douglas Scott
de7c78accd layout/tiling: Make cleanup_drag push tree only if something changes
Since `copy_clone()` preserved IDs, `traverse_pre_order_ids()` can be
called on the old tree, without collecting into a `Vec`.

Then we can also `copy_clone()` only if there's actually a change, and
also only call `push_tree()` in that case.

(Once the `LazyCell::get()` stabilization is released, we could use
that here, but `Option::get_or_insert_with()` may be more readable
anyway.)

With this, `cleanup_drag()` should be pretty low-cost, so we shouldn't
have to worry about whether or not it's redundant.
2026-02-09 17:07:03 -08:00
Ian Douglas Scott
2ea1186723 kms: Import on device supporting format, if not advertised device
Fixes https://github.com/pop-os/cosmic-epoch/issues/2978.

This reverses the part of
ca00df0b37 that made it
only try import on the advertised GPU. But this version avoids
initializing an EGL context simply to re-check the supported texture
formats.
2026-02-06 11:58:27 -08:00
Hosted Weblate
0e97ddbd00 i18n: translation updates from weblate
Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Co-authored-by: Hafidz Nasruddin <hafidz@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: Quentin PAGÈS <quentinantonin@free.fr>
Co-authored-by: Zahid Rizky Fakhri <zahidrizkyfakhri@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/id/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/kk/
Translation: Pop OS/COSMIC Comp
2026-02-05 16:12:27 +01:00
Ian Douglas Scott
8e9f832fad wayland: Support wl_fixes protocol using new smithay support 2026-02-05 02:01:14 +01:00
Ian Douglas Scott
748ecb60a9 Add a profile-with-tracy-gpu feature 2026-02-05 02:01:14 +01:00
Ian Douglas Scott
e1342fb2e3 image-copy: Use "buffer age" of 1 for capture
The logic `age_for_buffer` used seems to be a misinterpretation of the
protocol.

The wording is a little unclear, but it seems tracking buffer age is the
responsibility of the client, and the client is required to accumulate
damage and pass it in `damage_buffer`.

Our clients initially weren't doing that correctly. I updated
xdg-desktop-portal-cosmic to use `damage_buffer` after testing on
wlroots, and cosmic-workspaces was recently updated as well.
2026-02-05 02:01:14 +01:00
Ian Douglas Scott
9bc1b6e1ee image-copy: Use damage_output() for additional damage
The important change here is that we now apply the additional damage
first, instead of using `.extend()` to add it after other elements. This
is important since `OutputDamageTracker` will ignore our damage elements
if there are behind an element with an opaque region.

This also makes things a bit simpler, especially `take_screencopy_frames()`,
which no longer needs a mutable references to extend then truncate.

The implementation of `OutputDamageTracker` isn't entirely clear, but as
far as I can tell this is intended to work, and it seems to work in some
testing.
2026-02-05 02:01:14 +01:00
Ian Douglas Scott
cac7a5aca6 image-copy: Use abstraction that's now provided by Smithay
This doesn't change much, since the Smithay implementation is based on
the `cosmic-comp` version, but made more generic. We provide our own
implementation for our workspace capture protocol, but otherwise Smithay
handles the boilerplate now.

This should not cause any change in behavior.
2026-02-05 02:01:14 +01:00
Ian Douglas Scott
0f7e53b600 Update smithay to latest commit
Includes an implementation for `VirtualKeyboardHandler`, which is now
required.
2026-02-05 02:01:14 +01:00
Hojjat
1dfc948f1e fix: only move the grabbed window if a new zone is chosen
This should fix super+click on a tiled window poping it out of the tree
and tiling it to the right half of the screen (default drop window
behavior).
2026-01-26 12:08:58 +01:00
Levi Portenier
816df0cf2b
Merge pull request #1999 from hojjatabdollahi/hojjat/fix-artifact
fix: windows are clipped in overview mode causing visual artifact
2026-01-22 16:02:33 -07:00
Levi Portenier
21c049cad2
Merge branch 'master' into hojjat/fix-artifact 2026-01-22 15:11:08 -07:00
Hosted Weblate
996a8a833f i18n: translation updates from weblate
Co-authored-by: Aman Alam <aalam@users.noreply.hosted.weblate.org>
Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Jun Hwi Ku <siguning@gmail.com>
Co-authored-by: gift983 <983649@my.leicestercollege.ac.uk>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: 김유빈 <k.sein1016@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/ar/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/ko/
Translation: Pop OS/COSMIC Comp
2026-01-21 12:45:33 +01:00
Hosted Weblate
ef5d1f1c37 i18n: translation updates from weblate
Co-authored-by: Aman Alam <aalam@users.noreply.hosted.weblate.org>
Co-authored-by: Baurzhan Muftakhidinov <baurthefirst@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/ar/
Translation: Pop OS/COSMIC Comp
2026-01-21 09:56:08 +01:00
Hosted Weblate
b5e8c585bf i18n: translation updates from weblate
Co-authored-by: lorduskordus <lorduskordus@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/cs/
Translation: Pop OS/COSMIC Comp
2026-01-16 15:55:22 +01:00
Hojjat
a623f18c25 fix: windows are clipped in overview mode causing visual artifact 2026-01-15 17:27:28 -07:00
Victoria Brekenfeld
4adb07443a shell: Only clear tiling position on move 2026-01-13 14:35:54 -07:00
Victoria Brekenfeld
0116bc0dc2 element/surface: Fix corner radius of SSD windows 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
e4e7567174 element: Clip to tile size if available instead of element geometry 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
8f7dc7f00c render/outline: Handler inner/outer radius properly and ceil thickness 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
d5734b4b68 render/shaders: Use high precision for everything 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
d1fb9087b2 render/shadow: Adjust alpha by light/dark mode 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
1e0c4f9b05 layout/tiling: Fix render order of group backdrop when swapping 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
f0b384e240 layout/tiling: Adjust corner radius by scale 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
15bbada498 shell/element: Don't render decorations for dead windows 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
6d0f1b273f layout/tiling: Resize shadows to fit scaled windows 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
23e1bae96e layout/tiling: Skip unnecessary stack window swap 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
8c0136cec0 render/shadow: Tweak shadow variables 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
5c656de9d4 shell/window: Respect sharp corners when tiled 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
fdf865b154 shell/window: Enable resize-border for clipped windows 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
4854f8e42d shell/elements: Don't render border when maximized 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
a28b11cd5b floating: Animate shadow position with the window 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
2c9857fdfc shaders: Use half-pixels for the outline 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
fc7bbd7814 render/shadow: Add physical 1px safety margin 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
40d7fea1cc render: Fix gap between outline and windows 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
b6f0855a31 shell/elements: Fix corners order for clipping/shadows 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
ea470f0a4b config: Update default for appearance_settings 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
e887e185a7 shell/elements: Don't clip maximized windows/stacks 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
59fd732982 shell/elements: Handle clipping and shadows 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
2adebb5fe1 config: Add and propagate appearance_config 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
94d49210e6 shaders: Add drop-shadow shader 2026-01-13 19:12:22 +01:00
Victoria Brekenfeld
2f39c9682c shaders: Add clipped-surface shader 2026-01-13 19:12:22 +01:00
Nikola Hristov
ea429a778e fix: Toplevel disappearing after unmap 2026-01-13 16:50:01 +01:00
Victoria Brekenfeld
d708e18278 focus: Restore focus to swap group 2026-01-12 17:47:28 +01:00
mikairyuu
15b6b678c1 fix(shell): distinguish between unmapping and destroying surfaces
Previously, `unmap_surface` automatically pushed all unmapped windows
into the `pending_windows` list. This behavior is correct for X11
windows (which may be remapped) but incorrect for Wayland `toplevel_destroyed`
events, where the role is permanently gone.

This caused issues with clients like Telegram that reuse `wl_surface`s.
Because the destroyed toplevel remained in `pending_windows`, a
subsequent cleanup commit (e.g., null buffer) triggered a configure
event. This prematurely marked the surface as `configured` in the
shell state.

Consequently, when the client attached a new `xdg_toplevel` role,
the compositor skipped the mandatory initial configure event (assuming
it was already done), causing the window to never appear.

This refactors `unmap_surface` to return `Option<PendingWindow>`
instead of mutating global state.
- XWayland: Explicitly saves the pending window (behavior preserved).
- XDG Shell: Drops the pending window, preventing ghost state interactions.

Fixes #1816
2026-01-09 14:50:55 -07:00
Victoria Brekenfeld
e6a3a3a9c9 xwm: Set xcursor variables in Xresources db 2026-01-09 20:49:56 +01:00
Ian Douglas Scott
612ff2f523 layout/floating: In unmap, don't alter size if no pending changes
If the intent here was that the `if let` would only handle the case
where there are pending changes, then something like this should be
right.

Seems to fix behavior in
https://github.com/pop-os/cosmic-comp/issues/1819.
https://github.com/pop-os/cosmic-comp/issues/1645 may be the same issue.
2026-01-08 16:51:59 -07:00
Victoria Brekenfeld
7b8fca9ece wayland/dmabuf: Send initial surface feedback 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
dc5a9fac66 element/surface: Simplify surface feedback selection using the frame_time_filter 2026-01-08 00:20:18 +01:00