Fluxbox con esteroides en Debian

sábado, septiembre 19, 2009

Fluxbox siempre me había parecido un gestor de ventanas genial, pero consideraba que aún le faltaban algunas cosas para ser un entorno de escritorio "serio", capáz de darle competencia a GNOME... Hasta hoy.

Me puse a experimentar con la mini Acer y dije... "¿Por qué no? Vamos a meterle Fluxbox a ver que tal corre" y pues, dejénme decirle que los resultados que obtuve son simplemente impresionantes.

Al momento de hacer esto lo que tenía en mente era lograr un entorno de escritorio 100% funcional (tanto o más que GNOME) pero manteniendo siempre el bajo consumo de recursos y pensando siempre en una frase que leí una vez (si mal no recuerdo en la descripción del paquete Fluxbox para Debian):

Si quiere que su escritorio se parezca a Windows entonces no use Fluxbox

Primero vamos a instalar los paquetes básicos:
# aptitude install fluxbox conky eterm pcmanfm gqview audacious wbar
Explico para qué cada cosa:

  • fluxbox: Creo que es obvio ¿no? El gestor de ventanas
  • conky: Un monitor del sistema bien ligero y configurable
  • eterm: Un emulador de terminal ligero (usado en Enlightenment) o xterm para los más rudos
  • pcmanfm: Un explorador de archivos rápido y liviano. Para no explicar mucho diré que es un Nautilus a dieta xD. También podemos instalar thunar, el explorador de archivos de XFCE
  • gqview: Un visor de imágenes ligero. También podemos usar eog (el visor de imágenes de GNOME)
  • audacious: Un reproductor de música super liviano y parecido a Winamp (para los nostálgicos :'( )
  • wbar: Un dock que imita la famosa barra de Mac OS X. Útil para usarla como lanzador de aplicaciones

Nuevamente resalto que la selección de las aplicaciones se hizo en base a la premisa de "aplicaciones ligeras y de bajo consumo", sin embargo podemos instalar cualquier otra aplicación que nos guste: pidgin, inkscape, deluge, etc, etc, etc.

¡OJO! Si no tenemos instalado GNOME necesitaremos instalar unos paquetes adicionales; pero seré sincero... NO he hecho la prueba desde una instalación sin GNOME. Me imagino que instalando los paquetes (y sus dependencias) es más que suficiente pero no puedo asegurar. Si no funciona así, griten y yo intentaré probar para actualizar el post con el procedimiento correcto (o si prueban ustedes y me dicen, mejor xD). Entonces, si no tenemos problemas de espacio en el disco recomiendo instalar:

# aptitude install gnome-desktop-environment

O si son más aventureros y desean experimentar, solo instalamos:

# aptitude install gnome-power-manager gnome-settings-daemon network-manager

Bueno, vamos ahora con la parte divertida.

Configuremos Conky

Conky como dije anteriormente es un monitor de sistema muy liviano. Allí podemos monitorear cientos de parametros de nuestro equipo y se ve bastante bien con Fluxbox :)

Lo primero que debemos hacer es habilitar el soporte de la extensión Double Buffer (DBE) del servidor X para evitar el parpadeo, ya que sin ésta no logrará actualizar la pantalla con suficiente rapidez. Para ello, vamos al archivo /etc/X11/xorg.conf y agregamos una línea con Load "dbe" en la sección Section "Module". Debería verse algo así:

Section "Module"
    Load           "dbe"
    Load           "extmod"
    Load           "type1"
    Load           "freetype"
    Load           "glx"
EndSection

Luego copiamos el archivo de configuración de ejemplo que viene con el Conky a nuestra carpeta personal:

$ cp /etc/conky/conkyrc.conf ~/.conkyrc

y lo abrimos con nuestro editor de texto favorito. Se darán cuenta que el archivo está dividido en dos partes. La primera contiene las opciones de configuración del programa (alteran su comportamiento). La segunda define las variables, el texto, y los gráficos que se mostrarán en pantalla.

La cantidad de variables y opciones que se pueden manejar son muchísimas, así que dejo la lista completa de opciones para configuración y de variables a monitorear. Si eso no es suficiente, aquí pueden ver unos cuantos screenshots con sus respectivos archivos de configuración para que echen a volar su imaginación y además les dejo mi archivo de configuración (hoy me siento benevolénte :P)

# Conky, a system monitor, based on torsmo
#

alignment top_right
background no
border_width 1
cpu_avg_samples 2
default_color white
default_outline_color white
default_shade_color white
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
use_xft yes
xftfont DejaVu Sans Mono:size=10
gap_x 5
gap_y 60
minimum_size 5 5
maximum_width 200
net_avg_samples 2
no_buffers yes
out_to_console no
out_to_stderr no
own_window no
own_window_class Conky
own_window_type desktop
stippled_borders 0
update_interval 1.0
uppercase no
use_spacer none
show_graph_scale no
show_graph_range no

TEXT
$nodename # $sysname $kernel on $machine
$hr
${color slate grey}${time %a, }${color }${time %d %b %G}
${color grey}Uptime:$color $uptime_short
${color slate grey}Kernel: $kernel
${color black}CPU:
$color ${cpu cpu0}% ${cpubar cpu0 4}
$color ${cpu cpu1}% ${cpubar cpu1 4}

${color grey}RAM:$color $mem / $memmax
$color ${memperc}% ${membar 4}
${color grey}Swap:$color $swap / $swapmax
$color ${swapperc}% ${swapbar 4}

${color grey}Processes:$color $processes  ${color grey}Running:$color $running_processes
$hr
${color grey}File systems:
 / $color${fs_used /}/${fs_size /} 
${fs_bar 6 /}
${color grey}Networking:
Up:$color ${upspeed eth0} ${color grey} - Down:$color ${downspeed eth0}
$hr
#${color grey}Name              PID   CPU%   MEM%
#${color lightgrey} ${top name 1} ${top pid 1} ${top cpu 1} ${top mem 1}
#${color lightgrey} ${top name 2} ${top pid 2} ${top cpu 2} ${top mem 2}
#${color lightgrey} ${top name 3} ${top pid 3} ${top cpu 3} ${top mem 3}
#${color lightgrey} ${top name 4} ${top pid 4} ${top cpu 4} ${top mem 4}

Configuremos Wbar

Wbar es un lanzador de aplicaciones que emula algunas características de la barra de Mac OS X. Es altamente configurable y la más decente que he visto hasta ahora... ¡Toma eso Gnome-Do!

Al igual que Conky trae un archivo de configuración de ejemplo y solo debemos copiarlo a nuestra carpeta personal con el nombre .wbar:

$ cp /usr/share/wbar/dot.wbar ~/.wbar

El archivo define cada uno de los lanzadores de la barra tiene el siguiente formato:

i: /ruta/del/icono
c: comando_a_ejecutar
t: Título del lanzador


La primera entrada corresponde a la imagen de fondo de la barra y no debe llevar comando.

Recomiendo hacer una selección de los iconos que desea para cada lanzador y colocarlos en una carpeta. A continuación imprimo mi archivo de configuración de lanzadores (en mi caso hice la selección de los iconos y los coloque en una carpeta llamada personal en /usr/share/wbar/iconpack/:

i: /usr/share/wbar/iconpack/wbar.osx/osxbarback.png
c:
t: /usr/share/wbar/iconpack/wbar.osx/font/16

i: /usr/share/wbar/iconpack/personal/gnome-fs-home.png
c: pcmanfm
t: Explorador de archivos

i: /usr/share/wbar/iconpack/personal/mozicon50.xpm
c: firefox
t: Firefox

i: /usr/share/wbar/iconpack/personal/gnome-terminal.png
c: xterm
t: Terminal

i: /usr/share/wbar/iconpack/personal/pidgin-menu.xpm
c: pidgin
t: Pidgin

i: /usr/share/wbar/iconpack/personal/text-editor.png
c: gedit
t: Gedit

i: /usr/share/wbar/iconpack/personal/audacious-32.xpm
c: audacious
t: Audacious

i: /usr/share/wbar/iconpack/personal/xchat.png
c: xchat
t: XChat

La otra parte interesante del wbar son los argumentos que se le pasan al momento de ejecutarlo. A continuación la lista de opciones:

Opciones
 -config: ruta del archivo de configuración (ej: $HOME/.wbar)
 -above-desk: para ejecutarlo encima del escritorio
 -idist i: distancia entre los iconos (ej: 1)
 -isize i: tamaño de los iconos (ej: 32)
 -zoomf i: factor de zoom (ej: 1.8)
 -jumpf i: factor de salto (1.0 - 0.0)
 -pos|p: posición (top | bottom | left | right | center)
 -dblclk i: milisegundos para el double click (0: un solo clic)
 -bpress: los iconos parecen presionados al darle clic
 -vbar: barra vertical
 -balfa i: transparencia de la barra (0-100)
 -falfa i: transparencia de la barra cuando no tiene foco (0-100)
 -nofont: deshabilita el dibujado de las fuentes

Los argumentos que le paso al wbar los pueden ver en el archivo startup de Fluxbox un poco más abajo.

Configuremos Fluxbox

~/.fluxbox/init

Este archivo maneja la configuración general de Fluxbox. Podemos definir la posición, el ancho y los elementos que deseamos en la barra de tareas. El archivo es extenso y con muchas opciones, así que mostraré un pedazo de mi archivo con las opciones más relevantes. Para información más detallada ...

session.screen0.toolbar.alpha: 255                    # Transparencia de la barra de herramientas
session.screen0.toolbar.widthPercent: 100             # Ancho de la barra
session.screen0.toolbar.visible: true                 # Mostrar la barra de tareas
session.screen0.toolbar.tools: prevworkspace, workspacename, nextworkspace, iconbar, systemtray, clock  # Herramientas que deseamos motrar (y el orden en que aparecerán)
session.screen0.toolbar.placement: BottomCenter       # Posición de la barra
session.screen0.toolbar.autoHide: false               # Ocultar automaticamente
session.screen0.workspacewarping: true                # Cambiar una ventana de escritorio al moverla hacie los extremos laterales
session.screen0.workspaces: 4                         # Cantidad de escritorios
session.screen0.strftimeFormat: %d %b, %a %02k:%M:%S  # Formato de la hora del reloj
session.screen0.workspaceNames: Workspace 1,Workspace 2,Workspace 3,Workspace 4,  # Nombre de cada escritorio

# Ejecutar el wbar con un delay de 5 seg para esperar que carguen todos los demás programas
session.screen0.rootCommand: sleep 5 && wbar -pos left -above-desk -vbar -jumpf 0.0 -zoomf 1.5 -idist 1 -bpress -config $HOME/.wbar

El orden en que se definan las herramientas será el orden que tengan en la barra. Las posibles herramientas son: workspacename, prevworkspace, nextworkspace, iconbar, systemtray, prevwindow, nextwindow y clock

~/.fluxbox/startup

Aquí definimos que aplicaciones se ejecutan al inicio del sistema. Mostraré mi archivo y comentaré cada opción.

#!/bin/sh
#
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.

# Change your keymap:
xmodmap "/home/satanas/.Xmodmap"

# Applications you want to run with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE END.

conky -d -b &
nm-applet --sm-disable &
gnome-power-manager --sm-disable &
gnome-settings-daemon &

# And last but not least we start fluxbox.
# Because it is the last app you have to run it with ''exec'' before it.

exec fluxbox
# or if you want to keep a log:
# exec fluxbox -log "/home/satanas/.fluxbox/log"


conky -d -b: El monitor del sistema ejecutado con double buffer y en segundo plano
nm-applet: El Network Manager de GNOME que nos permite manejar nuestras redes
gnome-power-manager: El applet de GNOME que entre otas funciones nos muestra el estado de la batería
gnome-settings-daemon: El demonio de configuración de GNOME. Esto es para que podamos ver los iconos y el tema de GNOME sin problemas (necesario para pcmanfm)
wbar: La famosa barrita para lanzar aplicaciones ;)

~/.fluxbox/keys

En este archivo configuramos las combinaciones de teclas (atajos de teclado) de nuestro entorno de escritorio. Fluxbox denomina a la tecla Alt como Mod1 y a la innombrable (la tecla Super o Win) como Mod4. La sintaxis del archivo es:

[teclas]: [acción] [parámetros]

Una lista completa de posibles acciones podemos verla en http://fluxbox.sourceforge.net/docbook/en/html/x359.html

Algunos atajos útiles serían:

  • Cambiar de ventana con Alt + Tab
    Mod1 Tab :NextWindow
  • Cambiar al escritorio 1 con Ctrl + F1 (se debe repetir para cada escritorio que tengamos)
    Control F1 :Workspace 1
  • Abrir un terminal con Alt + F1
    Mod1 F1 :Exec eterm
  • Abrir un diálogo de "Ejecutar" con Alt + F2
    Mod1 F2 :Exec fbrun

Resultado


Un agradable y eficiente escritorio como el que se ve en las fotos :)





Un último tip es habilitar el plugin StatusIcon de Audacious (tal como se ve en la imagen de abajo) para que podamos minimizarlo a la bandeja de sistema (haciendo clic en el icono).


¡Uff! con tanto configurar y escribir ya me dió sueño, así que me voy. Hasta la próxima

Otras referencias:
[1] http://www.gentoo.org/doc/es/fluxbox-config.xml
[2] http://fluxbox.sourceforge.net/docbook/en/html/chap-toolbar.html
[3] http://debianitas.net/doc/minicomos/Todo%20Sobre%20FLUXBOX/html/fluxbox.html
[4] http://www.estrellateyarde.es/so/fluxbox