Tips en Trucs 2020

Dynamische achtergrond

Een nieuwe trend in de verfraaiing van het Bureaublad zijn Dynamische achtergronden. Op basis van tijd of stand van de zon worden andere Bureaublad achtergrondafbeeldingen weergegeven.
Dynamische achtergrond

Inspiratie

In macOS worden dynamische achtergronden standaard meegeleverd en populair. Vandaar dat de meeste dynamische achtergronden, speciaal voor macOS zijn ontworpen. Zo kan je op de website Dynamic Wallpaper Club diverse dynamische achtergronden downloaden. Maar Apple gebruikt wel een merkwaardig bestandsformaat: het HEIF-formaat, herkenbaar aan de heic extensie. Het HEIF bestandsformaat bevat verschillende foto's in één enkel bestand (zie Wikipedia). Door de groeiende belangstelling en het gebruik ervan op Apple apparaten, wordt het formaat stilaan geïntegreerd in fotobewerkingsprogramma's zoals GIMP.

HEIF afbeeldingen converteren

Je kunt met HEIF afbeeldingen op Linux werken door extra software te installeren. De HEIF software is nog niet opgenomen in de standaard openSUSE Leap 15.1 softwarebronnen en kan je met de volgende opdracht installeren vanuit de softwarebron home:Herbster0815:

dany@pindabook:~> sudo /sbin/OCICLI https://software.opensuse.org/ymp/home:Herbster0815/openSUSE_Leap_15.1/li
[sudo] wachtwoord voor root: 
Als u verdergaat, dan worden de volgende installatiebronnen toegevoegd:
        * http://download.opensuse.org/repositories/KDE:/Frameworks5/openSUSE_Leap_15.1/
        * http://download.opensuse.org/repositories/KDE:/Qt5/openSUSE_Leap_15.1/
        * http://download.opensuse.org/repositories/home:/Herbster0815/openSUSE_Leap_15.1/
Als verdergaat, dan zullen de volgende softwarepakketten worden geïnstalleerd op uw systeem:
        * libheif1
Continue? y/N
y
Toevoegen van installatiebronnen...

Daarbij moet je de nieuwe softwarebron vertrouwen.

GnuPG sleutel vertrouwen

Om informatie over de afbeeldingen in een HEIF bestand op te vragen, gebruik je de opdracht:

dany@pindabook:~> heif-info Downloads/Night\ CET\ v2.heic 
MIME type: image/heic
image: 5120x2880 (id=61), primary
  color profile: prof
  alpha channel: no
  depth channel: no
image: 5120x2880 (id=123)
  color profile: no
  alpha channel: no
  depth channel: no
...
image: 5120x2880 (id=2929)
  color profile: no
  alpha channel: no
  depth channel: no

Daaruit blijkt dat dit HEIF bestand 48 foto's bevat. Een dag telt 24 uur, m.a.w. één foto per half uur. Om de foto's als achtergrond te gebruiken, moeten we ze uit het HEIF bestand extraheren naar een nieuwe map. Daarvoor gebruiken we de volgende opdrachten:

dany@pindabook:~> mkdir -p ~/Afbeeldingen/Achtergronden/Dynamisch
dany@pindabook:~> heif-convert Downloads/Night\ CET\ v2.heic Afbeeldingen/Achtergronden/Dynamisch/Achtergrond.jpg
File contains 48 images
Written to Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-1.jpg
Written to Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-2.jpg
...
Written to Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-48.jpg

Achtergrond aanpassen

Om elk half uur een andere achtergrond weer te geven, kunnen we een script schrijven. Maar hoe activeer je met een opdracht een nieuwe achtergrond. Wel daarvoor moet je communiceren met KDE Plasma, het KDE onderdeel dat o.a. zorgt voor het Bureaublad. Omdat de opdracht om de KDE Plasma Bureaublad achtergrond aan te passen, complex is, definiëren we een functie:

set_wallpaper(){
    dbus-send --session --dest=org.kde.plasmashell --type=method_call /PlasmaShell org.kde.PlasmaShell.evaluateScript "string:
    var Desktops = desktops();                                                                                                                       
    for (i=0;i<Desktops.length;i++) {
            d = Desktops[i];
            d.wallpaperPlugin = 'org.kde.image';
            d.currentConfigGroup = Array('Wallpaper',
                                        'org.kde.image',
                                        'General');
            d.writeConfig('Image', 'file://$1');
    }"
}

Daar deze functie bestaat uit verschillende regels, verschijnen bij het ingeven in de terminal >-tekens bij elke nieuwe regel. Nu kan je een elke afbeelding als achtergrond instellen met de opdracht:

dany@pindabook:~> set_wallpaper ~/Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-1.jpg

Je merkt daarbij dat de overgang vloeiend verloopt, ideaal voor onze toepassing. Merk eveneens op dat je niets zult merken als de afbeelding al als achtergrond wordt gebruikt of het afbeeldingsbestand niet bestaat of toegankelijk is.

Dynamische achtergrond

Via een eindeloze lus geven we elk half uur een aangepaste achtergrond afbeelding weer. Het volledige script wordt dan:

#!/bin/bash
set_wallpaper(){ # Functie om een afbeelding als Bureaublad achtergrond in te stellen
    dbus-send --session --dest=org.kde.plasmashell --type=method_call /PlasmaShell org.kde.PlasmaShell.evaluateScript "string:
    var Desktops = desktops();                                                                                                                       
    for (i=0;i<Desktops.length;i++) {
            d = Desktops[i];
            d.wallpaperPlugin = 'org.kde.image';
            d.currentConfigGroup = Array('Wallpaper',
                                        'org.kde.image',
                                        'General');
            d.writeConfig('Image', 'file://$1');
    }"
}
# Installeer indien nodig de HEIF conversie software
if [ ! -f /usr/bin/heif-convert ]; then
  sudo /sbin/OCICLI https://software.opensuse.org/ymp/home:Herbster0815/openSUSE_Leap_15.1/libheif1.ymp
fi
# Maak indien nodig een map met Dynamische achtergrondafbeeldingen aan
mkdir -p ~/Afbeeldingen/Achtergronden/Dynamisch
# En vul deze met afbeeldingen uit een HEIF bestand
#rm Afbeeldingen/Achtergronden/Dynamisch/*
#heif-convert Downloads/Night\ CET\ v2.heic Afbeeldingen/Achtergronden/Dynamisch/Achtergrond.jpg
while :; do # Eindeloze lus om elk half uur een andere achtergrond in te stellen
  # Bepaal de bestandnaam van achtergrondafbeelding op basis van de huidige tijd
  suffix=$(date +"%k")
  suffix=$((suffix * 2))
  if [[ $(date +"%M") > "30" ]]; then
    suffix=$((suffix + 1))
  fi
  echo $HOME/Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-$suffix.jpg
  # Stel de tijdafhankelijke achtergrondafbeelding in
  set_wallpaper $HOME/Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-$suffix.jpg
  sleep 60 # Wacht 60 seconden, verhoog deze waarde om deze lus minder frequent uit te voeren.
done

Dit script kan je uitvoeren met de volgende opdracht:

dany@pindabook:~> bash ./Documenten/Systeembeheer/dynamicWallpaper.sh
/home/dany/Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-28.jpg
/home/dany/Afbeeldingen/Achtergronden/Dynamisch/Achtergrond-28.jpg

Het script breek je af met de sneltoets Ctrl+c. Na een succesvolle test kan je het script automatisch laten starten bij het opstarten van de KDE omgeving. Dit kan je instellen via de Systeeminstellingen > Opstarten en afsluiten in de categorie Autostart.

En verder

Nu je weet hoe je HEIF bestanden kunt converteren naar gewone JPEG bestanden. En je weet hoe je een KDE Plasma Bureaublad achtergrond kunt instellen. Kan je zelf dynamische bureaubladachtergrond scripts schrijven. Zo kan je de Bureaubladachtergrond wijzigen bij het opgaan en ondergaan van de zon. Maak er iets mooi, uniek en persoonlijk van. Succes en veel plezier.