Skip to content

Option to open fullscreen windows in a new workspace (macOS-style) #3568

@Jonath-png

Description

@Jonath-png

Is your feature request related to a problem? Please describe.

When I fullscreen a window, it takes over the current workspace and
covers the other windows I had arranged there. For workflows that rely
on a stable multi-window layout, having a fullscreen video or document
hide everything else on that workspace is disruptive. I have to
manually move the window to another workspace first if I want to keep
my current layout intact.

Describe the solution you'd like

An optional setting where fullscreening a window automatically moves it
to a new, dedicated workspace instead of covering the current one. When
the window exits fullscreen, it returns to its original workspace. This
is the default behavior in macOS (Spaces), where fullscreening an app
sends it to its own space and leaves the original layout untouched.

Suggested specifics:

  • New toggle in Settings > Desktop > Workspaces, off by default
  • When enabled: fullscreening a window creates/moves it to a new workspace
  • When the window exits fullscreen: it returns to its original workspace
  • Should respect the dynamic workspace behavior already present in COSMIC

Describe alternatives you've considered

Manually moving a window to a new workspace before fullscreening it.
This works but is tedious and easy to forget, and it defeats the point
of a quick fullscreen toggle. I also looked for a way to script this
via the cosmic config files in ~/.config/cosmic, but those are static
settings and do not expose a fullscreen event to hook into, so a
user-side workaround does not seem possible without compositor changes.

Additional context

I understand this touches compositor-level window state handling in
cosmic-comp. Filing here per the cosmic-epoch issue guidelines so it
can be routed appropriately. No screenshots, since this is a behavioral
change rather than a visual one.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions