├── .xmonad
├── widgets
│ ├── time
│ ├── alsa-volume
│ ├── battery
│ └── connection
├── xmobar.hs
└── xmonad.hs
├── README.md
├── .zprofile
├── .xmodmap
├── .xinitrc
└── .Xresources
/.xmonad/widgets/time:
--------------------------------------------------------------------------------
1 | date '+%d %h %H:%M'
2 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## dotfiles
2 |
3 | This is the default config files provided by Happy Hacking Linux.
4 |
--------------------------------------------------------------------------------
/.zprofile:
--------------------------------------------------------------------------------
1 | if [ -z "$DISPLAY" ] && [ -n "$XDG_VTNR" ] && [ "$XDG_VTNR" -eq 1 ]; then
2 | exec startx
3 | fi
4 |
--------------------------------------------------------------------------------
/.xmodmap:
--------------------------------------------------------------------------------
1 | remove Lock = Caps_Lock
2 | remove Control = Control_R
3 | keysym Caps_Lock = Control_R
4 | add Lock = Caps_Lock
5 | add Control = Control_R
6 | keycode 96 = Insert
7 |
--------------------------------------------------------------------------------
/.xinitrc:
--------------------------------------------------------------------------------
1 | xrdb -merge .Xresources
2 | unclutter -idle 1 &
3 | setterm -blank 0
4 | xset s off
5 | xmodmap .xmodmap
6 | xset -r 135
7 | xrandr --output VGA-1 --auto
8 | feh --bg-fill ~/wallpaper.jpg &
9 | exec xmonad
10 |
--------------------------------------------------------------------------------
/.xmonad/widgets/alsa-volume:
--------------------------------------------------------------------------------
1 | vol=$(amixer sget Master | awk -F"[][%]" '/dB/ { print $2 }')
2 | off=$(amixer sget Master | grep "off")
3 | bar=""
4 |
5 | color_high="#cc0000"
6 | color_normal="#880000"
7 | color_low="#330000"
8 |
9 | color=$color_high
10 |
11 | if [ $vol -lt 60 ]; then
12 | color=$color_normal
13 | fi
14 |
15 | if [ $vol -lt 20 ]; then
16 | color=$color_low
17 | fi
18 |
19 | let stripe=$vol/20
20 | while [ $stripe -gt 0 ]; do
21 | bar="$bar|"
22 | let stripe=stripe-1
23 | done
24 |
25 | if [[ -z "${bar// }" ]]; then
26 | if [ $vol -gt 0 ]; then
27 | bar="|"
28 | else
29 | bar="-"
30 | fi
31 | fi
32 |
33 | if [[ -n "${off// }" ]]; then
34 | bar="-"
35 | fi
36 |
37 | echo "$bar"
38 |
39 |
--------------------------------------------------------------------------------
/.xmonad/widgets/battery:
--------------------------------------------------------------------------------
1 | # Flashing battery status script coded to be used with Xmobar
2 | #
3 | # Usage Example:
4 | # > get_battery_status
5 | # BAT: 100%
6 | #
7 | # Azer Koculu
8 | #
9 | # Thu Nov 4 11:05:58 EET 2010
10 |
11 | flash=$(date +%s)
12 | bat=$(acpi | grep 'Battery' | sed 's/Battery\s[0-9]*: \w*, //' | sed 's/\%.*//')
13 | state=$(acpi | grep 'Battery' | sed 's/Battery\s[0-9]*: //' | sed 's/, [0-9][0-9]*\%.*//' | sed 's/Charging/^/' | sed 's/Discharging/v/' | sed 's/Full//' | sed 's/Unknown//' )
14 | label="Battery:"
15 |
16 | color_high="#666"
17 | color_normal="#996600"
18 | color_low="#aa3300"
19 |
20 | color=$color_high
21 |
22 | if [ $bat -lt 70 ]; then
23 | color=$color_normal
24 | fi
25 |
26 | if [ $bat -lt 20 ]; then
27 | color=$color_low
28 | fi
29 |
30 | if [ $((flash % 2)) -eq 0 ]; then
31 | if [ $bat -lt 20 ]; then
32 | color="#222"
33 | fi
34 | fi
35 |
36 | echo "$label $state$bat%"
37 |
--------------------------------------------------------------------------------
/.xmonad/xmobar.hs:
--------------------------------------------------------------------------------
1 | Config { font = "xft:Monaco:style=regular:pixelsize=13:antialias=true,hinting=true"
2 | , bgColor = "#222"
3 | , fgColor = "#666"
4 | , position = Top
5 | , lowerOnStart = True
6 | , commands = [
7 | Run Com ".xmonad/widgets/battery" ["-s","-r"] "battery" 10
8 | , Run Com ".xmonad/widgets/alsa-volume" ["-s","-r"] "volume" 10
9 | , Run Com ".xmonad/widgets/time" ["-s","-r"] "time" 10
10 | , Run Cpu ["-t", "CPU: %", "-L","3","-H","50","--normal","#657b83","--high","#657b83"] 10
11 | , Run Memory ["-t", "Memory: %","-L","3","-H","50","--normal","#657b83","--high","#657b83"] 10
12 | , Run Com ".xmonad/widgets/connection" ["-s","-r"] "connection" 10
13 | , Run DynNetwork [ "--template" , ": kB/s|kB/s"
14 | , "--Low" , "1000" -- units: kB/s
15 | , "--High" , "5000" -- units: kB/s
16 | , "--low" , "darkgreen"
17 | , "--normal" , "darkorange"
18 | , "--high" , "darkred"
19 | ] 10
20 | , Run StdinReader
21 | ]
22 | , sepChar = "%"
23 | , alignSep = "}{"
24 | , template = " %StdinReader% }{ %cpu% | %memory% %connection% | %battery% | %volume% | %time% "
25 | }
26 |
--------------------------------------------------------------------------------
/.xmonad/widgets/connection:
--------------------------------------------------------------------------------
1 | RECEIVING_FILE="/tmp/xmobar-conn-receiving-bytes"
2 | SENDING_FILE="/tmp/xmobar-conn-sending-bytes"
3 |
4 | receiving () {
5 | current=`cat /sys/class/net/$1/statistics/rx_bytes`
6 | if [ ! -f $RECEIVING_FILE ]; then
7 | echo $current > $RECEIVING_FILE
8 | return 1
9 | fi
10 |
11 | last=`cat $RECEIVING_FILE`
12 |
13 | echo $current > $RECEIVING_FILE
14 |
15 | diff=`expr $current - $last`
16 | kb=`expr $diff / 1024`
17 | mb=$(echo $diff | awk '{printf "%.2f", $diff/1024/1024}')
18 |
19 | label=""
20 | color=""
21 |
22 | if [ $kb -gt "999" ]; then
23 | color="#ff3300"
24 | label="$mb"
25 | elif [ $kb -gt "500" ]; then
26 | color="#ffaa00"
27 | label="$mb"
28 | elif [ $kb -gt "100" ]; then
29 | color="#ffcc00"
30 | label="$mb"
31 | elif [ $kb -gt "100" ]; then
32 | color="#ffee00"
33 | label="$mb"
34 | elif [ $kb -gt "10" ]; then
35 | color="#657b83"
36 | label="$mb"
37 | fi
38 |
39 | if [ ! $label == "" ]; then
40 | echo " In: $label mB/s"
41 | fi
42 | }
43 |
44 | sending () {
45 | current=`cat /sys/class/net/$1/statistics/tx_bytes`
46 | if [ ! -f $SENDING_FILE ]; then
47 | echo $current > $SENDING_FILE
48 | return 1
49 | fi
50 |
51 | last=`cat $SENDING_FILE`
52 |
53 | echo $current > $SENDING_FILE
54 |
55 | diff=`expr $current - $last`
56 | kb=`expr $diff / 1024`
57 | mb=$(echo $diff | awk '{printf "%.2f", $diff/1024/1024}')
58 |
59 | label=""
60 | color=""
61 |
62 | if [ $kb -gt "999" ]; then
63 | color="#993300"
64 | label="$mb"
65 | elif [ $kb -gt "500" ]; then
66 | color="#996600"
67 | label="$mb"
68 | elif [ $kb -gt "100" ]; then
69 | color="#998800"
70 | label="$mb"
71 | elif [ $kb -gt "100" ]; then
72 | color="#999900"
73 | label="$mb"
74 | elif [ $kb -gt "10" ]; then
75 | color="#657b83"
76 | label="$mb"
77 | fi
78 |
79 | if [ ! $label == "" ]; then
80 | echo " Out: $label mB/s"
81 | fi
82 | }
83 |
84 | gateway=`ip r | grep default | cut -d ' ' -f 3`
85 | test=$(ping -q -w 1 -c 1 $gateway> /dev/null && echo 1 || echo 0)
86 | interface=$(route | grep '^default' | grep -o '[^ ]*$')
87 | receiving=$(receiving $interface)
88 | sending=$(sending $interface)
89 | network="$receiving$sending"
90 |
91 | if [ ! -z "$network" -a "$network" != " " ]; then
92 | echo "|$network"
93 | exit 0
94 | elif [ $test -eq 1 ]; then
95 | label="Online"
96 | color="#008899"
97 | else
98 | label="Offline"
99 | color="#aa3300"
100 | fi
101 |
102 | echo "| $label"
103 |
--------------------------------------------------------------------------------
/.Xresources:
--------------------------------------------------------------------------------
1 | Xft.dpi: 96
2 | Xft.antialias: true
3 | Xft.rgba: rgb
4 | Xft.hinting: true
5 | Xft.hintstyle: hintslight
6 |
7 | URxvt.perl-ext-common: default,clipboard,url-select,keyboard-select
8 | URxvt.url-select.launcher: firefox
9 | URxvt.url-select.underline: true
10 | URxvt.keysym.M-u: perl:url-select:select_next
11 | URxvt.keysym.M-Escape: perl:keyboard-select:activate
12 | URxvt.keysym.M-s: perl:keyboard-select:search
13 | URxvt.keysym.M-w: perl:clipboard:copy
14 | URxvt.keysym.M-p: perl:clipboard:paste
15 | URxvt.keysym.M-C-p: perl:clipboard:paste_escaped
16 |
17 | URxvt.scrollBar: false
18 | URxvt.saveLines: 4096
19 | URxvt.internalBorder: 3
20 | URxvt.externalBorder: 0
21 | URxvt.highlightSelection: true
22 | URxvt.letterSpace: 0
23 | URxvt.lineSpace: 4
24 | URxvt.loginShell: true
25 | URxvt*termName: rxvt-unicode-256color
26 |
27 | URxvt.saveLines: 10000
28 | URxvt.xftAntialias: true
29 | URxvt.font: xft:Monaco:style=regular:pixelsize=13:antialias=true,hinting=true, xft:dejavu sans mono:pixelsize=13:antialias=true,hinting=true, xft:Noto Emoji:pixelsize=13, xft:Symbola
30 | URxvt.boldFont: xft:Monaco:style=regular:pixelsize=13:antialias=true,hinting=true, xft:dejavu sans mono:pixelsize=13:antialias=true,hinting=true
31 | URxvt.italicFont: xft:Monaco:pixelsize=13:antialias=true:hinting=true, xft:dejavu sans mono:pixelsize=13:antialias=true,hinting=true
32 | URxvt.boldItalicFont: xft:Monaco:pixelsize=13:antialias=true:hinting=true, xft:dejavu sans mono:pixelsize=13:antialias=true,hinting=true
33 |
34 | URxvt.urlLauncher: w3
35 | URxvt.matcher.button: 1
36 |
37 | !URxvt.perl-ext: default,url-select
38 | !URxvt.keysym.M-u: perl:url-select:select_next
39 | !URxvt.underlineURLs: true
40 |
41 | !URxvt.depth: 32
42 | !URxvt.background: [95]#000000
43 |
44 | URxvt.depth: 32
45 | URxvt.background: [75]#000000
46 |
47 | !URxvt.transparent:true
48 | !URxvt.shading: 14
49 |
50 | Urxvt.secondaryScroll: true
51 |
52 | !
53 | ! Color
54 | !
55 |
56 | URxvt.keysym.M-C-0: command:\033]710;xft: Inconsolata:pixelsize=10:hinting=true:dpi=96\007
57 | URxvt.keysym.M-C-1: command:\033]710;xft: Inconsolata:pixelsize=12:hinting=true:dpi=96\007
58 | URxvt.keysym.M-C-2: command:\033]710;xft: Inconsolata:pixelsize=14:hinting=true:dpi=96\007
59 | URxvt.keysym.M-C-3: command:\033]710;xft: Inconsolata:pixelsize=16:hinting=true:dpi=96\007
60 | URxvt.keysym.M-C-4: command:\033]710;xft: Inconsolata:pixelsize=20:hinting=true:dpi=96\007
61 | URxvt.keysym.M-C-5: command:\033]710;xft: Inconsolata:pixelsize=26:hinting=true:dpi=96\007
62 | URxvt.keysym.M-C-6: command:\033]710;xft: Inconsolata:pixelsize=36:hinting=true:dpi=96\007
63 |
64 | dzen2.font: -*-fixed-*-*-*-*-*-*-*-*-*-*-*-*
65 | dzen2.foreground: #22EE11
66 | dzen2.background: black
67 |
68 |
69 |
70 |
71 | ! Solarized color scheme for the X Window System
72 | !
73 | ! http://ethanschoonover.com/solarized
74 |
75 | URxvt.background: [95]#002b36
76 | URxvt.borderColor: [95]#002b36
77 | URxvt.scrollColor: [95]#002b36
78 | URxvt.foreground: #839496
79 | URxvt.fading: 40
80 | URxvt.fadeColor: #002b36
81 | URxvt.cursorColor: #93a1a1
82 | URxvt.pointerColorBackground: #586e75
83 | URxvt.pointerColorForeground: #93a1a1
84 |
85 | *color0: #073643
86 | *color1: #dc322f
87 | *color2: #859900
88 | *color3: #b58900
89 | *color4: #268bd2
90 | *color5: #d33682
91 | *color6: #2aa198
92 | *color7: #eee8d5
93 | *color9: #cb4b16
94 | *color8: #002b36
95 | *color10: #586e75
96 | *color11: #657b83
97 | *color12: #839496
98 | *color13: #6c71c4
99 | *color14: #93a1a1
100 | *color15: #fdf6e3
101 |
--------------------------------------------------------------------------------
/.xmonad/xmonad.hs:
--------------------------------------------------------------------------------
1 | import XMonad
2 | import XMonad.Hooks.DynamicLog
3 | import XMonad.Hooks.ManageDocks
4 | import XMonad.Util.Run(spawnPipe)
5 | import XMonad.Util.EZConfig(additionalKeys)
6 | import System.IO
7 | import System.Posix.Env
8 |
9 | import qualified XMonad.StackSet as W
10 | import qualified Data.Map as M
11 | --import qualified System.IO.UTF8 as U
12 | import qualified XMonad.Actions.Search as S
13 | import qualified XMonad.Actions.Submap as SM
14 | import qualified XMonad.Prompt as P
15 |
16 | import XMonad.Layout.WindowNavigation
17 | import XMonad.Layout.Tabbed
18 | import XMonad.Layout.TwoPane
19 | import XMonad.Layout.MosaicAlt
20 | import XMonad.Layout.Combo
21 | import XMonad.Layout.WindowNavigation
22 | import XMonad.Layout.Cross
23 | import XMonad.Layout.MultiToggle
24 | import XMonad.Layout.MultiToggle.Instances
25 |
26 |
27 | import XMonad.Layout.PerWorkspace
28 |
29 | import XMonad.Layout.NoBorders
30 | import XMonad.Actions.NoBorders
31 | import XMonad.Actions.WithAll
32 |
33 | myManageHook = composeAll
34 | [
35 | className =? "Emacs" --> doF (W.shift "code"),
36 | className =? "delicious-surf" --> doF (W.shift "www"),
37 | className =? "Firefox" --> doF (W.shift "www"),
38 | className =? "chromium" --> doF (W.shift "www")
39 | ]
40 |
41 | myKeys =
42 | [
43 | ((mod4Mask, xK_p), spawn "dmenu_run -fn 'Monaco-10' -nb '#222' -nf '#999' -sb '#aa3300'"),
44 | ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s"),
45 | ((mod4Mask, xK_o), sendMessage ToggleStruts),
46 | ((mod4Mask, xK_a), windows (W.view "code")),
47 | ((mod4Mask, xK_s), windows (W.view "www")),
48 | ((mod4Mask, xK_d), windows (W.view "home")),
49 | ((mod4Mask, xK_b), withAll toggleBorder),
50 | ((0, xK_Print), spawn "scrot")
51 | -- multimedia keys
52 | -- XF86AudioLowerVolume
53 | , ((0 , 0x1008ff11), spawn "amixer set Master 15-")
54 | -- XF86AudioRaiseVolume
55 | , ((0 , 0x1008ff13), spawn "amixer set Master 15+")
56 | -- XF86AudioMute
57 | , ((0 , 0x1008ff12), spawn "amixer -q -D pulse sset Master toggle")
58 | -- XF86AudioNext
59 | , ((0 , 0x1008ff17), spawn "playerctl next")
60 | -- XF86AudioPrev
61 | , ((0 , 0x1008ff16), spawn "playerctl previous")
62 | -- XF86AudioPlay
63 | , ((0 , 0x1008ff14), spawn "playerctl play-pause")
64 | -- XF86MonBrightnessDown
65 | , ((0 , 0x1008ff03), spawn "light -U 20")
66 | -- XF86MonBrightnessUp
67 | , ((0 , 0x1008ff02), spawn "light -A 20")
68 | -- XF86KbdBrightnessDown
69 | , ((0 , 0x1008ff06), spawn "light -k -U 20")
70 | -- XF86KbdBrightnessUp
71 | , ((0 , 0x1008ff05), spawn "light -k -A 20")
72 | ]
73 | where modMask = mod1Mask
74 | modShft = modMask .|. shiftMask
75 | modCtrl = modMask .|. controlMask
76 | modShCr = modMask .|. shiftMask .|. controlMask
77 | modMod2 = mod2Mask
78 | modM1Cr = modMask .|. mod2Mask .|. controlMask
79 | search = SM.submap $ searchMap $ S.promptSearch P.defaultXPConfig
80 | nilMask = 0
81 | jstShft = shiftMask
82 | searchMap m = M.fromList $
83 | [ ((nilMask, xK_g), m S.google),
84 | ((nilMask, xK_w), m S.wikipedia),
85 | ((nilMask, xK_i), m S.imdb)
86 | ]
87 |
88 | myTabConfig = defaultTheme { inactiveColor = "#050505", activeColor = "#050505", inactiveBorderColor = "#050505", inactiveTextColor = "#666666", activeBorderColor = "#050505", activeTextColor = "#eeeeee"}
89 |
90 | main = do
91 | putEnv "BROWSER=w3"
92 | xmproc <- spawnPipe "xmobar $HOME/.xmonad/xmobar.hs"
93 | xmonad $ docks $ defaultConfig {
94 | -- basic conf
95 | modMask = mod4Mask,
96 | terminal = "urxvt",
97 | borderWidth = 2,
98 | workspaces = ["home","www","code", "4", "5", "6", "7", "8", "9"],
99 | -- colors
100 | normalBorderColor = "#002b36",
101 | focusedBorderColor = "#657b83",
102 | -- hooks
103 | manageHook = myManageHook <+> manageDocks,
104 | -- layoutHook = avoidStruts $ layoutHook defaultConfig,
105 | layoutHook = windowNavigation $
106 | smartBorders $
107 | avoidStruts $
108 | (onWorkspace "code" (Mirror webdev ||| webdev ||| tall ||| Full)) $
109 | (avoidStruts (tall ||| Mirror tall ||| noBorders (tabbed shrinkText myTabConfig) ||| noBorders Full ||| onWorkspace "www" (tabbed shrinkText myTabConfig) tall)) ||| simpleCross,
110 | logHook = dynamicLogWithPP $ xmobarPP
111 | { ppOutput = hPutStrLn xmproc
112 | , ppTitle = xmobarColor "green" "" . shorten 100
113 | }
114 | } `additionalKeys` myKeys
115 | where
116 | tall = Tall 1 (3/100) (488/792)
117 | webdev = Tall 1 0 (70/100)
118 | -- mosaic = MosaicAlt M.empty
119 | -- combo = combineTwo (TwoPane 0.03 (3/10)) (mosaic) (Full)
120 |
--------------------------------------------------------------------------------