main
🖼️ Wallpaper Daemon
Служба для автоматической смены обоев рабочего стола в зависимости от времени суток.
📋 Возможности
- 🌅 Автоматическая смена обоев — установка разных обоев для разных периодов дня
- 🎨 Смена темы GNOME — автоматическое переключение светлой/тёмной темы
- ⏰ Гибкое расписание — настройка времени смены обоев через JSON
- 🔧 Systemd-служба — интеграция с systemd для автоматического запуска
- 📝 Логирование — запись всех событий в лог
🚀 Требования
- Python 3.13+
- Linux с GNOME и systemd
- Установленные пакеты:
sudo apt install python3-pip python3-venv rsync
- Библиотеки Python (стандартные, установка не требуется):
subprocess, os, json, sys, signal, logging, datetime
📖 Использование
Быстрый старт
Однократная установка обоев:
python wallpaper_handle.py
Запуск демона (вручную):
python wallpaper_daemon.py
Управление через systemd
| Действие | Команда |
|---|---|
| Установка службы | sudo ./install_service.sh |
| Включение службы | systemctl --user enable wallpaper-daemon.service |
| Запуск службы | systemctl --user start wallpaper-daemon.service |
| Остановка службы | systemctl --user stop wallpaper-daemon.service |
| Проверка статуса | systemctl --user status wallpaper-daemon.service |
| Удаление службы | sudo ./uninstall_service.sh |
⏰ Расписание смены обоев
| Время суток | Период | Обои | Тема |
|---|---|---|---|
| 🌙 Ночь | 00:00 - 07:59 | night.jpg |
🌑 Тёмная |
| 🌅 Утро | 08:00 - 11:59 | morning.jpg |
☀️ Светлая |
| ☀️ День | 12:00 - 15:59 | day.jpg |
☀️ Светлая |
| 🌆 Вечер | 16:00 - 19:59 | evening.jpg |
☀️ Светлая |
| 🌃 Перед ночью | 20:00 - 23:59 | before_night.jpg |
🌑 Тёмная |
⚙️ Настройки
Файл settings.json в корне проекта:
{
"night": {
"time": ["0:0", "7:59"],
"theme": "dark",
"file": "night.jpg"
},
"morning": {
"time": ["8:0", "11:59"],
"theme": "light",
"file": "morning.jpg"
},
"day": {
"time": ["12:0", "15:59"],
"theme": "light",
"file": "day.jpg"
},
"evening": {
"time": ["16:0", "19:59"],
"theme": "light",
"file": "evening.jpg"
},
"before_night": {
"time": ["20:0", "23:59"],
"theme": "dark",
"file": "before_night.jpg"
}
}
Параметры
| Параметр | Описание |
|---|---|
time |
Период времени в формате ["часы:минуты", "часы:минуты"] |
theme |
Тема GNOME: light или dark |
file |
Имя файла обоев в папке wallpapers/ |
📂 Структура проекта
wallpaper-daemon/
├── wallpaper_daemon.py # Основной демон (фоновый режим)
├── wallpaper_handle.py # Однократная установка обоев
├── settings.json # Конфигурация расписания
├── install_service.sh # Скрипт установки systemd-службы
├── uninstall_service.sh # Скрипт удаления systemd-службы
├── wallpaper-daemon.service # Unit-файл systemd
├── README.md
├── LICENSE
├── .gitignore
└── wallpapers/
├── morning.jpg # Утренние обои
├── day.jpg # Дневные обои
├── evening.jpg # Вечерние обои
├── before_night.jpg # Обои перед ночью
└── night.jpg # Ночные обои
🔧 Установка службы
Автоматическая установка
sudo ./install_service.sh
Скрипт:
- Копирует файлы в
~/.local/share/wallpaper-daemon - Устанавливает службу в
/etc/systemd/user - Включает linger для пользователя
Примечание: После установки службы нужно включить и запустить её от имени пользователя:
systemctl --user enable wallpaper-daemon.service systemctl --user start wallpaper-daemon.service
Переустановка
Если служба была установлена неправильно (например, в /root/.local/...):
# Удалить старую службу
sudo ./uninstall_service.sh
# Установить заново
sudo ./install_service.sh
# Включить и запустить
systemctl --user enable wallpaper-daemon.service
systemctl --user start wallpaper-daemon.service
Ручная установка
# Создать директорию
mkdir -p ~/.local/share/wallpaper-daemon
# Скопировать файлы (без скриптов установки)
rsync -av --exclude='install_service.sh' --exclude='uninstall_service.sh' ./ ~/.local/share/wallpaper-daemon/
# Скопировать unit-файл
sudo cp wallpaper-daemon.service /etc/systemd/user/
# Перезагрузить демон
sudo systemctl daemon-reload
# Включить linger
loginctl enable-linger $USER
# Включить и запустить службу
systemctl --user enable wallpaper-daemon.service
systemctl --user start wallpaper-daemon.service
🛠️ Устранение неполадок
Служба не запускается
Проверьте статус:
systemctl --user status wallpaper-daemon.service
Посмотрите детальные логи:
journalctl --user -u wallpaper-daemon.service -n 100 --no-pager
Просмотр логов в реальном времени:
journalctl --user -u wallpaper-daemon.service -f
Обои не меняются
- Проверьте наличие файлов:
ls -la ~/.local/share/wallpaper-daemon/wallpapers/
- Убедитесь, что GNOME активен:
gsettings get org.gnome.desktop.background picture-uri
- Проверьте переменные окружения:
echo $DISPLAY
echo $DBUS_SESSION_BUS_ADDRESS
Ошибки в логах
| Ошибка | Решение |
|---|---|
Файл не найден |
Проверьте наличие обоев в папке wallpapers/ |
gsettings: не удалось открыть |
Убедитесь, что GNOME запущен |
Permission denied |
Проверьте права доступа к файлам |
🎨 Добавление своих обоев
- Поместите изображения в папку
wallpapers/ - Отредактируйте
settings.json:- Измените
fileна имя вашего файла - Настройте
timeдля нужного периода - Выберите
theme(lightилиdark)
- Измените
- Перезапустите службу:
systemctl --user restart wallpaper-daemon.service
сделано: s13bby
Languages
Python
74.5%
Shell
25.5%