Skip to content

[WIP] Clutter wayland backend, wlr-foreign-toplevel-management#784

Draft
mtwebster wants to merge 5 commits intolinuxmint:masterfrom
mtwebster:wlr-layer-shell
Draft

[WIP] Clutter wayland backend, wlr-foreign-toplevel-management#784
mtwebster wants to merge 5 commits intolinuxmint:masterfrom
mtwebster:wlr-layer-shell

Conversation

@mtwebster
Copy link
Member

@mtwebster mtwebster commented Jan 16, 2026

  • wlr-layer-shell isn't complete, but it's to the point I can start looking at separating Cinnamon responsibilities into two processes.
  • wlr-foreign-toplevel-management - this is mainly to start seeing how to wire this stuff up, though it all may end up in a custom protocol later, since we're not at all interested in making muffin work with anything but Cinnamon. On the other hand, it may be useful to keep it for third-party wmctrl-type utilities.
  • Clutter wayland backend - this allows us to map a ClutterStage as a wayland surface.

mtwebster added a commit to mtwebster/nemo that referenced this pull request Jan 16, 2026
ref:
linuxmint/muffin#784

todo:

Workarea margins - in x11 mode nemo gets accurate, per-monitor
workarea from Cinnamon over dbus, with _NET_WORKAREA values as a
backup (which is only accurate for the primary monitor). From this,
workarea padding is calculated and applied to the icon layouts.

For wayland we can maybe utilize the layer-shell margin properties
instead, but some refactoring is needed to provide the individual
nemo-desktop windows with this (and keeping it up-to-date, should
workarea change).
mtwebster added a commit to mtwebster/nemo that referenced this pull request Jan 16, 2026
ref:
linuxmint/muffin#784

todo:

Workarea margins - in x11 mode nemo gets accurate, per-monitor
workarea from Cinnamon over dbus, with _NET_WORKAREA values as a
backup (which is only accurate for the primary monitor). From this,
workarea padding is calculated and applied to the icon layouts.

For wayland we can maybe utilize the layer-shell margin properties
instead, but some refactoring is needed to provide the individual
nemo-desktop windows with this (and keeping it up-to-date, should
workarea change).
mtwebster added a commit to mtwebster/cinnamon-settings-daemon that referenced this pull request Jan 16, 2026
wayland.

Current csd-background runs as an xwayland client and has special
handling built in to muffin to 'make it work'.

This will allow it to run as a native client, if muffin has the
capability, and if csd-background has been built with support.

ref:
linuxmint/muffin#784
linuxmint/nemo#3684
mtwebster added a commit to mtwebster/cinnamon-settings-daemon that referenced this pull request Jan 16, 2026
wayland.

Current csd-background runs as an xwayland client and has special
handling built in to muffin to 'make it work'.

This will allow it to run as a native client, if muffin has the
capability, and if csd-background has been built with support.

ref:
linuxmint/muffin#784
linuxmint/nemo#3684
mtwebster added a commit to mtwebster/cinnamon-settings-daemon that referenced this pull request Jan 27, 2026
wayland.

Current csd-background runs as an xwayland client and has special
handling built in to muffin to 'make it work'.

This will allow it to run as a native client, if muffin has the
capability, and if csd-background has been built with support.

ref:
linuxmint/muffin#784
linuxmint/nemo#3684
Very WIP, experimenting mainly with nemo-desktop for now.
Allows standalone processes to use Clutter as a wayland client
directly.
Not sure we'll keep this in the end but it gives me boxes to check
for now towards splitting up our Cinnamon process. There are
definitely gaps in support versus the current single-process model
but it allows us to begin to identify them.
@mtwebster mtwebster changed the title [WIP] Implement wlr-layer-shell. [WIP] Implement wlr-layer-shell, wlr-foreign-toplevel-management Feb 6, 2026
mtwebster added a commit to mtwebster/nemo that referenced this pull request Feb 9, 2026
ref:
linuxmint/muffin#784

todo:

Workarea margins - in x11 mode nemo gets accurate, per-monitor
workarea from Cinnamon over dbus, with _NET_WORKAREA values as a
backup (which is only accurate for the primary monitor). From this,
workarea padding is calculated and applied to the icon layouts.

For wayland we can maybe utilize the layer-shell margin properties
instead, but some refactoring is needed to provide the individual
nemo-desktop windows with this (and keeping it up-to-date, should
workarea change).
mtwebster added a commit to mtwebster/nemo that referenced this pull request Feb 26, 2026
ref:
linuxmint/muffin#784

todo:

Workarea margins - in x11 mode nemo gets accurate, per-monitor
workarea from Cinnamon over dbus, with _NET_WORKAREA values as a
backup (which is only accurate for the primary monitor). From this,
workarea padding is calculated and applied to the icon layouts.

For wayland we can maybe utilize the layer-shell margin properties
instead, but some refactoring is needed to provide the individual
nemo-desktop windows with this (and keeping it up-to-date, should
workarea change).
mtwebster added a commit to mtwebster/cinnamon-settings-daemon that referenced this pull request Feb 26, 2026
wayland.

Current csd-background runs as an xwayland client and has special
handling built in to muffin to 'make it work'.

This will allow it to run as a native client, if muffin has the
capability, and if csd-background has been built with support.

ref:
linuxmint/muffin#784
linuxmint/nemo#3684
@mtwebster mtwebster marked this pull request as draft February 26, 2026 19:30
@mtwebster mtwebster changed the title [WIP] Implement wlr-layer-shell, wlr-foreign-toplevel-management [WIP] Clutter wayland backend, wlr-foreign-toplevel-management Mar 2, 2026
mtwebster added a commit to mtwebster/muffin that referenced this pull request Mar 2, 2026
Extracted from linuxmint#784

This is primarily to enable nemo-desktop and csd-background as to run
as gtk-layer-shell clients and integrates their windows into the
compositor stage.

Immediate benefits:
- csd-background can run as a wayland client (currently uses
  xwayland), and its surfaces can  be cloned 'for free' to be re-used
  in Cinnamon's screensaver, alt-tab, expo modes.
- nemo-desktop can run as a wayland client (also currently xwayland)
  and be automatically contained in a monitor's workarea without
  relying on Cinnamon to inform it.
mtwebster added a commit to mtwebster/muffin that referenced this pull request Mar 2, 2026
Extracted from linuxmint#784

This is primarily to enable nemo-desktop and csd-background as to run
as gtk-layer-shell clients and integrates their windows into the
compositor stage.

Immediate benefits:
- csd-background can run as a wayland client (currently uses
  xwayland), and its surfaces can  be cloned 'for free' to be re-used
  in Cinnamon's screensaver, alt-tab, expo modes.
- nemo-desktop can run as a wayland client (also currently xwayland)
  and be automatically contained in a monitor's workarea without
  relying on Cinnamon to inform it.
mtwebster added a commit to mtwebster/muffin that referenced this pull request Mar 2, 2026
Extracted from linuxmint#784

This is primarily to enable nemo-desktop and csd-background as to run
as gtk-layer-shell clients and integrates their windows into the
compositor stage.

Immediate benefits:
- csd-background can run as a wayland client (currently uses
  xwayland), and its surfaces can  be cloned 'for free' to be re-used
  in Cinnamon's screensaver, alt-tab, expo modes.
- nemo-desktop can run as a wayland client (also currently xwayland)
  and be automatically contained in a monitor's workarea without
  relying on Cinnamon to inform it.
mtwebster added a commit to mtwebster/muffin that referenced this pull request Mar 2, 2026
Extracted from linuxmint#784

This is primarily to enable nemo-desktop and csd-background as to run
as gtk-layer-shell clients and integrates their windows into the
compositor stage.

Immediate benefits:
- csd-background can run as a wayland client (currently uses
  xwayland), and its surfaces can  be cloned 'for free' to be re-used
  in Cinnamon's screensaver, alt-tab, expo modes.
- nemo-desktop can run as a wayland client (also currently xwayland)
  and be automatically contained in a monitor's workarea without
  relying on Cinnamon to inform it.

- Remove existing never-used background code.
- Add new method to create per-monitor backgrounds.
- Add new method to access stage background actors.
mtwebster added a commit to mtwebster/cinnamon-settings-daemon that referenced this pull request Mar 2, 2026
wayland.

Current csd-background runs as an xwayland client and has special
handling built in to muffin to 'make it work'.

This will allow it to run as a native client, if muffin has the
capability, and if csd-background has been built with support.

ref:
linuxmint/muffin#784
linuxmint/nemo#3684
mtwebster added a commit that referenced this pull request Mar 2, 2026
Extracted from #784

This is primarily to enable nemo-desktop and csd-background as to run
as gtk-layer-shell clients and integrates their windows into the
compositor stage.

Immediate benefits:
- csd-background can run as a wayland client (currently uses
  xwayland), and its surfaces can  be cloned 'for free' to be re-used
  in Cinnamon's screensaver, alt-tab, expo modes.
- nemo-desktop can run as a wayland client (also currently xwayland)
  and be automatically contained in a monitor's workarea without
  relying on Cinnamon to inform it.

- Remove existing never-used background code.
- Add new method to create per-monitor backgrounds.
- Add new method to access stage background actors.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant