herbstluftwm/autostart

298 lines
9.8 KiB
Plaintext
Raw Normal View History

2016-10-13 19:07:18 +02:00
#!/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'
2019-01-18 16:16:08 +01:00
# load fonts
xset +fp ~/.fonts
xset +fp /usr/share/fonts
xset fp rehash
2016-10-13 19:07:18 +02:00
TERMINAL=terminator
if [ $(command -v terminator) ] && [ ! $(pidof -x terminator) ] ; then
terminator &
fi
if [ $(command -v qutebrowser) ] && [ ! $(pidof -x qutebrowser) ] ; then
qutebrowser &
fi
2016-10-13 19:07:18 +02:00
###################
### 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
2020-08-21 21:33:08 +02:00
hc keybind $Mod-Shift-y spawn zsh -c 'sleep 3; xset dpms force off' # turn off the screens
2016-10-13 19:07:18 +02:00
hc keybind $Mod-Shift-x spawn ~/bin/veille.sh # screen locker
2020-10-23 11:10:18 +02:00
hc keybind $h-F1 spawn ~/bin/ecran primary # Keep only the main screen output
2020-08-21 21:33:08 +02:00
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
2020-10-23 11:10:18 +02:00
hc keybind $h-F4 spawn ~/bin/ecran primary_off # Disable primary screen
hc keybind $h-F5 spawn ~/bin/ecran second # External display only (videos, games,…)
2020-08-21 21:33:08 +02:00
hc keybind $h-F6 spawn ~/bin/ecran above # Set second output above of the main screen
2017-04-06 07:34:48 +02:00
hc keybind $Mod-agrave spawn ~/bin/rofi-pass # Password manager
2016-10-13 19:07:18 +02:00
# 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 )
2019-01-18 16:16:08 +01:00
tag_names=("  " " web " " msg " " oth " " art " " 6 " " 7 " " 8 ")
#tag_names=(term web msg oth art 6 7 8 )
2016-10-13 19:07:18 +02:00
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
2017-01-11 09:22:43 +01:00
hc keybind XF86Mail spawn icedove
2016-10-13 19:07:18 +02:00
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
## Qutebrowser content parser
hc keybind $Mod-q spawn qb
## Taskwarrior launcher
hc keybind $Mod-w spawn rofi-task.sh
2016-10-13 19:07:18 +02:00
# 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
2019-12-18 17:14:10 +01:00
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY)' pseudotile=on
2016-10-13 19:07:18 +02:00
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
2019-12-18 17:14:10 +01:00
## Move splash windows to tag " 7 "
hc rule windowtype~'_NET_WM_WINDOW_TYPE_SPLASH' pseudotile=on tag=" 7 "
2016-10-13 19:07:18 +02:00
# tag: web
2019-01-18 16:16:08 +01:00
hc rule class=Firefox tag=" web "
hc rule class=qutebrowser tag=" web "
hc rule class=Midori tag=" oth "
2016-10-13 19:07:18 +02:00
2018-02-15 16:41:53 +01:00
# tag: msg
2019-10-23 08:21:55 +02:00
#hc load " msg " '
#(split vertical:0.960000:0
#(clients vertical:0)
#(clients vertical:0)))
#'
2019-11-12 10:18:07 +01:00
hc rule class~'.hunderbird' tag=" msg " focus=on
hc rule class~'.hunderbird' windowrole=Msgcompose focus=on
2016-10-13 19:07:18 +02:00
# OpenPGP passphrase
2019-10-23 08:21:55 +02:00
hc rule class=Gcr-prompter tag=" msg " focus=on
2019-11-12 10:18:07 +01:00
hc rule class~'.hunderbird' windowrole=AlarmWindow tag=" msg " focus=off
2016-10-13 19:07:18 +02:00
2019-10-23 08:21:55 +02:00
hc rule class~'.ocket..hat.*' tag=" msg " focus=on
2020-08-06 16:58:36 +02:00
hc rule class~'.ignal' tag=" msg " focus=on
2018-02-15 16:41:53 +01:00
2016-10-13 19:07:18 +02:00
# oth
2019-01-18 16:16:08 +01:00
hc load " oth " '
2016-10-13 19:07:18 +02:00
(split horizontal:0.450000:0
(clients vertical:0)
(split vertical:0.550000:1
(clients vertical:0)
(clients vertical:0)))
'
2019-01-18 16:32:33 +01:00
hc rule class~'.ibre.ffice.*' tag=" oth " index=00 focus=off pseudotile=off
2019-09-03 19:56:03 +02:00
hc rule class=Mumble tag=" oth " index=00 focus=off pseudotile=off
2019-01-18 16:16:08 +01:00
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
2019-01-18 16:16:08 +01:00
hc rule class=Vlc tag=" oth " index=11 focus=on
2016-10-13 19:07:18 +02:00
# art (for GIMP)
2018-05-16 17:32:38 +02:00
## Now works in single window
2016-10-13 19:07:18 +02:00
# center all other gimp windows on gimp tag
2019-01-18 16:16:08 +01:00
hc rule class=Gimp tag=" art " pseudotile=on
2016-10-13 19:07:18 +02:00
hc rule class=Gimp windowrole~'gimp-(image-window|toolbox|dock)' \
pseudotile=off
2020-04-27 11:23:07 +02:00
hc rule class=Kodi tag=" art " focus=on
2016-10-13 19:07:18 +02:00
2019-09-04 16:55:17 +02:00
# tag: 6
## Steam
hc rule class=Steam tag=" 6 "
hc rule title=Steam tag=" 6 "
2019-09-04 16:55:17 +02:00
2016-10-13 19:07:18 +02:00
# tag: 8
2019-01-18 16:16:08 +01:00
hc rule class=KeePass2 tag=" 8 "
2016-10-13 19:07:18 +02:00
# 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