Uninstall¶
Hard contract: after uninstall the GUI shows Not installed, and no Rezeptor leftovers remain under ~/.local/share/wine-software/<id>/.
Required in every recipe¶
uninstall:inrecipe.ymlpoints touninstall.sh- Script uses
recipe_hooks::load minimal - Script calls
recipe_hooks::purge_recipe_data - No
recipe_hooks::load kill(Proton hang)
Templates and CI (recipes-check, tests/uninstall-purge.bats) enforce this.
What purge_recipe_data removes¶
Order:
recipe_desktop::remove(menu + desktop shortcuts, icons) — best effort- Chosen
DATA_ROOT(GUI target /data_root.path) - Canonical
data_rootfrom YAML if different and still present
Typically includes: prefix/, recipe.env, markers, staging, wrappers under the recipe data path.
Safety: deleting /, $HOME, /usr, /etc, etc. is blocked.
What intentionally remains¶
| Remains | Why |
|---|---|
Portable folders outside DATA_ROOT |
User property (e.g. WISO under ~/Documents/…) |
| Steam game folders / online fix | BYOS; wrapper only removes Rezeptor state |
Shared Proton-GE under runtime/proton-ge/ |
Used by other recipes |
| Launcher settings | Global under …/rezeptor/settings.json |
Minimal uninstall.sh example¶
#!/usr/bin/env bash
set -euo pipefail
RECIPE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$RECIPE_DIR/../../core/recipe-hooks.sh"
recipe_hooks::load minimal
# optional: pkill app processes
recipe_hooks::purge_recipe_data
Forbidden¶
- Deleting only
prefix/or onlyrecipe.env - “Soft uninstall” that leaves the GUI showing installed
- Reinventing uninstall logic in recipes instead of
purge_recipe_data
Manual check¶
- Install → Uninstall
- GUI shows “Not installed”
ls ~/.local/share/wine-software/<id>/→ empty/missing- Portable/Steam outside still present (if used that way before)
Next¶
- Core API —
purge_recipe_data - User guide — hide vs uninstall