mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-07-18 09:46:07 +03:00

As of now `gtk4-layer-shell` is unavailable on recent, stable releases of many distros (Debian 12, Ubuntu 24.04, openSUSE Leap & Tumbleweed, etc.) and outdated on many others (Nixpkgs 24.11/unstable, Fedora 41, etc.) This is inconvenient for our users and severely limits where the quick terminal can be used. As a result we then build gtk4-layer-shell ourselves by default unless `--system` or `-fsys=gtk4-layer-shell` are specified. This also allows me to add an idiomatic Zig API on top of the library and avoiding adding even more raw C code in the GTK apprt. Since we now build gtk4-layer-shell it should be theoretically available on all Linux systems we target. As such, the `-Dgtk-layer-shell` build option has been removed. This is somewhat of an experimental change as I don't know if gtk4-layer-shell works perfectly across all distros, and we can always add the option back if need be.
28 lines
762 B
Zig
28 lines
762 B
Zig
const std = @import("std");
|
|
|
|
pub const Targets = packed struct {
|
|
x11: bool = false,
|
|
wayland: bool = false,
|
|
};
|
|
|
|
/// Returns the targets that GTK4 was compiled with.
|
|
pub fn targets(b: *std.Build) Targets {
|
|
// Run pkg-config. We allow it to fail so that zig build --help
|
|
// works without all dependencies. The build will fail later when
|
|
// GTK isn't found anyways.
|
|
var code: u8 = undefined;
|
|
const output = b.runAllowFail(
|
|
&.{ "pkg-config", "--variable=targets", "gtk4" },
|
|
&code,
|
|
.Ignore,
|
|
) catch return .{};
|
|
|
|
const x11 = std.mem.indexOf(u8, output, "x11") != null;
|
|
const wayland = std.mem.indexOf(u8, output, "wayland") != null;
|
|
|
|
return .{
|
|
.x11 = x11,
|
|
.wayland = wayland,
|
|
};
|
|
}
|