Escritorios
Nombre del proyecto | Escritorios |
Fecha de comienzo | 29/06/2011 |
Puesta en marcha | 7/04/2013 |
Descripción | Unificación de escritorios y aplicaciones para una empresa |
Histórico | |
---|---|
Sumario
Enlaces y referencias
Sobre el gestor de ventanas
- Ref: Wiki de Fluxbox - un gestor de ventanas
- Ref: Instalar fluxbox desde cero
- Temas:
Programas y herramientas X-Window
- iDesk es para tener iconos en el escritorio.
- unclutter sirve para esconder el cursor gráfico tras un periodo de inactividad del ratón (en Debian se instala y activa prácticamente autoconfigurándo la sesión gráfica).
- ipager como paginador de escritorio.
- nitrogen es un gestor de fondos de escritorio.
- Skippy es un conmutador de ventanas a pantalla completa, similar al Exposé de MacOSX.
- Tabble es un lanzador de aplicaciones organizadas en pestañas (incluyendo iconos).
- xscreensaver como salvapantallas y herramienta de bloqueo de terminales.
- gmrun: es un lanzador de programas por nombre.
- conky es un monitor de sistema para X Window.
- xrootconsole permite usar el fondo del escritorio como consola donde ver el contenido de un archivo o la salida de un proceso.
- deskmenu es un menú activable sobre la ventana raíz, de manera que puede servir como gestor de sesiones ligero.
- uGet como gestor de descargas con integración en el navegador y vigilancia del portapapeles.
- stardict es un diccionario con vigilancia del portapapeles y de la selección.
- shutter sirve para tomar capturas de pantalla].
- geeqie es un excelente visor de imágenes, raṕido y sencillo. Anteriormente se hacía llamar gqview.
- dzen sirve para gestionar notificaciones y mensajes corots en escritorios X11.
- dzen:calendar construye un calendario popup.
- dzen2 es la versión empaquetada para Debian.
Introducción y conceptos
Aunque inicialmente quería llamarlo escritorio corporativo, dado el alcance que llegará a tener -pongamos que unos cinco puestos como máximo- emplear dicho adjetivo me parecía muy pomposo. A falta de otro nombre mejor y como quiero que tenga una página sencilla de recordar lo he llamado simplemente Escritorios.
Además, aunque lo emplearé en la empresa en la que trabajo he decidido adoptarlo como proyecto personal porque su descripción será mucho más técnica que humana y hará muchas referencias a otras páginas de este wiki.
La configuración del escritorio se guardará en un directorio del sistema con el nombre de la misma aunque en esta página voy a usar una denominación genérica como
/etc/empresa/desktop
y empleo el subdirectorio desktop porque existe información que guardar que concierne a otros aspectos que no son el escritorio, tales como la configuración de aplicaciones y servicios.
Mapa mental
El escritorio tendrá que ser:
- Ligero y rápido.
- Minimalista en la decoración.
- Concreto y directo, para lo que tendrá un menú con accesos directos a:
- Aplicaciones comunes de la empresa (contabilidad, facturación, estadísticas, ... )
- Aplicaciones de propósito general (como navegadores, lectores de correo, mensajería, ... )
- Localización de archivos particulares y compartidos.
Componentes
Esta sección intentará poner nombre a cada parte software involucrada en el proyecto y a indicar a grandes rasgos cómo estará implementado. La distribución del software y su configuración global en cada máquina se realizará mediante el sistema de paquetes de Debian.
Sesión gráfica
Como necesitamos que los cambios aquí descritos sean globales vamos a definir nuestra propia sesión gráfica. Para ello consultamos la documentación de Debian y editamos un archivo de nombre empresa.session que posteriormente instalaremos en el directorio /usr/share/xsessions
(o en el que corresponda al gestor de acceso -login manager- que usemos).
El contenido de dicho archivo es el siguiente:
[Desktop Entry]
Encoding=UTF-8
Name=Empresa
Comment=Escritorio de Empresa, S.L. (fluxbox)
Exec=/usr/bin/startfluxbox
Terminal=False
TryExec=/usr/bin/startfluxbox
Type=Application
[Window Manager]
SessionManaged=true
Gestor de ventanas
El gestor de ventanas que he elegido es fluxbox ya que cumple de sobra los requisitos de rendimiento y rapidez. Su configuración se realiza mediante archivos de texto en su mayor parte, por lo que son sencillos de mantener.
Menú
Fluxbox permite definir los menús de programas empleando archivos de texto con una síntaxis simple y maleable. En mi caso he dividido las tareas en áreas según las necesidades de la empresa y mientras algunas tareas llaman a programas del sistema, en otras he tenido que crear algunas herramientas a medida:
- Gestión comercial: programas y aplicaciones propios del negocio.
- Facturación
- Contabilidad
- Operaciones (aquellas que más se usan directamente, aunque las aquí descritas son sólo un ejemplo):
- Listado de precios especiales
- Relación de faltas de mercancía
- Ofimática:
- Procesador de textos
- Hoja de cálculo
- Impresoras (consulta de las colas de impresión)
- Utilidades:
- Calculadora
- Diccionario
- Diseño de etiquetas
- Internet:
- Navegador web
- Correo electrónico
- Mensajería
- Archivos:
- Archivos personales
- Archivos compartidos
- Impresora en PDF
- Escritorio:
- Bloqueo de pantalla
- Fondo de escritorio
- Ejecutar un programa
- Fin de sesión
Aplicaciones y tareas
Según el menú tenemos algunas tareas para las que usamos programas estándar en el sistema (aunque lleguemos a emplear mecanismos como el de las alternativas de Debian), mientras que para otras tenemos que escribir programas envoltorio que hagan algo más, dado que aunque pretendemos que todos usen los mismos programas no es realista pensar que vamos a poder efectuar el cambio a todo el mundo al mismo tiempo. ¿ Cómo resolverlo ? Pues intentando que los envoltorios consulten primero el directorio del usuario y si allí no se les indica otra cosa llamen al programa global.
Todo el mundo va a usar como correo electrónico el programa thunderbird (icedove en Debian) pero como podemos encontrarnos con alguna resistencia por parte de los usuarios de kontact creamos un script como el siguiente:
#!/bin/bash
# Variables: guardamos los parámetros de llamada
PARAMS="$@"
# Cargamos variables globales
if [ -r /etc/empresa/lib/globals.sh ] ; then
. /etc/empresa/lib/globals.sh
fi
# Funciones
ejecutar () {
# Ejecutamos $1 pasándole $2 y los parámetros de la línea de órdenes
exec $1 "${2} ${PARAMS}"
}
function usage
{
cat <<EOF
uso: x-exec-alternatives
Este programa sirve para llamar a un programa global
o a una versión alternativa definida en el directorio del
usuario: ${HOME}/.${EMPRESA}/bin/
EOF
}
# Formamos el nombre del prorama alternativo
ALTERNATIVO="${HOME}/.${EMPRESA}/bin/$(basename $0)"
# Si existe y es ejecutable
if [ -x ${ALTERNATIVO} ]; then
ejecutar "${ALTERNATIVO}"
else
# Ejecutamos la versión "real" correspondiente
case $(basename $0) in
x-correo)
ejecutar "icedove"
;;
*)
usage
;;
esac
fi
exit 1
Como puede verse he preferido incluir la dependencia de un archivo externo que inicializa algunas variables y que he situado en /etc/empresa/lib/globals.sh
:
EMPRESA=empresa
RAZONSOCIAL="Nombre largo de la empresa"
NIF="B55555555"
Para que esto termine de funcionar es necesario instalar este programa como ejecutable en -pongamos por caso- /usr/bin/x-exec-alternatives
y crear enlaces simbólicos al mismo de esta forma:
/usr/bin/x-correo -> /usr/bin/x-exec-alternatives /usr/bin/x-web -> /usr/bin/x-exec-alternatives ...
Nota: no estoy empleando en los ejemplos los directorios locales (/usr/local) para estos programas puesto que en la implementación real están bajo control de un sistema de paquetes.
Programas alternativos
Dado que este montaje funcionará sobre un sistema Debian, voy a aprovechar el mecanismo existente de alternativas -que permite seleccionar qué programas van a encargarse de ciertas tareas o roles- para así no tener que decantarme por ninguna en concreto.
Estas alternativas van a ser:
- x-terminal-multibase para el emulador de terminal (con la configuración adecuada para acceder a las aplicaciones en modo consola, de ahí el sufijo extraño).
- x-word será el procesador de textos.
- x-calc la hoja de cálculo.
- x-pdf es un visor de archivos PDF ligero (evince).
- x-mail-reader el lector de correo electrónico (icedove).
- x-rss el lector de flujos de noticias.
además de las ya existentes en el sistema como:
- x-www-browser para navegar por la red (iceweasel).
- x-session-manager para gestionar la sesión gráfica (Xsession).
- x-window-manager para manejar ventanas (fluxbox).
Impresoras
Dado que van a ser ordenadores autónomos (obviando las necesarias conexiones a la red) lo ideal es instalar un servidor CUPS que cumpla las siguientes condiciones:
- Administración sólo permitida desde la propia máquina
- Incorporar impresoras compartidas por otros sistemas
- Exportar automáticamente las impresoras locales (pensada especialmente para impresoras USB o similares).
- Permitir a los usuarios cancelar cualquier trabajo.
Para ello he visto en la documentación de la versión 1.4.4, la instalada en Debian, que existe un programa que puede realizar estas tareas desde el terminal. Se llama cupsctl y es el que debería emplear en los programas de instalación de los paquetes.