Differences between revisions 12 and 13
Revision 12 as of 2009-05-01 12:18:18
Size: 10903
Editor: kna
Revision 13 as of 2009-05-05 19:08:24
Size: 10926
Editor: kna
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:


Translation(s): English - Français

(!) ?Discussion


What is is about:

Wmii (Window Manager Improved) is a « tiling WM » : a window manager which automagically places windows without overlapping. This is done with a view to them covering as large a surface as possible. Further, to allow you to efficiently organise your desktop screen, you can navigate it using the keyboard only.


If you don't have xorg installed, you should install it before :

aptitude install xserver-xorg xterm xinit

For wmii, you need the package :

aptitude install wmii



When we don't know tiling, it's not realy easy to begin with it. We have to learn hotkeys to launch programs and deplace or resize windows. By default, the "Mod" touch is Alt. See the "Configuration" part of this page to change it, if you need. The hotkeys to learn at beginning are :

  • Mod+Enter -> Terminal

  • Mod+p -> menu : a menu appears, just tape the beginning of the name of the application to open it

  • Mod+d -> default layout : windows are divised on screen

  • Mod+s -> stacked layout : the selected window take all the screen, we just see the title bar of the others

  • Mod+j -> select the window below

  • Mod+k -> select the window above

  • Shift+Mod+j -> move the window down

  • Shift+Mod+k -> move the window up

  • Mod+a -> Actions menu : choose "quit" to quit


By default, only one column is used by the desktop. It's possible to use several columns with h and l :

  • Mod+Shift+h : move the selected window left
  • Mod+Shift+l : move the selected window right
  • Mod+h : selected column at left
  • Mod+l : select the column at right

Columns are created automatically, in fonction of your placements of the windows. You can make them bigger or smaller, clicking beetween two columns.


You begin in "default" layout : all windows take the same space. You can make them bigger or smaller, clicking in the little square in the title bar of a window.

  • "stacked" layout (Mod+s) : the selected window take all the column, you see just the title bar of the others
  • "maximum" layout (Mod+m) : the selected window take all the column, you don't see other windows.
  • "fullscreen" layout (Mod+f) : the selected window take all the screen.

Floating layout

You can place your windows like a classic window manager. It's called floating layout. It's useful for some applications, like the Gimp.

  • Mod+Shift+Space : Move selected window in floating layout.
  • Mod+Space : swich between floating layout and normal layout.

In floating layout, we select window with Mod+j and Mod+k. We can change dimensions of the window, by clicking on the corner, like in a classic window manager. But we can use hotkeys for that :

  • Mod+Left click : move window
  • Mod+Right click : change dimensions of the window (you can use it in other layouts too)


The views is the principle of desktops in others window managers. They are automatically created when you move a window in. Hotkeys follow the same principle :

  • Mod+Shift+2 : move selected window to the view "2"
  • Mod+2 : go to view "2"

It's the same thing for all numbers, from 0 to 9. But we can use name too :

  • Mod+t : views menu : you can select a view with right and left keys, or type the name of the view (or just a part of the name, if it was created)
  • Mod+Shift+t : Same thing, but we move with the selected window.


Per-user configuration

The configuration file is /etc/X11/wmii-3.5/wmiirc. If you want a personnal configuration, just copy it in the .wmii-3.5 in your personnal folder :

cp /etc/X11/wmii-3.5/wmiirc /home/<login>/.wmii-3.5/

Basic configuration

You just need to edit the wmiirc file


# Configuration Variables

Change Mod1 to Mod4 if you want to use Windows touch and not Alt. You can also change h, j, k, l if you want.

Windows colors

# Colors tuples: "<text> <background> <border>"
WMII_NORMCOLORS='#ffffff #000000 #ffffff'
WMII_FOCUSCOLORS='#ffffff #5c0000 #ffffff'


Colors of unselected window are in NORMCOLORS variable. Colors of selected window are in FOCUSCOLOR variable. You can see the hexadecimal code of a color with the Gimp (just click in the black and white squares in the tools window), for example. You can change the background color (if you use transparent terminal) with the WMII_BACKGROUND variable.


WMII_MENU="dmenu -b -fn '$WMII_FONT' -nf '$1' -nb '$2' -sf '$4' -sb '$5'"
WMII_9MENU="wmii9menu -font '$WMII_FONT' -nf '$1' -nb '$2' -sf '$4' -sb '$5' -br '$6'"

See man dmenu if you want to change the menu. The WMII_TERM variable set the command of the terminal opened with Mod+Enter

The Plan9 system

Wmii use a pseudo file-system (like /proc), for its configuration. We can read and write into with wmiir : we use "ls" to see files and folders :

$ wmiir ls /

We can read files with "read" :

$ wmiir read /colrules
/.*/ -> 58+42

We can create an file with "write" and write into an existing file with "xwrite". For example :

wmiir xwrite /ctl view 5

will write "view 5" in ctl, this place the desktop in the view "5".

We will see others example in the wmiirc :


Columns size

In the #Column Rules section, you can replace "58+42" by the size of the columns (in percent of the size of the screen) that you want.

Windows disposition

The #Tagging Rules section allow to put rules to windows, in function of their title bar. We select windows from a regular expression (http://en.wikipedia.org/wiki/Regex) and we put a tag (the name or number of a view) or a tilde (~) for the floating layer. For example :

# Tagging Rules
wmiir write /tagrules <<!
/XMMS.*/ -> ~
/MPlayer.*/ -> ~
/VLC.*/ -> ~
/Gajim.*/ -> ~+jabber
/Téléchargements.*/ -> sel+download
/.*/ -> sel
/.*/ -> 1

All windows whose have the title bar beginning by XMMS, MPlayer or VLC will be automaticly in the floating layer. Gajim will be launched in the floating layer of the view named "jabber" and the iceweasel downloading window will be launched simultaneously in the selected view and the view "download". The two last lines put any other windows in the selected view, and begin the environment in the view "1".

We can use wmii in floating layer exclusively :

# Tagging Rules
wmiir write /tagrules <<!
/.*/ -> ~+sel
/.*/ -> 1

Status bar

In the #Status Bar Info section, you can replace the "status" function by any command, the result of the command will appear in the status bar (at right). For example, to see the battery state and the date in a smaller format, you can do : # Status Bar Info

status() {
        echo -n $(acpi -b) '|' $(date +"%d/%m/%y - %H:%M:%S")


If you put a script in ~/.wmii-3.5 with the execution rights, you can launch it with the Actions menu (Mod+a).

Keyboard shortcuts

You can add keyboard shortcurts in the #Key Bindings section, with the same syntax. For example :

        Key $MODKEY-b
                amixer set Master 2dB+ 
        Key $MODKEY-v
                amixer set Master 2dB-
        Key $MODKEY-n
                iceweasel &

Here we can reduce and increase the sound with Mod+b and Mod+v. Mod+n will launch iceweasel. Don't forgot the "&" at the end of the command, to let the hand to the script. For multimedia keyboards, you can see Keyboard/MultimediaKeys. Attention : you have to use tabulations, not spaces.

Programs at launch

To launch programs at the beginning of the session, you can add them in the wmiirc. But you have to place it before the last section :

# Stop any running instances of wmiirc
echo Start wmiirc | wmiir write /event || exit 1

wmiir read /event |
while read event; do
        set -- $event
        event=$1; shift
        Event_$event $@
done 2>/dev/null

which launch "wmiir read event" in a loop. So all lines after will not be read.

If you want that the program doesn't launch a second time, when you relaunch wmiirc, you can do :

[ "`ps aux | grep <name_of_the_program> | grep -v grep`" =  "" ] && <name_of_the_program> &

Apply the modifications

Just launch the wmiirc from the Actions menu (Mod+a). If you want to use programs you've just installed, use "rehash" from the Actions menu.

Scripting wmii

If you look in the Plan9 system with wmiir ls and wmiir read, and if you look at the keyboard shortcurts, you can easily find which command you need to use to modify the behaviour of wmii, and so make some scripts. For example :

# /usr/local/bin/tag 

if [ $# -ne 2 ]; then
    echo "Usage: tag WINDOWTITLE TAG"
    exit 1

for i in `wmiir ls /client | sed '/sel/d'` ; do
    if [ "`wmiir read /client/$i/label | grep $1`" = "$1" ]; then
        wmiir xwrite /client/$i/tags $2

With this you can tag one or several windows. For example tag Iceweasel 2+web will place the iceweasel's window(s) in the view "2" and in the view "web". You can do all kind of scripts, as you want. But you should prefer to modify the wmiirc, which is a bash script. For example, we can add the keyboard shortcurt :

 Key $MODKEY-Shift-r
                export TAG=$(tagsmenu) ; wmiir xwrite "/client/$(wmiir read /client/sel/ctl)/tags" "$TAG" ; wmiir xwrite /ctl "view $TAG"

and change the view of the selected window and follow it to the view with Mod+r.

If you want to learn shell scripting, you can find a detailled guide at http://tldp.org/LDP/abs/html/.

There are some others Plan9 clients, like libixp and plan9port. They can be better for scripting in other languages. For example, ruby coders should like ruby-wmii : http://eigenclass.org/hiki.rb?wmii%20ruby

There are a lot of tips for wmii in the web.


Official site : http://www.suckless.org/wmii/


Probably a lot of mistakes, because of my bad english. Sorry.

CategoryProposedDeletion : duplicate the package description.