guest@dotshare [~/groups/wms/herbstluft] $ ls spectral-hlwm/ | cat

spectral hlwm (scrot) (+5 likes)

milomouse Jan 27, 2014 (wms/herbstluft)

autostart(raw, dl)

SCROT

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#! /bin/zsh
#######################################################
## locate: ${XDG_CONFIG_HOME}/herbstluftwm/autostart ##
## author: Vincent Z (github.com/milomouse)          ##
## detail: startup configuration for `herbstluftwm'  ##
#######################################################
## NOTE 1: [most] keybindings are handled by `sxhkd' ##
#######################################################

function _hc() { ex=(${ex} , ${@}) }

## GLOBAL:
#// scheme:
Mod=Mod4
TAG_NAMES=( Ⅰ Ⅱ Ⅲ ⅠV V VⅠ VⅡ VⅢ ⅠⅩ Ⅹ )
TAG_BINDS=( {1..10} )
#// reset:
herbstclient chain , emit_hook reload , keyunbind --all , mouseunbind --all , unsetenv HCT , set default_frame_layout 2 , load default '(clients max:0)' , rename default "${TAG_NAMES[1]}"
#// tags:
for ((i=1; i<$((${TAG_BINDS[-1]}+1)); i++)) ; do
  if [[ $i -gt ${TAG_BINDS[1]} ]] { herbstclient add ${TAG_NAMES[$i]} }
  herbstclient and , keybind $Mod-${i[-1]} use ${TAG_NAMES[$i]} , keybind $Mod-Shift-${i[-1]} move ${TAG_NAMES[$i]}
done
#// mouse:
_hc mousebind $Mod-Button1 move
_hc mousebind $Mod-Button2 zoom
_hc mousebind $Mod-Button3 resize

## SETTINGS:
#// behavioral:
_hc set focus_stealing_prevention 0
_hc set focus_follows_mouse 0
_hc set raise_on_focus 0
_hc set raise_on_click 1
_hc set mouse_recenter_gap 0
#// borders/gaps:
_hc set always_show_frame 1
_hc set frame_bg_transparent 0
_hc set frame_border_width 2
_hc set window_border_width 4
_hc set window_border_inner_width 0
_hc set gapless_grid 1
_hc set frame_gap 0
_hc set window_gap -2
_hc set frame_padding 2
_hc set smart_window_surroundings 0
_hc set smart_frame_surroundings 0
#// colors:
_hc set frame_border_active_color '#161616'
_hc set frame_border_normal_color '#101010'
_hc set frame_bg_active_color '#202020'
_hc set frame_bg_normal_color '#191919'
_hc set window_border_active_color '#53475b'
_hc set window_border_normal_color '#1c1c1c'
_hc set window_border_urgent_color '#4cdcd4'
#// other:
_hc set tree_style '╾│ ├└╼─┐'
_hc unlock
_hc detect_monitors
_hc pad 0 92

## RULES:
#// global focus:
_hc unrule -F
_hc rule focus=on
#// move to tag:
_hc rule class=Dwb tag=Ⅲ
_hc rule class=Firefox tag=ⅠV
_hc rule class=Gimp tag=VⅢ pseudotile=on
_hc rule class=Pavucontrol tag=#// management:
_hc rule title="Open Image" pseudotile=on
_hc rule title="Save As" pseudotile=on
_hc rule title="Save file" pseudotile=on
_hc rule class=Toplevel pseudotile=on
_hc rule instance=gcolor2 pseudotile=on
_hc rule class=XFontSel pseudotile=on
_hc rule class=tint2 manage=off focus=off
_hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
_hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK)' manage=off
_hc rule windowtype~'_NET_WM_WINDOW_TYPE_(FULLSCREEN|FS)' fullscreen=on

## RUNTIME:
#// external:
_hc spawn ${XDG_CONFIG_HOME:-$HOME}/herbstluftwm/dzen-post.zsh
_hc emit_hook complete
#// execute chain:
herbstclient chain ${ex}&
if [[ -n $(pidof tint2) ]] { pkill -USR1 -x tint2 } else { tint2 -c ${XDG_CONFIG_HOME:-$HOME}/herbstluftwm/tint2rc & }

CLICK TO VIEW

x

sxhkdrc(raw, dl)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
#####################################################
## locate: ${XDG_CONFIG_HOME}/herbstluftwm/sxhkdrc ##
## author: Vincent Z (github.com/milomouse)        ##
## detail: keybinding(s) for `herbstluftwm'        ##
#####################################################
## NOTE 1: spawned and killed from "xinitrc"       ##
#####################################################

###############################
## Internal (herbstluftwm):  ##
###############################

#+ quit herbstluftwm
super + {_,shift +} q
    herbstclient {reload,chain - emit_hook quit_panel - quit}

#+ close focused window
super + control + Pause
    herbstclient close

#+ (lock|unlock) focused tag, with visual
super + x ; {l,u}
    herbstclient chain - set window_border_active_color {'#ab5278' - lock_tag,'#53475b' - unlock_tag}

#+ rotate desktop layout
super + c
    herbstclient rotate

#+ cycle frame layout(s)
super + {_,shift} + g
    herbstclient cycle_layout {+,-}1 max vertical horizontal grid

#+ choose frame layout(s)
super + shift + a ; {m,v,h,g}
    herbstclient set_layout {max,vertical,horizontal,grid}

#+ reset frame layout to max
super + a
    herbstclient set_layout max

#+ manually split frame at left or right
super + {minus,equal}
    herbstclient split {left,right} 0.5

#+ manually split frame at top or bottom
super + shift + {equal,minus}
    herbstclient split {top,bottom} 0.5

#+ automatically split, and/or shift window to new split (if available)
super + {_,shift +} BackSpace
    herbstclient split {explode,auto}

#+ resize window in direction
super + r : {h,shift + h,j,shift + j,k,shift + k,l,shift + l}
    herbstclient resize {left +,left -,down +,down -,up +,up -,right +,right -}0.01

#+ change focus or move window in direction
super + {_,shift +} {h,j,k,l}
    herbstclient {focus,shift} -e {left,down,up,right}

#+ shift window to edge of tag in direction
super + control + {h,j,k,l}
    herbstclient shift_edge -e {left,down,up,right}

#+ change window focus next/previous
super + {_,shift +} space
    herbstclient cycle {+,-}1

#+ change focus to next/prev desktop occupied with client
super + {n,p}
    /howl/conf/herbstluftwm/tagswitch.sh {next,prev}

#+ change focus to next/prev desktop
super + {period,comma}
    herbstclient use_index {+,-}1 --skip-visible

#+ move window to next/prev desktop
super + shift + {period,comma}
    herbstclient move_index {+,-}1 --skip-visible

#+ change focus between last desktop(s)
super + slash
    herbstclient use_previous

#+ focus or pull urgent window
super + {_,shift +} u
    herbstclient {jumpto,bring} urgent

#+ float/unfloat, fullscreen
super + {f,o}
    herbstclient {pseudotile,fullscreen} toggle

#+ remove frame
super + z
    herbstclient remove

########################
## External:          ##
########################

#+ reload sxhkd config
super + shift + s
    pkill -USR1 -x sxhkd

#+ spawn rxvt-unicode with tmux
super + Return
    urxvt -e tmux -S /tmp/user-keep/h/tmux/xorg

#+ spawn rxvt-unicode
super + shift + Return
    urxvt

#+ spawn application launcher
super + e
    interrobang

#+ disable/enable/hide/unhide the mouse
super + Escape
    zaprat --toggle

#+ refresh all windows
super + b
    xrefresh

#+ mplayer daemon (toggle|stop)
super + {_,shift +} d
    mifo {--toggle,--stop}

#+ mplayer daemon toggle, stop
XF86Audio{Play,Stop}
    mifo {--toggle,--stop}

#+ mplayer daemon randomize
super + t
    mifo --random

#+ mplayer daemon repeat (on|off)
super + {_,shift +} backslash
    mifo {--repeat off && mifo --repeat on,--repeat off}

#+ mplayer daemon (prev|next)
super + bracket{left,right}
    mifo {--prev,--next}

#+ mplayer daemon next, prev
XF86Audio{Next,Prev}
    mifo {--next,--prev}

#+ pulseaudio mute (toggle|on|off)
super + {_,shift +,ctrl +} m
    pulsevol {--mute,--mute on,--mute off}

#+ pulseaudio toggle
XF86AudioMute
    pulsevol --mute

#+ pulseaudio raise volume
XF86AudioRaiseVolume
    pulsevol --increase 1

#+ pulseaudio lower volume
XF86AudioLowerVolume
    pulsevol --decrease 1

#+ if found, focus on existing dwb instance, else exec dwb
super + w
    /bin/sh -c 'if [[ -n $(pidof dwb) ]] ; then if [[ ${(Q)$(herbstclient stack)[7]} != "Ⅲ" ]] ; then herbstclient use Ⅲ ; fi ; else exec dwb ; fi'

#+ simple clipboard in/out synchronizer
super + y
    /howl/code/zsh/xclip-wrapper

#+ yank screenshot of current desktop
super + shift + y
    import -window root /howl/foto/shot/$(date '+%Y_%m_%d-%H%M%S').png

# vim: set ft=sxhkdrc:
 

x

dzen-colors.zsh(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#! /bin/zsh
#############################################################
## locate: ${XDG_CONFIG_HOME}/herbstluftwm/dzen-colors.zsh ##
## author: Vincent Z (github.com/milomouse)                ##
## detail: sourced X color settings converted for `dzen2'  ##
#############################################################
## NOTE 1: variable must be set to a valid X settings file ##
## NOTE 2: this script will fail if no *colors are defined ##
#############################################################

XF="${XDG_CONFIG_HOME:-$HOME}/xorg/Xresources"

if [[ -s ${XF} ]]; then
  c_XX='^fg()'
  b_XX='^bg()'
  _XX=${c_XX}${b_XX}
  <${XF} | grep "^*" | while read c ; do
    case "${${(s. .)c:l}[1]}" {
      #'*background:') _bg=${${(s. .)c}[-1]} ; c_bg=^fg(${_bg}) ; b_bg=^bg(${_bg}) ;;
      '*background:') _bg='#191919' ; c_bg=^fg(${_bg}) ; b_bg=^bg(${_bg}) ;;
      '*foreground:') _fg=${${(s. .)c}[-1]} ; c_fg=^fg(${_fg}) ; b_fg=^bg(${_fg}) ;;
      '*color0:') _00=${${(s. .)c}[-1]} ; c_00=^fg(${_00}) ; b_00=^bg(${_00}) ;;  ## black
      '*color8:') _08=${${(s. .)c}[-1]} ; c_08=^fg(${_08}) ; b_08=^bg(${_08}) ;;  ## black:bold
      '*color1:') _01=${${(s. .)c}[-1]} ; c_01=^fg(${_01}) ; b_01=^bg(${_01}) ;;  ## red
      '*color9:') _09=${${(s. .)c}[-1]} ; c_09=^fg(${_09}) ; b_09=^bg(${_09}) ;;  ## red:bold
      '*color2:') _02=${${(s. .)c}[-1]} ; c_02=^fg(${_02}) ; b_02=^bg(${_02}) ;;  ## green
      '*color10:') _10=${${(s. .)c}[-1]} ; c_10=^fg(${_10}) ; b_10=^bg(${_10}) ;; ## green:bold
      '*color3:') _03=${${(s. .)c}[-1]} ; c_03=^fg(${_03}) ; b_03=^bg(${_03}) ;; ## yellow
      '*color11:') _11=${${(s. .)c}[-1]} ; c_11=^fg(${_11}) ; b_11=^bg(${_11}) ;; ## yellow:bold
      '*color4:') _04=${${(s. .)c}[-1]} ; c_04=^fg(${_04}) ; b_04=^bg(${_04}) ;; ## blue
      '*color12:') _12=${${(s. .)c}[-1]} ; c_12=^fg(${_12}) ; b_12=^bg(${_12}) ;; ## blue:bold
      '*color5:') _05=${${(s. .)c}[-1]} ; c_05=^fg(${_05}) ; b_05=^bg(${_05}) ;; ## magenta
      '*color13:') _13=${${(s. .)c}[-1]} ; c_13=^fg(${_13}) ; b_13=^bg(${_13}) ;; ## magenta:bold
      '*color6:') _06=${${(s. .)c}[-1]} ; c_06=^fg(${_06}) ; b_06=^bg(${_06}) ;; ## cyan
      '*color14:') _14=${${(s. .)c}[-1]} ; c_14=^fg(${_14}) ; b_14=^bg(${_14}) ;; ## cyan:bold
      '*color7:') _07=${${(s. .)c}[-1]} ; c_07=^fg(${_07}) ; b_07=^bg(${_07}) ;; ## white
      '*color15:') _15=${${(s. .)c}[-1]} ; c_15=^fg(${_15}) ; b_15=^bg(${_15}) ;; ## white:bold
    }
  done
else
  exit 3
fi
 

x

dzen-init.zsh(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#! /bin/zsh
###########################################################
## locate: ${XDG_CONFIG_HOME}/herbstluftwm/dzen-init.zsh ##
## author: Vincent Z (github.com/milomouse)              ##
## detail: wm-independent information for `dzen2'        ##
###########################################################
## NOTE 1: needs to be started before `herbstluftwm'     ##
## NOTE 2: script should be ran from the "xinitrc" file  ##
## NOTE 3: will NOT be reloaded by `herbstclient reload' ##
###########################################################

source ${XDG_CONFIG_DIR:-$HOME}/herbstluftwm/dzen-colors.zsh

## FUNCTIONS:
function i_mifo {
  m_=$(mifo -a "%D:2: _MIFO1_ %D _MIFO2_ %B") ; [[ ${#m_} -eq 0 ]] && m_="/"
  m_A=${${m_/ _MIFO1_*}//_/ } ; [[ ${#m_A} -eq 0 ]] && m_A='<unknown>'
  m_D=${${${m_/ _MIFO2_*}/*_MIFO1_ }//_/ } ; [[ ${#m_D} -eq 0 ]] && m_D='<unknown>'
  [[ ${#${m_A}} -gt 20 ]] && m_A="${${m_A}[1,20]}.."
  [[ ${#${m_D}} -gt 20 ]] && m_D="${${m_D}[1,20]}.."
  [[ ${#${m_/*_MIFO2_ }} -gt 40 ]] && m_B="${${${m_/*_MIFO2_ }//_/ }[1,40]}.." || m_B="${${m_/*_MIFO2_ }//_/ }"
  print - "${c_XX}${b_08} ^bg(#333333)${c_07} ӎplayer2 ${c_08}${b_00}▒${_XX}\
$(mifo -a ${b_08} '^bg(#303030)'${c_12} ${m_A:-%D:2:} ${_XX}\
'^bg(#292929)^fg(#616161)' ${m_D:-%D} ${_XX}\
'^bg(#242424)'${c_13} ${m_B:-%B} ${_XX}\
'^bg(#292929)'${c_08} %e ${_XX}\
'^bg(#333333)'${c_04} %c ${c_XX}/ ${c_12}%C ${_XX})"
}

function i_mixer {
  VOLUME="${${${$(pulsevol -a volume)#0:}/1:/${c_07}ʆ^fg(#666666)}:gs/%/^fg(#484848)&}"
  MUTE="${${$(pulsevol -a mute)/yes/${c_01}}/no/${c_13}}•"
  print - "${c_XX}${b_08} ${c_07}^bg(#333333) ⩗olume ${_XX}\
^fg(#666666)${b_00} ${VOLUME} ${_XX}\
^bg(#333333) ${MUTE} ${_XX}"
}

function i_newmail {
  INBOX=${(Fw)#$(find /howl/mail/*/INBOX/new -type f)}
  ALL=${(Fw)#$(find /howl/mail/*/*/new -type f)}
  print - "${c_XX}${b_08} ^bg(#333333)${c_07} ӎailbox ${c_08}${b_00}▒${_XX}\
${b_08} ^bg(#292929)${c_07} unread ${_XX}\
^bg(#242424)${c_13} ${INBOX} ${_XX}\
^bg(#292929)^fg(#616161) ${ALL} ${_XX}"
}

function i_loadavg {
  LOAD=${${${${${${${${(s. .)$(</proc/loadavg)}[1]/0./${c_08}0.}/1./${c_07}1.}/2./${c_05}2.}/3./${c_04}3.}/4./${c_03}4.}/5./${c_11}5.}//./${c_12}.${c_XX}}
  print - "${c_XX}${b_08} ${c_07}^bg(#333333) ɭoadavg ${_XX}\
^bg(#292929)${c_01} ${LOAD} ${_XX}"
}

function i_battery {
  BAT=${${${${${${$(acpi -b)[3,4]//,}//\%/${c_07}% }/Full/${c_08} idle ${c_12}${b_08}}/Discharging/${c_01} down ${c_12}${b_08}}/Charging/${c_03} up ${c_12}${b_08}}/Unknown/^fg(#616161) pending ${c_12}${b_08}}
  print - "${c_XX}${b_08} ${c_07}^bg(#333333) Ϧattery ${_XX}\
^bg(#292929)${BAT}${_XX}"
}

## RUNTIME:
_font='-misc-fixedzero-medium-r-semicondensed-*-12-110-75-75-c-60-iso10646-1'
_wide='1270'
function left { print - "$(i_mifo) $(i_mixer)" }
function right { print - "$(i_newmail) $(i_loadavg) $(i_battery)"}

while true ; do
  _rwide=$(( $(print - ${#${"$(right | sed 's.\^[^(]*([^)]*)..g')"}}) * 6 + 2))
  print - "$(left)^pa($((${_wide} - ${_rwide})))$(right)"
  sleep 1s
done | dzen2 -p -x 330 -y 0 -h 16 -w ${_wide} -ta l -bg ${_bg} -fg ${_fg} \
       -fn '-misc-fixedzero-medium-r-semicondensed-*-12-110-75-75-c-60-iso10646-1' \
       &>/dev/null || exit 5
 

x

dzen-post.zsh(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#! /bin/zsh
###########################################################
## locate: ${XDG_CONFIG_HOME}/herbstluftwm/dzen-post.zsh ##
## author: Vincent Z (github.com/milomouse)              ##
## detail: hlwm specific tag(s) information for `dzen2'  ##
###########################################################
## NOTE 1: relies on `herbstluftwm' to be up and running ##
## NOTE 2: script is dynamic and only updates on changes ##
## NOTE 3: able to be reloaded by `herbstclient reload'  ##
###########################################################

herbstclient getenv DISPLAY &>/dev/null || exit 1
source ${XDG_CONFIG_DIR:-$HOME}/herbstluftwm/dzen-colors.zsh
sep=("${b_bg}${c_08} Ϫ ${c_XX}${b_00}")

herbstclient --idle | while read i ; do
  if [[ $i == complete || $i =~ tag_ ]]; then
    tags=( $(herbstclient tag_status) ) || exit 2
    for i ( $tags ) {
      case ${i[1]} {
        '#') tags=("${tags/$i/${b_07}${c_00}${i#[[:graph:]]}${c_XX}${b_08} }") ;;
        '+') tags=("${tags/$i/${c_07}${i#[[:graph:]]}${c_XX} }") ;;
        '%') tags=("${tags/$i/${c_04}${i#[[:graph:]]}${c_XX} }") ;;
        '-') tags=("${tags/$i/${c_07}${i#[[:graph:]]}${c_XX} }") ;;
        '.') tags=("${tags/$i/${c_07}${i#[[:graph:]]}${c_XX} }") ;;
        ':')
          _n=(${#$(print ${(F)$(herbstclient layout ${i[2,-1]})} | grep '^0x')})
          case ${_n} {
            0) _N=' ' ;;
            1) _N='¹' ;;
            2) _N='²' ;;
            3) _N='³' ;;
            *) _N='֡' ;; #'keepforsyntax
          }
          tags=("${tags/$i/${c_05}${i#[[:graph:]]}${c_02}${_N}${c_XX}}")
        ;;
        '!') tags=("${tags/$i/${c_01}${i#[[:graph:]]}${c_XX} }") ;;
        *) tags=("${tags/$i/${c_07}${i#[[:graph:]]}${c_XX} }") ;;
      }
    }
    print "${b_00}${c_07} ɦerbstluftwm  ${sep}  ${tags:-${c_08}$(repeat 12 { printf " · " })}${_XX}"
  elif [[ $i =~ quit || $i =~ reload ]]; then
    kill $!
    exit
  fi
done | dzen2 -p -x 0 -y 0 -w 330 -h 16 -ta l -bg ${_bg} -fg ${_fg} \
       -fn '-misc-fixedzero-medium-r-semicondensed-*-12-110-75-75-c-60-iso10646-1' \
       &>/dev/null || exit 5
 

x

tagswitch.sh(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#! /bin/bash
# vim: set fileencoding=utf-8 ts=4 sts=4 sw=4 tw=80 expandtab :

# Copyright (C) 2012 Florian Bruhin <me@the-compiler.org>

# tagswitch is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# 
# tagswitch is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
# 
# You should have received a copy of the GNU General Public License
# along with tagswitch  If not, see <http://www.gnu.org/licenses/>.

# Changes herbstluftwm tags

checkuse() {
    if [[ "${tags[$1]}" != [.!]* ]]; then # tag is not unused
        herbstclient use "${tags[$1]:1}" # cutting off first char (.#:!)
        exit 0
    fi
}

tags=( $(herbstclient tag_status) )

# Find the currently active tag
for ((i=0; i<="${#tags[@]}"; i++)); do
    [[ "${tags[i]}" == "#"* ]] && activetag="$i"
done

if [[ "$1" == next ]]; then # next active tag
    for ((i="$((activetag+1))"; i<"${#tags[@]}"; i++)); do
        checkuse "$i"
    done
    # at the end of the taglist, wrap around
    for ((i=0; i<"$activetag"; i++)); do
        checkuse "$i"
    done
elif [[ "$1" == prev ]]; then # previous active tag
    for ((i="$((activetag-1))"; i>=0; i--)) do
        checkuse "$i"
    done
    # at the beginning of the taglist, wrap around
    for ((i=${#tags[@]}-1; i>$((activetag-1)); i--)) do
        checkuse "$i"
    done
else
    echo "Usage: $0 [next|prev]"
    exit 1
fi
 

x

tint2rc(raw, dl)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#####################################################
## locate: ${XDG_CONFIG_HOME}/herbstluftwm/tint2rc ##
## author: Vincent Z (github.com/milomouse)        ##
## detail: tint2 taskbar for `herbstluftwm'        ##
#####################################################
## NOTE 1: spawned and killed from "autostart"     ##
## NOTE 2: configured for tint2 SVN                ##
#####################################################

# Background definitions
# ID 1
rounded = 0
border_width = 0
background_color = #161616 100
border_color = #777777 100

# ID 2
rounded = 0
border_width = 0
background_color = #666666 100
border_color = #CCCCCC 100

# ID 3
rounded = 0
border_width = 0
background_color = #444444 100
border_color = #777777 100

# Panel
panel_monitor = all
panel_position = top left horizontal
panel_size = 100% 18
panel_margin = 0 76
panel_padding = 0 0 0
panel_dock = 0
panel_items = TC
wm_menu = 0
panel_layer = top
panel_background_id = 1

# Panel Autohide
autohide = 0
autohide_show_timeout = 0.3
autohide_hide_timeout = 2
autohide_height = 2
strut_policy = follow_size

# Taskbar
taskbar_mode = single_desktop
taskbar_padding = 2 3 2
taskbar_background_id = 0
taskbar_active_background_id = 0

# Tasks
urgent_nb_of_blink = 8
task_icon = 0
task_text = 1
task_centered = 1
task_maximum_size = 140 35
task_padding = 6 2
task_background_id = 3
task_active_background_id = 2
task_urgent_background_id = 2
task_iconified_background_id = 3

# Task Icons
task_icon_asb = 70 0 0
task_active_icon_asb = 100 0 0
task_urgent_icon_asb = 100 0 0
task_iconified_icon_asb = 70 0 0

# Fonts
task_font = FixedZero 8
task_font_color = #666666 100
task_active_font_color = #999999 100
task_urgent_font_color = #A488D9 100
task_iconified_font_color = #FFFFFF 100
font_shadow = 0

# System Tray
systray = 0
systray_padding = 0 4 5
systray_sort = ascending
systray_background_id = 0
systray_icon_size = 16
systray_icon_asb = 70 0 0

# Clock
time1_format = %H:%M %A %d %B 
time1_font = FixedZero 8
#time2_format = %A %d %B
#time2_font = sans 6
clock_font_color = #777777 100
clock_padding = 1 0
clock_background_id = 0
#clock_lclick_command = false
#clock_rclick_command = false

# Tooltips
tooltip = 0
tooltip_padding = 2 2
tooltip_show_timeout = 0.7
tooltip_hide_timeout = 0.3
tooltip_background_id = 1
tooltip_font = sans 10
tooltip_font_color = #000000 100

# Mouse
mouse_middle = none
mouse_right = close
mouse_scroll_up = toggle
mouse_scroll_down = iconify

# Battery
battery = 0
battery_low_status = 10
battery_low_cmd = notify-send "battery low"
battery_hide = 98
bat1_font = sans 8
bat2_font = sans 6
battery_font_color = #FFFFFF 100
battery_padding = 1 0
battery_background_id = 0

# End of config
 

x

xinitrc(raw, dl)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#! /bin/zsh
##############################################
## locate: ${XDG_CONFIG_HOME}/xorg/xinitrc  ##
## author: milomouse (github.com/milomouse) ##
## detail: X.Org init configuration file    ##
##############################################

## RESOURCES:
/usr/bin/xrdb -load ${XDG_CONFIG_HOME:-$HOME}/xorg/Xresources

## KEYBOARD:
/usr/bin/xmodmap ${XDG_CONFIG_HOME:-$HOME}/keymaps/overlay-mods.xmodmap

## MOUSE:
/usr/bin/xsetroot -cursor_name left_ptr -solid '#151515'
/usr/local/bin/zaprat --disable

## BACKGROUND:
/usr/bin/display -window root -resize 1600x900! ${XDG_PICTURES_DIR:-$HOME/../foto}/star/outer_space.jpg

## WINDOW MANAGER:
exec ${XDG_CONFIG_HOME:-$HOME}/herbstluftwm/dzen-init.zsh &>/dev/null &
/usr/bin/sxhkd -c ${XDG_CONFIG_HOME:-$HOME}/herbstluftwm/sxhkdrc &
exec /usr/bin/herbstluftwm --locked -c ${XDG_CONFIG_HOME:-$HOME}/herbstluftwm/autostart &>/dev/null
 

x

Notes

Snapshot of my herbstluftwm setup.
Be sure to check out supplied xinitrc for more info on startup.

SETUP:

  • herbstluftwm
  • sxhkd
  • dzen2
  • tint2
  • zsh

FILES:

  • herbstluftwm / autostart
  • herbstluftwm / sxhkdrc
  • herbstluftwm / dzen-colors.zsh
  • herbstluftwm / dzen-init.zsh
  • herbstluftwm / dzen-post.zsh
  • herbstluftwm / tint2rc
  • herbstluftwm / tagswitch.sh
  • xinitrc

( some minor details may have changed since screenshot )
( for latest configs visit: https://github.com/milomouse/dotfiles )

Comments

Anomareh said about 10 years ago

I really like the status bar.

milomouse said about 10 years ago

Thank you, it took a while to configure the way I wanted but glad I did it.

crshd said about 10 years ago

Dope, as usual.