трансфер с гитхаба

This commit is contained in:
2026-05-15 04:05:54 +06:00
parent a7734dc03c
commit c850c1157b
14 changed files with 727 additions and 9 deletions
+252 -2
View File
@@ -1,3 +1,253 @@
# wallpaper_demon
# 🖼️ Wallpaper Daemon
Служба для автоматической смены обоев рабочего стола в зависимости от времени суток.
Служба для автоматической смены обоев рабочего стола в зависимости от времени суток.
## 📋 Возможности
- 🌅 **Автоматическая смена обоев** — установка разных обоев для разных периодов дня
- 🎨 **Смена темы GNOME** — автоматическое переключение светлой/тёмной темы
-**Гибкое расписание** — настройка времени смены обоев через JSON
- 🔧 **Systemd-служба** — интеграция с systemd для автоматического запуска
- 📝 **Логирование** — запись всех событий в лог
## 🚀 Требования
- Python 3.13+
- Linux с GNOME и systemd
- Установленные пакеты:
```bash
sudo apt install python3-pip python3-venv rsync
```
- Библиотеки Python (стандартные, установка не требуется):
```
subprocess, os, json, sys, signal, logging, datetime
```
## 📖 Использование
### Быстрый старт
**Однократная установка обоев:**
```bash
python wallpaper_handle.py
```
**Запуск демона (вручную):**
```bash
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` в корне проекта:
```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 # Ночные обои
```
## 🔧 Установка службы
### Автоматическая установка
```bash
sudo ./install_service.sh
```
Скрипт:
1. Копирует файлы в `~/.local/share/wallpaper-daemon`
2. Устанавливает службу в `/etc/systemd/user`
3. Включает linger для пользователя
> **Примечание:** После установки службы нужно включить и запустить её от имени пользователя:
> ```bash
> systemctl --user enable wallpaper-daemon.service
> systemctl --user start wallpaper-daemon.service
> ```
### Переустановка
Если служба была установлена неправильно (например, в `/root/.local/...`):
```bash
# Удалить старую службу
sudo ./uninstall_service.sh
# Установить заново
sudo ./install_service.sh
# Включить и запустить
systemctl --user enable wallpaper-daemon.service
systemctl --user start wallpaper-daemon.service
```
### Ручная установка
```bash
# Создать директорию
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
```
## 🛠️ Устранение неполадок
### Служба не запускается
**Проверьте статус:**
```bash
systemctl --user status wallpaper-daemon.service
```
**Посмотрите детальные логи:**
```bash
journalctl --user -u wallpaper-daemon.service -n 100 --no-pager
```
**Просмотр логов в реальном времени:**
```bash
journalctl --user -u wallpaper-daemon.service -f
```
### Обои не меняются
1. **Проверьте наличие файлов:**
```bash
ls -la ~/.local/share/wallpaper-daemon/wallpapers/
```
2. **Убедитесь, что GNOME активен:**
```bash
gsettings get org.gnome.desktop.background picture-uri
```
3. **Проверьте переменные окружения:**
```bash
echo $DISPLAY
echo $DBUS_SESSION_BUS_ADDRESS
```
### Ошибки в логах
| Ошибка | Решение |
|--------|---------|
| `Файл не найден` | Проверьте наличие обоев в папке `wallpapers/` |
| `gsettings: не удалось открыть` | Убедитесь, что GNOME запущен |
| `Permission denied` | Проверьте права доступа к файлам |
## 🎨 Добавление своих обоев
1. Поместите изображения в папку `wallpapers/`
2. Отредактируйте `settings.json`:
- Измените `file` на имя вашего файла
- Настройте `time` для нужного периода
- Выберите `theme` (`light` или `dark`)
3. Перезапустите службу:
```bash
systemctl --user restart wallpaper-daemon.service
```
---
**сделано: s13bby**