Bladeren bron

Add my (simple) XMonad and xmobar configs.

Lucas Stadler 14 jaren geleden
bovenliggende
commit
37511eca03
2 gewijzigde bestanden met toevoegingen van 85 en 0 verwijderingen
  1. 19 0
      .xmobarrc
  2. 66 0
      .xmonad/xmonad.hs

+ 19 - 0
.xmobarrc

@ -0,0 +1,19 @@
1
Config {
2
    font = "-*-Fixed-Bold-R-Normal-*-13-*-*-*-*-*-*-*-*",
3
    bgColor = "black",
4
    fgColor = "grey",
5
    position = TopW L 100,
6
    commands = [ Run Weather "EDDP" ["-t", " <tempC>C", "-L", "64", "-H", "-77",
7
                                     "--normal", "green", "--high", "red", "--low",
8
                                     "lightblue"] 36000,
9
                 Run Cpu ["-L", "3", "-H", "50", "--normal", "green", "--high", "red"] 10,
10
                 Run Memory ["-t", "Mem: <usedratio>%"] 10,
11
                 Run Network "wlan0" ["-L","0","-H","100","--normal","green","--high","red"] 10,
12
                 Run Battery [ "-t", "Bat: <left>%", "-L", "10", "-H", "80", "-l", "red", "-h", "green" ] 600,
13
                 Run Date "%a %b %_d %l:%M" "date" 10,
14
                 Run StdinReader
15
               ],
16
    sepChar = "%",
17
    alignSep = "}{",
18
    template = "%StdinReader% }{ %cpu% | %memory% | %wlan0% | %battery% (<fc=#ee0a00>%date%</fc>) | %EDDP% "
19
}

+ 66 - 0
.xmonad/xmonad.hs

@ -0,0 +1,66 @@
1
import XMonad
2
import XMonad.Hooks.DynamicLog
3
import XMonad.Hooks.ManageDocks (manageDocks, avoidStruts)
4
import XMonad.Hooks.ManageHelpers
5
import XMonad.Layout.Tabbed (simpleTabbed)
6
import XMonad.Util.Run (spawnPipe)
7
import System.IO (hPutStrLn)
8
9
import Monad (when)
10
import Data.Monoid (All (All))
11
import qualified XMonad.StackSet as W
12
13
-- My XMonad config (right now it's mostly copied from elsewhere...
14
--
15
-- Whishes:
16
--  * Some kind of launcher
17
--  * Logging framework (like reading urls from Firefox and the like)
18
19
main = do
20
    xmobar <- spawnPipe "xmobar"
21
    xmonad $ defaultConfig {
22
        modMask = mod4Mask,
23
        -- Ignore docks (via some WM_* attribute?)
24
        manageHook = composeAll [
25
                        manageDocks,
26
                        -- Allow fullscreen
27
                        composeOne [ isFullscreen -?> doFullFloat ]
28
                     ] <+> manageHook defaultConfig,
29
        -- Don't overwrite the section used by docks
30
        layoutHook = avoidStruts $ layoutHook defaultConfig ||| simpleTabbed,
31
        logHook = dynamicLogWithPP xmobarPP {
32
            ppOutput = hPutStrLn xmobar,
33
            ppTitle = xmobarColor "green" ""
34
        },
35
        handleEventHook = evHook
36
   }
37
38
evHook :: Event -> X All
39
evHook (ClientMessageEvent _ _ _ dpy win typ dat) = do
40
    state <- getAtom "_NET_WM_STATE"
41
    fullsc <- getAtom "_NET_WM_STATE_FULLSCREEN"
42
    isFull <- runQuery isFullscreen win
43
44
    let remove = 0
45
        add = 1
46
        toggle = 2
47
48
        ptype = 4
49
50
        action = head dat
51
52
    when (typ == state && (fromIntegral fullsc) `elem` tail dat) $ do
53
        when (action == add || (action == toggle && not isFull)) $ do
54
            io $ changeProperty32 dpy win state ptype propModeReplace [fromIntegral fullsc]
55
            fullFloat win
56
        when (head dat == remove || (action == toggle && isFull)) $ do
57
            io $ changeProperty32 dpy win state ptype propModeReplace []
58
            tileWin win
59
60
    return $ All False
61
62
evHook _ = return $ All True
63
64
fullFloat, tileWin :: Window -> X () 
65
fullFloat w = windows $ W.float w (W.RationalRect 0 0 1 1)
66
tileWin   w = windows $ W.sink w