qrlkit 0.5.5

Quick Resource Locator: open named URLs from imported TOML files
qrlkit-0.5.5 is not a library.

CI Crates.io Documentation License

Quick Resource Locators (QRLs)

Basic tool to keep your key resources quickly available at your fingertips.

Define a config with urls, dirs, scripts/snippets, files etc:

# QRLs.toml

[repos]
rs = "https://github.com/qrlkit/qrlkit-rs"
web = "https://github.com/qrlkit/qrlkit-web"

[repos.prs]
rs = "https://github.com/qrlkit/qrlkit-rs"
web = "https://github.com/qrlkit/qrlkit-web/pulls"

[qk.check]
run = """
cargo fmt
cargo test 
cargo clippy
python3 "~dev/qrlkit-rs/test/integration.py"
"""
shell = "zsh"

[qk.dirs]
rs = "~/dev/qrlkit-rs"
web = "~/dev/qrlkit-web"
dirhook = "cd $dir && tree -L 1"

[files]
cargo-toml = "~/dev/qrlkit-rs/Cargo.toml"
readme = "~/dev/qrlkit-rs/README.md"
changelog = "~/dev/qrlkit-web/CHANGELOG.md"
filehook = "nvim $file"

Import the file with qrlkit add and turn it in to a lightweight CLI tool:

$ qrlkit add QRLs.toml

# Open a new terminal, then:

repos rs            # Opens gh repo with browser
repos prs web       # Opens prs for gh page in browser
qk check            # Run standard rust checks and tests in chosen shell
qk dirs web         # cd into dir and see content via custom dirhook
qk files readme     # open qrlkit-rs README.md in neovim

The tool is built to 1) optimize for adaptability to your flow:

  • qrlkit add <x> accepts any file name and supports toml, json and yaml configs
  • Set hooks to customize behavior for files and dirs in each config and/or globally
  • Define your own CLI behavior:
    • By setting config keys you decide if it's logs live nginx or logs nginx live.
    • Name tools and paths what you want
  • Multiple configs are supported at once. Make one for your projects, your machine or your team/org

and 2) have as little friction as possible:

  • If you forget something run qrlkit to run any imported tool
  • qrlkit will suggest the next keys if you get stuck

Install

Step 1 Clone repo and install qrlkit binary

git clone git@github.com:qrlkit/qrlkit-rs.git
cd qrlkit-rs
cargo install --path .

# Then start init to set the defaults you want (shell, browser etc)
qrlkit init 

Step 2 Write some config you want

Step 3 Add the config

qrlkit add shortcuts.toml

Version 1 Roadmap

Version 1 happens January 2027. Until then expect everything to break. Current version is 0.5.1 but any minor version can ship with a breaking change until v1.

Version 1

qrlkit

  • init
  • add <file | dir path>
    • multiple configs at once
    • graceful collisions
  • qrlkit [keys…]
  • ls
  • rm
  • reload
  • set-browser
  • set-filehook
  • set-dirhook
  • nuke

config

  • yaml, json and toml
  • nested keys
  • URLs
  • files and dirs
  • shell scripts
  • variables in paths, urls, scripts
  • file hooks
  • dir hooks
  • browser hooks
  • run shell scripts

package managers

  • cargo install
  • npm install

Raw install

  • linux and macos binaries released on GitHub
  • install.sh

Commands

Command What it does
qrlkit [keys…] Browse or open a resource
qrlkit --config <path> … Use a separate state file for debugging
qrlkit add <file-or-directory> Register configs and set up root commands
qrlkit ls List registered config files
qrlkit rm <path> Unregister a config; keep the file
qrlkit reload Refresh imports and retry shell setup
qrlkit set-browser Choose the default browser
qrlkit set-filehook <command> Choose the default file action (--clear restores path printing)
qrlkit set-dirhook <command> Choose the directory hook (--clear restores changing directory)
qrlkit init Choose browser, shell, filehook, and dirhook interactively
qrlkit init <shell> Print the directory wrapper for manual setup
qrlkit nuke Reset imports, renames, browser selection, and hooks
qrlkit --help Show help

nuke keeps your original config files and installed shell integration. State is stored in $XDG_STATE_HOME/qrlkit/state.yaml on Linux, falling back to ~/.local/state/qrlkit/state.yaml, or in ~/Library/Application Support/qrlkit/state.yaml on macOS. Use qrlkit --config <path> … for separate state (usefull for debugging).

Contributing

Contributions are welcome! Either drop a PR or create an issue.

MIT licensed.