Settings
Workspace settings live in .gurl/settings.toml as plain TOML. The file is yours to hand-edit.
The four layers
Values are merged from four files, lowest precedence first:
- Built-in defaults — shipped inside the app. Always participates.
- Global —
~/Library/Application Support/Gurl/settings.toml. Per-user. Useful for binary overrides that apply across every workspace on your machine. - Workspace shared —
<workspace>/.gurl/settings.toml. Committed to the repo and shared with your team. - Workspace local —
<workspace>/.gurl/settings.local.toml. Gitignored. Per-machine overrides for this checkout.
Merge rule: last layer wins, present overrides absent. Omitting a key in a higher layer is a non-vote, not a clear. Arrays (exclude_files, environment) replace atomically when present — restate the lower layer's contents if you want to add to them.
Keys
# Window title pattern. Substitutions: {{target}}, {{file}},
# {{file.path}}, {{folder}}, {{dirty}}, {{env.NAME}}.
title_template = "{{dirty}}Gurl - {{target}}/"
# Override the hurl + hurlfmt binaries. When omitted, Gurl resolves
# each from PATH + Homebrew fallbacks.
hurl_path = "/opt/homebrew/bin/hurl"
hurlfmt_path = "/opt/homebrew/bin/hurlfmt"
# Globs hidden from the file tree. Toggle with ⌘⇧. at runtime.
exclude_files = ["**/.DS_Store", ".gurl/state", ".gurl/.gitignore"]
# Environments — switchable from the toolbar dropdown.
[[environment]]
name = "Beta"
color = "#5E81AC"
files = [".env/.env.beta"]
[[environment]]
name = "Production"
color = "#BF616A"
files = [".env/.env.production"]
| Key | Type | Notes |
|---|---|---|
title_template | string | See Title-template substitutions below for the vocabulary. |
hurl_path | string | Absolute, ~/…, or relative-to-workspace-root. |
hurlfmt_path | string | Same rules. Used for the inline linter. |
exclude_files | [string] | VS Code-style globs. **/foo matches anywhere; bare names match by basename. |
[[environment]] | array of tables | See Environments. |
Title-template substitutions
title_template accepts a small set of substitutions that resolve at runtime — useful for telling environments apart at a glance from the window title.
| Token | Resolves to |
|---|---|
{{target}} / {{folder}} | The workspace folder name. |
{{file}} | The currently-focused tab's filename. |
{{file.path}} | Same, but the full path. |
{{dirty}} | ● when the focused tab has unsaved changes, empty otherwise. |
{{env.NAME}} | The value of NAME from the active env files. e.g. {{env.STAGE}} if any active env file contains STAGE=production. |