Ian Douglas Scott
f9e02f4321
Add comments to functions that iterate over surfaces
...
These should be kept in sync with `render_input_order_internal`.
2026-09-11 14:38:07 -06:00
Victoria Brekenfeld
2a3b4dca5f
shell: fix client initiated tablet grabs
2026-09-03 21:00:11 +02:00
Victoria Brekenfeld
6bf75e1c10
shell: Handle Tablet grabs
2026-09-03 21:00:11 +02:00
Victoria Brekenfeld
6467f79025
shell: Add tablet grabs
2026-09-03 21:00:11 +02:00
RipleyTom
94178034dd
feat: allow XWayland window to start minimized
2026-08-31 16:29:03 +02:00
Hojjat
31827ed240
improv: clear image_cache on refresh
2026-08-25 17:33:56 +02:00
Hojjat
f20de50e41
feat: shake cursor to find by magnifying the cursor
2026-08-21 00:39:02 +02:00
Hojjat
58c018dd40
fix(shell): take presentation feedback from fullscreen surfaces
2026-07-31 13:42:00 -06:00
Victoria Brekenfeld
2d95d46a37
chore: formatting fixes
2026-07-16 19:43:10 +02:00
Victoria Brekenfeld
8ab946f10a
chore: clippy fixes
2026-07-16 19:43:10 +02:00
Tom Grushka
0596cce40d
remove redundant level condition; simplify level early return on ZoomMovement::Centered
2026-07-13 13:08:45 +02:00
Tom Grushka
01c0cb020e
fix: a11y: magnifier: correct Centered/OnEdge focal-point math and refresh focal point at zoom-in
...
- I used AI to assist in research of the focal point computation formulae for OnEdge and Centered modes.
- I used the formulas found in [KDE's zoom magnifier](https://invent.kde.org/plasma/kwin/-/blob/master/src/plugins/zoom/zoom.cpp ) and converted them to Rust and the COSMIC focal point system.
- Remove unnecessary focal-point precomputation in `OutputZoomState::new`, because it is now updated on first zoom in anyway.
- Do focal point computation in Local coordinates in update_focal_point to eliminate local-global conversion confusion/ issues.
- ZoomMovement::OnEdge - single code path rewrite - old two-branch logic caused jumping and unpredictability at high zoom. Fixes [#2683 ](https://github.com/pop-os/cosmic-epoch/issues/2683 ), partially addresses [#2688 ](https://github.com/pop-os/cosmic-epoch/issues/2688 ).
- ZoomMovement::Centered - translation/clamp/invert - prevents "blow up" of calculation at zoom level > 2.0 that caused cursor to disappear off bottom right of screen. Fixes [#1503 ](https://github.com/pop-os/cosmic-comp/issues/1503 ).
- `is_level_change` - sets `previous_point` so that `animating_focal_point` interpolates instead of jumping. Still room for improvement (needs focal point recomputation per-frame during animation to prevent "boomerang" feel), but this is still an improvement over jumping.
- In `trigger_zoom`, call `update_focal_point` when `level > 1.0` - overlaps proposal in [#1859 ](https://github.com/pop-os/cosmic-comp/pull/1859 ) + the level gate to prevent stale focal point on zoom in. Fixes [#2511 ](https://github.com/pop-os/cosmic-comp/issues/2511 ) and [#1883 ](https://github.com/pop-os/cosmic-epoch/issues/1883 ). Partially addresses [#1420 ](https://github.com/pop-os/cosmic-comp/issues/1420 ) (item 1 only).
2026-07-13 13:08:45 +02:00
Victoria Brekenfeld
361a2282c7
output: Add increasing output id
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
db06770a6b
element: Refactor remaining libcosmic elements for blur
2026-07-09 18:08:01 +02:00
Victoria Brekenfeld
eb41b076ed
render: Use NamespaceElements to fix blurred lower layer-shell surfaces
2026-07-09 18:08:01 +02:00
Ian Douglas Scott
373a44d431
shell: Restore fullscreen to single-element stack
...
If a surface was previously a single-element stack, restore it normally
using the floating/tiling restore data, but map as a single element
stack instead of a plain window.
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
98e1dd7f6b
shell: Also restore stack element on sticky layer to stack
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
5c0c22988e
Don't unnecessarily use Option in WorkspaceRestoreData
...
Unless we expect to need this again in the future, it's best not to have
an `Option` here unnecessarily.
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
9e6d46c17e
shell: Restore fullscreen surface to stack
...
Previously, a surface that was in a stack that is fullscreened would be
removed from the stack, and on unfullscreening, restored to the
floating/tiling layer as though it were a new window outside the stack.
Instead, if the stack still exists, add the window to it at the same
position it previously occupied.
2026-07-07 17:46:23 -07:00
Ian Douglas Scott
f765696834
Avoid unnecessarily unwrapping stack_ref() after is_stack()
...
In a lot of cases, matching on `stack_ref()` also works.
2026-07-07 17:46:23 -07:00
Robin Nehls
db0b1afeb5
feat: allow naming pinned workspaces
2026-06-15 23:11:31 +02:00
Ian Douglas Scott
4eaaf4f55c
dbus: Refactor to share DBus connections
...
We should avoid creating more than one session connection or more than
one system connection. We should also ideally avoid blocking the main
thread.
For now this still uses blocking in a couple places, but wrapping async
code (which is how `zbus::blocking` is implemented anyway).
This moves the `NameOwners` creation out of `A11yKeyboardMonitorState`,
so it can be shared with other things. We will likely want that for
https://github.com/pop-os/cosmic-comp/pull/465 to define a secured
protocol to pass an fd to the portal, and potentially any other
sensitive DBus protocols implemented by the compositor.
2026-06-08 19:03:50 +02:00
Hojjat Abdollahi
28ef6bdbc8
feat: support multiple fullscreen windows per workspace
2026-06-02 17:48:33 +02:00
Skygrango
203cad8cbd
shell: disable WindowUI detection if constraint is active
2026-06-01 07:52:42 -07:00
Skygrango
208c2128cd
wayland: implement new_constraint, remove_constraint and cursor_position_hint for PointerConstraintsHandler
...
new_constraint: check if the surface has pointer focus, keyboard focus, and if the pointer is within toplevel geometry or constraint region. If these conditions are met, then enable the constraint.
remove_constraint: apply last cursor position hint that saved in seat.
cursor_position_hint: save the cursor position hints provided by the client to the seat.
2026-06-01 07:52:42 -07:00
Skygrango
e75c9c0c48
shell: implement surface_geometry_offset_from_toplevel for WorkspaceSet
2026-06-01 07:52:42 -07:00
Victoria Brekenfeld
85630236fa
xwm: Support sticky requests for unmapped windows
2026-05-19 19:26:25 +02:00
Hojjat
b5186ef21a
fix: restore snapped windows as snapped after maximize/minimize
2026-05-13 12:43:02 +02:00
Peter Krull
b955789a4e
(fix) Reject resize_request on surfaces which are already being resized
2026-05-07 15:00:38 -06:00
KENZ
977d4c2dca
refactor: make get_popup_toplevel() PopupKind agnostic
...
- for preparation to make unconstrain_popup() PopupKind agnostic.
2026-05-07 15:00:24 -06:00
Victoria Brekenfeld
53e0db28ac
chore: Update smithay
2026-04-27 14:51:46 -07:00
Victoria Brekenfeld
b1f59bd108
state: call image-copy cleanup on refresh
2026-03-27 12:45:43 +01:00
Ilia Malanin
06ece0fdcd
shell: Return surface from take_fullscreen for symmetry with remove_fullscreen
2026-03-27 11:56:04 +01:00
Ilia Malanin
90ce9cab90
shell: Preserve fullscreen state when moving window between workspaces
2026-03-27 11:56:04 +01:00
Victoria Brekenfeld
5216eb50ba
chore: Fix remaining clippy lints
2026-03-24 16:23:43 +01:00
Vukašin Vojinović
2ca99c670a
chore: clippy
2026-03-18 18:19:03 +01:00
Ashley Wulber
b28a435b18
fix(headerbar): double click handling & resize only on press
2026-03-13 15:56:42 -04:00
Ilia Malanin
3f68eee846
shell: Extract FloatingLayout::snap_to_corner to deduplicate snap restore logic
2026-02-24 00:55:49 +01:00
Ilia Malanin
60ecf70910
shell: Add comments explaining pre-set fullscreen before unmap
2026-02-24 00:55:49 +01:00
Ilia Malanin
7f33014710
format: Fixed PR formatting
2026-02-24 00:55:49 +01:00
Ilia Malanin
244111330b
shell: Preserve maximized/snapped state on move between workspaces
2026-02-24 00:55:49 +01:00
Ilia Malanin
4565514e76
shell: Preserve snapped state through fullscreen/minimize round-trips
2026-02-24 00:55:49 +01:00
Ilia Malanin
744e0da6f9
shell: Pre-set fullscreen state before unmapping maximized/snapped windows
...
Fixes #1642
2026-02-24 00:55:49 +01:00
Levi Portenier
00bf8fe215
Merge branch 'master' into fullscreen_panic_fix
2026-02-13 13:42:17 -07:00
Victoria Brekenfeld
4adb07443a
shell: Only clear tiling position on move
2026-01-13 14:35:54 -07:00
Nikola Hristov
09bca7a575
fix: Fullscreen request unreachable code crash
...
caused by a duplication in pending_windows
2026-01-13 20:56:59 +02:00
Victoria Brekenfeld
2adebb5fe1
config: Add and propagate appearance_config
2026-01-13 19:12:22 +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
Victoria Brekenfeld
123add9dee
shell: Add DelayGrab for client initiated move requests
2025-12-03 11:46:31 +01:00