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.
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:
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.