···11+[](https://github.com/alyraffauf/appherder/actions/workflows/tests.yml) [](http://www.gnu.org/licenses/gpl-3.0) [](https://ko-fi.com/alyraffauf)
22+33+<div align="center">
44+ <h1>appherder</h1>
55+ <h3>A herder for your AppImages.</h3>
66+ <p>Install AppImages so they act like real apps instead of loose files in your Downloads.</p>
77+</div>
88+99+On its own, an AppImage is just an executable in a folder. No icon, no menu entry, nothing in your launcher. appherder fixes that: point it at an AppImage and you get a real app, kind of like dropping something into Applications on macOS. Delete it later and everything it set up goes too.
1010+1111+## Features
1212+1313+- **Shows up like a real app.** Lands in your application menu with its real name and icon.
1414+- **Uninstalls cleanly.** Remove an app and its launcher and icon go with it. No leftovers.
1515+- **Upgrades replace instead of piling up.** appherder names an app by what's inside it, not the download's filename, so a newer version of `Foo` just replaces the old one.
1616+- **Won't touch your other apps.** It only removes launchers it made itself, so your Flatpaks, Snaps, and hand-made shortcuts are safe.
1717+- **Quiet when nothing changed.** Re-installing an unchanged app does nothing. Drop your AppImages in one folder and `appherder sync` lines everything up.
1818+1919+## Installation
2020+2121+### Download a binary
2222+2323+Grab `appherder-linux-amd64` (or `-arm64`) from the [latest release](https://github.com/alyraffauf/appherder/releases/latest), then:
2424+2525+```bash
2626+chmod +x appherder-linux-amd64
2727+sudo mv appherder-linux-amd64 /usr/local/bin/appherder
2828+```
2929+3030+### Nix flake
3131+3232+```bash
3333+nix run github:alyraffauf/appherder
3434+```
3535+3636+Or `nix profile install github:alyraffauf/appherder` to keep it around.
3737+3838+### Build from source
3939+4040+Requires Go 1.24+.
4141+4242+```bash
4343+git clone https://github.com/alyraffauf/appherder.git
4444+cd appherder
4545+go build ./cmd/appherder
4646+```
4747+4848+## Usage
4949+5050+```bash
5151+appherder install ~/Downloads/Foo-x86_64.AppImage # install one
5252+appherder uninstall foo # remove one
5353+appherder sync # match your apps to what's in ~/AppImages
5454+appherder migrate # adopt apps another tool set up
5555+```
5656+5757+Installing copies the AppImage into `~/AppImages`, so you can delete the original download. That folder is the source of truth: add or remove files there and `appherder sync` matches your launchers to it. To uninstall, use the name the file has in `~/AppImages` (without `.appimage`).
5858+5959+Coming from another AppImage tool? `appherder migrate` adopts the ones in `~/AppImages` and clears out launchers whose AppImage is gone, leaving everything else alone.
6060+6161+## Under the hood
6262+6363+appherder reads the AppImage's squashfs filesystem directly to grab its icon and desktop entry, then writes a launcher pointing back at the file in `~/AppImages`. It does this without ever running the AppImage, unlike tools that launch it to unpack. Everything it writes is tagged, so uninstall and sync only touch its own files.
6464+6565+## License
6666+6767+[GPLv3](LICENSE.md).