Extract bos-settings to its own repo; add breadhelp; JSON-driven Hyprland config

bos-settings moves to git.breadway.dev/Breadway/bos-settings (full history
preserved via git-filter-repo) so its release cadence is decoupled from
BOS's own. breadhelp takes its place as this repo's workspace member: a
GTK4 onboarding/help center replacing the old bos-welcome/bos-keybinds
bash scripts with searchable guides, an interactive keybind viewer
(sourced from the new keybinds.toml, not parsed out of hyprland.lua or
hardcoded), a troubleshooting wizard with one-click fixes, and a proper
first-run tour. bos-netcheck extracts bos-welcome's network-check half,
which still needs to run every login independent of breadhelp's own
first-run gating.

hyprland.lua's keybinds/settings/monitors/autostart are now JSON-driven
(binds.json/settings.json/monitors.json/autostart.json) with every
loader pcall-wrapped and falling back to hardcoded defaults per field on
bad or missing config, so bread* apps (bos-settings' new editors, and
breadhelp's keybind viewer) can read/write this config without ever
being able to leave the compositor unable to start.

CI's package.yml now builds breadhelp instead of bos-settings on tag
push; bos-settings needs its own equivalent workflow in its new repo
(not yet set up).
This commit is contained in:
Breadway 2026-07-05 09:16:14 +08:00
parent 434efcea22
commit 664298b6b4
105 changed files with 3280 additions and 5149 deletions

View file

@ -0,0 +1,28 @@
# breadhelp content
Guides and troubleshooting data, installed to `/usr/share/breadhelp/content/`.
User overrides/additions live at `~/.local/share/breadhelp/content/` (same
shape; a colliding guide directory name wins wholesale over the system copy).
Categories are just top-level directories here — the Learn tab lists whatever
exists, so adding a category is a content change, not a code change:
```
getting-started/
daily-use/
customization/
apps/
troubleshooting/
_symptoms/ # troubleshooting wizard's symptom-tree *.toml files
advanced/
```
Each guide is a directory with:
- `meta.toml` — title, difficulty, tags, related guides, estimated time
- `content.md` — the guide body (constrained Markdown subset + `[Run]`/
`[Show Keybind]` tags — see `src/content/markdown.rs`)
- `content.beginner.md` — optional, used in Beginner/Dad mode instead of
`content.md` when present
Content lands starting at M2.

View file

@ -0,0 +1,13 @@
# Snapshots and rollback
Every package change snapshots your root filesystem automatically (snapper +
snap-pac). Nothing to configure — it just happens.
## Roll back
- From BOS Settings' Snapshots page, or
- Right from the GRUB menu at boot (pick an older snapshot to boot into).
## Take a manual snapshot before something risky
- [Run]snapper -c root create --description "manual snapshot"|Create a snapshot now[/Run]

View file

@ -0,0 +1,5 @@
title = "Snapshots and rollback"
difficulty = "advanced"
tags = ["snapper", "snapshots", "rollback"]
related = []
estimated_minutes = 3

View file

@ -0,0 +1,10 @@
# Notes and tasks
Two dedicated apps, so quick notes and real task tracking don't compete for
the same window.
- [Show Keybind]super + u[/Show Keybind] opens breadpad — a fast popup for jotting something down right now.
- [Show Keybind]super + m[/Show Keybind] opens breadman — reminders and a task list for things that need to stick around.
- [Run]breadpad|Open Notes[/Run]
- [Run]breadman|Open Tasks[/Run]

View file

@ -0,0 +1,5 @@
title = "Notes and tasks"
difficulty = "beginner"
tags = ["breadpad", "breadman", "notes"]
related = []
estimated_minutes = 2

View file

@ -0,0 +1,7 @@
# Customizing the bar and launcher
The bar (breadbar) and launcher (breadbox) both have their own settings
pages — position, modules, appearance.
- [Run]bos-settings --page breadbar|Open Bar Settings[/Run]
- [Run]bos-settings --page breadbox|Open Launcher Settings[/Run]

View file

@ -0,0 +1,5 @@
title = "Customizing the bar and launcher"
difficulty = "beginner"
tags = ["breadbar", "breadbox", "customization"]
related = ["01-what-is-bos"]
estimated_minutes = 2

View file

@ -0,0 +1,9 @@
# Searching your files
breadsearch indexes your files so you can find things instantly, without
digging through folders.
- Open it from BOS Settings, or run it directly.
- Type a few letters of a filename — results update as you type.
- [Run]breadsearch|Open File Search[/Run]

View file

@ -0,0 +1,5 @@
title = "Searching your files"
difficulty = "beginner"
tags = ["search", "files", "breadsearch"]
related = []
estimated_minutes = 2

View file

@ -0,0 +1,7 @@
# Clipboard history
BOS remembers what you've copied, not just the last thing.
- [Show Keybind]super + v[/Show Keybind] opens clipboard history — pick anything you've copied recently and paste it again.
- [Run]breadclip|Open Clipboard History[/Run]

View file

@ -0,0 +1,5 @@
title = "Clipboard history"
difficulty = "beginner"
tags = ["clipboard", "breadclip"]
related = []
estimated_minutes = 1

View file

@ -0,0 +1,10 @@
# Welcome!
This computer runs BOS — a friendly desktop built for you.
- Hold down the SUPER key (it looks like a little window logo) and press other keys to do things.
- [Show Keybind]super + /[/Show Keybind] always shows you every shortcut, so you never have to memorize anything.
- [Show Keybind]super + ,[/Show Keybind] opens Settings.
- If anything ever looks wrong, your computer saves a safety copy every time something changes — nothing is ever truly lost.
- [Run]bos-settings|Open Settings[/Run]

View file

@ -0,0 +1,21 @@
# Welcome to BOS
BOS (the Bread Operating System) is a complete Hyprland desktop with the
bread ecosystem preinstalled: a bar, a launcher, notes, Wi-Fi profiles, and a
settings app that needs no config files.
## The basics
- SUPER is the Windows/Cmd key — almost everything starts with it.
- [Show Keybind]super + /[/Show Keybind] shows the full keybind cheatsheet any time.
- [Show Keybind]super + ,[/Show Keybind] opens BOS Settings — configure the bar, launcher, Wi-Fi, notes, snapshots, and package updates all in one place.
- [Show Keybind]super + space[/Show Keybind] opens the app launcher (breadbox).
- [Show Keybind]super + return[/Show Keybind] opens a terminal.
## Safety net
Your system snapshots itself on every package change. If an update breaks
something, roll it back from BOS Settings or pick a snapshot right from the
GRUB menu at boot.
- [Run]bos-settings|Open BOS Settings[/Run]

View file

@ -0,0 +1,5 @@
title = "What is BOS?"
difficulty = "beginner"
tags = ["overview", "welcome"]
related = ["02-essential-keybinds"]
estimated_minutes = 2

View file

@ -0,0 +1,23 @@
# The essential keybinds
Hyprland is keyboard-first. You don't need a mouse for any of this — but
nothing here is mandatory either, click around if you'd rather.
## Windows
- [Show Keybind]super + return[/Show Keybind] opens a terminal
- [Show Keybind]super + backspace[/Show Keybind] closes the focused window
- [Show Keybind]super + f[/Show Keybind] toggles fullscreen
- [Show Keybind]super + i[/Show Keybind] toggles floating
## Apps
- [Show Keybind]super + space[/Show Keybind] opens the launcher (breadbox)
- [Show Keybind]super + e[/Show Keybind] opens files
- [Show Keybind]super + b[/Show Keybind] opens the browser
- [Show Keybind]super + u[/Show Keybind] opens notes
## The full list
The Home tab's keybind viewer always has the complete, current list — this
guide only covers the ones you'll use every day.

View file

@ -0,0 +1,5 @@
title = "The essential keybinds"
difficulty = "beginner"
tags = ["keybinds", "hyprland"]
related = ["01-what-is-bos"]
estimated_minutes = 3

View file

@ -0,0 +1,18 @@
# Personalizing BOS
The whole desktop recolors itself from your wallpaper — bar, launcher,
notes, settings, and this help center all pick up the same palette
automatically.
## Change your wallpaper
- [Run]breadpaper|Open the wallpaper picker[/Run]
Picking a new wallpaper regenerates the color palette for every bread app —
no restart needed, everything live-reloads.
## Change the bar and launcher
Open BOS Settings for per-app options:
- [Run]bos-settings|Open BOS Settings[/Run]

View file

@ -0,0 +1,5 @@
title = "Personalizing BOS"
difficulty = "beginner"
tags = ["wallpaper", "theme", "customization"]
related = []
estimated_minutes = 3

View file

@ -0,0 +1,13 @@
# Fixing Wi-Fi problems
Most Wi-Fi issues clear up by toggling the radio off and back on.
- [Run]nmcli radio wifi off && sleep 1 && nmcli radio wifi on|Reconnect Wi-Fi[/Run]
For saved networks and profiles (home, work, away), use breadcrumbs:
- [Run]breadcrumbs|Manage Wi-Fi Profiles[/Run]
Or jump straight to the Network settings page:
- [Run]bos-settings --page network|Open Network Settings[/Run]

View file

@ -0,0 +1,5 @@
title = "Fixing Wi-Fi problems"
difficulty = "beginner"
tags = ["wifi", "network", "breadcrumbs"]
related = []
estimated_minutes = 2

View file

@ -0,0 +1,35 @@
# Symptom tree for the troubleshooting wizard — walked by
# src/ui/troubleshoot_wizard.rs via src/content/troubleshoot.rs.
[[node]]
id = "start"
prompt = "What's wrong with your sound?"
[[node.options]]
label = "No sound at all"
goto = "restart-audio"
[[node.options]]
label = "Wrong output device (e.g. HDMI instead of speakers)"
goto = "wrong-device"
[[node]]
id = "restart-audio"
prompt = "Restarting the audio service fixes this most of the time."
[node.fix]
description = "Restart PipeWire/WirePlumber"
command = "systemctl --user restart wireplumber pipewire pipewire.socket pipewire-pulse pipewire-pulse.socket"
requires_confirm = false
[[node]]
id = "wrong-device"
prompt = "Open Sound settings and pick the right output device from the list."
[[node.options]]
label = "Open Sound settings"
goto = "open-sound-settings"
[[node]]
id = "open-sound-settings"
prompt = "Opening BOS Settings' Sound page."
[node.fix]
description = "Open Sound settings"
command = "bos-settings --page sound"
requires_confirm = false

View file

@ -0,0 +1,25 @@
[[node]]
id = "start"
prompt = "What's happening with Wi-Fi?"
[[node.options]]
label = "It won't connect / keeps dropping"
goto = "toggle-radio"
[[node.options]]
label = "I need to manage saved networks or profiles"
goto = "breadcrumbs"
[[node]]
id = "toggle-radio"
prompt = "Toggling the Wi-Fi radio off and back on clears up most connection issues."
[node.fix]
description = "Reconnect Wi-Fi"
command = "nmcli radio wifi off && sleep 1 && nmcli radio wifi on"
requires_confirm = false
[[node]]
id = "breadcrumbs"
prompt = "breadcrumbs manages your saved networks and profiles (home, work, away)."
[node.fix]
description = "Open breadcrumbs"
command = "breadcrumbs"
requires_confirm = false