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:
Jeffrey C. Ollie
2025-01-22 16:41:41 -06:00
committed by Mitchell Hashimoto
parent b975f1e860
commit c7971b562e
5 changed files with 247 additions and 0 deletions

View File

@@ -531,6 +531,7 @@ pub fn init(
var io_exec = try termio.Exec.init(alloc, .{
.command = command,
.env = env,
.env_override = config.env,
.shell_integration = config.@"shell-integration",
.shell_integration_features = config.@"shell-integration-features",
.working_directory = config.@"working-directory",