diff --git a/build.zig b/build.zig index bedb87de9..7c6571b43 100644 --- a/build.zig +++ b/build.zig @@ -269,6 +269,28 @@ pub fn build(b: *std.Build) !void { } } + // Shell-integration + { + const install = b.addInstallDirectory(.{ + .source_dir = .{ .path = "src/shell-integration" }, + .install_dir = .{ .custom = "share" }, + .install_subdir = "shell-integration", + .exclude_extensions = &.{".md"}, + }); + b.getInstallStep().dependOn(&install.step); + + if (target.isDarwin()) { + const mac_install = b.addInstallDirectory(options: { + var copy = install.options; + copy.install_dir = .{ + .custom = "Ghostty.app/Contents/Resources", + }; + break :options copy; + }); + b.getInstallStep().dependOn(&mac_install.step); + } + } + // Terminfo { // Encode our terminfo diff --git a/src/shell-integration/README.md b/src/shell-integration/README.md new file mode 100644 index 000000000..46c3659ee --- /dev/null +++ b/src/shell-integration/README.md @@ -0,0 +1,20 @@ +# Shell Integration Code + +This is the shell-specific shell-integration code that is +used for the shell-integration feature set that Ghostty +supports. + +This README is meant as developer documentation and not as +user documentation. For user documentation, see the main +README. + +## Implementation Details + +### Fish + +For [Fish](https://fishshell.com/), Ghostty prepends to the +`XDG_DATA_DIRS` directory. Fish automatically loads configuration +files in `/fish/vendor_conf.d/*.fish` on startup, +allowing us to automatically integrate with the shell. For details +on the Fish startup process, see the +[Fish documentation](https://fishshell.com/docs/current/language.html). diff --git a/src/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish b/src/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish new file mode 100755 index 000000000..2d2d9da29 --- /dev/null +++ b/src/shell-integration/fish/vendor_conf.d/ghostty-shell-integration.fish @@ -0,0 +1,3 @@ +#!/bin/fish + +echo GHOSTTY INTEGRATION LOADING