diff options
| -rw-r--r-- | .xmonad/xmonad.hs | 49 |
1 files changed, 34 insertions, 15 deletions
diff --git a/.xmonad/xmonad.hs b/.xmonad/xmonad.hs index 98352d3..241785a 100644 --- a/.xmonad/xmonad.hs +++ b/.xmonad/xmonad.hs | |||
| @@ -31,6 +31,7 @@ import System.FilePath ((</>)) | |||
| 31 | import Control.Concurrent | 31 | import Control.Concurrent |
| 32 | import System.Posix.Process (getProcessID) | 32 | import System.Posix.Process (getProcessID) |
| 33 | import System.IO.Error | 33 | import System.IO.Error |
| 34 | import System.IO | ||
| 34 | import XMonad.Hooks.ManageHelpers hiding (CW) | 35 | import XMonad.Hooks.ManageHelpers hiding (CW) |
| 35 | import XMonad.StackSet (RationalRect (..)) | 36 | import XMonad.StackSet (RationalRect (..)) |
| 36 | import Control.Monad (when) | 37 | import Control.Monad (when) |
| @@ -43,27 +44,52 @@ import XMonad.Layout.IM | |||
| 43 | import XMonad.Prompt.MyShell | 44 | import XMonad.Prompt.MyShell |
| 44 | import XMonad.Prompt.MySsh | 45 | import XMonad.Prompt.MySsh |
| 45 | 46 | ||
| 46 | wsp :: Int -> WorkspaceId | 47 | import Network.HostName |
| 47 | wsp i = case Map.lookup i workspaceNames of | 48 | |
| 48 | Just str -> (show i) ++ " " ++ str | 49 | data Host l1 l2 = Host |
| 49 | Nothing -> (show i) | 50 | { hName :: HostName |
| 50 | wsps = map wsp | 51 | , hManageHook :: ManageHook |
| 52 | , hWsp :: Integer -> WorkspaceId | ||
| 53 | , hLayoutMod :: l1 -> l2 | ||
| 54 | } | ||
| 55 | |||
| 56 | defaultHost = Host { hName = "unkown" | ||
| 57 | , hManageHook = composeOne [manageScratchTerm] | ||
| 58 | , hWsp = show | ||
| 59 | , hLayoutMod = id | ||
| 60 | } | ||
| 61 | |||
| 62 | --hostFromName :: (LayoutClass l1 a, LayoutClass l2 a) => HostName -> Host (l1 a) (l2 a) | ||
| 63 | hostFromName h@("vali") = defaultHost { hName = h | ||
| 64 | , hManageHook = hManageHook defaultHost | ||
| 65 | , hWsp = \i -> case Map.lookup i workspaceNames of | ||
| 66 | Just str -> show i ++ " " ++ str | ||
| 67 | Nothing -> show i | ||
| 68 | , hLayoutMod = id | ||
| 69 | } | ||
| 70 | where | ||
| 71 | workspaceNames = Map.fromList [ (1, "web") | ||
| 72 | ] | ||
| 73 | hostFromName _ = defaultHost | ||
| 74 | |||
| 75 | manageScratchTerm = resource =? "scratchpad" -?> doRectFloat $ RationalRect (1 % 16) (1 % 16) (7 % 8) (7 % 8) | ||
| 51 | 76 | ||
| 52 | main = do | 77 | main = do |
| 53 | xmobarProc <- spawnPipe "xmobar" | 78 | xmobarProc <- spawnPipe "xmobar" |
| 79 | host <- getHostName >>= return . hostFromName | ||
| 54 | let myConfig = defaultConfig { | 80 | let myConfig = defaultConfig { |
| 55 | manageHook = manageDocks <+> manageHook' | 81 | manageHook = manageDocks <+> hManageHook host |
| 56 | , terminal = "urxvtc" | 82 | , terminal = "urxvtc" |
| 57 | , layoutHook = smartBorders $ avoidStruts layout' | 83 | , layoutHook = smartBorders $ avoidStruts layout' |
| 58 | , logHook = dynamicLogWithPP xmobarPP' | 84 | , logHook = dynamicLogWithPP xmobarPP' |
| 59 | , modMask = mod4Mask | 85 | , modMask = mod4Mask |
| 60 | , keys = myKeys' | 86 | , keys = myKeys' |
| 61 | , workspaces = take (length numKeys) workspaces' | 87 | , workspaces = take (length numKeys) $ map (hWsp host) [1..] |
| 62 | , startupHook = assimilateKeychain >> (sequence autostart) >> (setDefaultCursor xC_left_ptr) >> banishScreen LowerRight >> return () | 88 | , startupHook = assimilateKeychain >> (sequence autostart) >> (setDefaultCursor xC_left_ptr) >> banishScreen LowerRight >> return () |
| 63 | , normalBorderColor = "#202020" | 89 | , normalBorderColor = "#202020" |
| 64 | , focusedBorderColor = "white" | 90 | , focusedBorderColor = "white" |
| 65 | } | 91 | } |
| 66 | layout' = defaultLayouts | 92 | layout' = hLayoutMod host $ defaultLayouts |
| 67 | defaultLayouts = spiralWithDir East CW (1 % 2) ||| tabbedLayout tabbedBottom ||| noBorders Full ||| simplestFloat | 93 | defaultLayouts = spiralWithDir East CW (1 % 2) ||| tabbedLayout tabbedBottom ||| noBorders Full ||| simplestFloat |
| 68 | tabbedLayout t = renamed [Replace "Tabbed"] $ reflectHoriz $ t CustomShrink $ tabbedTheme | 94 | tabbedLayout t = renamed [Replace "Tabbed"] $ reflectHoriz $ t CustomShrink $ tabbedTheme |
| 69 | tabbedTheme = defaultTheme { activeColor = "black" | 95 | tabbedTheme = defaultTheme { activeColor = "black" |
| @@ -118,13 +144,6 @@ assimilateKeychain' = tryIOError $ do | |||
| 118 | 144 | ||
| 119 | numKeys = [xK_parenleft, xK_parenright, xK_braceright, xK_plus, xK_braceleft, xK_bracketright, xK_bracketleft, xK_exclam, xK_equal, xK_asterisk] | 145 | numKeys = [xK_parenleft, xK_parenright, xK_braceright, xK_plus, xK_braceleft, xK_bracketright, xK_bracketleft, xK_exclam, xK_equal, xK_asterisk] |
| 120 | 146 | ||
| 121 | workspaces' = wsps [1..] | ||
| 122 | workspaceNames = Map.fromList | ||
| 123 | [] | ||
| 124 | |||
| 125 | manageHook' = composeOne | ||
| 126 | [] | ||
| 127 | |||
| 128 | instance Shrinker CustomShrink where | 147 | instance Shrinker CustomShrink where |
| 129 | shrinkIt _ "" = [""] | 148 | shrinkIt _ "" = [""] |
| 130 | shrinkIt s cs = cs : shrinkIt s ((reverse . drop 4 . reverse $ cs) ++ "...") | 149 | shrinkIt s cs = cs : shrinkIt s ((reverse . drop 4 . reverse $ cs) ++ "...") |
