
Ich möchte ein Bash-Skript schreiben, das das aktuelle Hintergrundbild von der Wand entfernen kannWiedergabeliste. Mit Playlist meine ich die Liste in wallch, zu der man Bilder und Ordner hinzufügen kann und die man wallch mitteilt, dass es diese als Hintergrundbild verwenden darf.
Wie wird diese Wiedergabeliste von Wallch gespeichert? SQLite? XML? Kann ich programmgesteuert auf diese Wiedergabeliste zugreifen und sie ändern?
Antwort1
Es wäre ziemlich schwierig, das aktuelle Hintergrundbild aus der Liste von Wallch zu entfernen, während Wallch ausgeführt wird und die Hintergrundbilder ändert, da auf die Liste über den Speicher zugegriffen wird (auch gespeichert in ~/.config/Wallch/MainWindow.conf, aber dort nicht live gelesen; dieser Speicherort wird verwendet, um die Wiedergabeliste wiederherzustellen, wenn beispielsweise der Computer abstürzt oder ein Programm nicht ordnungsgemäß beendet wird).
Es wäre viel einfacher, ein Skript zu erstellen, das den Hintergrund automatisch ändert, während eine album.wallch-Datei mit dem Befehl gelesen wird
gsettings set org.gnome.desktop.background picture-uri "/path to image/here.jpg"
und eine „while“-Schleife. Beispiel:
while read line; do
gsettings set org.gnome.desktop.background picture-uri "$line"
#here do what you want, remove image from the file being read, move image to trash
#(located in ~/.local/share/Trash/files) and mark it as not wallpaper material.
sleep $timeout #<- sleep the timeout you want until the next image
done < album.wallch
Eine andere, aber zu komplizierte Lösung wäre folgende:
- Starten Sie Wallch normal und fügen Sie einige Bilder hinzu, falls keine in der Liste vorhanden sind
- Wallch beenden (Strg+Q)
- Starten Sie Wallch in einem Terminal mit dem Befehl
wallch --constant
- Entfernen Sie das entsprechende Hintergrundbild aus ~/.config/Wallch/MainWindow.conf
- Mach was du willst.
- Wiederholen Sie den Vorgang ab Schritt 3.
Ich würde aber wirklich die 1. Lösung vorschlagen, bei der Sie Ihr eigenes Skript dafür erstellen. Wenn Sie Wallch nur zum Ändern des Hintergrundbilds verwenden möchten, sollten Sie unbedingt den direkten Befehl verwenden
gsettings set org.gnome.desktop.background picture-uri "/path to image/here.jpg"
Antwort2
Ich verwende wallch und mag es im Allgemeinen nicht: Es ist mühsam, die Liste der Dateien zu ändern (wie Sie sehen). Es ist jedoch möglich, ein Verzeichnis voller Softlinks zu erstellen und diese von wallch anzeigen zu lassen. Dann kann Ihr Skript mit den Softlinks herumspielen, und wallch wird es nicht einmal bemerken. Verwenden Sie den Befehl „ln“ mit -s, um einen Softlink einzurichten. Wenn Sie /home/me/Pictures/Backgrounds als Verzeichnis mit den Links darin haben, tun Sie etwas wie
ln -sf /home/me/Bilder/Vacation2013/GreatPic.jpg /home/me/Bilder/Hintergrundbilder/1.jpg
um die Datei „1.jpg“ im Verzeichnis „Hintergründe“ zu ersetzen. Sie wird mit GreatPic.jpg im anderen Verzeichnis verknüpft und kann problemlos programmgesteuert ersetzt werden. Verwenden Sie Softlinks (Option -s), damit Sie die Bilder nicht hart verknüpfen. Verwenden Sie die Option „Force“ (-f oder -sf), um vorhandene Links oder Dateien im Verzeichnis zu löschen und zu ersetzen.
Ein Problem: Mit diesem Ansatz können Sie die Anzahl der angezeigten Hintergründe nicht ändern. Sie können nur ändern, um welche Bilder es sich handelt.
Ich habe den Befehl gsettings ausprobiert und festgestellt, dass der Teil „Pfad“ das Format file:/blah/blah/blah haben muss. Ich war überrascht, das zu sehenhttp://server.tld/blah/blah/blahfunktioniert nicht.
Ist es wichtig, etwas mit dem aktuell angezeigten Hintergrund tun zu können? Dann wäre es wahrscheinlich besser, ein Python- oder Perl-Skript auszuführen (was auch immer Sie kennen) und Signale zu verarbeiten. Sie könnten Ihrem Skript beispielsweise einen Signalhandler geben, der es dazu veranlasst, die aktuell angezeigte Datei zu löschen (falls Sie das beabsichtigen).