Copyright
Copyright © José
Luis Lara Carrascal 2013-2023
Sumario
Introducción
Características
Liquid Rescale
Aura
Opciones de línea de comandos
Configuración
Configurar el inicio de Aura
Iniciamos Aura
Enlaces
Introducción
Aura es una utilidad de escritorio, cuya finalidad consiste en colocar
una imagen en el fondo de la pantalla, ya sea de forma fija, aleatoria
o cíclica. Hasta aquí estaríamos hablando de
otro setter más para GNU/Linux,
como los que existen documentados en esta web. Pero la particularidad
de esta utilidad, es que establece la imagen del fondo de la pantalla a
partir de una llamada en segundo plano que realiza al programa El Gimp, mediante un plugin escrito en Python que viene con el programa, utilizando el plugin Liquid Rescale,
para redimensionar la imagen al tamaño de la pantalla de forma
uniforme y sin preservar la razón de aspecto de la misma,
creando una imagen temporal en formato PNG en el directorio /temp
del sistema, y añadiendo una etiqueta incrustada en la esquina
superior izquierda de la imagen con los datos Exif de la misma.
Esto supone que el resultado de, por ejemplo, adaptar el formato de una
imagen de 16x9 a una resolución de 4x3 sea muy dispar. Siendo en
algunos casos, materialmente imposible lograr que una modelo tumbada
que ocupa toda la pantalla, vea como su ombligo desaparece por
arte de magia, o mejor dicho, por arte del algoritmo que utiliza el
plugin Liquid Rescale.
Otro de los inconvenientes de este programa, es el tiempo lógico
que tarda en generar la imagen, teniendo en cuenta que tiene que
ejecutar El Gimp,
en segundo plano, con lo que no es recomendable utilizarlo como
programa principal para colocar una imagen en el fondo de la pantalla.
Sí es recomendable utilizarlo, si lo que
queremos es alternar de forma periódica el fondo de la pantalla,
sin importarnos la proporcionalidad del aspecto de las
imágenes.
Además de tratar su instalación, he incluido una
modificación personal del plugin que viene con el programa, para
que pueda ser utilizado con cualquiera de los setters cuya documentación está disponible en esta web. La instalación de Liquid Rescale también se incluye en este manual.
Características
* Selecciona las imágenes al azar de rutas de acceso específicas.
* Omite las imágenes muy pequeñas y las que tienen razón de aspecto diferente.
* Reescala las imágenes de forma inteligente (recortando los bordes, redimensionando mediante interpolación
cúbica y el uso del algoritmo Liquid Rescale) para ajustarlas al tamaño de la pantalla con la pérdida mínima de calidad.
* Incrusta una etiqueta en la esquina superior izquierda de la imagen con los datos Exif de la misma.
* Puede ejecutarse en segundo plano y cambiar de imagen cada cierto tiempo configurable.
* Hace un seguimiento de las imágenes utilizadas y permite omitir el uso de las imágenes que deseemos.
Liquid Rescale
Liquid Rescale es un plugin para El Gimp, e interfaz de uso de la librería Liquid Rescale, que proporciona una implementación del algoritmo Seam Carving, descrito en este documento.
El procedimiento del algoritmo consiste en cambiar el tamaño de
las imágenes de forma no uniforme, preservando sus
características y evitando la distorsión de las partes
más importantes.
Instalación
Dependencias
Herramientas
de Compilación
Entre paréntesis la
versión con la que se ha compilado Liquid Rescale
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)
* Automake - (1.16.5)
* Gettext - (0.22)
* Autoconf - (2.71)
* Pkg-config - (0.29.2)
Librerías
de Desarrollo
* Xorg - (7.7 / xorg-server 21.1.8)
* Gimp - (2.10.34)
* GLib - (2.74.7)
* GTK+ - (2.24.33)
Módulos de Perl
* XML::Parser - (2.46)
Descarga
liblqr-1-0.4.2.tar.bz2 | gimp-lqr-plugin-0.7.2.tar.bz2
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'
|
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 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. Esto también es aplicable para el enlazador
dinámico Mold.
|
Establecer la variable de entorno de uso de compilador para Clang |
$ export CC=clang CXX=clang++ |
Extracción y Configuración de Liquid Rescale Library
$ tar jxvf liblqr-1-0.4.2.tar.bz2
$ cd liblqr-1.0.4.2
$ ./configure --libdir=/usr/lib64
|
Explicación de los
comandos
--libdir=/usr/lib64 : Instala la librería 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
-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 Liquid Rescale Library
Estadísticas de Compilación e Instalación de Liquid Rescale Library |
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 |
15 |
|
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.
liblqr-1-0.4.2-scripts.tar.gz
$ su
# tar zxvf liblqr-1-0.4.2-scripts.tar.gz
# cd liblqr-1-0.4.2-scripts
# ./Desinstalar_liblqr-1-0.4.2 |
Copia de Seguridad como root
Con este otro script creamos una copia de seguridad de los binarios
compilados, recreando la estructura de directorios de los mismos en un
directorio de copias de seguridad (copibin) que se crea en el directorio /var. Cuando se haya creado el paquete comprimido de los binarios podemos copiarlo como usuario a nuestro home
y borrar el que ha creado el script de respaldo, teniendo en cuenta que
si queremos volver a restaurar la copia, tendremos que volver a
copiarlo al lugar donde se ha creado.
$ su
# tar zxvf liblqr-1-0.4.2-scripts.tar.gz
# cd liblqr-1-0.4.2-scripts
# ./Respaldar_liblqr-1-0.4.2 |
Restaurar la Copia de Seguridad como root
Y con este otro script (que se copia de forma automática cuando
creamos la copia de respaldo del programa) restauramos la copia de
seguridad como root cuando resulte necesario.
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_liblqr-1-0.4.2
|
Extracción y Configuración de Liquid Rescale Plugin
$ tar jxvf gimp-lqr-plugin-0.7.2.tar.bz2
$ cd gimp-lqr-plugin-0.7.2
$ ./configure --prefix=$(pkg-config --variable=prefix gimp-2.0)
|
Explicación de los comandos
--prefix=$(pkg-config --variable=prefix gimp-2.0)
: Instala el plugin en la ruta de instalación determinada por el
prefijo de instalación proporcionado por el programa pkg-config. Esto evita tener que añadir una ruta específica en función de dónde tengamos instalado Gimp.
Compilación
Parámetros de compilación opcionales
Instalación como root
$ su -c "make install-strip"
|
Estadísticas de Compilación e Instalación de Liquid Rescale Plugin
Estadísticas de Compilación e Instalación de Liquid Rescale Plugin |
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 |
4" |
Archivos instalados |
28 |
|
Ocupación de espacio en disco |
868 KB |
Desinstalación
como root
1) MODO TRADICIONAL
En el directorio de compilación ejecutamos el siguiente comando:
2) MODO MANUALINUX
gimp-lqr-plugin-0.7.2-scripts.tar.gz
$ su
# tar zxvf gimp-lqr-plugin-0.7.2-scripts.tar.gz
# cd gimp-lqr-plugin-0.7.2-scripts
# ./Desinstalar_gimp-lqr-plugin-0.7.2 |
Copia de Seguridad
como root
$ su
# tar zxvf gimp-lqr-plugin-0.7.2-scripts.tar.gz
# cd gimp-lqr-plugin-0.7.2-scripts
# ./Respaldar_gimp-lqr-plugin-0.7.2 |
Restaurar la Copia de Seguridad
como root
$ su
# cd /var/copibin/restaurar_copias
# ./Restaurar_gimp-lqr-plugin-0.7.2
|
Aura
Instalación
Dependencias
Entre paréntesis la
versión con la que se ha instalado Aura
para la elaboración de este documento.
* Python - (2.7.18)
* PyGTK - (2.24.0)
* Gimp - (2.10.34)
* Liquid Rescale Plugin - (0.7.2)
* Xprintidle - (0.2.3) - opcional
* Pyexiv2 - (0.3.2) - opcional
* Dbus-python - (1.2.18) - opcional
* Python-Colormath - (3.0.0) - opcional
Descarga
aura-1.11.tar.gz
Extracción e Instalación como usuario
$ tar zxvf aura-1.11.tar.gz
$ cd aura-1.11.0
$ mkdir -p ~/bin
$ mkdir -p ~/.config/GIMP/2.10/plug-ins
$ cp aura ~/bin
$ cp lqr_wpset.py ~/.config/GIMP/2.10/plug-ins
$ sed -i '$iexport PATH=$HOME/bin:$PATH' ~/.bashrc
|
Explicación
de los comandos
sed -i '$iexport PATH=$HOME/bin:$PATH' ~/.bashrc : Normalmente el directorio /bin de nuestro home
suele estar incluido por defecto en el PATH, ejecutar este comando en
el caso de que no sea así en la distribución que estemos
utilizando. Si no existe el archivo ~/.bashrc, cambiar el comando por éste otro: echo 'export PATH=$HOME/bin:$PATH' > ~/.bashrc
Directorio de configuración personal
~/.aura |
Es
el directorio de configuración personal de Aura
en nuestro home. |
~/.aura/blacklist |
Es el
archivo que que contiene los nombres de las imágenes que
serán omitidas cuando Aura
sea ejecutado en modo aleatorio y en segundo plano. Con el comando "aura
--blacklist" podemos
hacer que la imagen de fondo actual, no sea establecida más
como fondo de escritorio. El nombre de la misma quedará
registrado en este archivo. |
~/.aura/current |
Es el
archivo que contiene el nombre de la imagen que está
establecida como fondo de escritorio en curso. |
~/.aura/history.log |
Es el
archivo de registro del historial de las imágenes que han
sido utilizadas como fondo de escritorio por Aura. |
~/.aura/picker.log |
Es el
archivo de registro del proceso de ejecución de Gimp y el plugin lqr_wpset.py.
Cualquier problema en la ejecución del mismo
quedará registrado en este archivo. |
~/.aura/picker.pid |
Es el
archivo que contiene el número PID asignado al proceso de
ejecución de Gimp
y el plugin lqr_wpset.py. |
Desinstalación
como usuario
1)
MODO TRADICIONAL
$ rm -f ~/bin/aura
$ rm -f ~/.config/GIMP/2.10/plug-ins/lqr_wpset.py |
2)
MODO MANUALINUX
aura-1.11.0-scripts.tar.gz
$ tar zxvf aura-1.11.0-scripts.tar.gz
$ cd aura-1.11.0-scripts
$ ./Desinstalar_aura-1.11.0 |
Copia de Seguridad
como usuario
$ tar zxvf aura-1.11.0-scripts.tar.gz
$ cd aura-1.11.0-scripts
$ ./Respaldar_aura-1.11.0 |
Restaurar la Copia de Seguridad
como usuario
$ cd ~/copibin/restaurar_copias
$ ./Restaurar_aura-1.11.0
|
Opciones de
línea de comandos de Aura
Para que el programa nos muestre las opciones de ejecución, ejecutamos el comando aura -h. Un ejemplo traducido al español.
[jose@localhost ~]$ aura -h
Uso:
aura rutas...
aura ( -d | --daemon ) [ --no-fork ] [ --no-init ] rutas...
aura [ -n | --next ] [ -b | --blacklist ] [ -k | --kill ] [
-h | --help ]
Establecer la imagen de fondo seleccionada al azar de las rutas
especificadas.
La opción --daemon inicia la instancia en segundo plano (a
menos que --no-fork se haya especificado),
y obtiene/establece una nueva imagen en el inicio (a menos que
--no-init se haya especificado),
y repite el proceso cada 10800s después.
Algunas opciones (o sus equivalentes de una letra) pueden utilizarse en
lugar de rutas para controlar el
proceso en ejecución de aura (iniciado con la
opción --daemon):
--next
cambia al siguiente fondo de forma inmediata.
--blacklist añade el fondo actual a la
lista negra (será omitido a partir de ahora).
--kill
detiene la instancia en ejecución actual.
--current muestra el nombre de
la imagen del fondo actual
--help
muestra esta ayuda
Varias rutas y parámetros pueden especificarse
también en el
comienzo de este script.
|
Configuración de Aura
El tiempo predefinido para cambiar de una imagen a otra es de 3 horas.
Modificando lo que está de color rojo, del script del programa,
lo dejaremos en 15 minutos. Tener en cuenta que el tiempo se mide en
segundos.
#!/bin/bash
## Options
interval=$(( 3
* 300 )) # 15m
recheck=$(( 300
)) # 5m
activity_timeout=$(( 30 * 60 )) # 30min
max_log_size=$(( 1024 * 1024 )) # 1M, current+last files are kept
|
En un principio, el programa sólo es compatible con los
entornos gráficos GNOME,
XFce 4
y E17,
en los que la integración es total. En el resto de entornos
gráficos, utiliza PyGTK
para colocar la imagen en el fondo de la pantalla, con el inconveniente
de que no soporta pseudotransparencias. Para evitar esto, y que este
manual tenga cierto sentido en esta web, modificamos el plugin lqr_wpset.py, para
poder utilizar cualquier setter
de los que están documentados en este sitio, y
así los usuarios de administradores de ventanas podamos
disfrutar del uso de este programa.
Abrimos con un editor de texto, el plugin ubicado en ~/.config/GIMP/2.10/plug-ins/lqr_wpset.py,
nos vamos a la línea 156 y añadimos a
continuación lo que está de color rojo, en azul
el comando del setter
a utilizar. Podemos cambiarlo por el que deseemos, en este ejemplo
estoy utilizando Feh. Lo
guardamos y ejecutamos Aura
con la ruta a una imagen especifica para comprobar que funciona
correctamente.
## E17 edbus interface
try:
edbus = dbus.SessionBus().get_object(
'org.enlightenment.wm.service',
'/org/enlightenment/wm/RemoteObject' )
dxc, dyc =
edbus.GetVirtualCount(dbus_interface='org.enlightenment.wm.Desktop')
edbus = dbus.Interface( edbus,
dbus_interface='org.enlightenment.wm.Desktop.Background' )
for dx, dy in it.product(xrange(dxc),
xrange(dyc)): edbus.Add(0, 0, dx, dy, path)
except
dbus.exceptions.DBusException: pass # no property/object/interface/etc
os.system('feh
--bg-fill ' + path)
## Paint X root window via pygtk
pb = gdk.pixbuf_new_from_file(path)
pm, mask = pb.render_pixmap_and_mask()
win = gdk.get_default_root_window()
win.set_back_pixmap(pm, False)
win.clear()
win.draw_pixbuf(gdk.GC(win), pb, 0, 0,
0, 0, -1, -1)
|
Y si no queremos que se muestren los datos Exif incrustados en la
esquina superior izquierda del fondo de escritorio, borramos el
siguiente
contenido del plugin lqr_wpset.py.
Nos vamos a la línea 319 (contando las líneas añadidas anteriormente) y la borramos hasta la
línea 375.
## Render label on top of the image layer
# First, render all the the text boxes
# Image title, larger than the rest of the tags
label_title = pdb.gimp_text_fontname( image, layer_image,
label_offset[0], label_offset[1], meta.pop('title'),
-1, True, font_filename[1], PIXELS, font_filename[0] )
pdb.gimp_floating_sel_to_layer(label_title)
# Tags, ordered according to label_tags
meta = list( (label, meta.pop(label))
for label in it.imap(op.itemgetter(0), label_tags)
if label in meta ) + list(meta.iteritems())
offset_layer = 0.5 * font_timestamp[1]
offset_y = label_title.offsets[1] + label_title.height + offset_layer
label_keys = pdb.gimp_text_fontname( image, layer_image,
label_title.offsets[1] + 3 * font_timestamp[1], offset_y,
'\n'.join(it.imap(op.itemgetter(0), meta)),
-1, True, font_timestamp[1], PIXELS, font_timestamp[0] )
pdb.gimp_floating_sel_to_layer(label_keys)
label_vals = pdb.gimp_text_fontname( image, layer_image,
label_keys.offsets[0] + label_keys.width + offset_layer, offset_y,
'\n'.join(it.imap(op.itemgetter(1), meta)),
-1, True, font_timestamp[1], PIXELS, font_timestamp[0] )
pdb.gimp_floating_sel_to_layer(label_vals)
label_layers = label_title, label_keys, label_vals
# Find average color within the label_geom box
# and pick the most distant color from label_colors
label_geom = tuple(( layer.offsets + op.attrgetter(
'width', 'height')(layer) ) for layer in label_layers)
label_geom = label_offset + tuple( # (offsets + dimensions)
max((g[i] + g[2+i] - label_offset[i]) for g in geoms)
for i,geoms in enumerate([label_geom]*2) )
pdb.gimp_context_set_feather(False)
pdb.gimp_context_set_feather_radius(0, 0)
pdb.gimp_image_select_rectangle(
image, CHANNEL_OP_REPLACE,
label_geom[0], label_geom[1],
label_geom[2], label_geom[3] )
label_bg_color = tuple(
int(round(pdb.gimp_histogram(layer_image, channel, 0, 255)[0], 0)) # mean intensity value
for channel in [HISTOGRAM_RED, HISTOGRAM_GREEN, HISTOGRAM_BLUE] )
label_fg_color = pick_contrast_color(label_bg_color)
gimp.set_foreground(label_fg_color), gimp.set_background(label_bg_color)
# Set the picked color for all label layers, draw outlines
label_outline = image.new_layer( 'label_outline',
opacity=30, pos=image.layers.index(layer_image) )
for layer in label_layers:
pdb.gimp_text_layer_set_color(layer, label_fg_color)
path = pdb.gimp_vectors_new_from_text_layer(image, layer)
pdb.gimp_image_insert_vectors(image, path, None, -1)
pdb.gimp_context_set_antialias(True)
pdb.gimp_context_set_feather(False)
pdb.gimp_image_select_item(image, CHANNEL_OP_REPLACE, path)
pdb.gimp_selection_grow(image, 1), pdb.gimp_selection_border(image, 1)
pdb.gimp_edit_fill(label_outline, BACKGROUND_FILL)
# Meld all the layers together
image.flatten()
|
Configurar
el inicio de Aura
En los ejemplos siguientes vamos a configurar el inicio de Aura
para que se
inicie en segundo plano, cargando las imágenes de un
directorio determinado cada 15 minutos. Tener en cuenta que
cuando Aura
funciona como un daemon,
podemos enviarle los siguientes comandos al programa desde una ventana
de terminal:
* Cambiar a la siguiente imagen
* Añadir el fondo actual a la lista negra (se
omitirá su carga a partir de ahora)
* Detener la ejecución del programa
* Mostrar el nombre del archivo de imagen utilizado como fondo en curso
Si queremos guardar las imágenes que genera el programa,
podemos copiar el archivo oculto temporal en formato PNG, que se crea
en el directorio /tmp
con el nombre .lqr_wpset_bg.*.png,
a cualquier directorio de nuestro home.
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 &")
os.execute("aura -d ~/Fondos/16x9 &") |
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
aura -d ~/Fondos/16x9 &
(sleep 2; bbkeys &) &
docker & |
3) Fluxbox
Editamos el archivo ~/.fluxbox/startup y lo añadimos en la sección correspondiente:
# fluxbox startup-script:
#
# Lines starting with a '#' are ignored.
# You can set your favourite wallpaper here if you don't want
# to do it from your style.
#
#wpsetters=Esetroot fbsetbg -r /home/jose/Fondos-800x600
aura -d ~/Fondos/16x9 &
#
# This sets a black background
#/usr/X11R6/bin/bsetroot -solid black
# This shows the fluxbox-splash-screen
# fbsetbg -C /usr/share/fluxbox/splash.jpg |
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 aura -d ~/Fondos/16x9
|
5) IceWM
Añadimos el comando de ejecución al script de inicio ~/.icewm/startup,
#!/bin/sh
aura -d ~/Fondos/16x9 &
gai-bgswitcher &
bluecombo &
sleep 5; wmix & |
6) 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>
aura -d ~/Fondos/16x9 &
</StartupCommand>
|
7) 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 &
xbindkeys &
aura -d ~/Fondos/16x9 &
|
8) 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 &
aura -d ~/Fondos/16x9 &
|
9) 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:
aura -d ~/Fondos/16x9 &
exec sawfish
|
10) 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:
aura -d ~/Fondos/16x9 &
exec sawfish
|
Iniciamos Aura
Los resultados con paisajes son muy buenos, pero los resultados con
personas son decepcionantes. En los ejemplos utilizo paisajes porque es
lo que mejor resultado da.
Imagen original >> 1024x768 px.
Aura + Fluxbox >> 1920x1080 px.
Imagen original >> 1024x768 px.
Aura + Fluxbox >> 1920x1080 px.
Enlaces
http://desktop-aura.sourceforge.net >> La web de Aura.
http://liquidrescale.wikidot.com >> La web de Liquid Rescale.
|