Copyright
Copyright © José
Luis Lara Carrascal 2011-2023
Sumario
Introducción
Características
Instalación
Configuración
Personalizar la ejecución de las aplicaciones
Añadir aplicaciones al inicio de WeeWM
Configurar el inicio de WeeWM
Iniciamos WeeWM
Paquetes binarios
Enlaces
Introducción
WeeWM es
un administrador de ventanas orientado a los usuarios que priorizan el
uso del teclado respecto al uso normal del ratón para manejar
las ventanas en un entorno gráfico, no tiene decoración
de ventana ni tampoco proporciona menú alguno. Parte de su
código
está basado en Evilwm.
Aunque su desarrollo está abandonado desde hace bastantes
años, sigue siendo funcional. Sin lugar a dudas, otra
opción más, un poco retro, para los usuarios alternativos de GNU/Linux.
Características
* Decoraciones de ventanas minimalistas.
* Soporte de dockapps.
* Ubicación inteligente de las ventanas.
* Escritorios virtuales.
* Control absoluto del manejo de las ventanas mediante atajos de teclado.
* Atajos de teclado configurables.
* Soporte de arrastre opaco de las ventanas.
* Una sola tecla para algunos comandos.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado WeeWM
para la elaboración de este documento.
* GCC - (13.1.0) o Clang - (16.0.6)
* Make - (4.4.1)
Librerías
de Desarrollo
* Xorg - (7.7 / xorg-server 21.1.8)
LibX11 - (1.8.6)
Descarga
weewm-0.0.2.tar.xz
Firma Digital
weewm-0.0.2.tar.xz.asc
Verificar la firma digital del paquete
$ gpg --import manualinux.asc
$ gpg --verify weewm-0.0.2.tar.xz.asc weewm-0.0.2.tar.xz |
Optimizaciones
$ export
{C,CXX}FLAGS='-O3 -march=znver3 -mtune=znver3'
|
Donde pone znver3 se indica el procesador respectivo de cada sistema seleccionándolo de la siguiente tabla: |
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. |
x86-64 |
Procesador genérico con extensiones 64-bit. Esta opción está disponible a partir de GCC 8 y Clang 1.9. |
x86-64-v2 |
Procesador genérico con con
soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT,
SSE3, SSE4.1, SSE4.2, SSSE3) y extensiones 64-bit. Esta opción
está disponible a partir de GCC 11 y Clang 12. |
x86-64-v3 |
Procesador genérico con con
soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT,
SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE,
XSAVEC, FMA4) y extensiones 64-bit. Esta opción está
disponible a partir de GCC 11 y Clang 12. |
x86-64-v4 |
Procesador genérico con con
soporte de instrucciones X86-64 (MMX, SSE, SSE2, LAHFSAHF, POPCNT,
SSE3, SSE4.1, SSE4.2, SSSE3, AVX, AVX2, F16C, FMA, LZCNT, MOVBE, XSAVE,
XSAVEC, AVX512*, FMA4) y extensiones 64-bit. Esta opción
está disponible a partir de GCC 11 y Clang 12. |
Intel |
alderlake |
Intel Alderlake con soporte de
instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI,
AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE,
PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE,
AMX-INT8, AVX-VNNI) y extensiones 64-bit. Esta opción
está disponible a partir de GCC 11 y Clang 12. |
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 Server con soporte
de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2,
F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F,
AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA,
UMIP y extensiones 64-bit. Esta opción está
disponible a partir de GCC 8 y Clang 3.9. |
cascadelake |
Intel Cascadelake con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2,
F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F,
CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI y extensiones
64-bit. Esta opción está disponible a partir de GCC 9 y Clang 8. |
cooperlake |
Intel Cooper
Lake con soporte de instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3,
SSE4.1, SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND,
FMA, BMI, BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC,
XSAVES, AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD,
AVX512VNNI, AVX512BF16 y extensiones 64-bit. Esta opción
está disponible a partir de GCC 10 y Clang 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. |
emeraldrapids |
Intel Emerald Rapids. Esta opción está disponible a partir de GCC 13 y Clang 16. |
goldmont |
Intel Goldmont con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE y extensiones
64-bit. Esta opción está disponible a partir de GCC 9 y Clang 5. |
goldmont-plus |
Intel Goldmont Plus con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID,
SGX, UMIP y extensiones 64-bit. Esta opción está
disponible a partir de GCC 9 y Clang 7. |
grandridge |
Intel Grand Ridge con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B,
CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,
AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD, RAOINT y
extensiones 64-bit. Esta opción está disponible a partir
de GCC 13 y Clang 16. |
graniterapids |
Intel Grand Ridge con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, CX16, SAHF, FXSR, AVX, XSAVE, PCLMUL, FSGSBASE, RDRND, F16C,
AVX2, BMI, BMI2, LZCNT, FMA, MOVBE, HLE, RDSEED, ADCX, PREFETCHW, AES,
CLFLUSHOPT, XSAVEC, XSAVES, SGX, AVX512F, AVX512VL, AVX512BW, AVX512DQ,
AVX512CD, PKU, AVX512VBMI, AVX512IFMA, SHA, AVX512VNNI, GFNI, VAES,
AVX512VBMI2, VPCLMULQDQ, AVX512BITALG, RDPID, AVX512VPOPCNTDQ, PCONFIG,
WBNOINVD, CLWB, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD,
CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16,
AMX-TILE, AMX-INT8, AVX-VNNI, AVX512-FP16, AVX512BF16, AMX-FP16,
PREFETCHI y extensiones 64-bit. Esta opción está
disponible a partir de GCC 13 y Clang 16. |
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. |
icelake-client |
Intel Icelake Client con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2,
F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F,
AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA,
CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG,
AVX512VNNI, VPCLMULQDQ, VAES y extensiones 64-bit. Esta
opción está disponible a partir de GCC 8 y Clang 7. |
icelake-server |
Intel Icelake Server con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI, BMI2,
F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES, AVX512F,
AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI, AVX512IFMA, SHA,
CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ, AVX512BITALG,
AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD y extensiones
64-bit. Esta opción está disponible a partir de GCC 8 y Clang 7. |
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. |
knm |
Intel Knights Mill 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, AVX512CD,
AVX5124VNNIW, AVX5124FMAPS, AVX512VPOPCNTDQ y extensiones 64-bit. Esta
opción está disponible a partir de GCC 8 y Clang 6. |
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. |
meteorlake |
Intel Meteor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
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. |
raptorlake |
Intel Raptor Lake. Esta opción está disponible a partir de GCC 13 y Clang 16. |
rocketlake |
Intel Rocket Lake con soporte de
instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI,
AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ,
AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES) y extensiones 64-bit. Esta
opción está disponible a partir de GCC 11 y Clang 13. |
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. |
sapphirerapids |
Intel Sapphire Rapids con soporte
de instrucciones x86-64 (MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, CLWB, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VNNI,
AVX512BF16, MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE,
PTWRITE, WAITPKG, SERIALIZE, TSXLDTRK, UINTR, AMX-BF16, AMX-TILE,
AMX-INT8 and AVX-VNNI) y extensiones 64-bit. Esta opción
está disponible a partir de GCC 11 y Clang 12. |
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. |
sierraforest |
Intel Sierra Forest con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AES, PREFETCHW, PCLMUL, RDRND, XSAVE, XSAVEC, XSAVES, XSAVEOPT,
FSGSBASE, PTWRITE, RDPID, SGX, GFNI-SSE, CLWB, MOVDIRI, MOVDIR64B,
CLDEMOTE, WAITPKG, ADCX, AVX, AVX2, BMI, BMI2, F16C, FMA, LZCNT,
PCONFIG, PKU, VAES, VPCLMULQDQ, SERIALIZE, HRESET, KL, WIDEKL,
AVX-VNNI, AVXIFMA, AVXVNNIINT8, AVXNECONVERT, CMPCCXADD y extensiones
64-bit. Esta opción está disponible a partir de GCC 13 y Clang 16. |
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. |
tigerlake |
Intel Tiger Lake
con soporte de instrucciones OVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1,
SSE4.2, POPCNT, PKU, AVX, AVX2, AES, PCLMUL, FSGSBASE, RDRND, FMA, BMI,
BMI2, F16C, RDSEED, ADCX, PREFETCHW, CLFLUSHOPT, XSAVEC, XSAVES,
AVX512F, AVX512VL, AVX512BW, AVX512DQ, AVX512CD, AVX512VBMI,
AVX512IFMA, SHA, CLWB, UMIP, RDPID, GFNI, AVX512VBMI2, AVX512VPOPCNTDQ,
AVX512BITALG, AVX512VNNI, VPCLMULQDQ, VAES, PCONFIG, WBNOINVD, MOVDIRI,
MOVDIR64B, AVX512VP2INTERSECT y extensiones 64-bit. Esta opción
está disponible a partir de GCC 10 y Clang 10. |
tremont |
Intel Tremont con soporte de
instrucciones MOVBE, MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2,
POPCNT, AES, PCLMUL, RDRND, XSAVE, XSAVEOPT, FSGSBASE, PTWRITE, RDPID,
SGX, UMIP, GFNI-SSE, CLWB, ENCLV y extensiones 64-bit. Esta
opción está disponible a partir de GCC 9 y Clang 7. |
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. |
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. |
znver2 |
Procesadores basados en AMD Family
17h core con soporte de instrucciones x86-64 (BMI, BMI2, ,CLWB, 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 9 y Clang 9. |
znver3 |
Procesadores basados en AMD Family
19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C,
FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,
SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU,
VPCLMULQDQ, VAES) y extensiones 64-bit. Esta opción
está disponible a partir de GCC 11 y Clang 12. |
znver4 |
Procesadores basados en AMD Family
19h core con soporte de instrucciones x86-64 (BMI, BMI2, CLWB, F16C,
FMA, FSGSBASE, AVX, AVX2, ADCX, RDSEED, MWAITX, SHA, CLZERO, AES,
PCLMUL, CX16, MOVBE, MMX, SSE, SSE2, SSE3, SSE4A, SSSE3, SSE4.1,
SSE4.2, ABM, XSAVEC, XSAVES, CLFLUSHOPT, POPCNT, RDPID, WBNOINVD, PKU,
VPCLMULQDQ, VAES, AVX512F, AVX512DQ, AVX512IFMA, AVX512CD, AVX512BW,
AVX512VL, AVX512BF16, AVX512VBMI, AVX512VBMI2, AVX512VNNI,
AVX512BITALG, AVX512VPOPCNTDQ, GFNI) y extensiones 64-bit. Esta
opción está disponible a partir de GCC 12.3 y Clang 16. |
Optimizaciones adicionales
Optimizaciones adicionales |
GCC |
Graphite
|
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
|
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
LTO |
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
|
En versiones inferiores a GCC
10, sustituir auto
por el número de núcleos que tenga nuestro
procesador. Si sólo tiene uno, utilizar el parámetro -flto
|
PGO |
1) Fase inicial de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -O2 -g1 -fprofile-generate=/var/pgo/weewm'
|
2) Ejecución y testeo del programa. |
3) Fase final de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -fprofile-use=/var/pgo/weewm -Wno-error=coverage-mismatch'
|
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. |
PGO |
1) Fase inicial de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -O2 -g1 -fprofile-generate=/var/pgo/weewm' |
2) Ejecución y testeo del programa. |
3) Conversión del perfil de optimización a un formato legible por Clang. |
$ PGODIR=/var/pgo/weewm; llvm-profdata merge $PGODIR/default_*.profraw --output=$PGODIR/default.profdata |
4) Fase final de compilación e instalación del paquete. |
$ export {C,CXX}FLAGS+=' -fprofile-use=/var/pgo/weewm' |
Parámetros adicionales
Establecer la ruta de búsqueda de directorios de librerías en sistemas de 64 bits multiarquitectura |
$ export LDFLAGS+=' -L/usr/lib64 -L/usr/local/lib64 -L/opt/gcc13/lib64' |
Cada usuario tendrá
que establecer la ruta de búsqueda de directorios, en
función de la distribución que utilice. |
Establecer el uso de enlazador dinámico para Mold |
$ export LDFLAGS+=' -fuse-ld=mold' |
Establecer el uso de enlazador dinámico para LLD |
Clang |
$ export LDFLAGS+=' -fuse-ld=lld' |
Optimizaciones complementarias LTO/ThinLTO/PGO de LLD |
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=pgo-memop-opt' |
Optimizaciones complementarias LTO de LLD |
$ export LDFLAGS+=" -Wl,--lto-partitions=$(nproc)" |
Optimizaciones complementarias ThinLTO de LLD |
$ export LDFLAGS+=" -Wl,--thinlto-jobs=$(nproc)" |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción
$ tar Jxvf weewm-0.0.2.tar.xz
$ cd weewm-0.0.2 |
Compilación
Parámetros de compilación opcionales
-j$(nproc)
: Establece el número de procesos de compilación en
paralelo, en función del número de
núcleos e hilos que tenga nuestro procesador, tomando como
referencia la información mostrada por el sistema con el comando
correspondiente. Si nuestro procesador es mononúcleo de un solo
hilo, no añadir esta opción.
Instalación
como root
$ su -c "make install-strip" |
Estadísticas de Compilación e Instalación de WeeWM
Estadísticas de Compilación e Instalación de WeeWM |
CPU |
AMD Ryzen 5 5500 |
MHz |
3593.250 (BoostMax=4457.000) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.4.2-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Versión de Glibc |
2.37 |
Enlazador dinámico |
LLD 16.0.6 |
Compilador |
Clang 16.0.6 |
Parámetros de optimización |
-03 -march=znver2
-mtune=znver2 -mllvm -polly -mllvm
-polly-vectorizer=stripmine -flto=thin -fprofile-use=/var/pgo/weewm
-Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=pgo-memop-opt |
Parámetros de compilación |
-j12 |
Tiempo de compilación |
> 1" |
Archivos instalados |
3 |
|
Ocupación de espacio en disco |
68 KB |
Consumo inicial de CPU y RAM de WeeWM
Consumo inicial de CPU y RAM de WeeWM |
Programa
|
CPU |
RAM |
weewm |
0 % |
1,4 MB |
Para medir el consumo de CPU se utiliza el programa top, y para medir
el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace. |
Directorio de configuración personal
~/.weewm |
Es el directorio de configuración personal de WeeWM en nuestro home. |
~/.weewm/config.rc |
Es el archivo de configuración principal del programa. |
~/.weewm/keys.rc |
Es el archivo de configuración de los atajos de teclado del programa. |
Desinstalación
como root
1)
MODO TRADICIONAL
Este programa no tiene soporte para desinstalación con el comando 'make uninstall'
2)
MODO MANUALINUX
El principal inconveniente del comando anterior es
que
tenemos que tener el directorio de compilación en nuestro
sistema para poder desinstalar el programa. En algunos casos esto
supone muchos megas de espacio en disco. Con el paquete de scripts que
pongo a continuación logramos evitar
el único inconveniente que tiene la compilación
de
programas, y es el tema de la desinstalación de los mismos
sin
la necesidad de tener obligatoriamente una copia de las fuentes
compiladas.
weewm-0.0.2-scripts.tar.gz
$ su
# tar zxvf weewm-0.0.2-scripts.tar.gz
# cd weewm-0.0.2-scripts
# ./Desinstalar_weewm-0.0.2 |
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 weewm-0.0.2-scripts.tar.gz
# cd weewm-0.0.2-scripts
# ./Respaldar_weewm-0.0.2 |
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_weewm-0.0.2
|
Configuración de WeeWM
1) ~/weewm/config.rc
2) ~/weewm/keys.rc
1) ~/weewm/config.rc
Es el archivo de configuración principal del programa, del que a
continuación pongo el que trae por defecto con los comentarios
traducidos al español.
# Configuración de WeeWM
# Leer el archivo README para la sintaxis.
# ===== Configuración WeeWM =====
# anchura del borde (en píxeles)
border 1
# espacio entre la ventana y el borde (en píxeles)
space 1
# número de escritorios virtuales
desktops 5
# anchura mínima de la ventana
minwidth 15
# altura mínima de la ventana
minheight 15
# espacio reservado para mover las ventanas (en píxeles)
move_offset 16
# color del borde activo
color.border.active green
# color del borde inactivo
color.border.inactive black
# color del borde para la ventana visible en todos los escritorios
color.sticky blue
# anchura de la ventana de información - ¡NO DESARROLLADO!
info.width 100
# altura de la ventana de información - ¡NO DESARROLLADO!
info.height 50
# activación del dock (1=activar, 0=desactivar)
dock.use 1
# tamaño del dock (en píxeles)
dock.size 64
# posición del dock (1=arriba, 2=a la izquierda, 3=a la derecha, 4=abajo)
dock.position 3
# alineamiento del dock (0=arriba/a la izquierda, 1=centrado, 2=abajo/a la derecha)
dock.align 1
|
Definición de los elementos del archivo de configuración, ~/weewm/config.rc |
Opción |
Descripción |
border 1 |
Define en valor numérico la anchura en píxeles del borde de la ventana. El valor tiene que estar
comprendido entre 1 y 3. Valor predefinido: 1. |
space 1 |
Define en valor
numérico el espacio en píxeles entre el borde de la
ventana y la ventana. El valor tiene que estar
comprendido entre 0 y 5. Valor predefinido: 1.
|
desktops 5 |
Define en valor
numérico el número de escritorios virtuales que
gestionará el programa. El valor tiene que estar
comprendido entre 1 y 256. Valor predefinido: 5. |
minwidth 15 |
Define en valor numérico la anchura mínima en píxeles de la ventana. El valor tiene que estar
comprendido entre 1 y 4096. Valor predefinido: 15. |
minheight 15 |
Define en valor numérico la altura mínima en píxeles de la ventana. El valor tiene que estar
comprendido entre 1 y 4096. Valor predefinido: 15.
|
move_offset 16 |
Define en valor numérico el espacio reservado en píxeles para mover la ventana. El valor tiene que estar
comprendido entre 1 y 256. Valor predefinido: 16.
|
color.border.active green |
Define el color del borde de la ventana enfocada. Pueden ser nombres de colores
en
inglés que
admita el servidor gráfico X. Valor predefinido: green (verde).
|
color.border.inactive black |
Define el color del borde de la ventana no enfocada. Pueden ser nombres de colores
en
inglés que
admita el servidor gráfico X. Valor predefinido: black (negro).
|
color.sticky blue |
Define el color del borde de la ventana visible en todos los escritorios. Pueden ser nombres de colores
en
inglés que
admita el servidor gráfico X. Valor predefinido: blue (azul). |
info.width 100 |
Define en valor numérico la anchura en píxeles de la ventana de información. El valor tiene que estar
comprendido entre 10 y 4096. Valor predefinido: 100. Este parámetro no ha sido desarrollado todavía.
|
info.height 50 |
Define en valor numérico la altura en píxeles de la ventana de información. El valor tiene que estar
comprendido entre 10 y 4096. Valor predefinido: 50. Este parámetro no ha sido desarrollado todavía.
|
dock.use 1 |
Si lo establecemos en 1, habilitaremos el soporte de dockapps. Valor predefinido: 1. |
dock.size 64 |
Define el tamaño en píxeles del dock. El valor tiene que estar
comprendido entre 8 y 512. Valor predefinido: 64. |
dock.position 3 |
Define la ubicación del dock en la pantalla, que puede ser: 1 (arriba), 2 (a la izquierda), 3 (a la derecha) o 4 (abajo). Valor predefinido: 3 (a la derecha). |
dock.align 1 |
Define el alineamiento del dock en la pantalla, que puede ser: 0 (desde arriba hacia la izquierda), 1 (centrado) o 2 (desde abajo hacia la derecha). Valor predefinido: 0 (desde arriba hacia la izquierda). Es recomendable dejar el valor en 1, porque en 0 y en 2, la mayoría de dockapps se quedarán fuera del dock de WeeWM. |
2) ~/weewm/keys.rc
Es el archivo de configuración de los atajos de teclado del
programa, y es muy configurable, permitiendo lanzar aplicaciones
modificando las propiedades de las ventanas de forma directa.
# Atajos de teclado de WeeWM
# Leer el archivo README para la sintaxis.
# ===== Atajos de teclado de WeeWM =====
mouse_mask
Mod4
Mod1|Control
Left prev_desktop
Mod1|Control
Right next_desktop
Mod4
Left send_prev_desktop
Mod4
Right send_next_desktop
Mod4
F1 desktop_1
Mod4
F2 desktop_2
Mod4
F3 desktop_3
Mod4
F4 desktop_4
Mod4
F5 desktop_5
Mod4
F6 desktop_6
Mod4
F7 desktop_7
Mod4
F8 desktop_8
Mod4
F9 desktop_9
Mod4
F10 desktop_10
Mod4
F11 desktop_11
Mod4
F12 desktop_12
Mod4
Home pos_top_left
Mod4
End pos_bottom_left
Mod4
Prior pos_top_right
Mod4
Next pos_bottom_right
Mod4|Control
Up pos_top
Mod4|Control
Down pos_bottom
Mod4|Control
Left pos_left
Mod4|Control
Right pos_right
Mod4
i move_win_up
Mod4
k move_win_down
Mod4
j move_win_left
Mod4
l move_win_right
Mod1
Tab next_win
Mod1|Shift
Tab prev_win
Mod4
space win_max
Mod4|Control
h
win_max_horizontal
Mod4|Control
v win_max_vertical
Mod4|Control
f win_fix
Mod4|Control
p win_memo_pos
Mod4|Control
d win_memo_desktop
Mod4|Mod1
p win_forget_pos
Mod4|Mod1
d
win_forget_desktop
Mod4
Escape win_kill
Mod1|Control Escape quit
Mod4
Return run xterm 0 7913 xterm
|
Definición de los elementos del archivo de configuración, ~/weewm/config.rc |
Definición |
Comando
|
Combinación |
Acción |
mouse_mask Mod4 |
|
Win + clic izquierdo del ratón |
Prende la ventana, permitiendo su desplazamiento por la pantalla. |
Mod1 | Control Left |
prev_desktop |
Alt + Ctrl + Flecha izquierda
|
Ir al escritorio anterior. |
Mod1 | Control Right |
next_desktop
|
Alt + Ctrl + Flecha derecha |
Ir al siguiente escritorio. |
Mod4 Left |
send_prev_desktop |
Win + Flecha izquierda |
Envía la ventana al escritorio anterior. |
Mod4 Right |
send_next_desktop |
Win + Flecha derecha |
Envía la ventana al siguiente escritorio. |
Mod4 F1 |
desktop_1
|
Win + F1 |
Ir al escritorio nº 1 |
Mod4 F2 |
desktop_2
|
Win + F2 |
Ir al escritorio nº 2 |
Mod4 F3 |
desktop_3
|
Win + F3 |
Ir al escritorio nº 3 |
Mod4 F4 |
desktop_4
|
Win + F4 |
Ir al escritorio nº 4 |
Mod4 F5 |
desktop_5
|
Win + F5 |
Ir al escritorio nº 5 |
Mod4 F6 |
desktop_6
|
Win + F6 |
Ir al escritorio nº 6 |
Mod4 F7 |
desktop_7
|
Win + F7 |
Ir al escritorio nº 7 |
Mod4 F8 |
desktop_8
|
Win + F8 |
Ir al escritorio nº 8 |
Mod4 F9 |
desktop_9
|
Win + F9 |
Ir al escritorio nº 9 |
Mod4 F10 |
desktop_10
|
Win + F10 |
Ir al escritorio nº 10 |
Mod4 F11 |
desktop_11
|
Win + F11 |
Ir al escritorio nº 11 |
Mod4 F12 |
desktop_12
|
Win + F12 |
Ir al escritorio nº 12 |
Mod4 Home |
pos_top_left |
Win + Inicio |
Mueve la ventana hacia la esquina superior izquierda de la pantalla. |
Mod4 End |
pos_bottom_left |
Win + Fin |
Mueve la ventana hacia la esquina inferior izquierda de la pantalla. |
Mod4 Prior |
pos_top_right |
Win + Repág |
Mueve la ventana hacia la esquina superior derecha de la pantalla. |
Mod4 Next |
pos_bottom_right |
Win + Avpág |
Mueve la ventana hacia la esquina inferior derecha de la pantalla. |
Mod4 | Control Up |
pos_top |
Win + Ctrl + Flecha arriba |
Mueve la ventana hacia la parte superior de la pantalla. |
Mod4 | Control Down |
pos_bottom |
Win + Ctrl + Flecha abajo |
Mueve la ventana hacia la parte inferior de la pantalla. |
Mod4 | Control Left |
pos_left |
Win + Ctrl + Flecha izquierda |
Mueve la ventana hacia la parte izquierda de la pantalla. |
Mod4 | Control Right |
pos_right |
Win + Ctrl + Flecha derecha |
Mueve la ventana hacia la parte derecha de la pantalla. |
Mod4 i |
move_win_up |
Win + I |
Mueve la ventana de forma vertical hacia arriba utilizando coordenadas de posición (-X píxeles). |
Mod4 k |
move_win_down |
Win + K |
Mueve la ventana de forma vertical hacia abajo utilizando coordenadas de posición (+X píxeles). |
Mod4 j |
move_win_left |
Win + J |
Mueve la ventana de forma horizontal hacia la izquierda utilizando coordenadas de posición (-X píxeles). |
Mod4 l |
move_win_right |
Win + L |
Mueve la ventana de forma horizontal hacia la derecha utilizando coordenadas de posición (+X píxeles). |
Mod1 Tab |
next_win |
Alt + Tabulador |
Enfoca la siguiente ventana. |
Mod1 | Shift Tab |
prev_win |
Alt + Mayús + Tabulador |
Enfoca la ventana anterior. |
Mod4 space |
win_max |
Win + Espacio |
Maximiza la ventana. |
Mod4 | Control h |
win_max_horizontal |
Win + Ctrl + H |
Maximiza la ventana de forma horizontal. |
Mod4 | Control v |
win_max_vertical |
Win + Ctrl + V |
Maximiza la ventana de forma vertical. |
Mod4 | Control f |
win_fix |
Win + Ctrl + F |
Enfoca/desenfoca la ventana. |
Mod4 | Control p |
win_memo_pos |
Win + Ctrl + P |
Memoriza el tamaño y la posición de la ventana. |
Mod4 | Control d |
win_memo_desktop |
Win + Ctrl + D |
Memoriza el escritorio en el que está ubicada la ventana. |
Mod4 | Mod1 p |
win_forget_pos |
Win + Alt + P |
Anula el tamaño y posición memorizados de la ventana. |
Mod4 | Mod1 d |
win_forget_desktop |
Win + Alt + D |
Anula el escritorio memorizado para la ventana.
|
Mod4 Escape |
win_kill |
Win + Esc |
Mata la ventana actual. |
Mod1 | Control Escape |
quit |
Alt + Ctrl + Esc |
Salir de WeeWM. |
Comandos adicionales no incluidos en el archivo de configuración |
|
pos_center |
|
Centra la ventana en la pantalla. |
Si tenemos activado el bloqueo numérico, los atajos de teclado de WeeWM
no funcionarán correctamente, lo que viene a significar, que el
programa será incontrolable. Todos los atajos de teclado son
configurables, y para saber exactamente la tecla real que corresponde a
su definición, abrimos una ventana de terminal y ejecutamos el
programa xev.
Se abrirá una miniventana, y sólo nos quedará
pulsar la tecla correspondiente, por ejemplo, 'Repág', de la
información que nos muestre en la ventana de terminal, nos
quedamos con lo que está en rojo.
KeyRelease event, serial 34, synthetic NO, window 0x1e00001,
root 0x121, subw 0x0, time 1747491, (212,-18), root:(345,71),
state 0x10, keycode 112 (keysym 0xff55, Prior), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False |
Y ya sabemos que la definición de la tecla 'Repág' en el
mapa de teclado correspondiente se identifica con el nombre de
'Prior'. La forma de averiguar las otras es exactamente la misma.
Conviene modificar el atajo de teclado que mata las ventanas, porque es
el que tendremos que utilizar para cerrarlas, ya que éstas
carecen de botones. La configuración predefinida del mismo es
poco manejable, al utilizar la combinación de la tecla 'Windows'
más 'Escape'. Si queremos acelerar el proceso de cierre de
ventanas tendremos que utilizar un atajo lo más accesible
posible, es decir, dos teclas juntas y a ser posible en la parte
inferior del teclado. Un ejemplo:
Mod4|Mod1
p win_forget_pos
Mod4|Mod1
d
win_forget_desktop
Mod1
z win_kill
Mod1|Control Escape quit
Mod4
Return run xterm 0 7913 xterm |
Con esta combinación, cerraremos las ventanas con 'Alt + Z'.
Personalizar la ejecución de las aplicaciones
NOTA IMPORTANTE:
No he logrado hacer funcionar ningún tipo de aplicación
configurada utilizando estas opciones, con lo que la información
mostrada en esta sección, es teórica, tomada de la
documentación original del programa.
|
Podemos configurar los atajos de teclado de WeeWM, no sólo
para ejecutar aplicaciones cómo sucedería con cualquier
otro administrador de ventanas, sino también para personalizar
la posición y el escritorio virtual en el que se mostrará la ventana de la
aplicación a lanzar. Para este cometido se utilizan los comandos
run o run1, y la forma de configurar el atajo de teclado es la
siguiente:
<Atajo
de teclado> <run o run1> <nombre_aplicación>
<escritorio> <posición> <comando>
<parámetros> |
Un ejemplo:
Mod1 p run1 pcmanfm 0 5 pcmanfm |
Esto haría que con la combinación de teclado Alt + P, ejecutaríamos el administrador de archivos, PCMan,
en el escritorio actual, 0, y posicionado en el centro de la pantalla,
5. Normalmente el nombre de la aplicación es el mismo que el del
ejecutable. Para la posición en la pantalla podemos tomar
valores de coordenadas de posición o en su lugar los
números equivalentes del teclado numérico, teniendo en
cuenta que el 5 es el centro de la pantalla, no cuesta deducir mucho,
dónde ubicarán la ventana el resto de valores
numéricos. Si ponemos 0, no se establecerá ningún
tipo de posición.
Añadir aplicaciones al inicio de WeeWM
WeeWM no tiene script de inicio personal para añadir las aplicaciones
que queremos que se inicien al mismo tiempo que el programa. Para este
cometido crearemos un script con el nombre startweewm y lo instalaremos en /usr/bin,
posteriormente crearemos un script de inicio personal con el nombre de autostart en el directorio de configuración personal de WeeWM,
para evitar tener que editar como root, el script de inicio del
programa, cada vez que queramos añadir o quitar una
aplicación para que se inicie junto a WeeWM, la desinstalación y respaldo del script startweewm viene incluida en
los scripts correspondientes publicados con este manual. No olvidar que
la última línea de comandos del
script siempre tiene que estar ocupada por el comando de
ejecución del administrador de ventanas.
Abrimos un editor de texto y añadimos lo siguiente:
$HOME/.weewm/autostart
exec weewm |
Lo guardamos como startweewm, y lo instalamos en /usr/bin.
$ su -c "install -m755 startweewm /usr/bin"
|
Luego, en el mismo editor de texto borramos lo antes escrito y añadimos por ejemplo, lo siguiente:
#!/bin/sh
xbindkeys &
idesk &
cwallpaper -l
sleep 1.2; wbar &
sleep 1.5; stalonetray -t &
sleep 1.5; wmix &
sleep 2; asclock -d &
sleep 2.5; gai-bgswitcher &
sleep 3; asmail -withdrawn &
sleep 3.5; bluecombo & |
Lo guardamos como autostart, lo copiamos a ~/.weewm y le damos permisos de ejecución.
$ mkdir -p ~/.weewm
$ cp autostart ~/.weewm
$ chmod +x ~/.weewm/autostart |
Como he puesto en el ejemplo, le añado una utilidad de atajos de teclado que mejore y amplíe las funciones de WeeWM, por ejemplo XbindKeys y un menú que podamos activar mediante un atajo de teclado+ratón, y que solvente las carencias que tiene WeeWM en este apartado, por ejemplo myGtkMenu.
El comando de ejecución de myGtkMenu lo añadimos al archivo de configuración de XbindKeys, ~/.xbindkeysrc, a partir de la línea 49, más o menos.
# specify a mouse button
"myGtkMenu ~/.myGtkMenu/Menu.txt"
Mod1+b:1
"claws-mail"
Mod1+s
"rox ~/" |
Con esta configuración, cada vez que ejecutemos la combinación Alt + Clic izquierdo del ratón,
el menú se desplegará en el lugar donde tengamos situado
el puntero del ratón, con la importante ventaja, de que siempre
se colocará por encima de cualquier aplicación que
tengamos abierta.
Procurar siempre que los atajos de teclado configurados en XbindKeys no estén repetidos en WeeWM, teniendo en cuenta que el modificador más común utilizado en WeeWM, es Mod4 (Win), configurar los atajos de XbindKeys,
utilizando de forma preferente Mod1 (Alt), sobre todo para lanzar
aplicaciones, que es la finalidad para la cual vamos a utilizar el
programa.
El uso de paneles es contraproducente por varios motivos: estos se
suelen mostrar sólo en el primer escritorio virtual, el
paginador de los mismos sólo muestra un escritorio virtual, y
otra cosa fundamental, WeeWM no soporta minimizado de las ventanas, por lo que el uso de una barra de tareas resulta completamente inútil.
Configurar el inicio de
WeeWM
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:
2) XDM
Editamos el archivo ~/.xsession que se
encuentra en nuestro home,
si no existe lo creamos, y añadimos lo siguiente:
3) GDM/LightDM/SDDM
Abrimos un editor de texto y añadimos lo siguiente:
[Desktop Entry]
Name=WeeWM
Comment=
Exec=/usr/bin/startweewm
Terminal=False
TryExec=/usr/bin/startweewm |
Lo guardamos con el nombre weewm.desktop y lo instalamos en /usr/share/xsessions.
$ su -c "install -m644 weewm.desktop /usr/share/xsessions"
|
8) Qingy
Abrimos un editor de texto y añadimos lo siguiente:
Lo guardamos con el nombre WeeWM, y lo instalamos en /etc/qingy/Xsessions.
$ su -c "install -m755 WeeWM /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,WeeWM,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 WeeWM,
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=startweewm
case $1 in
XFce4)
exec startxfce4
;;
IceWM)
exec icewm-session
;;
WindowMaker)
exec wmaker
;;
Blackbox)
exec startblackbox
;;
Fluxbox)
exec startfluxbox
;;
E17)
exec enlightenment_start
;;
WeeWM)
exec startweewm
;;
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 WeeWM
Enlaces
https://flashtux.org/weewm >> La web de WeeWM.
|