sábado, 18 de agosto de 2018

Como modificar la posición de nuestro wallpaper en el escritorio gnome de Ubuntu 18.04



Hola amigos del software libre.

Alguna vez habéis intentado centrar la imagen del fondo de escritorio en Ubuntu 18.04? Y no habéis encontrado ninguna opción gráfica.


Pues, es que no la hay. Así como en el escritorio Unity en Ubuntu 16.04 había posibilidad de centrar la imagen ensancharla y alguna opción mas, aquí en el escritorio gnome no existe esta posibilidad en la interfaz de configuración gráfica. Imagen de configuración del fondo de pantalla en Ubuntu 16.04:



Imagen de configuración del fondo de pantalla en Ubuntu 18.04:







Pero eso no significa que no exista un comando o función para realizarlo desde el terminal, que si las hay. Y son las siguientes:

gsettings set org.gnome.desktop.background picture-uri 'file:///home/usuario/Imágenes/imagen.png'

Si escribimos en un terminal el anterior comando insertaremos una imagen como fondo de escritorio. La imagen estará almacenada en el directorio Imágenes, pero si queremos podemos tenerlas almacenadas en otro directorio, entonces el comando será el siguiente:

gsettings set org.gnome.desktop.background picture-uri 'file:///home/usuario/otro_directorio/imagen.png'

Cabe destacar que las imágenes que nos aparecen de fondos de escritorio en Ubuntu se encuentran almacenadas en el directorio /usr/share/backgrounds/
Por si queremos almacenarlas todas juntas en el mismo directorio. Y entonces el comando para elegir una como fondo de escritorio sería el mismo pero cambiando por la dirección anterior:

gsettings set org.gnome.desktop.background picture-uri 'file:///usr/share/backgrounds/imagen.png'

Ahora viene cuando la imagen instalada como fondo de escritorio la queremos cambiar de posición, escribiremos lo siguiente:


gsettings set org.gnome.desktop.background picture-options 'none'

Con este comando deshabilitamos la imagen del fondo de escritorio que tengamos en ese momento. Se nos quedará el fondo de escritorio del color de fondo que tengamos habilitado, por defecto el negro. Este color también se puede cambiar, lo veremos mas tarde.

Con el anterior comando pero cambiando la palabra entre comillas simples por 'wallpaper':


gsettings set org.gnome.desktop.background picture-options 'wallpaper'

Se nos pondrá la imagen del fondo de escritorio repetida como un mosaico.

Y si cambiamos la palabra entrecomillada por 'centered':

gsettings set org.gnome.desktop.background picture-options 'centered'

Se nos centrará la imagen en el centro del escritorio.

Si la palabra entre comillas la cambiamos por 'scaled':

gsettings set org.gnome.desktop.background picture-options 'scaled'

Se nos escalará la imagen.

Si la cambiamos por 'stretched' se nos estrechará:

gsettings set org.gnome.desktop.background picture-options 'stretched'

Si la cambiamos por 'zoom'

gsettings set org.gnome.desktop.background picture-options 'zoom'

Nos hará un efecto zoom en aumento.

Si la cambiamos por 'spanned'

gsettings set org.gnome.desktop.background picture-options 'spanned'

Se nos espandirá.

Estas son las posibilidades para cambiar la ubicación o el tamaño de la imagen del fondo de escritorio. Pero aquí no terminan las opciones.

Os acordáis que anteriormente os he hablado de deshabilitar la imagen del fondo de escritorio y que por defecto queda de color negro? Pues ese color lo podemos cambiar por otro, el que sea, con la siguiente instrucción:

gsettings set org.gnome.desktop.background primary-color '#000000'

Con esta instrucción cambiamos el color del fondo de escritorio (COLOR PRIMARIO) al color negro #000000, (SIEMPRE QUE TENGAMOS DESHABILITADA LA IMAGEN DE FONDO), este es el código del color negro en hexadecimal. Para conseguir los códigos de los colores en hexadecimal, yo personalmente tengo instalado el editor fotográfico "gimp" y en él con la opción de cambio de color nos mostrará en la paleta de colores el código del tipo de color que queráis. imagen de gimp:


Y sinó en alguna web como por ejemplo esta.


Hemos hablado del color primario, pero también está el color secundario, que simplemente existe para hacer una combinación de degradado con el color primario.
Con la siguiente instrucción elegiremos un color secundario:

gsettings set org.gnome.desktop.background secondary-color '#FFFFFF'

El código #FFFFFF corresponde al color blanco.

Y no vamos a ver ningún cambio de color. En nuestro fondo de escritorio continuará estando el color primario. Pero una vez tecleada la siguiente instrucción se habilitará el color secundario:


gsettings set org.gnome.desktop.background color-shading-type 'horizontal'

Vamos a ver ya el cambio. Estamos dándole un degradado en sentido horizontal de los colores que tengamos establecidos como primario y secundario. En la siguiente imagen veréis el degradado en mi escritorio en sentido horizontal, donde mi color primario es un rojo del código #ff0000, el cuál se ubica en la parte izquierda del escritorio y el secundario es el negro con el código #000000, el cuál se ubica en la parte derecha del escritorio. Imagen de muestra:



Y con el siguiente comando cambiamos la dirección del degradado en sentido vertical, donde el color primario se ubica en la parte superior del escritorio y el color secundario se ubica en la parte inferior del mismo:

gsettings set org.gnome.desktop.background color-shading-type 'vertical'

Una imagen de muestra:



Evidentemente podemos combinar los degradados de los colores primario y secundario con una imagen de fondo de escritorio. Imagen de ejemplo:


Que nos hemos cansado del degradado y queremos volver a un solo color, pues entonces escribimos la siguiente instrucción:

gsettings set org.gnome.desktop.background color-shading-type 'solid'

Y nos volvemos solo al color primario:



He escrito un pequeño script en Bash para quien no quiera estar escribiendo instrucciones, se puede mejorar, ya lo haréis, pero así os librará de recordarlas y escribirlas:

#! /bin/bash

clear
linea="======================================="
usuario=$(whoami)
num=0

while [ $num -ne 6 ]; do
echo $linea
echo "Configuracion Fondo de Escritorio Gnome"
echo "     Bienvenido usuario: $usuario"
echo $linea

echo "1) Elegir la Imagen y el directorio donde se almacena la Imagen de escritorio: "
echo
echo "2) Elegir como se quiere posicionar la imagen en el escritorio:"
echo "   a) Ninguna Imagen (Quita la imagen)"
echo "   b) En mosaico"
echo "   c) Centrada"
echo "   d) Escalada"
echo "   e) Estirada"
echo "   f) Zoom"
echo "   g) Abarcada"
echo
echo "3) Elegir el color Primario (Debe quitarse la imagen del fondo de escritorio o centrarla)"
echo
# El color Primario queda en la parte superior cuando el degradado es vertical o en la parte izquierda cuando
# el degradado es horizontal
echo "4) Elegir el color Secundario para hacer un degradado con el color Primario"
# El color Secundario queda en la parte inferior cuando el degradado es vertical o en la parte derecha cuando
# el degradado es horizontal
echo
echo "5) Elegir el degradado de los colores Primario y Secundario."
echo
echo "6) Salir del configurador."
read num

if [ $num -eq 1 ]; then   # /usr/share/backgrounds/ es el directorio por defecto de los wallpapers
     echo "Escribe el nombre completo de la imagen que se quiere incorporar como fondo de escritorio con su extensión: "
     read imagen
     echo "Pulsa 1 si la imagen se encuentra en el directorio Imágenes"
     echo "Pulsa 2 si se encuentra en otro directorio"
     read num2
     if [ $num2 -eq 1 ]; then
    gsettings set org.gnome.desktop.background picture-uri file:///home/$usuario/Imágenes/$imagen
        echo "Imagen insertada como fondo de escritorio"
     else
        echo "Escribe el directorio completo donde se aloja la imagen (ejemplo: /home/usuario/Descargas): "
    read directorio
        gsettings set org.gnome.desktop.background picture-uri file://$directorio/$imagen
        echo "Imagen insertada como fondo de escritorio"
     fi
elif [ $num -eq 2 ]; then
     echo "2) Elegir como se quiere posicionar la imagen en el escritorio:"
     echo "   a) Ninguna Imagen (quita la imagen del fondo de escritorio"
     echo "   b) Imagen repetida abarcando todo el fondo de escritorio."
     echo "   c) centrada."
     echo "   d) Escalada."
     echo "   e) Estirada."
     echo "   f) Zoom."
     echo "   g) Abarcada."
     read num3
     if [ $num3 = "a" ]; then
    gsettings set org.gnome.desktop.background picture-options 'none'
    echo "Imagen quitada del fondo de escritorio."
     elif [ $num3 = "b" ]; then
    gsettings set org.gnome.desktop.background picture-options 'wallpaper'
    echo "Imagen insertada como fondo de escritorio repetida abarcando todo el escritorio."
     elif [ $num3 = "c" ]; then
        gsettings set org.gnome.desktop.background picture-options 'centered'
        echo "Imagen insertada como fondo de escritorio centrada."
     elif [ $num3 = "d" ]; then
        gsettings set org.gnome.desktop.background picture-options 'scaled'
        echo "Imagen insertada como fondo de escritorio escalada."
     elif [ $num3 = "e" ]; then
        gsettings set org.gnome.desktop.background picture-options 'stretched'
        echo "Imagen insertada como fondo de escritorio estirada."
     elif [ $num3 = "f" ]; then
        gsettings set org.gnome.desktop.background picture-options 'zoom'
        echo "Imagen insertada como fondo de escritorio con zoom."
     else [ $num3 = "g" ]
        gsettings set org.gnome.desktop.background picture-options 'spanned'
        echo "Imagen insertada como fondo de escritorio abarcada."
     fi
elif [ $num -eq 3 ]; then
     echo "Escriba un color en hexadecimal (ejemplo el color negro es #000000): "
     read primary
     gsettings set org.gnome.desktop.background primary-color $primary
     echo "Color principal cambiado."
elif [ $num -eq 4 ]; then
     echo "Escriba un color en hexadecimal (ejemplo el color blanco es #FFFFFF): "
     read secondary
     gsettings set org.gnome.desktop.background secondary-color $secondary
     echo "Color secundario cambiado."
elif [ $num -eq 5 ]; then
     echo "Elija una opción de degradado entre el color Primario y el color Secundario: "
     echo "a) Solido."
     echo "b) Vertical."
     echo "c) Horizontal."
     read degradado
     if [ $degradado = "a" ]; then
    gsettings set org.gnome.desktop.background color-shading-type "solid"
        echo "Color Solido Primario sin mezclar con el secundario."
     elif [ $degradado = "b" ]; then
        gsettings set org.gnome.desktop.background color-shading-type "vertical"
        echo "Color Primario y Secundario degradados verticalmente en pantalla"
     else [ $degradado = "c" ]
        gsettings set org.gnome.desktop.background color-shading-type "horizontal"
        echo "Color Primario y Secundario degradados horizontalmente en pantalla"
     fi
else [ $num -eq 6 ]
     exit
fi
done

También se puede cambiar la opacidad de la imagen de fondo de escritorio.
Con la siguiente instrucción:

gsettings set org.gnome.desktop.background picture-opacity <value>

Donde <value> va de 0 a 100.

De echo tengo que probarla mejor, porque no me ha dado el resultado esperado. No se si se encuentra deshabilitado y tengo que ir por otro lado para activarlo.
Si alguien ha conseguido cambiar la opacidad de la imagen puede escribirlo en los comentarios.

Haciendo un pequeño repaso a todo lo dicho anteriormente, para cambiar las imágenes del fondo del escritorio y su posición, además de agregar un color sólido y  un degradado del mismo utilizaremos una herramienta de configuración de línea de comandos llamada "gsettings".

La synopsis de dicha herramienta es la siguiente:

gsettings [COMANDO] [SCHEMA] [KEY] [Valores de la KEY]

En la este enlace veréis las diferentes opciones de dicha herramienta.

Nosotros siempre hemos utilizado el comando [set] que sirve para establecer o cambiar los valores de una [KEY] en un [SCHEMA].

Y el [SCHEMA] que hemos estado variando los valores de sus [KEY] en este artículo es [org.gnome.desktop.background] que es el fondo de escritorio, pero hay mas esquemas, si escribís la siguiente sentencia en el terminal de comandos:

gsettings list-schemas

Os listará todos los [SCHEMA].

Una de las [KEY] que hemos cambiado sus valores es por ejemplo [picture-options], la cuál tiene sus propios valores predefinidos.

Y los valores de la citada [KEY] son : "none", "wallpaper", "centered", "scaled", "stretched", "zoom", "spanned". cada [KEY] tiene sus valores predefinidos.

Si queréis ver todas las keys de un schema deberéis utilizar el comando "list-keys", la siguiente instrucción os listará todas las keys del schema que hemos utilizado en este artículo:

gsettings list-keys org.gnome.desktop.background

Si queréis ver todas las keys con sus valores actuales de un schema, deberéis utilizar el comando "list-recursively", la siguiente instrucción os devolverá todas las keys del esquema que hemos estado utilizando con sus valores actuales:

gsettings list-recursively org.gnome.desktop.background

Y si queréis restablecer los valores predefinidos de todas las key de un schema deberéis utilizar el comando "reset-recursively", un ejemplo:

gsettings reset-recursively org.gnome.desktop.background

Si solamente queréis restablecer el valor de una key de un schema, utilizaréis el comando "reset", un ejemplo:

gsettings reset org.gnome.desktop.background picture-uri

Con la anterior sentencia volveréis a tener el fondo de escritorio que venía por defecto.

Los demás comandos ya los iréis probando. Como podéis ver todas las configuraciones se pueden variar por línea de comandos si no existe una interfaz gráfica para ello.

Sin nada mas que añadir aquí lo dejo. Espero os sirva.
Saludos.


19 comentarios:

  1. Hola, gracias por compartir tanta línea de código. Me sirvió y mucho ya que no tenía opción de variar mí fondo desde la gráfica. Pero lo he conseguido desde la terminal.

    ResponderEliminar
  2. Gracias! Me sirvió muchisimo

    ResponderEliminar
  3. Buenas tardes, me interesa mucho su post, pero tengo problemas para ejecutarlo me da un error, es el siguiente
    (process:2599): dconf-WARNING **: failed to commit changes to dconf: La conexión esta cerrada

    ResponderEliminar
    Respuestas
    1. Hola, no se ejecutando que comando obtienes este error. Si pudieras examinar cual es el proceso con Id 2599 en tu sistema con el comando $ ps -ef podrías saber un poco mas. En todo caso realizando una búsqueda en google sobre el mensaje de error encuentro esto: https://unix.stackexchange.com/questions/182925/dconf-warning-failed-to-commit-changes-to-dconf-the-connection-is-closed. No se si es tu caso. Repito, deberías averiguar cual es el comando que se ejecuta con ese número de proceso que te da este error.

      Eliminar
    2. Muchas gracias por tu respuesta Belinux, fijate resolvi fue formateando mi maquina que estaba en debian 9 y la pase a una distro basada en ubuntu y el comando para cambiar el fondo se ejecuta sin problema, ahora tengo otro problema que a pesar de ejecutar el comando no me cambia el fondo de pantalla, sin embargo si lo cambio manual desde el dconf-editor si lo cambia. Sabras si sera algo en relacion a permisos en una imagen o editar algun archivo para que los cambios ocurran, porque reinicio el equipo y nada.

      Eliminar
    3. ¿Este es el comando que ejecutas?: gsettings set org.gnome.desktop.background picture-uri 'file:///home/usuario/otro_directorio/imagen.png'. Si ejecutas este comando para cambiar la imagen de fondo de escritorio debes saber que el escritorio a usar debe ser gnome. Si tu distro basada en Ubuntu tiene otro escritorio instalado evidentemente no funcionará porque necesitará otro SCHEMA. Tenlo en cuenta.

      Eliminar
    4. Este es el comando que estoy utilizando
      gsettings set org.gnome.desktop.background picture-uri 'file:///home/ctians/Escritorio/prueba.jpg'. Y tengo instalado ubuntu 18.04.2, supongo que es gnome porque en dconf-editor como esquema me aparece gnome. Realmente ando probando distros para mi trabajo que me piden que unifique y me estan pidiendo esta funcion pero con ninguna distro lo he logrado. el comando lo corro desde super usuario y no me da error, solo que cuando reviso a ver si cambio el fondo, aun se mantiene el mismo, le di permisos 777 a la imagen y volvi a corre el comando y nada. Y como te repetia anteriormente desde el dconf-editor que es grafico pero es supongo yo aplicar lo mismo pero graficamente si me funcionan los cambios, pero necesito el comando para elaborar un script y poder cambiar los fondos de las maquinas desde un servidor, muchas gracias por tu ayuda, no ninguna documentacion a respecto excepto tu valioso aporte que se que a mas de a uno ayudara

      Eliminar
    5. He comprobado que este comando se ejecuta una vez iniciada la sesión tanto siendo usuario administrador como usuario no administrador, pero nunca como usuario root. Estás cambiando una opción estética del escritorio de una cuenta de usuario en concreto. Estando en dicha cuenta de usuario, ya sea administrador o no, puedes ejecutarla sin errores y da el resultado esperado. Pero nunca como root, ni como usuario administrador con privilegios root momentáneos a través del comando sudo. Lo acabo de comprobar. Deberás ingeniártelas para abrir sesión en cada cuenta de usuario que quieras cambiar el fondo de escritorio. Saludos.

      Eliminar
    6. Belinux, efectivamente nunca se me ocurrio ejecutar el comando no siendo root, si me funciona al ejecutarlo desde un usuario en comun ahora, diseñe un pequeño script para poder ejecutar ese comando cada cierto tiempo, mi pregunta seria, ya se que no seria algo del post como tal, pero como podria escribir el script en el crontab para que se ejecute sin ser root, tomando en cuenta que trabajo bajo un ldap y determinar el usuario como tal que se loggue es complejo.
      * * * * * export DISPLAY=:0 && bash /opt/fondo.sh
      Este script funciona ejecutandolo desde el crontab del usuario, pero no funciona para los usuarios que no tienen otro nombre

      Eliminar
    7. Creo que he encontrado otra solución a tu problema. Olvídate del comando gsettings y crea y modifica archivos de configuración del fondo de escritorio para cada usuario. Mírate estos enlaces: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/desktop_migration_and_administration_guide/customize-desktop-backgrounds y también este: https://help.gnome.org/admin/system-admin-guide/stable/desktop-background.html.en y para el tema del crontab, a ver si puedes sacar algo de aquí: https://danilodellaquila.com/es/blog/como-cambiar-automaticamente-el-fondo-de-escritorio
      Espero te sirva de ayuda. Saludos.

      Eliminar
  4. utilizo dos monitores como puedo poner imagen individual?

    ResponderEliminar
    Respuestas
    1. No entiendo tu pregunta, la imagen del fondo de escritorio debe de aparecerte en cada monitor. ¿la quieres apaisada o continuada en los dos monitores?

      Eliminar
    2. Ok, entiendo que quieres poner una imagen de fondo de escritorio diferente en cada monitor. Realmente no es posible, pero se puede engañar al sistema fusionando las dos imágenes en una. Te doy el link de un compañero donde utiliza un programa para lograrlo: https://maslinux.es/como-establecer-diferentes-fondos-de-pantalla-para-cada-monitor-en-gnu-linux/
      Suerte.

      Eliminar
  5. Hola, quería preguntarte si puedo definir un usuario al comando que proporcionaste.
    Un saludo

    ResponderEliminar

Gracias por participar en este blog.