Copyright
Copyright © José
Luis Lara Carrascal 2006-2012 
Sumario
Introducción
Características
Preliminares
Instalación
Directorio de configuración personal
Configuración de Pekwm
Hsetroot
Configurar el inicio de Pekwm
Iniciamos Pekwm
Enlaces
Introducción
Basado
en el administrador de ventanas, Aewm++,
Pekwm
se caracteriza por su amplio número de opciones y
posibilidades igualando a otros administradores de ventanas
más conocidos como Fluxbox.
A diferencia de éste y al igual que Openbox
no posee barra de tareas, por lo qué, utilizaremos un programa
auxiliar. En este caso y para variar respecto al manual de Openbox
me decantaré por Fbpanel,
una opción muy válida escrita en GTK2.
Características
* Posibilidad de agrupar las ventanas en una sola.
* Menú configurable con soporte de iconos.
* Soporte de atajos de teclado.
* Acciones configurables del ratón.
* Posición de ventanas configurable.
* Soporte multipantalla Xinerama.
* Temas.
* Suavizado de fuentes.
* Posibilidad de memorizar las propiedades de las
ventanas.
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-17 ~]$ 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
# 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 Pekwm
para la elaboración de este documento.
* GCC - (4.7.2) o Clang - (3.1)
* Gawk - (4.0.1)
* M4 - (1.4.16)
* Automake - (1.12.5)
* Autoconf - (2.69)
* Pkg-config - (0.27.1)
Librerías
de Desarrollo
* Xorg o XFree86 - (Xorg 7.7 / xorg-server 1.13.0)
LibICE - (1.0.8)
LibX11 - (1.5.0)
LibXext - (1.3.1)
LibXft - (2.3.1)
LibXrender - (0.9.7)
LibXrandr - (1.4.0)
LibXinerama - (1.1.2)
Libxpm - (3.5.10)
* Libjpeg - (8d)
* Libpng - (1.4.12)
Descarga
pekwm-0.1.16.tar.bz2
Optimizaciones
GCC
$ export
{CFLAGS,CXXFLAGS}='-O3 -march=amdfam10 -mtune=amdfam10'
|
Clang
$ export
{CFLAGS,CXXFLAGS}='-O3 -march=amdfam10'
|
| Donde pone amdfam10
se indica el procesador respectivo de cada sistema
seleccionándolo de la siguiente tabla: |
Nota informativa sobre las optimizaciones para GCC
|
* 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.x e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
|
Nota informativa sobre las optimizaciones para Clang
|
* La opción '-mtune=' no
está soportada por Clang.
* Los valores de color azul no son compatibles con Clang.
* Las filas con el fondo de color amarillo son valores exclusivos de Clang,
y por lo tanto, no son aplicables con GCC.
|
| Valores |
CPU |
| generic |
Produce un código
binario optimizado para la mayor parte de procesadores existentes.
Utilizar este valor si no sabemos el nombre del procesador que
tenemos en nuestro equipo. Este valor sólo es aplicable en
la opción '-mtune='. Esta opción está disponible a
partir de GCC 4.2.x. |
| i386 |
Intel i386.
|
| i486 |
Intel i486. |
| i586, pentium |
Intel Pentium sin soporte de instrucciones MMX. |
| pentium-mmx |
Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX. |
| pentiumpro |
Intel PentiumPro. |
| i686 |
Produce un código binario optimizado para la mayor parte de
procesadores compatibles con la serie 80686 de Intel. Todos los actuales lo son. |
| pentium2 |
Intel Pentium2 basado en PentiumPro con soporte de instrucciones MMX. |
| pentium3, pentium3m |
Intel Pentium3 basado en PentiumPro con soporte de instrucciones MMX y SSE. |
| pentium-m |
Versión de bajo
consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2.
Utilizado por los portátiles Centrino. |
| pentium4, pentium4m |
Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2. |
| x86-64 |
Procesadores
AMD y compatibles con soporte de instrucciones x86-64, SSE2 y
extensiones
64-bit. |
| yonah |
Procesadores
basados en la microarquitectura de Pentium M, con soporte de
instrucciones MMX, SSE, SSE2 y SSE3. |
| prescott |
Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
| nocona |
Versión mejorada de Intel Pentium4 con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2 y SSE3. |
| core2 |
Intel Core2 con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y
SSSE3. Esta opción está disponible a partir de GCC 4.3.x. |
| penryn |
Intel
Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3 y SSE4.1. |
| corei7 |
Intel Core i7 con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1 y SSE4.2. Soporta también los procesadores Intel
Core i3 e i5. Esta opción está disponible a partir
de GCC 4.6.x. |
| nehalem |
Procesadores
basados en la microarquitectura de procesador Nehalem de Intel. |
| westmere |
Procesadores
basados en la microarquitectura de procesador Westmere de Intel. |
| corei7-avx |
Intel Core i7 con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL. Soporta también los
procesadores Intel Core i3 e i5. Esta opción está
disponible a partir de GCC 4.6.x. |
| core-avx-i |
Intel Core (ivyBridge) con
extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3,
SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND y F16C. Esta opción está disponible a partir
de GCC 4.7.x. |
| core-avx2 |
Intel Core (Haswell). Esta opción está disponible a partir
de GCC 4.7.x. |
| atom |
Intel Atom con extensiones 64-bit y soporte de instrucciones MMX, SSE, SSE2, SSE3 y SSSE3. Esta opción está
disponible a partir de GCC 4.5.x. |
| k6 |
AMD K6 con soporte de instrucciones MMX. |
| k6-2, k6-3 |
Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!. |
| athlon, athlon-tbird |
AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y SSE prefetch. |
| athlon4, athlon-xp, athlon-mp |
Versiones mejoradas de AMD Athlon con soporte de instrucciones MMX, 3DNow!, enhanced 3DNow! y full SSE. |
| k8, opteron, athlon64, athlon-fx |
Procesadores basados en
AMD K8 core con soporte de instrucciones x86-64 (MMX, SSE, SSE2,
3DNow!, enhanced 3DNow! y extensiones 64-bit). |
| k8-sse3, opteron-sse3, athlon64-sse3 |
Versiones mejoradas de
AMD K8 core con soporte de instrucciones SSE3. Esta opción
está disponible a partir de GCC 4.3.x. |
| amdfam10, barcelona |
Procesadores basados en
AMD Family 10h core con soporte de instrucciones x86-64 (MMX, SSE,
SSE2, SSE3, SSE4A, 3DNow!, enhanced 3DNow!, ABM y extensiones
64-bit). Esta opción está disponible a partir de GCC 4.3.x. |
| btver1 |
Procesadores basados en
AMD Family 14h core con soporte de instrucciones x86-64 (MMX, SSE,
SSE2, SSE3, SSE4A, CX16, ABM y extensiones 64-bit). Esta opción está disponible a partir
de GCC 4.6.x. |
| bdver1 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (FMA4, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE,
SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones
64-bit). Esta opción está disponible a partir
de GCC 4.7.x. |
| bdver2 |
Procesadores basados en
AMD Family 15h core con soporte de instrucciones x86-64 (BMI, TBM, F16C, FMA, LWP, AVX, XOP, LWP, AES, PCL_MUL, CX16, MMX, SSE,
SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM y extensiones
64-bit). Esta opción está disponible a partir
de GCC 4.7.x. |
| winchip-c6 |
IDT Winchip C6, que equivale a un i486 con soporte de instrucciones MMX. |
| winchip2 |
IDT Winchip2, que equivale a un i486 con soporte de instrucciones MMX y 3DNow!. |
| c3 |
Via C3 con soporte de instrucciones MMX y 3DNow!. |
| c3-2 |
Via C3-2 con soporte de instrucciones MMX y SSE. |
| geode |
AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3.x. |
| native |
Produce un código
binario optimizado para el procesador que tengamos en nuestro sistema,
siendo éste detectado utilizando la instrucción cpuid.
Procesadores antiguos pueden no ser detectados utilizando este valor.
Esta opción está disponible a
partir de GCC 4.2.x. |
Extracción
y Configuración 
$ tar jxvf
pekwm-0.1.16.tar.bz2
$ cd pekwm-0.1.16
$ export {CC,CXX}=clang
$ export LDFLAGS="-Wl,-rpath,/opt/gcc-4.7.2/lib -lstdc++"
$ ./configure --disable-dependency-tracking
--sysconfdir=/etc |
Explicación
de los comandos
export {CC,CXX}=clang
:
Si vamos a compilar el paquete con Clang, establecemos
la correspondiente variable de entorno.
export LDFLAGS="-Wl,-rpath,/opt/gcc-4.7.2/lib -lstdc++" : Si compilamos Pekwm con una versión de GCC
que no es la principal del sistema, es decir, que la tenemos ubicada en
otro directorio, tenemos que añadir la variable de entorno de la versión de libstdc++.so
del compilador que vayamos a utilizar, porque de lo contrario,
será imposible la compilación del programa, al no existir
ninguna referencia a esta librería en los archivos Makefile generados, con lo que, cuando se vaya a generar el binario pekwm, el enlazador dinámico ld, buscará la primera que encuentre, normalmente la que está en /usr/lib, produciendo un error, al no ser la del compilador utilizado.
En este caso y siguiendo el manual de instalación de GCC, la ruta correcta para GCC 4.7.2 es /opt/gcc-4.7.2/lib, a la que se le añade el nombre genérico (requerido por ld) de la librería, -lstdc++, si la versión a utilizar la tenemos en otro directorio, tendremos que cambiar sólo la ruta, /opt/gcc-4.7.2/lib por la de la librería del compilador en cuestión.
En el caso de Clang, utilizaremos la versión de GCC con la que ha sido compilado Clang.
$ export LDFLAGS="-Wl,-rpath,/opt/gcc-4.6.3/lib -lstdc++"
|
--disable-dependency-tracking
:
Acelera el tiempo de compilación.
--sysconfdir=/etc : Instala los
archivos de configuración en /etc/pekwm.
Parámetros de configuración opcionales
--enable-opacity
:
Activa el soporte de configuración del nivel de transparencia
real en diferentes elementos del programa (menú, harbour,
autoproperties (ventanas personalizadas), etc.) en combinación
con el uso de Xcompmgr. Muy experimental.
Compilación
Parámetros de compilación opcionales
-j2
: Si tenemos un procesador de doble núcleo (dual-core), y el kernel
está optimizado para el mismo y es SMP, con este parámetro
aumentaremos el número de procesos de compilación
simultáneos a un nivel de 2 y aceleraremos el tiempo de compilación del programa de forma considerable.
-j4
: Lo mismo que arriba pero con procesadores de 4 núcleos (quad-core).
Instalación
como root
$ su
# make install-strip |
Instalación de los
archivos de configuración personal en nuestro home
$ cp -rf /etc/pekwm ~/.pekwm
$ mkdir -p ~/.pekwm/{themes,icons}
$ chmod +x ~/.pekwm/start |
Directorio de
configuración personal
| ~/.pekwm |
Es
el directorio de configuración personal de Pekwm
en nuestro home. |
| ~/.pekwm/themes |
Es el
subdirectorio donde
podemos colocar los
temas que nos bajemos de internet y los que queramos personalizar de
los ya existentes. |
| ~/.pekwm/icons |
Es el subdirectorio donde colocaremos los iconos que se muestren en el menú de Pekwm. |
| ~/.pekwm/autoproperties |
Es
el archivo de configuración que
permite modificar las propiedades de las ventanas de una
aplicación específica, para ello se vale de la
información proporcionada por xprop.
Para concretar, si quiero que una determinada aplicación se
muestre sin los bordes de la ventana, lo configuro en este archivo.
También contiene opciones de autoagrupramiento de ventanas,
similar a las que utiliza Fluxbox,
es decir, una sóla ventana para 2 aplicaciones o
más, o una sóla ventana para todas las ventanas nuevas
que se abran en una aplicación y el título de la
ventana para poder
cambiar
de una a otra. |
| ~/.pekwm/autoproperties_typerules |
Este archivo de configuración es nuevo desde la versión 0.1.16,
y contiene la configuración global de comportamiento de las
ventanas predefinido, que antes estaba incluida en el archivo de
configuración, autoproperties. Su edición no es necesaria. |
| ~/.pekwm/config |
Es el
archivo de configuración principal de Pekwm. |
| ~/.pekwm/history |
Es el archivo que almacena el historial del cuadro de diálogo de ejecución de comandos de Pekwm. |
| ~/.pekwm/keys |
Es el
archivo de configuración de los atajos de teclado
de Pekwm. |
| ~/.pekwm/menu |
Es el
archivo de configuración del menú de Pekwm. |
| ~/.pekwm/mouse |
Es el
archivo de configuración de los eventos y atajos del ratón
de Pekwm. |
| ~/.pekwm/start |
Es el
script que permite añadir aplicaciones para que se
ejecuten en el inicio de Pekwm. |
| ~/.pekwm/vars |
Es el
archivo de
configuración de las variables de entorno a utilizar en los
archivos de configuración de Pekwm. |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando como root:
2)
MODO MANUALINUX
El principal inconveniente del comando anterior es
que
tenermos 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.
pekwm-0.1.16-scripts.tar.gz
$ su
# tar zxvf pekwm-0.1.16-scripts.tar.gz
# cd pekwm-0.1.16-scripts
# ./Desinstalar_pekwm-0.1.16 |
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 pekwm-0.1.16-scripts.tar.gz
# cd pekwm-0.1.16-scripts
# ./Respaldar_pekwm-0.1.16 |
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_pekwm-0.1.16
|
Configuración de Pekwm
1) ~/.pekwm/autoproperties
2) ~/.pekwm/config
3) ~/.pekwm/menu
4) ~/.pekwm/start
5) ~/.pekwm/mouse
1) ~/.pekwm/autoproperties 
Con la edición de este archivo, personalizamos el comportamiento
de las ventanas de las aplicaciones que ejecutemos cuando estemos
en una sesión de este administrador de ventanas, es decir,
posición, tamaño, ubicación en un determinado
escritorio virtual, título, con decoración o sin
decoración, que las ventanas nuevas se abran todas en una misma
ventana, etc. y por último, autoagrupamiento, o lo que es lo
mismo, en una misma ventana juntamos dos o el número que creamos
conveniente de aplicaciones.
Respecto a esto último decir que
procuremos autoagrupar aplicaciones con tamaños similares de
ventanas, porque la ventana fija el tamaño de la
aplicación más pequeña a la más grande. Y
el resultado puede ser desproporcionado en el sentido de que muchas
aplicaciones guardan el tamaño de la ventana al ser
cerradas, y si las ejecutamos en otro entorno nos
aparecerán totalmente descuadradas respecto a su tamaño
original.
Para poder configurar las ventanas necesitaremos el uso del programa xprop para poder utilizar la información que nos proporciona de identificación de la ventana. Un ejemplo con El Gimp, ejecuto el programa, luego abro una terminal y lanzo el comando xprop, el puntero del ratón se convertirá en una cruz, y con la misma hago clic sobre la caja de herramientas de Gimp, de la información que me aparezca en la ventana de terminal, hay que coger lo siguiente:
WM_WINDOW_ROLE(STRING) = "gimp-toolbox"
WM_CLASS(STRING) = "gimp", "Gimp"
|
No aparecen juntos, yo los junto para ahorrar espacio y no perdernos en el tema. El parámetro WM_WINDOW_ROLE(STRING) sirve
para identificar a la ventana respecto a las otras del programa,
cuando éste tiene más de una abierta, en este caso "gimp-toolbox", el parámetro WM_CLASS(STRING) sirve para identificar al programa, en este caso "Gimp", "Gimp".
Trasladamos esta información al archivo autoproperties para que en el menú de lista de ventanas sólo aparezca una de todas las que tiene abiertas El Gimp, para evitar confusiones y una saturación del menú. (Este ejemplo viene comentado # en el mismo)
Property = "^gimp,^Gimp" {
Role = "gimp-toolbox"
ApplyOn = "Start New"
}
Property = ".gimp,^Gimp" {
ApplyOn = "Start New"
Skip = "Menus";
}
|
Creo que en lo que se refiere a la identificación de las
ventanas y su traslación al archivo de configuración
queda bastante claro,
| xprop |
autoproperties |
| WM_CLASS(STRING) = "gimp", "Gimp" |
Property = "^gimp,^Gimp" |
| WM_WINDOW_ROLE(STRING) = "gimp-toolbox" |
Role = "gimp-toolbox" |
Los parámetros que admite este archivo de configuración
son los siguientes (Recordar que "True o False" pueden ser sustituidos
por "1 o 0" para activar o desactivar el parámetro
correspondiente) :
| Sticky = "True o False" |
La ventana se muestra en todos los escritorios virtuales. |
| Shaded = "True o False" |
La ventana se inicia enrollada. |
| MaximizedVertical = "True o False" |
La ventana se inicia maximizada de forma vertical. |
| MaximizedHorizontal = "True o False" |
La ventana se inicia maximizada de forma horizontal. |
| Iconified = "True o False" |
La ventana se inicia minimizada. |
| Border = "True o False" |
La ventana se inicia con borde. |
| Titlebar = "True o False" |
La ventana se inicia con la barra del título. |
| ClientGeometry = "geometría" |
Define el tamaño y
la posición del cliente de la ventana, excluyendo el
tamaño de los bordes y la decoración de la misma.
Ejemplo: 100x100+0-0 |
| FrameGeometry = "geometría" |
Define el tamaño y la posición de la ventana, incluyendo el
tamaño de los bordes y la decoración de la misma. Si el parámetro ClientGeometry está presente, éste será sobreescrito por el parámetro FrameGeometry. Ejemplo: 100x100+0-0 |
| Workspace = "número" |
Define en qué escritorio se iniciará el programa. |
| PlaceNew = "True o False" |
Activa el uso de reglas de ubicación para este cliente. |
| FocusNew = "True o False" |
Define si este cliente seguirá estando enfocado al iniciarse una nueva ventana emergente. |
| Focusable = "True o False" |
Define si este cliente podrá ser enfocado cuando esté corriendo. |
| Opacity = "1.0, 0.5" |
Define el nivel de opacidad de la ventana cuando recibe el enfoque ("1.0, 0.5") y cuando no lo tiene ("1.0, 0.5"). Un valor de 0.0 equivale a una transparencia total, y un valor de 1.0 a una opacidad total. El valor tiene que estar
comprendido entre 0.0 y 1.0.
Para poder hacer uso de esta característica, el programa tiene que haberse compilado con la opción --enable-opacity, además de la ejecución al inicio de Xcompmgr. |
| CfgDeny = "parámetro" |
Una lista de condiciones
de denegación de llamadas por parte del programa cliente. Si
añadimos más de una, irán separadas por espacios y
las comillas abrirán y cerrarán la lista. Pueden ser: |
| "Position" |
Ignora la petición de cambio de posición de la ventana. |
| "Size" |
Ignora la petición de cambio de tamaño de la ventana. |
| "Stacking" |
Ignora la petición de cambio del apilado de la ventana. |
| "ActiveWindow" |
Ignora la petición de cambio del enfoque de la ventana. |
| "MaximizedVert" |
Ignora la petición de cambio a maximizado vertical de la ventana. |
| "MaximizedHorz" |
Ignora la petición de cambio a maximizado horizontal de la ventana. |
| "Hidden" |
Ignora la petición de cambio para mostrar/ocultar la ventana. |
| "Fullscreen" |
Ignora la petición de cambio para poner la ventana a pantalla completa. |
| "Above" |
Ignora la petición de cambio para poner la ventana por encima de las otras. |
| "Bellow" |
Ignora la petición de cambio para poner la ventana por debajo de las otras. |
| ApplyOn = "parámetro" |
Una lista de condiciones
para aplicar a la configuración (Property) de una determinada
aplicación en este archivo. Si añadimos más de
una, irán separadas por espacios y
las comillas abrirán y cerrarán la lista. Pueden ser: |
| "Start" |
Aplicar si la ventana ya existe antes del inicio/reinicio de Pekwm. Reseñar que si utilizamos el parámetro grouping, Start no tendrá en cuenta los escritorios virtuales. |
| "Reload" |
Aplicar cuando los archivos de configuración de Pekwm sean recargados. |
| "New" |
Aplicar cuando la aplicación se inicie por primera vez. |
| "Workspace" |
Aplicar cuando la ventana sea enviada a otro escritorio virtual. |
| "Transient" |
Aplicar a las ventanas
transitorias así como a las ventanas normales. Las cajas de
diálogo son normalmente ventanas transitorias. |
| "TransientOnly" |
Aplicar sólo a las ventanas transitorias.
Las cajas de diálogo son normalmente ventanas transitorias. |
| Skip = "parámetro" |
Una lista de situaciones
en las que será ignorada la aplicación definida y
permitirá al usuario omitir determinadas acciones. Si añadimos más de
una, irán separadas por espacios y
las comillas abrirán y cerrarán la lista. Pueden ser: |
| "Snap" |
No captura esta ventana cuando se muevan las ventanas. |
| "Menus" |
No muestra esta ventana en los menús de Pekwm. |
| "FocusToggle" |
No enfoca esta ventana cuando se alterne el enfoque entre las ventanas abiertas. |
| Layer = "parámetro" |
La capa de ventanas. Hace
que la ventana esté debajo o encima de las otras ventanas. La
capa por defecto es "Normal". Los posibles parámetros de
posición son (ordenados desde la posición más
inferior hacia la más superior) : |
| "Desktop" |
|
| "Below" |
|
| "Normal" |
|
| "OnTop" |
|
| "Harbour" |
|
| "AboveHarbour" |
|
| "Menu" |
|
| Title = "nombre" |
Aplicar esta autopropiedad
en los clientes cuyo título de ventana sea igual al texto
definido en el parámetro. El texto tiene que ser de tipo regex, un
ejemplo: "^Guardando" |
| Role = "nombre" |
Aplicar esta
autopropiedad en los clientes cuyo WM_WINDOW_ROLE(STRING) sea igual al
texto definido en el parámetro. El texto tiene que ser
de tipo regex, un ejemplo: "^gimp-toolbox" |
| Group = "nombre" |
Define el nombre del grupo. Esta sección contiene todas las opciones posibles de agrupamiento de ventanas. |
| Size = "número" |
Cuántos clientes deben agruparse en un grupo de ventanas. |
| Behind = "True o False" |
Si se pone en True los nuevos clientes de un grupo de ventanas nunca estarán activos en el mismo. |
| Global = "True o False" |
Si se pone en True
los nuevos clientes de un grupo de ventanas se iniciarán siempre
aunque este grupo esté en otro escritorio virtual o minimizado. |
| Raise = "True o False" |
Si se pone en True los nuevos
clientes de un grupo de ventanas elevarán el marco en el que se abran. |
| FocusedFirst = "True o False" |
Si se pone en True
y hay más de un marco en dónde la ventana podría
ser autoagrupada dentro, el marco actualmente enfocado es considerado
la primera opción. |
Un ejemplo de autoagrupamiento sería éste,
Property = ".*,^Firefox" {
Group = "netwin" {
Size = "0"
}
ApplyOn = "New Start Reload"
}
Property = ".*,^Claws-mail" {
Group = "netwin" {
Size = "0"
}
ApplyOn = "New Start Reload Transient"
}
|
En la 1ª regla todas las ventanas iguales a ".*,^Firefox" serán agrupadas en un grupo con el nombre netwin y esto será aplicado (ApplyOn) en el inicio (Start) y en la recarga (Reload) de Pekwm y al abrir nuevas ventanas (New) de Firefox, pero no incluirá las ventanas de diálogo.
En la 2ª regla lo mismo que en la primera pero esta vez para Claws-mail, en este caso las ventanas de diálogo (Transient) si serán incluidas en el grupo de ventanas junto a Firefox. Para un número ilimitado de ventanas agrupadas se utiliza siempre el valor "0" en el parámetro "Size".
El resultado lo podemos ver en las capturas de pantalla siguientes, un dato, si cerramos la ventana y Firefox no
tiene el enfoque en esos momentos, en la siguiente ejecución
del mismo, nos saldrá el cuadro de diálogo de cierre
incorrecto de la sesión anterior. Para cambiar de una ventana a
otra con hacer clic en el título de cada una es suficiente.
2) ~/.pekwm/config 
Éste es el archivo de configuración principal de Pekwm y se divide en 5 secciones diferenciadas,
2a) Files
Esta sección contiene las rutas por defecto de los archivos de configuración de Pekwm
y la ruta al tema que se esté utilizando en estos momentos. En
este último caso, si tuvieramos problemas de inicio por culpa de
algún tema siempre tendríamos la posibilidad de cambiarlo
desde este archivo.
Files {
Keys = "~/.pekwm/keys"
Mouse = "~/.pekwm/mouse"
Menu = "~/.pekwm/menu"
Start = "~/.pekwm/start"
AutoProps = "~/.pekwm/autoproperties"
Theme = "~/.pekwm/themes/MilkyLeopard"
Icons = "~/.pekwm/icons/"
} |
2b) MoveResize
En esta sección se definen los parámetros de movimiento y redimensionado de las ventanas.
MoveResize {
EdgeAttract = "10"
EdgeResist = "10"
WindowAttract = "5"
WindowResist = "5"
OpaqueMove = "True"
OpaqueResize = "False"
} |
| Definición de los elementos de la sección MoveResize |
| EdgeAttrack = "número" |
La distancia mínima en píxeles entre el borde de la pantalla y la ventana nueva abierta más cercana. |
| EdgeResit = "número" |
La distancia mínima en píxeles entre el borde de la pantalla y la ventana al moverla. |
| WindowAttract = "número" |
La distancia mínima en píxeles entre las ventanas. |
| WindowResist = "número" |
La distancia mínima en píxeles entre las ventanas al moverlas. |
| OpaqueMove = "True o False" |
Si se pone en True activa el movimiento opaco de la ventana. |
| ResizeMove = "True o False" |
Si se pone en True activa el redimensionado opaco de la ventana. |
2c) Screen
Sección principal de configuración del archivo ~/.pekwm/config y en la que configuramos todo lo relacionado con los escritorios virtuales y el comportamiento de las ventanas.
Screen {
Workspaces = "4"
WorkspacesPerRow = "2"
WorkspaceNames = "Main;Web;E-mail;Music"
ShowFrameList = "True"
ShowStatusWindow = "True"
ShowStatusWindowCenteredOnRoot = "False"
ShowClientID = "False"
ShowWorkspaceIndicator = "500"
PlaceNew = "True"
FocusNew = "True"
TrimTitle = "..."
FullscreenAbove = "True"
FullscreenDetect = "True"
HonourRandr = "True"
HonourAspectRatio = "True"
EdgeSize = "1"
EdgeIndent = "False"
PixmapCacheSize = "20"
DoubleClickTime = "250"
Placement {
Model = "CenteredOnParent Smart MouseNotUnder"
Smart {
Row = "True"
TopToBottom = "True"
LeftToRight = "True"
OffsetX = "0"
OffsetY = "0"
}
}
UniqueNames {
SetUnique = "False";
Pre = " #";
Post = "";
}
} |
| Definición de los elementos de la sección Screen |
| Workspaces = "número" |
Define el número de escritorios virtuales a utilizar. |
| WorkspacesPerRow = "número" |
Define el número
de escritorios por fila del indicador de escritorios que se muestra en
el centro de la pantalla cuando cambiamos de escritorio. |
| WorkspacesNames = "nombres" |
Define el nombre de cada escritorio virtual de los que se muestran en el indicador de escritorios, separados por ; |
| ShowFrameList = "True o False" |
Define si una lista de
todas las ventanas abiertas en el escritorio será desplegada al
ejecutar las acciones NextFrame/PrevFrame. |
| ShowStatusWindow = "True o False" |
Define si se mostrará la información de tamaño y posición al mover o redimensionar una ventana. |
| ShowStatusWindowCenteredOnRoot = "True o False" |
Si se pone en True el antiguo comportamiento del estado de la ventana será usado. |
| ShowClientID = "True o False" |
Si se pone en True se mostrará la identificación del cliente de la ventana mediante los valores estándar EWMH. |
| ShowWorkspaceIndicator = "Número" |
Define el tiempo en milisegundos en el que será mostrado el indicador de escritorios. |
| WorkspaceIndicatorScale = "Número" |
Define el tamaño
del indicador de escritorios. Un valor más alto significa un
tamaño más pequeño. |
| WorkspaceIndicatorOpacity = "0.5" |
Define el nivel de opacidad del indicador de escritorios. Un valor de 0.0 equivale a una transparencia total,
y un valor de 1.0 a una opacidad total. El valor tiene que estar
comprendido entre 0.0 y 1.0.
Para poder hacer uso de esta característica, el programa tiene que haberse compilado con la opción --enable-opacity, además de la ejecución al inicio de Xcompmgr. |
| PlaceNew = "True o False" |
Activa el uso de reglas de ubicación para todos los clientes. |
| FocusNew = "True o False" |
Define si las ventanas nuevas siempre reciben el enfoque. |
| TrimTitle = "texto" |
Define el texto que usará Pekwm
para recortar los títulos de ventana muy largos. Si se
deja vacío no se realizará ningún recorte. |
| FullScreenAbove= "True o False" |
Si se pone en True
las ventanas que se pongan a pantalla completa se situarán por encima
de los paneles o cualquier otra utilidad de escritorio que esté
corriendo junto a Pekwm |
| FullScreenDetect= "True o False" |
Si se pone en True, Pekwm intentará detectar las pantallas completas de los programas que no sean compatibles con EWHM y adaptará la ventana al estado requerido por la aplicación en cuestión. |
| HonourRandr= "True o False" |
Si se pone en True fuerza a Pekwm a interpretar la información proporcionada por Xinerama en detrimento de Xrandr. |
| HonourAspectRatio= "True o False" |
Si se pone en False no se respetará la proporción de las ventanas cuando sean redimensionadas. (nuevo en la versión 0.1.11) |
| EdgeSize = "número" |
Define el tamaño en
píxeles del borde de la pantalla que será considerado
como borde de la pantalla virtual de Pekwm. Un valor de 0 desactiva los bordes. |
| EdgeIndent = "True o False" |
Si se pone en True se reservará espacio donde esté el borde de la pantalla. |
| PixmapCacheSize = "número" |
Determina el número de archivos de imagen sin usar que serán almacenados en la caché de Pekwm para un uso futuro. |
| DoubleClickTime = "número" |
Tiempo en milisegundos para que un clic se cuente como un doble clic. |
| Definición de los elementos de la subsección Placement
|
| Model = "parámetro" |
Define el modelo de comportamiento de las ventanas en su ubicación en la pantalla. Que puede ser: |
| "Smart" |
Intenta colocar la ventana donde no haya otra presente. |
| "MouseCentered" |
Coloca la ventana centrada debajo de la posición actual del puntero del ratón. |
| "MouseTopLeft" |
Coloca la esquina superior izquierda de la ventana debajo del puntero del ratón. |
| "MouseNotUnder" |
Coloca la ventana en las esquinas de la pantalla evitando la posición actual del puntero del ratón. |
| "CenteredOnParent" |
Coloca las ventanas transitorias en el centro de la ventana padre. |
| Definición de los elementos de la subsección Smart de la subsección Placement |
| Row = "True o False" |
Si se pone en True se usarán filas en vez de columnas para la ubicación de las ventanas. |
| TopToBottom = "True o False" |
Si se pone en False la ventana es ubicada empezando desde abajo. |
| LeftToRight = "True o False" |
Si se pone en False la ventana es ubicada empezando desde la derecha. |
| OffSetX = "número" |
Espacio horizontal en
píxeles que se reservará entre las ventanas nuevas y
viejas, y el borde de la pantalla. Un valor de 0 no deja ningún espacio. |
| OffSetY = "número" |
Espacio vertical en
píxeles que se reservará entre las ventanas nuevas y
viejas, y el borde de la pantalla. Un valor de 0 no deja
ningún espacio. |
| Definición de los elementos de la subsección UniqueNames |
| SetUnique = "True o False" |
Define si esta
característica es usada o no. En aquellos clientes que utilizan
el mismo título de ventana podemos añadirles un prefijo o
sufijo para diferenciarlos unos de otros. Ejemplo: terminal, terminal
[2] |
| Pre = "texto" |
Texto a colocar antes del número único de cliente. |
| Post = "texto" |
Texto a colocar después del número único de cliente. |
2d) Menu
En esta sección se configura el comportamiento del menú
relacionado con la forma de apertura de los submenús y el modo de ejecución de los programas que lo componen.
Menu {
DisplayIcons = "True"
Icons = "DEFAULT" {
Minimum = "16x16"
Maximum = "16x16"
}
# To enable make separate window have other icon size restrictions,
# for example wallpaper menu found in pekwm_menu_tools, set the following
# for each menu you want to "free".
# Icons = "Wallpaper" {
# Minimum = "64x64"
# Maximum = "64x64"
# }
# Defines how menus act on mouse input.
# Possible values are: "ButtonPress ButtonRelease DoubleClick Motion"
# To make submenus open on mouse over, comment the default Enter,
# uncomment the alternative, and reload pekwm.
Select = "Motion"
# Enter = "ButtonPress"
Enter = "Motion"
Exec = "ButtonRelease"
} |
| Definición de los elementos de la sección Menu |
| DisplayIcons = "True o False" |
Habilita el uso de iconos en el menú, por defecto estos tienen que estar ubicados en el subdirectorio ~/.pekwm/icons. |
| FocusOpacity = "1.0" |
Define el nivel de opacidad de la ventana del menú seleccionada. Un valor de 0.0 equivale a una transparencia total,
y un valor de 1.0 a una opacidad total. El valor tiene que estar
comprendido entre 0.0 y 1.0.
Para poder hacer uso de esta característica, el programa tiene que haberse compilado con la opción --enable-opacity, además de la ejecución al inicio de Xcompmgr. |
| UnfocusOpacity = "0.5" |
Define el nivel de opacidad de la ventana del menú no seleccionada. Un valor de 0.0 equivale a una transparencia total,
y un valor de 1.0 a una opacidad total. El valor tiene que estar
comprendido entre 0.0 y 1.0. |
| Icons = "DEFAULT" |
Estos son los iconos que se utilizan por defecto, y tienen que estar ubicados en el subdirectorio ~/.pekwm/icons.
Con este parámetro y los valores que vienen a
continuación se puede crear un menú de fondos de
escritorio, con el tamaño de miniatura definido por el
tamaño del icono. |
| Minimum = "16x16" |
Define el tamaño mínimo de los iconos. |
| Maximun = "16x16" |
Define el tamaño máximo de los iconos. |
| Select = "parámetro" |
Define el tipo de evento
del ratón para seleccionar una entrada del menú a elegir
entre "ButtonPress", "ButtonReleased", "DoubleClick" o "Motion". |
| Enter = "parámetro" |
Define el tipo de evento
del ratón para la apertura de los submenús a elegir entre
"ButtonPress", "ButtonReleased", "DoubleClick" o
"Motion". En este caso, si queremos que se haga de forma
automática es recomendable elegir "Motion". |
| Exec = "parámetro" |
Define el tipo de evento del ratón para ejecutar una entrada a
elegir entre "ButtonPress", "ButtonReleased", "DoubleClick" o
"Motion". |
2e) CmDialog
En esta sección configuramos las opciones del cuadro de diálogo de ejecución de programas de Pekwm,
entre otras cosas el tamaño del historial, la ruta al archivo de
configuración y el intervalo de tiempo en el que el historial será guardado en el archivo de configuración.
CmdDialog {
HistoryUnique = "True"
HistorySize = "1024"
HistoryFile = "~/.pekwm/history"
HistorySaveInterval = "16"
} |
2f) Harbour
Harbour es el equivalente al Slit de Fluxbox o Blackbox, y en menor medida guarda un cierto parecido con el Wharf de AfterStep, es decir, un contenedor transparente donde se ubicarán las conocidas dockapps en el caso de que deseemos utilizarlas con Pekwm, en esta sección se configura todo lo relacionado con el mismo.
Harbour {
OnTop = "True"
MaximizeOver = "False"
Placement = "Right"
Orientation = "TopToBottom"
Head = "0"
DockApp {
SideMin = "64"
SideMax = "0"
}
} |
| Definición de los elementos de la sección Harbour |
| Placement = "parámetro" |
Define
el lugar de la pantalla donde se ubicará el Harbour, a elegir entre: "Right" (a la derecha), "Left" (a la izquierda), "Top" (arriba) o "Bottom" (abajo). |
| Orientation = "parámetro" |
Define la orientación hacia la que el Harbour
se expandirá, a elegir entre: TopToBottom (de arriba hacia
abajo), BottomToTop (de abajo hacia arriba), RightToLeft (de derecha a
izquierda) o LeftToRight (de izquierda a derecha). |
| OnTop = "True o False" |
Define si el Harbour estará siempre por encima de todas las ventanas. |
| MaximizeOver = "True o False" |
Define si las ventanas al ser maximizadas cubrirán el Harbour ("True") o se quedarán en el borde del mismo ("False"). |
| Head = "número" |
Si está activado Xinerama, con este parámetro definimos en el que pantalla estará ubicado el Harbour. |
| Opacity = "0.5" |
Define el nivel de opacidad del Harbour. Un valor de 0.0 equivale a una transparencia total,
y un valor de 1.0 a una opacidad total. El valor tiene que estar
comprendido entre 0.0 y 1.0.
Para poder hacer uso de esta característica, el programa tiene que haberse compilado con la opción --enable-opacity, además de la ejecución al inicio de Xcompmgr. |
| Definición de los elementos de la subsección Dockapp de la sección Harbour |
| Sidemin = "número" |
Define el tamaño mínimo del dockapp ubicado en el Harbour, si el tamaño del dockapp es inferior al establecido en este parámetro, el mismo será redimensionado al valor establecido. |
| SideMax = "número" |
Define el tamaño máximo del dockapp ubicado en el Harbour. si el tamaño del dockapp es superior al establecido en este parámetro, el mismo será redimensionado al valor establecido. |
3) ~/.pekwm/menu 
Este es el archivo de configuración del menú de Pekwm,
incluye también los menús de las ventanas, y he
aprovechado para crear un script que traduce al español de forma
automática el mismo. Los usuarios con las locales en UTF-8, descargarse la versión con el sufijo del mismo nombre.
traducir_menu_pekwm.zip | traducir_menu_pekwm_utf8.zip
Lo descomprimimos y lo ejecutamos, se creará una copia de
seguridad del menú original y traducirá todas las
entradas en inglés.
$ unzip traducir_menu_pekwm.zip
$ ./traducir_menu_pekwm |
Ejemplo recortado del menú
# Menu config for pekwm
# Variables
INCLUDE = "vars"
RootMenu = "Pekwm" {
Entry = "Terminal" { Actions = "Exec $TERM &" }
Entry = "Ejecutar.." { Actions = "ShowCmdDialog" }
Separator {}
Submenu = "Editores" {
Entry = "vi" { Actions = "Exec $TERM -title vi -e vi &" }
Entry = "vim" { Actions = "Exec $TERM -title vim -e vim &" }
Entry = "gvim" { Actions = "Exec gvim &" }
Entry = "Emacs" { Actions = "Exec emacs &" }
Entry = "Emacs Terminal" { Actions = "Exec $TERM -title emacs -e emacs -nw &" }
Entry = "Kate" { Actions = "Exec kate &" }
}
|
| Definición de los elementos del Menú Raíz |
| Submenu = "nombre" |
Comienzo de un submenú. El "nombre" es la entrada que aparecerá en el menú raíz. |
| Name = "nombre" |
Alternativa al uso de Submenu = "nombre" {. Iniciar el submenú con Submenu { Name = "nombre" para usar esta característica. |
| Entry = "nombre" |
Crea una entrada en el menú. "nombre" es el texto que se mostrará en el menú para esta entrada. |
| Icon = "nombre" |
Define el icono a utilizar para la entrada del menú, dicho icono tiene que estar ubicado en el subdirectorio ~/.pekwm/icons. Un ejemplo:
Entry = "Firefox" { Icon="firefox.png"; Actions="Exec firefox &" } |
| Actions = "acción" |
Ejecuta una acción, "acción" es la acción o acciones a ejecutar, las que son propias de Pekwm vienen definidas en los archivos de configuración de los atajos del teclado y del ratón, keys y mouse. |
| Separator {} |
Añade un separador al menú. |
| Definición de las Acciones del Menú |
| Exec |
Es
la que se utiliza para lanzar las aplicaciones, si queremos que se
ejecuten en 2º plano, añadir & al final del comando a ejecutar. |
| Reload |
Hace que Pekwm vuelva a leer los archivos de configuración sin necesidad de salir del mismo. |
| Restart |
Reinicia Pekwm |
| RestartOther |
Termina Pekwm e inicia otro administrador de ventanas o aplicación. |
| Exit |
Termina Pekwm y cierra la sesión X. |
Pekwm
admite un número ilimitado de submenús, lo que tenemos
que tener siempre en cuenta, es el cierre oportuno con la
correspondiente llave '}', de lo contrario el menú no se
mostrará. Un ejemplo:
Submenu = "Multimedia" {
Entry = "Amarok" { Actions = "Exec amarok &" }
Entry = "Quod Libet" { Actions = "Exec quodlibet &" }
Entry = "Xmms" { Actions = "Exec xmms &" }
Entry = "MPlayer" { Actions = "Exec gmplayer &" }
Entry = "Xine" { Actions = "Exec xine &" }
Entry = "xawtv" { Actions = "Exec xawtv &" }
Entry = "Ogle" { Actions = "exec ogle &" }
Entry = "alsamixer" { Actions = "Exec $TERM -title alsamixer -e alsamixer &" }
}
|
Ahora lo que hago es crear un submenú "Vídeo" dentro del submenú "Multimedia" y queda así,
Submenu = "Multimedia" {
Submenu = "Vídeo" {
Entry = "MPlayer" { Actions = "Exec gmplayer &" }
Entry = "Ogle" { Actions = "exec ogle &" }
Entry = "Xine" { Actions = "Exec xine &" }
}
Entry = "Amarok" { Actions = "Exec amarok &" }
Entry = "Quod Libet" { Actions = "Exec quodlibet &" }
Entry = "Xmms" { Actions = "Exec xmms &" }
Entry = "xawtv" { Actions = "Exec xawtv &" }
Entry = "alsamixer" { Actions = "Exec $TERM -title alsamixer -e alsamixer &" }
}
|
No olvidarlo nunca, llave '{' que abre, llave '}' que cierra el
submenú. Es recomendable añadir el símbolo &
al final del comando, para evitar problemas de ejecución en
algunos programas. Decir también que Pekwm soporta menús dinámicos al igual que Openbox pero la información al respecto no es muy extensa, así que me remito a la documentación del programa.
Si tenemos pensado probar el funcionamiento de la transparencia real en Pekwm,
y lo hemos compilado con ese soporte, podemos añadir al
menú, la siguiente entrada, que nos permitirá activar y
desactivar la transparencia real de una ventana determinada. Lo que
está en rojo:
WindowMenu = "Menú de ventana" {
Entry = "(Des)Pegar" { Actions = "Toggle Sticky" }
Entry = "(Des)Enrollar" { Actions = "Toggle Shaded" }
Entry = "Minimizar" { Actions = "Set Iconified" }
Entry = "Activar/Desactivar transparencia" { Actions = "Toggle Opaque" }
Entry = "Comando.." { Actions = "ShowCmdDialog" }
|
4) ~/.pekwm/start
Si tenemos pensado añadir aplicaciones al inicio de Pekwm,
éste el archivo en el que tendremos que añadir los
comandos de ejecución de éstas, recordar que tiene que
tener permisos de ejecución.
#!/bin/sh
# PekWM start file
# This file is a simple shell script; It gets run on pekwm startup, after
# the theme and all config has loaded if it is set executable
# (chmod +x start).
#
# This is different from ~/.xinitrc because a normal configuration of
# .xinitrc you'll run all commands, then launch the window manager last.
#
# It also gets re-run every time pekwm is restarted.
#
# As for it's usefulness, well, it's up to you. I actually set my background
# from my start file; since it runs after the theme gets loaded, this
# effectively overrides whatever's in the theme.
#
# There's probably a few other good uses for it, too. I mainly pushed for it
# because when I was doing fluxbox's docs, people used to complain that there
# wasn't one, and I wanted to avoid that for pekwm. ;) --eyez
numlockx &
xbindkeys &
fbpanel &
wmix &
wmnetload &
gai-bgswitcher &
idesk &
bluecombo &
hsetroot -fill /home/jose/Fotos/Gab-Richens-1600.jpg -gamma 1.5 -sharpen 1.5 -blur 1.0
|
5) ~/.pekwm/mouse
En este archivo podemos modificar el modo de enfocar las ventanas con
el ratón además de los atajos del mismo, la primera vez
que iniciamos Pekwm
lo primero que comprobaremos es que el enfoque de las ventanas sigue al
puntero del ratón. Para utilizar el modo clásico de toda
la vida, clic para enfocar, tendremos que comentar # las líneas
25, 39, 45, 49, 53, 57, 61, 65, 69, 73 y 138.
Motion = "2" { Threshold = "4"; Actions = "GroupingDrag True" }
Motion = "Mod1 3" { Actions = "Resize" }
# Remove the following line if you want to use click to focus.
# Enter = "Any Any" { Actions = "Focus" }
}
|
El resto de archivos de configuración no tienen ninguna
complicación y como también he puesto la
documentación original del programa, lo mejor para cualquier
duda es consultarla.
En cuanto a los temas, un inciso, he comprobado que muchos no utilizan
un tamaño específico de fuente, con lo que ésta se
muestra en un tamaño proporcional al ancho de la ventana y
resulta demasiado grande. Para solucionar esto o cambiar la fuente a
utilizar tendremos que editar el tema que tengamos en uso. Como suelen
utilizar variables de entorno para definir las fuentes, la
edición es bastante sencilla. Un ejemplo con el tema AguaLemon que ha sido adaptado del original de Xfvwm4.
# Agualemon v1.0
# (prepared for pekwm version 1.6)
# Ported from the XFWM theme, Agualemon
# Last modification date: 05/16/08
# set up the font
$FONT = "DejaVu Sans-10"
|
La original que llevaba era la Tahoma sin número para definir el tamaño y yo la he sustituido por la DejaVu Sans con un tamaño de 10 píxeles, que es la que se muestra en las capturas de pantalla del manual.
En aquellos temas en los que aparece la sección del Harbour de esta forma,
Harbour {
Texture = "EMPTY"
}
|
resulta conveniente editar el parámetro "EMPTY" y añadir
un color similar al que utilize el tema, lo podemos coger con el gotero
de color del Gimp y copiar los valores a este archivo, dejándolo del modo que pongo a continuación,
Harbour {
Texture = "Solid #E1E0E1"
}
|
¿Por qué todo esto? Porque he comprobado que en aquellos
temas que no tienen definido este parámetro, el fondo del Harbour y borde de las dockapps, tiende a corromper los colores del mismo, creando un efecto visual muy desagradable.
Hsetroot
Aunque existen muchos
programas que nos
permiten colocar una imagen en el fondo de la pantalla, Hsetroot va más allá y además de esa
función nos
permite componer una imagen personalizada de la original sin
necesidad de tener que editar ésta. Teniendo en
cuenta que la
mayoría de los fondos de escritorio que circulan por la red
están en formato JPEG, y
que éste cada vez que se graba de nuevo va degradando
progresivamente
la imagen original, Hsetroot evita
todo esto y nos permite jugar con las posibilidades que nos ofrece de
composición de imágenes, obteniendo unos
resultados
bastante espectaculares y sobre todo personalizables.
Características
* Soporte de pseudotransparencias
* Ajuste de brillo, contraste y gamma
* Soporte de gradientes sólidos
(rectángulos)
* Soporte de mezcla de colores en las imágenes
* Enfoque y desenfoque de las imágenes
* Soporte de reflejo (horizontal, vertical y
diagonal)
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado Hsetroot
para la elaboración de este documento.
* GCC - (4.7.2) o Clang - (3.1)
* Gawk - (4.0.1)
* Make - (3.82)
* Automake - (1.12.5)
* Autoconf - (2.69)
Librerías
de Desarrollo
* Xorg o XFree86 - (Xorg 7.7 / xorg-server 1.13.0)
LibX11 - (1.5.0)
LibXext - (1.3.1)
* Imlib2 - (1.4.5)
Descarga
hsetroot-1.0.2.tar.gz
Optimizaciones
Extracción y
Configuración 
$ tar zxvf hsetroot-1.0.2.tar.gz
$ cd hsetroot-1.0.2
$ export {CC,CXX}=clang
$ ./configure |
Explicación de los
comandos
export {CC,CXX}=clang
:
Si vamos a compilar el paquete con Clang, establecemos
la correspondiente variable de entorno.
Compilación
Instalación
como root
$ su
# make install-strip |
Desinstalación
como root
1) MODO TRADICIONAL
En el directorio de compilación ejecutamos el siguiente comando como root:
2) MODO MANUALINUX
hsetroot-1.0.2-scripts.tar.gz
$ su
# tar zxvf hsetroot-1.0.2-scripts.tar.gz
# cd hsetroot-1.0.2-scripts
# ./Desinstalar_hsetroot-1.0.2 |
Copia de Seguridad
como root
$ su
# tar zxvf hsetroot-1.0.2-scripts.tar.gz
# cd hsetroot-1.0.2-scripts
# ./Respaldar_hsetroot-1.0.2 |
Restaurar la Copia de Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_hsetroot-1.0.2
|
Un ejemplo de uso
$
hsetroot -fill /home/jose/Fotos/Gab-Richens-1600.jpg -gamma 1.5
-sharpen
1.5 -blur 1.0 |
Ahora sólo nos queda
añadirlo al script de inicio start :
#!/bin/sh
# PekWM start file
# This file is a simple shell script; It gets run on pekwm startup,
after
# the theme and all config has loaded if it is set executable
# (chmod +x start).
#
# This is different from ~/.xinitrc because a normal configuration of
# .xinitrc you'll run all commands, then launch the window manager last.
#
# It also gets re-run every time pekwm is restarted.
#
# As for it's usefulness, well, it's up to you. I actually set my
background
# from my start file; since it runs after the theme gets loaded, this
# effectively overrides whatever's in the theme.
#
# There's probably a few other good uses for it, too. I mainly pushed
for it
# because when I was doing fluxbox's docs, people used to complain that
there
# wasn't one, and I wanted to avoid that for pekwm. ;) --eyez
fbpanel &
hsetroot -fill
/home/jose/Fotos/Gab-Richens-1600.jpg -gamma 1.5 -sharpen 1.5 -blur
1.0 |
En el manual de Utilidades del Fondo del Escritorio se explica de una forma
más extendida las opciones de uso de este programa.
Configurar el inicio de
Pekwm
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/pekwm |
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/pekwm |
3) GDM/KDM en
Mandriva
Creamos un archivo y
lo nombramos 27Pekwm,
lo editamos y añadimos lo siguiente:
NAME:Pekwm
ICON=
EXEC=/usr/local/bin/pekwm
DESC=
SCRIPT:
exec /usr/local/bin/pekwm |
Lo instalamos en el
directorio /etc/X11/wmsession.d, y ejecutamos el comando fndSession
para que genere los correspondientes archivos desktop que se
crearán de forma automática en los respectivos
directorios de ubicación de las sesiones de GDM y KDM.
$ su
# install -m644 27Pekwm /etc/X11/wmsession.d
# fndSession
|
| Ubicación de los archivos desktop creados en Mandriva |
| GDM |
/etc/X11/dm/Sessions/27Pekwm.desktop |
| KDM |
/usr/share/apps/kdm/sessions/27Pekwm.desktop |
4) GDM/KDM en Fedora
Abrimos un editor de texto y añadimos lo siguiente al mismo,
[Desktop Entry]
Encoding=UTF-8
Name=Pekwm
Comment=
Exec=/usr/local/bin/pekwm
Terminal=False
TryExec= |
Lo guardamos con el nombre pekwm.desktop, con la codificación de caracteres, UTF-8, y lo instalamos en /usr/share/xsessions, y en /usr/share/kde4/apps/kdm/sessions.
$ su
# install -m644 pekwm.desktop /usr/share/xsessions
# install -m644 pekwm.desktop /usr/share/kde4/apps/kdm/sessions
|
| Ubicación de los archivos desktop creados en Fedora |
| GDM |
/usr/share/xsessions/pekwm.desktop |
| KDM |
/usr/share/kde4/apps/kdm/sessions/pekwm.desktop |
5) GDM/KDM en Slackware y derivados
Abrimos un editor de texto y añadimos lo siguiente al mismo,
#!/bin/sh
# $XConsortium: xinitrc.cpp,v 1.4 91/08/22 11:41:34 rws Exp $
userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap
# merge in defaults and keymaps
if [ -f $sysresources ]; then
xrdb -merge $sysresources
fi
if [ -f $sysmodmap ]; then
xmodmap $sysmodmap
fi
if [ -f $userresources ]; then
xrdb -merge $userresources
fi
if [ -f $usermodmap ]; then
xmodmap $usermodmap
fi
# Start the window manager:
exec /usr/local/bin/pekwm
|
Lo guardamos con el nombre xinitrc.pekwm, y lo instalamos en /etc/X11/xinit.
$ su
# install -m755 xinitrc.pekwm /etc/X11/xinit
|
En el mismo editor de texto que tenemos abierto, borramos lo anterior y añadimos lo siguiente,
[Desktop Entry]
Encoding=UTF-8
Name=Pekwm
Comment=
Exec=/etc/X11/xinit/xinitrc.pekwm
Icon=
Type=Application
|
Lo guardamos con el nombre pekwm.desktop, con la codificación de caracteres, UTF-8, y lo instalamos en /usr/share/xsessions, y en /usr/share/apps/kdm/sessions.
$ su
# install -m644 pekwm.desktop /usr/share/xsessions
# install -m644 pekwm.desktop /usr/share/apps/kdm/sessions
|
| Ubicación de los archivos desktop creados en Slackware y derivados |
| GDM |
/usr/share/xsessions/pekwm.desktop |
| KDM |
/usr/share/apps/kdm/sessions/pekwm.desktop |
6) GDM/KDM en openSUSE
Abrimos un editor de texto y añadimos lo siguiente al mismo,
[Desktop Entry]
X-SuSE-translate=true
Encoding=UTF-8
Type=XSession
Exec=/usr/local/bin/pekwm
TryExec=/usr/local/bin/pekwm
Name=Pekwm
Comment=
|
Lo guardamos con el nombre pekwm.desktop, con la codificación de caracteres, UTF-8, y lo instalamos en /usr/share/xsessions, y en /usr/share/kde4/apps/kdm/sessions.
$ su
# install -m644 pekwm.desktop /usr/share/xsessions
# install -m644 pekwm.desktop /usr/share/kde4/apps/kdm/sessions
|
| Ubicación de los archivos desktop creados en openSUSE |
| GDM |
/usr/share/xsessions/pekwm.desktop |
| KDM |
/usr/share/kde4/apps/kdm/sessions/pekwm.desktop |
7) GDM/KDM en Debian y derivados
Abrimos un editor de texto y añadimos lo siguiente al mismo,
[Desktop Entry]
Encoding=UTF-8
Type=XSession
Exec=/usr/local/bin/pekwm
TryExec=/usr/local/bin/pekwm
Name=Pekwm
|
Lo guardamos con el nombre pekwm.desktop, con la codificación de caracteres, UTF-8, y lo instalamos en /usr/share/xsessions, y en /usr/share/kde4/apps/kdm/sessions.
$ su
# install -m644 pekwm.desktop /usr/share/xsessions
# install -m644 pekwm.desktop /usr/share/kde4/apps/kdm/sessions
|
| Ubicación de los archivos desktop creados en Debian y derivados |
| GDM |
/usr/share/xsessions/pekwm.desktop |
| KDM |
/usr/share/kde4/apps/kdm/sessions/pekwm.desktop |
8) Qingy
Abrimos un editor de texto y añadimos lo siguiente al mismo,
exec
/usr/local/bin/pekwm |
Lo guardamos con el nombre Pekwm, y lo instalamos en /etc/qingy/Xsessions.
$ su
# install -m755 Pekwm /etc/qingy/Xsessions
|
9) 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,E16,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 Pekwm,
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=pekwm
case $1 in
XFce4)
exec startxfce4
;;
IceWM)
exec icewm-session
;;
WindowMaker)
exec wmaker
;;
Blackbox)
exec startblackbox
;;
Fluxbox)
exec startfluxbox
;;
E17)
exec enlightenment_start
;;
E16)
exec starte16
;;
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 Pekwm
|