You are not logged in.
This is the screenshot and config sharing thread for herbstluftwm (HLWM/HWM).
I'm hoping people can showcase the versatility of this cool WM and get more people to try using it, at the same time I'm hoping to learn from other users on how they configure their setup.
As with any other screenshot sharing threads, do not post full resolution screenshots.
-----
So here is my SS:
And my autostart:
#!/bin/bash
# this is a simple config for herbstluftwm
function hc() {
herbstclient "$@"
}
#hc emit_hook reload
hc set window_gap 5
# rules
hc unrule -F
#hc rule class=XTerm tag=3 # move all xterms to tag 3
hc rule focus=off # normally do not focus new clients
# give focus to most common terminals
hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK)' manage=off
hc rule class~'[Ss]talonetray' manage=off
#autostart
$HOME/.config/herbstluftwm/wsbar.sh
stalonetray &
#add padding for dzen2
hc pad 0 16 0 0 0
# remove all existing keybindings
hc keyunbind --all
# keybindings
Mod=Mod4
hc keybind $Mod-q quit
#hc keybind $Mod-n reload
hc keybind $Mod-c close
# Applications
hc keybind $Mod-Shift-r spawn dmenu_run
hc keybind $Mod-Shift-Return spawn urxvt
hc keybind $Mod-Shift-w spawn chromium
# tags
TAG_NAMES=( "Eins" "Zwei" "Drei" "Vier" "Fünf" "Sechs" "Sieben" )
TAG_KEYS=( {1..7} 0 )
hc rename default "${TAG_NAMES[0]}" || true
for i in ${!TAG_NAMES[@]} ; do
hc add "${TAG_NAMES[$i]}"
key="${TAG_KEYS[$i]}"
if ! [ -z "$key" ] ; then
hc keybind "$Mod-$key" use "${TAG_NAMES[$i]}"
hc keybind "$Mod-Shift-$key" move "${TAG_NAMES[$i]}"
fi
done
# layouting
hc keybind $Mod-r remove
#hc keybind $Mod-space cycle_layout 1
hc keybind $Mod-m set_layout max
hc keybind $Mod-v set_layout vertical
hc keybind $Mod-h set_layout horizontal
hc keybind $Mod-Control-v split vertical 0.5
hc keybind $Mod-Control-h split horizontal 0.5
hc keybind $Mod-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-p pseudotile toggle
hc keybind $Mod-j cycle 1
hc keybind $Mod-k cycle -1
# resizing
RESIZESTEP=0.05
hc keybind $Mod-Control-Left resize left +$RESIZESTEP
hc keybind $Mod-Control-Down resize down +$RESIZESTEP
hc keybind $Mod-Control-Up resize up +$RESIZESTEP
hc keybind $Mod-Control-Right resize right +$RESIZESTEP
# mouse
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 resize
hc mousebind $Mod-Button3 zoom
# focus
hc keybind $Mod-BackSpace cycle_monitor
hc keybind $Mod-Tab cycle_all +1
hc keybind $Mod-Shift-Tab cycle_all -1
hc keybind $Mod-c cycle
hc keybind $Mod-Left focus left
hc keybind $Mod-Down focus down
hc keybind $Mod-Up focus up
hc keybind $Mod-Right focus right
hc keybind $Mod-Shift-Left shift left
hc keybind $Mod-Shift-Down shift down
hc keybind $Mod-Shift-Up shift up
hc keybind $Mod-Shift-Right shift right
# colors
hc set frame_border_active_color '#1793D0'
hc set frame_border_normal_color '#123456'
hc set frame_bg_transparent 1
hc set frame_border_width 1
hc set window_border_width 1
hc set window_border_normal_color '#123456'
hc set window_border_active_color '#1793D0'
# dual monitor setup
hc remove monitor 1
hc move_monitor 0 1366x768+0+0
hc use "${TAG_NAMES[0]}"
hc add_monitor 1440x900+1366+0 "${TAG_NAMES[1]}"
and my wsbar.sh script:
#!/bin/bash
## dzen stuff
FG='white'
BG='black'
FONT="-*-fixed-medium-*-*-*-12-*-*-*-*-*-*-*"
function uniq_linebuffered() {
awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
}
{
conky -c ~/.conkyrc_herbstluft | while read -r; do
echo -e "conky $REPLY";
#break
done > >(uniq_linebuffered) &
childpid=$!
herbstclient --idle
kill $childpid
} | {
TAGS=( $(herbstclient tag_status $monitor) )
conky=""
separator="^fg(#1793D0)^ro(1x16)^fg()"
while true; do
for i in "${TAGS[@]}" ; do
echo -n "^ca(1,herbstclient use ${i:1}) "
case ${i:0:1} in
'#')
echo -n "^fg(#1793D0)[^fg(#FFFFFF)${i:1}^fg(#1793D0)]"
;;
':')
echo -n "^fg(#FFFFFF) ${i:1} "
;;
*)
echo -n "^fg(#123456) ${i:1} "
;;
esac
echo -n "^ca()"
done
echo -n " $separator"
conky_text_only=$(echo -n "$conky"|sed 's.\^[^(]*([^)]*)..g')
width=$(textwidth "$FONT" "$conky_text_only ")
echo -n "^p(_RIGHT)^p(-$width)$conky"
echo
read line || break
cmd=( $line )
case "$cmd[0]" in
tag*)
TAGS=( $(herbstclient tag_status $monitor) )
;;
conky*)
conky="${cmd[@]:1}"
;;
esac
done
} 2> /dev/null |dzen2 -ta l -y 0 -x 0 -h 16 -w 1286 -fg $FG -bg $BG -fn $FONT &
Offline
Looks very nice, tell me what benefits would i have switching from awesome?
Offline
You can read the following to understand more about HL:
http://wwwcip.cs.fau.de/~re06huxa/herbstluftwm/
https://wiki.archlinux.org/index.php/Herbstluftwm
The main difference between Awesome and HL is the way tiling of the clients is done. Awesome automatically tiles the clients depending on the layout the user wants to use (i.e. normal tiling, bottom stack, grid, etc...). In HL (Same goes for other "Manual tiling WM" such as musca/i3... Awesome/DWM are referred to as "Dynamic tiling WM"), you split the main frame into subframes, and so it's not restricted to the layout template. This means you can have arbitrary amount of rows/columns and you can group clients in each of the subframes.
There are number of other differences which are not necessarily advantage/disadvantage from other WM. You just need to try it out and see whether it fits you. I personally have used dwm for some time (dwm = barebone awesome without many of its features), but I really wanted manual tiling. I think I've tried most of the WM's listed here, and I find Herbstluft WM the best fitted for me.
Offline
autostart.sh:
#!/bin/bash
function hc() {
herbstclient "$@"
}
hc emit_hook reload
# keybindings
Mod=Mod4
hc keybind $Mod-q quit
hc keybind $Mod-Shift-r reload
hc keybind $Mod-x close
hc keybind $Mod-Return spawn urxvt
# tags
hc rename default 1 || true
for i in {1..5} ; do
hc add "$i"
hc keybind "$Mod-$i" use "$i"
hc keybind "$Mod-Shift-$i" move "$i"
done
hc keybind $Mod-Right spawn nextag
hc keybind $Mod-Left spawn prevtag
# layouting
hc keybind $Mod-r remove
hc keybind $Mod-space cycle_layout 1
hc keybind $Mod-u split vertical 0.5
hc keybind $Mod-o split horizontal 0.5
hc keybind $Mod-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-z pseudotile toggle
# mouse
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button3 resize
hc mousebind $Mod-Button2 zoom
# resizing
RESIZESTEP=0.05
hc keybind $Mod-Control-h resize left +$RESIZESTEP
hc keybind $Mod-Control-j resize down +$RESIZESTEP
hc keybind $Mod-Control-k resize up +$RESIZESTEP
hc keybind $Mod-Control-l resize right +$RESIZESTEP
# focus
hc keybind $Mod-BackSpace cycle_monitor
hc keybind $Mod-Tab cycle_all +1
hc keybind $Mod-Shift-Tab cycle_all -1
hc keybind $Mod-c cycle
hc keybind $Mod-h focus left
hc keybind $Mod-j focus down
hc keybind $Mod-k focus up
hc keybind $Mod-l focus right
hc keybind $Mod-Shift-h shift left
hc keybind $Mod-Shift-j shift down
hc keybind $Mod-Shift-k shift up
hc keybind $Mod-Shift-l shift right
# dmenu
hc keybind $Mod-p spawn dmenu_run -fn -*-termsyn-medium-*-*-*-14-*-*-*-*-*-*-* -nb rgb:00/00/00 -nf rgb:CC/CC/CC -sb rgb:CC/CC/CC -sf rgb:33/33/33
hc keybind $Mod-i spawn $HOME/src/herbstluftwm/scripts/herbstcommander.sh
# colors
hc set frame_border_active_color '#2B2B2B'
hc set frame_border_normal_color '#000000'
hc set frame_bg_normal_color '#CCCCCC'
hc set frame_bg_active_color '#BB4B61'
hc set window_border_normal_color '#000000'
hc set window_border_active_color '#BB4B61'
# settings
hc set frame_border_width 1
hc set window_border_width 1
hc set snap_distance 7
hc set snap_gap 3
hc set window_gap 0
hc set frame_bg_transparent 1
hc set focus_follows_mouse 1
hc set focus_follows_shift 1
hc set tree_style "╾ ╼"
# rules
hc unrule --all
hc rule focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
# hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
# hc rule instance='sun-awt-X11-XDialogPeer' focus=on
hc rule instance='linux_64_client' fullscreen=on
hc rule instance='Dredmor-amd64' fullscreen=on
hc rule instance='desura' pseudotile=on
hc rule instance='snes9x-gtk' fullscreen=on
# load layout Tag 1
hc load 1 "(split horizontal:0.449800:0 (split vertical:0.800000:0 (split vertical:0.600000:0 (clients vertical:0) (clients vertical:0)) (clients vertical:0)) (split vertical:0.800000:1 (clients vertical:0) (clients vertical:0)))"
# call autostart-scripts
hc spawn $HOME/.scripts/autostart-daemons.sh
hc spawn $HOME/.scripts/autostart-apps.sh
Autostart-Scripts:
#!/bin/bash
RUNS=1
spawn_at() {(
herbstclient rule once pid=$BASHPID maxage=10 index="$1"
shift
exec "$@"
) &
}
if [[ $RUNS == 0 ]]; then
spawn_at 10 urxvt
spawn_at 001 urxvt -e centerim
spawn_at 11 urxvt -e ranger
herbstclient spawn urxvt
sed -i s/^RUNS.*/RUNS=1/ $0
while [ ! $(pidof mpd)]; do
sleep 1s
done
spawn_at 01 urxvt -e ncmpcpp
fi
#!/bin/bash
RUNS=1
if [[ $RUNS == 0 ]]; then
# nitrogen --restore &
xsetroot -grey
udiskie &
hcbar &
# hctag
# dzenconky
mpd
twmnd &
# xcompmgr -c -t-5 -l-5 -r5.2 -o.55 &
sed -i s/^RUNS.*/RUNS=1/ $0
fi
hcbar & hccpu
#!/bin/bash
# Geometry
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
# Dzen stuff
FG='#E8ECF2'
C2='#6C7F96'
CSEP='#3A4B61'
CURG='#BB7F61'
CFOC='#BB4B61'
BG='black'
SEPERATOR="^fg($CSEP)^ro(1x$height)^fg()"
FONT='-*-termsyn-medium-*-*-*-14-*-*-*-*-*-*-*'
function uniq_linebuffered() {
awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
}
herbstclient pad $monitor $height
{
while true ; do
mpcshow="$(mpc status | sed -n 1p | grep '-') $(mpc status | sed -n 2p | awk {'print $3'})"
date +'date %a %d/%m/%y %T'
echo "mpc $mpcshow"
sleep 1 || break
done > >(uniq_linebuffered) &
childpid=$!
$HOME/.scripts/hccpu &
herbstclient --idle
kill $childpid
} 2> /dev/null | {
TAGS=( $(herbstclient tag_status $monitor) )
date=""
mpcshow=""
cpu=""
mem=""
while true; do
# draw tags
for i in "${TAGS[@]}" ; do
case ${i:0:1} in
'#')
echo -n "^fg($CFOC)"
;;
':')
echo -n "^fg($C2)"
;;
'!')
echo -n "^fg($CURG)"
;;
*)
echo -n "^bg()^fg()"
;;
esac
echo -n "^ca(1,herbstclient focus_monitor $monitor && "'herbstclient use "'${i:1}'") '"${i:1} ^ca()"
#echo -n "$SEPERATOR"
done
right="^bg()^fg($C2)$mpcshow^fg() $cpu ^fg($C2)|^fg() $date"
right_text_only=$(echo -n "$right"|sed 's.\^[^(]*([^)]*)..g' | sed 's/[äöüÄÖÜ]/a/')
# get width of right aligned text.. and add some space..
width=$(textwidth $FONT "$right_text_only ")
echo -n "^p(_RIGHT)^p(-$width)$right"
echo
read line || break
cmd=( $line )
case "$cmd[0]" in
date*)
#echo "reseting date" >&2
date="${cmd[@]:1}"
;;
tag*)
#echo "reseting tag" >&2
TAGS=( $(herbstclient tag_status $monitor) )
;;
mpc*)
mpcshow="${cmd[@]:1}"
;;
cpu*)
cpu="${cmd[@]:1}"
;;
quit_panel)
exit
;;
reload)
exit
;;
esac
done
} 2> /dev/null | dzen2 -ta l -y $y -x $x -w $width -fg $FG -bg $BG -fn $FONT
#!/bin/bash
{
mpstat -P 0 1 &
mpstat -P 1 1 &
} 2> /dev/null | {
cpu1=""
cpu2=""
while true; do
read line || break
cmd="( $line )"
case "${cmd[@]}" in
*' 0 '*)
cpu1=$(( 100 - $(printf "%.0f\n" $(echo "${cmd[@]}" | awk {'print $13'})) ))
;;
*' 1 '*)
cpu2=$(( 100 - $(printf "%.0f\n" $(echo "${cmd[@]}" | awk {'print $13'})) ))
;;
esac
herbstclient emit_hook "cpu 1 ${cpu1}% 2 ${cpu2}%"
sleep 1s
done
}
Last edited by Doomcide (2012-01-15 13:40:23)
Offline
You can read the following to understand more about HL:
http://wwwcip.cs.fau.de/~re06huxa/herbstluftwm/
https://wiki.archlinux.org/index.php/HerbstluftwmThe main difference between Awesome and HL is the way tiling of the clients is done. Awesome automatically tiles the clients depending on the layout the user wants to use (i.e. normal tiling, bottom stack, grid, etc...). In HL (Same goes for other "Manual tiling WM" such as musca/i3... Awesome/DWM are referred to as "Dynamic tiling WM"), you split the main frame into subframes, and so it's not restricted to the layout template. This means you can have arbitrary amount of rows/columns and you can group clients in each of the subframes.
There are number of other differences which are not necessarily advantage/disadvantage from other WM. You just need to try it out and see whether it fits you. I personally have used dwm for some time (dwm = barebone awesome without many of its features), but I really wanted manual tiling. I think I've tried most of the WM's listed here, and I find Herbstluft WM the best fitted for me.
Thanks for the clarification, will give it a try soon.
Offline
Finally, someone created this thread.
(The weird stuff in the bottom left corner is there because I have a dual-head setup where the two heads don't have an equal resolution).
My config(s):
autostart:
#!/bin/bash
# guelfi's config for herbstluftwm. enjoy.
function hc() {
herbstclient "$@"
}
# colors
hc set frame_border_active_color '#005577'
hc set frame_border_normal_color '#333333'
hc set frame_bg_transparent 1
#hc set frame_bg_normal_color '#BD9768'
#hc set frame_bg_active_color '#BD8541'
hc set frame_border_width 2
hc set window_border_width 1
hc set window_gap 2
hc set window_border_normal_color '#444444'
hc set window_border_active_color '#4466AA'
# other settings
hc set focus_follows_mouse 1
hc set snap_gap 32
hc set snap_distance 35
hc set raise_on_focus 0
#hc set default_frame_layout 1
# general keybindings
Mod=Mod4
hc keybind $Mod-Shift-q quit
hc keybind $Mod-Shift-r reload
hc keybind $Mod-Shift-c close
hc keybind $Mod-Shift-Return spawn urxvtc
hc keybind $Mod-p spawn dmenu_run -fn "-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*" \
-nb "#222222" -nf "#bbbbbb" -sb "#005577" -sf "#eeeeee" -p "Run: "
hc keybind $Mod-Shift-p spawn herbstcommander -fn "-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*" \
-nb "#222222" -nf "#bbbbbb" -sb "#005577" -sf "#eeeeee"
# layouting
hc keybind $Mod-r remove
hc keybind $Mod-space cycle_layout 1
hc keybind $Mod-u split vertical 0.5
hc keybind $Mod-o split horizontal 0.5
hc keybind $Mod-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-v pseudotile toggle
# resizing
RESIZESTEP=0.05
hc keybind $Mod-Control-h resize left +$RESIZESTEP
hc keybind $Mod-Control-j resize down +$RESIZESTEP
hc keybind $Mod-Control-k resize up +$RESIZESTEP
hc keybind $Mod-Control-l resize right +$RESIZESTEP
# mouse 1
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 zoom
hc mousebind $Mod-Button3 resize
# focus
hc keybind $Mod-BackSpace cycle_monitor
hc keybind $Mod-Tab cycle_all +1
hc keybind $Mod-Shift-Tab cycle_all -1
hc keybind $Mod-c cycle
hc keybind $Mod-h focus left
hc keybind $Mod-j focus down
hc keybind $Mod-k focus up
hc keybind $Mod-l focus right
hc keybind $Mod-Shift-h shift left
hc keybind $Mod-Shift-j shift down
hc keybind $Mod-Shift-k shift up
hc keybind $Mod-Shift-l shift right
# media keys
hc keybind XF86AudioPlay spawn mpc toggle
hc keybind XF86AudioNext spawn mpc next
hc keybind XF86AudioPrev spawn mpc prev
hc keybind XF86AudioStop spawn mpc stop
hc keybind XF86AudioRaiseVolume spawn dvol -i 3
hc keybind XF86AudioLowerVolume spawn dvol -d 3
hc keybind XF86AudioMute spawn dvol -t
# tags
TAG_NAMES=( 'terms' 'web' 'video' 'work' 'game' 'extra')
TAG_KEYS=( {1..6} )
hc rename default "${TAG_NAMES[0]}" || true
for i in ${!TAG_NAMES[@]} ; do
hc add "${TAG_NAMES[$i]}"
key="${TAG_KEYS[$i]}"
if ! [ -z "$key" ] ; then
hc keybind "$Mod-$key" use "${TAG_NAMES[$i]}"
hc keybind "$Mod-Shift-$key" move "${TAG_NAMES[$i]}"
fi
done
# monitors
hc move_monitor 0 1280x1024-0+0 0 0 0 terms
hc remove_monitor 1
hc add_monitor 1920x1080+1280+0 web
hc keybind $Mod-w focus_monitor 0
hc keybind $Mod-e focus_monitor 1
hc pad 1 0 0 37 0
hc pad 0 20
# rules regarding every layout
hc unrule -F
hc rule focus=on
#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK)' manage=off
# layouts
# these scripts also contain the rules that apply to this layout
source ~/.config/herbstluftwm/layouts/terms
source ~/.config/herbstluftwm/layouts/web
hc rule class="MPlayer" tag=video
hc rule class="net-minecraft-MinecraftLauncher" tag=game
# applications
hc emit_hook quit_panel ; ~/.config/herbstluftwm/panel.sh &
pgrep conky >/dev/null || conky -d
#pgrep tint2 >/dev/null || tint2 &
#pgrep xfce4-panel >/dev/null || xfce4-panel --disable-wm-check --sm-client-disable
pgrep trayer >/dev/null || trayer --edge top --align left \
--widthtype pixel --width 1280 --height 10 \
--transparent true --distance 4 --alpha 200 --tint 0x333333
panel.sh:
#!/bin/bash
monitor=1
monitor2=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="-*-terminus-medium-*-*-*-12-*-*-*-*-*-*-*"
bgcolor='#1c1c1c'
function uniq_linebuffered() {
awk '$0 != l { print ; l=$0 ; fflush(); }' "$@"
}
herbstclient pad $monitor $height
{
# events:
while true ; do
if ! mpc status >/dev/null; then
sleep 5
else
echo "player $(mpc current)"
mpc idleloop player
fi
done &
while true ; do
date +'date ^fg(#efefef)%H:%M^fg(#cccccc), %Y-%m-^fg(#efefef)%d'
sleep 1 || break
done > >(uniq_linebuffered) &
childpid=$!
herbstclient --idle
kill $childpid
} 2> /dev/null | {
TAGS=( $(herbstclient tag_status $monitor) )
date=""
windowname=$(xdotool getactivewindow -- getwindowname)
while true ; do
bordercolor="#26221C"
hintcolor="#427bb2"
separator="^fg(#333333)^ro(1x$height)^fg()"
# draw tags
for i in "${TAGS[@]}" ; do
case ${i:0:1} in
'#')
echo -n "^bg(#427bb2)^fg(#cccccc)"
;;
'+')
echo -n "^bg(#ededed)^fg(#333333)"
;;
':')
if echo ${TAGS[@]} | grep "+" >/dev/null ; then
# monitor 2 is focused
if herbstclient tag_status $monitor2 | grep "#${i:1}" >/dev/null ; then
echo -n "^bg(#427bb2)^fg(#cccccc)"
else
echo -n "^bg(#cccccc)^fg(#1c1c1c)"
fi
else
# monitor 1 is focused
if herbstclient tag_status $monitor2 | grep "+${i:1}" >/dev/null ; then
echo -n "^bg(#ededed)^fg(#333333)"
else
echo -n "^bg(#cccccc)^fg(#1c1c1c)"
fi
fi
;;
'!')
echo -n "^bg(#ff0675)^fg(#222222)"
;;
*)
echo -n "^bg()^fg()"
;;
esac
case ${i:1} in
'terms')
icon="^i(/usr/share/icons/Faenza/apps/16/terminal.xpm)"
;;
'web')
icon="^i(/home/guelfi/.icons/internet.xpm)"
;;
'video')
icon="^i(/home/guelfi/.icons/mplayer.xpm)"
;;
'work')
icon="^i(/home/guelfi/.icons/vim.xpm)"
;;
'game')
icon="^i(/home/guelfi/.icons/games.xpm)"
;;
'extra')
icon="^i(/home/guelfi/.icons/extra.xpm)"
;;
esac
echo -n "^ca(1,herbstclient focus_monitor $monitor && "'herbstclient use "'${i:1}'") '"$icon ^ca()"
echo -n "$separator"
done
echo -n "^fg()^bg() $windowname $seperator"
center_text_only=$(echo -n "$song"| sed 's.\^[^(]*([^)]*)..g')
center_width=$(textwidth "$font" "$center_text_only")
echo -n "^bg()^p(_CENTER)^p(-$(( center_width / 2)))$song"
# small adjustments
right="$separator^bg($hintcolor) $date^bg()"
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}"
;;
focus_changed)
windowname=$(xdotool getwindowname ${cmd[1]})
;;
quit_panel)
exit
;;
player)
song=$(mpc current)
;;
esac
done
} | dzen2 -w $width -x $x -y $y -fn "$font" -h $height \
-ta l -bg "$bgcolor" -fg '#efefef'
layouts/terms:
#!/bin/bash
function hc() {
herbstclient "$@"
}
Mod=Mod4
if ! hc tag_status | grep "terms" >/dev/null || [[ $1 = -f ]] ; then
TAGS=$(hc tag_status | wc -w)
hc add "terms"
if [[ $TAGS -ge 9 ]] ; then
echo "$0: too many tags; will not get a keybinding" >&2
else
hc keybind "$Mod-$(( TAGS + 1 ))" use "terms"
hc keybind "$Mod-Shift-$(( TAGS + 1 ))" move "terms"
fi
fi
# layout
hc load terms '
(split horizontal:0.450000:1
(split vertical:0.500000:0
(split vertical:0.500000:1
(clients vertical:0 )
(clients vertical:0 ))
(clients horizontal:0 ))
(split vertical:0.550000:0
(clients vertical:0 )
(clients vertical:0 )))'
# rules
hc rule instance="newsbeuter" tag=terms index=000
hc rule instance="mutt" tag=terms index=001
hc rule instance="irssi" tag=terms index=10
hc rule instance="ncmpcpp" tag=terms index=01
hc rule instance="wyrd" tag=terms index=11
# autostart applications
pgrep newsbeuter >/dev/null || urxvtc -name newsbeuter -e newsbeuter &
pgrep mutt >/dev/null || urxvtc -name mutt -e mutt &
pgrep ncmpcpp >/dev/null || urxvtc -name ncmpcpp -e ncmpcpp &
screen -ls | grep "irssi[[:space:]]*(Attached)" >/dev/null || urxvtc -name irssi -e screen -S irssi -xR irssi &
pgrep wyrd >/dev/null || urxvtc -name wyrd -e wyrd &
layouts/web:
#!/bin/bash
function hc() {
herbstclient "$@"
}
Mod=Mod4
if ! hc tag_status | grep "web" >/dev/null ; then
TAGS=$(hc tag_status | wc -w)
hc add "web"
if [[ $TAGS -ge 9 ]] ; then
echo "$0: too many tags; will not get a keybinding" >&2
else
hc keybind "$Mod-$(( TAGS + 1 ))" use "web"
hc keybind "$Mod-Shift-$(( TAGS + 1 ))" move "web"
fi
fi
# layout
hc load web '
(split horizontal:0.650000:1
(clients vertical:0)
(clients vertical:0))'
# rules
hc rule class="dwb" tag=web index=0
# applications
pgrep dwb >/dev/null || dwb &
layouts/gimp:
#!/bin/bash
function hc() {
herbstclient "$@"
}
Mod=Mod4
if ! hc tag_status | grep "gimp" >/dev/null ; then
TAGS=$(hc tag_status | wc -w)
hc add "gimp"
if [[ $TAGS -ge 9 ]] ; then
echo "$0: too many tags; will not get a keybinding" >&2
else
hc keybind "$Mod-$(( TAGS + 1 ))" use "gimp"
hc keybind "$Mod-Shift-$(( TAGS + 1 ))" move "gimp"
echo "$0: added tag \"gimp\" with $Mod-(Shift)-$(( TAGS + 1 ))" >&2
fi
fi
# gimp layout
hc add gimp
hc load gimp '
(split horizontal:0.850000:0
(split horizontal:0.200000:1
(clients vertical:0)
(clients grid:0))
(clients vertical:0))
' # load predefined layout
# center all other gimp windows on gimp tag
hc rule class=Gimp tag=gimp index=01 pseudotile=on
hc rule class=Gimp windowrole~'gimp-(image-window|toolbox|dock)' \
pseudotile=off
hc rule class=Gimp windowrole=gimp-toolbox focus=off index=00
hc rule class=Gimp windowrole=gimp-dock focus=off index=1
hc rule class=Gimp windowrole=gimp-text-editor focus=off index=00
Offline
Why did this thread die out? Anyway, has played around some with hlwm, or mostly trying to get used to a tiling wm for the first time
I am pretty satisfied of how it looks and works right now, though I may switch to a better background image or change the text color to not white^^
Next thing to ad is probably a panel on the top, but that will have to wait. Should also probably clean autostart somewhat, there is some things I don't use anymore..
#!/bin/bash
function hc() {
herbstclient "$@"
}
hc emit_hook reload
# remove all existing keybindings
hc keyunbind --all
# keybindings (Mod1 = Alt)
Mod=Mod1
hc keybind $Mod-Shift-q quit
#hc keybind $Mod-Shift-n bash -c 'herbstclient load "$(< ~/foo)"'
hc keybind $Mod-Shift-r reload
hc keybind $Mod-Shift-c close
hc keybind $Mod-Return spawn urxvt -tr -sh 85 -fg rgb:bb/bb/bb
hc keybind $Mod-Shift-o spawn opera
hc keybind $Mod-Shift-s spawn spotify
hc keybind $Mod-Shift-e spawn eric
hc keybind $Mod-r remove
hc keybind $Mod-space cycle_layout 1
hc keybind $Mod-y split vertical 0.5
hc keybind $Mod-x split horizontal 0.5
hc keybind $Mod-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-p pseudotile toggle
RESIZESTEP=0.05
hc keybind $Mod-Control-w resize up +$RESIZESTEP
hc keybind $Mod-Control-a resize left +$RESIZESTEP
hc keybind $Mod-Control-s resize down +$RESIZESTEP
hc keybind $Mod-Control-d resize right +$RESIZESTEP
# tags
TAG_NAMES=( {1..9} )
TAG_KEYS=( {1..9} 0 )
hc rename default "${TAG_NAMES[0]}" || true
for i in ${!TAG_NAMES[@]} ; do
hc add "${TAG_NAMES[$i]}"
key="${TAG_KEYS[$i]}"
if ! [ -z "$key" ] ; then
hc keybind "$Mod-$key" use "${TAG_NAMES[$i]}"
hc keybind "$Mod-Shift-$key" move "${TAG_NAMES[$i]}"
fi
done
# focus
hc keybind $Mod-BackSpace cycle_monitor
hc keybind $Mod-w focus up
hc keybind $Mod-a focus left
hc keybind $Mod-s focus down
hc keybind $Mod-d focus right
#hc keybind $Mod-Shift-h shift left
#hc keybind $Mod-Shift-j shift down
#hc keybind $Mod-Shift-k shift up
#hc keybind $Mod-Shift-l shift right
#hc keybind $Mod-Shift-Tab cycle_all -1
#hc keybind $Mod-Tab cycle_all +1
#hc keybind $Mod-c cycle
# monitor thingy
hc remove monitor 1
hc move_monitor 0 1280x800+0+0
hc add_monitor 1024x1280+1280+0
# colors
hc set frame_border_active_color '#005577'
hc set frame_border_normal_color '#333333'
#hc set frame_bg_normal_color '#BD9768'
#hc set frame_bg_active_color '#BD8541'
hc set frame_border_width 2
hc set window_border_width 2
hc set window_border_normal_color '#444444'
hc set window_border_active_color '#444444'
#xsetroot -solid '#000000'
feh --bg-fill ~/bilder/rodaTrad.jpg
# rules
hc unrule -F
#hc rule class=XTerm tag=3 # move all xterms to tag 3
hc rule focus=off # normally do not focus new clients
# give focus to most common terminals
hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK)' manage=off
# mouse
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 resize
hc mousebind $Mod-Button3 zoom
Here is how I managed my dual monitor setup if anyone wants to now. Big thanks to the guys in #herbstluftwm who help me out with this!
xrandr --output LVDS --mode 1280x800 --output VGA-0 --rotate left --mode 1280x1024 --rate 60.0 --right-of LVDS
Offline
I'm a stumpwm user, and I really like it, except it crashes every time I start gimp, and some other programs. Does anyone have a stump-like key-binding setup for herbstluft?
@kcirick
I like your color scheme. Care to share your .Xdefaults/.Xresources?
Offline
I'm a stumpwm user, and I really like it, except it crashes every time I start gimp, and some other programs.
Can you paste the herbstluftwm output when starting gimp? E.g. put this in your .xinitrc:
exec herbstluftwm &> ~/log
Does anyone have a stump-like key-binding setup for herbstluft?
If you want to use key chains, you have to use external tools like xchainkeys
Offline
@thorsten What I meant was that I like stumpwm except it crashes (not herbstluf), which is why I'm thinking of giving herbstluft a try.thorsten
Offline
@kcirick
I like your color scheme. Care to share your .Xdefaults/.Xresources?
Thanks! I don't use that colourscheme anymore (I change it every so often), but in the previous post, this is what I had:
! black
*color0:#555753
*color8:#202020
! red
*color1:#CC0000
*color9:#EF2929
! green
*color2:#6AAD2B
*color10:#ABFD5B
! yellow
*color3:#C4A000
*color11:#FCE94F
! blue
*color4:#3465A4
*color12:#1793D0
! magenta
*color5:#948696
*color13:#BCACBB
! cyan
*color6:#06989A
*color14:#34E2E2
! white
*color7:#EEEEEE
*color15:#FFFFFF
Offline
(cross post from April SS thread) My new SS. I've hacked and customized herbstluft to the way I like it (+new bugs), so I can't really post the autostart script (I don't have one anymore). but the overall look and feel is stock herbstluft, so ...
Offline
@kcirick
Nice screenshot. I wonder how unusual it is not to use dmenu as application launcher. Especially among tiling WM community.
Thanks for the color scheme BTW, using it now.
Offline
I slowly drifted from Openbox to herbstluftwm.
# mod edit: images removed because they were hosted on a site reported as a malware vector
Last edited by jasonwryan (2013-07-22 18:04:56)
Offline
Is it wrong to bump this thread?
Oh well...
A super simple setup with just 5 colors for everything and no borders or padding on anything. "Derpity" GTK theme with matched colors and dmenu_run for launching.
in ~/.gtk-3.0/settings.ini
gtk-color-scheme="tooltip_fg_color:#d4d4d4\nbase_color:#323232\nselected_fg_color:#d4d4d4\ntext_color:#d4d4d4\nbg_color_dark:#383838\nbg_color:#191919\ntooltip_bg_color:#323232\nselected_bg_color:#646464\nfg_color:#d4d4d4\n"
in ~/.xbindkeysrc
#dmenu
"dmenu_run -i -fn '-*-Clean-*-*-*-*-12-*-*-*-*-*-*-*' -nb '#191919' -nf '#d4d4d4' -sb '#191919' -sf '#00c000'"
m:0x40 + c:135
Mod4 + Menu
Clean:
http://i1060.photobucket.com/albums/t45 … fa06b7.png
Dirty:
http://i1060.photobucket.com/albums/t45 … 7f3c49.png
autostart: http://pastebin.com/qcFBzN2b
panel.sh: http://pastebin.com/EycJBa6a
moderator edit: The images are too large. Please read Forum Etiquette: Pasting Pictures and Code and screenshot posting rules. Thanks. --fsckd
Last edited by fsckd (2012-08-17 14:45:54)
Offline
Yay for the bump!
Mine: (click for a bigger image)
http://the-compiler.org/img/screenshots … _06_25.png
Panel selfmade (mixture of conky, dzen2 and trayer), wallpaper selfmade. Configs upon request since there are quite a few of them and I'm a lazy bum.
moderator edit: The image is still too large. I have replaced it with a link for you this time. Please read Forum Etiquette: Pasting Pictures and Code and screenshot posting rules. Thanks. --fsckd
Last edited by fsckd (2012-08-17 14:48:23)
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
Offline
I like the font.
Could you share its name ?
Thanks.
Offline
I like the font.
Could you share its name ?
It's Proggy Tiny (or proggyfonts in AUR)
>>> from __future__ import braces
File "<stdin>", line 1
SyntaxError: not a chance
Offline
thanks.
You make my Friday.
Offline
slightly tweaked http://ompldr.org/vZml3NQ
Last edited by simon.swe (2012-09-17 13:00:00)
Offline
slightly tweaked http://ompldr.org/vZml3NQ
You're Swedish but read Dutch subtitles?
If you can't sit by a cozy fire with your code in hand enjoying its simplicity and clarity, it needs more work. --Carlos Torres
Offline
Nice bar.
Offline
simon.swe wrote:slightly tweaked http://ompldr.org/vZml3NQ
You're Swedish but read Dutch subtitles?
swedish subtitles are just luxury
Offline
Unia wrote:simon.swe wrote:slightly tweaked http://ompldr.org/vZml3NQ
You're Swedish but read Dutch subtitles?
swedish subtitles are just luxury
Knulla i röven
Offline
simon.swe wrote:Unia wrote:You're Swedish but read Dutch subtitles?
swedish subtitles are just luxury
Knulla i röven
Böga i skitan.
Offline