summaryrefslogtreecommitdiffstats
path: root/.config/herbstluftwm
diff options
context:
space:
mode:
Diffstat (limited to '.config/herbstluftwm')
-rwxr-xr-x.config/herbstluftwm/autostart123
-rwxr-xr-x.config/herbstluftwm/panel.sh96
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"