pragma Singleton import QtQuick import Quickshell import "themes" QtObject { id: root readonly property var theme: Goldencity // ──────────────────────────────────────────────────────────────────────── // Widgets // ──────────────────────────────────────────────────────────────────────── property bool enableBgDate: true // ──────────────────────────────────────────────────────────────────────── // BAR // ──────────────────────────────────────────────────────────────────────── // ── Position & Dimensions ───────────────────────────────────────────────── property string barPosition: "bottom" property int barHeight: 35 property int margin: 15 property int radius: 26 // ── Module Lists ────────────────────────────────────────────────────────── property var leftModules: ["ArchLogo", "Stats"] property var centerModules: ["Workspace"] property var rightModules: ["Tray", "Notifications", "Volume", "Clock"] // ── Arch Logo ───────────────────────────────────────────────────────────── property int logoIconSize: 23 // icon font size; container width scales with it property string logoIcon: "󱄅" // Nerd Font glyph for the logo // ── Panel Styling ───────────────────────────────────────────────────────── property int panelBorderWidth: 1 property int moduleSpacing: 2 // space between modules within a panel property int panelSpacing: 12 // gap between left / center / right panels property int moduleHeight: 32 // default chip height for bar modules // ── Popup Styling ───────────────────────────────────────────────────────── property int popupRadius: 18 property int popupBorderWidth: 1 property int popupAnimDuration: 500 // ── Clock Popup ─────────────────────────────────────────────────────────── // Date format shown in the clock popup. // "MDY" → month/day/year (e.g. 4/28/2026) // "DMY" → day/month/year (e.g. 28/4/2026) property string clockDateFormat: "DMY" // ── Tray Styling ───────────────────────────────────────────────────────── property int trayHeight: 26 property int trayIconSize: 20 // ── Stats Styling ───────────────────────────────────────────────────────── property int statsRingSize: 23 property int statsRingFontSize: 10 // If true, the % value is shown by default; hovering shows the label, clicking swaps back. // If false, the label is shown by default; hovering shows the %, clicking swaps back. property bool statsShowPercentByDefault: true // If true, text is hidden completely until you hover a ring. // • Hover → shows the "default" value (% when statsShowPercentByDefault, label otherwise) // • Click → swaps to the "other" value (label / %) property bool statsHideTextUntilHover: false // ── Volume Module ───────────────────────────────────────────────────────── property int volumeIconSize: 20 property int volumeSliderHeight: 2 property int volumeHandleSize: 20 property int volumePopupWidth: 280 property int volumeOutputMax: 100 property int volumeInputMax: 200 // ──────────────────────────────────────────────────────────────────────── // FRAME // ──────────────────────────────────────────────────────────────────────── property int frameBorderWidth: 2 // ──────────────────────────────────────────────────────────────────────── // NOTIFICATIONS // ──────────────────────────────────────────────────────────────────────── property string notificationPosition: "topright" property int notificationHistorySize: 50 // ── Toast timeouts (milliseconds) ───────────────────────────────────────── property int notifTimeoutLow: 3500 property int notifTimeoutNormal: 5000 property int notifTimeoutCritical: 0 property int notifIconSize: 18 property int notifToastEdgePad: 10 // extra gap between toast cards and the frame border // ──────────────────────────────────────────────────────────────────────── // LAUNCHER // ──────────────────────────────────────────────────────────────────────── property string launcherScript: Quickshell.env("HOME") + "/.config/quickshell/launcher/launcher.sh" property string launcherCacheDir: "/tmp/qs_launcher" property bool launcherCloseOnClickOutside: true property bool launcherSelectFirst: false property bool launcherMipmapIcons: false }