docs(readme): document uv tool install into ~/.local/bin

This commit is contained in:
beefcarver committed 2026-11-14 16:40:45 -05:00
1 parent 94c9363e1f
commit ba41a426cc
1 file changed
+38 -1
+38 -1
View File
@@ -150,11 +150,48 @@ spectrum and image passthrough through tmux, install the optional tools too:
sudo pacman -S mpv ffmpeg libpulse tmux
```
### Standalone binary (no Nix, no packaging step)
`uv` can build the package and drop the executable in `~/.local/bin` — this is
the `pip install --user`-style install, without touching a system or project
environment:
```bash
uv tool install git+https://tildeforge.dev/beefcarver/beefy-player
# or, from a checkout:
uv tool install .
```
That creates its own isolated environment under `~/.local/share/uv/tools/` and
symlinks `beefy-player` into `~/.local/bin` (uv's default, which is also where
`pip install --user` writes on Linux). If uv warns that the directory is not on
your `PATH`:
```bash
uv tool update-shell # or add ~/.local/bin to PATH by hand
```
Then run `beefy-player` from anywhere. `uv tool upgrade beefy-player`
re-installs the current source; `uv tool uninstall beefy-player` removes it.
`pipx install git+https://tildeforge.dev/beefcarver/beefy-player` is the
`pipx` equivalent and lands in the same place.
Only the Python side is installed this way, so `mpv` / `ffmpeg` (and `parec`
for the synced spectrum) still come from your package manager; without them the
app runs but has no audio.
> On macOS, note that `~/.local/bin` is uv's and pipx's choice, not Python's:
> a `pip install --user` against Homebrew's Python uses
> `~/Library/Python/3.x/bin` instead.
### From source
`uv sync` installs into a project virtualenv, so the executable is
`.venv/bin/beefy-player` and is not on your `PATH`:
```bash
uv sync
uv run beefy-player
uv run beefy-player # or: .venv/bin/beefy-player
```
## Usage