Set your desktop or TV to a dynamic slideshow of beautiful images from your favorite Pexels collections. The same web app powers three frontends:
- macOS via Plash — hosts the live URL as a desktop background
- Windows via Lively — same idea on Windows
- Samsung Smart TV via a Tizen
.wgtbuilt from this repo — bundles the app locally, fetches photo metadata from GitHub Pages at runtime
To get started, follow these steps which are also displayed in the settings form of the application:
- Install Plash:
- Download and install Plash from the Mac App Store.
- Add Web App to Plash:
- In Plash preferences, under 'Websites', add this URL:
https://geert.github.io/pexel-wallpaper/
- In Plash preferences, under 'Websites', add this URL:
- Enable Browsing Mode:
- Ensure 'Browsing Mode' is enabled in Plash for the URL above. This allows you to interact with the settings form directly on your desktop.
- Install Lively:
- Download and install from the Microsoft Store
- Add Web App to Lively:
- In Lively, choose the + button, add this URL:
https://geert.github.io/pexel-wallpaper/
- In Lively, choose the + button, add this URL:
The TV build runs entirely from the bundled .wgt; it does not contact the Pexels API and shows no settings UI. Only the photo metadata JSON (pexels_photo_data.json) and the photo images themselves are fetched at runtime (allowed by the Samsung Store CSP).
- Enable Developer Mode on the TV (Apps screen →
12345on the remote, set the Host PC IP, reboot the TV). - Package
docs/with Tizen Studio's CLI:cd docs && tizen package -t wgt -s <profile> -- .(or build via the Tizen Studio GUI). - Install via
sdb connect <tv-ip>→tizen install -n "Pexel Wallpaper.wgt" -t <device>.
Full instructions — including the Jellyfin2Samsung sideload variant, the required explicit sdb connect before permit-install, the no-spaces-in-filename gotcha, and other troubleshooting — live in docs/DEPLOY-TIZEN.md.
Remote control:
| Button | Action |
|---|---|
| OK / Enter / Play | Toggle photo info overlay (bottom-right) |
| Right arrow | Next photo |
| Left arrow | Previous photo |
| Back | Exit app |
- Enter Pexels API Key:
- In the settings form (now visible on your desktop via Plash), enter your Pexels API key. You can get one from Pexels API.
- Provide Pexels Collection URL:
- Paste the URL of the Pexels collection you wish to use as your wallpaper source (e.g.,
https://www.pexels.com/collections/wallpapers-vmnecek/).
- Paste the URL of the Pexels collection you wish to use as your wallpaper source (e.g.,
- Start Slideshow:
- Click "Save & start".
If you prefer to run without an API key, the app falls back to a bundled docs/pexels_photo_data.json snapshot. That file is refreshed daily by a GitHub Actions workflow; you can also regenerate it locally (see below).
- Copy
.env.exampleto.envand add yourPEXELS_API_KEY. - Run
node --env-file=.env fetch_pexels_urls.mjs(ornpm run fetchwithPEXELS_API_KEYexported) to regeneratedocs/pexels_photo_data.jsonwith the latest items from the configured collection.
npm test– run the Jest unit tests.npm run lint– check JavaScript (ESLint + Prettier) styling.
Your Desktop will now cycle through images from your selected Pexels collection!
- Direct integration with Pexels collections via their API (Plash/Lively/browser).
- User-friendly setup through an interactive form (Plash/Lively/browser).
- Multi-language support (EN, NL, DE, FR).
- Bundled
pexels_photo_data.jsonsnapshot as a fallback when no API key is configured (refreshed daily by GitHub Actions). - Samsung TV build (Tizen
.wgt) that fetches photo metadata at runtime from GitHub Pages; no API key needed. - Cache-first start with background refresh on the TV: instant slideshow from the previous launch's data, then quietly updates to the latest.
- Keyboard / remote navigation (arrow keys + OK) works in any interactive frontend.
This project is licensed under the terms of the LICENSE file.
A special thank you to the creators of Plash for providing such a versatile tool for macOS customization.