A towel is just about the most massively useful thing an interstellar hitchhiker can carry.
A thin wrapper around Distrobox to keep your host clean while still running tools and apps as if they were locally installed.
Towel installs a towel command and a predefined Distrobox container config for towel, based on Fedora toolbox. It adds a simple workflow for:
- creating/entering the container,
- installing packages with
dnfinside the container, - exporting app launchers/binaries back to the host via managed wrappers.
From this repo root:
./install- Use
./install --yesin non-interactive scripts. - The installer will:
- copy towel files to
~/.local/share/towel - symlink
~/.local/bin/towel - copy distrobox/container config to
~/.config - install distrobox automatically if missing
- copy towel files to
towel createtowel entertowel install <package>By default it prompts whether to export installed apps/binaries to the host.
Use towel install --yes <package> to auto-export.
towel # same as towel enter
towel create # create container from ~/.config/distrobox/towel.ini
towel enter # enter container shell
towel exec <cmd> # run command inside container
towel install <pkg> # dnf install inside container (+ optional export)
towel export <pkg> # export already-installed package commands/apps
towel remove # remove container and exported wrappers
towel update --check # check for updates
towel update --apply # install latest releaseExported integrations are managed by towel and placed under:
- internal wrappers:
~/.local/share/towel/exports/ - host-facing symlinks/apps:
~/.local/bin/~/.local/share/applications/towel-*.desktop
Discovery is package-file based (dnf repoquery) and currently only exports:
- binaries in
/usr/bin/* - desktop entries in
/usr/share/applications/*.desktop
Apps/tools that are:
- regular RPM packages installed via
dnf - command-line tools with executables in
/usr/bin - desktop apps that ship standard
.desktoplaunchers in/usr/share/applications - user-space developer tooling (compilers, linters, formatters, language runtimes, editors)
These are the exact paths towel knows how to export cleanly.
Apps that require behavior outside towel’s export/runtime model, for example:
- software that needs host-level system services (
systemdunits, daemons, kernel modules) - packages whose main binaries are not in
/usr/bin(for example only in/opt, custom paths, or generated at runtime) - GUI apps without a standard
.desktoplauncher under/usr/share/applications - apps needing privileged/root-style host integration beyond normal user-space container access
These can still run manually in some cases, but won’t be reliably auto-exported by towel export.
towel removeis destructive and unexports managed wrappers first.- The default container config lives at
~/.config/distrobox/towel.ini(copied from this repo during install). - If
towelisn’t found after install, restart your shell so~/.local/binis onPATH.