Interfaz gráfica de usuario

Entorno de escritorio

Un entorno de escritorio (desktop environment) es un conjunto de software para ofrecer al usuario de una computadora una interacción amigable y cómoda. Es una implementación de interfaz gráfica de usuario que ofrece facilidades de acceso y configuración, como barras de herramientas e integración entre aplicaciones con habilidades como arrastrar y soltar.

En general cada entorno de escritorio se distingue por su aspecto y comportamiento particulares, aunque algunos tienden a imitar características de escritorios ya existentes.

Actualmente el entorno más conocido es el ofrecido por la familia Windows, aunque existen otros como los de Macintosh (Classic y Cocoa), o también de código abierto (o software libre) como GNOME, KDE, Xfce, MATE, Cinnamon, LXDE o Enlightenment comúnmente usados en distribuciones de GNU/Linux o sistema operativos tipo BSD. - Wikipedia

Slackware Linux incluye, de forma oficial, los siguientes entornos de escritorio:

Gestor de Ventana

Un gestor de ventanas o manejador de ventanas (window manager) es un programa informático que controla la ubicación y apariencia de las ventanas bajo un sistema de ventanas en una interfaz gráfica de usuario.

Las acciones asociadas al gestor de ventanas suelen ser, abrir, cerrar, minimizar, maximizar, mover, escalar y mantener un listado de las ventanas abiertas. Los gestores de ventanas difieren entre sí de muchas maneras, incluyendo apariencia, consumo de memoria, opciones de personalización, escritorios múltiples o virtuales y similitud con ciertos entornos de escritorio ya existentes, entre otras.

Las plataformas Windows, Haiku os(software libre MIT) y Mac OS X ofrecen un gestor de ventanas estandarizado por sus vendedores y/o desarrolladores e integrado en el propio sistema operativo. En cambio el sistema gráfico X Window, popular en el ámbito de sistemas Unix y similares, como GNU/Linux, permite al usuario escoger entre varios gestores de ventanas. - Wikipedia

Slackware Linux incluye, de forma oficial, los siguientes gestores de ventanas:

Acceso al entorno gráfico

Para pasar de la interfaz de línea de comandos a un entorno gráfico se hace uso del Sistema de Ventanas X (o sistema gráfico X Window) el cual cuenta con dos implementaciones conocidas: XFreee86 (actualmente en desuso en GNU/Linux) y X.Org.

Slackware Linux incluye a Xorg, quien entre otras cosas, provee de algunos programas para entornos gráficos (twm y xterm serían un ejemplo) así como algunos controladores (drivers) de vídeo, mouse y teclado.

En años muy recientes X.Org tratará de autoconfigurar algunos aspectos para el entorno gráfico: resolución de pantalla, tipo de teclado, velocidad del puntero del mouse, etc. y así iniciar un entorno de escritorio o un gestor de ventana. En caso de querer hacer algunos ajustes en la configuración de X.Org se tiene el archivo /etc/X11/xorg.conf, así como el directorio /etc/X11/xorg.conf.d para crear algunos archivos que instruyan a X.Org nuestros ajustes en su ejecución.

Selección del entorno gráfico a usar

Previa ejecución de X.Org es necesario determinar que entorno gráfico se usará: un entorno de escritorio o un gestor de ventana, una vez decidido esto se crear el archivo $HOME/.xinitrc que contiene las instrucciones o comandos que ejecutarán el entorno gráfico.

OBSERVACIÓN: el archivo $HOME/.xinitrc es un script de shell.

Slackware Linux incluye un comando para llevar a cabo lo anteriormente indicado: xwmconfig:

images/01.png

Al seleccionar xinitrc.twm (como ejemplo) se crean los archivos/directorios:

alumno@servidor:~$ pwd; tree -aF
/home/alumno
.
├── .xinitrc
├── .xsession*
└── .xwmconfig/

1 directory, 2 files

Al respecto:

  • Las opciones mostradas por xwmconfig es a partir de los archivos encontrados en el directorio /etc/X11/xinit/:

     alumnox@servidor:~$ file /etc/X11/xinit/*
     /etc/X11/xinit/README.Xmodmap:   ASCII text
     /etc/X11/xinit/xinitrc:          symbolic link to xinitrc.twm
     /etc/X11/xinit/xinitrc.blackbox: POSIX shell script, ASCII text executable
     /etc/X11/xinit/xinitrc.fluxbox:  POSIX shell script, ASCII text executable
     /etc/X11/xinit/xinitrc.fvwm2:    POSIX shell script, ASCII text executable
     /etc/X11/xinit/xinitrc.twm:      POSIX shell script, ASCII text executable
     /etc/X11/xinit/xinitrc.wmaker:   POSIX shell script, ASCII text executable
    
  • El archivo $HOME/.xinitrc es ejecutado por parte de X.Org.

  • El archivo $HOME/.xsession es ejecutado por un gestor de acceso gráfico no instalado en este momento. Puesto que no se hará uso de él, puede ser borrado.
  • El directorio $HOME/.xwmconfig es un directorio temporal creado por xwmconfig. Al igual que $HOME/.xsession puede ser borrado ya que no es usado.
  • Por cada gestor de ventanas que se seleccione se creará un archvio $HOME/.xinitrc distinto siendo renombrado el actual como $HOME/.xinitrc-backup.

twm

  • Captura de pantalla:

    images/02.png

  • $HOME/.xinitrc:

     #!/bin/sh
     ...
     /usr/bin/twm &
     /usr/bin/xclock -geometry 50x50-1+1 &
     /usr/bin/xterm -geometry 80x50+494+51 &
     /usr/bin/xterm -geometry 80x20+494-0 &
     exec /usr/bin/xterm -geometry 80x66+0+0 -name login
    

Blakbox

  • Captura de pantalla de BlackBox en Slackware Linux.

  • $HOME/.xinitrc:

     #!/bin/sh
     ...
     if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
       exec ck-launch-session /usr/bin/startblackbox
     else
       exec /usr/bin/startblackbox
     fi
    

FVWM

  • Captura de pantalla de FVWM en Slackware Linux.

  • $HOME/.xinitrc:

     #!/bin/sh
     ...
     if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
       ck-launch-session /usr/bin/startfvwm2
     else
       dbus-launch --exit-with-session /usr/bin/startfvwm2
     fi
    

Fluxbox

El proyecto Fluxbox sigue en desarrollo-mejoramiento. Puede observarse lo anterior en su repositorio de Git: http://git.fluxbox.org/fluxbox.git/

Window Maker

  • Captura de pantalla de Window Maker en Slackware Linux:

    images/06.png

  • $HOME/.xinitrc:

     #!/bin/sh
     ...
     if [ -z "$DESKTOP_SESSION" -a -x /usr/bin/ck-launch-session ]; then
       exec ck-launch-session dbus-launch --exit-with-session /usr/bin/wmaker $NOCPP
     else
       exec dbus-launch --exit-with-session /usr/bin/wmaker $NOCPP
     fi
    
  • Estilos (themes):

  • Lecturas:

El proyecto Window Maker sigue en desarrollo-mejoramiento. Puede observarse lo anterior en su repositorio de Git: http://repo.or.cz/wmaker-crm.git/shortlog/refs/heads/next

Utilidades

Estando en un entorno gráfico es posible usar los siguientes programas en una terminal virtual, xterm u/o uxterm.

  • Para la configuración del layout (disposición o ubicación de las teclas) y la traducción de un teclado se hace uso del comando setxkbmap. Algunos de los parámetros a usar para setxkbmap:

    • -layout es: teclado en español (España)
    • -layout latam: teclado en español (Latinoamericano)
    • -layout us: teclado en ingles (Estados Unidos)
    • -layout us -variant intl o layout us -variant altgr-intl: teclado en ingles (Estados Unidos) con carácteres acentuados. Mejor conocido como Teclado internacional de Estados Unidos.

    Más información del comando setxkbmap en travesuras.wordpress.com.

  • Para asignar un color de fondo al gestor de ventana se puede hacer uso del comando xsetroot:

    • xsetroot -solid '#92fc45'
    • xsetroot -solid '#2a3a4a'
    • xsetroot -mod 16 16 -fg '#f0f0f0' -bg '#fafafa'
    • xsetroot -mod 5 13 -fg '#9a3faa' -bg '#9f3f6f'
    • xsetroot -mod 8 8 -fg green -bg black
  • Para cambiar el brillo del monitor, siempre y cuando este soportado por la extensión RandR y X.Org, se puede usar el comando xbacklight:

    • xbacklight -get: para obtener el porcentaje actual del brillo en el monitor.
    • xbacklight -set 20: para asignar un 20%, del 100% permitido, en el brillo del monitor.
    • xbacklight -set 100: para hacer uso del brillo más alto permitido por el monitor.
    • xbacklight -inc 5: para incrementar en un 5% al brillo actual del monitor.
    • xbacklight -dec 30: para decrementar en un 30% al brillo actual del monitor.

    ADVERTENCIA: se debe de tener precaución al bajar el brillo del monitor a 0%.

  • Para configurar la resolución de un monitor así como configurar más de un monitor se puede hacer uso del comando xrandr.

    Más información del comando xrandr en linuxzone.es y en nosgustalinux.es.

  • Para bloquear la pantalla se disponen de los programas xlock y xscreensaver.

    Más información de xscreensaver por José Luis Lara Carrascal.

  • Para configuración del volumen de audio se puede hacer uso del programa alsamixer que forma parte de Advanced Linux Sound Architecture) (ALSA).

    Slackware Linux, así como otras distribuciones de GNU/Linux, incluye a PulseAudio) para permitir que varios programas accedan al dispositivo de sonido al mismo tiempo.

  • Para determinar que tipografias tiene uno disponible:

    • Propias de X.Org, con el comando xlsfonts.
    • Mediante Xft (X FreeType) y fontconfig, con el comando fc-list.
  • Para ejecutar una terminal virtual con el soporte de UTF-8 (Unicode) se puede hacer uso de uxterm.

    uxterm permite hacer uso de alguna tipografia disponible (o instalada) en el sistema operativo:

    • Propias de X.Org, es posible usar el comando xfontsel para obtener, de forma gráfica, el nombre de la tipografia:

      • uxterm -fn '-xos4-terminus-medium-r-normal--14-140-72-72-c-80-iso10646-1': Terminus Font normal con 14 de tamaño.
      • uxterm -fn '-xos4-terminus-bold-r-normal--20-200-72-72-c-100-iso10646-1': Terminus Font bold (o negrita) con 20 de tamaño.
      • uxterm -fn '-misc-fixed-medium-r-normal--18-120-100-100-c-90-iso10646-1': Fixed Font normal con 18 de tamaño.
      • uxterm -fn '-misc-fixed-bold-r-normal--13-120-75-75-c-80-iso10646-1': Fixed Font bold (o negrita) con 13 de tamaño.

      Terminus Font posiblemente sea la opción más recomendable.

      En todos los ejemplos iso10646 hace mención a ISO 10646 relacionado a Unicode. Cabe mencionar que Unicode e ISO 10646 son técnicamente lo mismo pero definidos en tiempo y por entidades distintas.

    • Mediante Xft (X FreeType) y fontconfig:

      • uxterm -fa 'xft:DejaVu Sans Mono:style=Book:size=8:antialias=true:hinting=true': DejaVu Sans Mono book (o normal) con 8 de tamaño.
      • uxterm -fa 'xft:Liberation Mono:style=Regular:size=10:antialias=true:hinting=true': Liberation Mono regular (o normal) con 10 de tamaño.
      • uxterm -fa 'xft:Nimbus Mono L:style=Regular:size=12:antialias=true:hinting=false': Nimbus Mono L regular (o normal) con 12 de tamaño

      DejaVu Sans Mono posiblemente sea la opción más recomendable.

      Estas tipografias uno las suele encontrar como archivos con extensión *.ttf o *.otf y existe una inmensa cantidad de ellas. Posiblemente los proyectos interesantes con respecto a estas tipografias sean:

    Para verificar si se cuenta con una terminal virtual así como una tipografia con el soporte de UTF-8 se puede descargar el archivo http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt y usar el comando cat para visualizar los caracteres de distintos alfabetos:

     alumno@servidor:~$ wget http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt -P /tmp
     alumno@servidor:~$ cat /tmp/UTF-8-demo.txt
    

    Cabe mencionar la importancia de los valores impresos por el comando locale así como del valor en la variable de entorno LANG.

Finalmente

Aúnque cada uno de los programas que pueden ser ejecutados en el entorno gráfico ofrecen opciones en la línea de comandos para su ejecución es importante conocer de la existencia de los archivos $HOME/.xinitrc y $HOME/.Xresources, este último comunmente usado para configurar las terminales virtuales.

El archivo $HOME/.Xresources es intepretado por el comando xrdb quien es ejecutado por lo general en las primeras líneas del archivo $HOME/.xinitrc. En otras ocasiones no es usado el archivo $HOME/.Xresources si no $HOME/.Xdefaults, solo comentaré que son lo mismo aunque esto no es así.

Para más información: Configurando X: ¿Para qué sirven todos esos ficheros? por Joel McCarty.

Posiblemente la mejor terminal virtual sea rxvt-unicode (o urxvt) que no está instalada en Slackware Linux pero puede ser compilada, empaquetada e instalada. Al respecto: