Commit graph

1880 commits

Author SHA1 Message Date
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
Victoria Brekenfeld
d17a4ead68 kms/surface: Simpify surface feedback creation 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
85d8b8dc06 kms/surface: Clear feedback on resume 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
2eff4607bd kms/device: Advertise texture_formats instead of render_formats 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
ca00df0b37 kms: Track active clients instead of active buffers 2026-01-08 00:20:18 +01:00
Victoria Brekenfeld
a15e378f1e chore: Update smithay 2026-01-08 00:20:18 +01:00
Ashley Wulber
0553e857c3 chore: screen reader toggle shortcut 2026-01-05 16:50:52 +01:00
Hosted Weblate
a2b774470d i18n: translation updates from weblate
Co-authored-by: Geeson Wan <wang14240@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Michael Murphy <michael@mmurphy.dev>
Co-authored-by: therealmate <hellogaming91@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/hu/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/zh_Hans/
Translation: Pop OS/COSMIC Comp
2026-01-05 13:52:41 +01:00
Konstantinos
8a5d78dbb0 fix(zoom-ui): Persist accessibility_zoom increment config value. 2025-12-23 15:01:28 +01:00
Hosted Weblate
3869b3173f i18n: translation updates from weblate
Co-authored-by: Amadɣas <massiin@proton.me>
2025-12-23 15:00:26 +01:00
Vukašin Vojinović
9e143da814 fix(input): pointer clamping
- Reduces the max clamp value by 1, since it previously ended up 1 pixel off screen. Fixes #981.
- Moves clamping to before  `new_under`, since it previously ignored any motion that goes off screen, causing issues in some fullscreen clients. Fixes #1286.
2025-12-22 16:29:22 +01:00
Vukašin Vojinović
bb05037db2 chore: bump MSRV to 1.90 2025-12-22 16:29:22 +01:00
Hosted Weblate
b1a4c3194a i18n: translation updates from weblate
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Co-authored-by: Ekramul Reza <ekramulreza@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Temuri Doghonadze <temuri.doghonadze@gmail.com>
Co-authored-by: Vilius Paliokas <viliuspaliokas@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/ga/
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/lt/
Translation: Pop OS/COSMIC Comp
2025-12-17 12:50:48 +01:00
Hosted Weblate
455abbb2f7 i18n: translation updates from weblate
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Co-authored-by: Ekramul Reza <ekramulreza@users.noreply.hosted.weblate.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/ga/
Translation: Pop OS/COSMIC Comp
2025-12-15 12:09:09 +01:00
Hosted Weblate
973f9de986 i18n: translation updates from weblate
Co-authored-by: Aindriú Mac Giolla Eoin <aindriu80@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/pop-os/cosmic-comp/ga/
Translation: Pop OS/COSMIC Comp
2025-12-12 18:16:03 +01:00
Jacob Kauffmann
141fa472ef chore(deps): Update cosmic-settings-daemon 2025-12-11 15:59:09 -07:00
Mattias Eriksson
5ae0ccfc2e [i18n] Swedish translation of desktop file 2025-12-11 06:58:32 -07:00
Ian Douglas Scott
fa88002ba4 tiling: Add placeholder when tree is empty 2025-12-09 16:58:59 -07:00
Ian Douglas Scott
67d0a825d1 grabs/moving: cleanup drag in tiling layer if window doesn't exist 2025-12-09 16:58:59 -07:00
Victoria Brekenfeld
813dd0ce1c layout/tiling: Always send output_enter after swap 2025-12-09 16:58:44 -07:00
Victoria Brekenfeld
20ce0a283d chore(deps): Update libcosmic/cosmic-text 2025-12-09 22:48:30 +01:00
Victoria Brekenfeld
df88a0e181 chore: smithay update 2025-12-09 17:03:19 +01:00
Hosted Weblate
add06102ad i18n: translation updates from weblate
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
2025-12-09 16:07:25 +01:00
Ian Douglas Scott
cf55b6c899 xwayland: Handle _NET_ACTIVE_WINDOW client messages
Allow X11 clients to activate a window.

This shares the logic with xdg-activation. It might make sense to handle
the urgent hint on an X11 Window natively, but for now this just marks a
workspace as urgent on activation in the same way xdg-activation does.
2025-12-08 20:36:54 +01:00
Victoria Brekenfeld
8fc7f0809f chore: smithay update 2025-12-08 18:01:29 +01:00
Victoria Brekenfeld
6288789842 kms: Only pause device after all surfaces are successfully suspended 2025-12-04 22:29:39 +01:00
Victoria Brekenfeld
7c3e18b588 surface: Don't crash due to weird state after resume 2025-12-04 22:29:39 +01:00
Victoria Brekenfeld
77d3605fb9 Update smithay for DnD updates 2025-12-04 20:17:12 +01:00
Hosted Weblate
3ddc9421e4 i18n: translation updates from weblate
Co-authored-by: CYAXXX <cyaxxx@users.noreply.hosted.weblate.org>
2025-12-03 16:18:20 +01:00
Victoria Brekenfeld
123add9dee shell: Add DelayGrab for client initiated move requests 2025-12-03 11:46:31 +01:00
Jacob Kauffmann
25904ca189 fix: Add second touchpad hotkey config for Pangolin keyboards 2025-12-03 11:46:23 +01:00
Hendrik Hamerlinck
714e80366d fix: properly remove elements from the focus_stack
shift_remove could not delete the element in it's stack because
indexmap::Equivalent requires the hashes to be equivalent
2025-12-02 07:04:09 -08:00
Ian Douglas Scott
6025f483d6 input: Clear modifier_queue on a11y grab
This might be needed if a grab included `super`.
2025-11-24 13:53:05 -08:00
Ian Douglas Scott
1c35339076 input: Use suppresssed_keys() for a11y grabs
This mostly seems to behave the same way, but presumably we want a key
release to be treated as grabbed if and only if the press had been.
2025-11-24 13:53:05 -08:00
Ian Douglas Scott
a3904af03c wayland: Remove atspi protocol
If we want to use the `org.freedesktop.a11y.KeyboardMonitor` protocol on
Pop!_OS, there is no need to support the Cosmic-specific protocol that
requires an `at-spi2-core` patch.
2025-11-24 13:53:05 -08:00
Ian Douglas Scott
f065143d3e dbus: Implement org.freedesktop.a11y.Manager protocol
This protocol is now the upstream solution in at-spi2-core/orca for
registering keyboard grabs and watching key events. It should also be a
bit better than the current verious of our custom Wayland protocol for
this purpose.

Like Mutter and Kwin, we currently restrict this to only be called by
the client that holds the name `org.gnome.Orca.KeyboardMonitor` on the
session bus. We also send the `KeyEvent` signal only to registered
watchers, rather than broadcasting, as DBus does by default.
2025-11-24 13:53:05 -08:00
Ian Douglas Scott
d08ac9645b dbus: Add NameOwners helper
This monitors `NameOwnerChanged` events to keep track of what unique
names own what well-known names on the bus. This allows dbus protocol
implementations to check that callers own a certain name.

To initially populate the list of dbus name owners, `ListNames` is used
at start. Then `GetNameOwner` is lazily invoked to populate owners that
exist at start. To avoid calling that for every single name on the bus.

This also keeps track of unique bus names, which don't require any
additional methods or signals to monitor. This allows us to also detect
if a client has disappeared from the bus.

The `COSMIC_ENFORCE_DBUS_OWNERS` allows disabling checking of owned
names.
2025-11-24 13:53:05 -08:00
Ian Douglas Scott
55401b1e53 dbus: Use ThreadPool instead of zbus blocking API
The `zbus` blocking API just wraps the async API with `block_on`, so we
may as well use our own executor.
2025-11-24 13:53:05 -08:00
Ian Douglas Scott
8455869439 Add a ThreadPool async executor to State
If we need to use simple async code in a few places, a single executor
may be better than having several threads blocking on async code.

This should probably use the calloop executor, but that's had issues in
cosmic-workspaces, though that may not apply here.
2025-11-24 13:53:05 -08:00