Lange Überschrift:
[KDE] Bild für Breeze Ladebildschirm, Wallpaper und Bildschirmsperre synchronisieren und Dolphin Dateimanager Kontextmenü zur Auswahl und sofortigen Verwendung als Wallpaper und Wiederherstellungsfunktion des vorher durch diese Funktion eingestellten Wallpaper Bildes.
KDE lädt auf Kubuntu per default mit einem schwarzen Hintergrund, es gibt aber eine Erweiterung um Breeze mit Hintergrundbild zu laden:
Damit kann man auch den Ladebildschirm von KDE in schön haben. Nachteil bisher ist, dass man für die Schönheit dann jeweils das Bild für den KDE-Ladebildschirm etwas aufwändig ändern, und für das Wallpaper Bild und die Bildschrirmsperre jeweils seperat einstellen muss, so dass bei jedem wechseln des Wallpaper Bildes diese Arbeiten von neuem anfallen.
Der folgende Bastelbeitrag soll diese Arbeiten bei Erfolg dann ersparen. Im KDE-Dolphin Dateimanger lässt sich dann bequem per Rechtsklick ein Bild auswählen welches für den KDE-Ladebildschirm, das Wallpaper Bild und die KDE-Bildschirmsperre sofort synchron verwendet wird. Bei mir funktioniert das schon.
Hier das Kontextmenü für den Dolpin Dateimanager, es gehört nach:
~/.local/share/kservices5/ServiceMenus/pic_to_wallpaper.desktop
Die Tilde "~" steht für das User Home Verzeichnis.
Einmalig legt man eine leere Datei als Platzhalter für die künftige Wallpaper Bild-Funktion an:
touch "`echo $HOME`"/.local/share/wallpapers/background
In die pic_to_wallpaper.desktop schreibt man dann rein:
[Desktop Entry] Type=Service ServiceTypes=KonqPopupMenu/Plugin MimeType=image/*; Actions=pic_to_local_share_wallpapers_background_jpg;restore_old__wallpapers_background_jpg; X-KDE-Submenu=Picture to Wallpaper ==> X-KDE-Submenu[de]=Bild als Wallpaper ==> Icon=preferences-desktop-wallpaper [Desktop Action pic_to_local_share_wallpapers_background_jpg] Icon=preferences-desktop-wallpaper Name=Picture to Wallpaper Name[de]=Bild als Wallpaper Exec=cp -f "`echo $HOME`"/.local/share/wallpapers/background "`echo $HOME`"/.local/share/wallpapers/background_old && cp -f "%u" "`echo $HOME`"/.local/share/wallpapers/background && qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///'`echo $HOME`'/.local/share/wallpapers/background_old")}' && qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///'`echo $HOME`'/.local/share/wallpapers/background")}' [Desktop Action restore_old__wallpapers_background_jpg] Icon=preferences-desktop-wallpaper Name=Restore old Wallpaper Picture Name[de]=Vorheriges Wallpaper Bild wieder verwenden Exec=ls "%u" && cp -f "`echo $HOME`"/.local/share/wallpapers/background "`echo $HOME`"/.local/share/wallpapers/background_tmp && mv -f "`echo $HOME`"/.local/share/wallpapers/background_old "`echo $HOME`"/.local/share/wallpapers/background && mv -f "`echo $HOME`"/.local/share/wallpapers/background_tmp "`echo $HOME`"/.local/share/wallpapers/background_old && qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///'`echo $HOME`'/.local/share/wallpapers/background_old")}' && qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///'`echo $HOME`'/.local/share/wallpapers/background")}' && notify-send -i dialog-ok-apply.png "Vorheriges Wallpaper Bild wieder verwendet."
Das ganze Ding ist solch ein Brummer geworden, weil die KDE-Wallpaperfuntion extra Anstöße braucht um ein neues Hintergrund Bild zu verwenden. Würde man enfach nur den Inhalt der "background" Datei austauschen würde KDE das Wallpaperbild nicht ändern.
Wenn man die "Breeze with Background" KDE-Erweiterung installiert hat, einen Link anlegen um das Wallpaper Bild mit dem Bild des KDE-Ladebildschirms zu koppeln. Die Koppelung funktionert nur für das Bild das jeweils in ~/.local/share/wallpapers/background gespeichert ist!
ln -s "`echo $HOME`"/.local/share/wallpapers/background "`echo $HOME`"/.local/share/plasma/look-and-feel/com.yuenhoe.BreezeWithBackground/contents/splash/images/background.jpg
In den Einstellungen für die KDE-Bildschirmsperre wählt man auch ~/.local/share/wallpapers/background als Bild aus.
Sicherheitshalber lässt man auch noch mal kbuildsycoca5 laufen und schaut ob es Fehler auswirft. Der eine Fehler für die xdg-desktop-menu-dummy.menu ist Standard, weitere Fehler, besonders Fehlermeldungen über die pic_to_wallpaper.desktop Datei sollten nicht auftauchen:
kbuildsycoca5 --noincremental kbuildsycoca5 running... kf.service.sycoca: Parse error in "/home/fussel/.config/menus/applications-merged/xdg-desktop-menu-dummy.menu" , line 1 , col 1 : "unexpected end of file"
Bonus: in das KDE-Dolpin Rechtsklickmenü ist auch noch eine Bild zurück Funktion integriert, welche das vorher durch diese Funktion ausgewählte Wallpaper Bild wiederherstellt.
Möchte man die Funktion "Vorheriges Wallpaper Bild wieder verwenden" auch im KDE-Anwendungstarter haben, dann kann man mit der Funktion Menüeinträge bearbeiten sich einen neuen Eintrag erstellen.
Als Befehlszeile schreibt man dann rein:
cp -f "`echo $HOME`"/.local/share/wallpapers/background "`echo $HOME`"/.local/share/wallpapers/background_tmp && mv -f "`echo $HOME`"/.local/share/wallpapers/background_old "`echo $HOME`"/.local/share/wallpapers/background && mv -f "`echo $HOME`"/.local/share/wallpapers/background_tmp "`echo $HOME`"/.local/share/wallpapers/background_old && qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///'`echo $HOME`'/.local/share/wallpapers/background_old")}' && qdbus org.kde.plasmashell /PlasmaShell org.kde.PlasmaShell.evaluateScript 'var allDesktops = desktops();print (allDesktops);for (i=0;i<allDesktops.length;i++) {d = allDesktops[i];d.wallpaperPlugin = "org.kde.image";d.currentConfigGroup = Array("Wallpaper", "org.kde.image", "General");d.writeConfig("Image", "file:///'`echo $HOME`'/.local/share/wallpapers/background")}' && notify-send -i dialog-ok-apply.png "Vorheriges Wallpaper Bild wieder verwendet."
Kann man dann "Vorheriges Wallpaper Bild wieder verwenden" nennen, wenn man mag auch noch als Kommentar dazu eintragen: "Stellt das vorherige Wallpaper Bild wieder her". Lässt sich dann auch in die Favoriten schubsen, oder in die KDE-Kontrolleiste.
Edit: hier kann man es sich mal als Kurzvideo anschauen was das dann macht. Das Video wird leider vom Hoster stark runtergerechnet, daher so unscharf: https://streamable.com/jhvwvl