console:
LESSON 1: Put yourself in problems.
LESSON 2: Just do it.
Porto uns dies en el que totes les coses usables em toquen els collons d'una forma exagerada, estic intentant provocar-me una contractura als canells a base de keybindings. So... uns posts enllà vaig parlar sobre el WMII, un gestor de finestres
"conceptual" a l'estil
ion, pero diferent

...i per motius personals non vull utilitzar l'ion (ni emacs).
He fet unes quantes millores al
mesure per tal d'integrar-lo de guais amb el wmii.
Primer de tot, caldrà que us instal·leu el wmii i el 9base. El 9base es la base de la shell d'usuari de plan9. Es dependencia del wmii (opcional), pero els scripts de configuració per defecte estan fets en
rc que es la
shell per defecte de plan9. (Com a sintaxi esta xula, pero com a shell es un pel incomode
(no te tab xD)).
WMII es el nom de la segona versió de WMI, curiosament la 3a versió no es diu WMIII sino WMII-3. Si useu pkgsrc el teniu a
wm/wmii i si aneu amb gentoo..el paquet curiosament es diu wmii-2 i la configuració per defecte es una tunejada de Gentoo.
En el meu cas he fet aixo:
console:
$ cp -rf /usr/pkg/etc/wmii-2.5/ ~/.wmii-2.5
$ echo "
xsetroot -solid black
xbindkeys &
wmii" > ~/.xinitrc
$ ln -fs ~/.xinitrc ~/.xsession
Aqui teni un screenshot de com em queda la cosa amb el mesure i demés en el iBook:
KeyBindings
Un `grep -e kbind ~/.wmii-2.5/*|wc -l` ens retorna 53..pero tranquils que s'aprenen rapid
Obrint aplicacions
Per obrir aplicacions noves, tenim dos entrades principals:
ALT+T : Terminal
CTL+ALT+P : Prompt
El prompt ens canvia la barra d'estat del WM i ens permet escriure una comanda a executar i ens la va autocompletant amb tots els programes que hi han al $PATH.
Layouts
La gracia dels escriptoris d'aquest pal i es una de les "avantatges" es que ens estalviem controlar la posició de les finestres, ja que aquestes es redimensionen i mouen segons la resta d'aplicacions que tinguem obertes o les caracteristiques de la finestra.
Aixo pot semblar molt maco, pero de vegades es molest per certes aplicacions, aixi que podem utilitzar els "layouts" per "arreglar" aquests petits problemes. Al cap i a la fi..la majoria de gent que usa aquests gestors de finestres acaben utilitzant aplicacions de terminal o keyboard-friendly.
Actualment wmii té 5 layouts suportats:
ALT+SHIFT+t : Tiled (Una gran i N petites)
(default)
ALT+SHIFT+g : Grid (fa una graella de NxN)
ALT+SHIFT+m : Maximized (totes les finestres son fullscreen)
ALT+SHIFT+v : VSplit (en plan :sp en vim)
ALT+SHIFT+f : Float (com un gestor de finestres normal)
Movent-nos per l'entorn
El mouse canvia de focus amb la posició, no amb clicks. Pero la veritat es que es bastant més comode treballar amb l'hjkl. Aixi que podem utilizar la $MODKEY (ALT) aixi:
ALT+j : Finestra anterior
ALT+k : Finestra següent.
Les pàgines es el nom que li posa als escriptoris.
CTL+ALT+y : Crea una nova pàgina.
ALT+h : Escriptori anterior (aka page)
ALT+l : Escriptori següent
ALT+SHIFT+# : Canvia a la pagina '#' (1, 2, 3...)
ALT+SHIFT+P : Fa un mosaic en grid de tots els escriptoris que tenim oberts. Prement 1, 2, 3 per anar a les corresponents pàgines.
Podem moure les finestres entre les pagines amb Detach i Attach.
ALT+d : Detach (Amaga la finestra i la guarda en una stack interna)
ALT+a : Treu l'ultima finestra de l'stack i la mostra.
CTL+ALT+c : Tanquem la finestra.
A més podem manejar facilment les finestres flotants.
ALT+RET : Intercamviem la finestra seleccionada amb la gran del layout Tiled.
ALT+m : Maximitza la finestra seleccionada (i la posa en una nova pàgina dinamica).
ALT+space : Canviem el punter de selecció de les finestres flotants a les tiled.
ALT+SHIFT+space : Canviem la finestra actual perque sigui foltant o tiled.
El mouse..
Aquell gran desconegut...ens permet moure les finestres amb l'
ALT i el botó de l'esquerra o el de la dreta per redimensionarles, les podem moure agafant-les pel titol per canviar-los de posició dins del Tile.
Si clickem al nom de la pagina ens mostrarà el mosaic de pagines (ALT+SHIFT+P) i clickant a la barra del costat ens canviarà al següent pàgina. Tot molt cuco x).
WMII.RC
La barra per defecte del wmii ens mostra el output del `date` i el `uptime`. Que està bé, pq et situa dins de la dimensió temporal, pero es un pel soso.
Aixi que he fet un petit escriptillu, després us ho explico..
console:
: $; echo "mesure.wmii &" >> ~/.wmii-2.5/wmiirc
: $; echo "
#!/usr/pkg/bin/rc
one=`{wmiir read /bar/new}
two=`{wmiir read /bar/new}
foo=`{wmiir read /bar/new}
fn sigint {
pkill mesure
wmiir write /bar/ctl 'destroy '^$one
wmiir write /bar/ctl 'destroy '^$two
wmiir write /bar/ctl 'destroy '^$foo
exit
}
fn mesure.input {
while() {
Data=`{mesure -atDvlc 2 -i eth0 | awk '{print "IN:"$1 $2}'}
wmiir write /bar/$one/data $(Data)
}
}
fn mesure.output {
while() {
Data=`{mesure -atDvlc 2 -o eth0 | awk '{print "OUT:"$1 $2}'}
wmiir write /bar/$two /data $(Data)
}
}
fn mesure.cpu {
while() {
Data=`{mesure -aC cpu0 -lc 4 | awk '{print "CPU:"$1 $2}'}
wmiir write /bar/$foo/data $(Data)
}
}
mesure.input &
mesure.output &
mesure.cpu &
" > ~/.wmii-2.5/mesure.wmii
: $; chmod +x ~/.wmii-2.5/*
Com veieu la sintaxi de
RC es de shell, sols que més avançada.
Amb la funció
mesure.cpu llegeixo el consum de la CPU (cpu0). El fet que haguem de fer 4 counts (-c) es un workaround que tinc pensat arreglar abans del release. Aixo és ens actualitzara les mesures de cpu i xarxa cada 4 segons.
Lo guapo del wmii es que tota la configuració la fem amb scripts, que tant poden ser perl, ruby, C o Java si volem xD, ja que totes les accions es fan a través d'un sistema de fitxers virtual (IXP) accessible per shell amb
wmiir:
console:
$ wmiir read /
bar/
ctl
keys/
menu/
wm/
$ wmiir read /menu
cmd
ctl
history/
items/
lookup
norm-style/
precmd
retarded
sel-style/
size
style/
(...)
Alguns links que venen i no venen al cas:
>>
WMII - wmii homepage
>>
A Drug War Carol - Un comic-web que m'ha passat el tuxi.
>>
Carne o pescado? - Una metafora sobre el software lliure interessant.
>>
PAM USB - Autentificació pam amb un dongle USB.
>>
Fotos acollonants del Marenostrum - Es rollo quake x"
[add comment] [view comments] (1)