Tree


.bazelrccommits | blame
.bazelversioncommits | blame
.build.ymlcommits | blame
.gitignorecommits | blame
.pre-commit-config.yamlcommits | blame
BUILDcommits | blame
Cargo.lockcommits | blame
Cargo.tomlcommits | blame
LICENSEcommits | blame
MODULE.bazelcommits | blame
MODULE.bazel.lockcommits | blame
README.mdcommits | blame
bandeno/
bazel/
dam/
diggah/
hue/
justfilecommits | blame
lastfm_rs/
lazymaster/
mpd/
nts/
pmn/
pracomer/
requirements.incommits | blame
requirements.outcommits | blame
rustfmt.tomlcommits | blame
shuffle/
speediness/
tempfox/
wlr-river-title/
wrd/

README.md

# tools
[![builds.sr.ht status](https://builds.sr.ht/~mtmn/tools.svg)](https://builds.sr.ht/~mtmn/tools?)

Various tools I have been using throughout the years.

| tool | description |
|---|---|
| [bandeno](bandeno/) | Bandcamp RSS feed proxy |
| [diggah](diggah/) | find files modified within a time range, locally or over SSH |
| [dam](dam/) | line-file syncer with rsync and coloured diff |
| [hue](hue/) | Ruby library and CLI for Philips Hue |
| [lastfm_rs](lastfm_rs/) | Last.fm scrobble exporter to CSV |
| [lazymaster](lazymaster/) | 2-pass audio loudness normalization via ffmpeg |
| [mpd](mpd/) | MPD utility tools |
| [nts](nts/) | NTS show tracklist fetcher |
| [pmn](pmn/) | password selection utility for pass (Wayland, X11, macOS) |
| [pracomer](pracomer/) | Pomodoro timer |
| [shuffle](shuffle/) | random album picker for MPD |
| [speediness](speediness/) | network speed test |
| [tempfox](tempfox/) | Firefox user.js preference overrides |
| [wlr-river-title](wlr-river-title/) | River/Wayland focused view title printer |
| [wrd](wrd/) | full-text search and reader for an offline web archive |

## Toolchains

| language | version |
|---|---|
| Rust | nightly (2026-05-11) |
| Zig | 0.16.0 |
| Python | 3.14 |
| Go | 1.26.3 |

## Building

Install [Bazelisk](https://github.com/bazelbuild/bazelisk). All common tasks are available via `just`:

```sh
just fetch           # fetch all dependencies
just build <target>  # build a specific tool, e.g. just build lazymaster
```

## Deploying

Builds or deploys built binaries to `$HOME/.local/share/tools`:

```sh
sudo install -d -m 700 -o "$USER" "$HOME/.local/share/tools"
just build <target>
just deploy <target>
```

## Development

```sh
just clippy <target>         # run Clippy on a Rust target
just rustfmt <target>        # format a Rust target with rustfmt
just rust-gen-project        # generate rust-analyzer project schema
```

## Other

```sh
just tidy                    # run bazelisk mod tidy
just cargo-lockfile          # update Cargo.lock
just pip-update              # update requirements.out (Python lockfile)
just clean                   # clean the Bazel cache
```