{"slug": "moonswing-a-desktop-environment-for-linux-in-flutter", "title": "Moonswing – A Desktop Environment for Linux in Flutter", "summary": "The miracle-wm-org project released Moonswing, a Linux desktop environment built entirely in Flutter and described by its developers as \"largely AI-coded, very unserious, just for fun,\" intended to stress test Flutter and explore Wayland desktop development. Moonswing ships as a nightly snap for amd64, warns that it \"may be entirely unstable\" with a configuration format \"subject to change at any time,\" and requires dependencies including libgtk3, gtk-layer-shell, libasound2-dev and libmpv-dev, with the lock screen falling back to the system login PAM service unless users run `sudo make install-pam`. The project's documentation is itself AI-generated, which the developers note is \"probably somewhat useless.", "body_md": "A largely AI-coded, very unserious, just for fun desktop\n\n  environment for Linux, built entirely in Flutter.\n\n[**Website & wiki**](https://miracle-wm-org.github.io/moonswing/) ·\n  [Install](https://miracle-wm-org.github.io/moonswing/start/install/) ·\n  [Configuration](https://miracle-wm-org.github.io/moonswing/configuration/)\n\nThe purpose of this project is to:\n\n1. Stress test Flutter\n2. Explore the bounds of building new desktops for Wayland\n3. Experiment with new Wayland protocols, portals, and everything else\n4. Have fun\n\n**Use this project at your own risk!**\n\nThis project may be entirely unstable. The snap will be the only supported packaging from my end. The config format is subject to change at any time.\n\nTo get the latest nightly snap (amd64):\n\n```\ncurl -fsSL https://raw.githubusercontent.com/miracle-wm-org/moonswing/main/install.sh | sh\n```\n\nThen, in your environment of choice (miracle-wm, Miriway, Sway, etc.), run:\n\n```\nmoonswing\n```\n\nTo have miracle-wm start Moonswing with every session, add `--miracle-autostart`:\n\n```\ncurl -fsSL https://raw.githubusercontent.com/miracle-wm-org/moonswing/main/install.sh | sh -s -- --miracle-autostart\n```\n\nThis adds Moonswing to the `startup_apps` of `~/.config/miracle-wm/config.yaml`,\nrestarted whenever it exits and run in its own systemd scope:\n\n```\nstartup_apps:\n  - command: /snap/bin/moonswing\n    restart_on_death: true\n    in_systemd_scope: true\n```\n\nAn existing config is kept and the entry added to it (the original is saved\nalongside as `config.yaml.<timestamp>.bak`); with no config, one is created holding\njust this. If Moonswing is already a startup app there, the file is left untouched.\n\nRe-run the same command to update, and to remove:\n\n```\nsudo snap remove moonswing\n```\n\nFYI! The snap cannot install the PAM service file for you.\n\n- **The PAM service file.**`/etc/pam.d/moonswing` needs root, so the lock\nscreen falls back to the system`login` service — it still authenticates, it\njust attributes unlock attempts to`login` in the auth logs.\n\n- `libgtk3`\n- `gtk-layer-shell`\n- `libasound2-dev`\n- `libmpv-dev`\n\nOn Ubuntu 26.04:\n\n```\nsudo apt install libgtk-3-dev libgtk-layer-shell-dev libasound2-dev libmpv-dev\n```\n\nYou will also need Flutter:\n\n```\nsudo snap install flutter --classic\nflutter channel master\nflutter upgrade\nflutter config --enable-windowing\n```\n\nSome dependencies are needed for the runtime to work properly, but they are not necessary if you plan to to not use these features:\n\n```\nsudo apt install libgtk-session-lock0  # Lock screen\n```\n\nBuild and install to `~/.local` (default), or to a custom prefix:\n\n```\nmake install\nmake install PREFIX=/usr/local\n```\n\nThen run:\n\n```\nmoonswing\n```\n\nOptionally, install the lock screen's PAM service file (needs root, and writes\nto `/etc/pam.d` rather than the prefix):\n\n```\nsudo make install-pam\n```\n\nWithout it the lock screen falls back to the system `login` service, which works\nbut attributes unlock attempts to `login` in the auth logs.\n\nTo uninstall:\n\n```\nmake uninstall\nsudo make uninstall-pam   # if you installed the PAM service file\nflutter run\n```\n\nThe docs are very AI generated, and probably somewhat useless.\n\nThe full configuration reference is in [`CONFIG.md`](https://github.com/miracle-wm-org/moonswing/blob/main/CONFIG.md), and the same content — plus\ninstall, build and wiki pages — is published at\n[https://miracle-wm-org.github.io/moonswing/](https://miracle-wm-org.github.io/moonswing/).\n\nThe site lives in [`website/`](https://github.com/miracle-wm-org/moonswing/blob/main/website) and is built with\n[Astro](https://astro.build) and [Starlight](https://starlight.astro.build). To run it\nlocally:\n\n```\ncd website\nnpm install\nnpm run dev          # http://localhost:4321/moonswing/\n```\n\nIts configuration pages are generated from `CONFIG.md` and its artwork from `assets/`, so\nneither is maintained twice. See [`website/README.md`](https://github.com/miracle-wm-org/moonswing/blob/main/website/README.md).\n\nBug reports and feature requests are very welcome. Please make an issue on the Github project to suggest one.\n\nBecause of how AI-coded this project is, I am not accepting pull requests on it, unless they are for very minor bug fixes. I cannot feasibly read large pull requests and feel satisfied that they are not malicious. As a result, any large pull request that includes a full feature will be closed.", "url": "https://wpnews.pro/news/moonswing-a-desktop-environment-for-linux-in-flutter", "canonical_source": "https://github.com/miracle-wm-org/moonswing", "published_at": "2026-10-19 20:09:29+00:00", "updated_at": "2026-10-19 20:17:17.349581+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Moonswing", "Flutter", "miracle-wm-org", "Wayland", "miracle-wm", "Astro", "Starlight", "Ubuntu"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/moonswing-a-desktop-environment-for-linux-in-flutter", "markdown": "https://wpnews.pro/news/moonswing-a-desktop-environment-for-linux-in-flutter.md", "text": "https://wpnews.pro/news/moonswing-a-desktop-environment-for-linux-in-flutter.txt", "jsonld": "https://wpnews.pro/news/moonswing-a-desktop-environment-for-linux-in-flutter.jsonld"}}