Hello, guys! I'd like to share my patch for dmenu which enables multiple menus option.
WHAT IT DOES Multiple menus allow you to see and choose many options during one dmenu run. It looks like this: http://s1.ipicture.ru/uploads/20120702/s6YyU3zR.png After you press Enter all selected items will be printed to console. MOTIVATION I have a small wrapper for scrot on bash which asks some questions before taking a screenshot. The questions such as: take a screenshot of the region or the whole screen, which filename to use, delay, save file after publishing or not and so on. Also, I cache answers for these questions. However, sometimes I need to take a screenshot with slightly different param and then I have to answer all questions again even though I want to change only one. With this patch I can 1) see all questions at once 2) quickly jump to questions I want to change. I belive this patch is a generalisation and can be useful in larget set of cases than original dmenu. WHERE TO GET You can get it from my repo: hg clone https://bitbucket.org/balta2ar/dmenu-multiple-menu cd dmenu-multiple-menu hg checkout multiple-menu or apply patch to master repo: hg clone http://hg.suckless.org/dmenu cd dmenu wget -O dmenu-4.5-multiple-menu.diff http://ix.io/2Cy hg patch dmenu-4.5-multiple-menu.diff Build and run: make ./dmenu -id " " < test.txt ARGUMENTS The patch adds -id <delims> argument which sets item delimeters string. Menu delimiter character in this case is set to newline (\n). WARNING This version is my first attempt to hack dmenu. For now it is just a quick and very dirty hack. Some old functionality is missing: * no prompt support * no vertical menus support there might be visual * glitches and sudden crashes USER EXPERIENCE So what do you think? Do you like the idea? Can this be of any use to anybody? The code is very messy for now because I want to test the idea first and if people like it, I plan to refactor it. ALTERNATIVES One of the points of suckless' philosophy is to keep things clean and simple. Some might agrue that these complications are not necessary and can be avoided. If so, what are the alternatives which implement abovementioned functionality? Am I reinventing a wheel? Thank you! Best regards, Yuri.