A small wrapper around dmenu.
hdmenu is a small wrapper around dmenu that can 1. Display commands in order of usage and, optionally, apply a frequency decay every time an item is selected. 2. Specify extra files to consider, which will be opened by a program of your choice (e.g., xdg-open). 3. Open certain executables inside of your terminal.
hdmenu
hdmenu
is a small wrapper around dmenu—it can't do very much, though I guess that's the point. It might be most notable for being a discount yeganesh
.
Features
- Display commands in order of usage and, optionally, apply a frequency decay every time an item is selected.
- Specify extra files to consider, which will be opened by a program of your choice (e.g.,
xdg-open
). - Open certain executables inside of your terminal.
Configuration
Hdmenu is configured using a TOML file inside the $XDG_CONFIG_HOME/hdmenu
directory (probably ~/.config/hdmenu
). See example.toml
for an example configuration.
Note that, while having a config file is optional, the $XDG_CONFIG_HOME/hdmenu
directory will be created in either case, in order to store the history file there.
Configuration option
The configuration file takes the following arguments:
open
: A custom opening script (default:xdg-open
).files
: Files one wishes to edit; they will be opened according toopen
. This can also take directoriesfiles = [ "~/.config/emacs/" ]
in which case all files in that directory will be added to the list of files that
hdmenu
cares about. Directories can also be traversed recursively:# Files from `~/.config/emacs/' and all of its subdirectories. files = [ "~/.config/emacs/" ]
executable
: Custom dmenu executable (default:dmenu
).terminal
: A terminal emulator (default:xterm
).tty-programs
: A list of programs to be opened in the above terminal emulator. For example, specifyingtty-programs = [ "htop" ]
will effectively enable one to start
htop
directly from dmenu without having to open an extraneous terminal.decay
: A frequency decay; all non-selected items will be multiplied by this number (default:1
). A good value may be something like0.997
Command line options
--histFile
- Short:
-f
- Description: Path to the history file to use.
- Short:
--files-only
- Short:
-o
- Description: Whether to only show the user-specified files.
- Short:
--decay
- Short:
-d
- Description: A frequency decay; all non-selected items will be multiplied by this
- Short:
All options after --
will be directly forwarded to dmenu
, so you may specify options in the following way:
hdmenu -f /path/to/file -- -i -f -nb '#282A36' -nf '#BBBBBB' -sb '#8BE9FD' -sf '#000000' -fn 'Inconsolata Regular-10'
Installation
Stack
Build with stack build
, then copy the executable to a convenient location (or just use stack install
, to copy the executable to the local-bin-path).
Cabal
Build with cabal install
.