Built-in settings dialog opened from a panel gear button

- New spawn_settings action + '≡ Inställningar' button in the default
  panel (≡ instead of ⚙ which has ambiguous character width): opens a
  singleton settings window
- Rows: theme (cycles built-in + themes/*.toml), panel (cycles
  panels/*.toml), shadow and scrollbar toggles — keyboard (arrows/
  Enter/Esc) and mouse (click selects, click again activates)
- Shows where config.toml, themes/ and panels/ live
- Changes apply immediately and persist to config.toml via toml_edit;
  the hot-reload watcher picks up the file writes for panels
- README and --help updated with switcher/snap/copy-mode/theme docs
- Integration suite: 30/30 (gear click, dialog opens, shadow toggle
  persisted to config.toml)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-15 19:48:04 +02:00
parent b1424da4fb
commit c9a4a8fc21
7 changed files with 334 additions and 2 deletions

View File

@@ -97,8 +97,18 @@ KONFIGURATION (./config.toml + panels/*.toml):
TANGENTER (standard, ändras via [[keybind]] i config.toml):
ctrl+space Kommandodialog — skriv t.ex. `htop` och tryck Enter
alt+enter Ny terminal
alt+tab/alt+w Fönsterväxlare (MRU) — Tab stegar, Enter väljer
alt+left/right Fäst fönster som vänster/höger halvskärm
alt+up Maximera/återställ (även dubbelklick på titelraden)
alt+c Copy-mode: bläddra/söka i historiken (/ n N q)
ctrl+q Avsluta (från en ansluten klient: kopplar bara ner den)
TEMA & INSTÄLLNINGAR:
theme = \"themes/dark.toml\" i config.toml väljer tema (egna teman =
egna TOML-filer). Kugghjulet ≡ i panelen öppnar inbyggda
inställningar (tema, panel, skugga, scrollbar). config.toml,
panel- och temafiler hot-reloadas när de ändras.
MUS:
Dra titelraden = flytta fönster Dra kant/hörn = ändra storlek
Scroll = historik (skal) eller vidarebefordras (appar med mus-stöd)
@@ -491,6 +501,7 @@ fn handle_ipc_event(
WindowContent::PopupDialog { message, .. } => {
format!("[Popup: {}]", &message[..message.len().min(20)])
}
WindowContent::Settings { .. } => "[Inställningar]".to_string(),
};
Some(WindowInfo {
id: w.id,