Автоматическая смена обоев в MATE

Обсуждение проблем с использованием GNU/Linux и UNIX-подобных систем.
Аватара пользователя
holpa
Admin
Сообщения: 670
Зарегистрирован: 04 сен 2014, 14:00

Автоматическая смена обоев в MATE

Непрочитанное сообщение holpa » 23 ноя 2014, 11:35

Автоматическая смена обоев в MATE


Как-то не особо давно супруга попросила сделать так, чтоб при запуске системы на рабочем столе каждый раз были бы новые обои. У неё MATE стоит в качестве окружения, и справляется с этой задачей на "отлично". Я написал скрипт, а сегодня нечаянно взял и пришиб его. Хочу в этом посте решить две проблемы:
1.Сбекапить скрипт.
2.Поделиться скриптом с читателем, вдруг кому пригодится.



Настройки MATE представляют собой иерархическую структуру, которая закоренелому пользователю Windows будет напоминать Редактор реестра. Примечательно, что как и в случае с редактором реестра, для управления параметрами среды есть две утилиты - консольная и графическая: dconf работает в консоли, dconf-editor - графическая утилита. Ни дать, ни взять reg.exe и regedit.
Но довольно аналогий. Нас интересует раздел

Код: Выделить всё

/org/mate/desktop/background


В нем есть строковый параметр picture-file, в который записывается путь к фоновому рисунку. Воспользуемся этим, и напишем скрипт, который:
1.найдет в заданной папке случайный файл;
2.запишет его в указанный выше параметр при помощи dconf.

Результат:

Код: Выделить всё

#!/bin/sh
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
file=$(find ~/wallpapers -type f|shuf -n1)
dconf write /org/mate/desktop/background/picture-filename "'$file'"
IFS=$SAVEIFS


$IFS нужно потрогать, чтобы скрипт корректно работал с файлами с кучей пробелов в названии.
Сочетание find и shuf выдаёт нам в переменную $file случайный файл из /home/ваш логин/wallpapers.
Как по мне, довольно элегантное и простое решение.
Полученный скрипт надо сделать исполняемым (chmod +x) и добавить в автозагрузку. Ну или на cron повесить, чтобы обои менялись не только при перезагрузке.

Ответить