Immich-Bildschirmschoner für Windows
Erstellt:
Aktualisiert:
Kategorien: Projekte
Autor: Tobias Schottstädt
Der Immich Screensaver ist ein Windows-Bildschirmschoner, der die Fotos direkt vom eigenen Immich-Server holt – mit echter Multi-Monitor-Unterstützung: Jeder ausgewählte Bildschirm bekommt ein eigenes Vollbildfenster und zeigt ein anderes Foto, statt ein einzelnes Bild über den ganzen Desktop zu strecken. Albumauswahl, Zufallsreihenfolge, Crossfade und eine Uhr-Einblendung stellen Sie über eine eigene Einstellungsseite ein. Geschrieben ist das Programm in Lazarus 4 / Free Pascal 3.2.2, der Quellcode steht unter MIT-Lizenz auf GitHub.
Warum ein eigener Bildschirmschoner?
Immich ist inzwischen die naheliegende Antwort auf die Frage, wie man seine Fotosammlung selbst hostet, statt sie einem Cloud-Anbieter zu überlassen. Für Windows bringt Immich aber keinen Bildschirmschoner mit – und der Bordmittel-Bildschirmschoner von Windows kennt nur lokale Ordner, keine API. Wer seine Bibliothek auf dem eigenen Server liegen hat, müsste sie also erst doppelt auf den Rechner spiegeln.
Dazu kommt das Multi-Monitor-Verhalten: Windows behandelt mehrere Bildschirme beim Bildschirmschoner wie eine einzige große Fläche. Bei zwei oder drei Monitoren landet dann ein Foto quer über alle Displays, mit den Rahmen mitten im Motiv. Genau diese zwei Punkte löst der Immich Screensaver.
Was der Bildschirmschoner kann
Mehrere Monitore: jeder ausgewählte Bildschirm zeigt sein eigenes Foto in einem eigenen Vollbildfenster
Albumauswahl: die Alben werden direkt aus Immich geladen, Sie wählen eine beliebige Kombination – oder nichts, dann läuft die komplette Bibliothek
Zufällig oder der Reihe nach: beide Reihenfolgen stehen zur Wahl
Anzeigemodi: Füllen (beschneiden), Einpassen (Letterbox) oder Strecken
Crossfade: weiche Überblendung zwischen den Bildern, die Dauer ist einstellbar
Uhr und Datum: optionale Einblendung, platzierbar in jeder der vier Ecken
Flüssige Wiedergabe: die Bilder werden in einem Hintergrund-Thread vorgeladen, das Netzwerk blockiert die Animation also nicht
Pro Benutzer gespeichert: die Einstellungen liegen unter
%APPDATA%\ImmichScreensaver\
Voraussetzungen
Windows in der 64-Bit-Variante (x86_64)
eine erreichbare Immich-Instanz und ein API-Key – den erzeugen Sie in Immich unter Account Settings → API Keys
die beiden OpenSSL-DLLs
libssl-1_1-x64.dllundlibcrypto-1_1-x64.dllneben der.scr-Datei, damit HTTPS funktioniert – beide liegen im Repository bereits bei
Installation
Den Quellcode holen Sie sich per Git:
git clone https://github.com/xchimx/ImmichScreensaver.gitDanach sind es drei Schritte:
ImmichScreensaver.scrherunterladen oder selbst bauen und zusammen mit beiden DLLs in einen dauerhaften Ordner legen, zum BeispielC:\Tools\ImmichScreensaver\Rechtsklick auf die
.scr-Datei → Installieren, alternativ über Einstellungen → Personalisierung → Sperrbildschirm → Bildschirmschoner auswählendie Einstellungen öffnen und Server-URL sowie API-Key eintragen
Ein Hinweis, falls Sie die .scr nach C:\Windows\System32\ kopieren: Dann müssen die beiden DLLs dort ebenfalls auffindbar sein – oder irgendwo im PATH liegen.
Einstellungen
Die Einstellungsseite erreichen Sie auf drei Wegen: über den Einstellungen-Knopf im Windows-Bildschirmschoner-Dialog, per Rechtsklick auf die .scr-Datei → Konfigurieren, oder direkt von der Kommandozeile:
ImmichScreensaver.scr /cEinstellbar sind Server-URL, API-Key (mit einem Knopf zum Testen der Verbindung), Intervall, Zufallsreihenfolge, Anzeigemodus, volle Auflösung, Crossfade samt Dauer, Uhr und Datum samt Position sowie die Mehrfachauswahl für Alben und Monitore. Bei beiden Mehrfachauswahlen gilt: nichts angehakt bedeutet alles – die ganze Bibliothek beziehungsweise alle Monitore.
Kommandozeilenparameter
/s– startet den Bildschirmschoner im Vollbild/c– öffnet die Einstellungsseitekein Parameter – öffnet ebenfalls die Einstellungsseite, denn Windows' Verb „Konfigurieren“ übergibt keine Argumente
/p– Vorschau, wird nicht unterstützt und beendet sich sofort
Zum Testen des Vollbildmodus starten Sie also mit /s. Beendet wird der Bildschirmschoner durch jede Mausbewegung, jeden Klick und jeden Tastendruck – mit einer kurzen Schonfrist am Anfang, damit er sich nicht sofort selbst schließt.
Wo die Konfiguration liegt
Die Einstellungen landen in einer INI-Datei unter %APPDATA%\ImmichScreensaver\immich_config.ini. Eine Vorlage liegt als immich_config.ini.example im Repository. Wichtig für alle, die den Code forken: In der echten immich_config.ini steht Ihr API-Key. Die Datei ist per .gitignore ausgeschlossen und sollte dort auch bleiben.
Warum Lazarus und Free Pascal?
Ein Windows-Bildschirmschoner ist nichts anderes als eine ausführbare Datei mit der Endung .scr, die auf ein paar Kommandozeilenparameter reagiert. Free Pascal übersetzt das in eine native Win64-Binary, die ohne Framework-Runtime läuft – neben der .scr braucht es nur die beiden OpenSSL-DLLs für die HTTPS-Verbindung zum Immich-Server. Für ein Programm, das im Hintergrund auf dem Rechner liegt und jederzeit anspringen muss, ist das eine angenehm schlanke Grundlage.
Gebaut wird mit Lazarus 4 beziehungsweise FPC 3.2.2:
lazbuild --build-mode=Release ImmichScreensaver.lpiHeraus kommt ImmichScreensaver.scr – ein Post-Build-Schritt kopiert die von FPC erzeugte ImmichScreensaver.scr.exe auf diesen Namen, weil FPC immer ein .exe anhängt. Zusätzlich gibt es einen Debug-Modus, der ImmichScreensaver-debug.exe baut.
Die Sache mit OpenSSL
Ein Detail, über das man bei Free Pascal leicht stolpert: Für HTTPS lädt FPC 3.2.2 unter 64-Bit-Windows genau zwei Dateinamen, nämlich libssl-1_1-x64.dll und libcrypto-1_1-x64.dll. Es muss also die 1.1.1er-Serie sein – OpenSSL 3.x wird nicht geladen, weil dort die Dateinamen anders lauten.
Beide DLLs liegen in der Version 1.1.1w im Repository bei, üblicherweise müssen Sie sich darum also nicht kümmern. Wer sie selbst beschaffen will, findet vorgebaute Win64-Binaries etwa bei FireDaemon oder Overbyte ICS. Zu wissen ist dabei: OpenSSL 1.1.1 hat im September 2023 sein Support-Ende erreicht, 1.1.1w ist die letzte öffentliche Veröffentlichung. Die mitgelieferten DLLs sind © The OpenSSL Project und stehen unter der OpenSSL-/SSLeay-Doppellizenz, deren Text im Ordner third-party beiliegt.
Fazit
Wenn Sie Ihre Fotos ohnehin auf einem eigenen Immich-Server liegen haben, ist der Immich Screensaver der kürzeste Weg, sie auch auf dem Windows-Desktop zu sehen – ohne die Bibliothek doppelt vorzuhalten und ohne ein Foto über drei Monitore zu ziehen. Den Quellcode finden Sie auf GitHub, das Projekt steht unter MIT-Lizenz; Issues und Pull Requests sind willkommen. Weitere Open-Source-Projekte von mir finden Sie hier, und wenn Sie für Ihr eigenes Vorhaben Unterstützung suchen: Hier sind meine Leistungen rund um Webentwicklung aus Kassel.
Dieses Projekt steht in keiner Verbindung zum Immich-Projekt. Immich wird auf immich.app entwickelt.
Quelle: github.com
Autor
Hey 👋 mein Name ist Tobias Schottstädt und ich bin Full-Stack Developer aus Kassel. Als Tools-Spezialist aus Kassel kann ich dich möglicherweise in deinem Projekt unterstützen. Sie planen ein Projekt oder möchten Ihre bestehende Website modernisieren? Werfen Sie einen Blick auf meine Leistungen oder schreiben Sie mir direkt – ich freue mich, von Ihnen zu hören! Über mich | Kontakt
Ich entwickle individuelle Websites und Webanwendungen mit PHP und JavaScript – im Herzen meines Stacks stehen Laravel, Livewire und Vue.js. Vom durchdachten Backend über ein sauberes, responsives Frontend bis zur technischen Suchmaschinenoptimierung bekommen Sie bei mir alles aus einer Hand. Was mich antreibt: Software, die nicht nur heute funktioniert, sondern sich auch in fünf Jahren noch gut warten lässt.