tesla wm
tesla wm is a small and fast tiling window manager. It is a fork of dwm (thanks Anselm!).
Download the tarball
teslawm-2009-02-28.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
Sadly, the code is more hackish than clean but i still think
that many things are easier to accomplish with teslawm than with
the original source. I just wished i had more time to work on
this...
Be that as it may: I'm currently using it so it shouldn't have
any nasty bugs and you are invited to test it.
differences to dwm
- multihead code supports tiling layouts for every head
- more layouts, especially note the rotateable tiling layout
- yes, we still have the nmaster functionality integrated
- more colors, frameless lens mode
- more event handler functions (e.g. bury)
- FLAG_NOFOCUS for virtual keyboard support
- basic mouse-only support and an example config for media
stations
- aclock.c for fast status text generation, vmenu (former 9menu)
integration
- mouse grip support, exended event handling code
- different installer and launch concept (every user hacks the
source)
- use stdin instead of xprop for status text and command input
- ability to execute commands triggered by status input
- extended bar rendering code
Many small changes and side effects improve the workflow like
in this example: The new event code allows to precisely specify
wether to switch focus on mouse movements. The current default
behavior is not to change focus on mouseover when a modifier or a
button is pressed. This helps to get the pointer from a focused
window to the bar to do something with it - without using a
keyboard or a mouse wheel.
So there are a lot of undocumented features for you to find out
:-P
known bugs
- fixed window mode is currently broken
- mod-y: swapping seltags reacts strange when combined with layout
changes
- title button events don't work when there is no title
- if a head gets attached all floats get mapped there - if it
gets detached the reverse occurs
- attaching a big display after startup may render the bar too
small
- there could be even less flicker and even faster operation
- de-urgenting a window doesn't work when focus is implied by
switching tags
news
2009-02-28 bugfix release:
- added config.media.h for media stations
- added better config for mouse only navigation
- added kde desktp file
- added FLAG_NOFOCUS for virtual keyboards
- fixed xrandr
- fixed installer
- fixed font code
2009-01-02 experimental release:
- added urgency handling
- added more color types
- added flexibility to the bar code
- improved menu actor examples
- improved startup script
- sanitized color handling
- sanitized setup and cleanup functions
- sanitized and extracted font code
- restored grip support
- extended and fixed aclock
- using bitfields for tags now
- stole spawn() code from current dwm (thanks Neale Pickett)
- mod-y sometimes also swaps layout (incomplete)
2008-07-28 hg tip:
- fixed bar width in multihead setups with varying widths
- improved flickering (hopefully for the future, too)
- better positioning for floating
- added extra/ directory for plugins
- sanitized setflags, small config file change
- fixed head ordering (now sort by x, y)
- added sysfs battery display to aclock
2008-05-27 hg tip:
- new install scheme, added some menu actors to distribution
- new mappings for mid and MOD-any mousebuttons on tags
- moved enternotify's focus() call to window enter handler
- moved transient and fullscreen window handling to rules
- added drawborder() function
- added tagshow(): makes tags visible when new windows are sent to them
- added softzoom() to keep invisible clients in order
- added randr multihead support
- added xft support
- bug: menu programs lack xft support
- bug: raise on focus should not be mandatory
- bug: grow on focus should not be mandatory
- bug: more flickers
2008-04-26 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
- remove all bugs (or at least remove all known bugs)
- incorporate dmenu, update menu programs for xft font rendering
- improve configuration scheme
More flexibility, better plugin support
- further improve performance and avoid flickering where possible
- simplify the source
Some features should be removed
- experiment: complement remote control with change reporting
screenshots
extended tile mode
other layout features
even more tiling layouts
cheat sheet
keyboard shortcuts
==================
mod-p start program via dmenu
mod-RETURN start xterm
mod-DOWN focus down
mod-UP focus up
mod-x focus previously focused window
mod-ESCAPE close focused
mod-SPACE softzoom focused to master area
shift-mod-SPACE unzoom focused
mod-f cycle positioning type
mod-TAB cycle layout
mod-y view previous tagset
mod-b toggle bar display
mod-+ in []E mode: add a master window
mod-- in []E mode: remove a master window
mod-LEFT in []E mode: make master area smaller
mod-RIGHT in []E mode: make master area larger
mod-c in []E mode: rotate layout
mod-1 ... 9 view tag 1 ... 9
strg-mod-1 ... 9 toggle view tag 1...9
shift-mod-1 ... 9 set tag to 1 ... 9
strg-shift-Mod-1 ... 9 toggle tag 1...9
* q,w,e,r have the same meaning as 5,6,7,8.
* j,k have the same meaning as UP, DOWN
* h,l have the same meaning as LEFT, RIGHT
mouse shortcuts
===============
* anywhere on the bar:
wheel-up focus up
wheel-down focus down
* on a tag:
button-left view tag
button-right toggle tag visibility
button-middle tag client
mod-button-left tag client
mod-button-right toggle tag on client
* 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:
mod-button-left move window
mod-button-right resize window
other notes
===========
* clicking mouse buttons on the title and status bars should 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.