Copyright
Copyright © José
Luis Lara Carrascal 2006-2023
Sumario
Introducción
Libmenu-cache
LXPanel
Configurar el inicio de LXPanel
Lxpanelctl
Configuración de LXPanel
Edición manual del menú de LXPanel
Iniciamos LXPanel
Enlaces
Introducción
LXPanel
es un clon del panel de escritorio Fbpanel
que forma parte del entorno de escritorio, LXDE.
Proporciona un panel de escritorio con menú de aplicaciones,
bandeja de sistema, barra de tareas, paginador, medidor de
tráfico de red, etc. Es una excelente opción para
aquellos usuarios de administradores de ventanas que desean mantener en
parte, las posibilidades que ofrecen los paneles clásicos de los
entornos de escritorios tradicionales. Y por otra parte es casi una
opción obligatoria para los usuarios de administradores como Sawfish, Openbox o Pekwm. Aunque otras alternativas explicadas en esta web siguen estando plenamente vigentes.
Libmenu-cache
Libmenu-cache es una librería diseñada para
la creación y utilización de cachés de
menús, con la idea de acelerar la generación de los
menús basados en el estándar de freedesktop.org y evitar
la considerable ralentización que supone tener que generar el
menú al vuelo, cada vez que se inicia la aplicación.
Instalación
Dependencias
Herramientas
de Compilación
Entre paréntesis la
versión con la que se ha compilado Libmenu-cache
para la elaboración de este documento.
* GCC - (13.2.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)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.8)
* GLib - (2.74.7)
* Libfm - (1.3.2)
Descarga
menu-cache-1.1.0.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. |
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. |
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. |
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. |
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. |
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. |
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 AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
|
En versiones inferiores a GCC
10, sustituir auto
por el número de núcleos que tenga nuestro
procesador. Si sólo tiene uno, utilizar el parámetro -flto
|
Clang |
Polly |
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
|
LTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto'
|
ThinLTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ 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. |
Parámetros adicionales de eliminación de errores específicos en el proceso de compilación |
GCC 10, Clang 11, y versiones superiores de los dos compiladores> |
$ export {C,CXX}FLAGS+=' -fcommon' |
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 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)" |
Modificar el script de Libtool
incluido en el paquete para poder hacerlo compatible con LLD |
$
lld-libtool |
Hacemos uso
de la función de bash explicada en la sección del
manual de Clang,
para poder parchear el script de Libtool incluido en el paquete, y
poder llevar a cabo el proceso de compilación con LLD como
enlazador dinámico. |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción
y
Configuración
$ tar Jxvf menu-cache-1.1.0.tar.xz
$ cd menu-cache-1.1.0
$ ./configure --prefix=/usr --disable-static --lib{,exec}dir=/usr/lib64
|
Explicación
de los comandos
--prefix=/usr
: Instala el programa en el directorio principal, /usr.
--disable-static
: Desactiva la compilación de las librerías estáticas, al no ser necesarias para la ejecución de LXPanel.
--lib{,exec}dir=/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 |
Estadísticas de Compilación e Instalación de Libmenu-cache
Estadísticas de Compilación e Instalación de Libmenu-cache |
CPU |
AMD Ryzen 5 5500 |
MHz |
3593.250 (BoostMax=4457.000) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.4.11-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Versión de Glibc |
2.38 |
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 |
V=1 -j12 |
Tiempo de compilación |
1" |
Archivos instalados |
6 |
|
Enlaces simbólicos creados |
2 |
|
Ocupación de espacio en disco |
120 KB |
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.
menu-cache-1.1.0-scripts.tar.gz
$ su
# tar zxvf menu-cache-1.1.0-scripts.tar.gz
# cd menu-cache-1.1.0-scripts
# ./Desinstalar_menu-cache-1.1.0 |
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 menu-cache-1.1.0-scripts.tar.gz
# cd menu-cache-1.1.0-scripts
# ./Respaldar_menu-cache-1.1.0 |
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_menu-cache-1.1.0
|
LXPanel
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado LXPanel
para la elaboración de este documento.
* GCC - (13.2.0) o Clang - (16.0.6)
* Gawk - (5.2.2)
* M4 - (1.4.19)
* Libtool - (2.4.7)
* Make - (4.4.1)
* Intltool - (0.51.0)
* Gettext - (0.22)
* Automake - (1.16.5)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)
Librerías
de Desarrollo
*
Xorg - (7.7 / xorg-server 21.1.8)
LibX11 - (1.8.6)
* ALSA - (1.2.9)
* GTK+ - (2.24.33)
* Keybinder - (0.3.1)
* Libiw - (0.29)
* Libmenu-cache - (1.1.0)
* Libwnck - (2.31.0)
* Libxml2 - (2.11.5)
* LXMenu Data - (0.1.4)
Descarga
lxpanel-0.10.1.tar.xz
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 AR=gcc-ar RANLIB=gcc-ranlib NM=gcc-nm
$ export {C,CXX}FLAGS+=' -fuse-linker-plugin -flto=auto'
|
En versiones inferiores a GCC
10, sustituir auto
por el número de núcleos que tenga nuestro
procesador. Si sólo tiene uno, utilizar el parámetro -flto
|
Clang |
Polly |
$ export {C,CXX}FLAGS+=' -O3 -mllvm -polly -mllvm -polly-vectorizer=stripmine'
|
LTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto'
|
ThinLTO |
$ export AR=llvm-ar RANLIB=llvm-ranlib NM=llvm-nm
$ export {C,CXX}FLAGS+=' -flto=thin' |
La aplicación de esta optimización es alternativa
a la tradicional LTO, a partir de Clang 3.9 y, por lo tanto, no es combinable con la misma. |
Parámetros adicionales
Parámetros adicionales de eliminación de avisos específicos en el proceso de compilación |
$ 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 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 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)" |
Modificar el script de Libtool
incluido en el paquete para poder hacerlo compatible con LLD |
$
lld-libtool |
Hacemos uso
de la función de bash explicada en la sección del
manual de Clang,
para poder parchear el script de Libtool incluido en el paquete, y
poder llevar a cabo el proceso de compilación con LLD como
enlazador dinámico. |
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción
y Configuración
$ tar Jxvf lxpanel-0.10.1.tar.xz
$ cd lxpanel-0.10.1
$ ./configure --prefix=/usr --libdir=/usr/lib64 |
Explicación
de los comandos
--prefix=/usr
: Instala el programa en el directorio principal, /usr, para evitar problemas de ejecución, cuando se ejecuta de forma integrada con LXDE.
--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
Instalación
como root
$ su -c "make install-strip" |
Borrar las locales adicionales instaladas con la utilidad BleachBit
$ su -c "bleachbit -c system.localizations"
|
Configuración de la variable de entorno XDG_DATA_DIRS
LXPanel hace uso de esta variable para buscar las rutas a los archivos desktop
de las aplicaciones que servirán para generar de forma
automática el menú del sistema. Normalmente esta variable
sólo tiene en cuenta el directorio principal del sistema (/usr/share) y poco más. Así que editando el archivo ~/.bashrc de nuestro home,
añadiremos todos los directorios que tengamos en nuestro sistema
con archivos desktop, que recordemos son los que cuyas rutas terminan
en los directorios */share/applications, aunque no sea necesario añadir el último directorio. Un ejemplo:
Abrimos con un editor de texto, el archivo ~/.bashrc de nuestro home (si no existe lo creamos), y añadimos al final del mismo lo siguiente:
export XDG_DATA_DIRS=/usr/share:/usr/local/share:/opt/e17/share:$XDG_DATA_DIRS
|
En este ejemplo he añadido de forma adicional los directorios
que están en rojo, cada nueva ruta, los pertinentes : y la ruta
al directorio 'share'. Los usuarios que no compilen programas de forma
habitual no es necesario que hagan todo esto. Los que los compilen y
los instalen en el directorio principal /usr, tampoco.
Instalación
como usuario de la base estándar del menú de aplicaciones (opcional)
Esto hay que hacerlo sólo si cuando iniciemos LXPanel,
el menú de aplicaciones se muestra completamente vacío.
Al copiar el archivo de configuración global a nuestro home nos ahorramos muchos quebraderos de cabeza, que pueden surgir si instalamos LXPanel desde cero.
$ mkdir -p ~/.config/menus
$ cp /etc/xdg/menus/lxde-applications.menu ~/.config/menus |
Estadísticas de Compilación e Instalación de LXPanel
Estadísticas de Compilación e Instalación de LXPanel |
CPU |
AMD Ryzen 5 5500 |
MHz |
3593.250 (BoostMax=4457.000) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.4.11-ml SMP PREEMPT_DYNAMIC x86_64 |
Modo de frecuencia de la CPU |
powersave (balance performance) |
Versión de Glibc |
2.38 |
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 |
V=1 -j12 |
Tiempo de compilación |
5" |
Archivos instalados |
193 |
|
Enlaces simbólicos creados |
2 |
|
Ocupación de espacio en disco |
2,0 MB |
Consumo inicial de CPU y RAM de LXPanel
Consumo inicial de CPU y RAM de LXPanel |
Programa
|
CPU |
RAM |
lxpanel |
0 % |
19,1 MB |
menu-cached |
0 % |
967,5 KB |
TOTAL |
0 % |
20,0 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. |
Directorios de
configuración personal
~/.config/lxpanel |
Es el
directorio de configuración personal de LXPanel
en nuestro home. |
~/.config/lxpanel/config |
Es el archivo de configuración de los comandos por defecto de las aplicaciones favoritas a utilizar con LXPanel y que se configuran en la sección Opciones del Panel >> Avanzado. |
~/.config/lxpanel/default/panels/panel |
Es el archivo de
configuración del panel principal, la configuración de los paneles adicionales que
vayamos a crear, se guarda también en este subdirectorio. |
~/.cache/menus/ |
En este subdirectorio se guarda el archivo de configuración de la caché del menú de aplicaciones de LXPanel,
cuyo nombre se genera de forma aleatoria mediante el uso de md5 que genera una
combinación de números y letras de hasta 32
dígitos, la primera vez que iniciamos LXPanel. Por ejemplo:
~/.cache/menus/516f57f97c3337f471e663a93b85743c
En caso de corrupción o problemas en la generación
del menú de aplicaciones, será necesario el borrado de
este archivo de caché. |
Desinstalación
como root
1)
MODO TRADICIONAL
En el directorio de compilación
ejecutamos el siguiente comando:
2)
MODO MANUALINUX
lxpanel-0.10.1-scripts.tar.gz
$ su
# tar zxvf lxpanel-0.10.1-scripts.tar.gz
# cd lxpanel-0.10.1-scripts
# ./Desinstalar_lxpanel-0.10.1 |
Copia de Seguridad
como root
$ su
# tar zxvf lxpanel-0.10.1-scripts.tar.gz
# cd lxpanel-0.10.1-scripts
# ./Respaldar_lxpanel-0.10.1 |
Restaurar la Copia de Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_lxpanel-0.10.1
|
Configurar
el inicio de LXPanel
A continuación algunos ejemplos de inicio de LXPanel
con algunos de los administradores de ventanas cuya
documentación está disponible en la web. Si estamos
usando el panel con las pseudotransparencias activadas, utilizar el
comando de retardo sleep para
evitar problemas de integración con la imagen del fondo de
escritorio. Por ejemplo: sleep 5; lxpanel &
1) Openbox
Añadimos el comando de ejecución al script de inicio ~/.config/openbox/autostart, autostart.sh en versiones inferiores a la 3.5.x.
#!/bin/sh
lxpanel &
xbindkeys &
|
2) Pekwm
Añadimos el comando de ejecución en la sección correspondiente del script de inicio ~/.pekwm/start.
# There's probably a few other good uses for it, too. I mainly pushed for it
# because when I was doing fluxbox's docs, people used to complain that there
# wasn't one, and I wanted to avoid that for pekwm. ;) --eyez
lxpanel &
numlockx &
#idesk &
#wmix &
|
3) Sawfish
Siguiendo el método que se utiliza en el manual de Sawfish, lo añadimos al script ~/.sawfish/autostart de la siguiente forma,
#!/bin/sh
lxpanel &
idesk &
nitrogen --restore
xbindkeys &
|
4) Para los que inician X desde
terminal con el comando startx
Para los usuarios que inician los entornos gráficos con el
comando startx, pueden añadir el comando de ejecución al
archivo .xinitrc que se
encuentra en nuestro home,
si no existe lo creamos, y añadimos lo siguiente:
5) XDM
Añadimos el comando de ejecución al archivo .xsession que se
encuentra en nuestro home,
si no existe lo creamos, y añadimos lo siguiente:
Lxpanelctl
Con Lxpanelctl controlamos
el panel a través de una línea de comandos, esto
lo
podemos trasladar a nuestros atajos de teclado de la siguiente manera y
usando como ejemplo los atajos de teclado de Fluxbox.
Mod1 m
:execcommand lxpanelctl
menu (Activa el menú de LXPanel)
Mod1 r
:execcommand lxpanelctl
run (Lanza la ventana de diálogo de
ejecución de aplicaciones)
Mod1 c
:execcommand lxpanelctl
config (Ejecuta la ventana de
configuración de LXPanel
Mod4
Mod1 r :execcommand lxpanelctl restart
(Reinicia LXPanel)
Mod4
Mod1 h :execcommand lxpanelctl exit
(Finaliza la aplicación)
|
Mod1 : Tecla "Alt" | Mod4 : Tecla "Win"
Configuración de
LXPanel
La configuración de LXPanel se ajusta a través de la interfaz gráfica de
configuración, a la que podemos acceder haciendo clic con el
botón derecho del ratón sobre el panel y seleccionando Opciones del Panel. A partir de la versión 0.3.5.x se puede crear más de un panel y colocarlos en la posición que creamos conveniente.
También podemos crear diferentes perfiles de
configuración que podemos guardar dentro del directorio de
configuración personal, para posteriormente cargarlos con la
opción --profile "nombre del directorio" del perfil, un ejemplo,
$ cp -rf ~/.config/lxpanel/default ~/.config/lxpanel/perfil-1
|
Ahora sólo tendremos que añadir el comando de
ejecución a los correspondientes scripts de inicio, iniciarlo y
luego configurarlo a través de las opciones del panel, un
ejemplo,
lxpanel --profile perfil-1 &
exec pekwm
|
Edición manual del menú de LXPanel
Para los que detestamos los menús de generación automática, el menú que lleva por defecto LXPanel
supone un considerable estorbo, éste se crea de forma
automática al iniciarse el programa, con el contenido de los
archivos desktop ubicados en los directorios definidos en la variable de entorno XDG_DATA_DIRS.
Para saber la que tenemos definida en nuestro sistema por defecto
sólo hay que ejecutar el siguiente comando en una ventana de
terminal:
El formato del menú está basado en el estándar creado por freedesktop.org y que podemos leer (nos servirá bastante para poder crear nuestros propios archivos desktop) en este enlace.
Tenemos 2 opciones, crear nuestro propio menú y quitar
éste, o si no tenemos muchas ganas de escribir, añadir un
menú personal de usuario con las aplicaciones que consideremos
más relevantes, incluyendo las que no detecte el menú
principal, por carecer del archivo desktop
correspondiente o estar su ubicación en otro directorio
diferente al que utiliza por defecto. Lo primero que haremos es crear
un perfil de prueba con el que poder experimentar sin cargarnos nada,
cuando lo tengamos claro, copiamos el archivo de configuración
al perfil por defecto.
$ cp -rf ~/.config/lxpanel/default ~/.config/lxpanel/personal
|
Abrimos el archivo ~/.config/lxpanel/personal/panels/default con un editor de texto y nos vamos a la línea donde aparece la entrada del menú automático,
Plugin {
type = menu
Config {
image=/usr/share/lxpanel/images/my-computer.png
system {
}
separator {
}
|
Lo que está en azul es el menú que LXPanel
genera de forma automática, ahora lo que voy a hacer es
añadir un ejemplo cortito de menú personal de
aplicaciones, que aparecerá justo debajo del menú del
sistema, al que le he añadido un separador.
Plugin {
type = menu
Config {
image=/usr/share/lxpanel/images/my-computer.png
system {
}
separator {
}
menu {
name = Menú personal
image = /usr/share/icons/nuoveXT2/16x16/places/folder_home.png
menu {
name = Internet
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-internet.png
menu {
name = Chat
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-internet.png
item {
name = XChat
image = /usr/local/share/pixmaps/xchat.png
action = xchat
}
}
menu {
name = Correo
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-internet.png
item {
name = Claws-Mail
image = /usr/share/icons/claws-mail.png
action = claws-mail
}
}
}
menu {
name = Multimedia
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-multimedia.png
menu {
name = Gráficos
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-graphics.png
item {
name = gimp
image = /usr/local/share/
action = gimp
}
}
menu {
name = Sonido
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-multimedia.png
}
menu {
name = Vídeo
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-multimedia.png
item {
name = SMPlayer
image = /usr/local/share/pixmaps/smplayer.png
action = smplayer
}
}
}
}
separator {
}
item {
command=run
}
|
Podemos crear todos los niveles de submenús que deseemos, no
olvidando nuncar cerrarlos con la correspondiente llave '}', de lo
contrario el programa al iniciarse provocará una
violación de segmento y se colgará. El archivo tenemos
que guardarlo con la codificación UTF-8 para que se muestren de forma correcta los acentos y las eñes.
Formato de Menú >> menu {
name = Nombre del menú o categoría
image = Ruta a un icono específico (da igual su tamaño)
}
Formato del elemento >> item {
name = Nombre del programa
image = Ruta a un icono específico (da igual su tamaño)
action = Nombre del ejecutable o comando a ejecutar
}
Para ir comprobando como va quedando el menú recomiendo utilizar un administrador de ventanas como Fluxbox, abrir una ventana de terminal y lanzar desde la misma el comando de ejecución correspondiente de LXPanel, en este caso sería éste,
$ lxpanel --profile personal
|
Digo esto porque es bastante probable que en la edición del
menú se nos olvide alguna llave de cierre y el programa se quede
colgado, nada mejor que ejecutarlo de esta manera para comprobar la
correcta configuración del menú, para matarlo sólo
tenemos que teclear CTRL+C en la ventana de terminal donde lo hayamos
lanzado.
Si finalmente nos decidimos por sustituir por completo el menú
del sistema, sólo tenemos que comentar las entradas
correspondientes, y completar el ejemplo del menú que he puesto
en este manual.
Plugin {
type = menu
Config {
image=/usr/share/lxpanel/images/my-computer.png
# system {
# }
# separator {
# }
# menu {
# name = Menú personal
#
image = /usr/share/icons/nuoveXT2/16x16/places/folder_home.png
menu {
name = Internet
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-internet.png
menu {
name = Chat
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-internet.png
item {
name = XChat
image = /usr/local/share/pixmaps/xchat.png
action = xchat
}
}
menu {
name = Correo
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-internet.png
item {
name = Claws-Mail
image = /usr/share/icons/claws-mail.png
action = claws-mail
}
}
}
menu {
name = Multimedia
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-multimedia.png
menu {
name = Gráficos
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-graphics.png
item {
name = gimp
image = /usr/local/share/
action = gimp
}
}
menu {
name = Sonido
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-multimedia.png
}
menu {
name = Vídeo
image =
/usr/share/icons/nuoveXT2/16x16/categories/applications-multimedia.png
item {
name = SMPlayer
image = /usr/local/share/pixmaps/smplayer.png
action = smplayer
}
}
}
# }
separator {
}
item {
command=run
}
|
Cuando comprobemos que tenemos el menú a nuestro gusto, copiamos
el archivo de configuración al directorio del perfil por
defecto, si estamos utilizando LXDE, lo copiamos también al directorio del perfil de este último.
$ cp -rf ~/.config/lxpanel/personal/panels/default ~/.config/lxpanel/default/panels/default
$ cp -rf ~/.config/lxpanel/personal/panels/default ~/.config/lxpanel/LXDE/panels/default
|
Este modo de editar el menú es el mismo que se utiliza para el programa en el que está basado LXPanel: Fbpanel.
Iniciamos LXPanel
Openbox + LXPanel
Pekwm + LXPanel
(transparencia activada)
Enlaces
Instalar LXDE desde cero >> El manual de instalación de LXDE,
del que forma parte LXPanel.
http://lxde.org >> La web del entorno gráfico LXDE.
Utilidades de Escritorio - Fbpanel >> El manual de Fbpanel, cuya versión en español está disponible para su descarga desde el mismo manual.
|