mirror of
https://github.com/baketnk/frame-yap.git
synced 2026-10-06 01:00:04 +02:00
Add user-local desktop launcher and record Frame menu test
This commit is contained in:
1 parent
26113906f0
commit
417f81cb09
6 files changed
+122
-2
No files matched your search
@@ -219,6 +219,18 @@ def desired_manifest(launcher):
|
||||
"strings": {"en_us": {"name": "FrameYap"}}}]}
|
||||
|
||||
|
||||
def desktop_path(root):
|
||||
return root.parent / "applications/frameyap.desktop"
|
||||
|
||||
|
||||
def desired_desktop(launcher):
|
||||
# Desktop Entry Exec quotes are not shell quotes; escape reserved characters.
|
||||
executable = (str(launcher).replace("\\", "\\\\").replace('"', '\\"')
|
||||
.replace("$", "\\$").replace("`", "\\`").replace("%", "%%"))
|
||||
return ("[Desktop Entry]\nType=Application\nName=FrameYap\n"
|
||||
f'Exec="{executable}"\nTerminal=false\nCategories=Utility;\n').encode()
|
||||
|
||||
|
||||
def check_owned_file(path, expected):
|
||||
if path.is_symlink():
|
||||
fail(f"refusing foreign symlink: {path}")
|
||||
@@ -235,14 +247,18 @@ def check_wrappers(root, launcher):
|
||||
desired = (json.dumps(desired_manifest(launcher), sort_keys=True, indent=2) + "\n").encode()
|
||||
check_owned_file(launcher, desired_launcher(root))
|
||||
check_owned_file(manifest, desired)
|
||||
check_owned_file(desktop_path(root), desired_desktop(launcher))
|
||||
return manifest, desired
|
||||
|
||||
|
||||
def install_files(root, installed, launcher):
|
||||
owned_dir(launcher.parent)
|
||||
manifest, desired = check_wrappers(root, launcher)
|
||||
desktop = desktop_path(root)
|
||||
owned_dir(desktop.parent)
|
||||
atomic_write(launcher, desired_launcher(root), 0o755)
|
||||
atomic_write(manifest, desired)
|
||||
atomic_write(desktop, desired_desktop(launcher))
|
||||
|
||||
|
||||
def receipt(path):
|
||||
@@ -361,6 +377,8 @@ def uninstall(root, launcher):
|
||||
desired = (json.dumps(desired_manifest(launcher), sort_keys=True, indent=2) + "\n").encode()
|
||||
check_owned_file(manifest, desired)
|
||||
check_owned_file(launcher, desired_launcher(root))
|
||||
desktop = desktop_path(root)
|
||||
check_owned_file(desktop, desired_desktop(launcher))
|
||||
versions = root / "versions"
|
||||
if versions.exists():
|
||||
if versions.is_symlink():
|
||||
@@ -387,6 +405,8 @@ def uninstall(root, launcher):
|
||||
launcher.unlink()
|
||||
if manifest.exists():
|
||||
manifest.unlink()
|
||||
if desktop.exists():
|
||||
desktop.unlink()
|
||||
print("FrameYap removed; config and saved models preserved. OpenVR unregister acknowledgement was required.")
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user