4 releases

0.1.4 Feb 16, 2022
0.1.3 Feb 13, 2022
0.1.1 Feb 8, 2022
0.1.0 Feb 4, 2022

#122 in HTTP server

MIT license

1.5MB
5K SLoC

JavaScript 4K SLoC // 0.0% comments Rust 743 SLoC // 0.0% comments

thqm

Control your scripts over the network.


thqm takes its name from the arabic تحكم, pronounced tahakum, meaning control.

thqm is a nifty little HTTP server. It dynamically generates a web page menu based on the provided stdin and outputs any selections to stdout. In a sense, it functions similarly to dmenu/rofi but as a HTTP servers.

This makes it very flexible and script friendly.

See the examples folder for some example scripts.

Installation

Manual

To compile and install manually from this repo, you'll need rust installed.

To compile the binary:

$ git clone https://github.com/loiccoyle/thqm-rs
$ cd thqm.rs
$ cargo build --release

The compiled binary will be located at ./target/release/thqm. Just place this binary somewhere in your $PATH.

Cargo

$ cargo install thqm

Arch linux (AUR)

Using your favourite AUR helper:

$ paru -S thqm

Usage

CLI options

thqm has a few command line options, when in doubt see the --help.

$ thqm --help

Scripting

thqm will generate a web page based on the provided stdin, the selected entry will be printed to stdout.

For this behaviour to actually be useful, we'll need to do a bit of scripting.

A typical script will look something like this:

#!/bin/sh

# define the handler function, i.e. what each option should do.
handler() {
  while IFS= read -r event; do
    case "$event" in
    "Option 1")
      # handle Option 1
      ;;
    "Option 2")
      # handle Option 2
      ;;
    *)
      # pass through
      echo "$event"
      ;;
    esac
  done
}

printf "Option 1\nOption 2" | thqm "$@" | handler
# ^                                 ^      ^ Pass user selections to the handler
# │                                 └ Forward script's options to thqm
# └ Provide the options to thqm through stdin

See the examples folder for some example scripts.

Styling

thqm comes with a few included menu styles, see the styles folder, they will be extracted to $XDG_DATA_DIR/thqm when thqm is first run.

You can add your own by following the same style structure as those already included.

Note: thqm uses tera templates to generate the menu.

Dependencies

~19–26MB
~566K SLoC