from typing import TypeVar import platform import subprocess import ctypes import os import logging logger = logging.getLogger("desktopenv.getters.misc") R = TypeVar("Rule") def get_rule(env, config: R) -> R: """ Returns the rule as-is. """ return config["rules"] def get_desktop_path(): username = os.getlogin() # Get the current username if platform.system() == "Windows": return os.path.join("C:", "Users", username, "Desktop") elif platform.system() == "Darwin": # macOS is identified as 'Darwin' return os.path.join("/Users", username, "Desktop") elif platform.system() == "Linux": return os.path.join("/home", username, "Desktop") else: raise Exception("Unsupported operating system") def get_wallpaper(): def get_wallpaper_windows(): SPI_GETDESKWALLPAPER = 0x73 MAX_PATH = 260 buffer = ctypes.create_unicode_buffer(MAX_PATH) ctypes.windll.user32.SystemParametersInfoW(SPI_GETDESKWALLPAPER, MAX_PATH, buffer, 0) return buffer.value def get_wallpaper_macos(): script = """ tell application "System Events" to tell every desktop to get picture """ process = subprocess.Popen(['osascript', '-e', script], stdout=subprocess.PIPE) output, error = process.communicate() if error: logger.error("Error: %s", error) else: return output.strip().decode('utf-8') def get_wallpaper_linux(): try: output = subprocess.check_output(["gsettings", "get", "org.gnome.desktop.background", "picture-uri"]) return output.decode('utf-8').strip().replace('file://', '').replace("'", "") except Exception as e: logger.error("Error: %s", e) return None os_name = platform.system() if os_name == 'Windows': return get_wallpaper_windows() elif os_name == 'Darwin': return get_wallpaper_macos() elif os_name == 'Linux': return get_wallpaper_linux() else: return "Unsupported OS"