XMonad.Action.GridSelect spawnSelected with nice titles
There’s an awesome module available for XMonad called GridSelect. It
contains very pretty window selectors and such. And one of it’s awesome
functions is spawnSelected
that aimed to build a grid menu with apps to run.
Usage is pretty simple: spawnSelected conf ["xterm", "smplayer", "gvim"]
.
But what if you want to have nice titles rather than command names?
If you’ll take a look on that function source it zips given list with
itself and feeds to gridlist
function, which returns snd
element of chosen
tuple. That means you can easily write your own definitions that will allow to
provide nice names for menu elements. So it will look something like this:
Let’s import module first:
import XMonad.Actions.GridSelect
Then we can define our version of spawnSelected
like this:
spawnSelected' :: [(String, String)] -> X ()
spawnSelected' lst = gridselect conf lst >>= flip whenJust spawn
where conf = defaultGSConfig
Now all you need to do is to add a hotkey to run your menu, something like this:
, ((modm, xK_r), spawnSelected'
[ ("Mozilla Firefox", "firefox")
, ("GVim", "gvim")
, ("MCabber", "xterm -e detach -A /tmp/mcabber -z mcabber")
, ("WeeChat", "xterm -e detach -A /tmp/weechat -z weechat-curses")
, ("Terminal", "xterm")
])