diff --git a/config/dot/quickshell/config/PreferenceSchema.qml b/config/dot/quickshell/config/PreferenceSchema.qml index 473ea84..4270e1a 100644 --- a/config/dot/quickshell/config/PreferenceSchema.qml +++ b/config/dot/quickshell/config/PreferenceSchema.qml @@ -378,6 +378,93 @@ Singleton { detail: "Scales interface text everywhere; 1.00 is the design size" }, + // ── Weather ───────────────────────────────────────────────────────── + { + key: "temperatureUnit", type: "enum", def: "fahrenheit", group: "weather", + label: "Temperature unit", + detail: "Choose Fahrenheit or Celsius for the weather card", + options: [ + { value: "fahrenheit", label: "Fahrenheit" }, + { value: "celsius", label: "Celsius" } + ] + }, + { + key: "weatherRefreshMinutes", type: "int", def: 20, min: 5, max: 120, step: 5, + unit: "min", group: "weather", + label: "Weather refresh", + detail: "How often Panama updates the current conditions" + }, + + // ── Vitals refresh ────────────────────────────────────────────────── + { + key: "vitalsIntervalMs", type: "int", def: 2000, min: 500, max: 10000, step: 500, + unit: "ms", group: "vitals", + label: "Vitals refresh", + detail: "How often processor, memory, and graphics usage update" + }, + + // ── Notifications ─────────────────────────────────────────────────── + { + key: "notificationTimeoutMs", type: "int", def: 5000, min: 1000, max: 30000, step: 500, + unit: "ms", group: "notifications", + label: "Notification duration", + detail: "How long ordinary notification banners remain visible" + }, + { + key: "notificationTimeoutCriticalMs", type: "int", def: 0, min: 0, max: 60000, step: 1000, + unit: "ms", group: "notifications", + label: "Critical notification duration", + detail: "Zero keeps critical notification banners visible until dismissed" + }, + { + key: "notificationHistoryLimit", type: "int", def: 100, min: 10, max: 500, step: 10, + group: "notifications", + label: "Notification history", + detail: "Maximum notifications retained in the notification center" + }, + { + key: "maxVisibleToasts", type: "int", def: 4, min: 1, max: 8, step: 1, + group: "notifications", + label: "Visible banners", + detail: "Maximum notification banners shown at once" + }, + + // ── Capture ───────────────────────────────────────────────────────── + // Directories and encoder arguments are enums rather than free text: + // both are handed to a recorder process, and an arbitrary string there + // is a much larger surface than a settings page needs to expose. + { + key: "screenshotDir", type: "enum", def: "Pictures/Screenshots", group: "capture", + label: "Screenshot folder", + detail: "Folder under your home directory for screenshots", + options: [ + { value: "Pictures/Screenshots", label: "Pictures / Screenshots" }, + { value: "Pictures", label: "Pictures" }, + { value: "Desktop", label: "Desktop" } + ] + }, + { + key: "recordingDir", type: "enum", def: "Videos/Recordings", group: "capture", + label: "Recording folder", + detail: "Folder under your home directory for screen recordings", + options: [ + { value: "Videos/Recordings", label: "Videos / Recordings" }, + { value: "Videos", label: "Videos" }, + { value: "Desktop", label: "Desktop" } + ] + }, + { + key: "recorderArgs", type: "enum", def: "-c h264_vaapi -d /dev/dri/renderD128", + group: "capture", + label: "Recording encoder", + detail: "Hardware encoding keeps recording off the processor while gaming", + options: [ + { value: "-c h264_vaapi -d /dev/dri/renderD128", label: "VAAPI H.264" }, + { value: "-c hevc_vaapi -d /dev/dri/renderD128", label: "VAAPI HEVC" }, + { value: "-c libx264", label: "CPU x264" } + ] + }, + // ── Internal ──────────────────────────────────────────────────────── { key: "lastPage", type: "string", def: "home", group: "internal", diff --git a/config/dot/quickshell/modules/settings/ApplicationsPage.qml b/config/dot/quickshell/modules/settings/ApplicationsPage.qml new file mode 100644 index 0000000..d20d694 --- /dev/null +++ b/config/dot/quickshell/modules/settings/ApplicationsPage.qml @@ -0,0 +1,19 @@ +// Applications — PLACEHOLDER. +// +// Owned by the codex agent, which is building default-application handling and +// the autostart list. This stub exists only so the page id can be routed, +// registered, and searchable before that work lands; it is expected to be +// replaced wholesale rather than edited. + +import QtQuick +import qs.config + +SettingsPage { + title: "Applications" + lede: "Default applications and what starts with your session." + + SettingsCard { + title: "Being built" + subtitle: "Default browser, mail, files, and terminal, plus the autostart list, are on their way." + } +} diff --git a/config/dot/quickshell/modules/settings/SettingsShell.qml b/config/dot/quickshell/modules/settings/SettingsShell.qml index 81e54a6..d1ef625 100644 --- a/config/dot/quickshell/modules/settings/SettingsShell.qml +++ b/config/dot/quickshell/modules/settings/SettingsShell.qml @@ -102,6 +102,7 @@ Rectangle { case "accessibility": return accessibilityPage; case "power": return powerPage; case "datetime": return dateTimePage; + case "applications": return applicationsPage; case "services": return servicesPage; case "about": return aboutPage; default: return homePage; @@ -139,6 +140,7 @@ Rectangle { } Component { id: homePage; HomePage {} } + Component { id: applicationsPage; ApplicationsPage {} } Component { id: accessibilityPage; AccessibilityPage {} } Component { id: powerPage; PowerPage {} } Component { id: dateTimePage; DateTimePage {} } diff --git a/config/dot/quickshell/modules/settings/SettingsSidebar.qml b/config/dot/quickshell/modules/settings/SettingsSidebar.qml index 0f1d099..02ffacf 100644 --- a/config/dot/quickshell/modules/settings/SettingsSidebar.qml +++ b/config/dot/quickshell/modules/settings/SettingsSidebar.qml @@ -30,6 +30,7 @@ Rectangle { { page: "accessibility", label: "Accessibility", icon: "\u{F0208}" }, { page: "power", label: "Power & Lock", icon: "\u{F0425}" }, { page: "datetime", label: "Date & Time", icon: "\u{F0954}" }, + { page: "applications", label: "Applications", icon: "\u{F003B}" }, { page: "services", label: "Startup & Services", icon: "\u{F0493}" }, { page: "about", label: "About Panama", icon: "\u{F02FD}" } ] diff --git a/config/dot/quickshell/modules/settings/qmldir b/config/dot/quickshell/modules/settings/qmldir index 4cdb5c6..e6634d7 100644 --- a/config/dot/quickshell/modules/settings/qmldir +++ b/config/dot/quickshell/modules/settings/qmldir @@ -31,3 +31,4 @@ PowerPage 1.0 PowerPage.qml DateTimePage 1.0 DateTimePage.qml AccessibilityPage 1.0 AccessibilityPage.qml WallpaperPicker 1.0 WallpaperPicker.qml +ApplicationsPage 1.0 ApplicationsPage.qml diff --git a/config/dot/quickshell/services/SettingsSearch.qml b/config/dot/quickshell/services/SettingsSearch.qml index eaa30a9..e45028f 100644 --- a/config/dot/quickshell/services/SettingsSearch.qml +++ b/config/dot/quickshell/services/SettingsSearch.qml @@ -46,7 +46,7 @@ Singleton { { label: "Wi-Fi", detail: "Managed by GNOME Settings", page: "connectivity" }, { label: "Bluetooth", detail: "Managed by GNOME Settings", page: "connectivity" }, { label: "Printers", detail: "Managed by GNOME Settings", page: "connectivity" }, - { label: "Default applications", detail: "Browser, mail, files", page: "services" }, + { label: "Default applications", detail: "Browser, mail, files", page: "applications" }, { label: "Restore defaults", detail: "Return every Panama setting to its shipped value", page: "desktop" }, { label: "Keyboard shortcuts", detail: "Every shortcut the compositor has bound", page: "shortcuts" } ] diff --git a/config/dot/quickshell/services/ShellState.qml b/config/dot/quickshell/services/ShellState.qml index 578b7f4..28bb534 100644 --- a/config/dot/quickshell/services/ShellState.qml +++ b/config/dot/quickshell/services/ShellState.qml @@ -92,7 +92,7 @@ Singleton { } function openSettings(page: string): void { - const allowed = ["home", "appearance", "displays", "connectivity", "home-phone", "desktop", "sound", "notifications", "screen-intelligence", "shortcuts", "accessibility", "power", "datetime", "services", "about"]; + const allowed = ["home", "appearance", "displays", "connectivity", "home-phone", "desktop", "sound", "notifications", "screen-intelligence", "shortcuts", "accessibility", "power", "datetime", "applications", "services", "about"]; root.settingsPage = allowed.indexOf(page) >= 0 ? page : "home"; DesktopPreferences.set("lastPage", root.settingsPage); root.settingsOpen = true;