CLI interface for configurable command shortcuts, improved ShortStrokes
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-08-28 12:18:40 +02:00
src Version 1.1.0, update dependencies 2026-08-28 12:18:40 +02:00
.gitignore Setup rust app, parse local YAML config file 2025-09-14 20:27:15 +02:00
Cargo.lock Version 1.1.0, update dependencies 2026-08-28 12:18:40 +02:00
Cargo.toml Version 1.1.0, update dependencies 2026-08-28 12:18:40 +02:00
config.yml Update config parser to allow cli options for specific keybind commands 2026-08-28 12:00:54 +02:00
LICENSE Add MIT license, update Cargo.toml package fields, version 1.0.0 2025-09-17 22:27:07 +02:00
README.md Update README 2026-08-28 12:02:54 +02:00

QuicKeys

A simple command-shortcut CLI app. Better version of and based on ShortStrokes. Configure keys mapped to commands. Run a command for a given key.

Installation

Install from crates.io

Download, build, and install with cargo from crates.io:

cargo install quickeys

Install from source

Build and install from source with cargo:

cargo install --path ./path/to/quickeys

Configuration

Create a configuration YAML file at ~/.config/quickeys/config.yml (or platform equivalent, see dirs::config_dir). You can get started with the example config.yml from the repository.

mkdir -p ~/.config/quickeys &&
curl -Lo ~/.config/quickeys/config.yml https://raw.githubusercontent.com/Noah2610/quickeys/refs/heads/main/config.yml

Here's a quick overview of the config structure:

# Most command-line arguments can be set here. CLI arguments have precedence.
# See `quickeys --help` for details on each config option listed here.
# Note that the special character "~" is expanded to the user's home directory.
config:
    shell:      sh
    background: false
    #stdout:     ~/.local/share/quickeys/stdout.log
    #stderr:     ~/.local/share/quickeys/stderr.log

# Constants are variables that can be used in keybindings' commands.
# Before running a command, all constants are replaced with their values.
# Reference a constant with a leading "@" (ex. "@browser") and optionally
# wrap the identifier name in "{}" (ex. "@{browser}").
constants:
    browser:  firefox
    terminal: alacritty

# Define your key/command mappings here.
# Keys are the literal strings you type to trigger the command.
# Any constants referenced in the command string are resolved
# to their respective values before running.
# Optionally you may set run arguments (cli options) for specific commands
# by specifying the command value as a list of 2 string values:
#   - cli options string
#   - actual command string
keybindings:
    ddg:  '@browser "https://start.duckduckgo.com"'
    # Run terminal command in background process with `--bg` flag,
    # overwriting the default config of `background: false`.
    term: ['--bg', '@terminal']

Usage

# List and describe all command-line options and arguments.
quickeys --help

# Run an interactive prompt (default), running the command for the typed key,
# as soon as a valid key is typed (no Enter needed).
quickeys prompt
quickeys

# Run a single command for the given key.
quickeys run ddg

# Run a single command in a new background process,
# detached from the current terminal.
quickeys run term -b

# List all configured keybindings and their resolved command strings.
quickeys list
quickeys list --help # for more options

License

Distributed under the MIT license. See ./LICENSE.