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:
parent
434efcea22
commit
664298b6b4
105 changed files with 3280 additions and 5149 deletions
28
breadhelp/content/README.md
Normal file
28
breadhelp/content/README.md
Normal 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.
|
||||
|
|
@ -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]
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "Snapshots and rollback"
|
||||
difficulty = "advanced"
|
||||
tags = ["snapper", "snapshots", "rollback"]
|
||||
related = []
|
||||
estimated_minutes = 3
|
||||
10
breadhelp/content/apps/01-notes-and-tasks/content.md
Normal file
10
breadhelp/content/apps/01-notes-and-tasks/content.md
Normal 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]
|
||||
5
breadhelp/content/apps/01-notes-and-tasks/meta.toml
Normal file
5
breadhelp/content/apps/01-notes-and-tasks/meta.toml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
title = "Notes and tasks"
|
||||
difficulty = "beginner"
|
||||
tags = ["breadpad", "breadman", "notes"]
|
||||
related = []
|
||||
estimated_minutes = 2
|
||||
|
|
@ -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]
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "Customizing the bar and launcher"
|
||||
difficulty = "beginner"
|
||||
tags = ["breadbar", "breadbox", "customization"]
|
||||
related = ["01-what-is-bos"]
|
||||
estimated_minutes = 2
|
||||
|
|
@ -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]
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "Searching your files"
|
||||
difficulty = "beginner"
|
||||
tags = ["search", "files", "breadsearch"]
|
||||
related = []
|
||||
estimated_minutes = 2
|
||||
|
|
@ -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]
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "Clipboard history"
|
||||
difficulty = "beginner"
|
||||
tags = ["clipboard", "breadclip"]
|
||||
related = []
|
||||
estimated_minutes = 1
|
||||
|
|
@ -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]
|
||||
21
breadhelp/content/getting-started/01-what-is-bos/content.md
Normal file
21
breadhelp/content/getting-started/01-what-is-bos/content.md
Normal 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]
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "What is BOS?"
|
||||
difficulty = "beginner"
|
||||
tags = ["overview", "welcome"]
|
||||
related = ["02-essential-keybinds"]
|
||||
estimated_minutes = 2
|
||||
|
|
@ -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.
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "The essential keybinds"
|
||||
difficulty = "beginner"
|
||||
tags = ["keybinds", "hyprland"]
|
||||
related = ["01-what-is-bos"]
|
||||
estimated_minutes = 3
|
||||
|
|
@ -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]
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "Personalizing BOS"
|
||||
difficulty = "beginner"
|
||||
tags = ["wallpaper", "theme", "customization"]
|
||||
related = []
|
||||
estimated_minutes = 3
|
||||
13
breadhelp/content/troubleshooting/01-fixing-wifi/content.md
Normal file
13
breadhelp/content/troubleshooting/01-fixing-wifi/content.md
Normal 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]
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
title = "Fixing Wi-Fi problems"
|
||||
difficulty = "beginner"
|
||||
tags = ["wifi", "network", "breadcrumbs"]
|
||||
related = []
|
||||
estimated_minutes = 2
|
||||
35
breadhelp/content/troubleshooting/_symptoms/no-sound.toml
Normal file
35
breadhelp/content/troubleshooting/_symptoms/no-sound.toml
Normal 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
|
||||
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue