···55 <h3>A shepherd for your AppImages.</h3>
66</div>
7788-AppHerder automatically installs, removes, and upgrades your AppImages. Throw them in `~/AppImages` and AppHerder does the rest: apps appear in your menu, deleted ones disappear from it, and supported apps update in place.
88+AppHerder automatically installs, removes, and upgrades your AppImages. Throw them in `~/AppImages` and AppHerder does the rest: apps appear in your menu, deleted apps disappear, and supported apps update in place.
991010## Features
11111212- **Set it and forget it.** Watches `~/AppImages` and checks for updates in the background.
1313-- **Real apps, not loose files.** Installed AppImages show up natively in your application menu.
1414-- **Install from anywhere.** Point it at a local file or paste a download link.
1515-- **Updates without the pile-up.** A newer version replaces the old one.
1313+- **Real apps.** Installed AppImages show up natively in your application menu.
1414+- **In-place upgrades.** New versions seemlessly replace old ones.
1615- **Verified updates.** Pins the publisher's signing key on first install, then refuses tampered updates.
1717-- **One-command rollback.** A bad update? Put the old version back instantly.
1818-- **Stays out of the way.** It only touches launchers it created. Your Flatpaks and hand-made shortcuts are safe.
1616+- **Quick rollbacks.** Bad update? Put the old version back instantly.
1717+- **Stays out of the way.** Only touches launchers it creates. Your other apps are safe.
19182019## Installation
2120···4342```bash
4443chmod +x appherder-*-x86_64.AppImage
4544./appherder-*-x86_64.AppImage install ./appherder-*-x86_64.AppImage
4646-appherder autosync
4747-appherder autoupgrade
4545+appherder autosync # Watch ~/AppImages
4646+appherder autoupgrade # Enable automatic app upgrades
4847```
49485050-The install step copies it into `~/AppImages` and links it to `~/.local/bin/appherder` automatically. You may need to restart your terminal or run `export PATH="$HOME/.local/bin:$PATH"` for the command to be found.
4949+The install step copies it into `~/AppImages` and links it to `~/.local/bin/appherder` automatically. You may need to restart your terminal or run `export PATH="$HOME/.local/bin:$PATH"` for the app to be found.
51505251### Nix flake
5352···7675appherder autoupgrade # check for updates once a day
7776```
78777979-Then use `~/AppImages` like the place AppImages belong. Add a file and it gets a launcher. Remove a file and its launcher goes away. When an update is available, appherder installs it without leaving the old copy behind.
7878+Then use `~/AppImages` like the place AppImages belong. Add a file and it gets a launcher. Remove a file and its launcher goes away. When an update is available, appherder installs it in-place (no app restarts needed).
80798180Install an app from a file or URL:
8281···117116Undo a bad update:
118117119118```bash
120120-appherder rollback foo # restore the version the last update replaced
119119+appherder rollback foo # restore the last version
121120appherder rollback foo 1.2.3 # or restore a specific saved version
122121```
123122124123AppHerder keeps the last few versions of each app and saves the current one whenever an install or upgrade replaces it.
125124126126-Coming from another AppImage tool? `appherder migrate` adopts the ones in `~/AppImages` and clears out launchers whose AppImage is gone.
125125+Coming from another AppImage tool? `appherder migrate` adopts the apps in `~/AppImages` and manages them for you.
127126128127## Verified updates
129128130130-Some AppImages are signed by their publisher. The first time AppHerder installs a signed app, it pins that signing key. From then on, every update must be signed by the same key: an unsigned, tampered, or differently-signed build is refused instead of installed. Changing the trusted key is deliberate, so swapping publishers means uninstalling and reinstalling. Apps that aren't signed keep working as before; the pin only takes effect once a real signature has been seen.
129129+Some AppImages are signed by their publisher. The first time AppHerder installs a signed app, it pins that signing key. From then on, every update must be signed by the same key: an unsigned, tampered, or differently-signed build is refused. Changing the trusted key is deliberate, so swapping publishers means uninstalling and reinstalling. Apps that aren't signed keep working as before; the pin only takes effect once a real signature has been seen.
131130132131`appherder list` shows each app's status in the **SIGNATURE** column: `pinned` (key locked in), `signed` (carries a signature appherder hasn't pinned yet), or `none`.
133132
+7
docs/Configuration.md
···3636| `max_saved_versions` | int | `3` | Number of prior versions kept for rollback. |
3737| `bin_dir` | string | `~/.local/bin` | Directory for `appherder link` symlinks. |
38383939+Note that if you change `appimages_dir` or `bin_dir` you will need to regenerate the systemd units that make AppHerder automatic:
4040+4141+```bash
4242+appherder autosync
4343+appherder autoupgrade
4444+```
4545+3946## Source overrides
40474148The `[sources]` table overrides the update source for an app, taking priority over the embedded `.upd_info` ELF section. The key is the app name (the filename without `.appimage`).