Dmenu je dynamické menu pro X, které čte seznam oddělených řádků
výstupu stdin. Když uživatel vybere položku a zmáčkne ENTER (Return),
položka se vypíše do stdout a dmenu se ukončí. Zadáváním textu se
omezí nabídnuté položky odpovídající zadaným symbolům.
Dmenu_run je skript užívaný programem dwm jako seznam
spustitelných programů a výsledky spouští v jejich shellu.
-f Dmenu chňapne po klávesnici před čtením stdin, ale může zamknout X dokud se nenačte celý stdin.
-l řádky Dmenu listuje v seznamu vertikálně s daným počtem řádků.
-m monitor Dmenu se zobrazí na monitoru.
-p text Definuje text zobrazený nalevo od vstupního pole.
-fn písmo Definuje použité písmo anebo sestavu písma.
-nb barva Definuje barvu normálního pozadí, podporovány jsou také #RGB, #RRGGBB a barvy X.
-nf barva Definuje normální barvu popředí.
-sb barva Definuje barvu vybraného pozadí.
-sf barva Definuje barvu vybraného popředí.
-v Vypíše verzi programu.
-w idokna Vloží ID okna.
Používání
Dmenu je kompletně ovládáno klávesnicí. Položky jsou vybrány klávesami šipek,
pg-up, pg-down, home a end.
Tab Zkopíruje vybranou položku do vstupního pole.
Return Potvrdí výběr, vypíše vybranou položku do stdout a ukončí.
Ctrl-Return Potvrdí výběr, vypíše vybranou položku do stdout a pokračuje.
Shift-Return Potvrdí vstup, vypíše vybranou položku do stdout a ukončí.
Escape Ukončí bez výběru položky. Vrací chybu.
Ctrl-Vlevo Pohybuje kurzorem na začátek vstupního pole.
Ctrl-Vpravo Pohybuje kurzorem na konec vstupního pole.
Používání programu Dmenu hodnotím jako praktické a v kombinaci se
skripty jako via
jej můžeme rozšířit i o hledání souborů anebo rychlé odkazy na web a mnoho dalšího.
Dobrý pomocník je také přídavný script dmenu_run_history,
který si pamatuje zadané příkazy a ty jsou pak jako první.
Více monitorů
Bez Xineramy se mi dmenu zobrazovalo přes všechny monitory, nebylo to hezké.
Pro zobrazení na aktivní obrazovce jsem jej zkompiloval s podporou Xineramy.
config.mk
# dmenu version
VERSION = 5.2
# paths
PREFIX = /usr/local
MANPREFIX = $(PREFIX)/share/man
X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib
# Xinerama, comment if you don't want it
XINERAMALIBS = -lXinerama
XINERAMAFLAGS = -DXINERAMA
# freetype
FREETYPELIBS = -lfontconfig -lXft
FREETYPEINC = /usr/include/freetype2
# OpenBSD (uncomment)
#FREETYPEINC = $(X11INC)/freetype2
#MANPREFIX = ${PREFIX}/man
# includes and libs
INCS = -I$(X11INC) -I$(FREETYPEINC)
LIBS = -L$(X11LIB) -lX11 $(XINERAMALIBS) $(FREETYPELIBS)
# flags
CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_POSIX_C_SOURCE=200809L -DVERSION=\"$(VERSION)\" $(XINERAMAFLAGS)
CFLAGS = -std=c99 -pedantic -Wall -Os $(INCS) $(CPPFLAGS)
LDFLAGS = $(LIBS)
# compiler and linker
CC = cc
Moje nastavení DMENU s DWM
Líbí se mi vycentrované dmenu uprostřed obrazovky. Používám několik patchů
pro přizpůsobení vzhledu i chování.