tools

various tools I have been using throughout the years
Log | Files | Refs | README | LICENSE

README.md (3138B)


      1 # tools
      2 [![builds.sr.ht status](https://builds.sr.ht/~mtmn/tools.svg)](https://builds.sr.ht/~mtmn/tools)
      3 
      4 Various tools I have been using throughout the years.
      5 
      6 | tool | description |
      7 |---|---|
      8 | [bandeno](bandeno/) | Bandcamp RSS feed proxy |
      9 | [diggah](diggah/) | find files modified within a time range, locally or over SSH |
     10 | [dam](dam/) | line-file syncer with rsync and coloured diff |
     11 | [hue](hue/) | Ruby library and CLI for Philips Hue |
     12 | [lastfm_rs](lastfm_rs/) | Last.fm scrobble exporter to CSV |
     13 | [lazymaster](lazymaster/) | 2-pass audio loudness normalization via ffmpeg |
     14 | [mpd](mpd/) | MPD utility tools |
     15 | [nts](nts/) | NTS show tracklist fetcher |
     16 | [pmn](pmn/) | password selection utility for pass (Wayland, X11, macOS) |
     17 | [pracomer](pracomer/) | Pomodoro timer |
     18 | [shuffle](shuffle/) | random album picker for MPD |
     19 | [speediness](speediness/) | network speed test |
     20 | [tempfox](tempfox/) | Firefox user.js preference overrides |
     21 | [wrd](wrd/) | full-text search and reader for an offline web archive |
     22 | [plants](plants/) | bluetooth battery monitoring for linux |
     23 | [reflink-snap](reflink-snap/) | reflink (copy-on-write) snapshot manager for XFS |
     24 | [kundali](kundali/) | scans track metadata and builds a sequence around an anchor track |
     25 | [backup](backup/) | backup helper for git, tarsnap, plakar and rclone |
     26 
     27 ## Toolchains
     28 
     29 | language | version | pinned by |
     30 |---|---|---|
     31 | Rust | nightly | `rust-toolchain.toml` (rustup) |
     32 | Zig | 0.16.0 | `build.zig.zon` (`minimum_zig_version`) |
     33 | Python | 3.14 | system |
     34 | Go | 1.26 | `go.mod` |
     35 | Ruby | >= 3.0 | `hue.gemspec` (`required_ruby_version`). reflink-snap uses stdlib only |
     36 | Janet | 1.41.2 | system |
     37 
     38 ## Building
     39 
     40 Install [knit](https://github.com/zyedidia/knit)
     41 and the native toolchains. Knit orchestrates `cargo`, `zig build`, `go build`,
     42 `cc`, and a shared Python virtualenv. All common tasks are available via
     43 `just`:
     44 
     45 ```sh
     46 just all             # build every tool into bin/
     47 just build <target>  # build a specific tool, e.g. just build lazymaster
     48 just run <target>    # build and run a tool
     49 ```
     50 
     51 ## Deploying
     52 
     53 Knit builds and copies binaries to `$HOME/.local/bin`:
     54 
     55 ```sh
     56 knit deploy/<target>
     57 knit deploy/all      # build and install every tool
     58 ```
     59 
     60 The equivalent convenience wrapper is `just deploy <target>`.
     61 
     62 `knit deploy/mpd` (or `just deploy mpd`) installs the configured `mpd_*`
     63 binaries. Deployed Python tools
     64 (diggah, lazymaster, nts, shuffle) are thin shims that run out of this
     65 repository's `.venv`, and deployed Ruby tools (hue, reflink-snap) run
     66 straight from the checkout. Both need the checkout to stay in place.
     67 
     68 ## Development
     69 
     70 ```sh
     71 just test                    # run the Rust, Zig, Go, and MPD test suites
     72 just clippy                  # run Clippy over the Cargo workspace
     73 just rustfmt                 # format the Cargo workspace with rustfmt
     74 ```
     75 
     76 rust-analyzer works out of the box against the Cargo workspace.
     77 
     78 ## Other
     79 
     80 ```sh
     81 just cargo-lockfile          # update Cargo.lock
     82 just pip-update              # update requirements.txt (Python lockfile)
     83 just clean                   # remove build artifacts and caches
     84 ```