My desktop has looked different for a few weeks now. Same machine, same Linux Mint underneath, but when I log in I don't get Cinnamon any more. I get COSMIC.
COSMIC is the desktop environment System76 built for their own distro, Pop!_OS. They used to ship a customised GNOME, got tired of fighting GNOME's direction, and decided to write their own - from scratch, in Rust, with its own Wayland compositor and its own toolkit. That sounded like a multi-year adventure that might never land, and it did take years, but it has been stable since the end of 2025 and it is now the default on Pop!_OS.
What sold me is tiling, or rather the way COSMIC does tiling. I like tiling window managers in theory. In practice I always end up fighting them the moment a dialog pops up or I just want to throw two windows somewhere roughly and get on with it. COSMIC treats tiling as a switch, per workspace. Super+Y and the windows on that workspace snap into a grid that rearranges itself as windows come and go. Super+Y again and they float like on any normal desktop. A single window can be pulled out of the grid with Super+G, and Super+S stacks windows into tabs inside one tile. So I can have a workspace for writing that tiles strictly and one for photo stuff where everything floats, and I never have to commit to a philosophy. The mouse keeps working as expected the whole time, which sounds like a low bar but isn't one for most tiling setups.
And then there's the look. It is clean and modern without being flat to the point of boring, rounded where it should be, and it lets me pick accent colours, corner roundness, dark and light mode, a panel, a dock or both, all from one settings app. After years of Cinnamon this felt like walking into a freshly renovated room in a house I already knew.
Why Mint and not Pop!_OS
The obvious question is why I didn't just install Pop!_OS. Fair. When I picked Mint for this machine, two things mattered: it is built on Ubuntu, so pretty much every piece of software that ships a .deb works out of the box, and I really liked the look and feel of Cinnamon. Neither of those reasons went away. The machine is set up the way I want it, I have Timeshift snapshots going back a while, and I didn't feel like reinstalling just to change the desktop.
And since Mint 22 and Pop!_OS 24.04 both sit on Ubuntu 24.04, COSMIC's packages are built against the same libraries Mint has. That is the whole trick. It works.
Cinnamon is still installed, by the way. It's one click away on the login screen, which turned out to be useful (more on that below).
Installing COSMIC on Mint
COSMIC isn't in Mint's repositories, so the packages come from System76's Pop!_OS repository. The catch: that repository also contains Pop's own versions of a bunch of system packages - mesa, PipeWire configuration, boot themes, Pop's default settings. You want none of those on Mint. So the repository goes in together with an apt pin that only allows COSMIC through.
This took me a couple of attempts to get right, so here is the version that works.
1. Add System76's signing key and check that it really is theirs. The fingerprint has to be 63C46DF0140D738961429F4E204DD8AEC33A7AFF.
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL 'https://keyserver.ubuntu.com/pks/lookup?op=get&options=mr&search=0x63C46DF0140D738961429F4E204DD8AEC33A7AFF' \
| gpg --dearmor | sudo tee /etc/apt/keyrings/pop-os-archive.gpg > /dev/null
gpg --show-keys /etc/apt/keyrings/pop-os-archive.gpg
2. Add the pin before the repository, so there is never a moment where the repo is active without it. Save this as /etc/apt/preferences.d/pop-os-cosmic.pref:
# Only these packages may come from apt.pop-os.org:
Package: cosmic-* xdg-desktop-portal-cosmic adw-gtk3 adwaita-icon-theme-full appstream-data-pop pop-fonts pop-icon-theme pop-launcher pop-sound-theme
Pin: origin apt.pop-os.org
Pin-Priority: 500
# Everything else in the Pop!_OS repository: never.
Package: *
Pin: origin apt.pop-os.org
Pin-Priority: -1
The -1 matters. My first version used 1, which normally means "only if nothing else provides it". But Pop marks several of its system packages as Essential, and apt installs Essential packages from any repository it is allowed to use at all. A test run of a full upgrade wanted to drop Pop's default settings, its PipeWire configuration and its boot splash onto my Mint system. -1 means never, and that's what you want here.
3. Add the repository as /etc/apt/sources.list.d/pop-os-cosmic.sources:
Types: deb
URIs: https://apt.pop-os.org/release
Suites: noble
Components: main
Architectures: amd64
Signed-By: /etc/apt/keyrings/pop-os-archive.gpg
4. Check, then install.
sudo apt update
apt-cache policy pop-default-settings # should show -1
apt install -s cosmic-session # dry run: look for anything being removed
sudo apt install cosmic-session
Log out, pick COSMIC on the login screen, done. Mint's LightDM stays as the login screen, which I like - if COSMIC ever breaks, I can still log in.
Keeping it up to date
With the repository and the pin in place, COSMIC updates simply show up in Mint's Update Manager next to everything else. Nothing to script. COSMIC moves fast, so I try to install those updates on their own rather than in the middle of a big batch, so I know what to blame if something acts up. And Timeshift takes a daily snapshot anyway.
The one thing that bit me
While cleaning up an old VPN server I didn't use any more, I ran apt purge openvpn. Next login: no COSMIC. COSMIC's settings app depends on NetworkManager's OpenVPN plugin, so apt quietly removed the settings app and the COSMIC session along with OpenVPN, and the login screen only offered Cinnamon. Good thing it was still there. Reinstalling cosmic-session and cosmic-settings fixed it in a minute, and to stop the VPN server I masked its service instead of removing the package.
So now I run every apt remove with -s first and actually read the list. A habit I should have had anyway.
Comments
Replies come from Mastodon and Bluesky. Reply on Mastodon or Bluesky to join in.