Skip to content

patrickhaller/no-wm

Repository files navigation

no-wm
	Use X11 without a window manager

components
	included
		x-alt-tab
		x-move-resize
		x-session
		x-focus-manager
	distributed with X11 
		xsel xprop xrdb xset xsetroot xwininfo
	key-daemons
		xbindkeys http://www.nongnu.org/xbindkeys/xbindkeys.html
		speckeysd http://www.jessies.org/~enh/software/x11/
		xchainkeys http://code.google.com/p/xchainkeys/
		sxhkd https://github.com/baskerville/sxhkd
		alttab https://github.com/sagb/alttab
	window-manipulators
		xdotool http://www.semicomplete.com/projects/xdotool/
		window http://www.jessies.org/~enh/software/x11/
	niceties
		unclutter http://unclutter.sourceforge.net/
		dmenu http://tools.suckless.org/dmenu/
		autocutsel http://www.nongnu.org/autocutsel/ 
	overview
		http://www.sbin.org/doc/Xlib/index_contents.html

procedure
	set up your ${HOME}/.xinitrc to be something like
		#!/bin/bash
		while ! xprop -root | grep -q Free; do sleep 1; done
		xrdb -merge ${HOME}/etc/Xresources
		xsetroot -solid black
		xset b off
		exec xterm &
		exec speckeysd ${HOME}/etc/speckeysd.conf &
		exec x-focus-manager &
		exec x-session
	and your ${HOME}/etc/speckeysd.conf to be like
		# Key names come from <X11/keysymdef.h> (remove the XK_ prefix).
		# MUST have a Tab separating the key-combo and command
		Alt-Tab	x-alt-tab
		Alt-Shift-Tab	x-alt-tab -1
		Alt-Return	x-banish push
		Alt-BackSpace	x-banish pop
		Alt-m	x-move-resize
		Alt-r	echo run | dmenu -fn 10x20 | exec bash -s
		Alt-s	surf "$( echo www.duckduckgo.com | dmenu )"
		Alt-t	urxvt & x-focus-topmost wait
		Alt-f	xdotool selectwindow windowsize 100% 100% windowmove 0 0

	then ${HOME}/etc/Xresources with the preferred window geometries
		R_x11*geometry: 1024x600+0+0
		XTerm*geometry: 1024x600+0+0
		URxvt*geometry: 1024x600+0+0
		surf*geometry: 1024x600+0+0


window managers bind orthogonals (keyboard shortcuts, window manipulation,
window decoration) which should remain separate. 

x-focus-manager is not needed when all your apps return focus properly. A
mis-behaving app can be fixed by calling x-alt-tab after it runs; however that
needs to be scripted as focus remains with a window that no longer exists.