feat(config-settings): rename config-toggle → config-settings; add __fish_user_dots_path UI #64

Merged
rootiest merged 10 commits from feat/config-settings-rename-path-var into main 2026-06-23 18:28:30 +00:00
2 changed files with 38 additions and 16 deletions
Showing only changes of commit 533ab60321 - Show all commits
+3 -3
View File
@@ -47,7 +47,7 @@ This config layers on top of the CachyOS base Fish configuration and adds:
> set -U __fish_config_op_logging off
> ```
>
> Or run **`config-toggle`** for an interactive menu to flip logging (and any
> Or run **`config-settings`** for an interactive menu to flip logging (and any
> other opinionated category) on or off — no variable names to remember.
>
> This takes effect immediately in every open shell. See [Session Logging](#session-logging)
@@ -89,7 +89,7 @@ set -U __fish_config_op_logging off # disable; takes effect in every open shel
set -Ue __fish_config_op_logging # re-enable (erase the override)
```
Prefer an interactive interface? Run **`config-toggle`** for a full-screen
Prefer an interactive interface? Run **`config-settings`** for a full-screen
picker that flips logging — and every other opinionated category — on or off
per session or universally, without memorizing variable names.
@@ -255,7 +255,7 @@ test -f "$__fish_user_dots_path/local.fish"
Everything opinionated in this config — command shadows, startup side-effects, key and environment overrides, terminal integrations, logging, and the first-run greeting — is active by default but can be switched off.
> **The easy way — `config-toggle`:** Run `config-toggle` for an interactive TUI that flips every setting below on, off, or back to default — per-session or universally — without typing a single variable name. Use the arrow keys (or `h`/`j`/`k`/`l`) to navigate and adjust, `Tab` to switch scope, and `q` to quit. Changes apply instantly. The panel auto-sizes to your terminal width (four tiers from 52- to 78-wide with a 6-column margin), centers itself horizontally, and redraws within ~0.3 s of a resize.
> **The easy way — `config-settings`:** Run `config-settings` for an interactive TUI that flips every setting below on, off, or back to default — per-session or universally — without typing a single variable name. Use the arrow keys (or `h`/`j`/`k`/`l`) to navigate and adjust, `Tab` to switch scope, and `q` to quit. Changes apply instantly. The panel auto-sizes to your terminal width (four tiers from 52- to 78-wide with a 6-column margin), centers itself horizontally, and redraws within ~0.3 s of a resize.
If you'd rather set them by hand, each category is controlled by a universal variable. Six category toggles and one master switch are available:
+35 -13
View File
@@ -48,7 +48,7 @@ A production-grade Fish shell configuration targeting Fish 4.x. It provides:
> your machine, but the files persist locally.
>
> - Disable all logging with: `set -U __fish_config_op_logging off`
> - Prefer a menu? Run the interactive picker: `config-toggle`
> - Prefer a menu? Run the interactive picker: `config-settings`
> - See Section 7 (C5 - Logging and Capture) for the full breakdown.
The configuration is split across:
@@ -1347,19 +1347,24 @@ Add -i (interactive confirmation) to destructive commands:
config-update --dry-run
config-update --force
### config-toggle
### config-settings
Synopsis: config-toggle [-h]
Synopsis: config-settings [-h]
Opens an interactive TUI for toggling the six opinionated component
categories (C1C6) and the master disable variable without having to
type or remember variable names. Two scope tabs allow independent
per-scope configuration:
Opens an interactive TUI for managing fish configuration settings. Handles
the six opinionated component categories (C1C6), the master disable
variable, and the __fish_user_dots_path path variable — without having to
type or remember variable names. Two scope tabs allow independent per-scope
configuration for category toggles:
Universal — persists across all sessions (set -U)
Session — current shell only (set -g)
Changes apply immediately on each value keypress. Always available
The Dots Path row always operates on the universal scope regardless of the
active tab.
Changes to category toggles apply immediately on each keypress. Changes to
the path variable use an inline edit prompt (Enter). Always available
regardless of the __fish_config_opinionated master state.
The panel adapts to the terminal width automatically, selecting from
@@ -1374,17 +1379,30 @@ Add -i (interactive confirmation) to destructive commands:
Navigation:
↑ ↓ / k j Move cursor
← → / h l Set value: OFF ← DEFAULT → ON (clamped)
← → / h l Set value: OFF ← DEFAULT → ON (toggle rows); LEFT clears path
Enter Edit the Dots Path (path row only)
Tab Switch scope (Universal ↔ Session)
q / Escape Exit
Left/Right (or vim-style h/l) move the highlighted value one step along
the OFFDEFAULTON scale and stop at the ends. DEFAULT erases the
variable so the master switch / built-in default applies.
Left/Right (or vim-style h/l) move the highlighted toggle value one step
along the OFFDEFAULTON scale and stop at the ends. DEFAULT erases the
variable so the master switch / built-in default applies. On the Dots Path
row, LEFT/h clears the universal variable; RIGHT/l is a no-op (use Enter).
Dots Path row [U] tag: the tag confirms this row always writes to the
universal scope, regardless of which tab is active. Setting it per-session
would have no effect on startup sourcing.
Flags:
--help / -h Show usage.
config-settings
### config-toggle (deprecated)
Deprecated alias for config-settings. Prints a deprecation notice to
stderr, then delegates all arguments to config-settings.
config-toggle
### bash
@@ -1659,7 +1677,7 @@ Examples:
# (erase both to go back to full-flavor defaults)
For an interactive alternative to setting these variables by hand, run
config-toggle — a full-screen TUI that flips any category (including C5
config-settings — a full-screen TUI that flips any category (including C5
logging) on or off, per session or universally. See its entry in Section 5.
Notes:
@@ -2098,6 +2116,10 @@ control in a private directory. The path defaults to
set -U __fish_user_dots_path /path/to/your/dots/fish
Or use the interactive TUI — run `config-settings` and navigate to the
"Dots Path" row (last row). Press Enter to type a new path, or ← / h to
reset to the default.
config.fish sources local.fish from that directory on every interactive
session. local.fish is responsible for sourcing its own secrets.fish: