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

Entornos GráficosAplicaciones

Administradores de SesionesAdministradores de VentanasEscritoriosUtilidades de Escritorio

Utilidades de Escritorio - ConkyUtilidades de Escritorio - Fbpanel

Utilidades de Escritorio - CWallpaper




Utilidades de Escritorio - CWallpaper




Copyright

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



Sumario

Introducción
Preliminares
Instalación
Configuración
Iniciamos CWallpaper
Configurar el inicio de CWallpaper
Paquetes binarios
Enlaces




Introducción

Se puede decir de CWallpaper que es la versión GTK2+ de Nitrogen pero con las diferencias en la forma de gestionar los fondos de escritorio y en el modo de presentar las imágenes en la interfaz gráfica del programa. Si en Nitrogen podemos visualizar los fondos de forma directa en forma de miniaturas, sin necesidad de hacer clic en ninguna parte, en CWallpaper tenemos un cuadro de vista previa de imagen y al lado, un cuadro de selección cuyo contenido tendremos que haber creado previamente y guardado en el directorio de configuración del programa, y en el que tendremos que hacer clic en cualquiera de los elementos del mismo para poder previsualizar la imagen en cuestión.

También existen diferencias en el programa encargado de activar los fondos, en CWallpaper podemos elegir el setter (Esetroot, wmsetbg, hsetroot, etc) o el wrapper (fbsetbg o bsetbg) añadiendo o editando el archivo de configuración correspondiente. Si no usamos ningún archivo de configuración utiliza fbsetbg por defecto.

Como no podía ser de otra manera, este manual trata de la versión en español que pongo a disposición en descarga directa desde este mismo manual y en la que he añadido varios ejemplos de archivos de configuración con todos los setters ampliamente tratados en la documentación disponible en la web.



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) Comprobar que la variable de entorno 'XDG_DATA_DIRS' incluye el directorio /usr/local/share

Esta variable se aplica para que los archivos desktop ubicados en un directorio específico del sistema puedan ser leídos por los menús de entornos gráficos como XFce 4, o paneles como LXPanel o Fbpanel. Este aspecto es bastante delicado porque cada distribución es un mundo y lo mejor que podemos hacer es establecer una variable de entorno global que incluya todos los directorios predefinidos del sistema que incluyen archivos desktop, siempre y cuando el directorio /usr/local/share no esté incluido por defecto en la distribución de turno. Para saberlo basta abrir el menú de aplicaciones en cualquiera de los programas antes comentados y comprobar que aparece la entrada correspondiente a la aplicación tratada en este manual. Si no es así, en el mismo archivo /etc/profile.d/variables.sh, añadimos lo que está en rojo:

#!/bin/sh

export PATH=/usr/local/bin:$PATH

export XDG_DATA_DIRS=/usr/share:/usr/local/share:$HOME/.local/share:$XDG_DATA_DIRS

3) 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 CWallpaper 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)
* GTK+ - (2.24.33)

Aplicaciones

* Fbsetbg - (1.3.7) [1]
* Convert (ImageMagick) - (7.1.1-15) [2]

[1] Es el que utiliza por defecto, pero se pueden utilizar otros.
[2] Requerido para poder crear los iconos en formato PNG del archivo desktop.



Descarga

cwallpaper-0.3.2_es-ML.tar.xz

Firma Digital  Clave pública PGP

cwallpaper-0.3.2_es-ML_es-ML.tar.xz.asc

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 Jxvf cwallpaper-0.3.2_es-ML.tar.xz
$ cd cwallpaper-0.3.2_es-ML
$ ./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
# make install-strip
# for i in /usr/local/share/icons/hicolor ; do \
install -dm755 $i/{16x16,24x24,32x32,48x48,64x64,128x128,256x256}/apps ; \
install -m644 cwallpaper-256.png $i/256x256/apps/cwallpaper.png ; \
convert -resize 128 cwallpaper-256.png $i/128x128/apps/cwallpaper.png ; \
convert -resize 64 cwallpaper-256.png $i/64x64/apps/cwallpaper.png ; \
convert -resize 48 cwallpaper-256.png $i/48x48/apps/cwallpaper.png ; \
convert -resize 32 cwallpaper-256.png $i/32x32/apps/cwallpaper.png ; \
convert -resize 24 cwallpaper-256.png $i/24x24/apps/cwallpaper.png ; \
convert -resize 16 cwallpaper-256.png $i/16x16/apps/cwallpaper.png ; \
gtk-update-icon-cache -tf $i &> /dev/null ; \
done

Explicación de los comandos

for i in /usr/local/share/icons/hicolor..... : Crea e instala los iconos del programa, en sus diferentes medidas compatibles con el estándar de tamaño de icono de freedesktop.org, a partir de un icono personal que he incluido en el paquete de la versión en español del programa.

Creación del archivo cwallpaper.desktop

Para que CWallpaper sea detectado por los menús de entornos gráficos como XFce 4 o paneles como LXPanel o Fbpanel, creamos el archivo dekstop correspondiente con cat o con un editor de texto: 

# cat > cwallpaper.desktop << "EOF"
[Desktop Entry]
Name=CWallpaper
GenericName=Gestor de fondos
Comment=Un gestor de fondos de escritorio
Exec=cwallpaper
Icon=cwallpaper
Categories=Application;Utility
Type=Application
EOF


Luego, lo instalamos en /usr/local/share/applications. La desinstalación y respaldo de este archivo viene incluida en los scripts correspondientes proporcionados en este manual.

# install -dm755 /usr/local/share/applications
# install -m644 cwallpaper.desktop /usr/local/share/applications

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

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

Consumo inicial de CPU y RAM de CWallpaper

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

Directorio de configuración personal

~/.config/cwallpaper Es el directorio de configuración personal de CWallpaper en nuestro home
~/.config/cwallpaper/config Es el archivo de configuración de CWallpaper, no se instala por defecto. En /usr/local/share/cwallpaper se podrán encontrar varios ejemplos con diferentes setters que se podrán copiar a este directorio.
~/.config/cwallpaper/fondos Es el archivo que contiene la lista de los fondos a utilizar y lo tendremos que crear de forma manual o con el script que viene con el programa, y del que explico más abajo su funcionamiento.
~/.config/cwallpaper/ultimofondo Es el archivo que contiene el último fondo guardado y que lee CWallpaper cuando es utilizado como setter a la hora de colocar una imagen en el fondo al inicio de los diferentes administradores de ventanas y que también explico más abajo.

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.

cwallpaper-0.3.2_es-ML-scripts.tar.gz

$ su
# tar zxvf cwallpaper-0.3.2_es-ML-scripts.tar.gz
# cd cwallpaper-0.3.2_es-ML-scripts
# ./Desinstalar_cwallpaper-0.3.2_es-ML

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 cwallpaper-0.3.2_es-ML-scripts.tar.gz
# cd cwallpaper-0.3.2_es-ML-scripts
# ./Respaldar_cwallpaper-0.3.2_es-ML

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_cwallpaper-0.3.2_es-ML



Configuración de CWallpaper  Bloc de Notas

CWallpaper
utiliza por defecto el wrapper de Fluxbox, Fbsetbg como programa para colocar una imagen en el fondo del escritorio, siempre y cuando no utilicemos un archivo de configuración personalizado. En la versión en español del programa he añadido varios ejemplos de configuración con los siguientes setters: Esetroot, feh, hsetroot y wmsetbg y los wrappers de Fluxbox y Blackbox: Fbsetbg y Bsetbg. Sólo hay que copiar cualquiera de estos archivos de ejemplo desde su ubicación en /usr/local/share/cwallpaper al directorio de configuración personal en ~/.config/cwallpaper. Un ejemplo con Esetroot,

$ mkdir -p ~/.config/cwallpaper
$ cp /usr/local/share/cwallpaper/config_Esetroot ~/.config/cwallpaper/config

El formato de archivo es el siguiente:

programa: Esetroot
escalado: -f
centrado: -c
mosaico: -m
por defecto: e 

En la opción por defecto se utiliza siempre la primera inicial de las opciones de posición de arriba, e(scalado), c(entrado) y m(osaico). La opción de escalado es siempre manteniendo la proporción de aspecto de la imagen, sí se quiere utilizar otra opción habrá que modificar el parámetro -f (en el caso de Esetroot). En la sección de enlaces pueden encontrar toda la documentación existente en la web respecto a este tema.

Si queremos utilizar otro archivo de configuración que esté ubicado en otro lugar, o los archivos de ejemplo de forma directa hay que ejecutar el programa con la opción -c, un ejemplo:

$ cwallpaper -c /usr/local/share/cwallpaper/config_hsetroot

Crear la lista de imágenes

Lo podemos hacer de forma manual, pero mejor y más cómodo es utilizar el script que viene con el programa, un ejemplo:

$ sh /usr/local/share/cwallpaper/makeList.sh ~/Fotos

Se habrá creado un archivo con el nombre fondos en el directorio de configuración personal del programa y que contendrá una relación de todas las imágenes que tengo en el directorio ~/Fotos, siempre con el siguiente formato:

/home/jose/Fotos/1600_042.jpg

Siempre se define la ruta completa a la ubicación de la imagen, si volvemos a ejecutar el script con otro directorio, la relación del contenido de este último será borrado y reemplazado por el nuevo. Pero recuerdo que esto se puede hacer de forma manual o con otros programas que permitan listar el contenido de un directorio.

Para no tener que estar ejecutando el comando anterior, podemos crear un enlace simbólico del script a cualquier directorio /bin que tengamos en nuestro PATH.

$ su
# ln -s /usr/local/share/cwallpaper/makeList.sh /usr/bin/crearLista
# chmod +x /usr/bin/crearLista

Ahora para ejecutarlo sólo tendremos que hacerlo de la siguiente forma:

$ crearLista ~/Fotos

Añado a esta información un comando más elaborado mediante el uso de los comandos find y sort para aquellos usuarios a los que les gusta hacerlo de forma manual,

$ find ~/Fotos ~/Fondos /mnt/win_d/Fondos -mindepth 0 -follow \
\( -name "*.jpg" -o  -name "*.png" \)
| sort -d > \
~/.config/cwallpaper/fondos
 
Explicación de los comandos

~/Fotos ~/Fondos /mnt/win_d/Fondos : Definimos las rutas a los directorios de búsqueda de las imágenes, podemos añadir todas las que queramos, siempre que las separemos por espacios.
\( -name "*.jpg" -o  -name "*.png" \)
: Definimos el patrón a utilizar en la búsqueda de las imágenes, en este caso las de formato JPEG y PNG.
-mindepth 0 -follow : Busca en todos los subdirectorios que pueda tener cada directorio, incluyendo enlaces simbólicos a directorios.

sort -d
: Mediante el comando sort ordenamos la lista de imágenes en orden alfabético.
> ~/.config/cwallpaper/fondos : Y finalmente lo volcamos todo al archivo que contiene la lista de imágenes.

En este enlace podemos encontrar un formulario que nos puede servir de aprendizaje en el uso del comando find.



Iniciamos CWallpaper  

Sólo nos queda teclear en una terminal o en un lanzador el comando cwallpaper, y el programa aparecerá en la pantalla:


Captura CWallpaper - 1


Captura CWalpaper - 2



Configurar el inicio de CWallpaper

Al igual que podemos hacer con Nitrogen, CWallpaper también lo podemos utilizar como setter al inicio de los administradores de ventanas que vayamos a ejecutar y añadiendo el comando cwallpaper -l en los respectivos scripts de inicio de éstos. Algunos ejemplos con varios 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

cwallpaper -l
(sleep 2; bbkeys &) &
docker &

2) 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
cwallpaper -l 
#
# This sets a black background

#/usr/X11R6/bin/bsetroot -solid black

# This shows the fluxbox-splash-screen
# fbsetbg -C /usr/share/fluxbox/splash.jpg

3) IceWM


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

#!/bin/sh

cwallpaper -l
gai-bgswitcher &
bluecombo &
sleep 5; wmix &

4) 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>
        cwallpaper -l
    </StartupCommand>

5) 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 &
cwallpaper -l

6) 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 &
cwallpaper -l

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:

cwallpaper -l
exec startjwm

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:

cwallpaper -l
exec startjwm

Por razones obvias, CWallpaper no es compatible con aquellos administradores de ventanas que utilizan sus propios comandos de activación del fondo del escritorio impidiendo la ejecución de otro programa alternativo: E16, E17, AfterStep, etc.



Enlaces


http://cwallpaper.sourceforge.net >> La web de CWallpaper.

Utilidades de Escritorio - Nitrogen >> El manual de Nitrogen.

Utilidades del Fondo del Escritorio >> Imprescindible la lectura de este manual para conocer las opciones de ejecución de Esetroot, Hsetroot y Wmsetbg.

Instalar Fluxbox desde cero >> La información sobre Fbsetbg la podemos encontrar en este manual.

Visores Gráficos - Feh >> El manual de Feh.


Foro Galería Blog


Actualizado el 18-08-2023

Utilidades de Escritorio - CWallpaper

Utilidades de Escritorio - ConkyUtilidades de Escritorio - Fbpanel