{"id":30005223,"url":"https://github.com/zzag/plasma5-wallpapers-dynamic","last_synced_at":"2025-12-26T20:58:47.373Z","repository":{"id":35502138,"uuid":"143762860","full_name":"zzag/plasma5-wallpapers-dynamic","owner":"zzag","description":"Dynamic wallpaper plugin for KDE Plasma","archived":false,"fork":false,"pushed_at":"2024-02-28T21:15:48.000Z","size":8863,"stargazers_count":317,"open_issues_count":16,"forks_count":17,"subscribers_count":8,"default_branch":"main","last_synced_at":"2024-04-26T20:36:48.935Z","etag":null,"topics":["dynamic","plasma","wallpaper"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zzag.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSES/BSD-3-Clause.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-08-06T17:45:16.000Z","updated_at":"2024-04-26T11:27:55.000Z","dependencies_parsed_at":"2024-02-28T22:29:48.076Z","dependency_job_id":"e2a82f8d-3bc5-49b9-976b-388ea64d6d59","html_url":"https://github.com/zzag/plasma5-wallpapers-dynamic","commit_stats":null,"previous_names":[],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/zzag/plasma5-wallpapers-dynamic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzag%2Fplasma5-wallpapers-dynamic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzag%2Fplasma5-wallpapers-dynamic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzag%2Fplasma5-wallpapers-dynamic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzag%2Fplasma5-wallpapers-dynamic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zzag","download_url":"https://codeload.github.com/zzag/plasma5-wallpapers-dynamic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zzag%2Fplasma5-wallpapers-dynamic/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268859123,"owners_count":24318874,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-05T02:00:12.334Z","response_time":2576,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dynamic","plasma","wallpaper"],"created_at":"2025-08-05T08:01:25.793Z","updated_at":"2025-12-26T20:58:47.327Z","avatar_url":"https://github.com/zzag.png","language":"C++","funding_links":[],"categories":["Customization"],"sub_categories":["Plasma desktop"],"readme":"\u003c!--\nSPDX-FileCopyrightText: none\n\nSPDX-License-Identifier: CC0-1.0\n--\u003e\n\n# Dynamic Wallpaper Engine\n\nA wallpaper plugin for KDE Plasma that continuously updates the desktop background\nbased on the current time in your location.\n\n\n## Additional Wallpapers\n\nMore dynamic wallpapers can be found at https://github.com/karmanyaahm/awesome-plasma5-dynamic-wallpapers.\n\n\n## Installation\n\n#### Arch Linux\n\n```\nyay -S plasma5-wallpapers-dynamic\n```\n\n#### Fedora\n\n```\nsudo dnf install plasma-wallpapers-dynamic\n```\n\nIn order to use the dynamic wallpaper builder tool, install `plasma-wallpapers-dynamic-builder` package.\n\n#### Ubuntu 20.10\n\n```\nsudo apt install plasma-wallpaper-dynamic\n```\n\n\n## Building From Git\n\n**Note**: master branch targets Plasma 6. If you use Plasma 5, check the [latest release](https://github.com/zzag/plasma5-wallpapers-dynamic/releases/latest).\n\nIn order to build this wallpaper plugin from source code, you need to install a\ncouple of prerequisites\n\nArch Linux:\n\n```sh\nsudo pacman -S cmake extra-cmake-modules git plasma-framework qt5-base qt5-declarative \\\n    qt5-location libexif libavif\n```\n\nFedora:\n\n```sh\nsudo dnf install cmake extra-cmake-modules git kf5-kpackage-devel kf5-plasma-devel \\\n    kf5-ki18n-devel qt5-qtbase-devel qt5-qtdeclarative-devel qt5-qtlocation-devel \\\n    libexif-devel libavif-devel qt5-qtbase-private-devel\n```\n\nUbuntu:\n\n```sh\nsudo apt install cmake extra-cmake-modules git libkf5package-dev libkf5plasma-dev \\\n    libkf5i18n-dev qtbase5-dev qtdeclarative5-dev qtpositioning5-dev gettext \\\n    qml-module-qtpositioning libexif-dev libavif-dev build-essential qtdeclarative5-private-dev \\\n    qtbase5-private-dev\n```\n\nOnce all prerequisites are installed, you need to grab the source code\n\n```sh\ngit clone https://github.com/zzag/plasma5-wallpapers-dynamic.git\ncd plasma5-wallpapers-dynamic\n```\n\nConfigure the build\n\n```sh\nmkdir build \u0026\u0026 cd build\ncmake .. -DCMAKE_BUILD_TYPE=Release \\\n    -DCMAKE_INSTALL_PREFIX=/usr \\\n    -DCMAKE_INSTALL_LIBDIR=lib \\\n    -DBUILD_TESTING=OFF\n```\n\nNow trigger the build by running the following command\n\n```sh\nmake\n```\n\nTo install run\n\n```sh\nsudo make install\n```\n\n\n## How to Use It\n\nRight-click a blank area of the desktop and choose \"Configure Desktop...\", select\n\"Dynamic\" wallpaper type and click the Apply button.\n\n\n## How to Create a Dynamic Wallpaper\n\nThe `kdynamicwallpaperbuilder` command line tool is used to create dynamic wallpapers. As input,\nit takes a manifest json file describing the wallpaper and produces the wallpaper\n\n```sh\nkdynamicwallpaperbuilder path/to/manifest.json --output wallpaper.avif\n```\n\nThis engine supports several types of dynamic wallpapers - _solar_ and _day-night_.\n\n### How to Create a Solar Dynamic Wallpaper\n\nWith a solar dynamic wallpaper, the engine will try to keep the images in sync with the Sun\nposition at your location.\n\n\u003ccenter\u003e\n    \u003cimg src=\"data/solar.png\"/\u003e\n\u003c/center\u003e\n\nThe manifest file looks as follows\n\n```json\n{\n    \"Type\": \"solar\",\n    \"Meta\": [\n        {\n            \"SolarAzimuth\": \"*\",\n            \"SolarElevation\": \"*\",\n            \"CrossFade\": true,\n            \"Time\": \"*\",\n            \"FileName\": \"0.png\"\n        }, {\n            \"SolarAzimuth\": 0,\n            \"SolarElevation\": -90,\n            \"CrossFade\": true,\n            \"Time\": \"00:00\",\n            \"FileName\": \"1.png\"\n        }, {\n            \"SolarAzimuth\": 90,\n            \"SolarElevation\": 0,\n            \"CrossFade\": true,\n            \"Time\": \"06:00\",\n            \"FileName\": \"2.png\"\n        }, {\n            \"SolarAzimuth\": 180,\n            \"SolarElevation\": 90,\n            \"CrossFade\": true,\n            \"Time\": \"12:00\",\n            \"FileName\": \"3.png\"\n        }\n    ]\n}\n```\n\nThe `SolarAzimuth` field and the `SolarElevation` field specify the position of the Sun when the\nassociated picture was taken. The `Time` field specifies the time, which is in 24-hour format, when\nthe picture was taken. If the user is not located near the North or the South Pole, the dynamic\nwallpaper engine will try to show images based on the current position of the Sun; otherwise it will\nfallback to using time metadata.\n\nOnly the `Time` field is required, the position of the Sun is optional.\n\nThe `CrossFade` field indicates whether the current image can be blended with the next one. The\ncross-fading is used to make transitions between images smooth. By default, the `CrossFade` field is\nset to `true`. Last, but not least, the `FileName` field specifies the file path of the image\nrelative to the manifest json file.\n\nNow that you have prepared all images and a manifest file, it's time pull out big guns. Run the\nfollowing command\n\n```sh\nkdynamicwallpaperbuilder path/to/manifest.json\n```\n\nIf the command succeeds, you will see a new file in the current working directory `wallpaper.avif`,\nwhich can be used as a dynamic wallpaper.\n\nNote that encoding the dynamic wallpaper may take a lot of memory (AVIF encoders are very memory\nhungry) and time!\n\n\n#### Computing the position of the Sun based on GPS image metadata\n\n`SolarAzimuth`, `SolarElevation`, and `Time` fields can have a special value of `*`. In which case,\n`kdynamicwallpaperbuilder` will use the Exif metadata in the image to fill them. An image must\ncontain the following GPS [EXIF tags](https://exiftool.org/TagNames/GPS.html) to compute the position\nof the Sun:\n\n- `GPSLatitude` and `GPSLatitudeRef`\n- `GPSLongitude` and `GPSLongitudeRef`\n- `GPSTimeStamp` and `GPSDateStamp`\n\nThe calculated position of the Sun can be viewed by passing `--verbose` to the `kdynamicwallpaperbuilder` command.\n\n### How to Create a Day/Night Dynamic Wallpaper\n\nA day/night dynamic wallpaper consists of only two images - one for the day, and one for the night.\nThe engine will automagically figure out which one to use based on the current time or the Sun\nposition at your location.\n\nThe manifest file for a day/night wallpaper looks as follows\n\n```sh\n{\n    \"Type\": \"day-night\",\n    \"Meta\": [\n        {\n            \"TimeOfDay\": \"day\",\n            \"FileName\": \"day.png\"\n        }, {\n            \"TimeOfDay\": \"night\",\n            \"FileName\": \"night.png\"\n        }\n    ]\n}\n```\n\n\n## How to Use Dynamic Wallpapers for macOS\n\nSince dynamic wallpapers for macOS and this plugin are incompatible, you need to use a script to\nconvert dynamic wallpapers.\n\n```sh\ncurl -sLO https://raw.githubusercontent.com/zzag/plasma5-wallpapers-dynamic-extras/master/dynamicwallpaperconverter\nchmod +x dynamicwallpaperconverter\n```\n\nOnce you've downloaded the dynamicwallpaperconverter script, you can start converting wallpapers\n\n```sh\n./dynamicwallpaperconverter --crossfade file.heic\n```\n\nAfter the command above has finished its execution, you should see a file in the current working\ndirectory named `wallpaper.avif`, which can be fed into this plugin.\n\nIf it takes too long to encode the wallpaper as an avif file, you can change the encoding\nspeed. Note that the encoding speed affects the final file size!\n\n```sh\n./dynamicwallpaperconverter --speed 5 --crossfade file.heic\n```\n\nFor more details, check the output of `./dynamicwallpaperconverter --help`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzag%2Fplasma5-wallpapers-dynamic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzzag%2Fplasma5-wallpapers-dynamic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzzag%2Fplasma5-wallpapers-dynamic/lists"}