Tip (XI): Como poner un fondo de pantalla por cada área de trabajo en BunsenLabs Hydrogen

Un script mas que interesante, directamente desde el forum BunsenLabs, que va a venir muy bien para todos aquellos que deseen utilizar un fondo diferente por cada área de trabajo o workspace, que tengamos definidos.

Tip (XI): Como poner un fondo de pantalla por cada area de trabajo en BunsenLanbs Hydrogen 

El detalle del script al completo sería el siguiente,

#!/bin/bash
#
# Script to enable different wallpapers on each workspace and monitor with Openbox
# Written by damo <damo@bunsenlabs.org> November 2015
#
# When first run, the script writes a configuration file template. The user can
# then edit this and add the image filepaths.
#
# To run while logged in, add "wallpapersd &" to your autostart
#
# REQUIRES: 'feh'
###############################################################################

WALLS_FILE="$HOME/.config/wallpapers.cfg"
FEH_CMD="feh --bg-fill" # edit this, or wallpapers.cfg, to use a different feh command

TXT="# Add filepaths to the images to be set as backgrounds on each workspace.
# You can have an image set for each monitor.
# Commands should be in the form:
#  $FEH_CMD 'path/to/image1(monitor 1)' 'path/to/image2(monitor 2)' etc
#
# From man feh:
# For the --bg-center and --bg-max options, you can use the --geometry option to
# specify an offset from one side of the screen instead of centering the image.
# Positive values will offset from the left/top side, negative values from the
# bottom/right.  +0 and -0 are both valid and distinct values.
#
# Note that all options except --bg-tile support Xinerama.  For instance,
# if you have multiple screens connected and use e.g.  --bg-center, feh will
# center or appropriately offset the image on each screen.  You may even specify 
# more than one file, in that case, the first file is set on screen 0, the second
# on screen 1, and so on.
#
# Use --no-xinerama to treat the whole X display as one screen when setting wallpapers.
#     --bg-center
#         Center the file on the background.  If it is too small, it will be
#         surrounded by a black border
#     --bg-fill
#         Like --bg-scale, but preserves aspect ratio by zooming the image until
#         it fits.  Either a horizontal or a vertical part of the image will be cut off
#     --bg-max
#         Like --bg-fill, but scale the image to the maximum size that fits the
#         screen with black borders on one side.
#     --bg-scale
#         Fit the file into the background without repeating it, cutting off stuff
#         or using borders.  But the aspect ratio is not preserved either
#     --bg-tile
#         Tile (repeat) the image in case it is too small for the screen
#
###########################################################################"

USAGE="USAGE:

  wallpapersd &   Runs the 'daemon' to set per-workspace backgrounds.
                  First run will open wallpapers.cfg, which has instructions and feh settings.
  
  --config        Open wallpapers.cfg for editing
  
  -h,--help       This help
"

if ! hash feh;then
    echo "feh is required to set the backgrounds. Install the feh package then re-run the script"
    exit 1
fi

case "$1" in
    -h|--help ) echo -e "\n$USAGE"
                exit
                ;;
    --config  ) if [[ -f $WALLS_FILE ]] &>/dev/null;then
                    echo -e "\n  Open wallpapers.cfg for editing?\n  (wallpapersd needs to be restarted afterwards) y|N"
                    read -srn1 RET
                    case $RET in
                        n|N ) exit;;
                        y|Y ) xdg-open "$WALLS_FILE" &  # open cfg file for editing
                              killall wallpapersd
                              exit
                              ;;
                        *   ) exit
                              ;;
                    esac
                else
                    echo -e "  No ~/.config/wallpapers.cfg found\n  Run wallpapersd first? Y|n?"
                    read -srn1 ANS
                    case $ANS in
                        n|N ) exit
                              ;;
                        *   ) wallpapersd 2>/dev/null & # run app to generate cfg template
                              xdg-open "$WALLS_FILE" &  # open cfg file for editing
                              ;;
                    esac
                fi
                ;;
esac

if [[ ! -f $WALLS_FILE ]];then
    echo -e "$TXT\n" > "$WALLS_FILE"
    NUM_DESKTOPS=$(xprop -root _NET_NUMBER_OF_DESKTOPS)
    NUM_DESKTOPS=${NUM_DESKTOPS:(-1)}
    for (( i=0; i < $NUM_DESKTOPS; i++ ));do         echo "[DESKTOP_$i] $FEH_CMD " >> "$WALLS_FILE"
    done
    xdg-open "$WALLS_FILE"  # open cfg file for editing. Script must be restarted afterwards.
    exit
else
    xprop -root -spy _NET_CURRENT_DESKTOP | (   #

que para la utilización del mismo nos es imprescindible la utilización del comando feh, especializado o especialmente indicado para establecer el fondo de nuestro escritorio,  a pesar de que por defecto para este uso se esta utilizando nitrogen en BunsenLabs, que entre las ventajas de que dispone, es su interfaz gráfica que facilita en gran medida su uso y selección del fondo deseado. Si bien al final se ha optado por la utilización del feh ya que aporta respecto a nitrogen la posibilidad de establecer varios fondos de acuerdo con los diferentes monitores que tengamos conectados.

Por tanto para su instalación.

$ sudo apt-get install feh

Una vez disponible, ya podemos trabajar con el script, para ello copiamos y pegamos, el código anterior en nuestro editor o si lo prefieres lo puedes también descargar. Lo salvamos con el nombre de  wallpapersd el cual finalmente lo movemos en alguna carpeta que este disponible por la variable de entorno PATH, dándole finalmente al script permisos de ejecución.

$ sudo mv wallpapersd /usr/bin
$ sudo chmod +x /usr/bin/wallpapersd

Llego el momento de su configuración, en el que indicaremos que fondo o wall va a utilizar por cada área de trabajo.

Help

También es un buen momento para revisar las áreas de trabajo que tengamos definidas, por defecto 2, por si deseamos añadir alguna otra.

Menu

Esto lo tenemos disponible desde el Administrador de Configuración de Openbox, accesible desde el menú -> Settings -> Openbox -> GUI Config Tool.

Administrador de configuracion

Seleccionamos la pestaña de Escritorios y aquí modificamos el campo relativo a Cantidad de escritorios.

Bien continuamos donde lo dejamos, el tema de la configuración, para ello procedemos con,

$ wallpapersd --config

Configuracion

nos indican que el fichero de configuración situado en ~/.config/wallpapers.cfg todavía no esta disponible, si deseamos crearlo o no. Pulsamos en Y para proceder con esto.

Configuracion1

Aparece nuestro editor por defecto, contiendo el fichero en su estado inicial, en el que se añaden tantas lineas como áreas de trabajo o workspace, tengamos definidas, representas por ejemplo con las lineas,

[DESKTOP_0] feh --bg-fill 
[DESKTOP_1] feh --bg-fill 
[DESKTOP_2] feh --bg-fill 
[DESKTOP_3] feh --bg-fill

a las que le falta tan solo añadir la ubicación de nuestro fondo, para ello indicamos carpeta e imagen, quedando por ejemplo finalmente como,

[DESKTOP_0] feh --bg-fill /home/yunn/Imágenes/wall/wall1.jpg /home/yunn/Imágenes/wall/wall2.jpg
[DESKTOP_1] feh --bg-fill /home/yunn/Imágenes/wall/wall3.jpg
[DESKTOP_2] feh --bg-fill /home/yunn/Imágenes/wall/wall14.jpg
[DESKTOP_3] feh --bg-fill /home/yunn/Imágenes/wall/wall15.jpg

habiendo definido en [DESKTOP_0], como sería el uso en el caso de que tengamos dos monitores.

Pues después de esto, tan solo nos faltaría añadir el script en nuestro fichero autostart de Openbox, para que se inicie automáticamente tras realizar login en nuestra sesión. Este fichero se encuentra situado en ~/.config/openbox/autostart

$ geany ~/.config//openbox/autostart

autostart

e insertamos las siguientes lineas,

#Script to enable different wallpapers on each workspace and monitor with Openbox
wallpapersd &

salvamos y ya para el próximo inicio de sesión tendremos habilitado esta nueva funcionalidad.

Para aquellos que como yo, tan solo dispongan un solo monitor :) . He modificado el script para después de utilizar feh se pueda utilizar nitrogen. Renombrando wallpapersd por wallpapersd-nitrogen, dejo el enlace en Descarga.

Su utilización es la misma que el anterior, si bien después de utilizar el nombre de wallpapersd deberemos de sustituir este por wallpapersd-nitrogen.

Pues eso es todo, que lo disfrutéis. ;)

 

Esta entrada fue publicada en articulo, CrunchBang, Debian, GNU/Linux, Openbox, Wallpaper y etiquetada , , , , , , , , , . Guarda el enlace permanente.

2 respuestas a Tip (XI): Como poner un fondo de pantalla por cada área de trabajo en BunsenLabs Hydrogen

  1. Jock Vault dijo:

    Hola amigo, una pregunta fuera de tema: ¿de casualidad sabes como cambiar el directorio de configuración local de ubicación? De ~/.config/openbox/ a ~/.openbox/custom1/ por ejemplo.
    El punto es que quiero tener varias sesiones (xsession) personalizadas cada una con archivos de configuración diferentes para openbox.

    • yunn dijo:

      Hola Jock, posiblemente no puedas cambiar el acceso a la configuración por defecto de ~/.config/openbox/ , pero lo que si podias hacer es, que al utilizar diferentes sesiones, antes de la entrada al escritorio, puedes mover y copiar las diferentes configuraciones para que al final utilizar la que deseas…algo que se pude hacer y bastante bien son Slim utilizando también ~/.xinitrc . Algo de esto lo puesde ver aqui

Deja un comentario