Ports ZIG/src/config (minus C/WASM APIs) and cli/{args,CommaSplitter,
diagnostics}.zig into ghostty-config:
- all 202 options with exact names, types, defaults and verbatim docs,
declared through one config_struct! macro; Zig's comptime reflection is
replaced by the ConfigField/CliTarget traits
- loading: default XDG files, -e, config-file includes (optional '?',
cycle detection), themes incl. light:/dark: pairs, conditional config,
replay, finalize() derived defaults, clone/changed diffing for reload
- Linux/GTK default keybinds built on ghostty_input::binding::Set
- formatter producing +show-config output
Verified against the installed Ghostty 1.3.1: `+show-config --default`
and `--default --docs` match byte for byte (except gtk-opengl-debug,
which differs between debug/release builds), as do two complex loaded
configs.
Open items (docs/rewrite/notes/ghostty-config.md): url regex needs an
Oniguruma-compatible engine (onig) in the renderer; some font/terminal
types are local copies awaiting integration; KeyRemapSet equality is
order sensitive unlike Zig.
Test Plan:
- cargo test -p ghostty-config (255 tests)
- compare `ghostty +show-config --default --docs` with our formatter
53 lines
1.9 KiB
Plaintext
53 lines
1.9 KiB
Plaintext
# This is the configuration file for Ghostty.
|
|
#
|
|
# This template file has been automatically created at the following
|
|
# path since Ghostty couldn't find any existing config files on your system:
|
|
#
|
|
# {[path]s}
|
|
#
|
|
# The template does not set any default options, since Ghostty ships
|
|
# with sensible defaults for all options.
|
|
# Note that you should not paste the output of `ghostty +show-config
|
|
# --default` into your config: some default options actually conflict with each other
|
|
# when explicitly set in a configuration file. Instead, only set the
|
|
# options you actually need.
|
|
#
|
|
# Run `ghostty +show-config --default --docs` to view a list of
|
|
# all available config options and their default values.
|
|
#
|
|
# Additionally, each config option is also explained in detail
|
|
# on Ghostty's website, at https://ghostty.org/docs/config.
|
|
#
|
|
# Ghostty can reload the configuration while running by using the menu
|
|
# options or the bound key (default: Command + Shift + comma on macOS and
|
|
# Control + Shift + comma on other platforms). Not all config options can be
|
|
# reloaded while running; some only apply to new windows and others may require
|
|
# a full restart to take effect.
|
|
|
|
# Config syntax crash course
|
|
# ==========================
|
|
# # The config file consists of simple key-value pairs,
|
|
# # separated by equals signs.
|
|
# font-family = Iosevka
|
|
# window-padding-x = 2
|
|
#
|
|
# # Spacing around the equals sign does not matter.
|
|
# # All of these are identical:
|
|
# key=value
|
|
# key= value
|
|
# key =value
|
|
# key = value
|
|
#
|
|
# # Any line beginning with a # is a comment. It's not possible to put
|
|
# # a comment after a config option, since it would be interpreted as a
|
|
# # part of the value. For example, this will have a value of "#123abc":
|
|
# background = #123abc
|
|
#
|
|
# # Empty values are used to reset config keys to default.
|
|
# key =
|
|
#
|
|
# # Some config options have unique syntaxes for their value,
|
|
# # which is explained in the docs for that config option.
|
|
# # Just for example:
|
|
# resize-overlay-duration = 4s 200ms
|