1
0
Fork 0
src/dmenubar
dtb a69c37e1db 2023-09-16 2023-09-16 23:03:29 -04:00
..
LICENSE trim down build 2023-09-14 10:06:25 -04:00
Makefile trim down build 2023-09-14 10:06:25 -04:00
README.md alpine deps 2021-07-02 19:13:22 -04:00
dmenubar.c config in dmenubar.c 2023-09-14 11:35:36 -04:00
drw.c Fix memory leaks in drw 2020-06-11 18:45:33 +02:00
drw.h import new drw from libsl and minor fixes. 2016-06-03 19:13:15 +02:00
screenshot.png add screenshot 2021-05-16 12:34:38 -04:00

README.md

dmenubar - dynamic menu bar

dmenu is an efficient dynamic menu for X. dmenubar is a hack on dmenu that displays a menu bar.

Screenshot of dmenubar displaying "Pretty cool!", as input in the terminal.

Why

lemonbar can't do TTF fonts.

dmenubar intends to be a knockoff of lemonbar that can do TTF, basically. I tore out a ton of the dmenu code, made stdin feed into the dmenu prompt, and presto flavo. Code's not great but dmenubar.c (where most of the changes are) is only ~300 lines so it could be worse.

You shouldn't use this

If you use any features of lemonbar outside of the default settings you probably won't be able to make dmenubar fit your workflow. Cosmetically, dmenu lets you change the font and colors and whether it's on the top or the bottom of the screen and that's about it.

The biggest issue is dmenubar draws over other windows the same way dmenu does. I have my keybindings like this in sxhkd so I can pull up dmenubar and then kill it when I'm done looking:

mod1 + i
        ps x | grep dmenubar | grep -v grep && pkill dmenubar; \
        show_bar_stuff | /home/trinity/src/dmenubar/dmenubar -b

mod1 + shift + i
        pkill dmenubar

Maybe somebody will prefer this over how lemonbar does it? I don't know.

Requirements

In order to build dmenu you need the Xlib header files.

On Alpine Linux:

apk add libx11-dev libxinerama-dev libxft-dev

Installation

Edit config.mk to match your local setup (dmenu is installed into the /usr/local namespace by default).

Afterwards enter the following command to build and install dmenu (if necessary as root):

make clean install