Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/crutchcorn/hearthspace. A spatial Linux desktop for persistent, local-first computing.
Something went wrong. Try again.
1.8 kB · 50 lines
Python
at main
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051"""Semantic commands always target the launcher's explicit private bus."""
import jsonimport subprocessfrom pathlib import Path
from .control import ControlError
def run_accessibility(args, control, deadline): if args.session is None: raise ControlError("a11y requires --session with its private D-Bus manifest") manifest = json.loads((args.session / "session.json").read_text()) bus = manifest.get("dbus_session_bus_address") if not bus: raise ControlError("session manifest has no private D-Bus address") # Reject stale session manifests before enabling or acting on accessibility. if control.status().get("locked") is True: raise ControlError("session is locked; accessibility is unavailable") binary = Path(manifest["binary_dir"]) / "hearthspace-a11y" if not binary.is_file(): raise ControlError( "build hearthspace-a11y in the session binary directory first" ) command = [ str(binary), "--bus", bus, "--timeout", str(min(300, deadline.remaining())), args.a11y_action, ] if args.a11y_action != "snapshot": command.append(args.selector) try: result = subprocess.run( command, capture_output=True, text=True, check=False, timeout=deadline.remaining(), ) except subprocess.TimeoutExpired as error: raise ControlError("accessibility command timed out") from error payload = json.loads(result.stdout if result.returncode == 0 else result.stderr) if result.returncode: raise ControlError(payload.get("error", "accessibility command failed")) if args.a11y_action == "activate": payload["capture"] = control.capture(args.output)[0] return payload