Recover Rime faults, persist window modes and fix GPU allocation
This commit is contained in:
1 parent
8e9a5838ab
commit
6f34fd080f
27 files changed
+1260
-34
No files matched your search
+14
-2
@@ -30,10 +30,15 @@ def prop(unit, field):
|
||||
|
||||
|
||||
def start_unit(unit, command, env, limit):
|
||||
args = ["systemd-run", "--user", "--collect", f"--unit={unit}", "--service-type=exec",
|
||||
args = ["systemd-run", "--user", "--collect", f"--unit={unit}", f"--service-type={'notify' if unit == IME else 'exec'}",
|
||||
f"--working-directory={ROOT}", f"--property=MemoryMax={limit}", "--property=TasksMax=512"]
|
||||
if unit != MAIN:
|
||||
args += [f"--property=BindsTo={MAIN}", f"--property=After={MAIN}"]
|
||||
if unit == IME:
|
||||
args += ["--property=Restart=on-failure", "--property=RestartSec=1",
|
||||
"--property=StartLimitIntervalSec=60", "--property=StartLimitBurst=5",
|
||||
"--property=WatchdogSec=10", "--property=WatchdogSignal=SIGKILL",
|
||||
"--property=TimeoutStopSec=3", "--property=TimeoutStartSec=45"]
|
||||
run(args + [f"--setenv={key}={value}" for key, value in env.items()] + list(command))
|
||||
|
||||
|
||||
@@ -76,6 +81,8 @@ def environment():
|
||||
"QT_IM_MODULE": "wayland", "QT_QPA_PLATFORM": "wayland", "NO_AT_BRIDGE": "1", "GTK_A11Y": "none",
|
||||
"GSETTINGS_BACKEND": "keyfile",
|
||||
"IBUS_ADDRESS": "", "FERESE_SESSION_IMPORT_ENV": "0", "FERESE_ENABLE_INPUT_METHOD": "1",
|
||||
"FERESE_RIME_CONTROL": str(RUNTIME / "rime-control.sock"),
|
||||
"FERESE_ENABLE_TEST_POINTER": "1",
|
||||
"FERESE_ENABLE_SCREENCOPY": "1", "XDG_DATA_DIRS": f"{Path.home()}/.local/share:/usr/local/share:/usr/share"}
|
||||
values.update({f"XDG_{kind.upper()}_HOME": str(DATA / "profile" / kind) for kind in ("config", "data", "cache", "state")})
|
||||
return values
|
||||
@@ -97,7 +104,8 @@ def focus_entry():
|
||||
wait_for(lambda: any(w["app_id"] == "dev.ferese.RimeValidation" for w in windows()), "Validation window did not map")
|
||||
if not any(w["focused"] and w["app_id"] == "dev.ferese.RimeValidation" for w in windows()):
|
||||
c = context()
|
||||
run([str(ROOT / "target/debug/feresectl"), "--socket", c["socket"], "focus-last-window"])
|
||||
entry=next(w for w in windows() if w["app_id"]=="dev.ferese.RimeValidation")
|
||||
run([str(ROOT / "target/debug/feresectl"), "--socket", c["socket"], "focus-window", str(entry["id"])])
|
||||
wait_for(lambda: any(w["focused"] and w["app_id"] == "dev.ferese.RimeValidation" for w in windows()), "Validation window did not focus")
|
||||
|
||||
|
||||
@@ -114,6 +122,8 @@ def start():
|
||||
if prop(MAIN, "ActiveState") == "active":
|
||||
print("开发预览已在运行。")
|
||||
return
|
||||
DATA.mkdir(mode=0o700,parents=True,exist_ok=True)
|
||||
DATA.chmod(0o700)
|
||||
if not (ROOT / "target/debug/ferese-rime").exists():
|
||||
raise RuntimeError("Build ferese, feresectl and ferese-rime first")
|
||||
for kind in ("config/ferese", "data", "cache", "state"):
|
||||
@@ -126,6 +136,8 @@ xwayland { enabled #false; }
|
||||
status { keybinding-guide #false; }
|
||||
window-rule app-id="dev.ferese.RimeValidation" floating=#true width=880 height=560
|
||||
window-rule app-id="io.github.lgse.Strata" floating=#true width=1050 height=720
|
||||
window-rule app-id="QQ" floating=#true width=1000 height=720
|
||||
window-rule app-id="teams-for-linux" floating=#true width=1000 height=720
|
||||
theme { typography { font-family "MiSans"; }; }
|
||||
''')
|
||||
host_runtime = Path(os.environ.get("XDG_RUNTIME_DIR", f"/run/user/{os.getuid()}"))
|
||||
|
||||
Reference in new issue
Block a user