#!/bin/bash # define colours bg_normal='#2d2d2d' fg_normal='#dcdcdc' bg_focus='#d64937' fg_focus='#fcfcfc' hc() { herbstclient "$@" } # always start frames max (pt. 1) hc set default_frame_layout 2 hc emit_hook reload xsetroot -solid '#5A8E3A' # remove all existing keybindings hc keyunbind --all # keybindings # if you have a super key you will be much happier with Mod set to Mod4 #Mod=Mod1 # Use alt as the main modifier Mod=Mod4 # Use the super key as the main modifier hc keybind $Mod-Shift-r reload hc keybind $Mod-e close_or_remove # basic movement # focusing clients hc keybind $Mod-h focus left hc keybind $Mod-j focus down hc keybind $Mod-k focus up hc keybind $Mod-l focus right # moving clients 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 # cycle through clients hc keybind $Mod-d cycle 1 hc keybind $Mod-a cycle -1 # splitting frames # create an empty frame at the specified direction hc keybind $Mod-s chain .-. lock .-. split bottom 0.5 .-. focus -e d .-. unlock hc keybind $Mod-v chain .-. lock .-. split right 0.5 .-. focus -e r .-. unlock # create an empty frame and shift the currently focused client into it hc keybind $Mod-Control-s chain .-. lock .-. split bottom 0.5 .-. shift down .-. unlock hc keybind $Mod-Control-v chain .-. lock .-. split right 0.5 .-. shift right .-. unlock # let the current frame explode into subframes hc keybind $Mod-Shift-space split explode # resizing frames resizestep=0.04 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 # tags tag_names=( {1..5} ) tag_keys=( {1..5} 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_index "$i" hc keybind "$Mod-Control-$key" move_index "$i" fi done # always start frames max (pt. 2) hc set_layout max # cycle through tags hc keybind $Mod-period use_index +1 --skip-visible hc keybind $Mod-comma use_index -1 --skip-visible # layouting hc keybind $Mod-f fullscreen toggle hc keybind $Mod-p pseudotile toggle # mouse hc mouseunbind --all 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-i jumpto urgent ################ launchers ################ # mate hc keybind XF86PowerOff spawn mate-session-save --shutdown-dialog hc keybind Print spawn mate-screenshot # ranger hc keybind $Mod-Shift-Control-Return spawn urxvt -name "ranger" -e ranger /home/shmibs hc keybind $Mod-Shift-Control-b spawn urxvt -name "ranger" -e ranger /home/shmibs/backdrops hc keybind $Mod-Shift-Control-c spawn urxvt -name "ranger" -e ranger /home/shmibs/comics hc keybind $Mod-Shift-Control-d spawn urxvt -name "ranger" -e ranger /home/shmibs/downloads hc keybind $Mod-Shift-Control-s spawn urxvt -name "ranger" -e ranger /home/shmibs/desktop hc keybind $Mod-Shift-Control-m spawn urxvt -name "ranger" -e ranger /home/shmibs/music hc keybind $Mod-Shift-Control-g spawn urxvt -name "ranger" -e ranger /home/shmibs/games hc keybind $Mod-Shift-Control-p spawn urxvt -name "ranger" -e ranger /home/shmibs/projects hc keybind $Mod-Shift-Control-i spawn urxvt -name "ranger" -e ranger /home/shmibs/images hc keybind $Mod-Shift-Control-t spawn urxvt -name "ranger" -e ranger /home/shmibs/thcool hc keybind $Mod-Shift-Control-v spawn urxvt -name "ranger" -e ranger /home/shmibs/videos # spawn hc keybind $Mod-Return spawn urxvt hc keybind $Mod-Shift-c spawn mate-calc hc keybind $Mod-Shift-d spawn ~/games/desura/desura hc keybind $Mod-Shift-f spawn firefox hc keybind $Mod-Shift-i spawn gimp hc keybind $Mod-Shift-m spawn mathematica hc keybind $Mod-Shift-o spawn ~/stuffs/tor/start-tor-browser hc keybind $Mod-Shift-t spawn transmission-gtk hc keybind $Mod-Shift-v spawn urxvt -name "vim" -e vim hc keybind $Mod-Shift-w spawn urxvt -name "weechat" -e weechat # banshee hc keybind $Mod-Shift-Up spawn banshee --show hc keybind $Mod-Shift-Down spawn banshee --hide hc keybind $Mod-Left spawn banshee --restart-or-previous hc keybind $Mod-Right spawn banshee --next hc keybind $Mod-Down spawn banshee --toggle-playing # dmenu hc keybind $Mod-0 spawn dmenu_run -h 18 -nb $bg_normal -nf $fg_normal -sb $bg_focus -sf $fg_focus ############## end launchers ############## # borders hc set frame_border_normal_color $bg_normal hc set frame_border_active_color $bg_focus hc set frame_bg_normal_color $bg_normal hc set frame_bg_active_color $bg_focus hc set window_border_normal_color $bg_normal hc set window_border_active_color $bg_focus hc set frame_border_width 2 hc set frame_border_inner_width 0 hc set window_border_width 2 hc set window_border_inner_width 0 hc set always_show_frame 0 hc set frame_bg_transparent 1 hc set frame_normal_opacity 100 hc set frame_active_opacity 100 hc set frame_transparent_width 0 hc set frame_gap 0 hc set frame_padding 0 hc set smart_frame_surroundings 1 hc set smart_window_surroundings 1 # rules hc unrule -F hc rule focus=on # unmanage docs, dropdowns, etc hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK)' manage=off # set apppropriate things to pseudotile hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' pseudotile=on hc rule class~'(Mate-calc|Pcsx2)' pseudotile=on # unlock, just to be sure hc unlock herbstclient set tree_style '╾│ ├└╼─┐' # do multi monitor setup here, e.g.: # hc set_monitors 1280x1024+0+0 1280x1024+1280+0 # or simply: # hc detect_monitors # find the panel panel=~/.config/herbstluftwm/panel.sh [ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh for monitor in $(herbstclient list_monitors | cut -d: -f1) ; do # start it on each monitor "$panel" $monitor & done # add a tray tray=~/.config/herbstluftwm/tray.sh if [ -x "$tray" ]; then "$tray" fi