Fancy dynamic menu for X11 and Wayland, compatible with dmenu!
Go to file
2023-03-03 17:12:38 +01:00
docs add arguments for hiding and showing stuff 2023-03-02 18:56:35 +01:00
libs fix: prompt increases image gaps 2023-03-03 17:12:38 +01:00
scripts use normal mode by default, but insert mode in spmenu_run 2023-02-26 05:50:36 +01:00
.gitignore add pango markup toggles 2023-02-28 15:51:32 +01:00
colors.h add vim like modes 2023-02-25 17:44:52 +01:00
draw.c switch from deprecated XKeycodeToKeysym() to XkbKeycodeToKeysym() 2023-02-10 11:32:17 +01:00
draw.h Add initial build of spmenu 2023-01-20 23:17:30 +01:00
host.mk Add man page, with WIP documentation 2023-02-26 15:37:09 +01:00
keybinds.h Fix toggle keybind 2023-03-02 16:22:59 +01:00
LICENSE add very wip image support 2023-02-25 03:46:26 +01:00
main.c Add initial build of spmenu 2023-01-20 23:17:30 +01:00
main.h Add initial build of spmenu 2023-01-20 23:17:30 +01:00
Makefile Add man page, with WIP documentation 2023-02-26 15:37:09 +01:00
options.h add option to change the password character 2023-03-02 18:43:09 +01:00
options.mk bump version to 0.2.1 2023-03-01 07:05:09 +01:00
PKGBUILD updae pkgbuild 2023-03-01 13:20:53 +01:00
README.md add note about arch 2023-03-02 10:07:56 +01:00
spmenu.1 add arguments for hiding and showing stuff 2023-03-02 18:56:35 +01:00
spmenu.c declare char 2023-03-02 21:25:43 +01:00
TODO add some more to the TODO 2023-03-02 23:21:22 +01:00
toggle.mk add rtl language support (im going to use this for dboard) 2023-01-22 11:22:33 +01:00
xresources.h add option to change the password character 2023-03-02 18:43:09 +01:00

spmenu

image

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.

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.

  • dwm-like keybind array (See keybinds.h)
  • Vim-like modes, including indicator
  • 256 color support through SGR codes.
  • Image support (from this repository)
  • Option to block typing.
  • Rewritten arguments, old arguments still work though.
  • Border only when centered option
  • Hiding each part of the menu

Other features

Note: This is an incomplete list, it's just here to give you an idea of what this build has to offer.

  • 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
  • imlib2
    • Used for image support, can be disabled if you don't want this by editing host.mk and defining NOIMAGE
  • 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)

Installation (most GNU/Linux distributions)

emerge dev-vcs/git # Install dev-vcs/git using your favorite package manager

git clone https://codeberg.org/speedie/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 spmenu as well as other useful packages.

Images

To use an image, pipe IMG:/path/to/image to spmenu. If you want you can specify arguments.

printf "IMG:$HOME/Wallpapers/Art/2.png\tThis is a cool image.\n" | spmenu

.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/dmenu scripts. Here are a few I've written/use:

Notes for users of Arch who manually compile

This fork of spmenu is compiled using tcc for speed however tcc from the Arch repositories seems to be broken. I'm sure there's a better way to fix this but I just fix it by installing this package from the AUR.

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.