Manualinux
http://www.nvu.com http://www.gimp.org InicioPresentaciónActualizacionesManualesDescargasNoticiasAgradecimientoEnlaces

Entornos GráficosAplicaciones

Administradores de SesionesAdministradores de VentanasEscritoriosUtilidades de Escritorio

Utilidades de Escritorio - XsettingsdUtilidades del Fondo del Escritorio

Utilidades de Escritorio - Zufall




Utilidades de Escritorio - Zufall




Copyright

Copyright © José Luis Lara Carrascal  2008-2023   http://manualinux.es



Sumario

Introducción
Preliminares
Instalación
Opciones de línea de comandos
Ejemplos de comandos de ejecución de Zufall
Configurar el inicio de Zufall
Iniciamos Zufall
Paquetes binarios
Enlaces




Introducción  

Zufall
es un programa que nos permite cambiar de fondo de escritorio de forma periódica, aunque esta función también se podría realizar con el comando cron y un setter específico o utilizar el gestor de iconos, Idesk, siempre es bueno disponer de alternativas, para que sea el usuario final el que decida aquello que más le convenga. Para los que no conozcan esta aplicación, un tanto desconocida y basada en el ya abandonado Chbg, es una utilidad de línea de comandos que añadiéndola con el correspondiente comando de ejecución a los scripts de inicio de los administradores de ventanas y con el retardo que especifiquemos (15 minutos por defecto) nos permitirá cambiar la imagen del fondo de la pantalla cada cierto tiempo.

Además de esa función, se pueden añadir bordes a la imagen, y respecto a la forma de fijar la imagen en la pantalla, siempre lo hace ajustando la imagen de forma proporcionada a la resolución de pantalla que estemos utilizando. También permite cargar las imágenes y visualizarlas de forma aleatoria en un visor gráfico como pueda ser GQview o ejecutar un comando específico en el momento del cambio de la imagen.



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 Zufall para la elaboración de este documento.

* GCC - (13.2.0) o Clang - (16.0.6)
* Gawk - (5.2.2)
* 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)
   LibX11 - (1.8.6)
   LibXinerama - (1.1.5)
   LibXrandr - (1.5.3)
* Imlib2 - (1.11.1)



Descarga

zufall-0.3.tar.gz

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
Intel
AMD

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-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  Bloc de Notas Información general sobre el uso de los comandos

$ tar zxvf zufall-0.3.tar.gz
$ cd zufall-0.3
$ ./configure

Compilación

$ make

Parámetros de compilación opcionales

-j$(nproc): Establece el número de procesos de compilación en paralelo, en función del número de núcleos e hilos que tenga nuestro procesador, tomando como referencia la información mostrada por el sistema con el comando correspondiente. Si nuestro procesador es mononúcleo de un solo hilo, no añadir esta opción.

Instalación como root

$ su -c "make install-strip"

Estadísticas de Compilación e Instalación de Zufall

Estadísticas de Compilación e Instalación de Zufall
CPU AMD Ryzen 5 5500
MHz 3593.250 (BoostMax=4457.000)
RAM 32 GB
Sistema de archivos XFS
Versión del Kernel 6.4.7-ml SMP PREEMPT_DYNAMIC x86_64
Modo de frecuencia de la CPU powersave (balance performance)
Versión de Glibc 2.37
Enlazador dinámico LLD 16.0.6
Compilador Clang 16.0.6
Parámetros de optimización -03 -march=znver3 -mtune=znver3 -mllvm -polly -mllvm -polly-vectorizer=stripmine -flto=thin -Wl,--lto-aa-pipeline=globals-aa -Wl,--lto-newpm-passes=memcpyopt
Parámetros de compilación -j12
Tiempo de compilación 1"
Archivos instalados 7
Mostrar/Ocultar la lista de archivos instalados
Ocupación de espacio en disco 100 KB

Consumo inicial de CPU y RAM de Zufall

Consumo inicial de CPU y RAM de Zufall
Programa
CPU RAM
zufall 0 % 2,4 MB
Para medir el consumo de CPU se utiliza el programa top, y para medir el consumo de RAM se utiliza el script de Python, ps_mem.py, creado por Pádraig Brady, que podemos encontrar en este enlace.

Desinstalación como root

1) MODO TRADICIONAL

En el directorio de compilación ejecutamos el siguiente comando:

$ su -c "make uninstall"

2) MODO MANUALINUX

El principal inconveniente del comando anterior es que tenemos que tener el directorio de compilación en nuestro sistema para poder desinstalar el programa. En algunos casos esto supone muchos megas de espacio en disco. Con el paquete de scripts que pongo a continuación logramos evitar el único inconveniente que tiene la compilación de programas, y es el tema de la desinstalación de los mismos sin la necesidad de tener obligatoriamente una copia de las fuentes compiladas.

zufall-0.3-scripts.tar.gz

$ su
# tar zxvf zufall-0.3-scripts.tar.gz
# cd zufall-0.3-scripts
# ./Desinstalar_zufall-0.3

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 zufall-0.3-scripts.tar.gz
# cd zufall-0.3-scripts
# ./Respaldar_zufall-0.3

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_zufall-0.3



Opciones de línea de comandos  

Mediante éstas determinamos los aspectos más importantes del mismo, un ejemplo con los comentarios traducidos al español.

[jose@localhost ~]$ zufall --help
Uso: zufall /ruta/al/directorio o archivo de imagen [
/ruta/al/directorio-archiv-de-imagen]
  -d, --delay=RETARDO        número de segundos para el cambio de imagen (900 por defecto >> 15 minutos)
  -M, multi-head=MODO        especifica el método de ubicación de las imágenes si tenemos más de un monitor
                             conectado. MODO puede ser "per_screen" (una imagen por pantalla), "stretch"
                             (una imagen ajustada a las pantallas) o "clone" una imagen repetida en las
                              pantallas. El modo por defecto es "per_screen".
  -s  --maxscale=PORCENTAJE  PORCENTAJE máximo de escalado de la imagen cuando esta sea de menor resolución que
                             la que utilice la pantalla (150 por defecto)
  -b  --minborder=PIXEL      ignora --maxscale si el borde restante es más
                             pequeño que --minborder (100 por defecto)
  -m  --minsize=KILOBYTE     sólo muestra las imágenes más grandes que KILOBYTE.
                             Un tamaño de 0 muestra todas las imágenes (0 por defecto)
  -l  --list=ARCHIVO         carga una lista de imágenes desde un archivo
                             - el formato es un directorio o archivo por línea
                             - también pueda ser una colección desde gqview
                             - si ARCHIVO es "-", la lista será leída desde la entrada estándar
  -S  --sequential           no carga de forma aleatoria la lista de imágenes (útil con -l)
  -c  --command=COMANDO      ejecuta un comando (COMANDO) en cada cambio de imagen
                             COMANDOS POSIBLES
                               %f se reemplaza con el nombre de archivo de la imagen
                               %c se reemplaza con el color del fondo
                               %w se reemplaza con la anchura escalada
                               %h 
se reemplaza con la altura escalada
                               %% se reemplaza con %
  -n  --no-set               No establece el fondo del escritorio
                             (sino ejecuta el comando en cuestión)
  -p  --passes=PASES         termina después de mostrar un determinado número de imágenes
      --help                 muestra esta ayuda y termina
      --version              muestra la información de la versión y termina

SIGNALS:
  HUP                        cambia de fondo
  USR1                       info
  TERM                       termina



Ejemplos de comandos de ejecución de Zufall  Bloc de Notas  

1) Mostrar el nombre, la resolución y color del fondo de las imágenes que existen en un directorio

[jose@localhost ~]$ zufall ~/Fondos -n -c 'echo "imagen: %f color: %c resolución: %wx%h"' -d 5
----- output 2: HDMI-1 (0) 1920x1080: 0,0 1920x1080 -----
so ein zufall!: /home/jose/Fondos/521683,103.jpg
list is empty!
image|noborder: 1024, border: 768 (ratio 1.33)
result: 1440x1080 crop 1024x768

head1: 240,0 1440x1080 (#252525)
imglib_render image at size 1440x1080
display: h1 0,0 1920x1080
imagen: /home/jose/Fondos/521683,103.jpg color: #252525 resolución: 1440x1080
so ein zufall!: /home/jose/Fondos/764160,103.jpg
list is empty!
image|noborder: 1024, border: 768 (ratio 1.33)
result: 1440x1080 crop 1024x768

head1: 240,0 1440x1080 (#d6d6d8)
imglib_render image at size 1440x1080
display: h1 0,0 1920x1080
imagen: /home/jose/Fondos/764160,103.jpg color: #d6d6d8 resolución: 1440x1080
so ein zufall!: /home/jose/Fondos/393874,103.jpg
list is empty!
image|noborder: 1024, border: 768 (ratio 1.33)
result: 1440x1080 crop 1024x768

Explicación de los comandos

~/Fondos : La ruta al directorio de las imagenes que está en mi home.
-n : Le indicamos que no coloque la imagen en el fondo del escritorio.
-c 'echo "imagen: %f color: %c resolución: %wx%h"' : El comando a ejecutar para que nos muestre la información antes referida, los comandos con % son reemplazados por los valores de la imagen.
-d 5 : El retardo en segundos para cambiar de imagen, si no lo añadimos, utilizará el que lleva por defecto, (900) 15 minutos.

2) Cargar de forma aleatoria un directorio de imágenes para ser mostrado en GQview en modo presentación

[jose@localhost ~]$ zufall ~/Fondos -n -c 'gqview -r "%f"' -d 10
----- output 2: HDMI-1 (0) 1920x1080: 0,0 1920x1080 -----
so ein zufall!: /home/jose/Fondos/277752,103.jpg
list is empty!
image|noborder: 1024, border: 768 (ratio 1.33)
result: 1440x1080 crop 1024x768

head1: 240,0 1440x1080 (#030304)
imglib_render image at size 1440x1080
display: h1 0,0 1920x1080
GQview 2.1.5, This is a beta release.
GQview 2.1.5, This is a beta release.
GQview remoto no está ejecutándose; iniciando......
so ein zufall!: /home/jose/Fondos/359120,103.jpg
list is empty!
image|noborder: 1024, border: 768 (ratio 1.33)
result: 1440x1080 crop 1024x768

head1: 240,0 1440x1080 (#56293a)
imglib_render image at size 1440x1080
display: h1 0,0 1920x1080
GQview 2.1.5, This is a beta release.
so ein zufall!: /home/jose/Fondos/16x9/742.jpg
list is empty!
image|noborder: 1920, border: 1200 (ratio 1.60)
result: 1728x1080 crop 1920x1200


Explicación de los comandos

~/Fondos : La ruta al directorio de las imagenes que está en mi home.
-n : Le indicamos que no coloque la imagen en el fondo del escritorio.
-c 'gqview -r "%f"' : El comando a ejecutar para enviar los archivos de imagen de forma remota a GQview.
-d 10 : El retardo en segundos para cambiar de imagen, si no lo añadimos, utilizará el que lleva por defecto, (900) 15 minutos.

Para conocer algunos ejemplos más, ejecutar man zufall.



Configurar el inicio de Zufall  

A continuación varios ejemplos de inicio de Zufall con algunos de los administradores de ventanas cuya documentación está disponible en la web.

1) 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

(sleep 2; bbkeys &) &
docker &
zufall ~/Fotos &

2) Fluxbox


Añadimos el comando de ejecución en la sección correspondiente del script de inicio ~/.fluxbox/startup, en este caso le pongo un retardo de 30 minutos (1800 s). No olvidarse del símbolo &, si no lo añadimos Fluxbox se quedará colgado y no se iniciará.

# You can set your favourite wallpaper here if you don't want
# to do it from your style.
#
zufall ~/Fotos -d 1800 &
#

3) 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>
        zufall ~/Fotos -S -d 1800 &
        idesk & 
    </StartupCommand>

4) Openbox


Añadimos el comando de ejecución al script de inicio ~/.config/openbox/autostart, autostart.sh en versiones inferiores a la 3.5.

zufall ~/Fotos &
sleep 5; pypanel &
xbindkeys &

5) 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

zufall ~/Fotos &

numlockx &
fbpanel &

6) IceWM

Añadimos el comando de ejecución al script de inicio ~/.icewm/startup,

#!bin/sh

zufall ~/Fotos &
gai-bgswitcher &
bluecombo &
sleep 5; wmix &

7) 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:

zufall ~/Fotos -d 1800 &
exec fvwm

8) 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:

zufall ~/Fotos -d 1800 &
exec fvwm

Para otros administradores de ventanas, consultar sus respectivos manuales, en lo que haga referencia a la ejecución de programas al inicio de estos. Esta aplicación no es compatible con AfterStep, XFce 4 y ROX Desktop (éste tiene su propia utilidad al respecto), en otros administradores de ventanas u escritorios no ha sido probada.



Iniciamos Zufall  


Captura Zufall




Enlaces  


http://apfelboymchen.net/gnu/C/zufall/ >> La web de Zufall.



Foro Galería Blog


Actualizado el 31-07-2023

Utilidades de Escritorio - Zufall

Utilidades de Escritorio - XsettingsdUtilidades del Fondo del Escritorio