8. december

Ion

Ideen med Ion er at man ikke har overlappende vinduer og at vinduerne dækker hele skærmen (der er altså ingen flotte baggrundsbilleder nedenfor).

Der er vist endnu ikke andre Linux-distributioner end Debian, der har Ion med i udvalget af window managers. Jeg hentede RPM-pakken "ion-20020207-1.i386.rpm" fra hjemmesiden:

Alternativt kan man hente kildeteksten fra Ions hjemmeside og oversætte den selv.

Opsætningsfiler

Ions bruger filen "~/.ion/ion.conf" som opsætningsfil. Hvis filen ikke er der, vil Ion ikke starte. Du kan for eksempel bruge samme fil (plus tilbehør) som der er brugt her, som udgangspunkt.

Opret kataloget "~/.ion" og læg de tre opsætningsfiler nedenfor i det.

Dernæst kan du oprette filen "~/.xsession" med linien:

exec ion

Udseende

Når du så har logget ind og åbnet et par vinduer kan din skærm for eksempel se sådan ud:

[Billede af Ion i brug]

Tastaturgenveje

Da hele ideen med Ion er at man skal kunne arbejde effektivt uden at bruge musen for meget, er det vigtigt at sætte nogle komfortable genvejstaster op. Genvejstasterne defineres i blokken "bindings" i opsætningsfilen (eller en af de filer opsætningsfilen inkluderer). Starten på blokken markeres med "bindings{" og slutningen på blokken markeres med "}".

Starte et program

Det er vigtigt at kunne starte en `xterm`. Det kan man for eksempel bruge Ctrl-Alt-T til:

bindings{                                       #
        set_mod "Control+Mod1"                  #
        kpress "T",      "exec", "xterm"        #

Vi kan også vælge at bruge Ctrl-Escape til at starte et program efter eget valg:

        set_mod "Control"                       #
        kpress "Escape", "query_exec"           #

Når du taster Ctrl-Escape dukker der en minikommandolinie op nederst i rammen, hvor du kan indtaste en kommando der køres i et nyt vindue.

Skifte mellem faneblade

Hvis vi starter flere xterm'er i samme ramme vil de blive til faneblade. Det vil være praktisk at kunne skifte mellem dem med Alt-Tab:

        set_mod "Mod1"                          #
        kpress "Tab",    "switch_next"          #

Bemærk at det aktive faneblad er markeret med blå tekst på hvid baggrund (hvis du bruger filerne ovenfor), mens inaktive faneblade er markerede med hvid tekst på blå baggrund.

Opdele i flere rammer

Det er lidt pjattet kun at have én ramme, hvor alle vinduerne er faneblade i. Vi kan for eksempel bruge Alt-O+V til at lave en vandret opdeling af en ramme og Alt-O+L til at lave en lodret opdeling af en ramme:

        set_mod "Mod1"                          #
        submap "O" {                            #
                kpress "V",    "split_horiz"    #
                kpress "L",    "split_vert"     #
        }                                       #

Med flere rammer vil du kunne se at de aktive faneblade i inaktive rammer markeres med sort tekst på grøn baggrund.

Skifte mellem rammer

Men når vi nu har flere rammer, så er det også nødvendigt at kunne skifte mellem dem. Det kan vi for eksempel bruge Ctrl-Alt-(piletaster) til:

        set_mod "Control+Mod1"                  #
        kpress "Left",   "goto_left"            #
        kpress "Right",  "goto_right"           #
        kpress "Up",     "goto_above"           #
        kpress "Down",   "goto_below"           #

Lukke vinduer og rammer

Det kan også blive nødvendigt at lukke et vindue af og til. Det kan man for eksempel gøre med Alt-F4:

        set_mod "Mod1"                          #
        kpress "F4",     "closedestroy"         #

Og når vi nu bruger Alt-O+... til at ændre rammernes størrelser, så kan vi jo passende bruge Alt-O+F4 til at lukke en ramme:

        set_mod "Mod1"                          #
        submap "O" {                            #
                kpress "V",    "split_horiz"    #
                kpress "L",    "split_vert"     #
                kpress "F4",   "destroy_frame"  #
        }                                       #

Ændre rammernes størrelser

Det kan også være nyttigt at kunne ændre rammernes størrelser. I blokken "moveres_bindings" sætter man hvilke taster der gør rammen større ("S") eller mindre ("M"), aktiverer ændringen (enter) eller annullerer ændringen (escape):

moveres_bindings{                               #
        set_mod "AnyModifier"                   #
        kpress "S",     "grow"                  #
        kpress "M",     "shrink"                #
        kpress "Return", "end_resize"           #
        kpress "Escape", "cancel_resize"        #
}                                               #

Men vi har også brug for at fortælle at rammen skal ændre størrelse. Vi kan for eksempel bruge Alt-F8 til at ændre højden på rammen, og Ctrl-F8 til at ændre bredden på rammen:

        set_mod "Mod1"                          #
        kpress "F8",     "resize_vert"          #
        set_mod "Control"                       #
        kpress "F8",     "resize_horiz"         #

Flytte vinduer

Uanset hvor velorganiseret man er, kan man af og til få brug for at flytte et vindue til en anden ramme. Det kan man gøre ved at flytte til den ramme man vil have vinduet over i (med Ctrl-Alt-<pil>), taste Alt-F7, skrive noget af vinduets navn, trykke på Tab (for at få skrevet navnet færdigt) og Enter.

        set_mod "Mod1"                          #
        kpress "F7",     "query_attachclient"   #

Maksimere vinduer

Svarende til Alt-F8 og Ctrl-F8 (ændring af en rammes højde og bredde) kan vi definere Alt-F2 og Ctrl-F2 til at maksimere henholdsvis rammens højde og bredde:

        set_mod "Mod1"                          #
        kpress "F2",     "maximize_vert"        #
        set_mod "Control"                       #
        kpress "F2",     "maximize_horiz"       #

Andre genvejstaster

Brugsanvisning (man-side):
F1
SSH til en anden maskine:
F4
Redigér en fil:
F5
Opret/skift til skrivebord:
F9
Genstart Ion:
F11
Log ud:
F12

Hvorfor er Ion sej?

Jeg synes at det er vældig praktisk at bruge en window manager der hjælper mig med at sørge for at mine vinduer ikke overlapper. Og så er det rimeligt overkommeligt at styre en hel masse direkte fra tastaturet. Hvis `xterm` understøttede tastaturbaseret klippe-klistre, så ville jeg omgående fodre min mus til den nærmeste kat.


Få en window manager til at optræde i KDM eller GDM menuen

Siden det nu er søndag er der lidt ekstra guf. I stedet for at sætte sin yndlings window manager ind i sin .xsession og vælge default, kan det være smart at sætte den ind i den menu, der vises i KDM eller GDM, så man kan vælge den derfra.

Der kan være forskelle på de forskellige distributioner. Eksemplerne herunder er baseret på Red Hat. Vi håber der kan være til hjælp og inspiration også for dem der ikke kører Red Hat.

Kører jeg kdm eller gdm?

Først må man finde ud af om man kører kdm eller gdm. Dette kan gøres ved at se, om der kører en proces der hedder kdm eller gdm.

$ ps ax |grep kdm
1181 ? S 0:00 /usr/bin/kdm -nodaemon
2431 pts/4 S 0:00 grep kdm
$ ps ax |grep gdm
2433 pts/4 S 0:00 grep gdm

Her kører vi kdm. Hvis vi kørte gdm, var det ps ax |grep gdm der var kommet output ud af.

Der er også forskel på hvordan de ser ud. Der kan være forskel fra distribution til distribution, men her er screen shots fra Red Hat:

Og her er fra gdm:

GDM

Hvis du kører GDM er det nemt at sætte den nye Window manager ind i menuen:

Når du er tilfreds med din $HOME/.xsession kan den kopieres til /etc/X11/gdm/Sessions/WMNAME .

KDM

At få den nye window manager til at optræde i menuen

Det er nemt nok at få kdm til at vise et nyt menupunkt. Åbn filen "/etc/X11/xdm/kdmrc" med en editor. (Kan ligge andre steder på andre distributioner).

Find linien "SessionTypes" og indsæt navnet på din nye window manager:
SessionTypes=default,kde,failsafe,gnome,icewm,qvwm
Dette får imidlertid kun kdm til at vise menupunktet. Man skal selv sørge for at der sker det rigtige, når man vælger det fra menuen.

At få det nye menupunkt til at starte den nye window manager

Hvis man kører KDM på Red Hat og har switchdesk installeret, skal man blot kopiere sin .xsession til /usr/share/apps/switchdesk/ og kalde den Xclients.icewm eller Xclients.qvwm eller hvad man nu har sat ind i sin .kdmrc for et navn. Den skal måske helst have permissions 755 (kig på de filer der ligger der i forvejen.

Hvis man ikke kører Red Hat med switchdesk installeret, skal man sætte sin nye Window Manager ind i det case statement, der findes i filen /etc/X11/xdm/Xsession (kan ligge andre steder på andre systemer).

case $1 in
failsafe)
exec -l $SHELL -c "xterm -geometry 80x24-0-0"
;;
gnome)
exec -l $SHELL -c "gnome-session"
;;
kde|kde1|kde2)
exec -l $SHELL -c "/usr/share/apps/switchdesk/Xclients.kde"
;;
twm)
# fall back to twm
exec -l $SHELL -c "/usr/share/apps/switchdesk/Xclients.twm"
;;
icewm)
# Her har jeg indsat icewm
exec /usr/X11R6/bin/icewm
;;
qvwm)
# Her har jeg indsat qvwm
exec /usr/local/bin/qvwm
;;
esac