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

Entornos GráficosAplicaciones

Administradores de SesionesAdministradores de VentanasEscritoriosUtilidades de Escritorio

Administradores de Ventanas - OpenboxAdministradores de Ventanas - Qlwm

Administradores de Ventanas - Pekwm




Administradores de Ventanas - Pekwm




Copyright

Copyright © José Luis Lara Carrascal  2006-2017   http://manualinux.eu



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 sucede con Openbox no posee barra de tareas, por lo que 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-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
# 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 - (7.1.0) o Clang - (4.0.0)
* Gawk - (4.1.4)
* M4 - (1.4.18)
* Make - (4.2.1)
* Automake - (1.15)
* Autoconf - (2.69)
* Pkg-config - (0.29.2)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 1.19.3)
   LibICE - (1.0.9)
   LibX11 - (1.6.5)
   LibXext - (1.3.3)
   LibXft - (2.3.2)
   LibXinerama - (1.1.3)
   LibXrandr - (1.5.1)
   LibXrender - (0.9.10)
   LibXpm - (3.5.12)
* Libjpeg - (9b)
* Libpng - (1.6.29)



Descarga

pekwm-0.1.17.tar.bz2

Optimizaciones

$ export {C,CXX}FLAGS='-O3 -march=amdfam10 -mtune=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 e inferiores se utiliza la opción '-mcpu=' en lugar de '-mtune='.
Nota informativa sobre las optimizaciones para Clang
* La opción '-mtune=' está soportada a partir de la versión 3.4 de 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
Genéricos
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=', si utilizamos GCC. Esta opción está disponible a partir de GCC 4.2.
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.
Intel
atom Intel Atom con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición bonnell.
bonnell Intel Bonnell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
broadwell Intel Broadwell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6.
cannonlake Intel Cannonlake con soporte de instrucciones X87, MMX, AVX, FXSR, CMPXCHG16B, POPCNT, AES, PCLMUL, XSAVE, XSAVEOPT, LAHFSAHF, RDRAND, F16C, FSGSBase, AVX2, BMI, BMI2, FMA, LZCNT, MOVBE, INVPCID, VMFUNC, RTM, HLE, SlowIncDec, ADX, RDSEED, SMAP, MPX, XSAVEC, XSAVES, SGX, CLFLUSHOPT, AVX512, CDI, DQI, BWI, VLX, PKU, PCOMMIT, CLWB, VBMI, IFMA y SHA. Esta opción está disponible a partir de Clang 3.9.
core2 Intel Core2 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.3.
core-avx2 Intel Core (Haswell). Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición haswell.
core-avx-i Intel Core (ivyBridge) con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición ivybridge.
corei7 Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1 y SSE4.2 y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición nehalem.
corei7-avx Intel Core i7 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AES y PCLMUL y extensiones 64-bit. Soporta también los procesadores Intel Core i3 e i5. Esta opción está disponible desde GCC 4.6, hasta GCC 4.8. A partir de GCC 4.9 se utiliza la definición sandybridge.
haswell Intel Haswell con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
i386 Intel i386.
i486 Intel i486.
i586, pentium Intel Pentium sin soporte de instrucciones MMX.
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.
intel Intel Haswell y Silvermont. Este valor sólo es aplicable en la opción '-mtune='. Esta opción está disponible a partir de GCC 4.9.
ivybridge Intel Ivy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL, FSGSBASE, RDRND, F16C y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
knl Intel Knights Landing con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, AVX512F, AVX512PF, AVX512ER y extensiones 64-bit. Esta opción está disponible a partir de GCC 5 y Clang 3.4.
lakemont Intel Quark Lakemont MCU, basado en el procesador Intel Pentium. Esta opción está disponible a partir de GCC 6 y Clang 3.9.
nehalem Intel Nehalem con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
nocona Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2, SSE3 y extensiones 64-bit.
penryn Intel Penryn con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1.
pentiumpro Intel PentiumPro.
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.
pentium4, pentium4m Intel Pentium4 con soporte de instrucciones MMX, SSE y SSE2.
pentium-m Versión de bajo consumo de Intel Pentium3 con soporte de instrucciones MMX, SSE y SSE2. Utilizado por los portátiles Centrino.
pentium-mmx Intel PentiumMMX basado en Pentium con soporte de instrucciones MMX.
prescott Versión mejorada de Intel Pentium4 con soporte de instrucciones MMX, SSE, SSE2 y SSE3.
sandybridge Intel Sandy Bridge con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6.
silvermont Intel Silvermont con soporte de instrucciones MOVBE, MMX, SSE, MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMU, RDRND y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9 y Clang 3.6.
skx Intel Skylake Server con soporte de instrucciones X87, MMX, AVX, FXSR, CMPXCHG16B, POPCNT, AES, PCLMUL, XSAVE, XSAVEOPT, LAHFSAHF, RDRAND, F16C, FSGSBase, AVX2, BMI, BMI2, FMA, LZCNT, MOVBE, INVPCID, VMFUNC, RTM, HLE, SlowIncDec, ADX, RDSEED, SMAP, MPX, XSAVEC, XSAVES, SGX, CLFLUSHOPT, AVX512, CDI, DQI, BWI, VLX, PKU, PCOMMIT y CLWB. Esta opción está disponible a partir de Clang 3.5. A partir de Clang 3.9 se utiliza también la definición skylake-avx512.
skylake Intel Skylake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.6.
skylake-avx512 Intel Skylake Server con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD y extensiones 64-bit. Esta opción está disponible a partir de GCC 6 y Clang 3.9
slm Intel Silvermont con soporte de instrucciones X87, MMX, SSE42, FXSR, CMPXCHG16B, MOVBE, POPCNT, PCLMUL, AES, SlowDivide64, CallRegIndirect, PRFCHW, SlowLEA, SlowIncDec, SlowBTMem y LAHFSAHF. Esta opción está disponible a partir de Clang 3.4. A partir de Clang 3.9 se utiliza también la definición silvermont.
westmere Intel Westmere con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, AES, PCLMUL y extensiones 64-bit. Esta opción está disponible a partir de GCC 4.9.
yonah Procesadores basados en la microarquitectura de Pentium M, con soporte de instrucciones MMX, SSE, SSE2 y SSE3.
AMD
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. La definición barcelona está disponible a partir de Clang 3.6.
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.
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.
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.
bdver3 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.8 y Clang 3.4.
bdver4 Procesadores basados en AMD Family 15h core con soporte de instrucciones x86-64 (BMI, BMI2, TBM, F16C, FMA, FMA4, FSGSBASE, AVX, AVX2, XOP, LWP, AES, PCL_MUL, CX16, MOVBE, 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.9 y Clang 3.5.
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.
btver2 Procesadores basados en AMD Family 16h core con soporte de instrucciones x86-64 (MOVBE, F16C, BMI, AVX, PCL_MUL, AES, SSE4.2, SSE4.1, CX16, ABM, SSE4A, SSSE3, SSE3, SSE2, SSE, MMX y extensiones 64-bit). Esta opción está disponible a partir de GCC 4.8.
geode AMD integrado con soporte de instrucciones MMX y 3DNow!. Esta opción está disponible a partir de GCC 4.3.
k6 AMD K6 con soporte de instrucciones MMX.
k6-2, k6-3 Versiones mejoradas de AMD K6 con soporte de instrucciones MMX y 3DNow!.
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.
x86-64 Procesadores AMD y compatibles con soporte de instrucciones x86-64, SSE2 y extensiones 64-bit.
znver1 Procesadores basados en AMD Family 17h core con soporte de instrucciones x86-64 (BMI, BMI2, F16C, FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES, PCL_MUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1, SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT y extensiones 64-bit). Esta opción está disponible a partir de GCC 6 y Clang 4.
VIA
c3 VIA C3 con soporte de instrucciones MMX y 3DNow! (no se implementa planificación para este chip).
c3-2 VIA C3-2 (Nehemiah/C5XL) con soporte de instrucciones MMX y SSE (no se implementa planificación para este chip).
c7 VIA C7 (Esther) con soporte de instrucciones MMX, SSE, SSE2 y SSE (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
eden-x2 VIA Eden X2 con soporte de instrucciones x86-64, MMX, SSE, SSE2 y SSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
eden-x4 VIA Eden X4 con soporte de instrucciones MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX y AVX2 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
esther VIA Eden Esther con soporte de instrucciones MMX, SSE, SSE2 y SSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano VIA Nano genérico con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-1000 VIA Nano 1xxx con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-2000 VIA Nano 2xxx con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-3000 VIA Nano 3xxx con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3, SSSE3 y SSE4.1 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-x2 VIA Nano Dual Core con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
nano-x4 VIA Nano Quad Core con soporte de instrucciones x86-64, MMX, SSE, SSE2, SSE3 y SSSE3 (no se implementa planificación para este chip). Esta opción está disponible a partir de GCC 7.
IDT
winchip2 IDT Winchip2, que equivale a un i486 con soporte de instrucciones MMX y 3DNow!.
winchip-c6 IDT Winchip C6, que equivale a un i486 con soporte de instrucciones MMX.

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, utilizar el parámetro -flto

Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9, y por lo tanto, no es combinable con la misma.

Parámetros adicionales

Parámetros adicionales de eliminación de avisos específicos en el proceso de compilación
Clang
$ export {C,CXX}FLAGS+=' -Qunused-arguments'

Establecer el RPATH correspondiente si utilizamos una versión de GCC que no es la principal del sistema
$ export LDFLAGS="-Wl,-rpath,/opt/gcc7/lib -lstdc++"
Sustituir /opt/gcc7/lib por la ruta de instalación de la versión de GCC alternativa que se vaya a utilizar en el proceso de compilación de este paquete.

Establecer el uso de enlazador dinámico para LLD
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=' -Wl,--lto-partitions=2 -Wl,--lto-O3'
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--thinlto-jobs=2 -Wl,--lto-O3'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, no es necesario añadir el primer parámetro.

Establecer la variable de entorno de uso de compilador para Clang
$ export {CC,CXX}=clang
Si utilizamos Clang con Ccache, tendremos que establecer la variable de entorno correspondiente de Ccache de uso de compilador.
$ export CCACHE_CC=clang

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

$ tar jxvf pekwm-0.1.17.tar.bz2
$ cd pekwm-0.1.17
$ ./configure --disable-dependency-tracking --sysconfdir=/etc

Explicación de los comandos

--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

$ make

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 -c "make install-strip"

Instalación de los archivos de configuración personal en nuestro home

$ cp -rf /etc/pekwm ~/.pekwm
$ rm -f ~/.pekwm/{mouse_{click,sloppy,system},config_system}
$ mkdir -p ~/.pekwm/{themes,icons}
$ chmod +x ~/.pekwm/start

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

Estadísticas de Compilación e Instalación de Pekwm
CPU AMD Athlon(tm) II X2 260 Processor
MHz 3214.610
RAM 2048 MB
Sistema de archivos XFS
Versión de Glibc 2.25
Enlazador dinámico LLD 4.0.0
Compilador Clang 4.0.0 + Ccache 3.3.4
Parámetros de optimización -03 -march=amdfam10 -mtune=amdfam10 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin
Parámetros de compilación -j2
Tiempo de compilación 1' 00"
Archivos instalados 50
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 980 KB

Consumo inicial de CPU y RAM de Pekwm

Consumo inicial de CPU y RAM de Pekwm
Proceso
CPU Memoria física
pekwm 0 % 14,0 MB

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.17, 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:

$ su -c "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.

pekwm-0.1.17-scripts.tar.gz

$ su
# tar zxvf pekwm-0.1.17-scripts.tar.gz
# cd pekwm-0.1.17-scripts
# ./Desinstalar_pekwm-0.1.17

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.17-scripts.tar.gz
# cd pekwm-0.1.17-scripts
# ./Respaldar_pekwm-0.1.17

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.17



Configuración de Pekwm  Nota importante

1) ~/.pekwm/autoproperties
2) ~/.pekwm/config
3) ~/.pekwm/menu
4) ~/.pekwm/start
5) ~/.pekwm/mouse




1) ~/.pekwm/autoproperties  Bloc de Notas


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.

Captura - Pekwm - Grupo - 1

Captura - Pekwm - Grupo - 2




2) ~/.pekwm/config  Bloc de Notas

É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  Bloc de Notas

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" }

Una alternativa a la edición manual del menú a tener en cuenta es Xdgmenumaker, un generador de menú de aplicaciones automático, que escanea todos los archivos desktop que tengamos en nuestro sistema.



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/Fondos/371874,103.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 dejar el archivo tal y como aparece en el ejemplo de abajo.

# Swap comments on the two folling lines to switch between
# sloppy and click to focus
# INCLUDE = "$_PEKWM_ETC_PATH/mouse_sloppy"
INCLUDE = "$_PEKWM_ETC_PATH/mouse_click"



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 - (7.1.0) o Clang - (4.0.0)
* Gawk - (4.1.4)
* Make - (4.2.1)
* Automake - (1.15)
* Autoconf - (2.69)

Librerías de Desarrollo

* Xorg - (7.7 / xorg-server 1.19.3)
   LibX11 - (1.6.5)
   LibXext - (1.3.3)
* Imlib2 - (1.4.10)



Descarga

hsetroot-1.0.2.tar.xz

Firma Digital  Clave pública PGP

hsetroot-1.0.2.tar.xz.asc

Verificar la firma digital del paquete

$ gpg --import manualinux.asc
$ gpg --verify hsetroot-1.0.2.tar.xz.asc hsetroot-1.0.2.tar.xz

Optimizaciones

Optimizaciones adicionales

Optimizaciones adicionales
GCC
Graphite
$ export {C,CXX}FLAGS+=' -floop-interchange -ftree-loop-distribution -floop-strip-mine -floop-block'
LTO
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=2'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, utilizar el parámetro -flto

Clang
Polly
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
LTO
$ export {C,CXX}FLAGS+=' -flto'
ThinLTO
$ export {C,CXX}FLAGS+=' -flto=thin'
La aplicación de esta optimización es alternativa a la tradicional LTO, a partir de Clang 3.9, y por lo tanto, no es combinable con la misma.

Parámetros adicionales

Establecer el uso de enlazador dinámico para LLD
$ export LDFLAGS+=' -fuse-ld=lld'
Optimizaciones complementarias LTO de LLD
$ export LDFLAGS+=' -Wl,--lto-partitions=2 -Wl,--lto-O3'
Optimizaciones complementarias ThinLTO de LLD
$ export LDFLAGS+=' -Wl,--thinlto-jobs=2 -Wl,--lto-O3'
Donde pone 2 se indica el número de núcleos de nuestro procesador, si sólo tiene uno, no es necesario añadir el primer parámetro.

Establecer la variable de entorno de uso de compilador para Clang
$ export {CC,CXX}=clang

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

$ tar Jxvf hsetroot-1.0.2.tar.xz
$ cd hsetroot-1.0.2
$ export LDFLAGS="-lX11"
$ ./configure

Explicación de los comandos

export LDFLAGS="-lX11" : Requerido para poder compilar correctamente el paquete.

Compilación

$ make

Instalación como root

$ su -c "make install-strip"

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

Estadísticas de Compilación e Instalación de Hsetroot
CPU AMD Athlon(tm) II X2 260 Processor
MHz 3214.610
RAM 2048 MB
Sistema de archivos XFS
Versión de Glibc 2.25
Enlazador dinámico LLD 4.0.0
Compilador Clang 4.0.0
Parámetros de optimización -03 -march=amdfam10 -mtune=amdfam10 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto
Tiempo de compilación > 1"
Archivos instalados /usr/local/bin/hsetroot
Ocupación de espacio en disco 24 KB

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

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/Fondos/371874,103.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/Fondos/371874,103.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 OpenMandriva

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


Captura Pekwm


Captura - Pekwm - 2




Enlaces  


http://www.pekwm.org >> La web de Pekwm.

Box-Look.org - Pekwm >> Temas.

Utilidades de Escritorio - Xdgmenumaker >> Manual de Xdgmenumaker, un generador automático de menús de aplicaciones para administradores de ventanas, entre los que se encuentra Pekwm.


Foro Galería Blog


Actualizado el 19-05-2017

Administradores de Ventanas - Pekwm

Administradores de Ventanas - OpenboxAdministradores de Ventanas - Qlwm