https://github.com/charles-m-knox/frequencmd
TUI app that can run any shell commands you want. Like bookmarks in your web browser, except shell commands.
https://github.com/charles-m-knox/frequencmd
bash bookmarks frequent frequent-commands go golang shell terminal tui tview utility
Last synced: about 2 months ago
JSON representation
TUI app that can run any shell commands you want. Like bookmarks in your web browser, except shell commands.
- Host: GitHub
- URL: https://github.com/charles-m-knox/frequencmd
- Owner: charles-m-knox
- License: agpl-3.0
- Created: 2024-09-08T19:25:29.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-15T02:40:31.000Z (about 1 year ago)
- Last Synced: 2025-04-15T03:32:20.606Z (about 1 year ago)
- Topics: bash, bookmarks, frequent, frequent-commands, go, golang, shell, terminal, tui, tview, utility
- Language: Go
- Homepage:
- Size: 142 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# frequencmd
TUI app that can run any shell commands you want. Like bookmarks in your web browser, except shell commands.
## Screenshots


## Motivation
I run a lot of commands frequently and wanted to have an easy way to run them. They're not complex - they'll do things like setting the current screen brightness, or change the current powersaver mode. A TUI-based application that could do this for me proved very useful, as it could be used regardless of whether I have an x11/wayland display server running or if I'm in a tty.
## Features
- `/` key to fuzzy find items in the left pane (`/` key again to clear search)
- multiple commands can be run simultaneously
- stderr and stdout are separated
- everything else should be intuitive & simple
## Disclaimer
This application may be buggy. It is not battle-tested except for within my own use cases, which have been successful for about a month as of writing this. It may not do what you expect. You've been warned!
## Usage
Download the appropriate version from the releases page according to your OS. Note that not all systems have been tested at this point in time.
**Important: Mac users need to un `unxz frequencmd-*.xz` first.** Builds for Macs are compressed using `xz` because the build process uses `upx` to compress binaries for all platforms, which does not support Mac OS.
Then, copy `config.example.yml` to `~/.config/frequencmd/config.yml` and modify it to your needs. You may need to create the parent directory.
## Building locally
Requires Go. It is a very lean application and should be easy to get running. You can install it via `go install`:
```bash
CGO_ENABLED=0 go install -ldflags="-s -w" github.com/charles-m-knox/frequencmd@latest
```
Just make sure you have configured your `$PATH` environment variable to include your go bin directory.
## Configuration
The application will first attempt to read from the first file it finds at the following locations:
1. `./config.yml`, then
2. `$XDG_CONFIG_HOME/frequencmd/config.yml`, then
3. `$HOME/frequencmd/config.yml`.
The configuration is a simple `yml` file and currently looks like:
```yaml
---
idleRefreshRateMs: 500
processRunningRefreshRateMs: 100
commands:
- label: "2200K"
command: "redshift"
args: "-P -O 2200"
env:
- "DISPLAY=:0"
- label: "4800K"
command: "redshift"
args: "-P -O 4800"
env:
- "DISPLAY=:0"
- label: "6500K"
command: "redshift"
args: "-P -O 6500"
env:
- "DISPLAY=:0"
- label: "brightness 100%"
command: "/bin/bash"
shell: "xrandr --output eDP-1 --brightness 1"
env:
- "DISPLAY=:0"
# ...
```
## Roadmap
There's not much left to do on this application aside from polishing and refactoring to clean up the codebase. It was hacked together pretty quickly and really doesn't need to do anything more than what it already does. However, it would be neat to have configurable colors translation strings, but currently I'm making no public commitment to that end.
## Compilation targets
Run `make build-all` to build for Linux amd64 & arm, Mac amd64 & arm, and Windows amd64 at the same time. It may take a short while to build for all platform targets. The `xz` command used may require ~14GB of RAM - to change this, modify the `xz -9` flag in `Makefile` to something like `-6`, or just get rid of the extra performance flags entirely.
## License
This software is licensed as AGPL3 or later, see [`LICENSE`](/LICENSE).