Shell скрипт смены обоев рабочего стола - PullRequest
11 голосов
/ 05 апреля 2011

Не могли бы вы написать самый простой из возможных сценариев оболочки, который будет менять обои рабочего стола (в Ubuntu) через равные промежутки времени (например, 1 минута).

Обои будут сохраняться в определенном каталоге (например, $ HOME / wallpapers),Мне нужна только базовая функциональность.

1) выберите случайные обои из $HOME/wallpapers
2) установите их в качестве обоев на рабочем столе
3) установите cron для запуска скрипта каждую минуту (не является частьювопрос).

Ответы [ 6 ]

9 голосов
/ 05 апреля 2011
#!/bin/bash
wallpaperdir='$HOME/wallpaper'

files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`

gconftool-2 -t str --set /desktop/gnome/background/picture_filename "$randompic"

Сохраните этот скрипт и отредактируйте его с помощью команды "crontab -e" (он запускает редактор, в который вы помещаете эту строку в конец файла):

*/1     *     *     *     *         /bin/bash /path/to/script.sh

редактировать: я предположил, что вы используете гном. Если нет, вам нужно отредактировать последнюю строку, потому что в моем примере используется Gnome Conftool. ;)

Чтобы изменить фон в XFCE, вы должны изменить строку с gconftool-2 на:

echo -e “# xfce backdrop list\n$randompic”>$HOME/.config/xfce4/desktop/backdrops.list    
killall -USR1 xfdesktop
2 голосов
/ 26 декабря 2012

Это только мой подход к этому вопросу. Я не утверждаю, что это идеальный вариант.

WALLS_PATH=/path/to/images
cd $WALLS_PATH

while [ 1 ]; do
    for NEW_WALL in "$WALLS_PATH"/*; do
        gsettings set org.gnome.desktop.background picture-uri "file://${NEW_WALL}"
        sleep 1800
    done
done
2 голосов
/ 21 августа 2012

Я знаю, что этот ответ немного запоздал, но, поскольку он может помочь некоторым людям, я публикую его.

Из кода septi плюс некоторые модификации, вот мое решение:

#!/bin/bash
wallpaperdir="$HOME/wallpaper"

files=($wallpaperdir/*)
randompic=`printf "%s\n" "${files[RANDOM % ${#files[@]}]}"`

echo -e "# xfce backdrop list\n$randompic">$HOME/.config/xfce4/desktop/backdrop.list
xfdesktop --reload

Одинарные кавычки должны быть заменены двойными кавычками, чтобы компьютер правильно интерпретировал часть $ HOME.Кроме того, файл, который вы хотите редактировать, это background.list, а не backdrops.list.И, наконец, я считаю, что использование killall в этом случае является излишним, поскольку вы можете просто перезагрузить xfdesktop.

Я протестировал его на своем компьютере (Linux Mint Debian Edition), и, похоже, он отлично работает.

Надеюсь, это поможет.=)

EDIT: я забыл упомянуть, что вы должны добавить DISPLAY =: 0.0 перед вашей командой, в crontab.Это дает

*/1 * * * * DISPLAY=:0.0 wallpaper.sh
0 голосов
/ 12 августа 2014

Это сработало для меня в Gnome:

#!/bin/bash

DIR="/home/user/Pictures/wallpapers"
PIC=$(find $DIR -type f -maxdepth 1 | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"
0 голосов
/ 29 мая 2014

Для gnome3 вам нужно использовать gsettings вместо gconftool.

Но если вы собираетесь выполнить скрипт через cron, он не будет работать.

Я перепробовал много скриптов .sh, но у меня никто не работает.

В конце я исправил это, используя этот скрипт на python, который загружает случайные обои из папки:

#!/usr/bin/env python
#coding: utf8 

import os,random
setup = "/path_to_folder/" + random.choice(os.listdir("/path_to_folder/"))
os.system("DISPLAY=:0 GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri  'file://%s'" %(setup))

Надеюсь, это поможет кому-то с той же проблемой!

0 голосов
/ 06 апреля 2012

Попробуйте это в более новой версии Ubuntus: gsettings set org.gnome.desktop.background picture-uri file:///path/to/img.jpg (совет от здесь )

...