Translation(s): English - Français - Italiano - Русский

(!) ?Discussion

What is Wmii?

Wmii (Window Manager Improved) is a ‘tiling WM’: a window manager which automagically places windows without overlapping. This is done in the effort of having them cover as large a surface as possible. Further, to allow you to efficiently organize your desktop screen, you can navigate it using the keyboard only.



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

# apt-get install xserver-xorg xterm xinit

For wmii, you need the following package:

# apt-get install wmii


First Steps

When you don't know tiling, it's not really easy to start working with it. You have to learn hotkeys to launch programs and move or resize windows. By default, the "Mod" key is Alt. See the "Configuration" section in this page to change it, if you need. The hotkeys to learn at the beginning are:


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

Columns are created automatically when you move a window to the left or right of the existing column(s). You can make them bigger or smaller by clicking and dragging the border between two columns.


You start with the "default" layout: all windows take up the same space. You can make them taller or shorter by clicking in the little square in their title bar.

Floating layout

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

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


Views are based on the same principle of desktops in others window managers. They are automatically created when you move a window in them. Hotkeys also follow the same principle:

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


Per-user Configuration

The configuration file is /etc/X11/wmii/wmiirc. If you want a personal configuration, just copy it under .wmii in your personal folder:

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

Basic Configuration

You just need to edit the wmiirc file.


# Configuration Variables

Change Mod1 to Mod4 if you want to use the Windows key instead of Alt. You can also change h, j, k, l if you want. To use the arrow keys, for example, use Up, Down, Left, Right.

Window Colors

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


Colors of unselected windows are set in the NORMCOLORS variable. Colors of the selected window are set in the 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 a 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 sets the command used to open a terminal with the Mod+Enter shortcut.

The 9P File System

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

$ wmiir ls /

You can read files with "read" :

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

You can create a 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 toggles the view "5" on the desktop.

You can see others example in the wmiirc file.


Column size

In the #Column Rules section, you can replace "58+42" with the size of the columns (as a percentage of the total size of the screen) you prefer. The first number is the percentage of the screen for the first (leftmost) column, the second number is for the second column. You can add more numbers to set the width of more than two columns.

Windows Placement

The #Tagging Rules section allows you to set rules for windows, in function of their title bar. Windows are selected with a regular expression and a tag, with the name or number of a view. For example:

# Tagging Rules
wmiir write /rules <<!
/XMMS.*/ floating=on
/MPlayer.*/ floating=on
/VLC.*/ floating=on
/Gajim.*/ floating=on tags=jabber
/Téléchargements.*/ tags=+download
/.*/ tags=1

All windows with the title bar beginning with XMMS, MPlayer, or VLC will be automatically placed 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 in the "download" view. The last two lines place any other window in the selected view, and start the environment in the "1" view.

It's possible to use wmii exclusively with the floating layer:

# Tagging Rules
wmiir write /rules <<!
/.*/ floating=on
/.*/ tags=1

Status Bar

In the #Status Bar Info section, you can replace the "status" function with any command. The result of the command will appear in the status bar (on the right). For example, to see the battery status 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 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 &

In this example Mod+b and Mod+v are used to reduce and increase the sound volume. Mod+n will launch iceweasel. Don't forget the "&" at the end of the command, to return to the script. For multimedia keyboards, you can see Keyboard/MultimediaKeys. Attention : you have to use tabulations, not spaces.

Launch Programs at Startup

To launch programs at the beginning of the session, you can add them in the wmiirc. But you have to place them 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 launches "wmiir read event" in a loop. So all lines after these will not be read.

If you don't want a new instance of the program to be started when you relaunch wmiirc, you can use:

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

Apply the Changes

Just launch 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 9P file 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 thus 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 more windows. For example, tag Iceweasel 2+web will place all iceweasel's window(s) in the view called "2" and in the "web" view. You can do all kind of scripts, as you want. But it would be better to modify the wmiirc file, which is a bash script. For example, you can add this 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 then use Mod+r to change the view of the selected window and to follow it to the new view.

If you want to use scripting, it is recommended that you use the rc shell, which is included with 9base and Plan 9 from User Space.

There are some other 9P clients, like libixp and plan9port. They can be better for scripting in other languages. For example, ruby coders should like ruby-wmii:

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



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