Fix boot-critical, session, and UX bugs found in round-3 UX audit
Snapshots panel was non-functional (wrong snapper flag); breadgreet picked the wrong session .desktop and skipped bos-session's PATH fixup; Calamares aborted offline installs over an unnecessary packages module; snapshot rollback silently no-op'd on BOS's pinned-subvolume layout (now points at grub-btrfs instead); breadcrumbs was configurable but had no daemon to run it. Also: SUPER+I double-bind, breadpaper/packages panels blocking the GTK main thread, dead polkit rule, and a sweep of smaller drift (default sidebar view, stale wording, missing .desktop launchers, wallpaper daemon not recording its own default).
This commit is contained in:
parent
a8f1592e75
commit
d78a2343f4
32 changed files with 553 additions and 209 deletions
|
|
@ -18,16 +18,18 @@ if ! id liveuser &>/dev/null; then
|
|||
passwd -d liveuser >/dev/null
|
||||
fi
|
||||
|
||||
# Layer the installer onto the live desktop: auto-launch it, and bind Super+I to
|
||||
# relaunch it after it's been closed. Appended (in Lua) to the skel hyprland.lua
|
||||
# native config so the full desktop stays intact.
|
||||
# Layer the installer onto the live desktop: auto-launch it, and bind
|
||||
# Super+Shift+I to relaunch it after it's been closed. Appended (in Lua) to
|
||||
# the skel hyprland.lua native config so the full desktop stays intact.
|
||||
# NOTE: plain SUPER+I is float-toggle in the skel config — don't reuse it
|
||||
# here, it was tried once and silently double-bound both actions.
|
||||
HYPR=/home/liveuser/.config/hypr/hyprland.lua
|
||||
install -d -m 0755 -o liveuser -g liveuser /home/liveuser/.config/hypr
|
||||
if ! grep -q bos-launch-calamares "$HYPR" 2>/dev/null; then
|
||||
cat >>"$HYPR" <<'EOF'
|
||||
|
||||
-- --- live-media installer (added by bos-live-setup; absent on installed system) ---
|
||||
hl.bind("SUPER + I", hl.dsp.exec_cmd("bos-launch-calamares"))
|
||||
hl.bind("SUPER + SHIFT + I", hl.dsp.exec_cmd("bos-launch-calamares"))
|
||||
hl.on("hyprland.start", function() hl.dispatch(hl.dsp.exec_cmd("bos-launch-calamares")) end)
|
||||
EOF
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -1,24 +1,36 @@
|
|||
#!/bin/bash
|
||||
# First-run welcome. Shows a short getting-started message once, then drops a
|
||||
# marker so it never shows again. Launched from the Hyprland autostart; the
|
||||
# bos-welcome window class is floated/centred by a Hyprland window rule.
|
||||
# First-run welcome + first-run/every-login network check. Launched from the
|
||||
# Hyprland autostart; the bos-welcome window class is floated/centred by a
|
||||
# Hyprland window rule.
|
||||
set -u
|
||||
|
||||
# Never run in the live/installer session — only on an installed system.
|
||||
[[ "$(id -un)" == "liveuser" ]] && exit 0
|
||||
|
||||
marker="${XDG_CONFIG_HOME:-$HOME/.config}/bos/.welcomed"
|
||||
[[ -f "$marker" ]] && exit 0
|
||||
mkdir -p "$(dirname "$marker")"
|
||||
welcomed_marker="${XDG_CONFIG_HOME:-$HOME/.config}/bos/.welcomed"
|
||||
mkdir -p "$(dirname "$welcomed_marker")"
|
||||
|
||||
# First-run network check. A fresh install usually boots with no connection
|
||||
# (Wi-Fi isn't configured during install), and the first `bos-update`/pacman run
|
||||
# Network check. A fresh install usually boots with no connection (Wi-Fi
|
||||
# isn't configured during install), and the first `bos-update`/pacman run
|
||||
# then fails with confusing DNS/"could not resolve host" errors. If
|
||||
# NetworkManager reports we're not fully online, open nmtui so the user can join
|
||||
# a network before anything else. Best-effort: missing nmcli/nmtui/kitty, or the
|
||||
# user quitting nmtui, must never block the welcome below.
|
||||
# NetworkManager reports we're not fully online, open nmtui so the user can
|
||||
# join a network before anything else. This runs on EVERY login, not just
|
||||
# the first, and isn't gated by any marker — it keeps re-prompting until the
|
||||
# machine is actually online, then naturally stops (the "full" check below
|
||||
# short-circuits). Best-effort: missing nmcli/nmtui/kitty, or the user
|
||||
# quitting nmtui, must never block the welcome text below.
|
||||
if command -v nmcli &>/dev/null; then
|
||||
conn="$(nmcli networking connectivity check 2>/dev/null)"
|
||||
# NetworkManager may still be associating right at compositor start —
|
||||
# give it a few short retries before concluding we're actually offline,
|
||||
# so a machine with working Wi-Fi doesn't get a spurious nmtui popup.
|
||||
tries=0
|
||||
while [[ "$conn" != "full" && "$tries" -lt 3 ]]; do
|
||||
sleep 1
|
||||
conn="$(nmcli networking connectivity check 2>/dev/null)"
|
||||
tries=$((tries + 1))
|
||||
done
|
||||
|
||||
if [[ "$conn" != "full" ]]; then
|
||||
notify-send -u normal "BOS" "No internet yet — opening network setup so updates work." 2>/dev/null || true
|
||||
if command -v nmtui &>/dev/null; then
|
||||
|
|
@ -27,8 +39,10 @@ if command -v nmcli &>/dev/null; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# Mark welcomed only now, so an interrupted/aborted network step still re-prompts
|
||||
# next login rather than being suppressed forever.
|
||||
touch "$marker"
|
||||
# Welcome text: shown once ever, independent of network status above (an
|
||||
# offline machine still gets useful onboarding text — it just also keeps
|
||||
# getting the network prompt on future logins until it connects).
|
||||
[[ -f "$welcomed_marker" ]] && exit 0
|
||||
touch "$welcomed_marker"
|
||||
|
||||
exec kitty --class bos-welcome --title "Welcome to BOS" -- less -R /usr/share/bos/welcome.txt
|
||||
|
|
|
|||
|
|
@ -10,14 +10,16 @@
|
|||
SUPER + E files (nautilus)
|
||||
SUPER + B browser (zen)
|
||||
SUPER + U notes / reminders (breadpad)
|
||||
SUPER + M package manager (breadman)
|
||||
SUPER + M notes / task manager (breadman)
|
||||
SUPER + , BOS Settings
|
||||
SUPER + / this keybind cheatsheet
|
||||
SUPER + L lock screen
|
||||
SUPER + Backspace close window
|
||||
SUPER + F fullscreen
|
||||
SUPER + V toggle floating
|
||||
SUPER + Shift + V clipboard history
|
||||
SUPER + I toggle floating
|
||||
SUPER + P toggle pseudotile
|
||||
SUPER + R resize mode
|
||||
SUPER + V / Shift + V clipboard history (breadclip)
|
||||
SUPER + T toggle split direction
|
||||
SUPER + Tab last window
|
||||
SUPER + N exit Hyprland (log out)
|
||||
|
|
@ -45,6 +47,7 @@
|
|||
|
||||
MEDIA & HARDWARE KEYS
|
||||
volume / brightness / play-pause / next / prev (work on lock screen)
|
||||
calculator key opens gnome-calculator
|
||||
|
||||
──────────────────────────────────────────────────────────
|
||||
Press q to close. Configure everything in BOS Settings (SUPER + ,).
|
||||
|
|
|
|||
5
iso/airootfs/usr/share/wayland-sessions/bos.desktop
Normal file
5
iso/airootfs/usr/share/wayland-sessions/bos.desktop
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
[Desktop Entry]
|
||||
Name=BOS
|
||||
Comment=Bread OS (Hyprland)
|
||||
Exec=/usr/local/bin/bos-session
|
||||
Type=Application
|
||||
Loading…
Add table
Add a link
Reference in a new issue