Update dotfiles/.local/bin/ksetwallpaper
Deleted dotfiles/.config/plasma-org.kde.plasma.desktop-appletsrc
This commit is contained in:
parent
ed6255ec45
commit
f052636222
2 changed files with 107 additions and 2 deletions
|
@ -1,2 +0,0 @@
|
|||
[Containments][1][Wallpaper][org.kde.image][General]
|
||||
Image=file:///usr/share/wallpapers/Next/contents/images/3440x1440.jpg
|
107
dotfiles/.local/bin/ksetwallpaper
Normal file
107
dotfiles/.local/bin/ksetwallpaper
Normal file
|
@ -0,0 +1,107 @@
|
|||
#!/usr/bin/env python3
|
||||
import time
|
||||
import dbus
|
||||
import argparse
|
||||
import glob
|
||||
import random
|
||||
import os
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
HOME = str(Path.home())
|
||||
SCREEN_LOCK_CONFIG = HOME+"/.config/kscreenlockerrc"
|
||||
def setwallpaper(filepath, plugin='org.kde.image'):
|
||||
jscript = """
|
||||
var allDesktops = desktops();
|
||||
print (allDesktops);
|
||||
for (i=0;i<allDesktops.length;i++) {
|
||||
d = allDesktops[i];
|
||||
d.wallpaperPlugin = "%s";
|
||||
d.currentConfigGroup = Array("Wallpaper", "%s", "General");
|
||||
d.writeConfig("Image", "file://%s")
|
||||
}
|
||||
"""
|
||||
bus = dbus.SessionBus()
|
||||
plasma = dbus.Interface(bus.get_object(
|
||||
'org.kde.plasmashell', '/PlasmaShell'), dbus_interface='org.kde.PlasmaShell')
|
||||
plasma.evaluateScript(jscript % (plugin, plugin, filepath))
|
||||
|
||||
def set_lockscreen_wallpaper(filepath,plugin='org.kde.image'):
|
||||
if os.path.exists(SCREEN_LOCK_CONFIG):
|
||||
new_data=[]
|
||||
with open(SCREEN_LOCK_CONFIG, "r") as kscreenlockerrc:
|
||||
new_data = kscreenlockerrc.readlines()
|
||||
is_wallpaper_section=False
|
||||
for num,line in enumerate(new_data,1):
|
||||
if "[Greeter][Wallpaper]["+plugin+"][General]" in line:
|
||||
is_wallpaper_section = True
|
||||
if "Image=" in line and is_wallpaper_section:
|
||||
new_data[num-1] = "Image="+filepath+"\n"
|
||||
break
|
||||
|
||||
with open(SCREEN_LOCK_CONFIG, "w") as kscreenlockerrc:
|
||||
kscreenlockerrc.writelines(new_data)
|
||||
|
||||
def is_locked():
|
||||
is_locked=subprocess.check_output("qdbus org.kde.screensaver /ScreenSaver org.freedesktop.ScreenSaver.GetActive",shell=True,universal_newlines=True).strip()
|
||||
if is_locked == "true":
|
||||
is_locked = True
|
||||
else:
|
||||
is_locked = False
|
||||
return is_locked
|
||||
|
||||
def get_walls_from_folder(directory):
|
||||
return glob.glob(directory+'/*')
|
||||
|
||||
|
||||
def wallpaper_slideshow(wallapapers, plugin, timer, lock_screen):
|
||||
if timer > 0:
|
||||
wallpaper_count = len(wallapapers)
|
||||
delta_s = timer
|
||||
s = int(delta_s % 60)
|
||||
m = int((delta_s / 60) % 60)
|
||||
h = int((delta_s / 3600) % 3600)
|
||||
if h > 0:
|
||||
timer_show = f"{h}h {m}m {s}s"
|
||||
elif m > 0:
|
||||
timer_show = f"{m}m {s}s"
|
||||
elif s > 0:
|
||||
timer_show = f"{s}s"
|
||||
print(
|
||||
f"Looping through {wallpaper_count} wallpapers every {timer_show}")
|
||||
while True:
|
||||
if is_locked() != True:
|
||||
random_int = random.randint(0, wallpaper_count-1)
|
||||
wallpaper_now = wallapapers[random_int]
|
||||
setwallpaper(wallpaper_now, plugin)
|
||||
if lock_screen == True:
|
||||
set_lockscreen_wallpaper(wallpaper_now, plugin)
|
||||
time.sleep(timer)
|
||||
else:
|
||||
raise ValueError('Invalid --timer value')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = argparse.ArgumentParser(description='KDE Wallpaper setter')
|
||||
parser.add_argument('--file','-f', help='Wallpaper file name', default=None)
|
||||
parser.add_argument(
|
||||
'--plugin', '-p', help='Wallpaper plugin (default is org.kde.image)', default='org.kde.image')
|
||||
parser.add_argument('--dir', '-d', type=str,
|
||||
help='Absolute path of folder containging your wallpapers for slideshow', default=None)
|
||||
parser.add_argument('--timer', '-t', type=int,
|
||||
help='Time in seconds between wallpapers', default=900)
|
||||
parser.add_argument('--lock-screen', '-l', action="store_true",
|
||||
help="Set lock screen wallpaper")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.file != None:
|
||||
setwallpaper(filepath=args.file, plugin=args.plugin)
|
||||
if args.lock_screen == True:
|
||||
set_lockscreen_wallpaper(filepath=args.file, plugin=args.plugin)
|
||||
|
||||
elif args.dir != None:
|
||||
wallpapers = get_walls_from_folder(args.dir)
|
||||
|
||||
wallpaper_slideshow(wallapapers=wallpapers,
|
||||
plugin=args.plugin, timer=args.timer,lock_screen=args.lock_screen)
|
||||
else:
|
||||
print("Need help? use -h or --help")
|
Loading…
Reference in a new issue