Render the ice as long videos and play them as wallpapers
render_wallpaper.py drives headless Firefox frame by frame (four at a time, resuming where it stopped), then ffmpeg. Thirty seconds at 30 fps is exactly one plasma cycle, so frame 900 meets frame 0 and the loop has no seam. plasma-plugin/dev.emil.video is a minimal Plasma 6 video wallpaper: one file per screen, filling the screen, looping. H.264 is encoded Baseline because Qt here decodes through openh264, which rejects High profile and leaves a frozen frame; a new source also has to be played explicitly. The #shot hash learned info=0 to hide the on-screen hint for renders.
This commit is contained in:
@@ -54,6 +54,40 @@ python3 build_plasma.py 10_ice_fish.frag 11_ice_over_fish.frag ice_fish.html
|
||||
`build_plasma.py` вставляет оба шейдера в шаблон страницы. После правки шейдеров страницу
|
||||
надо пересобрать — HTML сам по себе не обновляется.
|
||||
|
||||
## Обои
|
||||
|
||||
Готовые рендеры с рыбами — по файлу на монитор (в репозиторий не входят, они тяжёлые):
|
||||
|
||||
| файл | экран | размер |
|
||||
| --- | --- | --- |
|
||||
| `~/Videos/wallpapers/ice_fish_2560x1080.mp4` | DP-2, ультравайд | 110 МБ |
|
||||
| `~/Videos/wallpapers/ice_fish_2560x1440.mp4` | HDMI-A-1 | 112 МБ |
|
||||
|
||||
30 секунд, 30 fps, петля бесшовная: кадр 900 совпадает с кадром 0, потому что цикл
|
||||
плазмы ровно 30 с. Профиль H.264 — **Baseline**: Qt на Fedora декодирует через openh264,
|
||||
который отвергает High profile и молча оставляет замерший кадр.
|
||||
|
||||
Пересобрать:
|
||||
|
||||
```sh
|
||||
python3 render_wallpaper.py ice_fish.html ~/Videos/wallpapers/ice_fish_2560x1440.mp4 2560 1440 30 30
|
||||
```
|
||||
|
||||
Скрипт гонит кадры в headless Firefox по четыре за раз, кладёт их в `*.frames/`
|
||||
(можно удалить) и кодирует через `h264_nvenc`. Повторный запуск продолжает с места
|
||||
обрыва.
|
||||
|
||||
Обоями видео ставит плагин `dev.emil.video` (исходники — `plasma-plugin/dev.emil.video/`,
|
||||
установленная копия — `~/.local/share/plasma/wallpapers/dev.emil.video/`). Он проигрывает
|
||||
файл из своего конфига, заполняя экран, и зацикливает его:
|
||||
|
||||
```sh
|
||||
kpackagetool6 --type Wallpaper -i plasma-plugin/dev.emil.video
|
||||
```
|
||||
|
||||
Дальше — правый клик по рабочему столу → «Настроить рабочий стол…» → тип обоев
|
||||
Video Wallpaper → путь к файлу. Настройки у каждого экрана свои.
|
||||
|
||||
## Проверка
|
||||
|
||||
```sh
|
||||
@@ -73,5 +107,7 @@ python3 -m unittest test_ice
|
||||
и преломления льда надо переносить во все три файла.
|
||||
- `debug_fish.frag` + `debug_fish.html` — плоский рендер силуэтов рыб для отладки формы.
|
||||
- `renders/*.jpg` — картинки для этого README, к сборке отношения не имеют.
|
||||
- `render_wallpaper.py` — кадры + ffmpeg, длинное видео для обоев.
|
||||
- `plasma-plugin/dev.emil.video` — минимальный видео-обои плагин для Plasma 6.
|
||||
- `build.py` собирает `playground.html` со всеми `.frag` подряд, `render.py`/`shot.py` —
|
||||
старые вспомогательные скрипты.
|
||||
|
||||
Reference in New Issue
Block a user