Files
feresaria/scripts/rime-app-preview.py

33 lines
1.5 KiB
Python

#!/usr/bin/python3
"""App-scoped native Wayland QQ/Teams checks with separate application profiles.
Never imports the host IBus/Fcitx launchers or modifies their desktop entries.
"""
import argparse
import importlib.util
import os
from pathlib import Path
import subprocess
ROOT=Path(__file__).resolve().parents[1]
spec=importlib.util.spec_from_file_location("preview",ROOT/"scripts/rime-preview.py")
p=importlib.util.module_from_spec(spec);spec.loader.exec_module(p)
APPS={"qq":"/usr/bin/linuxqq","teams":"/usr/bin/teams-for-linux-electron"}
def unit(name):return f"ferese-rime-app-{name}-20261028.service"
if __name__=="__main__":
parser=argparse.ArgumentParser();parser.add_argument("action",choices=[*APPS,"stop","status"]);args=parser.parse_args()
if args.action=="stop":
for name in APPS:subprocess.run(["systemctl","--user","stop",unit(name)],capture_output=True)
elif args.action=="status":
for name in APPS:print(name,p.prop(unit(name),"ActiveState"))
else:
name=args.action;p.start()
if p.prop(unit(name),"ActiveState")=="active":print(f"{name} test instance is already running")
else:
data=p.DATA/f"app-{name}";data.mkdir(mode=0o700,exist_ok=True);data.chmod(0o700)
command=[APPS[name],"--ozone-platform=wayland","--enable-wayland-ime","--wayland-text-input-version=3",f"--user-data-dir={data}"]
if name=="qq":command += ["--no-sandbox"]
p.start_unit(unit(name),command,p.child_environment(),"2G")
print(f"{name} native Wayland validation instance opened")