6. december

9wm

9wm er en ældre sag. Den første udgave er fra 1994.
Ideen med 9wm er at emulere udseende og opførsel fra windowmanageren i operativsystemet Plan 9 (den hedder iøvrigt 8½, men det er en anden sag)

Installation

Der eksisterer RPM-pakker til Red Hat rundt omkring, men enten er det ikke nyeste version (der under alle omstændheder er nogle år gammel), eller også fungerer de ikke. Det letteste er at hente kildekoden fra <http://sources.isc.org/X/window-managers/9wm-1.1.tar.gz>.

9wm er så gammel at den ikke kan bygges med ./configure && make && make install som ellers er normalt i dag.
I stedet skal man bruge xmkmf. Såfremt den ikke er installeret, kan den formodentlig findes i pakken XFree86-devel.
Jeg vil ikke have at hjemme-kompilerede programmer ligger og flyde blandt de programmer der er installeret med RPM. Derfor indsatte jeg et par linier ekstra i den ellers ret minimalistiske Imakefile:

   DESTDIR = /usr/local
   BINDIR = /bin
   MANDIR = /man

Herefter udføres disse kommandoer:

 xmkmf
 make
 su
 make install

9wm er ikke fyldt med features og sjove indfald. Nærmest tværtimod.
9wm kan to ting:
Starte et specifikt program (9wm -term "PROGRAMNAVN")
Afslutte sig selv (9wm exit)

PROGRAMNAVN kan være hvad som helst, men det er selvfølgelig praktisk at lade den starte en xterm, hvorfra man så kan starte andre programmer. Hvis man ikke angiver hvilket program der skal startes vil den prøve at starte xterm.

I .xsession indsættes:

#!/bin/bash

exec /usr/local/bin/9wm -term "xterm -ls"
Herunder ses 9wm med en xterm og menuen:
[ 9wm ]

Brug af 9wm

Der er ingen rammer eller bjælker man kan hive fat i for at flytte vinduer eller ændre størrelse på vinduer. Alt foregår via menuen der kan nås ved trykke højre museknap ned, og holde den nede. I øvrigt bruges højre museknap til alle operationer.

Ny terminal
Vælg New fra menuen.
Angiv hvor terminalen skal placeres
Flytte et vindue
Vælg Move fra menuen.
Marker det vindue der skal flyttes.
Angiv hvor det skal flyttes hen.
Ændre størrelse på et vindue
Vælg Reshape fra menuen.
Marker det vindue der skal ændres på.
Angiv den ønskede størrelse på vinduet.
Luk et vindue
Vælg Delete fra menuen.
Marker det vindue der skal lukkes.
Læg mærke til at dette svarer til at bruge kommandoen xkill.
Gem et vindue
Vælg Hide fra menuen.
Marker det vindue der skal gemmes væk.

En menu mere

Vil man have en decideret menu til at starte programmer fra kan man prøve 9menu. Den kan findes på ftp://ftp.comintern.ru/pub/unix/X11/plan9/.

9menu-1.5.shar.gz er en zippet shar-fil. Dvs. et script med indbygget binær kode.
Lav et katalog til kildekoden - pak ud - kør shar-filen:

mkdir 9menu
gzip -d 9menu-1.5.shar.gz
cd 9menu
sh ../9menu-1.5.shar

På Red Hat 8 vil den ikke kompilere med det samme, men hvis Makefile ændres til følgende går det uden problemer:

# Makefile for 9menu.
#
# Edit to taste
#
# Arnold Robbins
# arnold@skeeve.atl.ga.us

CC = gcc
CFLAGS = -g -O
SEARCHLIBS = -L/usr/X11R6/lib
LIBS = -lX11

9menu: 9menu.c
        $(CC) $(SEARCHLIBS) $(CFLAGS) 9menu.c $(LIBS) -o 9menu
Herefter køres make, og den nye binære fil kopieres på plads:
make
su
cp 9menu /usr/local/bin
9menu har ingen konfigurationsfil, men skal konfigureres i .xsession:
#!/bin/bash

xsetroot -solid black
oclock -fg gold -bg black -jewel red -bd white -geometry -0-120 &
xload -geometry 120x120-0-0 -highlight gold -bg black -fg gold &

9menu -geometry -0+0 \
EMACS:emacs \
GV:gv \
Netscape:/usr/local/netscape/netscape \
Evolution:evolution \
Galeon:galeon \
Gaim:gaim \
Terminal:"xterm -ls" \
"SSLUG ssh":"xterm -e ssh -t gw ssh sslug" \
ScreenShot:"xwd|display" \
Exit:"9wm exit" &

exec /usr/local/bin/9wm -term "xterm -ls"
Her sættes baggrunden til sort, et ur og xload startes i nederste højre hjørne og 9menu startes i øverste højre hjørne. Et par programmer fra menuen er også startet:

[ 9wm med 9menu ]

Er 9wm anvendelig?

Ja. Det synes jeg. Selvfølgelig er der windowmanagere der er hurtigere og mere intuitive at arbejde med, men 9wm slår de fleste andre på ældre hardware; den bruger under 1 MB hukommelse når den kører.