You are not logged in.
I hope you guys don't get mad at me.
I was really trying to do what you were saying with the confg files. But with doing that I was having issues keeping them the same from liveuser to installed user.
So I reached out to a couple of AI helpers also.
perplexity didn't work for me.
duckduckgo AI didn't work for me.
The one that worked was Claude desktop.
After a couple of mistakes that I caught that it made we got it working . I will show you all the files we used and the summary doc it created for me.
Hopefully we all learned something here.
Here are the files we created.
first the desktop file that goes into the autostart folder.
[Desktop Entry]
Type=Application
Name=Set Slideshow Wallpaper
Exec=/bin/bash /usr/local/bin/set-wallpaper-launcher.sh
OnlyShowIn=KDE;
X-KDE-autostart-phase=2
X-KDE-StartupNotify=false
X-KDE-AutostartEnabled=trueThen the script file that launches the script to change the wallpaper systemsettings.:
#!/bin/bash
sleep 15
exec "${HOME}/.local/bin/set-slideshow.sh"Then the script to set the settings
#!/bin/bash
# Add near the top of set-slideshow.sh
#exec > "${HOME}/set-slideshow.log" 2>&1
#echo "Script started at $(date)"
#echo "DBUS: $DBUS_SESSION_BUS_ADDRESS"
#echo "HOME: $HOME"
# Abort if not running in a KDE Plasma session
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
exit 1
fi
WALLPAPER_DIR="${HOME}/.config/variety/Downloaded"
INTERVAL=300 # 5 minutes in seconds
# Wait until plasmashell is fully operational (up to 60s)
for i in {1..60}; do
RESULT=$(qdbus org.kde.plasmashell /PlasmaShell \
org.kde.PlasmaShell.evaluateScript "var d = desktops(); print(d.length);" 2>/dev/null)
if [[ "$RESULT" =~ ^[1-9] ]]; then
break
fi
sleep 1
done
if [[ ! "$RESULT" =~ ^[1-9] ]]; then
# plasmashell never became ready, exit without self-deleting so it retries next login
exit 1
fi
qdbus org.kde.plasmashell /PlasmaShell \
org.kde.PlasmaShell.evaluateScript "
var allDesktops = desktops();
for (var i = 0; i < allDesktops.length; i++) {
var d = allDesktops[i];
d.wallpaperPlugin = 'org.kde.slideshow';
d.currentConfigGroup = ['Wallpaper', 'org.kde.slideshow', 'General'];
d.writeConfig('SlidePaths', '${WALLPAPER_DIR}');
d.writeConfig('SlideInterval', ${INTERVAL});
}
"
# Only self-delete if we got this far (success)
#rm -- "${HOME}/.local/bin/set-slideshow.sh"
#rm -- "${HOME}/.config/autostart/set-wallpaper.desktop"Then the summary doc file:
KDE Plasma Slideshow Wallpaper
Archiso Configuration Summary
Overview
This configuration automatically applies a KDE Plasma slideshow wallpaper using the Variety wallpaper manager's downloaded folder. It works for both the live ISO user and any user created after installation, by leveraging /etc/skel/ for file distribution.
File Structure
Place the following files in your archiso profile directory:
File Location
set-wallpaper.desktop airootfs/etc/skel/.config/autostart/
set-slideshow.sh airootfs/etc/skel/.local/bin/
set-wallpaper-launcher.sh airootfs/usr/local/bin/
File Contents
1. set-wallpaper.desktop
Stored in /etc/skel so it is copied to every user's home on account creation. The Exec line uses an absolute path to avoid shell variable expansion issues in .desktop files.
[Desktop Entry]
Type=Application
Name=Set Slideshow Wallpaper
Exec=/bin/bash /usr/local/bin/set-wallpaper-launcher.sh
OnlyShowIn=KDE;
X-KDE-autostart-phase=2
X-KDE-StartupNotify=false
X-KDE-AutostartEnabled=true
2. set-wallpaper-launcher.sh
A system-wide launcher at a fixed absolute path. Adds a delay to allow plasmashell to fully start before the main script runs.
#!/bin/bash
sleep 15
exec "${HOME}/.local/bin/set-slideshow.sh"
3. set-slideshow.sh
The main configuration script. Waits up to 60 seconds for plasmashell to become fully operational, then applies the slideshow wallpaper settings via the qdbus PlasmaShell API. Runs on every login to ensure settings persist after logout.
#!/bin/bash
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then exit 1; fi
WALLPAPER_DIR="${HOME}/.config/variety/Downloaded"
INTERVAL=300 # 5 minutes in seconds
for i in {1..60}; do
RESULT=$(qdbus org.kde.plasmashell /PlasmaShell \
org.kde.PlasmaShell.evaluateScript \
"var d = desktops(); print(d.length);" 2>/dev/null)
if [[ "$RESULT" =~ ^[1-9] ]]; then break; fi
sleep 1
done
if [[ ! "$RESULT" =~ ^[1-9] ]]; then exit 1; fi
qdbus org.kde.plasmashell /PlasmaShell \
org.kde.PlasmaShell.evaluateScript "
var allDesktops = desktops();
for (var i = 0; i < allDesktops.length; i++) {
var d = allDesktops[i];
d.wallpaperPlugin = 'org.kde.slideshow';
d.currentConfigGroup = ['Wallpaper', 'org.kde.slideshow', 'General'];
d.writeConfig('SlidePaths', '${WALLPAPER_DIR}');
d.writeConfig('SlideInterval', ${INTERVAL});
}
"
profiledef.sh Permissions
Add these entries to the file_permissions array in your profiledef.sh:
file_permissions=(
["/etc/skel/.config/autostart/set-wallpaper.desktop"]="0:0:644"
["/etc/skel/.local/bin/set-slideshow.sh"]="0:0:755"
["/usr/local/bin/set-wallpaper-launcher.sh"]="0:0:755"
)
Required Packages
Ensure these are present in your packages.x86_64:
• variety — wallpaper manager that populates the Downloaded folder
• qt5-tools — provides qdbus (required for PlasmaShell API calls)
• plasma-desktop — KDE Plasma desktop environment
How It Works
Stage What Happens
Live ISO boot liveuser gets files via /etc/skel copy. Autostart fires set-wallpaper-launcher.sh on KDE login, which runs set-slideshow.sh after a 15s delay.
After install Installer copies /etc/skel to new user's home. set-wallpaper-launcher.sh is already system-wide. Same flow applies on first login.
Every login Script reapplies settings each login to prevent Plasma from reverting to default wallpaper on logout/login.
Key Lessons Learned
• Desktop file Exec lines do not support shell syntax — use an absolute path to a real script instead of bash -c '...' with variables or &&.
• KDE logs 'ignoring unknown escape sequences' when shell syntax appears in Exec lines — check journalctl --user to diagnose autostart issues.
• Do not self-delete the script — Plasma resets wallpaper settings on logout, so the script must reapply them on every login.
• The plasmashell wait loop is essential — the script must poll until desktops() returns a valid count before applying settings.
• Wallpaper path uses $HOME so it works for liveuser (/home/liveuser) and any installed user (/home/username) without hardcoding.Thanks guys for not giving up on me and helping through this project.
It has been a great learning experience.
I hope you guys can take this and use some things from it also.
Offline
though I didn't quite get why people prefer them.
Mostly because tilling is the best option for me, I work a lot with apps like vim and ranger.
Quickly moving around using only a keyboard is what I prefer apps like vim and ranger are fully keyboard orientated
I have tried a modern approach with 'Niri' but I think I'm not ready for that, yet, though this new-kid on the block works surprisingly well ![]()
Anyway, isn't slideshow a Windows thing? Is Linux DEs supposed to just duplicate windows features?
Any desktop is basically the same, be it Mac, Unix or Windows and Linux too, they all have about the same ingredients only tilling WM's are a little different F.I. i3 and sway don't have a desktop
@MAYBL8, why would I get mad, of course not, it wouldn't be my way of doing it but you got it to work and that's what you were aiming for.
I would try and to not rely on AI that much, that's all ![]()
Last edited by qinohe (Today 17:41:44)
Offline
ReDress wrote:though I didn't quite get why people prefer them.
Mostly because tilling is the best option for me, I work a lot with apps like vim and ranger.
Quickly moving around using only a keyboard is what I prefer apps like vim and ranger are fully keyboard orientated
For me Alt + Tab or Meta(Home) + select via arrow keys usually is good enough for moving around ...erhm... windows ![]()
Offline
If you cannot distribute (ideally in /etc/skel) a plasma config that does not get overridden on first launch (or *every* launch) you'd have to file a bug against plasma but I doubt that to be the case.
nb. that what you've there will
1. run on *every* plasma login
2. run a script that sleeps for 15s and then runs another script (you can just merge those)
3. dbus runs a javascript via dbus to query the count of virtual desktops (there's probably a better way for that)
4. dbus runs a javascript to write the plasma config (file)
I'm not mad at you for proving that LLMs are dumb, but this is batshit crazy and anyone actually using that might arguably get mad at you ![]()
plasma *cannot* reasonably reset the config w/ every login and neither must your script - why how and when are the configuration files in #24 overwritten?
nb. that you cannot place them there while plasma is running (because then they'll reasonably get overidden when plasma writes the internal config back, eg. on on logout) - you have to provide them *before* logging into plasma
Offline