Translation(s): English - Français

(!) ?Discussion


CategoryDesktopEnvironment

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.

Installation

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

Use

Begin

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 :

Columns

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, in fonction of your placements of the windows. You can make them bigger or smaller, clicking beetween two columns.

Layouts

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.

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.

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 :

Views

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 :

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

Configuration

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

Touchs

# Configuration Variables
MODKEY=Mod1
UP=k
DOWN=j
LEFT=h
RIGHT=l

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'

WMII_BACKGROUND='#333333'
WMII_FONT='fixed'

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.

Terminal

set -- $(echo $WMII_NORMCOLORS $WMII_FOCUSCOLORS)
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'"
WMII_TERM="x-terminal-emulator'"

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 /
client/
colrules
ctl
event
keys
lbar/
rbar/
tag/
tagrules

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 :

Behaviour

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")
}

Actions

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
fi

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
    fi
done

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.

Ressources

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

ToDo

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


CategoryProposedDeletion : duplicate the package description.