Commit graph

1592 commits

Author SHA1 Message Date
Victoria Brekenfeld
5216eb50ba chore: Fix remaining clippy lints 2026-03-24 16:23:43 +01:00
Victoria Brekenfeld
3a0b1ae5d2 Partially revert "x11: stop remapping minimized windows on restore"
This re-introduces the xwayland remap on un-minimize hack, but limited
to fullscreen applications.
2026-03-19 16:47:45 +01:00
Vukašin Vojinović
edc7758967 chore: update libcosmic
Improves header bar widget behavior.
2026-03-18 18:19:03 +01:00
Vukašin Vojinović
89a50197d2 refactor: use jiff instead of time 2026-03-18 18:19:03 +01:00
Vukašin Vojinović
2ca99c670a chore: clippy 2026-03-18 18:19:03 +01:00
Vukašin Vojinović
d02051d16a chore: remove unneeded dependencies 2026-03-18 18:19:03 +01:00
Ian Douglas Scott
40c7eb26cd image-copy: Store offscreen buffer for shm capture in session
Avoid allocating a GPU buffer every frame, and avoid re-rendering
everything.
2026-03-18 01:34:33 +01:00
Ian Douglas Scott
3ca15a5e1e image-copy: Always use GlesRenderbuffer in render_session 2026-03-18 01:34:33 +01:00
Ian Douglas Scott
c0c7a26178 Move some trait bounds to definition of AsGlowRenderer
Everything implementing `AsGlowRenderer` implements `Renderer` and various
other traits, and by making `AsGlowRenderer` depend on these trait,
things requiring `AsGlowRenderer` can avoid listing those traits as
well.

Looks like implied trait bounds still won't work for the
`Self::TexutureId` and `Self::Error` requirements? So those are not
included here.
2026-03-18 01:34:33 +01:00
Ian Douglas Scott
0414e4fec1 image-copy/render: Pass age to render_output for shm buffer too
Age for shm capture is defined as `0` in `render_session()`, so we don't
need to also set it 0 here.
2026-03-18 01:34:33 +01:00
Ashley Wulber
b28a435b18 fix(headerbar): double click handling & resize only on press 2026-03-13 15:56:42 -04:00
Hojjat
01f1785af5 fix: Ellipsize tab_text and use text widget instead of custom impl 2026-03-13 15:56:42 -04:00
Ashley Wulber
1eb6403575 chore: refactor iced utils into shared module 2026-03-13 15:56:42 -04:00
Ashley Wulber
2e08a871be fix: iced widget event handling 2026-03-13 15:56:42 -04:00
Ashley Wulber
ba84ee9324 fix: text position in stack 2026-03-13 15:56:42 -04:00
Ashley Wulber
a48c4fc47d chore: updates after iced rebase 2026-03-13 15:56:42 -04:00
Ian Douglas Scott
abf9ee504b Revert "image-copy/render: Pass age to render_output for shm buffer too"
This reverts commit d902f4b5c3.

Accidentally pushed to wrong branch.

If only branch protection has a way to prompt for overriding rule on
push...
2026-03-11 20:08:37 -07:00
Ian Douglas Scott
0d6c83db31 Revert "Move some trait bounds to definition of AsGlowRenderer"
This reverts commit c860fcddad.

Accidentally pushed to wrong branch.

If only branch protection has a way to prompt for overriding rule on
push...
2026-03-11 20:08:33 -07:00
Ian Douglas Scott
87a7d20b33 Revert "image-copy: Always use GlesRenderbuffer in render_session"
This reverts commit 398fcc896b.

Accidentally pushed to wrong branch.

If only branch protection has a way to prompt for overriding rule on
push...
2026-03-11 20:08:26 -07:00
Levi Portenier
18a8859fd7
Merge pull request #2182 from RipleyTom/xwayland_scaling
x11: fix fractional scaling
2026-03-11 16:13:01 -06:00
Ian Douglas Scott
398fcc896b image-copy: Always use GlesRenderbuffer in render_session 2026-03-11 10:16:02 -07:00
Ian Douglas Scott
c860fcddad Move some trait bounds to definition of AsGlowRenderer
Everything implementing `AsGlowRenderer` implements `Renderer` and various
other traits, and by making `AsGlowRenderer` depend on these trait,
things requiring `AsGlowRenderer` can avoid listing those traits as
well.

Looks like implied trait bounds still won't work for the
`Self::TexutureId` and `Self::Error` requirements? So those are not
included here.
2026-03-11 10:14:40 -07:00
RipleyTom
b1b09e12c4
x11: fix fractional scaling when fract is 0.75
Fractional scaling was broken when the fractional part was .75 as
the round rounded up the WindowScalingFactor to the upper bound and
applied extra scaling in addition to the one in UnscaledDPI (1.75 *
2 for 175% scaling instead of 1.75 * 1)
2026-03-11 06:24:15 +01:00
Ian Douglas Scott
d902f4b5c3 image-copy/render: Pass age to render_output for shm buffer too
Age for shm capture is defined as `0` in `render_session()`, so we don't
need to also set it 0 here.
2026-03-10 20:14:27 -07:00
mikairyuu
1dc9c53a41 x11: stop remapping minimized windows on restore
The remap-on-restore workaround was introduced in 3b9d0ce
("HACK: Remap minimized X11 windows on restore"), but forcing an
unmap/map cycle on unminimize now regresses Steam: restoring a
non-fullscreen window can leave the main surface black while input
and tooltips still work.

Keep the existing X11 hidden-state handling and only drop the
forced remap cycle. This preserves the newer minimize/unminimize
signaling for X11 clients while avoiding an extra restore-time
remap.
2026-03-10 17:06:28 +01:00
RoyalOughtness
98cca4f3b7 feat: add --no-xwayland argument for running without Xwayland
This leaves the default behavior in place. When --no-xwayland
is not passed, Xwayland is started. If it is passed, then
starting Xwayland is skipped.
2026-03-09 12:17:13 -06: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
Vukašin Vojinović
8768e46577 chore: update dependencies
Includes the `calloop` timer buildup fix.
2026-02-23 15:56:25 +01:00
Clayton Craft
fa3ffd18da chore: Update smithay
Fixes #2081

This also reverts commit 0f7e53b, because the upstream commit (2e00119)
that introduced this thing was reverted
(https://github.com/Smithay/smithay/pull/1941).

There was also change in the cursor_capture_constraints signature in
smithay 7d992793f.
2026-02-23 13:21:08 +01:00
Levi Portenier
ef14b7e294
Merge pull request #1902 from iexavl/fullscreen_panic_fix
Fullscreen request unreachable code crash
2026-02-17 09:01:38 -07:00
Ilia Malanin
110c11eff9 fix(keyboard): Fix keyboard shortcuts for non-Latin layouts 2026-02-17 12:09:38 +01:00
Levi Portenier
00bf8fe215
Merge branch 'master' into fullscreen_panic_fix 2026-02-13 13:42:17 -07:00
Levi Portenier
67c08ef692
Merge pull request #2077 from pop-os/cleanup-drag_noble
layout/tiling: Fix panic from tiling placeholders not being cleaned up
2026-02-12 12:57:27 -07:00
Levi Portenier
af40d8ab24
Merge pull request #2069 from mayakwd/fix/popup-reconfiguration
fix: Remove redundant configure in popup reposition_request
2026-02-11 13:13:45 -07:00
Jakob
dca157ba16 Formatting 2026-02-11 17:36:02 +01:00
Jakob
c1de9b2f1a Made it so changing focus to different monitor takes cursor_follows_focus into consideration 2026-02-11 17:36:02 +01:00
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
Ilia Malanin
f865ad7241 fix: Remove redundant configure in popup reposition_request 2026-02-07 23:38:32 +01: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
Ian Douglas Scott
8e9f832fad wayland: Support wl_fixes protocol using new smithay support 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