Autor : rlazo
Fecha : 20/02/2004
Openbox es un gestor de ventanas basado en blackbox. El proyecto Openbox tiene como objetivo principal el cumplir estándares y, secundariamente, el aspecto visual, pero no por eso pienses que su aspecto es malo, todo lo contrario.
Entre las ventajas de este gestor tenemos que es ligero y veloz, puede utilizar combinaciones de teclas al estilo emacs, acciones del ratón configurables, puede ser utilizado stand-alone o como reemplazo de los gestores de ventana de KDE o GNOME. En este documento veremos cómo configurarlo como gestor principal, además de instalar feh, un visualizador de imágenes que utilizaremos para establecer el papel tapiz y fbpanel, para proveer una barra de tareas, paginador de escritorios y bandeja para íconos (tray).
Para instalar Openbox en nuestro sistema FreeBSD, no necesitamos más que ejecutar uno de estos comandos:
HellFire# cd /usr/ports/x11-wm/openbox && make install clean clean-depends
HellFire# pkg_add -vr openbox
Si son tan desesperados como lo soy yo, querrán tener algo funcionando lo antes posible. Ahora modificaremos, o en caso de que no lo tengamos lo crearemos, el archivo .xinitrc de manera que quede así:
exec openbox
Para ver nuestro gestor de ventanas en acción simplemente ejecutamos:
startx
Si todo ha salido bien hasta ahora, lo único que veras es el puntero del ratón y… nada más!. El fondo es el plomo por defecto del servidor X. Si presionas con el botón derecho del ratón verás el menú de openbox. Quizás este aspecto no sea lo que esperabas, pero recién estamos empezando,así que paciencia.
Esta configuración es básica y sólo de referencia. Para una información más profunda referirse a la página de documentación de Openbox
Primero necesitamos copiar los archivos de configuración a nuestra carpeta home.
HellFire# cd /usr/X11R6/etc/openbox/xdg/openbox/ HellFire# cp * ~/.local/share/openbox/
Ahora comenzaremos a ajustar el comportamiento de Openbox a nuestro gusto Editando rc.xml
Dentro del archivo rc.xml tenemos la configuración del comportamiento de nuestro gestor de ventanas. Está escrito en xml así que no es difícil navegar a través de este. Aunque tiene varias secciones, de las que nos ocuparemos.
En esta sección modificamos el nombre y número de los escritorios. Un ejemplo sería:
<desktops> <number>3</number> <firstdesk>1</firstdesk> <names> <name>Main</name> <name>Chat</name> <name>Work</name> </names> </desktops>
En esta sección modificamos las combinaciones de teclas que usaremos para realizar varias acciones en nuestro gestor.
La primera línea tiene el comando <chainQuitKey> y lo que especifica es las teclas necesarias para salir del modo de combinación de teclas estilo emacs, aunque también tiene un límite de tiempo luego del cual automáticamente se sale de este modo. Este modo es excelente para todos aquellos fanáticos de emacs. Para configurarlo simplemente se anidan las etiquetas, como veremos en el ejemplo siguiente. Antes de nada veremos cómo referirse a algunas teclas especiales:
A.- Alt C.- Control S.- Shift W.- Window key
Ahora revisemos dos ejemplos, el primero modificando una acción ya predefinida y el segundo agregando una combinación de teclas estilo emacs para ejecutar una aplicación.
Para modificar una acción ya definida simplemente cambiamos las teclas que están configuradas para esta. En este caso haremos que la combinación de teclas para maximizar una ventana sea Alt-m (presionando simultáneamente Alt y la letra m) y no Alt-F10.
<keybind key=“A-m”>
<action name="MaximizeFull"/> </keybind>
Ahora configuraremos una combinación te teclas para que podamos acceder al navegador firefox con una combinación estilo emacs Control-x f (presionando simultáneamente Control y la letra x; y luego de soltarlas presionar la tecla f) .
<keybind key="C-x"> <keybind key="f"> <action mame="Execute"><execute>firefox</execute></action> </keybind> </keybind>
En esta sección se configuran todos los comandos y acciones que se ejecutan cuando utilizas el ratón solo o junto con otras teclas. A diferencia de la configuración del teclado, las acciones del ratón dependen del contexto en el que se realicen, en la ventana, en el título, en el escritorio, etc.
Analicemos un ejemplo del archivo:
<context name="Frame"> <mousebind button="A-Right" action="Press"> <action name="ShowMenu"><menu>client-menu</menu></action> </mousebind> </context>
En el ejemplo vemos que está en el contexto Frame, lo que quiere decir la ventana actual sin contar el título. Luego que la combinación es de Alt con el botón derecho del ratón.
La última sección es la que indica dónde almacenaremos el menú contextual que aparece cuando presionamos con el botón derecho del ratón sobre el escritorio. Para modificar este menú, cambiamos el archivo con ese nombre, editando menu.xml.
Cualquier archivo que contenga un menú para openbox debe empezar con las etiquetas <openbox_menu> con su respectiva etiqueta de cierre.
Ahora, los menús en sí son encerrados en las etiquetas <menu>; pero dentro de estas hay dos atributos que debemos indicarle que son muy importantes. El id, es el identificador único del menú y puede ser utilizado para poder invocarlo desde una ACTION de, por ejemplo, una combinación de teclas; y el título con el que aparecerá. Para separar menús tenemos la etiqueta <separator />. Para generar menús dentro de menús, simplemente anidamos las estructuras. Veamos un ejemplo de un ítem de un menú.
<item label="Xterm"> <action name="Execute"><execute>xterm</execute</action> </item>
Revisemos lo anterior para entenderlo bien. Como es un ítem y no un menú, utiliza las etiquetas <item>; el atributo label viene a se el nombre que va a tener el ítem. Luego, va el nombre de la acción que se va a realizar, estos nombres están predefinidos en OpenBox, así tenemos que Execute es para la ejecución de una aplicación o comando.
Para una lista completa de posibles acciones y su sintaxis exacta referirse a la página de documentación de Openbox
En este punto ya tenemos configurado el comportamiento nuestro manejador de ventanas Openbox a nuestro completo gusto, pero aún se ve algo… mal. Es hora de adornar el escritorio con un papel tapiz, utilizando una herramienta para visualizar imágenes llamada feh.
HellFire# cd /usr/ports/graphics/feh && make install clean clean-depends
Ahora, simplemente tenemos que modificar el .xinitrc para que ejecute el feh antes del openbox. En este ejemplo asumimos que el nombre de nuestro wallpaper es demonio.jpg
exec feh --bg-center demonio.jpg& exec openbox
Para una lista más clara y detallada de las opciones de feh, leer el man. Recuerde que feh no es sólo para configurar el papel tapiz, es una herramienta mucho más útil.
Bueno, nos falta un solo paso para tener un entorno visual muy agradable, ajustado a nuestras necesidades y ligero.
HellFire#cd /usr/ports/x11/fbpanel && make install clean clean-depends
Con esto ya tendremos listo el fbpanel, que viene a ser la barra de tareas, bandeja de íconos, paginador de escritorio. Además tiene un apariencia similar a la de gnome que es simple y atractiva. Modificamos por última vez nuestro archivo .xinitrc para que cargue fbpanel.
exec feh --bg-center demonio.jpg& exec fbpanel& exec openbox
La configuración siguiente es sólo de ejemplo y no explica, por ser demasiadas, todas alternativas de fbpanel. Para una documentación más extensa ir a la pagina de documentación fbpanel
Para editar la configuración de fbpanel necesitamos primero copiar los archivos de configuración a nuestra carpeta home. Para eso ejecutamos:
HellFire# mkdir ~/.fbpanel
HellFire# cd /usr/X11R6/share/fbpanel HellFire# cp default ~/.fbpanel
Dentro de este archivo encontraremos muchos comentarios que nos guiarán en las variables de configuración que posee fbpanel. Aquí veremos muy someramente algunas opciones.
Lo primero que hay que notar es que fbpanel trabaja en base a perfiles. Si al ejecutar la aplicación no especificamos ninguno, tomará el default, pero podemos pasarle como parámetro el nombre de nuestra configuración; así podríamos tener varias configuraciones paralelas y sólo cambiar el parámetro que le pasamos a fbpanel para utilizar distintas. Para pasarle el nombre de nuestro archivo de configuración utilizamos el siguiente comando, donde profile2 es el nombre de la configuración:
# fbpanel -p profile2
La primera parte del documento es la sección global que determina el aspecto global de la aplicación. Estas opciones pueden ser cambiadas desde una interfaz gráfica que incluye el mismo Openbox en el menú por defecto que trae en la barra de íconos.
A partir de ahí viene la configuración específica de la barra, es decir, que cosas tiene, como el reloj, o la bandeja para los íconos. Esta distribución está en orden y se dividen por plugins. Los plugins son de varios tipos:
Veremos como ejemplo la configuración de una barra con un menú, un ícono de acceso a el terminal xterm, el paginador de escritorios y la barra de tareas.
# este plugin funciona para mostrar el escritorio Plugin { type = wincmd config { # puedes poner cualquier imagen que desees image = /usr/X11R6/share/fbpanel/images/Desktop2.png tooltip = Haz click con el botón derecho para mostrar el escritorio. } }
# este plugin es para el menú Plugin { type = menu config { # esta imagen es la del menú en la barra image = /usr/X11R6/share/fbpanel/images/Menu.png # el orden es descendente, es decir, este menú será el primero empezando por arriba menu { name = Networking image = /usr/X11R6/share/fbpanel/images/Networking.png # lo siguiente son la lista de items dentro del menu Networking del menú principal item { name = mozilla action = mozilla } item { name = gaim # la imagen es opcional image = /usr/share/pixmaps/gaim.png action = gaim } } # una linea horizontal de separación separator { } item { name = Configure image = /usr/X11R6/share/fbpanel/images/settings.png command = configure } separator { } item { name = terminal image = /usr/X11R6/share/fbpanel/images/GNOME-Terminal.png action = xterm } item { name = emacs image = /usr/X11R6/share/fbpanel/images/Emacs.png action = emacs } } }
# un separador vertical en la barra Plugin { type = separator }
# el plugin para los íconos de acceso directo Plugin { type = launchbar config { button { image = /usr/X11R6/share/fbpanel/images/GNOME-Terminal.png # tooltip es el mensaje que aparece al colocar el puntero del ratón sobre el botón tooltip = Terminal action = xterm } button { image = /usr/X11R6/share/fbpanel/images/Emacs.png tooltip = Emacs action = emacs } } }
# El paginador de escritorios Plugin { type = pager }
# un separador vertical en la barra Plugin { type = separator }
# la barra de tareas Plugin { type = taskbar expand = true config { ShowIconified = true ShowMapped = true ShowAllDesks = false tooltips = true IconsOnly = false MaxTaskWidth = 150 } }