tesla wm
tesla wm is a small and fast tiling window manager. It is a fork of dwm (thanks Anselm!).
Download the tarball
teslawm-2008-04-26.tar.gz
or fetch development versions via
mercurial:
$ hg clone http://spuerwerk.dyndns.org/~rfigura/teslawm/cgi-bin/hgweb.cgi
You can also browse the repository online
Status
Hooray! The new architecture is starting to make sense! Cracking that nut took more than i expected, given the small time i have (had, will have) to avail. Uh and before i forget: Multihead support is high priority now, of course ;P
news
2004-04-26 pre release:
- improved mouse based control
- added (un)shy() functions to be used on zoom()/bury()
- added selwin() function for selecting windows by click
- added trivial remote control feature
- added handlers to be called for matching rules
- sanitized restack(), thanks yiyus!
- sanitized status text newline handling
- fixed bury() focusing wrong
- fixed view(NULL) crashing again...
2008-03-06 experimental update:
- renamed dwm-rfigura to tesla wm
- bug: config emits lots of warnings
- broke hiding of bottom position on touching bottom grip
- config.h format extended. please update your config.h
- some keymappings were sanitized
- published mercurial repository, updated website
- added configurable buttonpress handlers on client windows
- added basic grouping function: zoomtagged()
- added two informational tiling modes showing a column per tag
- added focusdown() to focus previously focused window
- fixed focus issue: shy fullscreen window now gain focus
- architecture: layout takes XRectangle wa argument
- architecture: firstclient() and nextclient() iteration functions
- architecture: basic multiple grip window support
- misc cleanup
2007-12-18 experimental update:
- implemented separation of positions for focusnext() / focusprev()
- implemented client / rule flags: SHY INITSHY INITSMALL
- improved fixed position code, made floating a position type
- improved configurability, macros for default POS, FLAGS, MIN/MAXMWFACT, -PWFACT and MINHEIGHT/WIDTH
- fixed gapless snapping: no jumping on offscreen initial position
- fixed restack issue: floating windows shouldn't get behind non-floating windows
- fixed grip placement: reacts on xrandr changes now
- fixed flicker on invisible window creation
- aclock: implemented acpi battery status (beta)
- some code cleanup and simplifications, removed warnings
- imported dwm-4.7 updates: d6d3085307d8, ddbb687cc566, 7bf680bc1473, LENGTH() macro
2007-11-15 experimental release:
- new tile mode: treetile. this one works well with lots of windows
- implemented gapless snapping for interactive positioning
- don't overwrite prevtags if seltags is the same
- fixed lens misbehaviour in combination with float geometry
- fixed restart flicker, improved restart performance
- fixed mplayer fullscreen
- aclock: added cute apm battery display
- vmenu: added a slightly modified wmii9menu and the menu.sh script
- rewritten fibtile
- removed barpos
- removed libm.so usage
- prototype for fixed window positioning feature
- prototype for grip display and event handling
2007-11-03 update:
- removed some dead code, cleaned up config.*.h and dwm.sh
- fixes: nmaster display bug, grid- and fibtile, focusing inconsistencies, ...
- a separate geometry for floating windows is stored and is not lost by temporary tiling
- better unzoom makes automagic focusing of unzoomed windows less likely
2007-10-25 release:
- fullscreen "lens" layout allows switching windows using focus keys
- configurable mouse button bindings for tag-, layout-, title- and statusbar
- the mouse button binding supports modifiers (currently only MODKEY)
- an extended tile layout which supports nmaster and rotating the directions of the stacks
- a configurable number of sticky tags are protected from changing view
- a roll() function which does something like the opposite of zoom()
- resize hinting can be configured in rules[] and reacts on client notification messages (beta)
- additional example layouts fibtile and gridtile
- a simple ascii clock program to be used for status display
objective
Good things shall always be sustained: Keep it simple. Minimize required interaction.
todo
- Unify arrangement and positioning code, multihead support
Limit clients per stack, show hidden clients, make bar more similar to client
- experiment: Layout per client, select by zoomed client
- bug: Clients may crash when resized to small size
Always apply size hint for minimum size?
- improve: Run-time environment
Menu integration, install scheme
- improve: tiling with resize hinting
Two pass seems inevitable
- improve: configuration scheme
More flexibility, better plugin support
- More community support! wiki + mailing list
screenshots
extended tile mode
other layout features
even more tiling layouts
cheat sheet
keyboard shortcuts
==================
win-p start program via dmenu
win-RETURN start xterm
win-DOWN focus down
win-UP focus up
win-x focus previously focused window
win-ESCAPE close focused
win-SPACE zoom focused to master area
shift-win-SPACE unzoom focused
win-f cycle positioning type
win-TAB cycle layout
win-y view previous tagset
win-b toggle bar display
win-+ in []E mode: add a master window
win-- in []E mode: remove a master window
win-LEFT in []E mode: make master area smaller
win-RIGHT in []E mode: make master area larger
win-c in []E mode: rotate layout
win-1 ... 9 view tag 1 ... 9
strg-win-1 ... 9 toggle view tag 1...9
shift-win-1 ... 9 set tag to 1 ... 9
strg-shift-Win-1 ... 9 toggle tag 1...9
* q,w,e,r have the same meaning as 5,6,7,8.
mouse shortcuts
===============
* anywhere on the bar:
wheel-up focus up
wheel-down focus down
* on a tag:
button-left select tag to view
button-right toggle tag visibility
button-middle toggle tag on client
mod-button-right zoom windows tagged with tag
* on the layout button:
button-left cycle layout
button-right zoom focused to master area
button-middle toggle floating mode of focused
* on a window:
win-button-left move window
win-button-right resize window
other notes
===========
* clicking mouse buttons on the titlebar may open a dropdown menu.
* tags 9 ("+") and 10 ("-") are sticky which means that they can only
be toggled and are not being turned off when any other tag is
left-clicked.