quickshell-rice/quickshell/services/python/wallpaper_scanner.py

39 lines
1.2 KiB
Python
Executable File

#!/usr/bin/env python3
import os
import json
import sys
def scan_wallpapers():
search_dirs = [
os.path.expanduser('~/Pictures/Wallpapers'),
os.path.expanduser('~/.config/quickshell/wallpapers'),
'/usr/share/wallpapers',
'/usr/share/backgrounds'
]
res = []
seen = set()
for base_dir in search_dirs:
if not os.path.exists(base_dir):
continue
for root, dirs, files in os.walk(base_dir):
for filename in files:
if filename.lower().endswith(('.png', '.jpg', '.jpeg', '.webp', '.svg')):
full_path = os.path.join(root, filename)
if full_path in seen:
continue
seen.add(full_path)
variant_name = os.path.basename(root) if root != base_dir else os.path.splitext(filename)[0]
res.append({
'variant': variant_name,
'name': filename,
'path': full_path
})
res.sort(key=lambda x: (x['variant'].lower(), x['name'].lower()))
print(json.dumps(res), flush=True)
if __name__ == '__main__':
scan_wallpapers()