Learning how to do proper keybindings (and a little bit about xmobar)

Hey all, The other day I got my new Thinkpad T420 laptop, and I decided that it was time to put some pressure on my 40 year old brain. I've used KDE on Slackware for what feels like an eternity, so I feel comfortable and at home with KDE. This is both good and bad. Good because I know my way around KDE, bad because over the years I've sorta become a bit of a mouse-junkie (Ack!). So naturally I had to find something completely different: Enter xmonad. I've been fascinated with Haskell for a while now, but never really managed to get started with it. I'm guessing xmonad would be as good a place to start as any. Its been a rocky start for me, I must admit. The whole functional paradigm is both mesmerizing and scary. My first real stumble block has been how to do proper keybindings in xmonad.sh, specifically to be able to adjust the volume using the T420 volume buttons. This is what I've currently got: ---------- import XMonad import XMonad.Actions.CycleWS import XMonad.Hooks.DynamicLog import XMonad.Hooks.ManageDocks import XMonad.Util.EZConfig import XMonad.Util.Run(spawnPipe) import System.IO myLogHook dest = dynamicLogWithPP defaultPP { ppOutput = hPutStrLn dest ,ppVisible = wrap "(" ")" } myKeys = [ ("M-b", sendMessage ToggleStruts ) , ("M-<Right>", nextWS) , ("M-<Left>", prevWS) , ("M-p", spawn "gmrun") , ("M-r", spawn "xmonad --restart") , ("M-g", spawn "google-chrome") , ("M-f", spawn "firefox") , ("M-s", spawn "sudo /usr/sbin/pm-suspend") , ("C-M-h", spawn "sudo /usr/sbin/pm-hibernate") , ("C-M-r", spawn "sudo /sbin/shutdown -r now") , ("C-M-s", spawn "sudo /sbin/shutdown -h now") ] -- This is where it all goes haywire! I found these online, but with no direction on how -- to add them to myKeys. -- volKeys = \c -> mkKeymap c $ -- [ ("<XF86AudioRaiseVolume>", spawn "amixer -c 0 set Master 1+ unmute") -- , ("<XF86AudioLowerVolume>", spawn "amixer -c 0 set Master 1-") -- ] main = do xmproc <- spawnPipe "/usr/bin/xmobar /home/thomas/.xmobarrc" xmonad $ defaultConfig { manageHook = manageDocks <+> manageHook defaultConfig , layoutHook = avoidStruts $ layoutHook defaultConfig , terminal = "urxvt" , focusFollowsMouse = False , logHook = myLogHook xmproc , modMask = mod4Mask -- Rebind Mod to the Windows key } `additionalKeysP` myKeys ---------- The commented block below myKeys is where everything falls apart for me. I cannot for the life of me figure out how to add those two keys to myKeys. Any and all advice is more than welcome! Oh, and one final question: I've chosen xmobar as my status bar and so far I'm loving the slimness completely, but I've noticed that most people seem to be using dzen - is dzen considered the "better" choice? I just want something simple that tells me what workspace I'm on, has a small tray for wicd and some basic cpu/mem/battery info. xmobar does all these things (with a minor glitch in the battery department, but that's for another post), but I'd rather not bet on something that isn't being broadly used by the xmonad community. So, is it OK for me to stick with xmobar? :o) Thomas Løcke

Quoting Thomas Løcke
myKeys = [ ("M-b", sendMessage ToggleStruts ) , ("M-<Right>", nextWS) , ("M-<Left>", prevWS) , ("M-p", spawn "gmrun") , ("M-r", spawn "xmonad --restart") , ("M-g", spawn "google-chrome") , ("M-f", spawn "firefox") , ("M-s", spawn "sudo /usr/sbin/pm-suspend") , ("C-M-h", spawn "sudo /usr/sbin/pm-hibernate") , ("C-M-r", spawn "sudo /sbin/shutdown -r now") , ("C-M-s", spawn "sudo /sbin/shutdown -h now") ]
-- This is where it all goes haywire! I found these online, but with no direction on how -- to add them to myKeys. -- volKeys = \c -> mkKeymap c $ -- [ ("<XF86AudioRaiseVolume>", spawn "amixer -c 0 set Master 1+ unmute") -- , ("<XF86AudioLowerVolume>", spawn "amixer -c 0 set Master 1-") -- ]
The commented block below myKeys is where everything falls apart for me. I cannot for the life of me figure out how to add those two keys to myKeys. Any and all advice is more than welcome!
Just include those bindings at the end of the list. myKeys = [ ("M-b", sendMessage ToggleStruts ) , -- etc. , ("<XF86AudioRaiseVolume>", spawn "amixer -c 0 set Master 1+ unmute" , ("<XF86AudioLowerVolume>", spawn "amixer -c 0 set Master 1-") ] Cheers, ~d

On Mon, Feb 6, 2012 at 4:33 PM,
Just include those bindings at the end of the list.
I tried that already, and it didn't work! But then I went back in my Git log, and lo and behold - I'd missed a comma. Good lord. How embarrassing. My first post to this list, and it's mostly due to a missing comma. Gaggle! It is working flawlessly now. Thanks. :o)
participants (2)
-
Thomas Løcke
-
wagnerdm@seas.upenn.edu