el tema es, que como no tengo conexion en casa, no puedo entrar aqui, y claro, me sobra MUUCHO tiempo. Y claro, poco antes del "corte", me habia dado por los entornos ligeros, ideales sobre todo para mi pobre EEEPC. El caso es, que como tengo tanto tiempo, pues mientras estudiaba (en el descanso, hombre, en el descanso) (OFFTOPIC: SI, esto va a ser largo. tengo mono de escrinir... ), mientras estudiaba me dio por optimizarlo mas y hacer, dentro de lo razonable (estamos hablando de dwm), mas agradable la experiencia de usuario. y estuve haciendo unos scripts para el arranque automatico de las X, de screen, etc.
el resultado: un monton de llamadas a bash (a ver si va la imagen, porque la he subido desde el portatil y he copiado la direccion a mano)
http://yfrog.com/f/0420100920115001800x480scp/ explico la secuencia de arranque:
1. yo me logueo. De ahi, bashrc llama al X launcher, que comprueba si las X estan corriendo, y si no es asi las lanza.
X launcher llama a startx que llama a .xinitrc.
2. las X llaman a la terminal, que lanza bash. en ese momento, el bashrc llama a screen-launcher, que comprueba si screen esta corriendo y si no, lo lanza (nota: ese es exactamente el comportamiento que quiero, no quiero que me cree una sesion cada vez que abro una consola, ni tampoco que restaure la sesion antigua. )
3. screen abre lo que le he dicho que abra.
mi idea era que hiciera algo asi:
logueo - comprobacion de las X (SIN llamar antes a bash) - bash si las X estan corriendo,
o .xinitrc (directamente) si no estan corriendo - X - consola que llama a screen - cosas de screen
con eso, la primera llamada a bash es la que hace screen (o como mucho, la que se produce si screen esta ya corriendo).
arbol:
Código:
init
`- procesos extra
`- /bin/login
`- ~/X-launcher
`- .xinitrc
`- dwm
| `-wterm
| `- screen
| `-bash (y cosas de screen)
`- /usr/bin/X (server?)
otra: NO me vale sustituir bash por otra shell. quiero llamadas directas.
bueno. si alguien tiene alguna idea, que la vaya pensando, que yo tardare seguramente una semana en volver.
Editado -- hace menos de un minuto --bueno. pues hoy me aburria, asi que traigo la solucion por si hay algun fanatico mas de screen...
lo primero. el nuevo arbol de procesos:

la "division" de screen es porque he hecho un detach y luego un attach, no porque haga cosas raras.
va. vamos a ello. ojo, trabajamos como root.
a)
arranque automatico de las X: en el /etc/profile, al final:Código:
[ -z "$(ps xa |grep /usr/bin/X | grep -v grep)" ] && startx
#nota: la comprobacion parece que funciona, pero si alguien tiene problemas, que avise.
explicacion: en el login, lo primero que se lee es el /etc/profile. desde aqui, comprobamos que no esten corriendo las X, y las lanzamos.
b)
arranque automatico de screen al abrir la consola: (que por supuesto se abre sola, pero eso es de otro sitio....)
en el ~/.bashrc, despues del [-z "$PS1" ] && return : (esta al principio)
Código:
## if not runing screen, launch it and exit
[ -z "$STY" ] && screen -d -RR && return
explicacion:
- el [ -z "$STY" ] solo sera verdadero si screen esta corriendo (screen setea la variable)
- despues, si es cierto, lanzamos screen. el -d -RR es para que se conecte a una seison abierta. si buscas el comportamiento que pedia yo en el post anterior, solo quitalo y deberia funcionar.
- por ultimo, le decimos que salga (no es logico que siga cargando el resto del .bashrc....)
ideas desde aqui:
http://fixunix.com/sun/119181-using-gnu ... shell.html