replay: use the runtime quirks for our replay quirks

Closes #1166

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1297>
This commit is contained in:
Peter Hutterer 2025-08-05 16:15:51 +10:00 committed by Marge Bot
parent ce87da63ba
commit cdfe34f62a

View file

@ -30,6 +30,7 @@ import math
import multiprocessing
import argparse
from pathlib import Path
from tempfile import NamedTemporaryFile
try:
import libevdev
@ -315,9 +316,8 @@ def create_device_quirk(device, quirks):
return quirk
def setup_quirks(recording):
def setup_quirks(recording) -> Path | None:
devices = fetch(recording, "devices")
overrides = None
quirks = []
for d in devices:
qs = d.get("quirks") or []
@ -331,27 +331,22 @@ def setup_quirks(recording):
if not quirks:
return None
overrides = Path("/etc/libinput/local-overrides.quirks")
if overrides.exists():
print(
"{} exists, please move it out of the way first".format(overrides),
file=sys.stderr,
runtime_dir = (
Path(os.getenv("XDG_RUNTIME_DIR", f"/run/user/{os.geteuid()}")) / "libinput"
)
sys.exit(1)
overrides.parent.mkdir(exist_ok=True)
try:
with overrides.open("w+") as fd:
runtime_dir.mkdir(exist_ok=True, parents=True)
with NamedTemporaryFile(
mode="w+",
dir=runtime_dir,
suffix=".quirks",
prefix="libinput-replay",
delete=False,
) as fd:
fd.write("# This file was generated by libinput replay\n")
fd.write(
"# Unless libinput replay is running right now, remove this file.\n"
)
fd.write("# Unless libinput replay is running right now, remove this file.\n")
fd.write("\n\n".join(quirks))
except IOError:
error("Warning: Couldn't write to {}, please re-run as root".format(overrides))
return None
return overrides
return Path(fd.name)
def check_file(recording):
@ -413,6 +408,7 @@ def main():
finally:
if quirks_file:
quirks_file.unlink()
quirks_file.parent.unlink()
if __name__ == "__main__":