Browse Source

Merge branch 'xmonad-rejoice'

Lucas Stadler 12 years ago
parent
commit
4c344c5a66
6 changed files with 66 additions and 52 deletions
  1. 24 0
      .config/taffybar/taffybar.hs
  2. 2 1
      .tmux.conf
  3. 6 0
      .vimrc
  4. 3 2
      .xinitrc
  5. 30 49
      .xmonad/xmonad.hs
  6. 1 0
      .zshrc

+ 24 - 0
.config/taffybar/taffybar.hs

@ -0,0 +1,24 @@
1
import System.Taffybar
2
import System.Taffybar.Systray
3
import System.Taffybar.XMonadLog
4
import System.Taffybar.SimpleClock
5
import System.Taffybar.Widgets.PollingGraph
6
import System.Information.CPU
7
8
cpuCallback = do
9
    (_, systemLoad, totalLoad) <- cpuLoad
10
    return [ totalLoad, systemLoad ]
11
12
main = do
13
    let cpuCfg = defaultGraphConfig {
14
            graphDataColors = [(0, 1, 0, 1), (1, 0, 1, 0.5)]
15
        }
16
        clock = textClockNew Nothing "<span fgcolor='orange'>%a %b %_d %H:%M</span>" 1
17
        log = xmonadLogNew
18
        tray = systrayNew
19
        cpu = pollingGraphNew cpuCfg 3 cpuCallback
20
    defaultTaffybar defaultTaffybarConfig {
21
        barHeight = 15,
22
        startWidgets = [log],
23
        endWidgets = [tray, clock, cpu]
24
    }

+ 2 - 1
.tmux.conf

@ -9,7 +9,7 @@
9 9
set -g default-terminal "screen-256color"
10 10
set -g status-utf8 on
11 11
set-option -g set-titles on
12
set-option -g set-titles-string "tmux(#I): #W"
12
set-option -g set-titles-string "tmux(#I): #W #T"
13 13
14 14
set -g status-bg black
15 15
set -g status-fg white
@ -20,6 +20,7 @@ set -g status-right '#[fg=colour235]lu #[fg=yellow]#(ls ~/.mails/lu/INBOX/new |
20 20
setw -g window-status-format '#[fg=green]#I #[fg=white]#W#[default]  '
21 21
setw -g window-status-current-format '#[bg=white,fg=black]⮀ #W #[bg=black,fg=white]⮀'
22 22
23
set -g status off
23 24
bind-key f set -g status
24 25
25 26
bind-key -n F1 select-window -t 0

+ 6 - 0
.vimrc

@ -63,6 +63,12 @@ set directory=~/.vim/tmp/
63 63
set undodir=~/.vim/tmp/
64 64
set undofile
65 65
66
let &t_ts = "\e]2;"
67
let &t_fs = "\007"
68
set title
69
set titleold=
70
au BufEnter * let &titlestring=substitute(expand('%:p'), '^' . $HOME, '~', '')
71
66 72
" Wrap lines in textfiles automatically.
67 73
" (Any way to enable in comments?)
68 74
set textwidth=72

+ 3 - 2
.xinitrc

@ -5,6 +5,7 @@ xsetroot -cursor_name left_ptr
5 5
xrdb -merge ~/.Xresources
6 6
#feh -bg-scale /usr/share/themes/Adwaita/backgrounds/stripes.jpg
7 7
8
eval `dbus-launch --auto-syntax`
8 9
start-pulseaudio-x11
9 10
pactl set-sink-volume 0 1.0
10 11
nm-applet&
@ -13,6 +14,6 @@ nm-applet&
13 14
#xmodmap ~/.swap-esc-capslock
14 15
synclient TouchpadOff=1
15 16
16
exec awesome
17
#exec xmonad
17
#exec awesome
18
exec xmonad
18 19
#exec gnome-session

+ 30 - 49
.xmonad/xmonad.hs

@ -1,16 +1,20 @@
1 1
import XMonad
2
import XMonad.Hooks.DynamicLog
2
import XMonad.Actions.SpawnOn (manageSpawn, spawnHere)
3
import DBus.Client (connectSession)
4
import System.Taffybar.XMonadLog (dbusLog)
3 5
import XMonad.Hooks.ManageDocks (manageDocks, avoidStruts)
4 6
import XMonad.Hooks.ManageHelpers
5
import XMonad.Layout.Tabbed (simpleTabbed)
7
import XMonad.Layout.NoBorders (smartBorders)
8
import XMonad.Layout.Fullscreen (fullscreenEventHook, fullscreenManageHook)
6 9
import XMonad.Util.Run (spawnPipe)
7 10
import XMonad.Util.EZConfig (additionalKeys)
11
import Graphics.X11.ExtraTypes.XF86
12
import qualified XMonad.StackSet as W
13
8 14
import System.IO (hPutStrLn)
9 15
import Data.IORef.MonadIO (newIORef, readIORef, modifyIORef)
10
11 16
import Control.Monad (when)
12 17
import Data.Monoid (All (All))
13
import qualified XMonad.StackSet as W
14 18
15 19
-- My XMonad config (right now it's mostly copied from elsewhere...
16 20
--
@ -18,60 +22,37 @@ import qualified XMonad.StackSet as W
18 22
--  * Some kind of launcher
19 23
--  * Logging framework (like reading urls from Firefox and the like)
20 24
25
(??) :: Query a -> (a -> Bool) -> Query Bool
26
(??) = flip fmap
27
21 28
main = do
22
    kbMap <- newIORef "us"
23
    xmobar <- spawnPipe "xmobar"
29
    dbusClient <- connectSession
24 30
    xmonad $ defaultConfig {
25 31
        modMask  = mod4Mask,
26
        terminal = "urxvt",
32
        terminal = "sakura -x tmux",
27 33
        -- Ignore docks (via some WM_* attribute?)
28 34
        manageHook = composeAll [
35
                        className ?? (\cn -> any (cn ==) ["Skype", "Pidgin", "Geary"]) --> doF (W.shift "3"),
36
                        className =? "Exe" --> doFullFloat,
37
                        manageSpawn,
29 38
                        manageDocks,
30
                        -- Allow fullscreen
31
                        composeOne [ isFullscreen -?> doFullFloat ]
39
                        fullscreenManageHook
32 40
                     ] <+> manageHook defaultConfig,
33 41
        -- Don't overwrite the section used by docks
34
        layoutHook = avoidStruts $ layoutHook defaultConfig ||| simpleTabbed,
35
        logHook = dynamicLogWithPP xmobarPP {
36
            ppOutput = hPutStrLn xmobar,
37
            ppTitle = xmobarColor "green" ""
38
        },
39
        handleEventHook = evHook
42
        layoutHook = avoidStruts $ smartBorders $ layoutHook defaultConfig,
43
        handleEventHook = fullscreenEventHook,
44
        logHook = dbusLog dbusClient
40 45
     } `additionalKeys` [
41
        ((mod4Mask, xK_l), changeKbMap kbMap)
42
     ]
43
  where changeKbMap kbMap = do
44
          kb <- readIORef kbMap
45
          let switchLang cur = if cur == "us" then "de" else "us"
46
          spawn $ "setxkbmap " ++ switchLang kb
47
          modifyIORef kbMap switchLang
46
        ((mod4Mask, xK_b), spawnHere "chromium --allow-file-access-from-files"),
47
        ((mod4Mask .|. shiftMask, xK_b), spawnHere "chromium --incognito --allow-file-access-from-files"),
48 48
49
evHook :: Event -> X All
50
evHook (ClientMessageEvent _ _ _ dpy win typ dat) = do
51
    state <- getAtom "_NET_WM_STATE"
52
    fullsc <- getAtom "_NET_WM_STATE_FULLSCREEN"
53
    isFull <- runQuery isFullscreen win
49
        ((0, xF86XK_AudioMute), spawn "amixer set Master toggle"),
50
        ((0, xF86XK_AudioLowerVolume), spawn "amixer set Master 5%-"),
51
        ((0, xF86XK_AudioRaiseVolume), spawn "amixer set Master 5%+"),
52
        ((mod4Mask .|. shiftMask, xK_m), spawnHere "quodlibet"),
54 53
55
    let remove = 0
56
        add = 1
57
        toggle = 2
54
        ((mod4Mask .|. shiftMask, xK_Tab), spawn "xkbswap"),
55
        ((mod4Mask .|. shiftMask, xK_l), spawn "slock"),
58 56
59
        ptype = 4
60
61
        action = head dat
62
63
    when (typ == state && (fromIntegral fullsc) `elem` tail dat) $ do
64
        when (action == add || (action == toggle && not isFull)) $ do
65
            io $ changeProperty32 dpy win state ptype propModeReplace [fromIntegral fullsc]
66
            fullFloat win
67
        when (head dat == remove || (action == toggle && isFull)) $ do
68
            io $ changeProperty32 dpy win state ptype propModeReplace []
69
            tileWin win
70
71
    return $ All False
72
73
evHook _ = return $ All True
74
75
fullFloat, tileWin :: Window -> X () 
76
fullFloat w = windows $ W.float w (W.RationalRect 0 0 1 1)
77
tileWin   w = windows $ W.sink w
57
        ((mod4Mask, xK_q), restart "xmonad" True)
58
     ]

+ 1 - 0
.zshrc

@ -29,6 +29,7 @@ function repo_branch {
29 29
30 30
autoload colors && colors
31 31
function precmd {
32
	echo -ne "\033]0;\007"
32 33
	user="%{$fg[red]%}%n%{$reset_color%}"
33 34
	dir="%{$fg[cyan]%}%~%{$reset_color%}"
34 35
	lastcmd="$history[$(($HISTCMD-1))]"