backup before hacking

This commit is contained in:
Hunter Haugen 2009-11-02 11:38:09 +05:30
parent ef19188ba0
commit 3b45fcbba2

View file

@ -6,17 +6,19 @@
-- --
-- Normally, you'd only override those defaults you care about. -- Normally, you'd only override those defaults you care about.
-- --
{-# LANGUAGE NoMonomorphismRestriction #-}
import XMonad import XMonad
import System.Exit import System.Exit
import XMonad.Layout.NoBorders ( noBorders, smartBorders ) import XMonad.Layout.NoBorders (noBorders, smartBorders)
import XMonad.Layout.ResizableTile import XMonad.Layout.ResizableTile
import XMonad.Layout.SimplestFloat import XMonad.Layout.SimplestFloat
import XMonad.Actions.GridSelect import XMonad.Actions.GridSelect
import XMonad.Actions.WindowBringer
import XMonad.Actions.NoBorders import XMonad.Actions.NoBorders
import XMonad.Actions.Warp(warpToScreen)
import XMonad.Actions.WindowBringer
import Data.Monoid import Data.Monoid
import qualified XMonad.StackSet as W import qualified XMonad.StackSet as W
@ -39,22 +41,7 @@ myBorderWidth = 1
-- --
myModMask = mod4Mask myModMask = mod4Mask
-- The mask for the numlock key. Numlock status is "masked" from the -- | The default number of workspaces (virtual screens) and their names.
-- current modifier status, so the keybindings will work with numlock on or
-- off. You may need to change this on some systems.
--
-- You can find the numlock modifier by running "xmodmap" and looking for a
-- modifier with Num_Lock bound to it:
--
-- > $ xmodmap | grep Num
-- > mod2 Num_Lock (0x4d)
--
-- Set numlockMask = 0 if you don't have a numlock key, or want to treat
-- numlock status separately.
--
myNumlockMask = mod2Mask
-- The default number of workspaces (virtual screens) and their names.
-- By default we use numeric strings, but any string may be used as a -- By default we use numeric strings, but any string may be used as a
-- workspace name. The number of workspaces is determined by the length -- workspace name. The number of workspaces is determined by the length
-- of this list. -- of this list.
@ -63,122 +50,108 @@ myNumlockMask = mod2Mask
-- --
-- > workspaces = ["web", "irc", "code" ] ++ map show [4..9] -- > workspaces = ["web", "irc", "code" ] ++ map show [4..9]
-- --
myWorkspaces = ["1","2","3","4","5","6","7","8","9"] myWorkspaces :: [WorkspaceId]
myWorkspaces = map show [1 .. 9 :: Int]
-- Border colors for unfocused and focused windows, respectively. -- Border colors for unfocused and focused windows, respectively.
-- --
myNormalBorderColor = "#999999" myNormalBorderColor = "#999999"
myFocusedBorderColor = "#dd0000" myFocusedBorderColor = "#dd0000"
------------------------------------------------------------------------ -- Custom keys
-- Key bindings. Add, modify or remove key bindings here.
--
myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $ myKeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
myKeys =
-- launch a terminal -- Window management
[ ((modMask .|. shiftMask, xK_Return), spawn $ XMonad.terminal conf) [ ((modMask .|. shiftMask, xK_n ), sendMessage MirrorShrink) -- %! Expand current window
, ((modMask .|. shiftMask, xK_t ), sendMessage MirrorExpand) -- %! Shrink current window
-- launch dmenu
, ((modMask, xK_p ), spawn "exe=`dmenu_path | dmenu` && eval \"exec $exe\"")
-- launch gmrun
, ((modMask .|. shiftMask, xK_p ), spawn "gmrun")
-- close focused window
, ((modMask .|. shiftMask, xK_c ), kill)
-- Rotate through the available layout algorithms
, ((modMask, xK_space ), sendMessage NextLayout)
-- Reset the layouts on the current workspace to default
, ((modMask .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
-- Resize viewed windows to the correct size
, ((modMask, xK_n ), refresh)
-- Move focus to the next window
, ((modMask, xK_Tab ), windows W.focusDown)
-- Move focus to the next window
, ((modMask, xK_j ), windows W.focusDown)
-- Move focus to the next window
, ((modMask .|. shiftMask, xK_n ), sendMessage MirrorShrink)
-- Move focus to the previous window
, ((modMask, xK_k ), windows W.focusUp )
-- Move focus to the next window
, ((modMask .|. shiftMask, xK_t ), sendMessage MirrorExpand)
-- Move focus to the master window
, ((modMask, xK_m ), windows W.focusMaster )
-- Swap the focused window and the master window
, ((modMask, xK_Return), windows W.swapMaster)
-- Swap the focused window with the next window
, ((modMask .|. shiftMask, xK_j ), windows W.swapDown )
-- Swap the focused window with the previous window
, ((modMask .|. shiftMask, xK_k ), windows W.swapUp )
-- Shrink the master area
, ((modMask, xK_h ), sendMessage Shrink)
-- Expand the master area
, ((modMask, xK_l ), sendMessage Expand)
-- Push window back into tiling
, ((modMask, xK_t ), withFocused $ windows . W.sink)
-- Increment the number of windows in the master area
, ((modMask , xK_comma ), sendMessage (IncMasterN 1))
-- Deincrement the number of windows in the master area
, ((modMask , xK_period), sendMessage (IncMasterN (-1)))
-- Bring dzen to the front -- Bring dzen to the front
, ((modMask .|. shiftMask, xK_b ), spawn "ps -U hunner|grep dzen2|awk '{print $1}'|xargs kill -USR1") , ("M-S-b", spawn "ps -U hunner|grep dzen2|awk '{print $1}'|xargs kill -USR1")
-- Toggle the border of the currently focused window -- Toggle the border of the currently focused window
, ((modMask , xK_b ), withFocused toggleBorder) , ((modMask , xK_b ), withFocused toggleBorder)
-- toggle the status bar gap
-- TODO, update this binding with avoidStruts , ((modMask , xK_b ),
-- Gridselect to pick windows -- Gridselect to pick windows
--, ((modMask , xK_f ), (gridselect defaultGSConfig) >>= (\w -> case w of --, ((modMask , xK_g ), goToSelected defaultGSConfig)
-- Just w -> windows (bringWindow w) >> focus w >> windows W.shiftMaster --, ((modMask , xK_g ), goToSelected gsconfig3)
-- Nothing -> return ())) , ((modMask , xK_a ), warpToCentre >> wsgrid)
, ((modMask , xK_g ), goToSelected defaultGSConfig)
-- Quit xmonad -- Goes to window or bring up window
, ((modMask .|. shiftMask, xK_q ), io (exitWith ExitSuccess)) , ((modMask .|. shiftMask, xK_g ), gotoMenu)
, ((modMask .|. shiftMask, xK_b ), bringMenu)
-- Restart xmonad
, ((modMask , xK_q ), restart "xmonad" True)
] ]
++ ++
-- mod-[1..9] %! Switch to workspace N
-- -- mod-shift-[1..9] %! Move client to workspace N
-- mod-[1..9], Switch to workspace N
-- mod-shift-[1..9], Move client to workspace N
--
[((m .|. modMask, k), windows $ f i) [((m .|. modMask, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9] | (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9]
, (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]] , (f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]]
++ ++
-- mod-{w,e,r} %! Switch to physical/Xinerama screens 1, 2, or 3
-- -- mod-shift-{w,e,r} %! Move client to screen 1, 2, or 3
-- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
-- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
--
[((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f)) [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust (windows . f))
| (key, sc) <- zip [xK_o, xK_e, xK_u] [0..] | (key, sc) <- zip [xK_w, xK_e, xK_r] [0..]
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]] , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
{-
[10:28] dschoepe : gets (map W.tag . W.workspaces . windowset) should work
[10:28] aavogt : dschoepe: yeah
[10:31] aavogt : somewhat useful variation on that is:
[10:32] aavogt : gets $ map W.tag . uncurry (++) . partition (isJust . W.stack) . W.workspaces . windowset
[10:32] aavogt : to put the populated ones towards the inside
[10:33] aavogt : unfortunately, it is a bit more awkward to supply those ones with a different color
[10:34] aavogt : needs imports of Data.List and Data.Maybe
-}
warpToCentre = gets (W.screen . map W.tag . W.workspaces . windowset) >>= \x -> warpToScreen x 0.5 0.5
wsgrid = gridselect gsConfig =<< asks (map (\x -> (x,x)) . workspaces . config)
--promptedGoto = wsgrid >>= flip whenJust (switchTopic myTopicConfig)
--promptedShift = wsgrid >>= \x -> whenJust x $ \y -> windows (W.greedyView y . W.shift y)
{-
-- | Like `gridSelect' but with the current windows and their titles as elements
gridselectWorkspace :: GSConfig W.Workspace -> X (Maybe W.Workspace)
gridselectWorkspace gsconf = workspaceMap >>= gridselect gsconf
workspaceMap :: X [(String,W.Workspace)]
workspaceMap = do
ws <- gets workspaceset
wins <- mapM keyValuePair (W.workspaces ws)
return wins
where keyValuePair w = flip (,) w `fmap` decorateName' w
decorateName' :: W.workspace -> X String
decorateName' w = do
fmap show $ getName w
-}
{-
gsConfig = defaultGSConfig { gs_navigate = neiu `M.union` gs_navigate (defaultGSConfig`asTypeOf`gsConfig) }
where neiu = M.insert (0,xK_space) (const (0,0)) $ M.map (\(x,y) (a,b) -> (x+a,y+b)) $ M.fromList
[((0,xK_n),(-1,0))
,((0,xK_e),(0,1))
,((0,xK_i),(1,0))
,((0,xK_u),(0,-1))]
-}
gsConfig = defaultGSConfig
{ gs_navigate = M.unions
[reset
,nethackKeys
,gs_navigate -- get the default navigation bindings
$ defaultGSConfig `asTypeOf` gsConfig -- needed to fix an ambiguous type variable
]
}
where addPair (a,b) (x,y) = (a+x,b+y)
nethackKeys = M.map addPair $ M.fromList
[((0,xK_y),(-1,-1))
,((0,xK_u),(1,-1))
,((0,xK_b),(-1,1))
,((0,xK_n),(1,1))
]
-- jump back to the center with the spacebar, regardless of the current position.
reset = M.singleton (0,xK_space) (const (0,0))
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- Mouse bindings: default actions bound to mouse events -- Mouse bindings: default actions bound to mouse events
-- --
@ -242,6 +215,8 @@ myManageHook = composeAll
[ className =? "MPlayer" --> doFloat [ className =? "MPlayer" --> doFloat
, title =? "VLC media player" --> doFloat , title =? "VLC media player" --> doFloat
, className =? "Gimp" --> doFloat , className =? "Gimp" --> doFloat
, className =? "Anki" --> doFloat
, className =? "Skype" --> doFloat
, className =? "googleearth" --> doFloat , className =? "googleearth" --> doFloat
, className =? "Pidgin" --> doFloat , className =? "Pidgin" --> doFloat
, className =? "mangclient" --> doFloat , className =? "mangclient" --> doFloat
@ -275,61 +250,25 @@ pickyFocusEventHook e@(CrossingEvent {ev_window = w, ev_event_type = t})
where shouldFollow = (/="Cellwriter") `fmap` className where shouldFollow = (/="Cellwriter") `fmap` className
pickyFocusEventHook _ = return $ All True pickyFocusEventHook _ = return $ All True
------------------------------------------------------------------------ -- Run xmonad!
-- Status bars and logging
-- Perform an arbitrary action on each internal state change or X event.
-- See the 'DynamicLog' extension for examples.
--
-- To emulate dwm's status bar
--
-- > logHook = dynamicLogDzen
--
myLogHook = return ()
------------------------------------------------------------------------
-- Startup hook
-- Perform an arbitrary action each time xmonad starts or is restarted
-- with mod-q. Used by, e.g., XMonad.Layout.PerWorkspace to initialize
-- per-workspace layout choices.
--
-- By default, do nothing.
myStartupHook = return ()
------------------------------------------------------------------------
-- Now run xmonad with all the defaults we set up.
-- Run xmonad with the settings you specify. No need to modify this.
-- --
main = xmonad defaults main = xmonad defaults
-- A structure containing your configuration settings, overriding defaults = defaultConfig
-- fields in the default config. Any you don't override, will { -- simple stuff
-- use the defaults defined in xmonad/XMonad/Config.hs , terminal = myTerminal
-- , focusFollowsMouse = myFocusFollowsMouse
-- No need to modify this. , borderWidth = myBorderWidth
-- , modMask = myModMask
--xmonad defaultConfig { handleEventHook = pickyFocusEventHook } , workspaces = myWorkspaces
defaults = defaultConfig { , normalBorderColor = myNormalBorderColor
-- simple stuff , focusedBorderColor = myFocusedBorderColor
terminal = myTerminal,
focusFollowsMouse = myFocusFollowsMouse,
borderWidth = myBorderWidth,
modMask = myModMask,
numlockMask = myNumlockMask,
workspaces = myWorkspaces,
normalBorderColor = myNormalBorderColor,
focusedBorderColor = myFocusedBorderColor,
-- key bindings , -- key bindings
keys = myKeys, , mouseBindings = myMouseBindings
mouseBindings = myMouseBindings,
-- hooks, layouts , -- hooks, layouts
layoutHook = myLayout, , layoutHook = myLayout
manageHook = myManageHook, , manageHook = myManageHook
logHook = myLogHook, , handleEventHook = pickyFocusEventHook
startupHook = myStartupHook, } `additionalKeysP` myKeys
handleEventHook = pickyFocusEventHook
}