xT 10.05.2011 21:57

Скрипты на bashСмена обоев в Gnome Shell (Gnome3)

После того как мой арчик обновил гном, отвалились все програмки и скрипты периодические меняющие обои на случайную картинку.

Гугление подсказало, что можно использовать команду
1
gsettings set org.gnome.desktop.background picture-uri "file:///путь/к/файлу/изображения"



Но есть одно но, эта штука отказалась работать через крон.
Кому всё еще интересно - велкам под кат : )



Чтобы заставить работать gsettings set из под крона, ему оказывается нужно сообщить D-Bus сессию и DISPLAY
Поэтому делаем такой костыль:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
!/bin/bash

# Определяем путь до папки, содержащей коллекцию обоев
WALLS="$HOME/WALLPAPERS"

# Получаем рандомный файл из указанной выше папки
PICTURE=`ls $WALLS | shuf -n 1`

# Получаем адрес D-Bus сессии юзера
user=`whoami`
pids=`pgrep -u $user gnome-session`
DBUS_SESSION_BUS_ADDR=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pids/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`

# Экспортируем адрес полученной D-Bus сессию и стандартный DISPLAY
export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDR
export DISPLAY=:0.0

# И наконец отправляем это всё на gsettings set
GSETTINGS_BACKEND=dconf gsettings set org.gnome.desktop.background picture-uri "file://$WALLS/$PICTURE"



Пихаем вызов скрипта в свой кронтаб с нужной периодичностью, и вуаля : )

Как всегда пишем предложения по сокращению пайпов и т.д. : )


Тэги: bash cron dbus GNOME 3 GNOME Shell wallpaper баш обои рандомно случайно
+ 1 -
Похожие Поделиться

K900 18.05.2011 16:33 #
sort -R | tail -n 1 == shuf -n 1
xT 18.05.2011 16:53 #
Отлично!
Заимплементил : )
sanaris 19.05.2011 08:42 #
А это разве не делается самим гномом? Я помню когда-то было такое
desktop-data-openSUSE-extra-gnome
This optional package contains nice dynamic wallpaper with openSUSE look

Там просто xml подредактировать было достаточно
sanaris 19.05.2011 10:18 #
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<background>
 <starttime>
 <year>2010</year>
 <month>5</month>
 <day>6</day>
 <hour>07</hour>
 <minute>00</minute>
 <second>00</second>
 </starttime>

<!-- This animation will start at 7 AM. -->

<!-- We start with sunrise at 7 AM. It will remain up for 1 hour. -->
<static>
<duration>3600.0</duration>
<file>/usr/share/backgrounds/IK/1-dawn.jpg</file>
</static>
</background>

с чем это работает? работает ли не в гноме?
xT 19.05.2011 12:39 #
в каком месте это всё?
sanaris 22.05.2011 07:42 #
файловое дерево
/usr/share/
/usr/share/backgrounds/
содержимое: собственно картины + xml по директориям
/usr/share/backgrounds/grass/
1-grass-sunrise.png
...
grass.xml
usr/share/gnome-background-properties
файлы вида
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
 <wallpaper deleted="false">

 <name>openSUSE Grass</name>
 <filename>/usr/share/backgrounds/grass/grass.xml</filename>
 <options>stretched</options>
 </wallpaper>
</wallpapers>


Основываясь на содержимом пакета:
http://software.opensuse.org/search?q=desktop-data-openSUSE-extra-gnome&baseproject;=ALL⟨=en&exclude;_debug=true
sanaris 22.05.2011 07:42 #
распаковывал desktop-data-openSUSE-extra-gnome-11.3-11.1.noarch.rpm
xT 22.05.2011 08:58 #
эта шляпа вообще для какого гнома, для второго или третьего? : )