aboutsummaryrefslogtreecommitdiff
path: root/vendor/libghostty-vt/src/apprt/gtk/flatpak.zig
diff options
context:
space:
mode:
authorCan Celik <ogulcancelik@gmail.com>2026-04-04 19:22:04 +0300
committerCan Celik <ogulcancelik@gmail.com>2026-04-05 01:23:06 +0300
commit41dd733ca7123c9ac4bfc6c781697a660e95b052 (patch)
tree3fc91815ca139ef2e0b281bba0abda4ef15175f4 /vendor/libghostty-vt/src/apprt/gtk/flatpak.zig
parent55c138263e190a1e79d4b997bfb9397306c0ec1f (diff)
feat: finish ghostty pane backend integration
Diffstat (limited to 'vendor/libghostty-vt/src/apprt/gtk/flatpak.zig')
-rw-r--r--vendor/libghostty-vt/src/apprt/gtk/flatpak.zig29
1 files changed, 29 insertions, 0 deletions
diff --git a/vendor/libghostty-vt/src/apprt/gtk/flatpak.zig b/vendor/libghostty-vt/src/apprt/gtk/flatpak.zig
new file mode 100644
index 00000000..dc47c671
--- /dev/null
+++ b/vendor/libghostty-vt/src/apprt/gtk/flatpak.zig
@@ -0,0 +1,29 @@
+const std = @import("std");
+const Allocator = std.mem.Allocator;
+const build_config = @import("../../build_config.zig");
+const internal_os = @import("../../os/main.zig");
+const glib = @import("glib");
+
+pub fn resourcesDir(alloc: Allocator) !internal_os.ResourcesDir {
+ if (comptime build_config.flatpak) {
+ // Only consult Flatpak runtime data for host case.
+ if (internal_os.isFlatpak()) {
+ var result: internal_os.ResourcesDir = .{
+ .app_path = try alloc.dupe(u8, "/app/share/ghostty"),
+ };
+ errdefer alloc.free(result.app_path.?);
+
+ const keyfile = glib.KeyFile.new();
+ defer keyfile.unref();
+
+ if (keyfile.loadFromFile("/.flatpak-info", .{}, null) == 0) return result;
+ const app_dir = std.mem.span(keyfile.getString("Instance", "app-path", null)) orelse return result;
+ defer glib.free(app_dir.ptr);
+
+ result.host_path = try std.fs.path.join(alloc, &[_][]const u8{ app_dir, "share", "ghostty" });
+ return result;
+ }
+ }
+
+ return try internal_os.resourcesDir(alloc);
+}