web-dev-qa-db-fra.com

Changer le fond d'écran dans bash

Je voulais faire un script bash qui prend une image aléatoire d'un dossier et la définit comme arrière-plan du bureau. J'ai compris l'algorithme (ce n'est pas difficile) mais je ne trouve pas de commande qui changerait l'image d'arrière-plan si vous lui donniez le chemin d'accès à l'image.

J'ai trouvé gconftool pour bash 2. ~ et gsettings pour bash 3. ~, mais j'ai GNU bash, version 4.3.42 (1) - disponible sur Ubuntu 16.04 LTS et ceux-ci ne fonctionnent pas.

4
someoneb100

En supposant que vous utilisez Ubuntu 16.04 standard avec Unity, vous pouvez utiliser la commande suivante pour définir le papier peint:

gsettings set org.gnome.desktop.background picture-uri "file:///home/username/path/to/image.jpg"

Vous devriez également regarder Variety wallpaper changer - il fait la même chose que ce que vous voulez faire avec un script Shell, avec beaucoup des fonctionnalités et des options.

7
JonasCz

Je l'ai fait comme ça:

targetDir="/home/username/Photos"


function get_next_photo() {
    # Returns a random file form targetdir
    files=( "$targetDir"/* )
    echo "${files[RANDOM % ${#files[@]}]}"
}

function set_background() {
    # Takes an absolute file path as argument. Need * for spaces in path
    bg="$*"
    echo "Setting background to $bg"
    gsettings set org.gnome.desktop.background picture-uri "file://$bg"
}


background=$(get_next_photo)
echo "Next background is $background"
set_background $background

Ajoutez ensuite un lanceur rapide pour votre script au dock, et vous pourrez changer votre fond d’écran en un clic.

0
CodeKid