Skip to content
A silhouette of someone with long hair on a swing hung from a branch, in front of a full moon

Moonswing

A largely AI-coded, very unserious, just-for-funzies desktop environment for Linux, built entirely in Flutter.

Moonswing draws a whole desktop session out of one Flutter process: wlr-layer-shell panels, a wallpaper and desktop-icon surface, full-screen overlays, popups, an on-screen display and a lock screen. It is also the session’s notification daemon, its StatusNotifierItem tray host, its xdg-desktop-portal ScreenCast backend, its polkit authentication agent and its session locker.

It exists to:

  1. Stress test Flutter
  2. Explore the bounds of building new desktops for Wayland
  3. Experiment with new Wayland protocols, portals, and everything else
  4. Have fun and build something fun

Panels that are yours

Any number of panels, on any edge, each with its own height, layer and left/centre/right module layout. Every strip on the bar is a module with its own [modules.*] table.

Themes are files

A theme is a flat TOML table under ~/.config/moonswing/themes/. Six ship with the shell; edit one and it forks into your own.

A real desktop surface

Wallpaper, a desktop-icon grid, and resizable desktop widgets — clock, moon phase and friends — sharing the same cells.

Session plumbing included

Notifications, tray, media controls, screen sharing, polkit prompts, idle locking and an on-screen indicator, all from the same process.

Moonswing runs entirely on your own computer, and the project runs no server. You can optionally sign in to one or more Google accounts under Settings › Accounts, which shows your calendar events in the shell’s Calendar tab and can put today’s meetings on the todo board. That access is read-only, and your calendar goes straight from Google to your machine. A GitHub account can be linked there too, for the notification inbox on the bar.