What is spmenu?
spmenu is an X11 menu application based on dmenu which takes standard input, parses it, and lets the user choose an option and sends the selected option to standard output.
In addition to this, it also serves as a run launcher through the included shell script spmenu_run
. Alternatively you may use spmenu_desktop
which lists .desktop entries instead of $PATH.
It is designed to integrate well with my dwm fork, speedwm.
Special features
This build of spmenu has some features written for this build. Of course if you want, this is free software so you can use it in your own build.
- Proper configuration file support
- dwm-like key/mouse bind array (See keybinds.h and mouse.h)
- Vim-like modes, including indicator.
- The ability to move around items with keybinds.
- Customizable/dynamic line/column size.
- IME support
- Was removed from suckless dmenu years ago due to issues I’ve resolved
- Powerlines
- Web browser like keybindings.
- 256 color support through SGR codes.
- Image support
- Somewhat based on this repository
- Option to block typing.
- Rewritten arguments, old arguments still work though.
- Hiding each part of the menu.
..and more!
Other features
- Pango markup support
- Alpha transparency
- Pywal/.Xresources support
- Grid
- Colored Emoji/Font support
- Highlighting
- Right-to-left language support
- Case-insensitive by default
- Padding; useful with patched dwm with barpadding or speedwm.
- Fuzzy-finding
- Preselect support
- Line-height
- History support
- Customizable bar height
Dependencies
- libX11
- libXrender
- freetype
- libXinerama
- Can be disabled if you don’t want/need multi-monitor support.
- tcc compiler (you can swap it out for GCC by passing CC=“gcc” to the
make
command if you want) - Pango (for drawing fonts)
- Can be disabled if you don't need this.
Installation (most GNU/Linux distributions)
emerge dev-vcs/git # Install dev-vcs/git using your favorite package manager
git clone https://git.speedie.site/spmenu
cd spmenu/
make clean install # Run as root.
Installation (Gentoo)
If you are on Gentoo GNU/Linux, you can add my overlay which includes x11-misc/spmenu
as well as other useful packages.
Installation (Arch)
If you are on Arch GNU/Linux, you can add my repository which includes x11-misc/spmenu
as well as other useful packages.
.Xresources values
This build allows you to define .Xresources values to load on startup. See docs/example.Xresources for a list of default values.
Scripts
This build of spmenu should work with all spmenu scripts. Here are a few I’ve written/use.
Notes for GCC users
If you’re compiling with GCC, chances are you’re seeing a lot of warnings. This is because we’re compiling with -Ofast. I can’t seem to find any issues with using -Ofast but if it bothers you, you can compile with -Os or -O2 which don’t spit out these warnings.