Copyright
Copyright © José
Luis Lara Carrascal 2011-2023
Sumario
Introducción
Preliminares
Instalación
Configuración
Activar el antialiasing en OpenGL en tarjetas NVIDIA
Configurar el inicio de 3d-Desktop
Iniciamos 3d-Desktop
Paquetes binarios
Enlaces
Introducción
3d-Desktop es un programa escrito en OpenGL,
cuya función consiste en conmutar de escritorio virtual en un
espacio tridimensional. Soporta varios modos de visualización,
siendo el predefinido, un carrusel horizontal con los escritorios
virtuales rotando en 3D. Digamos que este programa es el antecesor
de los compiz y demás engendros que posteriormente se han
desarrollado para los entornos de escritorio de GNU/Linux. Siendo puro abandonware,
sigue siendo funcional y, por lo tanto, entra a formar parte de los
contenidos de este sitio web, caracterizado por dar cobijo a todo el
software abandonado por sus benditos programadores.
Preliminares
1) Comprobar que la ruta de instalación de los binarios del programa la tenemos en nuestro PATH
Abrimos una ventana de terminal y ejecutamos el siguiente comando:
[jose@Fedora-18 ~]$ echo $PATH
/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/jose/bin
|
Si no aparece entre las rutas mostradas el directorio /usr/local/bin, abrimos un editor de texto y añadimos lo siguiente:
#!/bin/sh
export PATH=/usr/local/bin:$PATH |
Lo guardamos con el nombre variables.sh, y lo instalamos en /etc/profile.d.
$ su -c "install -m755 variables.sh /etc/profile.d" |
Tenemos que cerrar el emulador de terminal y volverlo a abrir para que
la variable de entorno aplicada sea efectiva. Es conveniente guardar
una copia de este script para posteriores
instalaciones de nuestro sistema, teniendo en cuenta que es el que se
va a utilizar a partir de ahora en todos los manuales de esta web, para
establecer variables de entorno globales, excepto en aquellas que
sólo afectan al usuario, en las que se utilizará el
archivo de configuración personal, ~/.bashrc.
La ventaja de utilizar el directorio /etc/profile.d es que es común a todas las distribuciones y nos evita tener que editar otros archivos del sistema como por ejemplo, /etc/profile.
2) Desinstalar versiones anteriores del programa ubicadas en el directorio /usr
Aún en el caso de que la versión a compilar la vayamos a
instalar en el mismo directorio que la que proporciona la
distribución, siempre se debe desinstalar previamente la versión antigua, para evitar conflictos innecesarios.
Instalación
Dependencias
Herramientas de Compilación
Entre paréntesis la
versión con la que se ha compilado 3d-Desktop
para la elaboración de este documento.
* GCC - (13.2.0) o Clang - (16.0.6)
* Gawk - (5.2.2)
* M4 - (1.4.19)
* 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)
LibXext - (1.3.5)
LibXxf86vm - (1.1.5)
* FreeGLUT - (3.4.0)
* Imlib2 - (1.11.1)
* Libglvnd - (1.6.0)
Descarga
3ddesktop-0.2.9.tar.gz | 3ddesktop_imlib2_pkg-config.diff
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
|
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 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-new-pass-manager -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 3ddesktop-0.2.9.tar.gz
$ cd 3ddesktop-0.2.9
$ patch -Np1 -i ../3ddesktop_imlib2_pkg-config.diff
$ autoreconf -vif
$ sed -i '25i#include <string.h>' config.hpp
$ sed -i '77s:unsigned int:ptrdiff_t:' event.hpp
$ sed -i '67s: = NULL::' config.cpp
$ ./configure --sysconfdir=/etc
|
Explicación de los
comandos
patch -Np1 -i ../3ddesktop_imlib2_pkg-config.diff : Aplica este parche personal para poder compilar el soporte de las últimas versiones de Imlib2.
autoreconf -vif : Actualiza los scripts de configuración del paquete, al parche aplicado anteriormente.
sed -i '25i#include <string.h>' config.hpp : Soluciona el siguiente error de compilación:
config.cpp:51:27: error: 'strcmp' no se declaró en este ámbito |
sed -i '77s:unsigned int:ptrdiff_t:' event.hpp : Soluciona el siguiente error de compilación:
In file included from 3ddeskd.cpp:60:
event.hpp: En la función miembro 'void EventManager::print_events_in_queue()':
event.hpp:77:78: error: cast from 'void (*)(Event*)' to 'unsigned int' loses precision [-fpermissive]
|
sed -i '67s: = NULL::' config.cpp : Soluciona el siguiente error de compilación con Clang:
config.cpp:67:24: error: addition of default argument on redeclaration makes
this constructor a default constructor
Options::Options(char *n = NULL)
^ ~~~~ |
--sysconfdir=/etc
: Instala el archivo de configuración en /etc, en lugar de /usr/local/etc.
Compilación
Parámetros de compilación opcionales
-j$(nproc) :
Establece el número de procesos de compilación en
paralelo, en función del número de
núcleos e hilos que tenga nuestro procesador, tomando como
referencia la información mostrada por el sistema con el comando
correspondiente. Si nuestro procesador es mononúcleo de un solo
hilo, no añadir esta opción.
Instalación
como root
$ su -c "make install-strip" |
Instalación
del archivo de configuración personal en nuestro home
$ mkdir -p ~/.3ddesktop
$ cp /etc/3ddesktop.conf ~/.3ddesktop |
Estadísticas de Compilación e Instalación de 3d-Desktop y 3d-Desktop FX
Estadísticas de Compilación e Instalación de 3d-Desktop y 3d-Desktop FX |
CPU |
AMD Ryzen 5 5500 |
MHz |
3593.250 (BoostMax=4457.000) |
RAM |
32 GB |
Sistema de archivos |
XFS |
Versión del Kernel |
6.4.10-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 |
-j12 |
Tiempo de compilación |
1" |
Archivos instalados |
7 |
|
Ocupación de espacio en disco |
344 KB |
Consumo inicial de CPU y RAM de 3d-Desktop
Consumo inicial de CPU y RAM de 3d-Desktop |
Programa
|
CPU |
RAM |
3ddeskd |
3 % |
131,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. |
Directorio de configuración personal
~/.3ddesktop |
Es el directorio de configuración personal de 3d-Desktop
en nuestro home. |
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.
3ddesktop-0.2.9-scripts.tar.gz
$ su
# tar zxvf 3ddesktop-0.2.9-scripts.tar.gz
# cd 3ddesktop-0.2.9-scripts
# ./Desinstalar_3ddesktop-0.2.9 |
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 3ddesktop-0.2.9-scripts.tar.gz
# cd 3ddesktop-0.2.9-scripts
# ./Respaldar_3ddesktop-0.2.9 |
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_3ddesktop-0.2.9
|
Configuración de 3d-Desktop
3d-Desktop FX
Con la instalación de este añadido, mejoraremos la configuración y ejecución de 3d-Desktop.
En la instalación no incluyo los archivos desktop que vienen en el paquete, ya que en
este manual, la ejecución se realizará a través de
atajo de teclado.
Descarga
3ddeskfx-0.2.4.tar.gz
Extracción e Instalación como root
$ tar zxvf 3ddeskfx-0.2.4.tar.gz
$ cd 3ddeskfx-0.2.4
$ su
# install -m755 scripts/3ddeskfx /usr/local/bin
# sed -i 's:$1:"$1":g' /usr/local/bin/3ddeskfx
# tail -n158 config/3ddesktop.conf | tee -a /etc/3ddesktop.conf |
Explicación de los
comandos
sed -i 's:$1:"$1":g' /usr/local/bin/3ddeskfx : Soluciona este error al ejecutar 3ddeskfx:
/usr/local/bin/3ddeskfx: línea 16: [: =: se esperaba un operador unario
/usr/local/bin/3ddeskfx: línea 35: [: =: se esperaba un operador unario
/usr/local/bin/3ddeskfx: línea 58: [: =: se esperaba un operador unario |
tail -n158 config/3ddesktop.conf | tee -a /etc/3ddesktop.conf : El archivo de configuración que viene con 3d-Desktop FX es más antiguo que el original de 3d-Desktop,
y no tiene todas las opciones globales incluidas en la última
versión del programa, por lo que insertaremos las opciones
adicionales del primero, en el
segundo, obviando la posibilidad de sobreescribir el archivo original
de configuración de 3d-Desktop.
Actualizar el archivo de configuración personal
$ tail -n158 /etc/3ddesktop.conf | tee -a ~/.3ddesktop/3ddesktop.conf |
Y finalmente lo abrimos con un editor de texto y añadimos
lo que está en rojo, que activará la compresión de
texturas de la tarjeta gráfica y establecerá en 1 segundo
el tiempo de actualización de la pantalla, fundamental para que
al activar el conmutador, las ventanas que tenemos abiertas, aparezcan
en 3d-desktop. De lo contrario, este programa no nos sirve para nada.
# 3ddesktop configuration
#
# Use this file to set various "views".
#
# Format:
# view <viewname1>
# option1 <value1>
# option2 <value2>
# ...
#
# view <viewname2>
# option1 <value1>
# option2 <value2>
# ...
# etc
#
#
# Global options (effect every view and program as whole)
#
# wm
- Specify which window manager you are using. Options are:
#
#
kde2, kde3, gnome1, gnome2, ewmh, fluxbox, windowmaker,
#
enlightenment, sawfishonly, workspaces
#
#
The default should work for Gnome 1.x/2.x, Kde 3.x, Windowmaker, &
#
Enlightenment but use wm for kde2, fluxbox or workspaces.
#
#
texturesize -
resolution of textures (power of 2, as in 128, 256, 512, 1024)
#
default 1024
#
win
- open in a window rather then fullscreen
#
(for debuggin: not really usable at this time)
# early_desktop_switch - When desktop is switched (default true)
# disable_keys_in_goto - Disable keys while in an automated "goto" (default true)
#
compression -
enables texture compression, not all cards support it
#
autoacquire - Set
the number of seconds between screen captures by the server
#
zero to disable
#
fastest
- hog CPU for smooth movement
#
priority
- set the nice value of the server (default is 12)
# default_background - image to display in the background (512x512 BMP)
# default_background_texturesize - res of bg texture (power of 2, as in 128, 256, 512, 1024)
# screen_width - Width of screen to affect
# screen_height - Height of screen to affect
# keybinding_{left|right|up|down|select}
#
- Bind a keysym to left, right, up, down or select actions.
# mousebinding_{left|right|up|down|select}
#
- Bind a mouse button to left, right, up, down or select actions.
#
- (Specify bindings as X KeySyms e.g 'n' is 0x6e, 'tab' is 0xff09,
#
'f1' is 0xffbe, etc)
#
# Examples (uncomment to use)
#
#texturesize 512
#wm kde2
autoacquire 1
compression on
#
# Indicate which "view" to use on the command line with --view=<viewname>.
# Other options on the command line are ignored if a view is given.
#
# Options (all must be lowercase)
#
# mode - set the "arrangement", one of carousel (default), linear,
#
cylinder, viewmaster, carousel, priceisright, flip
# show_digit - show a digit indicating the current desktop/workspace
# digit_size - width of digit on screen
# digit_color - color of digit (red, green, blue, lightblue, white, gray,
# purple, yellow)
# frame_color - color of un-cached desktops (the frame)
# use_wireframe - if true draw a wireframe for uncached faces (default true)
# randdelay - delay before random movement (zero for no movement)
# zoom - set to one or zero to zoom out or not to zoom out
# (default is zoom out).
# nozoom - set to zero or one to zoom out or not to zoom out
# (default is zoom out).
# depth - how far to "zoom-out"
# gotoright - goto desktop to the right
# gotoleft - goto desktop to the left
# gotoup - goto desktop above
# gotodown - goto desktop below
# gotocolumn - goto desktop to the specified column
# gotorow - goto desktop to the specified row
# dontexit - don't exit after an automated goto operation
# linear_spacing - space between desktops in "linear" mode (default 2.0)
# use_breathing - turn on/off the ambient light dimming
# animation_speed - number of milliseconds between animation steps
# changespeed - how fast the rotation or sliding of faces takes
# zoomspeed - how fast it zooms in and out from start
# reverse_mousewheel - mouse wheel up and down reversion
# swap_mousebuttons - swap left and right buttons on mouse
# alt_mousebuttons - mouse button 1 activates, 2 goes back and exits,
#
3 goes back, 6 goes left, 7 goes right.
#
# Example views (use by doing: '3ddesk --view=<viewname>')
#
view default ## this is the default if no --view specified
zoom on
show_digit on
digit_size 100
digit_color green
use_breathing false
view goright
zoom off
mode cylinder
gotoright on
view goleft
zoom off
mode cylinder
gotoleft on
view slide
zoom off
mode linear
digit_size 100
digit_color gray
linear_spacing 0.0
view nozoom
zoom off
mode viewmaster
digit_size 100
digit_color gray
view linear
mode linear
digit_color yellow
linear_spacing 0.0
view linearzip
mode linear
linear_spacing 19.0
depth 5
digit_size 200
digit_color blue
view bigmoney
mode priceisright
depth 10
digit_color purple
digit_size 150
### ADDED BY SGT-D ###
(red, green, blue, lightblue, white, gray,
# purple, yellow)
view carousel1
mode carousel
zoom 1
depth 0
show_digit 1
digit_size 25
digit_color red
frame_color red
use_breathing 0
linear_spacing 0
view carousel2
mode carousel
zoom 1
depth 0
show_digit 1
digit_size 25
digit_color green
frame_color green
use_breathing 1
linear_spacing 0
view carousel3
mode carousel
zoom 0
depth 0
show_digit 1
digit_size 25
digit_color blue
frame_color blue
use_breathing 0
linear_spacing 0
view cylinder1
mode cylinder
zoom 1
depth 0
show_digit 1
digit_size 25
digit_color lightblue
frame_color lightblue
use_breathing 0
linear_spacing 0
view cylinder2
mode cylinder
zoom 1
depth 0
show_digit 1
digit_size 25
digit_color white
frame_color white
use_breathing 1
linear_spacing 10
view cylinder3
mode cylinder
zoom 0
depth 0
show_digit 1
digit_size 25
digit_color gray
frame_color gray
use_breathing 0
linear_spacing 0
view priceisright1
mode priceisright
zoom 1
depth 0
show_digit 1
digit_size 25
digit_color purple
frame_color purple
use_breathing 0
linear_spacing 0
view priceisright2
mode priceisright
zoom 1
depth 0
show_digit 1
digit_size 25
digit_color yellow
frame_color yellow
use_breathing 1
linear_spacing 0
view priceisright3
mode priceisright
zoom 0
depth 0
show_digit 1
digit_size 25
digit_color red
frame_color red
use_breathing 0
linear_spacing 0
view linear1
mode linear
zoom 1
depth 0
show_digit 1
digit_size 25
digit_color green
frame_color green
use_breathing 0
linear_spacing 1
view linear2
mode linear
zoom 0
depth 0
show_digit 1
digit_size 25
digit_color blue
frame_color blue
use_breathing 1
linear_spacing 1
view flip
mode flip
zoom 0
depth 0
show_digit 1
digit_size 25
digit_color lightblue
frame_color lightblue
use_breathing 0
linear_spacing 0
view viewmaster1
mode viewmaster
zoom 1
depth 5
show_digit 1
digit_size 25
digit_color purple
frame_color purple
use_breathing 0
linear_spacing 0
view viewmaster2
mode viewmaster
zoom 0
depth 0
show_digit 1
digit_size 25
digit_color yellow
frame_color yellow
use_breathing 0
linear_spacing 0
|
Definición de las opciones globales a tener en cuenta del archivo de configuración |
Opción |
Descripción |
wm valor |
Define el tipo de entorno gráfico que estamos utilizando. Las opciones posibles son: kde2, kde3, gnome1, gnome2, ewmh, fluxbox, windowmaker, enlightenment, sawfishonly o workspaces.
La mejor opción posible, que es la que ejecuta por defecto el script 3ddestopfx, es ewmh. Todos los administradores de ventanas que sean compatibles con el protocolo EWMH, deberían de funcionar sin ningún problema.
|
texturesize valor |
Define la resolución en píxeles de las texturas que se muestran en 3d-Desktop. El valor tiene que ser siempre múltiplo de 2. Por defecto: 1024. En el archivo de código relativo a la configuración del programa, viene configurado hasta 2048, por lo que debemos de entender, que ése es el tamaño máximo de textura soportado.
|
compression on/off |
Si lo ponemos en on, activa la compresión de texturas. |
autoacquire nº |
Establece cada cuanto
tiempo, el servidor gráfico realizará una captura de la
pantalla. Tener en cuenta que la única forma de que 3d-Desktop,
muestre los escritorios virtuales actualizados en cuanto a ventanas
abiertas, es utilizando esta opción y estableciendo en 1
segundo, el tiempo de actualización.
Al utilizar esta opción, cuando iniciamos el programa por
1ª vez, sólo se mostrará la captura de pantalla del
escritorio virtual nº 1, a medida que vayamos cambiando al resto
de escritorios virtuales, y éstos sean mostrados en la pantalla,
3d-Desktop, irá actualizando el contenido de las capturas de éstos.
Si cambiamos muy rápido de escritorio, puede darse el caso de
que la pantalla de uno se repita en otro. Todo entra dentro del margen
de 1 segundo, que tiene el servidor gráfico para realizar la
captura de pantalla.
|
fastest on/off |
Si lo ponemos en on,
el programa consumirá más cpu, para acelerar el cambio de
escritorio. Si nos sobra procesador, podemos activarlo sin
ningún problema.
|
default_background ruta a la imagen |
Podemos utilizar como
fondo del entorno 3D del conmutador, la misma imagen que estamos
utilizando como fondo de nuestro entorno gráfico. Simplemente
tenemos que indicarle la ruta a la misma en este apartado. Un ejemplo:
default_background /home/jose/Fondos/fondo-001.jpg
Procurar utilizar imágenes que tengan la
misma razón de aspecto que la resolución de pantalla que
estemos utilizando. Es decir, no utilizar imágenes 16x9 en
pantallas 4x3, y viceversa.
|
default_background_texturesize valor |
Define la resolución en píxeles de las texturas del fondo de 3d-Desktop. El valor tiene que ser siempre múltiplo de 2. Por defecto: 256. En el archivo de código relativo a la configuración del programa, viene configurado hasta 2048, por lo que debemos de entender, que ése es el tamaño máximo de textura soportado.
|
Definición de las opciones posibles de ejecución del script 3ddesktopfx |
Comando de ejecución |
Descripción |
3ddeskfx mode 0 |
Muestra un carrusel horizontal con efecto de zoom de todos los escritorios virtuales.
|
3ddeskfx mode 1 |
Muestra un carrusel vertical con efecto de zoom de todos los escritorios virtuales.
|
3ddeskfx mode 2 |
Muestra un cilindro con efecto de zoom de todos los escritorios virtuales. |
3ddeskfx mode 3 |
Muestra una noria con efecto de zoom de todos los escritorios virtuales.
|
3ddeskfx mode 4 |
Muestra los escritorios virtuales sin efecto de zoom y los voltea al cambiar de uno a otro.
|
3ddeskfx mode 5 |
Muestra los escritorios virtuales con efecto de zoom, de forma lineal.
|
3ddeskfx view1 0 |
Lo mismo que el anterior comando. |
3ddeskfx view1 1 |
Cambia al escritorio virtual de la derecha sin hacer efecto de zoom, utilizando el efecto de carrusel. |
3ddeskfx view1 2 |
Lo mismo que el anterior, pero hacia el escritorio virtual izquierdo. |
3ddeskfx view1 3 |
Activa el 'mode 5' sin efecto de zoom. |
3ddeskfx view1 4 |
Activa el 'mode 3' sin efecto de zoom. |
3ddeskfx view1 5 |
Igual que el 'mode 5', pero sin espacio de separación entre los escritorios virtuales. |
3ddeskfx view1 6 |
Igual que el 'mode 5', pero con el indicador de número de escritorio más grande. |
3ddeskfx view1 7 |
Igual que el 'mode 1',
pero con el indicador de número de escritorio más grande
y el efecto de zoom más pronunciado. |
3ddeskfx view1 8 |
Activa el 'mode 5' sin efecto de zoom. |
3ddeskfx view1 9 |
Igual que el 'mode 4'.
|
3ddeskfx view2 0 |
Igual que el 'mode 0', pero con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 1 |
Lo mismo que el anterior,
con el efecto añadido de parpadeo de los escritorios virtuales
que no están seleccionados.
|
3ddeskfx view2 2 |
Activa el 'mode 2' sin efecto de zoom. |
3ddeskfx view2 3 |
Igual que el 'mode 2', pero con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 4 |
Lo mismo que el anterior,
con el efecto añadido de parpadeo de los escritorios virtuales
que no están seleccionados. |
3ddeskfx view2 5 |
Activa el 'mode 2' sin efecto de zoom y con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 6 |
Igual que el 'mode 1',
pero con el indicador de número de escritorio más
pequeño y el efecto de zoom más pronunciado. |
3ddeskfx view2 7 |
Lo mismo que el anterior,
con el efecto añadido de parpadeo de los escritorios virtuales
que no están seleccionados. |
3ddeskfx view2 8 |
Activa el 'mode 1' sin efecto de zoom y con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 9 |
Activa el 'mode 5' con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 10 |
Activa el 'mode 5' sin efecto de zoom y con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 11 |
Igual que el 'mode 3', pero con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 12 |
Activa el 'mode 3' sin efecto de zoom y con el indicador de número de escritorio más pequeño. |
3ddeskfx view2 13 |
Igual que el 'mode 4', pero con el indicador de número de escritorio más pequeño. |
Configurar
el inicio de 3d-Desktop
Utilizaremos el programa XbindKeys para configurar el atajo de teclado de ejecución y detención de 3d-Desktop, tomando como ejemplo el comando '3ddesktopfx mode 0' para su ejecución.
El comando de ejecución de 3ddesktop lo añadimos al archivo de configuración de XbindKeys, ~/.xbindkeysrc,
a partir de la línea 49, más o menos. Y el de
detención (útil en el caso de que tengamos problemas con
el programa), justo debajo.
# specify a mouse button
# lanzar 3ddesktop
"3ddeskfx mode 0"
Mod1+less
# detener 3ddesktop
"killall -9 3ddeskd &> /dev/null"
Mod1+k |
Con esta configuración, cada vez que ejecutemos la combinación 'Alt + <', 3d-Desktop se ejecutará. Y al ejecutar 'Alt + k',
mataremos el programa. Esto es sólo un ejemplo, que cada usuario
adapte la ejecución del programa al atajo de teclado que crea
más conveniente para el mismo.
A continuación pongo algunos ejemplos de inicio de la combinación XbindKeys+3d-Desktop en los administradores de ventanas cuya documentación está disponible en esta web.
1) Awesome
Editamos el archivo de configuración personal, ~/.config/awesome/rc.lua y añadimos el comando al final del mismo de la siguiente forma:
client.add_signal("focus", function(c) c.border_color = beautiful.border_focus end)
client.add_signal("unfocus", function(c) c.border_color = beautiful.border_normal end)
-- }}}
os.execute("xbindkeys &") |
2) Blackbox
Siguiendo el método que se utiliza en el manual de Blackbox, lo añadimos al script ~/.blackbox/autostart de la siguiente forma:
#!/bin/sh
docker &
bsetbg -f ~/Fotos/40.jpg
xbindkeys & |
3) Fluxbox
Añadimos el comando de ejecución en la
sección correspondiente del script de inicio ~/.fluxbox/startup.
# Applications you want to run
with fluxbox.
# MAKE SURE THAT APPS THAT KEEP RUNNING HAVE AN ''&'' AT THE
END.
#
# unclutter -idle 2 &
# wmnd &
# wmsmixer -w &
wmix &
xbindkeys &
|
4) Fvwm
Añadimos el comando de ejecución en la
sección correspondiente del archivo autostart, cuya configuración se explica en el manual de Fvwm.
AddToFunc StartFunction I Test (Init) Exec exec xscreensaver
AddToFunc StartFunction I Test (Init) Exec exec xbindkeys
|
5) Fvwm-Crystal
Añadimos el comando de ejecución al final del archivo ~/.fvwm-crystal/preferences/Startup, cuya configuración se explica en el manual de Fvwm-Crystal.
# Launch Xbindkeys
+ I Test (x xbindkeys) Exec pidof xbindkeys || exec xbindkeys
# vim:ft=fvwm
|
6) IceWM
Añadimos el comando de ejecución al script de inicio ~/.icewm/startup.
#!/bin/sh
xbindkeys &
gai-bgswitcher &
bluecombo &
sleep 5 && wmix & |
7) JWM
Añadimos el comando de ejecución en la sección correspondiente del archivo de
configuración ~/.jwmrc, en la versión original y ~/.jwm/autostart.xml en la versión en español disponible en la web.
<StartupCommand>
xbindkeys &
</StartupCommand>
|
8) LXDE y ROX Desktop
Abrimos un editor de texto y añadimos lo siguiente:
[Desktop Entry]
Type=Application
Name=XbindKeys
Comment=
Exec=xbindkeys
StartupNotify=false
Terminal=false
Hidden=false
OnlyShowIn=ROX;LXDE;
|
Lo guardamos con el nombre xbindkeys.desktop, con la codificación de caracteres, UTF-8, y lo copiamos a ~/.config/autostart.
$ mkdir -p ~/.config/autostart
$ cp xbindkeys.desktop ~/.config/autostart
|
9) Openbox
Añadimos el comando de ejecución al script de inicio ~/.config/openbox/autostart, autostart.sh en versiones inferiores a la 3.5.
sleep 5 &&
pypanel &
Esetroot -scale ~/Fondos/2141.jpg
xbindkeys &
|
10) 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
numlockx &
fbpanel &
#idesk &
#wmix &
hsetroot -fill /home/jose/Fotos/Natasha_Henstridge.jpg -gamma 1.5
-sharpen 1.5 -blur 1.0
xbindkeys &
|
11) 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
bmpanel &
idesk &
cwallpaper
-l
xbindkeys &
|
12) Window Maker
Añadimos el comando de ejecución al script de inicio ~/GNUSTEP/Library/WindowMaker/autostart.
#!/bin/sh
#
# Place applications to be executed when WindowMaker is started here.
# This should only be used for non-X applications or applications that
# do not support session management. Other applications should be restarted
# by the WindowMaker session restoring mechanism. For that, you should
# either set SaveSessionOnExit=YES or select "Save Session" in the Workspace
# submenu of the root menu when all applications you want started are
# running.
#
# WindowMaker will wait until this script finishes, so if you run any
# commands that take long to execute (like a xterm), put a ``&'' in the
# end of the command line.
#
# This file must be executable.
#
xbindkeys &
|
13) 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:
14) 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:
Para otros administradores de ventanas o escritorios, consultar sus
respectivos
manuales, en lo que haga referencia a la ejecución de
programas
al inicio de estos.
Activar el antialiasing en OpenGL en tarjetas NVIDIA
1) Controlador de gráficos original
Para evitar tener que establecer una variable de entorno global que afecte a todas las aplicaciones OpenGL, ya sea mediante la utilidad nvidia-settings o mediante edición del archivo ~/.bashrc, añadiremos al comando de ejecución de 3d-Desktop, configurado en XbindKeys, las correspondientes variables de entorno que activarán los filtros de antialiasing y anisotrópico del entorno 3D, generado por 3d-Desktop,
con lo que el aspecto visual mejorará considerablemente. Para
saber los niveles de antialiasing y filtrado anisotrópico que
soporta nuestra tarjeta gráfica, ejecutamos el siguiente comando
en una ventana de terminal:
[jose@localhost ~]$ nvidia-settings --query=fsaa --query=loganiso --verbose
Attribute 'FSAA' (localhost:1.0): 0.
Valid values for 'FSAA' are: 0, 1, 5, 7, 8, 9, 10 and 12.
'FSAA' can use the following target types: X Screen.
Note to assign 'FSAA' on the commandline, you may also need to assign
'FSAAAppControlled' and 'FSAAAppEnhanced' to 0.
Valid 'FSAA' Values
value - description
0 - Off
1 - 2x (2xMS)
5 - 4x (4xMS)
7 - 8x (4xMS, 4xCS)
8 - 16x (4xMS, 12xCS)
9 - 8x (4xSS, 2xMS)
10 - 8x (8xMS)
12 - 16x (8xMS, 8xCS)
Attribute 'LogAniso' (localhost:1.0): 0.
The valid values for 'LogAniso' are in the range 0 - 4 (inclusive).
'LogAniso' can use the following target types: X Screen. |
De lo que extraemos la siguiente tabla, con la variable de entorno correspondiente incluida:
Filtrado antialiasing |
Valor |
Descripción |
__GL_FSAA_MODE=0
|
Desactivado
|
__GL_FSAA_MODE=1 |
2x (2xMS) |
__GL_FSAA_MODE=5 |
4x (4xMS) |
__GL_FSAA_MODE=7 |
8x (4xMS, 4xCS) |
__GL_FSAA_MODE=8 |
16x (4xMS, 12xCS) |
__GL_FSAA_MODE=9 |
8x (4xSS, 2xMS) |
__GL_FSAA_MODE=10 |
8x (8xMS) |
__GL_FSAA_MODE=12 |
16x (8xMS, 8xCS) |
Filtrado anisotrópico |
|
Valor |
Descripción |
__GL_LOG_MAX_ANISO=0 |
Desactivado |
__GL_LOG_MAX_ANISO=1 |
2x |
__GL_LOG_MAX_ANISO=2 |
4x |
__GL_LOG_MAX_ANISO=3 |
8x |
__GL_LOG_MAX_ANISO=4 |
16x |
Y finalmente lo incluimos en el
comando de ejecución del atajo de teclado, ajustando los niveles
en función del sistema que tengamos, en el ejemplo, pongo el
nivel máximo. Tener en cuenta, que no estamos ante un juego en 3D,
con lo que el nivel máximo es perfectamente asumible por nuestro
sistema.
# specify a mouse button
# lanzar 3ddesktop
"__GL_FSAA_MODE=12 __GL_LOG_MAX_ANISO=4 3ddeskfx mode 0"
Shift+less
# detener 3ddesktop
"killall -9 3ddeskd &> /dev/null"
Shift+less+z |
2) Nouveau
En su manual de instalación, en la sección dedicada a DRIConf,
se explica el uso de los dos filtros de antialiasing disponibles cuando
hacemos uso de este controlador de gráficos. Sólo tenemos
que añadir uno de los dos, o los dos, en el mismo apartado del
archivo de configuración de XbindKeys. Un ejemplo:
# specify a mouse button
# lanzar 3ddesktop
"pp_jimenezmlaa=32 3ddeskfx mode 0"
Shift+less
# detener 3ddesktop
"killall -9 3ddeskd &> /dev/null"
Shift+less+z |
Iniciamos 3d-Desktop
Enlaces
http://desk3d.sourceforge.net >> La web de 3d-Desktop.
|