herbstluftwm/autostart
2016-12-13 22:25:16 +01:00

285 lines
9.0 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env bash
source ~/.config/herbstluftwm/common_config
#source /home/jegardai/.config/herbstluftwm/common_config
hc() {
herbstclient "$@"
}
hc emit_hook reload
xsetroot -solid '#5A8E3A'
TERMINAL=terminator
if [ $(command -v keepass2) ] && [ ! $(pidof cli) ] ; then
keepass2 &
fi
if [ $(command -v terminator) ] && [ ! $(pidof -x terminator) ] ; then
terminator &
fi
if [ $(command -v qutebrowser) ] && [ ! $(pidof -x qutebrowser) ] ; then
qutebrowser &
fi
###################
### Keybindings ###
###################
# remove all existing keybindings
hc keyunbind --all
# change var
# Mod1: Alt_L
# Mod4: Super_L
Mod=Mod1
s=Shift
c=Control
a=Mod1
h=Mod4
# hl management
hc keybind $Mod-Shift-q quit
hc keybind $h-r reload
hc keybind $Mod-Shift-y spawn zsh -c 'sleep 1; xset dpms force off' # turn off the screen
hc keybind $Mod-Shift-x spawn ~/bin/veille.sh # screen locker
hc keybind $h-F1 spawn ~/bin/ecran off # switch between
hc keybind $h-F2 spawn ~/bin/ecran work # different
hc keybind $h-F3 spawn ~/bin/ecran lug # monitor
hc keybind $h-F4 spawn ~/bin/ecran vga # configurations
# window management
hc keybind $Mod-x close
# basic movement
# focusing frame
hc keybind $h-Left or , focus left , focus_edge right
hc keybind $h-Down or , focus down , focus_edge up
hc keybind $h-Up or , focus up , focus_edge down
hc keybind $h-Right or , focus right , focus_edge left
hc keybind $Mod-c or , focus left , focus_edge right
hc keybind $Mod-t or , focus down , focus_edge up
hc keybind $Mod-s or , focus up , focus_edge down
hc keybind $Mod-r or , focus right , focus_edge left
# moving clients
hc keybind $h-Shift-Left or , shift left , shift_edge right
hc keybind $h-Shift-Down or , shift down , shift_edge up
hc keybind $h-Shift-Up or , shift up , shift_edge down
hc keybind $h-Shift-Right or , shift right , shift_edge left
hc keybind $Mod-Shift-c or , shift left , shift_edge right
hc keybind $Mod-Shift-t or , shift down , shift_edge up
hc keybind $Mod-Shift-s or , shift up , shift_edge down
hc keybind $Mod-Shift-r or , shift right , shift_edge left
# splitting frames
# create an empty frame at the specified direction
hc keybind $Mod-space and , split bottom 0.5 , focus down
hc keybind $Mod-Shift-space and , split top 0.5 , focus up
hc keybind $Mod-Return and , split right 0.5 , focus right
hc keybind $Mod-Shift-Return and , split left 0.5 , focus left
# let the current frame explode into subframes
hc keybind $Mod-Control-space split explode
# resizing frames
resizestep=0.05
hc keybind $Mod-Control-c resize left +$resizestep
hc keybind $Mod-Control-t resize down +$resizestep
hc keybind $Mod-Control-s resize up +$resizestep
hc keybind $Mod-Control-r resize right +$resizestep
hc keybind $h-Control-Left resize left +$resizestep
hc keybind $h-Control-Down resize down +$resizestep
hc keybind $h-Control-Up resize up +$resizestep
hc keybind $h-Control-Right resize right +$resizestep
# tags
#tag_names=( {1..9} )
#tag_keys=( {1..9} 0 )
tag_names=(term web msg oth art 6 7 8 )
tag_keys=(a u i e b eacute p o)
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-Shift-$key" move_index "$i"
fi
done
# cycle through tags
hc keybind $Mod-comma use_index +1 --skip-visible
hc keybind $Mod-k use_index -1 --skip-visible
hc keybind $Mod-Right use_index +1 --skip-visible
hc keybind $Mod-Left use_index -1 --skip-visible
hc keybind $Mod-apostrophe use_previous
# layouting
hc keybind $Mod-d remove
hc keybind $Mod-Shift-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-Shift-p pseudotile toggle
# The following cycles through the available layouts within a frame, but skips
# layouts, if the layout change wouldn't affect the actual window positions.
# I.e. if there are two windows within a frame, the grid layout is skipped.
hc keybind $Mod-period \
or , and . compare tags.focus.curframe_wcount = 2 \
. cycle_layout +1 vertical horizontal max vertical grid \
, cycle_layout +1
# mouse
hc mouseunbind --all
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 zoom
hc mousebind $Mod-Button3 resize
# focus
hc keybind $h-Tab cycle_monitor
hc keybind $Mod-Tab cycle_all +1
hc keybind $Mod-Shift-Tab cycle_all -1
hc keybind $Mod-agrave cycle
hc keybind $Mod-Shift-i jumpto urgent
# apps
hc keybind $Mod-BackSpace spawn ${TERMINAL:-xterm} # use your $TERMINAL with xterm as fallback
hc keybind $Mod-dead_circumflex spawn ~/.dmenu
hc keybind XF86HomePage spawn firefox
hc keybind $Mod-q spawn qutebrowser
hc keybind XF86Mail spawn icedove
hc keybind XF86Calculator spawn gnome-calculator
hc keybind Print spawn ~/bin/printscreen
hc keybind $Mod-XF86AudioPlay spawn rhythmbox
hc keybind $Mod-v spawn vlc
hc keybind $Mod-Escape spawn ~/bin/bepo_azerty.sh
# sound
hc keybind XF86AudioRaiseVolume spawn amixer -q -c 0 set Master 2+ unmute
hc keybind XF86AudioLowerVolume spawn amixer -q -c 0 set Master 2- unmute
hc keybind XF86AudioMute spawn amixer -q set Master toggle
# brightness
hc keybind XF86MonBrightnessUp spawn xbacklight +10
hc keybind XF86MonBrightnessDown spawn xbacklight -10
###################
### theme ###
###################
hc attr theme.tiling.reset 1
hc attr theme.floating.reset 1
#hc set frame_border_active_color '#222222'
hc set frame_border_active_color ${darkgrey}
#hc set frame_border_normal_color '#101010'
hc set frame_border_normal_color ${lightblack}
hc set frame_bg_normal_color ${darkgrey}
#hc set frame_bg_active_color '#345F0C'
hc set frame_bg_active_color ${debianred}
hc set frame_border_width 1
hc set always_show_frame 1
#hc set frame_bg_transparent 1
hc set frame_bg_transparent 0
hc set frame_transparent_width 5
hc set frame_gap 4
hc set window_border_normal_color ${darkgrey}
hc set window_border_active_color ${debianred}
hc attr theme.active.color ${debianred}
hc attr theme.normal.color ${grey}
hc attr theme.urgent.color orange
hc attr theme.inner_width 1
hc attr theme.inner_color ${grey}
hc attr theme.border_width 3
hc attr theme.floating.border_width 4
hc attr theme.floating.outer_width 1
hc attr theme.floating.outer_color black
hc attr theme.active.inner_color ${debianred}
hc attr theme.active.outer_color ${debianred}
hc attr theme.background_color ${debianred}
hc set window_gap 0
hc set frame_padding 0
hc set smart_window_surroundings 0
hc set smart_frame_surroundings 1
hc set mouse_recenter_gap 0
###################
### Rules ###
###################
hc unrule -F
hc rule focus=on # normally 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|DESKTOP)' manage=off
# tag: web
hc rule class=Firefox tag=web
hc rule class=qutebrowser tag=web
hc rule class=Midori tag=oth
# msg
hc load msg '
(split vertical:0.960000:0
(clients vertical:0)
(clients vertical:0)))
'
hc rule class=Icedove tag=msg focus=on index=01
hc rule class=Icedove windowrole=Msgcompose focus=on index=01
# OpenPGP passphrase
hc rule class=Gcr-prompter tag=msg focus=on index=10
hc rule class=Icedove windowrole=AlarmWindow tag=msg focus=off index=10
# oth
hc load oth '
(split horizontal:0.450000:0
(clients vertical:0)
(split vertical:0.550000:1
(clients vertical:0)
(clients vertical:0)))
'
hc rule class~'.ibre.ffice.*' tag=oth index=00 focus=off
hc rule class=Rhythmbox tag=oth index=10 focus=on
hc rule class=Vlc tag=oth index=11 focus=on
# art (for GIMP)
hc load art '
(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=art 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
# tag: 8
hc rule class=KeePass2 tag=8
# 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