Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

Administradores de SesionesAdministradores de VentanasEscritoriosUtilidades de Escritorio

Administradores de Ventanas - PekmwAdministradores de Ventanas - QuarkWM

Administradores de Ventanas - Qlwm




Administradores de Ventanas - Qlwm




Copyright

Copyright © José Luis Lara Carrascal  2007-2023   http://manualinux.eu



Sumario

Introducción
Características
Preliminares
Instalación
Directorio de configuración personal
Configuración de Qlwm
Atajos de teclado de Qlwm
Añadir aplicaciones al inicio de Qlwm
Configurar el inicio de Qlwm
Iniciamos Qlwm
Enlaces




Introducción  

Con Qlwm introduzco en la web el primer administrador de ventanas escrito con Qt4, quizá pueda parecer una exageración el tamaño de la dependencia comparándolo con el tamaño que ocupa Qlwm, pero como no es la última aplicación Qt4 que va a ser incorporada a la documentación existente en la web, y teniendo en cuenta que existe ya un número importante de aplicaciones basadas en Qt4 (afortunadamente no dependientes de KDE); creo que este entorno puede llegar a interesar a los usuarios alternativos de GNU/Linux. La única pega es que todo se configura a mano, para evitar confusiones he decidido traducir al español los archivos de configuración, con lo que la tarea de personalizar Qlwm va a ser más fácil.


 
Características  

* Una barra inferior con soporte de menú integrado, paginador, ventanas iconificadas, applets, etc.
* Menú configurable con soporte de submenús
* Soporta pantalla completa (por ejemplo, en la ejecución de xterm) y una gestión en mosaico de las ventanas.
* El enfoque de la ventana es configurable (un sólo clic o automático con ajuste de retardo en milisegundos)
* Escalado automático de los iconos.
* Sólo dos botones para las ventanas, con funciones múltiples.
* Escritorios virtuales con funciones especiales.
* Carga dinámica de los applets, si no se requiere su uso (notificar correo, por ejemplo) se reduce el espacio que ocupan.



Preliminares  

1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH


Abrimos una ventana de terminal y ejecutamos el siguiente comando:

[jose@Fedora-18 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin

Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente:

#!/bin/sh

export PATH=/usr/local/bin:$PATH

Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.

$ su -c "install -m755 variables.sh /etc/profile.d"

Tenemos que cerrar el emulador de terminal y volverlo a abrir para que la variable de entorno aplicada sea efectiva. Es conveniente guardar una copia de este script para posteriores instalaciones de nuestro sistema, teniendo en cuenta que es el que se va a utilizar a partir de ahora en todos los manuales de esta web, para establecer variables de entorno globales, excepto en aquellas que sólo afectan al usuario, en las que se utilizará el archivo de configuración personal, ~/.bashrc.

La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.

2) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr

Aún en el caso de que la versión a compilar la vayamos a instalar en el mismo directorio que la que proporciona la distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.



Instalación  

Dependencias

Herramientas de Compilación


Entre paréntesis la versión con la que se ha compilado Qlwm para la elaboración de este documento.

* GCC - (13.1.0)
* Make - (4.4.1)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 21.1.8)
* Qt4 - (4.8.7)



Descarga

qlwm-4.3.tar.gz  |  qlwm-4.3.diff

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'

Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla:
* La opción '-march=' establece el procesador mínimo con el que funcionará el programa compilado, la opción '-mtune=' el procesador específico para el que será optimizado. 

* Los valores separados por comas, son equivalentes, es decir, que lo mismo da poner '-march=k8' que '-march=athlon64'.

* En versiones de GCC 3.2 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Valores CPU
Genéricos
Intel
AMD

Optimizaciones adicionales

Optimizaciones adicionales
Graphite
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
IPA
$ export {C,CXX}FLAGS+=' -fipa-pta'
LTO
$ export AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
En versiones inferiores a GCC 10, sustituir auto por el número de núcleos que tenga nuestro procesador. Si sólo tiene uno, utilizar el parámetro -flto

Extracción y Configuración  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf qlwm-4.3.tar.gz
$ cd qlwm-4.3
$ patch -Np1 -i ../qlwm-4.3.diff

Explicación de los comandos

patch -Npi -i ../qlwm-4.3.diff : Aplicamos este parche personal para poder utilizar las optimizaciones aplicadas en el manual. El parche también corrige un error de compilación en el enlazado contra LibX11 y LibXext.

Compilación

$ make

Parámetros de compilación opcionales

QMAKE=qmake : El binario predefinido para qmake de Qt4 es qmake-qt4, si el que tenemos en nuestro sistema recibe el nombre de qmake, le pasamos el parámetro correspondiente al comando make. Ejemplo: make QMAKE=qmake

-j$(nproc) : Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su -c "make install"

Instalación como usuario de los archivos de configuración

$ make install-config

Estos quedarán instalados en ~/.qlwm y son los siguientes: appdefaults, defaults y menuconfig. Si tenemos una versión anterior de Qlwm no es necesario ejecutar este comando.

Estadísticas de Compilación e Instalación de Qlwm

Estadísticas de Compilación e Instalación de Qlwm
CPU AMD Ryzen 5 5500
MHz 3593.250 (BoostMax=4457.000)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.4.2-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Versión de Glibc 2.37
Enlazador dinámico GNU gold (Binutils 2.40) 1.16
Compilador GCC 13.1.0 + Ccache 4.8.2
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -ftree-loop-linear -floop-strip-mine -floop-block -fipa-pta -fuse-linker-plugin -flto=auto
Parámetros de compilación -j12
Tiempo de compilación 7"
Archivos instalados 14
Mostrar/Ocultar la lista de archivos instalados
Enlaces simbólicos creados 1
/usr/local/bin/qlwm
Ocupación de espacio en disco 280 KB

Consumo inicial de CPU y RAM de Qlwm

Consumo inicial de CPU y RAM de Qlwm
Programa
CPU RAM
qlwm 0 % 13,6 MB
dclock 0 % 11,0 MB
biff 0 % 9,5 MB
TOTAL 0 % 34,1 MB
Para medir el consumo de CPU se utiliza el programa top, y para medir el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace.

Directorio de configuración personal  

~/.qlwm Es el directorio de configuración personal de Qlwm en nuestro home.
~/.qlwm/appdefaults Es el archivo de configuración personalizado del comportamiento de las ventanas en las aplicaciones que definamos en el mismo.
~/.qlwm/defaults Es el archivo de configuración principal de Qlwm.
~/.qlwm/menuconfig Es el archivo de configuración del menú de Qlwm.

Desinstalación como root

1) MODO TRADICIONAL

Este programa no tiene soporte para desinstalación con el comando 'make uninstall'

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

qlwm-4.3-scripts.tar.gz

$ su
# tar zxvf qlwm-4.3-scripts.tar.gz
# cd qlwm-4.3-scripts
# ./Desinstalar_qlwm-4.3

Copia de Seguridad como root

Con este otro script creamos una copia de seguridad de los binarios compilados, recreando la estructura de directorios de los mismos en un directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home y borrar el que ha creado el script de respaldo, teniendo en cuenta que si queremos volver a restaurar la copia, tendremos que volver a copiarlo al lugar donde se ha creado.

$ su
# tar zxvf qlwm-4.3-scripts.tar.gz
# cd qlwm-4.3-scripts
# ./Respaldar_qlwm-4.3

Restaurar la Copia de Seguridad como root

Y con este otro script (que se copia de forma automática cuando creamos la copia de respaldo del programa) restauramos la copia de seguridad como root cuando resulte necesario.

$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_qlwm-4.3



Configuración de Qlwm  

1) ~/.qlwm/appdefaults
2) ~/.qlwm/defaults
3) ~/.qlwm/menuconfig




1) ~/.qlwm/appdefaults

En este archivo se configura el comportamiento personalizado de las ventanas por cada aplicación que definamos en el mismo.

#Valores por defecto de la aplicación. La referencia normalmente es el CLASSNAME 
#de la aplicación. Usted puede verlo en el campo de la Clase si usted hace clic con 
#el botón central del ratón en el título de una ventana. También es posible 
#para especificar una referencia para el Name y Classname con una coma como separador, 
#en el formato de name,classname.
#
# Los parámetros válidos son:
#
# Sticky        : La aplicación lo seguirá alrededor en los escritorios virtuales.
# WindowListSkip: No muestra la aplicación en la lista de las ventanas.
# SmallFrame    : Dibujar sólo una asa del movimiento pequeña encima de la ventana.Sugerido
#               : si se usan complementos (indicadores de carga de cpu o cualquier cosa).
# NoResize      : No dibuja las asas al redimensionar debajo de la ventana.
# NoTile        : No integra esta ventana en un escritorio en mosaico. Útil 
#               : para las aplicaciones que no funcionan en una ventana muy pequeña.
# NoKey         : Omitir esta aplicación en el acceso del teclado.
# NoScreen      : Omitir esta aplicación en modo pantalla.
# ToolBar       : Integrar la aplicación como un applet en el lado derecho de la barra inferior.
#               : Los applets aparecen de izquierda a derecha en el orden correcto, el orden de                      #               : ejecución es irrelevante. Los applets pueden aparecer y desaparecer cuando el
#               : otro contenido de la barra cambie de tamaño. 
#               : Tener en cuenta que sólo la altura de la aplicación es la que se ajusta al tamaño
#               : de la barra. El ancho de la misma se determina invocándola con la opción --geometry <ancho>


Biff                   ToolBar
Dclock                 ToolBar     
xeyes                  Sticky,WindowListSkip
kworldwatch,toplevel   SmallFrame
Konqueror              NoTile,NoScreen
XLoad                  ToolBar


2) ~/.qlwm/defaults

Éste es el archivo de configuración principal del programa.

# QLWM startup file

# Tamaño en píxeles de la barra y los marcos de las ventanas.
# Tener en cuenta que el tamaño mínimo de la barra y el título de la ventana está limitado
# por la altura de la fuente elegida. 

ToolbarHeight           18
WindowButtonSize        14
LowerBorderHeight       5
LowerBorderWidth        22
PagerHeight             16


# Fuentes para el título de la ventana y los iconos. El alto es en píxeles, no en picas. 

WindowFontName          Helvetica
WindowFontHeight        11
IconFontName            Helvetica
IconFontHeight          11


# Si se pone TRUE la barra se coloca en la parte superior de la pantalla.

ToolbarOnTop            FALSE

# Geometría de la ventana en estado maximizado, formato X1 Y1 X2 Y2. Si está comentado
# usa ajustes automáticos por defecto: Maximize1 hasta el margen de la barra
# y Maximize2 a tamaño de pantalla completa.

# Maximize1  0   0   1000 500
# Maximize2  0   20  1000 500

# Porcentaje de pantalla horizontal para el marco izquierdo (maximizado) en modo mosaico.

TileSplit              70

# <ALT+TAB> selecciona la siguiente ventana en un escritorio. En modo mosaico es usado
# para integrar la ventana seleccionada con la ventana maximizada en el marco izquierdo después
# de un tiempo de retardo en milisegundos. Un valor de cero lo desactiva.

TileMaxWithTab         600

# Iniciar los siguientes escritorios en modo mosaico

# TileStart              2 3

# Use un marco más pequeño para las ventanas en la fila correcta si más de <n> ventanas están
# minimizadas

TileMinframe 3

# Número de escritorios virtuales (paginador) 

VirtualDesktops         3

# Si se pone FALSE el menú o la lista de ventanas no aparecerán en la barra.
# Las funciones permanecen accesibles con una pulsación. 

ShowMenue               TRUE
ShowWinlist        TRUE

# PointerFocus está siempre activado en QLWM. Las ventanas se elevarán
# automáticamente después del tiempo de retardo especificado en ms. Ajustado a cero
# es desactivado. Tener en cuenta que una ventana es automáticamente desactivada.
# es la política del autoraise la que oscurece otra ventana totalmente.

AutoRaiseTime           600

# La lista de la ventana mostrará el nombre del host en que una aplicación 
# está corriendo. Poner FALSE si usted no quiere esto.

ShowClientMachines      TRUE

# Especifique un estilo interno o el nombre de un estilo Qt.

Style Plastique
# Style Motif
# Style MotifPlus
# Style Windows
# Style CDE

# Descomentar los ajustes de color para cambiar los que lleva por defecto QLWM.
# Los colores normales se toman de los recursos de X y se cambian allí

# InactiveWindowColor     DarkGray

# Los marcos de la ventana y botones del icono cambiarán a este color si una aplicación 
# los marca como urgente para conseguir la atención de los usuarios.

# UrgentWindowColor       red

# Las Nuevas ventanas aparecerán en el color con que usted ha especificado 
# UrgentWindowColor. Ponga esto a FALSE si usted no quiere este rasgo.

StartClientsUrgent      TRUE

# El fondo de ventana de raíz inicial. Especifique un color sólido o una imagen. 
# Una imagen puede estar en cualquier formato que Qt puede leer (no todas las instalaciones de Qt 
# se han compilado con soporte de GIF, use PNG en su lugar). Si usamos una imagen debemos poner
# la ruta completa a la misma, no sirve ~/

RootBackgroundColor       darkblue
# RootBackgroundPicture   picture

# Colores del paginador

# PagerActiveColor        DarkGray
# PagerVisibleColor       DarkRed
# PagerInvisibleColor     blue

# Applicaciones para iniciarse con QLWM.

# Coloca un monitor de carga en la barra
# Exec xload -nolabel -update 3 -geometry 20 -bg darkgreen -fg cyan

Exec xsetroot -cursor_name top_left_arrow
Exec xterm -sb -sl 2000 -g 80x24+12+89
Exec /usr/local/qlwm/dclock
Exec /usr/local/qlwm/biff
Exec /usr/local/bin/idesk &

3) ~/.qlwm/menuconfig

Y en este archivo, configuramos las entradas del menú de Qlwm.

# Sample menu for qlwm

Kill "Matar ventana"
Separator

Entry "Editar menú" xedit ~/.qlwm/menuconfig && killall -HUP qlwm

Menu Escritorio
  Entry "Editar defaults" xedit ~/.qlwm/defaults && killall -HUP qlwm
  Entry "Editar appdefaults" xedit ~/.qlwm/appdefaults && killall -HUP qlwm
  Restart "Reiniciar WM"
  Entry "Configuración Qt" qtconfig || $QTDIR/bin/qtconfig
  Quit "Terminar sesión"
  Entry "Gestor de Sesiones" xsm

  Menu Ratón
    Entry lento xset m 5
    Entry medio  xset m 8
    Entry rápido xset m 12

  End
  Menu Fondo de Pantalla

    Entry azul   xsetroot -solid darkblue
    Entry oscuro   xsetroot -solid '#000060'
    Entry negro  xsetroot -solid black

  End
End
Separator

Entry xterm xterm -sb -sl 2000 -T $LOGNAME
Entry Konqueror konqueror > /dev/null 2>&1


Menu Aplicaciones
  Entry "color xterm" xterm +cm +ulc +bdc -cr red -bg black -fg peachpuff -sb -sl 2000 -fn 10x20 -tn xterm-color
  Entry Emacs /usr/bin/emacs
Menu Escritorio
  Entry "Nitrogen" nitrogen ~/Fotos
End
Menu Terminales
  Entry "Mrxvt" mrxvt
  Entry "Aterm" aterm
End
End


El formato del menú es el siguiente,

Nombre del menú o submenú : Menu título
Nombre de la entrada : Entry "Nombre de la aplicación" comando a ejecutar.
Cierre del menú o submenú : End

Siempre que se incluya un nuevo submenú acordarse de cerrarlo con el parámetro End.



Atajos de teclado de Qlwm  

Combinación de teclas Acción a realizar
Mayús + Alt + Tabulador Muestra el cliente de la ventana anterior
Alt + Tabulador Muestra el cliente de la ventana siguiente
Ctrl + Mayús + Tabulador Cambia al escritorio anterior
Ctrl + Tabulador Cambia al escritorio siguiente
Alt + F12 Pone la última ventana en primer plano, que es cualquiera que esté oculta detrás de las otras ventanas o detrás de las ventanas en mosaico.
Alt + F11 Activa/desactiva el modo de pantalla completa. Se puede usar el teclado para navegar entre las diferentes ventanas que estén abiertas.
Alt + F10 Activa/desactiva el modo mosaico de ventanas. Muestra todas las ventanas del escritorio en modo mosaico, al igual que pueda hacer un administrador de ventanas como Awesome.
Alt + F9 Oculta la ventana (la muestra en la lista de ventanas pero no añade un botón)
Ctrl + Esc Despliega la lista de ventanas
Alt + Esc Despliega el menú



Añadir aplicaciones al inicio de Qlwm  Bloc de Notas

Para poder añadir aplicaciones al inicio de Qlwm, sólo tenemos que editar la última sección del archivo de configuración del programa, ~/.qlwm/defaults.

# Applicaciones para iniciarse con QLWM.

# Coloca un monitor de carga en la barra
# Exec xload -nolabel -update 3 -geometry 20 -bg darkgreen -fg cyan

Exec xsetroot -cursor_name top_left_arrow
Exec xterm -sb -sl 2000 -g 80x24+12+89
Exec /usr/local/qlwm/dclock
Exec /usr/local/qlwm/biff
Exec idesk &
Exec cwallpaper -l

Todos los comandos tienen que ir con el parámetro Exec delante, en el ejemplo le he añadido el comando xsetroot -cursor_name top_left_arrow para que muestre el puntero del ratón y no la X con la que se inicia el programa.



Configurar el inicio de Qlwm  

1) Para los que inician X desde terminal con el comando startx


Editamos el archivo ~/.xinitrc que se encuentra en nuestro home, si no existe lo creamos, y añadimos lo siguiente:

exec /usr/local/bin/qlwm


2) XDM

Editamos el archivo ~/.xsession que se encuentra en nuestro home, si no existe lo creamos, y añadimos lo siguiente:

exec /usr/local/bin/qlwm


3) GDM/LightDM/SDDM

Abrimos un editor de texto y añadimos lo siguiente:

[Desktop Entry]
Name=Qlwm
Comment=
Exec=/usr/local/bin/qlwm
Terminal=False
TryExec=

Lo guardamos con el nombre qlwm.desktop y lo instalamos en /usr/share/xsessions.

$ su -c "install -m644 qlwm.desktop /usr/share/xsessions"


4) Qingy

Abrimos un editor de texto y añadimos lo siguiente:

/usr/local/bin/qlwm

Lo guardamos con el nombre Qlwm, y lo instalamos en /etc/qingy/Xsessions.

$ su -c "install -m755 Qlwm /etc/qingy/Xsessions"


5) SLiM

Primero editamos el archivo /etc/slim.conf y añadimos el nombre del entorno a la lista de los que tengamos en el sistema instalados, si queremos que sea el entorno que se inicie por defecto hay que colocarlo en el primer lugar de la lista.

# Sesiones disponibles (la primera es la predefinida).
# El actual nombre de sesión es reemplazado en el login_cmd
# anterior, para que su comando de acceso pueda manejar diferentes sesiones.
# vea el archivo xinitrc.ejemplo proporcionado con el código fuente de slim.
sessions            Fluxbox,WindowMaker,Blackbox,XFce4,E17,Qlwm,IceWM,Openbox,ROX,Pekwm,AfterStep

Para finalizar editamos el archivo .xinitrc de nuestro home y añadimos la configuración del mismo, la variable DEFAULT_SESSION sobreescribe el entorno gráfico de inicio predefinido que pueda existir en el archivo /etc/slim.conf, permitiendo añadir el ejecutable de otro entorno que no esté configurado en el apartado anterior para ser iniciado por defecto, si queremos que sea Qlwm, añadimos su script de ejecución, aunque si lo tenemos configurado el primero de la lista, esto no es necesario.

# La siguiente variable define la sesión que será iniciada si el usuario
# no elige de forma explícita una sesión
DEFAULT_SESSION=qlwm

case $1 in
XFce4)
    exec startxfce4
    ;;
IceWM)
    exec icewm-session
    ;;
WindowMaker)
    exec wmaker
    ;;
Blackbox)
    exec startblackbox
    ;;
Fluxbox)
    exec startfluxbox
    ;;
E17)
    exec enlightenment_start
    ;;
Qlwm)
    exec qlwm
    ;;

Openbox)
    exec openbox-session
    ;;
Pekwm)
    exec pekwm
    ;;
ROX)
    exec rox-session
    ;;
AfterStep)
    exec afterstep
    ;;
*)
    exec $DEFAULT_SESSION
    ;;
esac

Con pulsar F1 ya podremos seleccionarlo de la lista e iniciarlo, si es el predefinido no es necesario seleccionarlo de la lista, se iniciará por defecto.



Iniciamos Qlwm  


Captura Qlwm - 1


Captura Qlwm - 2




Enlaces  


http://www.alinden.mynetcologne.de/qlwm >> La web archivada de Qlwm en Wayback Machine.


Foro Galería Blog


Actualizado el 07-07-2023

Administradores de Ventanas - Qlwm

Administradores de Ventanas - PekmwAdministradores de Ventanas - QuarkWM