Give Sound the whole story, and keep the buttons inside the card

Claude-Session: https://claude.ai/code/session_01Ms2FbjQy31TVf3CEvQhGM8
This commit is contained in:
Gabriel Brown
2026-08-24 11:39:16 -04:00
parent 9bc68ba358
commit b58371bb35
38 changed files with 3884 additions and 213 deletions
@@ -1487,6 +1487,24 @@ Singleton {
detail: "Maximum notification banners shown at once"
},
// ── Sound ───────────────────────────────────────────────────────────
// The two audio preferences that are Panama's own. Everything else on
// the Sound page is live PipeWire or a GNOME desktop key, and belongs
// to the system rather than to this file.
//
// Both are read by scripts/panama-osd as well as by the shell, so the
// volume keys behave the same whether the panel is open or not.
{
key: "overAmplification", type: "bool", def: false, group: "sound",
label: "Over-amplification",
detail: "Lets the volume slider go to 150% — louder, at the cost of distortion on some hardware"
},
{
key: "volumeChangeBlip", type: "bool", def: true, group: "sound",
label: "Volume-change blip",
detail: "A short click each time the volume keys move the output level"
},
// ── Capture ─────────────────────────────────────────────────────────
// Directories and encoder arguments are enums rather than free text:
// both are handed to a recorder process, and an arbitrary string there
@@ -83,6 +83,13 @@ Singleton {
readonly property int notificationHistoryLimit: DesktopPreferences.get("notificationHistoryLimit")
readonly property int maxVisibleToasts: DesktopPreferences.get("maxVisibleToasts")
// ── Sound ───────────────────────────────────────────────────────────────
// Over-amplification is the clamp ceiling for output volume: off means 1.0,
// on means 1.5. Every slider and the volume keys read the same switch, so
// the ceiling cannot differ depending on where you changed the volume from.
readonly property bool overAmplification: DesktopPreferences.get("overAmplification")
readonly property bool volumeChangeBlip: DesktopPreferences.get("volumeChangeBlip")
// ── Focus ──────────────────────────────────────────────────────────────
// One deliberate default rather than a preset picker: quick settings and
// the keyboard shortcut should start a useful session in one action.