# tools
[](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 |
| [wlr-sway-title](wlr-sway-title/) | Sway/Wayland focused view title printer |
| [wrd](wrd/) | full-text search and reader for an offline web archive |
| [plants](plants/) | bluetooth battery monitoring for linux |
## Toolchains
| language | version |
|---|---|
| Rust | nightly (2026-07-05) |
| 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
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
```