moon
moon installs a downloaded archive, AppImage or .deb. Zero crates, zero daemons, one binary.
Install moon from releases using the install script:
The script installs the binary to ~/.local/bin and puts release assets in ~/.local/share/moon.
Every step is recorded, so nothing is left behind when you remove an app.
~/.local/share/moon/apps/<name>/~/.local/bin so they run from a terminal~/.local/share/applications/<name>.desktop, reusing the package's own file and iconupdate-desktop-database so the app shows in your menumoon remove and moon undo can restore everythingShort aliases work too: ls, rm, i, show, log, check.
| command | what it does |
|---|---|
| moon install <file|url> | Install or upgrade an app |
| moon bundle <name|folder> | Pack an app into a single .moon file |
| moon | Pick a file in the current directory |
| moon inspect <file|url|last> | Show what installing would do, change nothing |
| moon list | List installed apps |
| moon remove <name>... | Uninstall binaries, menu entry and files |
| moon undo [name] | Remove the app installed last (asks first) |
| moon doctor [--fix] | Find broken entries and repair them |
| moon export <name> [dir] | Copy an installed app as a portable bundle |
| moon unexport <name> | Delete a portable bundle |
| moon history [-n N] | Show what was installed, and when |
| moon config | Change settings |
A .moon bundle is a tar.gz holding the app, its manifest, its icon and its menu entry. No server, no account: copy the file and install it anywhere.
$ moon bundle someapp # pack an installed app into ./someapp.moon $ moon install someapp.moon # on any other machine $ tar tzf someapp.moon # it is just a tar.gz
moon doctor finds missing apps, dead symlinks and stale menu entries. Add --fix to clean up.
$ moon doctor ⚠ someapp 1.2.3 Application missing: ~/.local/share/moon/apps/someapp Menu entry missing: ~/.local/share/applications/someapp.desktop ⚠ btop Symlink exists, target missing: ~/.local/bin/btop
Links and menu entries still work. Plug the drive into another machine and the app is there.
$ moon install SomeApp.AppImage \ --portable-dir /mnt/USB/Apps $ moon export someapp /mnt/USB/Apps
USB/
└── Apps/
└── someapp/
├── SomeApp.AppImage
├── someapp.desktop
└── icon.pngPackages install per user into ~/.local by default. Scripts never run unless you ask.
$ moon install nowly-host.deb --dry-run # show the plan, write nothing $ moon install nowly-host.deb # per-user, into ~/.local $ sudo moon install nowly-host.deb --root # into the real /usr