-
Notifications
You must be signed in to change notification settings - Fork 2
docs: README.md #8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Changes from 1 commit
Commits
Show all changes
2 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,5 +1,113 @@ | ||
| # Towel - Distrobox setup for codam clusters | ||
| A towel is just about the most massively useful thing an interstellar hitchhiker can carry. | ||
| # Towel | ||
| > 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. | ||
|
|
||
|
|
||
| ## What this project does | ||
|
|
||
| Towel installs a `towel` command and a predefined Distrobox container (`towel`) based on Fedora toolbox. It adds a simple workflow for: | ||
|
|
||
| - creating/entering the container, | ||
| - installing packages with `dnf` inside the container, | ||
| - exporting app launchers/binaries back to the host via managed wrappers. | ||
|
|
||
| ## Quick start | ||
|
|
||
| ### 1) Install towel | ||
|
|
||
| From this repo root: | ||
|
|
||
| ```bash | ||
| ./install | ||
| ``` | ||
|
|
||
| - Use `./install --yes` in 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 | ||
|
|
||
| ### 2) Create the container | ||
|
|
||
| ```bash | ||
| towel create | ||
| ``` | ||
|
|
||
| ### 3) Enter it | ||
|
|
||
| ```bash | ||
| towel enter | ||
| ``` | ||
|
|
||
| ### 4) Install software | ||
|
|
||
| ```bash | ||
| towel install <package> | ||
| ``` | ||
|
|
||
| By default it prompts whether to export installed apps/binaries to the host. | ||
| Use `towel install --yes <package>` to auto-export. | ||
|
|
||
| --- | ||
|
|
||
| ## Common commands | ||
|
|
||
| ```bash | ||
| 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 release | ||
| ``` | ||
|
|
||
| ## How export works | ||
|
|
||
| Exported 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` | ||
|
|
||
| --- | ||
|
|
||
| ## What applications work well in towel? | ||
|
|
||
| ### ✅ Good fit | ||
|
|
||
| Apps/tools that are: | ||
|
|
||
| - regular RPM packages installed via `dnf` | ||
| - command-line tools with executables in `/usr/bin` | ||
| - desktop apps that ship standard `.desktop` launchers 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. | ||
|
|
||
| ### ⚠️ Usually awkward or unsupported | ||
|
|
||
| Apps that require behavior outside towel’s export/runtime model, for example: | ||
|
|
||
| - software that needs host-level system services (`systemd` units, 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 `.desktop` launcher 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`. | ||
|
|
||
| ## Notes | ||
|
|
||
| - `towel remove` is destructive and unexports managed wrappers first. | ||
| - The default container config lives at `~/.config/distrobox/towel.ini` (copied from this repo during install). | ||
| - If `towel` isn’t found after install, restart your shell so `~/.local/bin` is on `PATH`. | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.