96 lines
3.0 KiB
Python
96 lines
3.0 KiB
Python
from typing import TypeVar
|
|
#from typing import Dict, List
|
|
|
|
import platform
|
|
import subprocess
|
|
import ctypes
|
|
import os
|
|
|
|
#import pyatspi
|
|
#from pyatspi import Accessible, StateType
|
|
#from pyatspi import Component, Document
|
|
#from pyatspi import Text as ATText
|
|
#from pyatspi import Value as ATValue
|
|
#from pyatspi import Action as ATAction
|
|
#import lxml.etree
|
|
#from lxml.etree import _Element
|
|
|
|
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(*args):
|
|
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(*args):
|
|
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"
|
|
|
|
#def get_accessibility_tree(*args) -> _Element:
|
|
#desktop: Accessible = pyatspi.Registry.getDesktop(0)
|
|
#desktop_xml: _Element = _create_node(desktop)
|
|
#return desktop_xml
|
|
|
|
def get_accessibility_tree(env, *args) -> str:
|
|
accessibility_tree: str = env.controller.get_accessibility_tree()
|
|
logger.debug("AT@eval: %s", accessibility_tree)
|
|
return accessibility_tree
|
|
|
|
#if __name__ == "__main__":
|
|
#import sys
|
|
#with open(sys.argv[1], "w") as f:
|
|
#f.write( lxml.etree.tostring( get_accessibility_tree()
|
|
#, encoding="unicode"
|
|
#, pretty_print=True
|
|
#)
|
|
#)
|