mirror of
https://github.com/ghostty-org/ghostty.git
synced 2025-10-17 07:16:12 +00:00
core: add env
config option
Fixes #5257 Specify environment variables to pass to commands launched in a terminal surface. The format is `env=KEY=VALUE`. `env = foo=bar` `env = bar=baz` Setting `env` to an empty string will reset the entire map to default (empty). `env =` Setting a key to an empty string will remove that particular key and corresponding value from the map. `env = foo=bar` `env = foo=` will result in `foo` not being passed to the launched commands. Setting a key multiple times will overwrite previous entries. `env = foo=bar` `env = foo=baz` will result in `foo=baz` being passed to the launched commands. These environment variables _will not_ be passed to commands run by Ghostty for other purposes, like `open` or `xdg-open` used to open URLs in your browser.
This commit is contained in:

committed by
Mitchell Hashimoto

parent
b975f1e860
commit
c7971b562e
@@ -683,6 +683,7 @@ pub const ThreadData = struct {
|
||||
pub const Config = struct {
|
||||
command: ?[]const u8 = null,
|
||||
env: EnvMap,
|
||||
env_override: configpkg.RepeatableStringMap = .{},
|
||||
shell_integration: configpkg.Config.ShellIntegration = .detect,
|
||||
shell_integration_features: configpkg.Config.ShellIntegrationFeatures = .{},
|
||||
working_directory: ?[]const u8 = null,
|
||||
@@ -889,6 +890,15 @@ const Subprocess = struct {
|
||||
log.warn("shell could not be detected, no automatic shell integration will be injected", .{});
|
||||
}
|
||||
|
||||
// Add the environment variables that override any others.
|
||||
{
|
||||
var it = cfg.env_override.iterator();
|
||||
while (it.next()) |entry| try env.put(
|
||||
entry.key_ptr.*,
|
||||
entry.value_ptr.*,
|
||||
);
|
||||
}
|
||||
|
||||
// Build our args list
|
||||
const args = args: {
|
||||
const cap = 9; // the most we'll ever use
|
||||
|
Reference in New Issue
Block a user