Open terminal on X startup
452640c907694e4a7f80cf462df1c82db660ce2c
1 parent
015eab84
.xmonad/xmonad.hs
+16 -1
| 2 | 2 | import XMonad.Config.Desktop |
|
| 3 | 3 | import XMonad.Hooks.DynamicLog |
|
| 4 | 4 | import XMonad.Hooks.ManageDocks |
|
| 5 | 5 | import XMonad.Util.Run |
|
| 6 | 6 | import XMonad.Layout.Spacing |
|
| 7 | + | import XMonad.StackSet |
|
| 8 | + | import XMonad.ManageHook |
|
| 7 | 9 | ||
| 8 | 10 | import System.Directory |
|
| 9 | 11 | import System.IO |
|
| 10 | 12 | import Text.Printf |
|
| 11 | 13 | import Data.Map (Map) |
|
| 12 | 14 | import qualified Data.Map as Map |
|
| 15 | + | import Control.Monad |
|
| 16 | + | ||
| 17 | + | termName :: FilePath |
|
| 18 | + | termName = "st" |
|
| 13 | 19 | ||
| 14 | 20 | main :: IO () |
|
| 15 | 21 | main = do |
|
| 16 | 22 | home <- getHomeDirectory |
|
| 17 | 23 | xmproc <- spawnPipe "xmobar" |
|
| 18 | 24 | xmonad $ desktopConfig |
|
| 19 | - | { terminal = "st" |
|
| 25 | + | { terminal = termName |
|
| 20 | 26 | , focusedBorderColor = "#555" |
|
| 21 | 27 | , normalBorderColor = "#1F1F1F" |
|
| 22 | 28 | , borderWidth = 2 |
|
| 23 | 29 | , handleEventHook = mconcat [docksEventHook, handleEventHook def] |
|
| 24 | 30 | , keys = myKeys home |
|
| 25 | 31 | , logHook = dynamicLogWithPP (barConfig xmproc) |
|
| 26 | 32 | , layoutHook = smartSpacing 8 $ avoidStruts $ layoutHook def |
|
| 27 | 33 | , manageHook = manageDocks <+> manageHook def |
|
| 34 | + | , startupHook = startup |
|
| 28 | 35 | } |
|
| 29 | 36 | ||
| 37 | + | startup :: X () |
|
| 38 | + | startup = do |
|
| 39 | + | -- Open a terminal if none are open. |
|
| 40 | + | withWindowSet $ \wins -> do |
|
| 41 | + | result <- filterM (runQuery (title =? termName)) (allWindows wins) |
|
| 42 | + | when (null result) $ |
|
| 43 | + | safeSpawnProg termName |
|
| 44 | + | ||
| 30 | 45 | barConfig :: Handle -> PP |
|
| 31 | 46 | barConfig h = xmobarPP |
|
| 32 | 47 | { ppCurrent = xmobarColor white black . wrap " " " " |
|
| 33 | 48 | , ppHiddenNoWindows = xmobarColor black dark . wrap " " " " |
|
| 34 | 49 | , ppHidden = xmobarColor light dark . wrap " " " " |