It's really nice and fast and it's written in Haskell which is one of my favorite languages.
Here's my xmodmap.hs:
Code: Select all
import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.Run
import XMonad.Util.EZConfig(additionalKeys)
import XMonad.Prompt
import XMonad.Prompt.Input
import XMonad.Actions.WindowGo
import XMonad.Layout.NoBorders
import System.IO
fPrintScreen :: String -> X ()
fPrintScreen file = spawn $ "scrot " ++ file
printScreen :: X ()
printScreen = inputPrompt defaultXPConfig "Print screen to file" ?+ fPrintScreen
myTerminal = "urxvt"
main = do
xmobar <- spawnPipe "xmobar"
xmonad $ defaultConfig {
manageHook = manageHook defaultConfig <+>
composeAll
[ className =? "Conkeror" --> doShift "internet",
manageDocks
],
layoutHook = noBorders $ avoidStruts $ layoutHook defaultConfig,
logHook = dynamicLogWithPP $ xmobarPP
{
ppOutput = hPutStrLn xmobar,
ppTitle = xmobarColor "white" "" . shorten 50,
ppCurrent = xmobarColor "orange" "" . wrap "[" "]",
ppHiddenNoWindows = xmobarColor "white" "" . wrap "(" ")",
ppHidden = xmobarColor "white" "" . wrap "(" ")",
ppUrgent = xmobarColor "red" ""
},
modMask = mod4Mask,
terminal = myTerminal,
workspaces = ["emacs", "internet", "irc", "msn"]
} `additionalKeys`
[ ((mod4Mask .|. shiftMask, xK_l), spawn
"xlock -username \"Username: \" -validate \"Checking credentials...\" -invalid \"Access denied.\" +showdate +description -mode matrix -info \"\""),
((0, xK_Print), printScreen),
((mod4Mask, xK_f), (runOrRaise "conkeror" (className =? "Conkeror"))),
((mod4Mask, xK_e), (runOrRaise "emacs" (className =? "Emacs"))),
((mod4Mask, xK_c), spawn myTerminal)
]
Code: Select all
Config { font = "-misc-fixed-*-*-*-*-10-*-*-*-*-*-*-*"
, bgColor = "black"
, fgColor = "grey"
, position = TopW L 90
, lowerOnStart = True
, commands = [ Run Weather "EHGG" ["-t","<station>: <tempC>°C","-L","18","-H","25","--normal","green","--high","red","--low","lightblue"] 36000
, Run Com "uname" ["-s","-r","-m"] "" 36000
, Run Date "%a %b %_d %Y %H:%M:%S" "date" 10
, Run StdinReader
]
, sepChar = "%"
, alignSep = "}{"
, template = "%StdinReader% }{ <fc=#ee9a00>%date%</fc> | %EHGG% | %uname%"
}
Notice how I added print screen functionality just like this:
Code: Select all
fPrintScreen :: String -> X ()
fPrintScreen file = spawn $ "scrot " ++ file
printScreen :: X ()
printScreen = inputPrompt defaultXPConfig "Print screen to file" ?+ fPrintScreen
...
((0, xK_Print), printScreen),
...