diff options
Diffstat (limited to '.config/herbstluftwm')
-rwxr-xr-x | .config/herbstluftwm/autostart | 123 | ||||
-rwxr-xr-x | .config/herbstluftwm/panel.sh | 96 |
2 files changed, 219 insertions, 0 deletions
diff --git a/.config/herbstluftwm/autostart b/.config/herbstluftwm/autostart new file mode 100755 index 0000000..d93a60a --- /dev/null +++ b/.config/herbstluftwm/autostart @@ -0,0 +1,123 @@ +#!/usr/bin/guile +!# + +(define (hc command) + (system (string-append "herbstclient " command))) + +(define (keybind modkey key command) + (display (string-append "keybind " modkey "-" key " " command "\n")) + (hc (string-append "keybind " modkey "-" key " " command))) + +(define (mousebind modkey button command) + (hc (string-append "mousebind " modkey "-" button " " command))) + +(define (add-tag name) + (hc (string-append "add " name))) + +(define (set variable value) + (hc (string-append "set " variable " " value))) + +(define (unrule) + (hc "unrule -F")) + +(define (rule spec) + (hc (string-append "rule " spec))) + +(define modkey "Mod4") + +(define (create-tag name) + (add-tag name) + (keybind modkey name (string-append "use " name)) + (keybind modkey + (string-append "Shift-" name) + (string-append "move " name))) + +(define (dmenu-command fn nb nf) + (string-append "dmenu_run -fn '" fn "' -nb '" nb "' -nf '" nf "'")) + +(define (set-layout layout) + (display (string-append "set_layout " layout "\n")) + (hc (string-append "set_layout " layout))) + +;; colors +(set "frame_border_active_color" "\\#2e3436") +(set "frame_border_normal_color" "\\#0c191c") +(set "frame_bg_normal_color" "\\#2e3436") +(set "frame_bg_active_color" "\\#0c191c") +(set "frame_border_width" "0") +(set "window_border_width" "2") +(set "window_border_normal_color" "\\#0c191c") +(set "window_border_active_color" "\\#800000") + +;; other settings +(set "default_frame_layout" "2") +(set-layout "max") + +;; keybindings +(keybind modkey "Mod1-q" "quit") +(keybind modkey "Mod1-r" "reload") +(keybind modkey "Shift-Mod1-c" "close") +(keybind modkey "Return" "spawn urxvt") +(keybind modkey "r" + (string-append + "spawn " + (dmenu-command + "-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*" + "#252a2b" "#eeeeec"))) +(keybind "Control" "Mod1-l" "spawn i3lock -c 000000") +(keybind modkey "t" "spawn ~/bin/hlwm/capture-todo") +(keybind modkey "Shift-t" "spawn ~/bin/hlwm/show-todo") + +;; tags +(hc "rename default q") +(for-each create-tag '("q" "w" "e" "a" "s" "d" "z" "x" "c")) + +;; layout +(hc "remove_monitor 1") +(hc "move_monitor 0 1680x1050+0+0") +(hc "add_monitor 1280x1024+1680+0 w") + +;; layouting +(keybind modkey "Shift-r" "remove") +(keybind modkey "space" "cycle_layout 1") +(keybind modkey "u" "split vertical 0.5") +(keybind modkey "o" "split horizontal 0.5") +(keybind modkey "f" "floating toggle") +(keybind modkey "Shift-f" "fullscreen toggle") +(keybind modkey "p" "pseudotile toggle") + +;; resizing +(define resizestep "0.05") +(keybind modkey "Control-h" (string-append "resize left +" resizestep)) +(keybind modkey "Control-j" (string-append "resize down +" resizestep)) +(keybind modkey "Control-k" (string-append "resize up +" resizestep)) +(keybind modkey "Control-l" (string-append "resize right +" resizestep)) + +;; mouse +(mousebind modkey "Button1" "move") +(mousebind modkey "Button2" "resize") +(mousebind modkey "Button3" "zoom") + +;; focus +(keybind modkey "BackSpace" "cycle_monitor") +(keybind modkey "Tab" "cycle_all +1") +(keybind modkey "Shift-Tab" "cycle_all -1") +(keybind modkey "Mod1-c" "cycle") +(keybind modkey "h" "focus left") +(keybind modkey "j" "focus down") +(keybind modkey "k" "focus up") +(keybind modkey "l" "focus right") +(keybind modkey "Shift-h" "shift left") +(keybind modkey "Shift-j" "shift down") +(keybind modkey "Shift-k" "shift up") +(keybind modkey "Shift-l" "shift right") + +;; rules +(unrule) +(rule "focus=on") ; normally do not focus new clients +(rule "windowtype=_NET_WM_WINDOW_TYPE_DIALOG focus=on pseudotile=on") +(rule "class=Xephyr pseudotile=on") + +;; Show panel + +(system "~/.config/herbstluftwm/panel.sh &") diff --git a/.config/herbstluftwm/panel.sh b/.config/herbstluftwm/panel.sh new file mode 100755 index 0000000..c955a0c --- /dev/null +++ b/.config/herbstluftwm/panel.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +monitor=${1:-0} +geometry=( $(herbstclient monitor_rect "$monitor") ) +if [ -z "$geometry" ] ;then + echo "Invalid monitor $monitor" + exit 1 +fi +# geometry has the format: WxH+X+Y +x=${geometry[0]} +y=${geometry[1]} +width=${geometry[2]} +height=16 +font="-misc-tamsyn-medium-r-normal-*-14-*-*-*-*-*-iso8859-*" +fgcolor='#eeeeec' +bgcolor='#252a2b' +hintcolor="#0c191c" + +function uniq_linebuffered() { + awk '$0 != l { print ; l=$0 ; fflush(); }' "$@" +} + +herbstclient pad $monitor $height +{ + # events: + #mpc idleloop player & + while true ; do + date +'date ^fg($fgcolor)%H:%M^fg(#909090), %Y-%m-^fg($fgcolor)%d' + sleep 1 || break + done > >(uniq_linebuffered) & + childpid=$! + herbstclient --idle + kill $childpid +} 2> /dev/null | { + TAGS=( $(herbstclient tag_status $monitor) ) + date="" + while true ; do + bordercolor="#26221C" + separator="^fg(#141414)^ro(1x$height)^fg()" + # draw tags + echo -n "$separator" + for i in "${TAGS[@]}" ; do + case ${i:0:1} in + '#') + echo -n "^bg(#0c191c)^fg(#eeeeec)" + ;; + '+') + echo -n "^bg(#2e3436)^fg(#555753)" + ;; + ':') + echo -n "^bg(#2e3436)^fg($fgcolor)" + ;; + '!') + echo -n "^bg(#a40000)^fg(#edd400)" + ;; + *) + echo -n "^bg()^fg()" + ;; + esac + echo -n " ${i:1} " + echo -n "$separator" + done + echo -n "^bg()^p(_CENTER)" + # small adjustments + nfmail=`ls ~/documents/mail/ninthfloor/INBOX/new/ | wc -l` + gmail=`ls ~/documents/mail/gmail/INBOX/new/ | wc -l` + archmail=`ls ~/documents/mail/arch/INBOX/new/ | wc -l` + aethonmail=`ls ~/documents/mail/aethon/INBOX/new/ | wc -l` + right="$separator 9f: $nfmail $separator gmail: $gmail $separator arch: $archmail $separator aethon: $aethonmail $separator^bg($hintcolor) $date $separator" + right_text_only=$(echo -n "$right"|sed 's.\^[^(]*([^)]*)..g') + # get width of right aligned text.. and add some space.. + width=$(textwidth "$font" "$right_text_only ") + echo -n "^p(_RIGHT)^p(-$width)$right" + echo + # wait for next event + read line || break + cmd=( $line ) + # find out event origin + case "${cmd[0]}" in + tag*) + #echo "reseting tags" >&2 + TAGS=( $(herbstclient tag_status $monitor) ) + ;; + date) + #echo "reseting date" >&2 + date="${cmd[@]:1}" + ;; + quit_panel) + exit + ;; + #player) + # ;; + esac + done +} 2> /dev/null | dzen2 -w $width -x $x -y $y -fn "$font" -h $height \ + -ta l -bg "$bgcolor" -fg "$fgcolor" |