3.4. CTWM

Ctwm (Claude's Tab Window Manager) er en viderebygning på twm som kan alt det man savner i twm.

Sådan ser ctwm ud:

Figur 3-6. ctwm

3.4.1. Installation

Man kan hente ctwm fra http://ctwm.dl.nu/. Den nyeste version er 3.6. Først forsøgte jeg mig med kildeteksten, men den gav lidt problemer, derfor anbefales det at man bruger kildetekst-RPM-filen i stedet.

3.4.1.1. Kildetekst-RPM-filen

Kildetekst-RPM-filen, ctwm-3.6-2jv.src.rpm, kan på Red Hat bygges og installeres med kommandoerne:

rpm --rebuild ctwm-3.6-2jv.src.rpm
rpm -Uvh /usr/src/redhat/RPMS/i386/ctwm-3.6-2jv.i386.rpm

I filen "$HOME/.xsession" indsættes:

exec /usr/X11R6/bin/ctwm

3.4.1.2. Kildetekst

Kildeteksten: ctwm-3.6.tar.gz

tar xvzf ctwm-3.6.tar.gz

Hvis man har hentet den oprindelige kildetekst, kan man ikke oversætte før man indsætter et manglende semikolon i filen gram.y i linje 686.

wingeom_entry   : string string { AddToList (&Scr->WindowGeometries, $1, $2) }
rettes til
wingeom_entry   : string string { AddToList (&Scr->WindowGeometries, $1, $2); }

Herefter køres kommandoerne:

cd ctwm-3.6
xmkmf
make

Kører man make install så er der brok over at No rule to make target `xpm'. Der står heller ikke noget om make install i README filen. Så jeg har valgt at beholde den i mit hjemmekatalog.

Dvs. at der i "$HOME/.xsession" kommer til at stå:

exec ctwm-3.6/ctwm

3.4.2. Opsætningsfiler

Filen $HOME/.ctwmrc styrer opsætningen

Start med at kopiere systemopsætningsfilen til dit hjemmekatalog:

cp /usr/X11R6/lib/X11/twm/system.ctwmrc ~/.ctwmrc
(eller cp ctwm-3.6/system.ctwmrc ~/.ctwmrc, hvis du har installeret i dit hjemmekatalog). Derefter kan du redigere i den.

3.4.3. Menu

Ved at venstreklikke på baggrunden kommer der en menu. Med default opsætningsfilen er der mulighed for at starte en xterm, genstarte ctwm, afslutte ctwm, og nogle få andre ting.

Man kan indsætte ting i menuen i .ctwmrc:

menu "defops"
{
    "Min menu"          f.title
    "Xterm"             !"xterm&"
    "Netscape"          !"/usr/bin/netscape&"
    "Xmag"              !"xmag&"
    ""                  f.nop
    "Restart"           f.restart
    "Exit"              f.quit
}

3.4.4. Genvejstaster

Genvejstaster sætte let op i .ctwmrc:

"Insert"        = c | m : all           : f.exec "xterm&"
"n"             = c | m : all           : f.exec "netscape&"

Her sættes ctrl+alt+Insert til at starte en xterm imens ctrl+alt+n sættes til at starte en netscape.

Se i øvrigt man ctwm. Hvis make install ikke lykkes, så prøv

man ./ctwm-3.6/ctwm._man

eller se http://ctwm.dl.nu/manpage.html.

3.4.5. Vindueshåndtering

Som ved twm er default, at man placerer vinduerne selv med venstre museknap. Man kan med det samme ændre størrelse på et vindue, ved at holde midterste museknap nede og trække den udenfor vinduet, og derefter trække vinduet til den ønskede størrelse.

Hvis man vil have vinduerne til at placere sig automatisk, sættes RandomPlacement.

Man kan default ikke skifte mellem vinduerne med alt+tab, men dette kan sættes op i .ctwmrc filen:

WindowRing
WarpRingOnScreen
"Tab"      = m   : all          : f.warpring "next"

3.4.6. Fokus

Default er Focus follows mouse. Sloppy Focus - dvs. at fokus følger musen men at et vindue ikke mister fokus, når musen ryger ud på baggrunden - sættes med

SloppyFocus

Man kan tilsyneladende ikke sætte click to focus.

Som default er der hverkan auto raise eller click to raise. Men man kan sænke et vindue ved at midterklikke på titelbaren. Hvis et vindue automatisk skal komme forrest når det får fokus sættes AutoRaise. Og evt.

RaiseDelay 100 #100 ms

Hvis man ikke bryder sig om auto raise kan man sætte

RaiseOnClick

i stedet for.

Prøv også "AutoSqueeze":

AutoSqueeze                          # Auto Squeeze/Unsqueeze these wins
{
        "xterm" "emacs"
}

Advarsel: Denne feature er rigtig irriterende :-)

3.4.7. Workspaces/virtuelle skriveborde

Der er per default 8 workspaces, som man skifter mellem ved at klikke i workspace manageren. Dette kan laves om i opsætningsfilen, ligesom man kan sætte genvejstaster op til at skifte workspace. Desuden kan man kan stille på baggrundsfarver, farver i workspace manageren etc.

Definition af antal workspaces og disses farver mm:

WorkSpaces {
    "One"   {"white" "black" "DeepSkyBlue3" "white" "plaid"}
    "Two"   {"white" "black" "firebrick"}
    "Three" {"white" "black" "brown" "white" "xpm:~/horse_20l.xpm"}
    "Four"  {"white" "black" "MidnightBlue"}
    "Five"  {"white" "black" "firebrick"}
    "Six"   {"white" "black" "DeepSkyBlue3"}
    "Seven" {"white" "black" "chartreuse4"}
    "Eight" {"white" "black" "MidnightBlue"}
}

Genvejstaster til at skifte mellem workspaces:

"F1"            = m     : all           : f.gotoworkspace "One"
"F2"            = m     : all           : f.gotoworkspace "Two"
"F3"            = m     : all           : f.gotoworkspace "Three"
"F4"            = m     : all           : f.gotoworkspace "Four"
"F5"            = m     : all           : f.gotoworkspace "Five"
"F6"            = m     : all           : f.gotoworkspace "Six"
"F7"            = m     : all           : f.gotoworkspace "Seven"
"F8"            = m     : all           : f.gotoworkspace "Eight"

3.4.8. Baggrundsfarver

Lad os tage én linje fra forrige afsnit som eksempel:

"One"   {"white" "black" "DeepSkyBlue3" "white" "plaid"}

Det første "white" og "black" angiver at workspace "One" skal vises som hvid med sort tekst i workspace manageren.

"DeepSkyBlue3" angiver baggrundsfarven i selve workspacet. Derefter kan man skrive en farve (e.g "white") efterfulgt af en mønster (e.g plaid) eller et billede (e.g. xpm:~/horse_20l.xpm). I tilfælde af et mønster bruges farven som den anden farve i mønsteret. Hvad "white" gør i sammenhæng med et billede har jeg ikke forstået, men det skal være der.

3.4.9. Workspace manageren

Størrelse og placering kan angives med

workspacemanagergeometry        "360x60+60-0" 4

"4" fortæller at der skal være 4 workspaces i hver række.

Figur 3-7. workspacemanager

Workspace manageren kan sættes til at vise de vinduer der er i de forskellige workspaces, i stedet for at vise den farve og tekst de er defineret til. Prøv at trykke ctrl imens workspace manageren har fokus. Hvis man holder ctrl nede imens man trækker musen udenfor workspace manageren (helt over i et andet vindue hvis man bruger sloppy focus), så bliver det i "map state" som det kaldes. Gentag proceduren med ctrl for at få det tilbage til det oprindelige udseende.

Figur 3-8. inmapstate

Sæt StartInMapState ind i din .ctwmrc for at starte workspace manageren i map state.

3.4.9.1. Temaer

Der findes en håndfuld temaer til ctwm der kan hentes på: http://ctwm.dl.nu/#themes.

3.4.9.2. Dokumentation

Dokumentation kan findes på http://ctwm.dl.nu/#docs

3.4.10. Hvad er det fede ved ctwm?

Det virker. Ikke så meget overflødig grafik. Det er twm plus alle de ting man savnede (undtagen click to focus.)