Ashley Wulber
c6320eec0c
fix: support per-corner radius
...
also adjusts the radius by half of the outline thickness. I believe this is the radius at the center of the outline.
2025-10-03 20:11:16 +02:00
Ashley Wulber
b3aa10436a
feat: corner-radius protocol support
2025-10-03 20:11:16 +02:00
Ian Douglas Scott
346f055fdc
focus: Check if X11 surface matches in KeyboardFocus::replace()
...
Tested on `SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS=1 supertux2`, using
XWayland. If the game starts with fullscreen configured, it minimizes
immediately on start. But after this change, this no longer happens.
This hopefully will improve behaviors with various X11/wine fullscreen
clients. It may fix
https://github.com/pop-os/cosmic-comp/issues/1510 , though looking at the
video the behavior there may be a bit different.
2025-10-02 16:27:29 +02:00
Ian Douglas Scott
9e66bed9d6
focus: Split off an x11_surface() method from is_xwm()
2025-10-02 16:27:29 +02:00
Victoria Brekenfeld
f339e21479
floating: Keep elements positioned relatively on recalculate
2025-09-22 18:07:10 +02:00
Ashley Wulber
b19f66702f
shortcuts: touchpad toggle keybind
2025-09-19 15:33:10 +02:00
Ian Douglas Scott
b75be5b305
Remove last_cursor_position from CosmicMapped
...
Since 5459f52d , this is no longer ever set.
2025-09-18 23:36:30 +02:00
Ian Douglas Scott
d8281ed51b
shell: Handle WorkspaceMode::Global in move_workspace()
...
If workspaces span across outputs, the `Workspace` at a particular
index should be moved on every `WorkspaceSet`.
2025-09-18 23:35:22 +02:00
Ian Douglas Scott
b8ffc89948
shell: Make migrate_workspace() a no-op on global workspace mode
...
Doing nothing may be a bit confusing, but `MigrateWorkspaceToOutput`
isn't bound by default anyway.
2025-09-18 23:35:22 +02:00
Victoria Brekenfeld
7684cd1b2c
render: Fix shader obj leak
2025-09-08 14:47:06 +02:00
19MisterX98
c9e64acad2
fix: don't assume previous workspace still exists #1588
2025-09-04 12:17:12 +02:00
Ian Douglas Scott
e54f4b4963
protocols/workspace: Set ext workspace id for pinned workspace
...
The `id` is defined to be sent only once, on creation of the handle or
later. And only for workspaces that are "likely to be stable across
multiple sessions".
Set we add an `id` initially for pinned workspaces, and add one when the
workspace is pinned.
The `id` is not supposed to be human readable, so we just use a random
value.
2025-08-22 11:58:07 +02:00
Vukašin Vojinović
7f7ab8bcbe
chore: Rust 2024 edition
...
Set the formatting style to 2021 edition to avoid disrupting existing work.
Remove when possible.
2025-08-21 13:10:11 +02:00
Vukašin Vojinović
fec7c94605
chore: use std::sync::LazyLock
2025-08-21 13:10:11 +02:00
Victoria Brekenfeld
b28f92a6e1
focus: Don't consider XWaylandGrab exclusive
2025-08-16 01:19:35 +02:00
Victoria Brekenfeld
73ff0e2c1c
floating/resize: Don't panic if something else cancelled the resize
2025-08-15 16:25:44 +02:00
Victoria Brekenfeld
0095b6d505
order: Newer override-redirect windows are higher in the stack
2025-08-13 16:27:44 +02:00
Victoria Brekenfeld
fce9691947
shell: Correctly handle maximized stacks on move requests
2025-08-13 16:03:03 +02:00
Ian Douglas Scott
2fbf0081ea
Fix compile warnings on nightly
...
Should fix CI test.
2025-08-12 18:03:27 -04:00
Victoria Brekenfeld
c3d2b5f0b7
element: Allow overriding default scanout behaviour
2025-08-07 19:40:23 +02:00
Victoria Brekenfeld
be1424f1ca
render/wayland: filter scanout candidates by frametime estimation
2025-08-07 19:40:23 +02:00
Victoria Brekenfeld
9f4db0b28b
floating: Properly scale positions on migration ( fixes #1167 )
2025-08-04 17:11:46 +02:00
Michael Aaron Murphy
86493b7898
improv(stack): use system theme colors
2025-07-31 17:19:49 +02:00
Victoria Brekenfeld
8648d4450e
utils: Abstract built-in output check
2025-07-31 12:59:32 +02:00
Ian Douglas Scott
d6c1ca8c33
Use &dyn to simplify pointer/keyboard/touch target dispatch
...
Requires https://github.com/Smithay/smithay/pull/1334 .
2025-07-30 19:01:32 +02:00
Ashley Wulber
f2d6f70e13
fix: only activate the active window of the stack on activation
2025-07-22 13:31:24 +02:00
Daniel
7f814a445c
fix: Apply window snapping properly on multiple-output configurations ( #1529 )
2025-07-18 13:02:09 +02:00
Ian Douglas Scott
3debae2495
input/actions: Change active workspace / output when migrated
...
Without this, a workspace moved with the key binding seems to disappear.
This seems more consistent with the behavior of other key bindings.
2025-07-14 20:38:16 +02:00
Ian Douglas Scott
8aa501c0e0
shell: Make activate/end_workspace_swipe return Err if no set
...
It doesn't seem like there's really a need to have `Err(_)` and `Ok(None)`.
`Err(_)` means the set exists for the output, but doesn't have the
appropriate workspace index. It's a bit odd that the set not even
existing becomes `Ok(None)`.
Instead, just return `Err(InvalidWorkspaceIndex)` in either case.
2025-07-14 20:38:16 +02:00
Ian Douglas Scott
6f5a14e95c
shell: Make activate return Some on Global workspace mode
...
This seems to have been returning `Ok(None)` erroneously. Fixing this
corrects output changing keybindings on global workspace mode.
2025-07-14 20:38:16 +02:00
Victoria Brekenfeld
505d9c4039
tiling: fix missing output_enter/set_bounds on remap
2025-07-14 17:38:35 +02:00
Victoria Brekenfeld
7a52eff61e
workspace: Animation and geometry fixes around maximized windows
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
a7b369fab3
shell: Fix layer on maximize restore
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
befcdadf88
floating: animation fixes
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
7988be12a5
shell: rebase fullscreen changes on for xwayland-grab
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
9d91014b8d
shell: Focus window after unfullscreening
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
261134d827
shell: Correctly track was_maximized for fullscreened sticky windows
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
54e76d5ad2
shell: Don't consider animation geometry when remapping fullscreen surfaces
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
d63f1abcdd
workspace: Correctly handle unmapping maximized elements
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
77084ba1cc
floating: Return pending geometry on unmap
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
dec2092684
workspace: Add missing output_enter/leave events for fullscreen surfaces
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
828c0a225b
shell: Fix clicking on background fullscreen surfaces
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
165f83fa38
shell: Properly restore maximized state from minimize/fullscreen
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
b11456614f
shell/workspace: Don't double-remove animating fullscreen surfaces
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
5f97691ce5
xwayland: Don't allow spurious map_requests to map windows twice
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
83ed79af16
workspace: Consistently set minimized state
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
9d3678e908
shell: Ignore fullscreen requests to minimized windows
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
33044d9efb
input: Add fullscreen shortcut
2025-07-04 19:45:54 +02:00
Victoria Brekenfeld
adedb705e7
shell: handle fullscreen windows on a dedicated layer
...
I hoped to split this up into multiple commits, but the api
changes to `shell/workspace.rs` were to invasive to feasibly do this.
Here is a rough list of changes:
- Fullscreen windows aren't mapped to other layers anymore
- This they need their own logic for:
- Sending frames
- Dmabuf Feedback
- Primary outputs
- On commit handlers
- cursor tests
- They get their own unmap/remap logic
- They get a new restore state similar to minimized windows
- Refactored the minimized window state to reuse as much as possible
here
- They need to be part of focus stacks, which means adjusting them
to a new type `FocusTarget` as they previously only handled
`CosmicMapped`.
- Various shell handlers (minimize, move, menu) now have dedicated
logic for fullscreen surfaces
- This was partially necessary due to relying on CosmicSurface now,
partially because they should've had their own logic from the
start. E.g. the context menu is now reflecting the fullscreen
state
- Fullscreen windows may be rendered behind other windows now, when they
loose focus.
- This needed changes to input handling / rendering
2025-07-04 19:45:54 +02:00
Ian Douglas Scott
e5fbf21fee
Remove debug prints that probably shouldn't have been merged
...
Also add a comment to the one place `eprintln!` is used to explain why
it's appropriate.
2025-07-03 14:25:49 +02:00