martes, 27 de julio de 2010

gestor de ventana DWM


Aunque de normal siempre uso el terminal de comandos (especialmente desde que tengo un ordenador de recursos limitados), hay veces que no queda más remedio que entrar en modo gráfico (véase, cuando quiero navegar por Internet a este blog, o cualquier pagina que requiera java, imágenes, o vídeos). Entonces es cuando se hace necesario un gestor de ventanas, y entonces es cuando me planteo uno que no asesine los recursos de mi sistema, y se pueda controlar totalmente por comandos de consola. La solución fue DWM (dinamic window manager). Dwm es un gestor de ventanas mínimo, que no tiene scripts de configuración, sino que se especifica sus características estéticas antes de compilarlo, proceso que no tarda más que unos pocos segundos, y se puede repetir en cualquier momento.Se le pueden ir añadiendo módulos, con funcionalidades, como conky, para visualizar información de sistema. No manejas ventanas, ni iconos, sino que las aplicaciones se abren a pantalla completa, o si lo prefieres, en mosaico, ocupando secciones de pantalla.

Para instalar necesitaras el código fuente (seleccionar el más reciente)
Si quieres poder usar el lanzador de ejecutables, descarga aquí la ultima versión de dmenu
Si quieres información de sistema, como temperatura de cpu, carga de procesador.. descarga conky
Y por ultimo, si quieres tener un fondo de pantalla, tienes que instalar Esetroot de aquí

Descomprime el código fuente de DWM (tar xvf), y entra en el directorio. Dentro, hay que hacer un ./configure && make && make install. Después de hacer el make, se crea una librería llamada config.h a partir de ahora, cualquier modificación en DWM, se reflejará ahí (por ejemplo, el color de la barra superior, o la consola empleada para trabajar). Tras guardar, harás de nuevo un make install. Para mi escritorio, tuve que editar esta parte:

/* See LICENSE file for copyright and license details. */

/* appearance */
static const char font[] = "-*-terminus-medium-r-*-*-16-*-*-*-*-*-*-*";
static const char normbordercolor[] = "#36ff00";
static const char normbgcolor[] = "#000000";
static const char normfgcolor[] = "#36ff00";
static const char selbordercolor[] = "#0066ff";
static const char selbgcolor[] = "#36ff00";
static const char selfgcolor[] = "#000000";

(los colores tienen que estar en valor hexadecimal, yo usé gimp para sacarlos. 36ff00 es el verde radioactivo, 000000 es negro). Como veis se puede dar distintos colores para el borde, fondo y letras de los elementos seleccionados o no. Yo solo quise usar esta gama, pero sois muy libres de dejarlo como os plazca

Para usar aterm en vez de la predeterminada xterm, tuve que modificar la entrada correspondiente. aterm me gusta más porque soporta transparencias y colores.

/* commands */
(...)
static const char *termcmd[] = { "aterm", NULL };
(...)

jugad como queráis con config.h No es muy complicado intuir para que sirve cada cosa.

Es buen momento para instalar el dmenu, esetroot, conky. Todos ellos son un simple descomprimir, ./configure, make, make install, si hay problemas de dependencias, ya sabéis, a buscar y cumplirlas, que para eso si alguien ha leído hasta aquí es que no es novato en Linux.

tras hacerlo, hay que editar el archivo .xinitrc si iniciáis el modo gráfico con startx. Si lo hacéis automáticamente mediante GDM, XDM, o lo que sea, entonces googlead, porque yo no lo he hecho de ese modo, y no lo he probad. Recordar que .xinitrc se encuentra en el directorio $HOME

Lo mínimo sería comentar todo, y añadir

Esetroot -c
conky | while read -r; do xsetroot -name "$REPLY"; done &
sleep 1
done | /usr/local/bin/dwm

si, el sleep 1 es necesario para ir actualizando la pantalla. De todos modos, si os fijáis, en mi screenshot, tengo información en la barra de mi wifi, volumen, fecha y hora. Para lograrlo hay que poner más opciones en el .xinitrc. Dejo aquí mi .xinitrc al completo, para que trasteéis con él

-------------------------------------------------------------------------------------------

#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
Esetroot -c /root/Miscelanea/fotos/SE-Bathory1024.jpg
conky | while read -r; do xsetroot -name "$REPLY"; done &
#conky
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi

if [ -f $userresources ]; then
xrdb -merge $userresources
fi

if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi

if [ ! -x /usr/bin/cpp ]; then
NOCPP="--no-cpp"
fi

wifi(){
STADO="X`/sbin/iwgetid`"
if test "$STADO" != "X" ; then
ESSID="`/sbin/iwgetid |awk -F ":" '{print $2}'|sed -e 's/"//g'`"
LINK="`awk '/wlan0:/ {print $3}' /proc/net/wireless |sed -e 's/\.//g'`"
echo "$ESSID Link: $LINK/70"
else
echo "Sin conexion"
fi
}

volumen(){
ESTADO="`amixer get PCM |awk '/Front\ Left:/ {print $7}'`"
if test "$ESTADO" != "[on]" ; then
echo " Mudo"
else
echo " `amixer get PCM |awk '/Front\ Left:/ {print $5}' | sed -e 's/\[//g'|sed -e 's/%\]//g'`%"
fi
}

# Start the window manager:

while true
do
xsetroot -name "[ Vol: `volumen` ] [ `wifi` ] `date +"[ %a %d %b %Y ] [ %H:%M:%S ]"`"
sleep 1
done | /usr/local/bin/dwm

ahora a editar .conkyrc (también en $HOME)

# --- Window Layout & Options --- #
own_window yes
own_window_colour brown
own_window_transparent yes
own_window_type override
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
use_spacer false
use_xft yes
alignment top_right
#alignment top_left
gap_x 0
gap_y 30

# --- Colours, Sizes, Fonts & Margins --- #
update_interval 2.0
minimum_size 400 0
stippled_borders 3
border_margin 2
border_width 2
default_color 8f8f8f

# --- Text --- #
draw_outline no
draw_borders no
font MgOpenModata:size=8
uppercase no
draw_shades yes



TEXT

${color grey} | ${color grey}Uptime:${color 6795ae} $uptime ${color grey} | ${color grey}CPU:${color red} $cpu% ${color grey} | ${color grey}RAM:${color 6795ae}$mem/$memmax ${color grey} | Swap:${color 6795ae} $swap/$swapmax ${color grey} | HDD:${color 6795ae} ${fs_used /bin/bash}/${fs_size /bin/bash} ${color grey} | Down:${color 6795ae}${downspeed eth0} k/s ${totaldown eth0} ${color grey} | Up:${color 6795ae} ${upspeed eth0} k/s ${totalup eth0}
${offset 240}${color slate grey}UpTime: ${color }$uptime
${offset 240}${color slate grey}Kern:${color }$kernel
${offset 240}${color slate grey}CPU:${color } $cpu% ${acpitemp}C
${offset 240}${cpugraph 20,130 000000 ffffff}
${offset 240}${color slate grey}Processes: ${color }$processes
${offset 240}${color slate grey}Running: ${color }$running_processes

${offset 240}${color slate grey}Highest CPU:
${offset 240}${color #ddaa00} ${top name 1}${top_mem cpu 1}
${offset 240}${color lightgrey} ${top name 2}${top cpu 2}
${offset 240}${color lightgrey} ${top name 3}${top cpu 3}
${offset 240}${color lightgrey} ${top name 4}${top cpu 4}

${offset 240}${color slate grey}Highest MEM:
${offset 240}${color #ddaa00} ${top_mem name 1}${top_mem mem 1}
${offset 240}${color lightgrey} ${top_mem name 2}${top_mem mem 2}
${offset 240}${color lightgrey} ${top_mem name 3}${top_mem mem 3}
${offset 240}${color lightgrey} ${top_mem name 4}${top_mem mem 4}

${offset 240}${color slate grey}MEM: ${color } $memperc% $mem/$memmax
${offset 240}${membar 3,100}
${offset 240}${color slate grey}SWAP: ${color }$swapperc% $swap/$swapmax
${offset 240}${swapbar 3,100}

${offset 240}${color slate grey}ROOT: ${color }${fs_free /}/${fs_size /}
${offset 240}${fs_bar 3,100 /}
${offset 240}${color slate grey}NET:
${offset 240}${color}Up: ${color }${upspeed eth0} k/s
${offset 240}${upspeedgraph wlan0 20,130 000000 ffffff}
${offset 240}${color}Down: ${color }${downspeed wlan0}k/s${color}
${offset 240}${downspeedgraph wlan0 20,130 000000 ffffff}

Bueno, lo dejais como queraís. sin ello, el conky no funcionará. Puede sacaros cualquier informacion, inclido de todos los procesadores (no necesito para mi pobre monoprocesador de 866mhz). Este archivo tiene las rutas de mi equipo, entonces tendréis que modificalras a vuestras características.

Por fin, para ejecutar a partir de ahora, solo hay que hacer startx, o lo que hagais para iniciar servidor gráfico. El esfuerzo merece la pena

uso

alt+shift+enter ==> abre la consola, o varias
alt+m ==> abre el modo monoculo, el programa activo en ese escrotorio al pasar el ratón por encima, ocupa pantalla ocmpleta
alt+t ==> todos los programas activos en ese escritorio comparten la pantalla en mosaico
alt+ ==> cambia al escritorio especificado por el numero. Hay 9 escritorios simulatáneos
alt+p ==> (solo funciona con dmenu) abre la lanzadera de ejecutables. Empiezas a escribir el nombre, y en el menu aparecen todas las posibilidades. Usa las flechas y enter para seleccionar y ejecutar
alt+shift+c ==> mata el proceso seleccionado, es lo que se usa para cerrar programas también

recuerda que para seleccionar entre los programas, el que esté en primer plano es el que tenga el ratón encima.

En fin, que lo disfrutéis

martes, 20 de julio de 2010

La nueva sociedad



Estaba escuchando la radio, en concreto una entrevista a un economista. Hay algo que se me ha quedado totalmente grabado. Hablaba como si el objetivo de todo ciudadano fuera amasar inmensas fortunas, como si todo el sistema fuera eso, olvidando que, a cada dia que pasa, las desigualdades sociales, no ya en los países tercermundistas sino incluso en los mal llamados "ricos" aumentan imparables. Estamos en una época de retroceso en todos los aspectos. El sistema capitalista ha alcanzado su límite, mientras las necesidades aumentan. Sus propios defectos están constriñendolo. La teoría de Adam Smith sobre la libre competencia ha perdido su validez, ya que aquellos capitalistas decimonónicos han ido creciendo, y comiéndose entre ellos, hasta llegar a las mega corporaciones que tienen más poder que los estados. Ahora, el moribundo sistema capitalista no puede distribuir la riqueza que genera entre todos, sino sólo entre la minoría dentro de la minoría de los privilegiados. Las clases medias, el estado del bienestar están muriendo, y nada puede salvarlo. La ironía no tiene piedad, la historia sigue, y Francis Fukuyama, con su libro "El final de la historia", queda en ridículo.

Volviendo al día a día. Fijaros, suben el IVA, suben los impuestos, pero... Los impuestos a altos patrimonios, por tasas, desaparecen. Los ricos, pagan cada vez menos, y la carga de sostenerles a ellos y al estado pasa a hombros de los trabajadores, que son fustigados con los nuevos impuestos, con la perdida de prestaciones sociales, de derechos laborales, y la censura cada vez mas brutal. En un estado realmente social, la única función de un rico, es la de pagar impuestos, para así poder mantener los servicios públicos. En un estado autoritario, los trabajadores sostienen todo el edén para los mangantes al poder. El enemigo de la democracia resulta ser el mismo estado, que NO es de todos.

Algunos -iluminados-, replican diciendo que esto no es por el gobierno socialista, que son directivas Europeas. Yo les digo, que un auténtico socialista (no socialdemócrata, sino un socialista de verdad), en ese caso, no estaría intentando contentar a los amos de Europa, sino buscando el modo de salir de la UE cuanto antes. Porque la perdida de las ayudas económicas que nos brinda Bruselas, que no se engañe nadie, solo lo notarían la clase dirigente del país, es decir, Emilio Botín la familia De Alba, y cia. Con un buen sistema social, nosotros, simples mortales, podríamos vivir mucho mejor, con sanidad gratuita y de calidad, con un buen sistema educativo, y con el futuro bien asegurado, y para ello no hay que engañarse, no es necesario más dinero, lo que hace falta es un modelo de distribuirlo y planificarlo en servicios, totalmente antagónico con el capitalismo, aunque éste sea "refundado y nuevo".

viernes, 16 de julio de 2010


Vivo en €uropa, vivo en la €uropa Social, que garantiza mis derechos y me defiende de la arbitrariedad, €uropa pacífica, que colabora con EEUU en Afganistán "defendiendo la democracia" a tiros y asesinando civiles díscolos con las nuevas ideas contradictorias de "Libertad bajo vigilancia".

Ahora lo último es aprobar la jornada laboral de 65 horas, y no contar las guardias como trabajo. Menos mal, ahora ya se que si tengo una urgencia, me atenderá un médico, que lleva trabajando 16 horas seguidas gratis.. Ah! pero eso no es trabajo, esa persona es un esclavo! (¿o cómo se llama sino a quien vende su fuerza de trabajo a cambio de nada?). Desde luego, que si no comete un error muy grave con mi diagnóstico, esa persona no es solo un genio, sino que desde luego que tiene que tener vocación, para salvar vidas mientras no tiene ni para comer, ni tiene una vida fuera del hospital para sentirse un poco más feliz.

Pero me voy por las ramas. El comisario europeo de Asuntos Sociales, Vladimir Spidla, ha declarado que el convenio es un “nuevo impulso para la Europa social". Desde luego, menudo comisario tenemos, totalmente equivalente a que aparezca Hitler declarando "El exterminio de los agentes antisociales, ha permitido que baje el precio de la vivienda". ¿Sentido? pues el mismo que decir que consentir jornadas laborales de 13 horas diarias es reforzar la €uropa social. Yo creo que deberían directamente esclavizar a los inmigrantes, y reinstaurar el trabajo infantil, volviendo al siglo XIX, para que así, con el shock, no nos dé tiempo a echar en falta una época no tan lejana, en la que los ciudadanos al menos teníamos unos cuantos derechos. Porque francamente, si para esta gentuza que nos gobierna solo somos deshechos, ¿Cómo es que aún hay gente que cree en ellos, y los apoya?.

En el otro lado de la moneda tenemos a Neo, no el de Matrix, sino un hacker, un auténtico héroe que ha utilizado sus conocimientos de hacking para hacer públicos los abusos de la clase política de su país (Letonia). El ha roto la ley, pero no veo que hay de malo en ello, cuando la ley no se emplea como herramienta para el orden público, sino para el orden represor. La popularidad que ha ganado este héroe, quizá le salve de la cárcel, ya que muchos políticos han tenido que dar freno a su corrupción por su culpa.

Ya lo dijo Def con Dos en una de sus canciones "Piensa, y que no te pillen"

sábado, 3 de julio de 2010

Huelga general

Estamos en un momento de huelga general, al menos en teoría, porque en lo que es mi región no se nota apenas. Esta huelga a sido convocada por los principales sindicatos del país.

Bien, esto me lleva a un par de pensamientos. El primero es la validez de los sindicatos para defender los intereses de los trabajadores, cuando con su continuo "pacto social" han acuchillado por la espalda continuamente al trabajador. No existe una cosa como consenso social. El empresario SIEMPRE vivirá de explotar al trabajador. La patronal es un enemigo, no se puede ceder ni un milímetro a sus exigencias. No hay excusa de que se marchen. Si ellos amenazan, es que los sindicatos son demasiado débiles para hacerles frente, o peor aun, que es lo que esta ocurriendo: Los sindicatos trabajan del lado del gobierno por los intereses de la patronal, y no para garantizar los derechos sociales tan duramente ganador por la lucha obrera, que permitían la supervivencia del estado del bienestar.

Ya no existe estado de bienestar, sin el miedo a los países socialistas tras la caída de la URSS en 1991, no tiene sentido para los estados garantizar la felicidad de los ciudadanos. Es mas rentable utilizar un estado-papa que controla todo, y en el que los ciudadanos seamos una molestia, y en ello, los sindicatos han tenido un papel fundamental.

La huelga general no es mas que fachada. Nunca se va a conseguir nada. En Grecia la lucha es feroz, pero ni se plantea a nivel europeo el subir impuestos a las tasas mas altas, y eliminar los recortes de derechos básicos. Es necesaria para esta nueva era que la falsa democracia pierda su mascara, y pasemos a una era de abierto fascismo parlamentario, que siempre ha estado latente, pero camuflada.

Los sindicatos, los partidos políticos que no se oponen al proyecto Europeo, y siguen el "juego democrático" no son fiables. El ciudadano esta solo, y es imperante el organizarse para luchar.

Aunque llegue un momento en el que sea necesario plantearse acciones a gran escala, no hace falta que todo el mundo sea un gran revolucionario.

La llamada es simple: Pinta con spray los radares anti velocidad, elimina los badenes ilegales, tapa cámaras de seguridad que graban las calles, oponte a cualquier ley nueva que criminalize al ciudadano. Organiza lucha trabajadora a nivel de empleados, no te fíes de los grandes sindicatos. Toda pequeña acción de rebeldía puede animar a otras personas a hacer lo mismo. Lo importante no es la acción en si, sino el evitar ESTANCARSE y dormirse. No hay que ponérselo fácil al fascismo

Si entiendes ingles, este libro puede ser de gran ayuda.