Commit Diff


commit - 062902d7d06731160ab3e78aab346d5683570aa2
commit + c1e9083b6447b0fd31a699a230946f873c926e31
blob - /dev/null
blob + 20f451468f2a0d8b848e2f62acf80ff1b7bb33ef (mode 755)
--- /dev/null
+++ config/herbstluftwm/autostart.lp
@@ -0,0 +1,223 @@
+# herbstluftwm
+
+herbstluftwm is a window manager.  The following is my configuration,
+which is based on the default one (with tweaks to avoid depending on
+bash)
+
+	#!/bin/sh
+
+herbstclient is quite long to write, so abbreviate it
+
+	alias hc=herbstclient
+
+	hc emit_hook reload
+
+remove all existing keybindings before adding the new ones
+
+	hc keyunbind --all
+
+I prefer using mod4 (the super/windows/... key) to manage the window
+manger, with only few exceptions
+
+	#Mod=Mod1   # Use alt as the main modifier
+	Mod=Mod4    # Use the super key as the main modifier
+
+	hc keybind $Mod-Shift-q quit
+	hc keybind $Mod-Shift-r reload
+	hc keybind $Mod-Shift-c close
+	hc keybind $Mod-slash spawn menu
+	hc keybind $Mod-Control-Return spawn emacsclient -c
+	hc keybind Control-Mod1-Return spawn xterm
+
+	hc keybind XF86AudioPrev spawn amused prev
+	hc keybind XF86AudioNext spawn amused next
+	hc keybind XF86AudioPlay spawn amused toggle
+
+basic movement in tiling and floating mode focusing clients
+
+	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-h     focus left
+	hc keybind $Mod-j     focus down
+	hc keybind $Mod-k     focus up
+	hc keybind $Mod-l     focus right
+
+moving clients in tiling and floating mode
+
+	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
+	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
+
+splitting frames creates an empty frame at the specified direction
+
+	hc keybind $Mod-u       split   bottom  0.5
+	hc keybind $Mod-o       split   right   0.5
+
+let the current frame explode into subframes
+
+	hc keybind $Mod-Control-space split explode
+
+resizing frames and floating clients
+
+	resizestep=0.02
+	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
+	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
+
+add the tags
+
+	hc rename default "0" || true
+	addtag() {
+		hc add $1
+		if [ ! -z "$2" ]; then
+			hc keybind "$Mod-$2" use_index $1
+			hc keybind "$Mod-Shift-$2" move_index $1
+		fi
+	}
+
+	addtag 0 ampersand
+	addtag 1 braceleft
+	addtag 2 bracketleft
+	addtag 3 parenleft
+	addtag 4 equal
+	addtag 5 plus
+	addtag 6 parenright
+	addtag 7 bracketright
+	addtag 8 braceright
+	addtag 9 exclam
+
+cycle through tags
+
+	hc keybind $Mod-period use_index +1 --skip-visible
+	hc keybind $Mod-comma  use_index -1 --skip-visible
+
+manage the layout
+
+	hc keybind $Mod-r remove
+	hc keybind $Mod-s floating toggle
+	hc keybind $Mod-f fullscreen toggle
+	hc keybind $Mod-Shift-f set_attr clients.focus.floating toggle
+	hc keybind $Mod-Shift-m set_attr clients.focus.minimized true
+	hc keybind $Mod-Control-m jumpto last-minimized
+	hc keybind $Mod-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-space						\
+		or , and . compare tags.focus.curframe_wcount = 2	\
+			. cycle_layout +1				\
+				vertical horizontal max vertical grid	\
+			, cycle_layout +1
+
+mouse bindings
+
+	hc mouseunbind --all
+	hc mousebind $Mod-Button1 move 
+	hc mousebind $Mod-Button2 zoom
+	hc mousebind $Mod-Button3 resize
+
+focus
+	hc keybind Mod1-Tab         cycle_all +1
+	hc keybind Mod1-Shift-Tab   cycle_all -1
+
+	hc keybind $Mod-BackSpace   cycle_monitor
+	hc keybind $Mod-c cycle
+	hc keybind $Mod-i jumpto urgent
+
+theme
+
+	hc attr theme.tiling.reset 1
+	hc attr theme.floating.reset 1
+	hc set frame_border_active_color '#222222cc'
+	hc set frame_border_normal_color '#ffffff'
+	hc set frame_bg_normal_color '#565656aa'
+	hc set frame_bg_active_color '#345F0Caa'
+	hc set frame_border_width 1
+	hc set always_show_frame on
+	hc set frame_bg_transparent on
+	hc set frame_transparent_width 5
+	hc set frame_gap 4
+
+	hc attr theme.title_height 0
+	#hc attr theme.title_font 'Dejavu Sans:pixelsize=12'  # example using Xft
+	hc attr theme.title_font '-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
+	hc attr theme.padding_top 2  # space below the title's baseline (i.e. text depth)
+	hc attr theme.active.color '#9AFAFF'
+	hc attr theme.title_color '#222222'
+	hc attr theme.normal.color '#ffffef'
+	hc attr theme.urgent.color '#7811A1dd'
+	hc attr theme.normal.title_color '#898989'
+	hc attr theme.inner_width 1
+	hc attr theme.inner_color black
+	hc attr theme.border_width 2
+	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 '#789161'
+	hc attr theme.urgent.inner_color '#9A65B0'
+	hc attr theme.normal.inner_color '#606060'
+	# copy inner color to outer_color
+	for state in active urgent normal ; do
+		hc substitute C theme.${state}.inner_color \
+			attr theme.${state}.outer_color C
+	done
+	hc attr theme.active.outer_width 1
+	hc attr theme.background_color '#141414'
+
+	hc set window_gap 0
+	hc set frame_padding 0
+	hc set smart_window_surroundings off
+	hc set smart_frame_surroundings on
+	hc set mouse_recenter_gap 0
+
+	hc set focus_follows_mouse 1
+	hc set raise_on_click false
+	hc set snap_gap 5
+
+rules
+
+	hc unrule -F
+	#hc rule class=XTerm tag=3 # move all xterms to tag 3
+	hc rule focus=on # normally focus new clients
+	hc rule floatplacement=smart
+	#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)' floating=on
+	hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
+	hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
+
+	hc set tree_style '╾│ ├└╼─┐'
+
+unlock, just to be sure
+
+	hc unlock
+
+I'd like to have some gaps around my only monitor, herbstluftwm makes it
+incredibly easy
+
+	herbstclient set_monitors $((1920-100))x$((1080-100))+50+50
+	# hc detect_monitors
+
+Finally launche the panel on each screen
+
+	panel=~/.config/herbstluftwm/panel.sh
+	[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
+	for monitor in $(hc list_monitors | cut -d: -f1) ; do
+		"$panel" "$monitor" &
+	done
blob - 6830a53c1fa9ca1fcb5371b11ecd05c5b1501a97
blob + 46f507eb3843476e19ecc1c3cd96fbe86d6474b9
--- gen
+++ gen
@@ -54,6 +54,8 @@ pair bin/acmerc		bin/acmerc.lp	+x
 pair bin/browser	bin/browser.lp	+x
 pair bin/sshot		bin/sshot.lp	+x
 
+pair .config/herbstluftwm/autostart	config/herbstluftwm/autostart.lp
+
 conv index		index.lp
 for file in $files; do
 	conv "${file%.lp}" "$file"