Commit graph

254 commits

Author SHA1 Message Date
Victoria Brekenfeld
2a3bd84e22 output_configuration: Allow setting xwayland primary output 2025-04-14 18:15:28 +02:00
Ian Douglas Scott
2fe5897db0 Replace screencopy with ext-image-copy-capture-v1 2025-04-01 18:22:42 +02:00
Victoria Brekenfeld
0ba0a0cdaa a11y/zoom: zoom level per output 2025-03-28 18:35:06 +01:00
Victoria Brekenfeld
babb96ddfa a11y/zoom: Drop last state 2025-03-28 18:35:06 +01:00
Victoria Brekenfeld
b0d0bfb034 xdg-activation/toplevel-management: Unmaximize when activating a tiled window 2025-03-27 11:57:17 +01:00
Victoria Brekenfeld
7929e25966 kms: Support screen filters 2025-03-24 19:10:52 +01:00
Victoria Brekenfeld
a748ea885e wayland: Add support for cosmic-a11y version 2 2025-03-24 19:10:52 +01:00
Victoria Brekenfeld
c10d400d70 screencopy: Remove unnecessary lifetime 2025-03-24 19:10:52 +01:00
Ian Douglas Scott
7340e2beff Improve handling of XDG activation tokens in shell
Requires https://github.com/Smithay/smithay/pull/1676.

This changes two things:
* `Workspace::is_empty` no longer checks if there are activation tokens,
  but a separate `Workspace::can_auto_remove` checks if the workspace is
  empty and has no activation tokens.
  - When we add workspace pinning, that can also be checked there.
* `Workspace` no longer contains a `pending_tokens` list that is updated
  on `refresh`. Instead, `can_auto_remove` takes the xdg activation
  state as an argument.

Since `Workspace::refresh` normally is run for focused workspaces, this
fixes allowing non-focused workspaces to be removed when an activation
token expires. It seems generally good to avoid tracking the activation
tokens in two places, and this is probably more efficient than needing
to refresh in more places.

By splitting this, we still don't remove an empty workspace if it has a
pending activation token, but we also don't add an empty workspace for
an activation token.

This mitigates the confusing behavior with activation tokens that aren't
used, but having to wait a few seconds in some cases before a workspace
is removed is still a little confusing. (We probably want `cosmic-term`
and `cosmic-workspace` to either consume the activation tokens they are
passed, or not be passed tokens when started by keybinding?)

Fixes https://github.com/pop-os/cosmic-comp/issues/1099.
2025-03-14 17:53:34 +01:00
Victoria Brekenfeld
95b27637ae chore: smithay update 2025-03-12 16:50:58 +01:00
Ian Douglas Scott
aac8166962 Add cosmic-workspace-v2, image source, toplevel info changes
This new protocol extends `ext-workspace-v1` with the same additional
functionality `cosmic-workspace-v1` provided. Toplevel info and toplevel
management are also updated to use ext handles, and there's an image
source for ext workspaces.

For now, the old protocol is still supported.
2025-03-03 12:30:25 +01:00
Ian Douglas Scott
0a6f2726cb protocol/toplevel_management: Use WorkspaceHandle in argument
Already depends on `WorkspaceHandler`, so it can get the handle, and
toplevel info uses `WorkspaceHandle`s.
2025-03-03 12:30:25 +01:00
Victoria Brekenfeld
c45a58c16c wayland: Implement cosmic-a11y-v1 2025-02-20 23:51:55 +01:00
Victoria Brekenfeld
2e2943d99c render: Scale contents according to zoom_level 2025-02-20 23:51:55 +01:00
Daniel
2553810621
grabs: Snap Window Edges to Close Output Edges 2025-02-14 11:58:09 +01:00
Ian Douglas Scott
723f758439 protocol/workspace: Add support for ext-workspace-v1
To support both `ext-workspace-v1` and `cosmic-workspace-unstable-v1`,
the API exposed by `wayland/protocols/workspace` now uses the ext
workspace `State` and `GroupCapabilties` bitfields, and converts them to
the cosmic types for the cosmic implementation.

`WorkspaceCapabilities` is a custom type that has cosmic-specific and
ext-specific variants, and is mapped on both backends.

The ext protocol adds an `.assign` request on workspaces, which is
added here, though not currently used.

It also adds an `.id` event. Which we'll probably want when we have
persistent workspaces, but it isn't needed currently.

We still need to add an extension protocol of ext-workspaces to replace
a couple cosmic protocol features.
2025-02-13 11:31:38 +01:00
Victoria Brekenfeld
b2ba402e2d wl_compositor: Send initial size for maximized/fullscreen surfaces 2025-02-07 13:02:42 +01:00
Victoria Brekenfeld
b793975689 shell: Don't animate programmatic maximize_requests 2025-02-07 13:02:42 +01:00
Victoria Brekenfeld
156f634944 shell: Handle maximize requests before commit 2025-02-07 13:02:42 +01:00
Ian Douglas Scott
63995c4919 Remove CosmicMapped::stack_ref_mut
The methods of `CosmicStack` take `&self`, so this isn't actually needed
for anything.
2025-01-28 10:13:52 -08:00
Ian Douglas Scott
649547d3cc toplevel-management: Move window, not whole stack
If the window is part of a stack, remove it then map it outside of the
stack, before calling `Shell::move_window.` Somewhat similar to the code
in `Shell::move_request`.

It would be more elegant if `move_window` handled this in some way, but
I can't think of a way to change the API there that would be better than
this.

(Perhaps some of the naming of methods could also be updated, given
"window" in functions like this means a `CosmicMapped`.)

Protocol support for moving workspaces would also be useful, but should
involve a new protocol object representing the stack.

Fixes https://github.com/pop-os/cosmic-workspaces-epoch/issues/41.
2025-01-28 10:12:38 -08:00
Ian Douglas Scott
9b3a42d450 toplevel-management: Make move_to_workspace work with minimized window
Iterating over `.windows()` for each workspace does not iterate over
`minimized_windows`, so `from_workspace` was not found. Simply changing
this to use `element_for_surface` and `space_for` (like `fullscreen` and
`unfullscreen`) fixes this.

Addresses https://github.com/pop-os/cosmic-workspaces-epoch/issues/89.
Though it does unminimize the window, which we may also want to change.
2025-01-28 10:12:38 -08:00
Victoria Brekenfeld
39528878f8 toplevel_info: Don't send geometry updates, while resizing 2025-01-16 19:44:12 +01:00
Ian Douglas Scott
9dddead15d Add linux-drm-syncobj-v1 protocol 2025-01-15 20:20:53 +01:00
Ian Douglas Scott
1a3494e481 Use get_unconstrained_geometry function for popup position 2025-01-15 00:19:46 +01:00
Victoria Brekenfeld
ff22b98ec7 output_configuration: Better log errors 2025-01-07 17:48:06 +01:00
Ian Douglas Scott
b685512127 Migrate away from Rectangle::from_loc_and_size
Deprecated in `smithay` by https://github.com/Smithay/smithay/pull/1621.
2025-01-07 12:50:35 +01:00
Victoria Brekenfeld
db13eea91c shell: Allow active workspace to be None 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
546966bf15 drm_lease: Disable overlay planes when active 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
8b87d6524e kms: Use new DrmOutput api 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
e356e3c589 xdg_activation: Also consider tiled windows 2025-01-06 20:23:05 +01:00
Victoria Brekenfeld
f12f4db0e1 chore: Update smithay 2025-01-06 20:23:05 +01:00
Ashley Wulber
2c01c94477 fix: activation of an element outside the current workspace
If the activated element is outside the current workspace, its workspace should be set to urgent
2024-12-10 17:37:01 +01:00
Ashley Wulber
76863aaf9b fix: filter by active workspace in overlap notify 2024-12-05 18:20:10 +01:00
Victoria Brekenfeld
fc84fa9948 shell: Fix windows global geometry to include ssd 2024-12-05 18:20:10 +01:00
Alyssa Ross
69d251fb74 screencopy: don't force opaque window backgrounds
This meant that, for windows that were not fully opaque, there was no
way to capture their transparency.  No way to put a window with
transparency on top of a background in OBS, for example.
2024-12-02 18:02:48 +01:00
Ashley Wulber
60558e18fd overlay-notify: Implement handler 2024-11-27 13:20:18 +01:00
Victoria Brekenfeld
81b9fb179b output-configuration: Support cosmic-ext v2 2024-11-27 09:37:01 +01:00
Victoria Brekenfeld
80965a61b9 kms: Adaptive VRR support 2024-11-27 09:37:01 +01:00
Victoria Brekenfeld
d72bf54628 deps: Update smithay 2024-11-27 09:37:01 +01:00
Ian Douglas Scott
90883c6ab1 Add cosmic_atspi_v1 protocol
Used to provide a backend for `AtspiDevice` in `at-spi2-core`, so Orca
keybindings can work.
2024-10-31 18:49:56 +01:00
Ian Douglas Scott
ea27ec5e28 DPMS with wlr-output-power-management-unstable-v1 protocol 2024-10-25 10:31:24 +02:00
Ian Douglas Scott
a96394f7a6 Update egui, smithay-egui, smithay 2024-10-02 23:55:10 +02:00
Christian Meissl
afdb656778 dnd: correct handling of cursor buffer offset 2024-09-23 11:13:21 +02:00
Victoria Brekenfeld
9c7c41c508 toplevel-info/mgmt: Update to v2/v3 2024-09-23 10:55:00 +02:00
Victoria Brekenfeld
fc689118f8 toplevel_management: Don't warp cursor on activate 2024-09-09 20:02:56 +02:00
may
0ffe6ae718
wayland: Implement cursor-shape-v1 2024-09-09 16:21:27 +02:00
skewballfox
7da0bc430a added cursor_follows_focus and focus_follows_cursor 2024-09-04 20:22:40 +02:00
julianbraha
52280e9823 Remove unnecessary casting 2024-09-03 16:08:17 +02:00
julianbraha
52ad30c264 Remove unnecessary lifetimes 2024-08-30 17:53:56 +02:00