Copyright
Copyright © José
Luis Lara Carrascal 2006-2023
Sumario
Introducción
Características
Instalación
Directorio de configuración personal
PyPanel
XbindKeys
Fondo de Escritorio
Añadir aplicaciones al inicio de Openbox
Configurar el inicio de Openbox
Iniciamos Openbox
ObConf
Traducción al Español alternativa de ObConf
Obmenu
Personalizar el comportamiento de las ventanas
Enlaces
Introducción
Openbox
es otro administrador de ventanas basado en el código de Blackbox,
a diferencia de éste no tiene barra de tareas, por lo que
necesitaremos
un programa auxiliar que funcione
como panel y barra de tareas. Además,
instalaremos también
todos los programas auxiliares expresamente desarrollados para este
minimalista entorno gráfico, no muy conocido por la
mayoría de usuarios de GNU/Linux.
Características
* Cumple las normas ICCCM y EWMH
* Rápido y ligero.
* Soporte de atajos de teclado.
* Acciones configurables del ratón.
* Resistencia de ventanas.
* Soporte multipantalla Xinerama.
* Soporte de scripts ejecutables en los menús (pipemenús).
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado Openbox
para la elaboración de este documento.
* GCC - (13.1.0) o Clang - (16.0.6)
* Gawk - (5.2.2)
* M4 - (1.4.19)
* Libtool - (2.4.7)
* Make - (4.4.1)
* Automake - (1.16.5)
* Gettext - (0.22)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.8)
LibICE - (1.1.1)
LibSM - (1.2.4)
LibX11 - (1.8.6)
LibXau - (1.0.11)
LibXcursor - (1.2.1)
LibXext - (1.3.5)
LibXft - (2.3.8)
LibXinerama - (1.1.5)
LibXrandr - (1.5.3)
* Fontconfig - (2.14.2)
* GLib - (2.74.7)
* Imlib2 - (1.11.1)
* Librsvg - (2.56.2)
* Libxml2 - (2.11.4)
* Pango - (1.50.14)
* Startup-Notification - (0.12)
Descarga
openbox-3.6.1.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/openbox'
|
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/openbox -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/openbox' |
2) Ejecución y testeo del programa. |
3) Conversión del perfil de optimización a un formato legible por Clang. |
$ PGODIR=/var/pgo/openbox; 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/openbox' |
Parámetros adicionales
Parámetros adicionales de eliminación de avisos en el proceso de compilación |
$ export {C,CXX}FLAGS+=' -w' |
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 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
y Configuración
$ tar Jxvf openbox-3.6.1.tar.xz
$ cd openbox-3.6.1
$ ./configure --prefix=/usr --sysconfdir=/etc --disable-static --libdir=/usr/lib64 |
Explicación
de los comandos
--prefix=/usr :
Necesario si queremos que Openbox
encuentre los temas al iniciarse.
--sysconfdir=/etc : Instala los
archivos de configuración
en /etc/xdg/openbox.
--disable-static
: Desactiva la compilación de las librerías
estáticas, al no ser necesarias para la ejecución del
programa.
--libdir=/usr/lib64 : Instala las librerías en /usr/lib64, en sistemas de 64 bits multiarquitectura. La ubicación y el nombre de este
directorio, puede variar en función de la distribución que
cada usuario use.
Compilación
Parámetros de compilación opcionales
V=1 : Muestra más información en el proceso de compilación.
-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
# make install-strip
# ldconfig -v |
Borrar las locales adicionales instaladas con la utilidad BleachBit
# bleachbit -c system.localizations
|
Instalación de los
archivos de configuración personal en nuestro home
$ cp -rf /etc/xdg/openbox ~/.config
|
Si ya tenemos instalado Openbox
con el menú configurado sólo habrá que
copiar el archivo rc.xml para
actualizar la configuración a la nueva
versión
que se instale. Para cerciorarnos de que el nuevo archivo de
configuración tiene algo nuevo respecto al que
nosotros tenemos podemos
copiar el archivo a un directorio temporal, abrirlo con un
editor de
texto y compararlo con el rc.xml
que tenemos en nuestro home. BeeDiff es
un excelente programa para la comparación de archivos, y en la
web se encuentra disponible la versión en español del
mismo.
Estadísticas de Compilación e Instalación de Openbox
Estadísticas de Compilación e Instalación de Openbox |
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=znver3
-mtune=znver3 -mllvm -polly -mllvm
-polly-vectorizer=stripmine -flto=thin -fprofile-use=/var/pgo/openbox
-Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=pgo-memop-opt |
Parámetros de compilación |
V=1 -j12 |
Tiempo de compilación |
4" |
Archivos instalados |
113 |
|
Enlaces simbólicos creados |
4 |
|
Ocupación de espacio en disco |
1,2 MB |
Consumo inicial de CPU y RAM de Openbox
Consumo inicial de CPU y RAM de Openbox |
Programa
|
CPU |
RAM |
openbox |
0 % |
8,7 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
~/.config/openbox |
Es el directorio de configuración personal de Openbox en nuestro home. |
~/.config/openbox/autostart |
Es el script de inicio automático de aplicaciones. La forma de añadirlas la explico en este apartado del manual. Desde la versión 3.5.0, se le ha quitado la extensión ".sh", y pasa a tener permisos de ejecución. |
~/.config/openbox/environment |
Desde la versión 3.5.0, se incluye este archivo de configuración, mediante el cual podemos establecer variables de entorno personalizadas. |
~/.config/openbox/rc.xml |
Es el archivo de configuración de Openbox y se edita con ObConf. |
~/.config/openbox/menu.xml |
Es el archivo de configuración del menú de Openbox y se edita con Obmenu. Desde la versión 3.5.0, soporta iconos de las aplicaciones (y desde la 3.5.1,
también en formato SVG). Un ejemplo:
<item label="VLC media player" icon="/usr/share/icons/hicolor/32x32/apps/vlc.png">
<action name="Execute">
<execute>
vlc
</execute>
</action>
</item>
ObMenu no soporta iconos de las aplicaciones, por lo que las entradas de los mismos las tendremos que incluir de forma manual.
|
~/.themes |
Openbox utiliza el mismo directorio para los temas que GTK+ |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
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.
openbox-3.6.1-scripts.tar.gz
$ su
# tar zxvf openbox-3.6.1-scripts.tar.gz
# cd openbox-3.6.1-scripts
# ./Desinstalar_openbox-3.6.1 |
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 openbox-3.6.1-scripts.tar.gz
# cd openbox-3.6.1-scripts
# ./Respaldar_openbox-3.6.1 |
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_openbox-3.6.1
|
PyPanel
Openbox
no tiene barra de tareas, así que lo mejor es
añadirle un panel, podríamos usar fbpanel,
pero elijo uno más desconocido escrito en
Python,
se llama PyPanel.
Características
* Soporte de transparencias con sombreado y tintado.
* Configuración de tamaño,
colocación y diseño.
* Soporte de fuentes truetype con coloreado y
sombreado.
* Botón de eventos/acciones.
* Reloj y nombre de Escritorio.
* Ocultado automático.
* Lanzador de aplicación.
* Soporte de iconos de aplicaciones.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado PyPanel
para la elaboración de este documento.
* GCC - (13.1.0)
* Pkg-config - (0.29.2)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.8)
LibX11 - (1.8.6)
LibXft - (2.3.8)
* Freetype2 - (2.13.1)
* Imlib2 - (1.11.1)
* Python - (2.7.18)
* Python Xlib - (0.33)
* Zlib - (1.2.13)
Descarga
PyPanel-2.4.tar.gz | PyPanel_imlib2.diff
Optimizaciones
Optimizaciones adicionales
Optimizaciones adicionales |
Graphite
|
$ export {C,CXX}FLAGS+=' -ftree-loop-linear -floop-strip-mine -floop-block'
|
IPA
|
$ export {C,CXX}FLAGS+=' -fipa-pta'
|
LTO |
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
|
En versiones inferiores a GCC
10, sustituir auto
por el número de núcleos que tenga nuestro
procesador. Si sólo tiene uno, utilizar el parámetro -flto |
Extracción y Compilación
$ tar zxvf PyPanel-2.4.tar.gz
$ cd PyPanel-2.4
$ patch -Np1 -i ../PyPanel_imlib2.diff
$ chmod a+x *-config
$ sed -i "18s:/usr/lib:$(pkg-config --variable=libdir imlib2):" setup.py
$ python2 setup.py build
|
Explicación
de los comandos
patch -Np1 -i ../PyPanel_imlib2.diff :
Aplicamos este parche personal para poder compilar el paquete con las
últimas versiones de Freetype2 e Imlib2. El parche lo que hace
es, añadir dos versiones reducidas de los eliminados archivos
freetype-config e imlib2-config, adaptados para que se utilice el
comando pkg-config para buscar las dependencias del paquete.
chmod a+x *-config : Otorga permisos de ejecución a los nuevos archivos añadidos.
sed -i "18s:/usr/lib:$(pkg-config --variable=libdir imlib2):" setup.py
: Modifica el archivo setup.py para añadir la ruta correcta a la
librería imlib2, utilizando pkg-config para obtener la
información.
Instalación como root
$ su -c "python setup.py install" |
Estadísticas de Compilación e Instalación de PyPanel
Estadísticas de Compilación e Instalación de PyPanel |
CPU |
AMD Ryzen 5 5500 |
MHz |
3593.246 (BoostMax=+500) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.4.2-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Versión de Glibc |
2.37 |
Enlazador dinámico |
GNU gold (Binutils 2.40) 1.16 |
Compilador |
GCC 13.1.0 |
Parámetros de optimización |
-03 -march=znver3
-mtune=znver3 -ftree-loop-linear
-floop-strip-mine -floop-block -fipa-pta -fuse-linker-plugin -flto=auto |
Tiempo de compilación |
1" |
Archivos instalados |
6 |
|
Ocupación de espacio en disco |
96 KB |
Consumo inicial de CPU y RAM de PyPanel
Consumo inicial de CPU y RAM de PyPanel |
Programa
|
CPU |
RAM |
python-64 |
0 % |
15,1 MB |
pypanel |
0 % |
116,5 KB |
TOTAL |
0 % |
15,2
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. |
Archivo de configuración personal
~/.pypanelrc |
Es el archivo de configuración personal de PyPanel en nuestro home. |
Desinstalación
como root
1)
MODO TRADICIONAL
*************************
2) MODO MANUALINUX
PyPanel-2.4-scripts.tar.gz
$ su
# tar zxvf PyPanel-2.4-scripts.tar.gz
# cd PyPanel-2.4-scripts
# ./Desinstalar_PyPanel-2.4 |
Copia de Seguridad como root
$ su
# tar zxvf PyPanel-2.4-scripts.tar.gz
# cd PyPanel-2.4-scripts
# ./Respaldar_PyPanel-2.4 |
Restaurar la Copia de Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_PyPanel-2.4
|
Configuración de PyPanel >> ~/.pypanelrc
NOTA IMPORTANTE: Comprobar siempre que el archivo de nuestro home, ~/.Xauthority, existe, de lo contrario, PyPanel
no se podrá iniciar. Para crearlo de forma manual, en el caso de
que lo hayamos borrado accidentalmente y éste no se genere de forma automática en los inicios de sesión, ejecutamos el siguiente comando desde una ventana de terminal:
[jose@localhost ~]$ mkxauth -c
adding key for localhost to /home/jose/.Xauthority ... done
|
|
A continuación pongo un ejemplo del archivo de configuración de PyPanel con los comentarios traducidos al español
#------------------------------------------------------------------------------
#
#
Configuración de PyPanel v2.4
#
# Este archivo de configuración es un script de Python que es ejecutado cuando
# PyPanel es iniciado. Para que PyPanel se inicie propiamente, compruebe que este
# archivo esté correctamente formateado en Python y no contenga errores de sintaxis.
#------------------------------------------------------------------------------
VERSION = 2.4 # Versión del archivo de configuración
#------------------------------------------------------------------------------
# Colores: El formato es hexadecimal triplicado - 0xrrggbb
#------------------------------------------------------------------------------
BG_COLOR = "0xd6d6d6" # El color del fondo del Panel y el del tintado.
TASK_COLOR = "0x000000" # El color del nombre de la ventana cuando no está enfocada.
FOCUSED_COLOR = "0x1826de" # El color del nombre de la ventana cuando está enfocada.
SHADED_COLOR = "0x808080" # El color del nombre de la ventana cuando está enrollada.
MINIMIZED_COLOR = "0x808080" # El color del nombre la ventana cuando está minimizada.
DESKTOP_COLOR = "0x000000" # El color del nombre del Escritorio.
CLOCK_COLOR = "0x000000" # El color del texto del Reloj.
LINE_COLOR = "0x606060" # El color de la línea vertical.
# Colores de la sombra arrojada del texto
TASK_SHADOW_COLOR = "0xffffff"
FOCUSED_SHADOW_COLOR = "0xffffff"
SHADED_SHADOW_COLOR = "0xffffff"
MINIMIZED_SHADOW_COLOR = "0xffffff"
DESKTOP_SHADOW_COLOR = "0xffffff"
CLOCK_SHADOW_COLOR = "0xffffff"
#------------------------------------------------------------------------------
# Opciones de ubicación y espaciado del Panel: Medidas en píxeles
#------------------------------------------------------------------------------
P_LOCATION = 1 # Posición del Panel: 0 = arriba, 1 = abajo
P_WIDTH = 944
# Anchura del Panel: 0 = Usa toda la pantalla completa a lo ancho
P_START = 40 # Coordenada X de inicio del Panel
P_SPACER = 6 # Espacio entre los objetos del Panel
P_HEIGHT = 24 # Altura del Panel
#------------------------------------------------------------------------------
# Opciones de tamaño de los iconos: Medidas en píxeles
#------------------------------------------------------------------------------
I_HEIGHT = 16
# Altura del icono de la aplicación que se muestra en el Panel
I_WIDTH = 16
# Anchura del icono del la aplicación que se muestra en el Panel
APPL_I_HEIGHT = 24 # Altura de icono lanzador de la aplicación
APPL_I_WIDTH = 24 # Anchura de icono lanzador de la aplicación
TRAY_I_HEIGHT = 24
# Altura del icono mostrado en la bandeja del sistema (normalmente 16 o
24)
TRAY_I_WIDTH = 24
# Anchura del icono mostrado en la bandeja del sistema
(normalmente 16 o 24)
# Si TRAY_I_WIDTH está ajustado a 0, se utilizará la anchura especificada por
# la aplicación que se ubique en la bandeja del sistema
#------------------------------------------------------------------------------
# Formato del reloj del Panel: 'man strftime' para una detallada información acerca del formato.
#------------------------------------------------------------------------------
CLOCK_FORMAT = "%d-%m-%Y %H:%M" # Ejemplo: 2004-09-25 17:45
#------------------------------------------------------------------------------
# Retardo del reloj: Los segundos entre cada actualización del reloj durante los periodo de inactividad
#------------------------------------------------------------------------------
CLOCK_DELAY = 20
#------------------------------------------------------------------------------
# Listado de aplicaciones a ocultar: Las aplicaciones listadas aquí no serán mostradas en el panel.
# El nombre de la aplicación es el nombre WM_CLASS,usar 'xprop' para averiguar WM_CLASS
# Ejemplo: ["xmms", "xine", "gDesklets"]
#------------------------------------------------------------------------------
HIDE_LIST = []
#------------------------------------------------------------------------------
# Tamaño del Panel cuando está oculto: Tamaño del panel cuando está minimizado/oculto
#------------------------------------------------------------------------------
HIDDEN_SIZE = 2
#------------------------------------------------------------------------------
# Fuente del texto del Panel: Esta opción acepta cualquiera: tradicional o Xft
# Ejemplo: "-schumacher-clean-medium-r-normal-*-12-*-*-*-*-*-*-*"
# "aquafont-8"
#------------------------------------------------------------------------------
FONT = "DejaVuSans-10"
#------------------------------------------------------------------------------
# Mostrar todas las aplicaciones: Muestra las aplicaciones en todos los escritorios o sólo en el actual
# 0: Desactivado - Sólo las aplicaciones del escritorio actual serán mostradas
# 1: Activado - Las aplicaciones seleccionadas son movidas al escritorio actual.
# 2: Activado - El escritorio actual es cambiado al escritorio donde están las aplicaciones seleccionadas.
#------------------------------------------------------------------------------
SHOWALL = 0 # 0, 1 or 2 - vea las descripciones anteriores
#------------------------------------------------------------------------------
# Mostrar las aplicaciones Minimizadas/Iconificadas: Muestra sólo las aplicaciones minimizadas
# o todas las aplicaciones
# 0: Desactivado - Muestra todas las aplicaciones en el panel
# 1: Activado - Muestra sólo las aplicaciones minimizadas en el panel
#------------------------------------------------------------------------------
SHOWMINIMIZED = 0
#------------------------------------------------------------------------------
# Listado de icono de aplicación: Listado de iconos personalizados para aplicaciones específicas
# El nombre de la aplicación es el nombre WM_CLASS,usar 'xprop' para averiguar WM_CLASS
#
# La entrada "default" es usada para las aplicaciones que no tienen icono. Si a la izquierda está "",
# PyPanel usará el icono predefinido distribuido con el código fuente.
#
# Añadir entradas usando el siguiente formato -
# "<nombre de la aplicación>" : "<ruta completa al icono>",
#------------------------------------------------------------------------------
ICON_LIST = {
"default" : "",
"example" : "/usr/share/imlib2/data/images/audio.png",
}
#------------------------------------------------------------------------------
# Listado del lanzador de aplicación: Lista ordenada de los iconos y las aplicaciones
# para el lanzador de aplicación.
#
#
# Añadir entradas usando el siguiente formato -
# ("<ejecutable>", "<ruta completa al icono>")
#------------------------------------------------------------------------------
LAUNCH_LIST = [
("gimp", "/usr/share/imlib2/data/images/paper.png"),
("mrxvt","/usr/local/share/pixmaps/mrxvt.png"),
("firefox", "/usr/share/icons/firefox.png"),
]
#------------------------------------------------------------------------------
# Nivel de transparencia del Fondo del Panel: 0 (Totalmente translúcido) -> 255 (Totalmente opaco)
# BG_COLOR es usado para el tintado
#------------------------------------------------------------------------------
SHADE = 220
#------------------------------------------------------------------------------
# Opciones varias: 1 = Activado/Si, 0 = Desactivado/No
#------------------------------------------------------------------------------
ABOVE = 1
# El Panel está siempre por encima de las otras aplicaciones
APPICONS = 1 # Muestra los iconos de la aplicación
AUTOHIDE = 0
# El ocultado automático usa el cronómetro de
CLOCK_DELAY
SHADOWS = 0 # Muestra sombras en el texto
SHOWLINES = 0 # Muestra líneas de separación del objeto
SHOWBORDER = 0 # Muestra un borde alrededor del panel
#------------------------------------------------------------------------------
# Nombres de los Escritorios: Configura los nombres de sus escritorios
# Si la opción es[], PyPanel intentará usar el nombre especificado por
# el servidor X, si eso falla usará el número del escritorio como un nombre
# Ejemplo. ["Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho"]
#------------------------------------------------------------------------------
DESKTOP_NAMES = ["Uno", "Dos", "Tres", "Cuatro"]
#------------------------------------------------------------------------------
# Disposición del Panel: -----------------------------------
#
[ 1 ][ 2 ][ 3 ][ 4
][ 5 ]
#
-----------------------------------
#
# La disposición del Panel está dividida en 5 secciones numeradas: 1, 2, 3, 4 o 5 cómo se
# muestra en el diagrama anterior. Cada uno de los objetos siguientes puede habilitarse
# asignándole un número de la sección o deshabilitarse asignándole 0:
#------------------------------------------------------------------------------
DESKTOP = 1 # Sección del nombre del Escritorio
TASKS = 4 # Sección de los nombres de las Tareas
TRAY = 3 # Sección de la bandeja del sistema
CLOCK = 5 # Sección del Reloj
LAUNCHER = 2 # Sección del lanzador de aplicación
#------------------------------------------------------------------------------
#
Definiciones de la función de eventos del Botón
#------------------------------------------------------------------------------
# Clic izquierdo - botón 1
# Clic central - botón 2
# Clic derecho - botón 3
# Rueda arriba - botón 4
# Rueda abajo - botón 5
#
# changeDesktop(x)
# - Cambia de Escritorio: Incrementa o disminuye el escritorio actual por una cantidad "x"
#
# toggleShade(task)
# - Enrolla o Desenrrolla la ventana de una aplicación
#
# toggleHidden()
# - Minimiza el panel arriba o abajo en función de la posición de inicio
#
# toggleMinimize(task, traise=1)
# - Minimiza o No la ventana de una aplicación y opcionalmente la eleva
#
# taskRaise(task, focus=1)
# - Eleva la ventana de una aplicación a la cabeza de la lista de ventanas y opcionalmente la enfoca
#
# taskLower(task, focus=0)
# - Desciende la ventana de una aplicación a la cola de la lista de ventanas y opcionalmente la enfoca
#
# taskFocus(task)
# - Da el enfoque a la aplicación seleccionada, si tiene el enfoque, entonces la minimiza
#
# showDesktop()
# - Alterna entre ocultar y mostrar las ventanas de todas las aplicaciones
#------------------------------------------------------------------------------
#----------------------------------
def desktopButtonEvent(pp, button):
#----------------------------------
""" Secuencias de eventos del botón para el objeto escritorio del Panel """
if button == 1:
pp.changeDesktop(-1)
elif button == 2:
pp.changeDesktop(2)
elif button == 3:
pp.changeDesktop(1)
elif button == 4:
pp.changeDesktop(1)
elif button == 5:
pp.changeDesktop(-1)
#--------------------------------
def clockButtonEvent(pp, button):
#--------------------------------
""" Secuencias de eventos del botón para el objeto reloj del Panel """
if button == 1:
os.system("xclock &")
elif button == 2:
pass
elif button == 3:
pp.toggleHidden()
elif button == 4:
pp.showDesktop()
elif button == 5:
pp.showDesktop()
#--------------------------------
def panelButtonEvent(pp, button):
#--------------------------------
""" Secuencias de eventos del botón para el Panel con las tareas desactivadas """
if button == 1:
pass
elif button == 2:
pass
elif button == 3:
pass
elif button == 4:
pass
elif button == 5:
pass
#-------------------------------------
def taskButtonEvent(pp, button, task):
#-------------------------------------
""" Secuencias de eventos del botón para las tareas del Panel """
if button == 1:
pp.taskFocus(task)
elif button == 2:
# Destroy the application
task.obj.destroy()
elif button == 3:
# Ejemplo. - La ventana de XMMS no se
enrolla, para que nosotros queramos minimizarla en lugar de y
# aún use el botón 3 para enrollar las ventanas de otras aplicaciones
# task.tclass es el nombre de la clase de tarea (WM_CLASS)
if "xmms" in task.tclass:
pp.toggleMinimize(task)
else:
pp.toggleShade(task)
elif button == 4:
pp.taskRaise(task, focus=1)
elif button == 5:
pp.taskLower(task, focus=0)
|
Si se va a utilizar este archivo de configuración con los
comentarios traducidos al español, como archivo de
configuración personal de PyPanel, en sistemas con las locales en es_ES.UTF-8, añadir al comienzo del mismo, en el editor de texto donde copiemos el contenido, lo siguiente:
Si queremos añadirle un menú de inicio y un control de volumen a PyPanel, conviene leerse el manual de myGtkMenu, y el manual de Volume Icon.
XbindKeys
Este
programa es un gestor de atajos
de
teclado y nos permite de una manera muy sencilla añadir los
atajos de teclado de las aplicaciones o comandos que queramos
configurar para que se inicien a través del teclado. Permite
la
combinación del teclado con el ratón, con lo que
aumenta
de manera considerable las posibilidades de configuración.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado XbindKeys
para la elaboración de este documento.
* GCC - (13.1.0) o Clang - (16.0.6)
* M4 - (1.4.19)
* Libtool - (2.4.7)
* Make - (4.4.1)
* Automake - (1.16.5)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)
Librerías
de Desarrollo
* Xorg - (7.7 / xorg-server 21.1.8)
LibICE - (1.1.1)
LibX11 - (1.8.6)
* Guile - (2.2.7)
* Tk - (8.6.13)
Descarga
xbindkeys-1.8.7.tar.gz
Optimizaciones
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
|
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 en el proceso de compilación |
$ export {C,CXX}FLAGS+=' -w'
|
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 LLD |
Clang |
$ export LDFLAGS+=' -fuse-ld=lld' |
Optimizaciones complementarias LTO/ThinLTO de LLD |
$ export LDFLAGS+=' -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt' |
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 y
Configuración
$ tar zxvf
xbindkeys-1.8.7.tar.gz
$ cd xbindkeys-1.8.7
$ ./configure
|
Compilación
Parámetros de compilación opcionales
Instalación como root
$ su -c "make install-strip" |
Estadísticas de Compilación e Instalación de XbindKeys
Estadísticas de Compilación e Instalación de XbindKeys |
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=znver3
-mtune=znver3 -mllvm -polly -mllvm
-polly-vectorizer=stripmine -flto=thin -Wl,--lto-aa-pipeline=globals-aa
-Wl,--lto-newpm-passes=memcpyopt |
Parámetros de compilación |
-j12 |
Tiempo de compilación |
> 1" |
Archivos instalados |
4 |
|
Ocupación de espacio en disco |
60 KB |
Consumo inicial de CPU y RAM de XbindKeys
Consumo inicial de CPU y RAM de XbindKeys |
Programa
|
CPU |
RAM |
xbindkeys |
0 % |
2,9 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. |
Archivo de configuración personal
~/.xbindkeysrc |
Es el archivo de configuración personal de XbindKeys
en nuestro home |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando como root:
2)
MODO MANUALINUX
xbindkeys-1.8.7-scripts.tar.gz
$ su
# tar zxvf xbindkeys-1.8.7-scripts.tar.gz
# cd xbindkeys-1.8.7-scripts
# ./Desinstalar_xbindkeys-1.8.7 |
Copia de Seguridad
como root
$ su
# tar zxvf xbindkeys-1.8.7-scripts.tar.gz
# cd xbindkeys-1.8.7-scripts
# ./Respaldar_xbindkeys-1.8.7 |
Restaurar la Copia de Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_xbindkeys-1.8.7
|
Para
crear el archivo de
configuración ejecutamos el siguiente comando:
xbindkeys --defaults > ~/.xbindkeysrc |
Lo abrimos con un editor de texto y
añadimos los atajos de teclado que creamos oportuno, un
ejemplo:
#
For the benefit of emacs users: -*- shell-script -*-
###########################
# xbindkeys
configuration #
###########################
#
# Version: 1.8.7
#
# If you edit
this file, do not forget to uncomment any lines
# that you
change.
# The
pound(#) symbol may be used anywhere for comments.
#
# To specify
a key, you can use 'xbindkeys --key' or
# 'xbindkeys
--multikey' and put one of the two lines in this file.
#
# The format
of a command line is:
#
"command to start"
#
associated key
#
#
# A list of
keys is in /usr/include/X11/keysym.h and in
#
/usr/include/X11/keysymdef.h
# The XK_ is
not needed.
#
# List of
modifier:
#
Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock),
#
Mod3 (CapsLock), Mod4, Mod5 (Scroll).
#
# The release
modifier is not a standard X modifier, but you can
# use it if
you want to catch release events instead of press events
# By
defaults, xbindkeys does not pay attention with the modifiers
# NumLock,
CapsLock and ScrollLock.
# Uncomment
the lines above if you want to pay attention to them.
#keystate_numlock
= enable
#keystate_capslock
= enable
#keystate_scrolllock=
enable
# Examples of
commands:
"xbindkeys_show"
control+shift + q
# set
directly keycode (here control + f with my keyboard)
"xterm"
c:41 + m:0x4
# specify a
mouse button
"xterm"
control + b:2
"sylpheed-claws"
Mod1+s
"rox ~/"
Mod1+j
"mrxvt"
Mod1+z
"fpm"
Mod1+p
"firefox"
Mod1+f
"xrefresh"
Mod1+F5
"aterm -tr
-sh 70"
Mod1+a
"sudo halt"
Control+Mod1+h
"sudo reboot"
Control+Mod1+r
"rxvt -e tor"
Control+Mod1+t
"/usr/apps/System/AppRun"
Control+Mod1+s
"opera"
Mod1+o
"import
~/Capturas/screenshot.png"
Mod1+Mod4+p
"gftp"
Mod1+Mod4+g
"leafpad"
Mod1+Mod4+l
#"xterm -geom
50x20+20+20"
#
Shift+Mod2+alt + s
#
## set
directly keycode (here control+alt+mod2 + f with my keyboard)
#"xterm"
#
alt + c:0x29 + m:4 + mod2
#
##
Control+Shift+a release event starts rxvt
#"rxvt"
#
release+control+shift + a
#
## Control +
mouse button 2 release event starts rxvt
#"rxvt"
#
Control + b:2 + Release
##################################
# End of
xbindkeys configuration #
##################################
|
El modo de añadirlo es el siguiente, entre
comillas el comando a ejecutar y debajo sin comillas la
combinación de las teclas a usar o el ratón.
Si lo ejecutamos en
combinación con el botón derecho del
ratón sería lo siguiente:
Recordar también que la rueda del ratón desplazada hacia abajo es 'b:4' y hacia arriba, 'b:5'. En el manual de Xcompmgr viene una configuración específica de XbindKeys para poder activar y regular las transparencias de las ventanas, utilizando la rueda del ratón, con la utilidad Transset, que nos puede servir de ejemplo.
La lista de modificadores a usar es la siguiente:
Release, Control, Shift, Mod1 (Alt), Mod2 (NumLock), Mod3
(CapsLock), Mod4 (Windows), Mod5 (Scroll)
Dónde NumLock, CapsLock
y ScrollLock
están desactivados por defecto en cuanto a usar en las
combinaciones de teclado. Para activarlos hay que descomentar las
siguientes líneas:
#keystate_numlock = enable
#keystate_capslock = enable
#keystate_scrolllock= enable
|
Por último ejecutando control+mayúsc +q,
o xbindkeys_show
en una terminal, nos saldrá una pantalla con la
información de los atajos que tengamos configurados.
Fondo de Escritorio
Para poner una imagen en el
fondo de la pantalla voy a usar Esetroot,
si buscamos algo más sofisticado con soporte de
alternancia de imágenes
y además nos gustan los iconos en la pantalla lo mejor es
usar Idesk pero
esto es sólo una idea, existen más
programas en GNU/Linux que
permiten la alternancia de imágenes, lo comento
porque es el que suelo
usar a diario, cuestión de comodidad. La forma de lanzar Esetroot al
inicio la explico en la sección de abajo. Para más información sobre Esetroot y otros setters me remito a este manual.
Añadir aplicaciones al inicio de Openbox
Al igual que sucede en Fluxbox o
Pekwm,
a partir de la versión 3.4, Openbox
incluye un script
de ejecución para aquellas aplicaciones que queremos que se
inicien junto con el administrador de ventanas. Cogemos el archivo ~/.config/openbox/autostart
y añadimos todos los programas que se van a iniciar al mismo
tiempo que Openbox,
con lo que evitamos tener que crear un script tipo startopenbox
como sucedía con las anteriores versiones de Openbox.
Podemos sin ningún problema borrar el contenido por defecto
que tiene y añadir los comandos siguientes, por ejemplo:
sleep 5 &&
pypanel &
xbindkeys &
Esetroot -scale ~/Fondos/2163.jpg
|
No olvidar nunca cerrar
los
comandos de ejecución de las aplicaciones contenidas en este
archivo (excepto las que se encargan de colocar una imagen de fondo, en
éstas no es necesario)
con el símbolo '&', de lo contrario, Openbox no podrá iniciarse nunca.
|