Как создавать динамические обои GNOME
GNOME (GNU Network Object Model Environment) - одна из самых популярных сред рабочего стола в Linux, и, вероятно, наиболее используемая, поскольку все основные дистрибутивы используют ее в качестве интерфейса по умолчанию. В версии 42 D.E. был представлен глобальный переключатель режима пользовательского интерфейса «светлый/темный», который уважается всеми приложениями и обоями GNOME: переключение глобального стиля на «темный», автоматически меняет тему GTK на Adwaita-dark, а все обои, поддерживающие эту функцию, на их «темные» версии. GNOME также поддерживает обои со сдвигом во времени.
В этом уроке мы узнаем, как создавать динамические обои со сдвигом во времени в соответствии с глобальным стилем GNOME.
В этом уроке вы узнаете:
- Как создать динамические обои, которые меняются в зависимости от глобального стиля пользовательского интерфейса GNOME
- Как создать обои со сдвигом во времени
Создание динамических обоев
Для этого урока я буду использовать два изображения, которые очень похожи: оба имеют синий фон с символом "тег" в центре, который на одном изображении белый, а на другом черный. Первый мы будем использовать, когда GNOME находится в "светлом" режиме, а второй, когда установлен "темный" режим:
Все, что нам нужно сделать, это поместить фотографии в подкаталог в ~/.local/share/backgrounds
, если мы хотим сделать динамические обои доступными только для нашего пользователя, или в /usr/share/backgrounds
, если мы хотим установить их для всей системы. В данном случае мы будем использовать первую стратегию. Чтобы отразить "тематику" изображений, мы создадим каталог с именем "tag", и скопируем два изображения, названные соответственно "tag-l.jpg" и "tag-d.jpg", внутри него:
mkdir -p ~/.local/share/backgrounds/tag
cp tag-l.jpg tag-d.jpg ~/.local/share/backgrounds/tag
После того, как изображения готовы, нам нужно создать XML-файл, в котором указано, как их следует использовать. XML-файл должен быть помещен в каталог ~/.local/share/gnome-background-properties
для установок на уровне пользователя или в каталог /usr/share/gnome-background-properties
для системных. Имя файла не важно, однако, чтобы быть последовательным, мы сохраняем его как tag.xml
. Вот его содержание:
<?xml version="1.0"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
<wallpaper deleted="false">
<name>Tag</name>
<filename>/home/doc/.local/share/backgrounds/tag/tag-l.jpg</filename>
<filename-dark>/home/doc/.local/share/backgrounds/tag/tag-d.jpg</filename-dark>
<options>zoom</options>
</wallpaper>
</wallpapers>
Файл может содержать несколько определений обоев. Каждый обои определяется тегами "<wallpaper></wallpaper> ". С помощью тега "<имя> " мы указываем название обоев, а с помощью тегов "<имяфайла> " и "<имяфайла-темный>" мы определяем абсолютные пути обоев, которые должны использоваться в "светлом" и "темном" режиме соответственно.
Наконец, с помощью тега "<options> " мы указываем, как должны быть отрисованы обои. Здесь «зум» — это то, что мы хотим использовать в большинстве случаев, поскольку он заполняет экран, увеличивая изображение, когда это необходимо, соблюдая его пропорции; Другие возможные значения: "нет", "обои", "центрированные", "масштабированные", "растянутые" и "протянутые".
К этому моменту мы должны быть готовы. Если мы откроем панель «внешний вид» в приложении настроек GNOME, мы должны увидеть, как наши динамические обои красиво отображаются в качестве опции:
Светлые/темные варианты обоев будут применены при изменении стиля глобального интерфейса GNOME:
Создание обоев со сдвигом во времени
Помимо того, что светлые/темные варианты наших обоев применяются в соответствии со стилем глобального пользовательского интерфейса GNOME, мы можем убедиться, что они будут смещены через определенный период времени. Было бы неплохо, например, чтобы светлый вариант обоев наклеивался днем, а темный – вечером. Для этого все, что нам нужно сделать, это создать еще один XML-файл и, для удобства, поместить его в тот же каталог, где находятся картинки, составляющие наши динамические обои. В этом случае мы сохраним его как ~/.local/share/backgrounds/tag/tag.xml
.
Внутри файла мы указываем, как и когда должны быть применены изображения. Вот пример:
<background>
<starttime>
<year>2023</year>
<month>1</month>
<day>1</day>
<hour>8</hour>
<minute>0</minute>
<second>0</second>
</starttime>
<static>
<file>/home/doc/.local/share/backgrounds/tag/tag-l.jpg</file>
<duration>36000</duration>
</static>
<transition type="overlay">
<duration>7200</duration>
<from>/home/doc/.local/share/backgrounds/tag/tag-l.jpg</from>
<to>/home/doc/.local/share/backgrounds/tag/tag-d.jpg</to>
</transition>
<static>
<file>/home/doc/.local/share/backgrounds/tag/tag-d.jpg</file>
<duration>36000</duration>
</static>
<transition type="overlay">
<duration>7200</duration>
<from>/home/doc/.local/share/backgrounds/tag/tag-d.jpg</from>
<to>/home/doc/.local/share/backgrounds/tag/tag.l.jpg</to>
</transition>
</background>
Данная конфигурация будет действовать с 01.01.2023 в 8:00. Первым изображением, которое будет применено в этот час, будет "светлый" вариант обоев "тег": он продержится 36000 секунд (10 часов). По истечении этого промежутка времени, в 18:00, начнется переход, который продлится 7200 секунд (2 часа), до 20:00. В 20:00 темный вариант изображения будет отображаться в течение 10 часов, то есть до 6:00. В 6:00 начнется еще один переход, который продлится 2 часа, до 8:00. Эта процедура будет повторяться каждый день.
И последнее, что нужно сделать: нам нужно сослаться на файл, который мы только что написали, в XML, который мы ранее создали в ~/.local/share/gnome-background-properties
, добавив еще одну секцию <wallpaper></wallpaper
:
<wallpaper deleted="false">
<name>Tag Time of Day</name>
<filename>/home/doc/.local/share/backgrounds/tag/tag.xml</filename>
<options>zoom</options>
</wallpaper>
В настройках выбора фона мы теперь должны заметить обои со сдвигом времени, которые можно определить по значку таймера в левом нижнем углу миниатюры:
Создание динамических обоев с помощью инструмента "Динамические обои"
Чтобы облегчить создание динамических обоев, мы можем использовать инструмент с открытым исходным кодом «Динамические обои», который доступен в виде флэтпака на Flathub. Инструмент позволяет нам выбирать "светлые" и "темные" изображения, из которых состоят наши обои, и создает для нас все необходимые файлы и каталоги:
Инструмент с похожим названием, "Dynamic Wallpaper Editor", также доступен на Flathub (и в виде пакета rpm в официальных репозиториях Fedora): его можно использовать для создания обоев со сдвигом во времени. Инструмент позволяет нам выбрать изображения, которые мы хотим использовать, и установить, сколько времени они должны продержаться, вместе с переходами:
Заключение
В этом уроке мы узнали, как создавать динамические обои со сдвигом во времени. Первые изменяются в соответствии с глобальным стилем пользовательского интерфейса GNOME, а изображения, составляющие второй, вместо этого смещаются через определенный период времени. Поведение динамических обоев определяется с помощью XML-файлов; мы увидели, как создать их с помощью простого текстового редактора или с помощью специальных графических инструментов, таких как «Dynamic Wallpaper» и «Dynamic Wallpaper Editor».