herbstluftwm/autostart

295 lines
9.7 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'
# load fonts
xset +fp ~/.fonts
xset +fp /usr/share/fonts
xset fp rehash
TERMINAL=terminator
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 3; xset dpms force off' # turn off the screens
hc keybind $Mod-Shift-x spawn ~/bin/veille.sh # screen locker
hc keybind $h-F1 spawn ~/bin/ecran off # Keep only the main screen outpu
hc keybind $h-F2 spawn ~/bin/ecran leftof # Set second output left of the main screen
hc keybind $h-F3 spawn ~/bin/ecran rightof # Set second output right of the main screen
hc keybind $h-F4 spawn ~/bin/ecran laptop_off # Disable laptop screen
hc keybind $h-F5 spawn ~/bin/ecran out # External display only (videos, games,…)
hc keybind $h-F6 spawn ~/bin/ecran above # Set second output above of the main screen
hc keybind $Mod-agrave spawn ~/bin/rofi-pass # Password manager
# 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=("  " " web " " msg " " oth " " art " " 6 " " 7 " " 8 ")
#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-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)' pseudotile=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
## Move splash windows to tag " 7 "
hc rule windowtype~'_NET_WM_WINDOW_TYPE_SPLASH' pseudotile=on tag=" 7 "
# tag: web
hc rule class=Firefox tag=" web "
hc rule class=qutebrowser tag=" web "
hc rule class=Midori tag=" oth "
# tag: msg
#hc load " msg " '
#(split vertical:0.960000:0
#(clients vertical:0)
#(clients vertical:0)))
#'
hc rule class~'.hunderbird' tag=" msg " focus=on
hc rule class~'.hunderbird' windowrole=Msgcompose focus=on
# OpenPGP passphrase
hc rule class=Gcr-prompter tag=" msg " focus=on
hc rule class~'.hunderbird' windowrole=AlarmWindow tag=" msg " focus=off
hc rule class~'.ocket..hat.*' tag=" msg " focus=on
hc rule class~'.ignal' tag=" msg " focus=on
# 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 pseudotile=off
hc rule class=Mumble tag=" oth " index=00 focus=off pseudotile=off
hc rule class=Rhythmbox tag=" oth " index=10 focus=on
hc rule class=ownCloud tag=" oth " index=10 focus=on
hc rule class~'.extcloud' tag=" oth " index=10 focus=on
hc rule class=Vlc tag=" oth " index=11 focus=on
# art (for GIMP)
## Now works in single window
# center all other gimp windows on gimp tag
hc rule class=Gimp tag=" art " pseudotile=on
hc rule class=Gimp windowrole~'gimp-(image-window|toolbox|dock)' \
pseudotile=off
hc rule class=Kodi tag=" art " focus=on
# tag: 6
## Steam
hc rule class=Steam tag=" 6 "
hc rule title=Steam tag=" 6 "
# 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