pragma Singleton import QtQuick import Quickshell import "themes" QtObject { id: root readonly property var theme: Goldencity // ──────────────────────────────────────────────────────────────────────── // Widgets // ──────────────────────────────────────────────────────────────────────── property bool enableBgDate: true property bool enablePolkit: true // ──────────────────────────────────────────────────────────────────────── // BAR // ──────────────────────────────────────────────────────────────────────── // ── Position & Dimensions ───────────────────────────────────────────────── property string barPosition: "bottom" property int barHeight: 35 property int margin: 15 property int radius: 20 // ── Module Lists ────────────────────────────────────────────────────────── property var leftModules: ["Logo", "Stats", "Crypto"] property var centerModules: ["Workspace"] property var rightModules: ["Tray", "Notifications", "Volume", "Network", "Battery" ,"Clock"] // ── Logo ───────────────────────────────────────────────────────────── property int logoIconSize: 23 // icon font size; container width scales with it property string logoIcon: "󱄅" // Nerd Font glyph for the logo property int logoSpinDuration: 600 // spin animation duration in ms // ── Panel Styling ───────────────────────────────────────────────────────── property int panelBorderWidth: 1 property int moduleSpacing: 5 // space between modules within a panel property int panelSpacing: 12 // gap between left / center / right panels property int moduleHeight: 23 // default chip height for bar modules // ── Popup Styling ───────────────────────────────────────────────────────── property int popupRadius: 18 property int popupBorderWidth: 1 property int popupAnimDuration: 250 // ── Clock Module ───────────────────────────────────────────────────────── property bool clockExtendEnabled: true // seconds extension on hover for clock // ── Timezone (IANA name, e.g. "America/New_York", "Europe/London") ────────── // Leave empty to use the system timezone. property string timezone: "" // Date format used in the clock popup and background date widget. // "MDY" → month/day/year (e.g. May 14, 2026) // "DMY" → day/month/year (e.g. 14 May 2026) property string dateFormat: "DMY" // ── Tray Styling ───────────────────────────────────────────────────────── property int trayToggleSize: 23 // size of the expand/collapse arrow button property int trayIconSize: 20 // size of each system tray item icon // ── Stats Styling ───────────────────────────────────────────────────────── property int statsRingSize: 22 property int statsRingFontSize: 12 property int statsIconSize: 10 // Where the percentage label appears when stats are expanded. // "right" → label to the right of the ring; "left" → label to the left. property string statsLabelPosition: "right" // If true, percentage labels are visible on startup without clicking. property bool statsStartExpanded: false // ── Volume Module ───────────────────────────────────────────────────────── property bool volumeShakeEnabled: true // rotation shake for volume chip 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: 3 // ──────────────────────────────────────────────────────────────────────── // NOTIFICATIONS // ──────────────────────────────────────────────────────────────────────── property bool notificationShakeEnabled: true // bell ringing shake for notifications property string notificationPosition: "bottomright" 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 // ──────────────────────────────────────────────────────────────────────── // CRYPTO // ──────────────────────────────────────────────────────────────────────── // ── Coin/currency pairs to cycle ────────────────────────────────────────── // Each entry is a { coin, currency } object. The bar chip rotates to the // next pair after each successful CoinGecko fetch. // // coin – CoinGecko coin ID (find them at https://api.coingecko.com/api/v3/coins/list) // currency – any quote currency CoinGecko supports: "usd", "eur", "brl", "btc", … // // Single pair → [{ coin: "bitcoin", currency: "usd" }] // Three pairs → [{ coin: "bitcoin", currency: "usd" }, // { coin: "monero", currency: "usd" }, // { coin: "solana", currency: "brl" }] // // This list is the *default*; pairs can be added/removed live in the // Settings popup and those changes are persisted across restarts. property var cryptoPairs: [{ coin: "bitcoin", currency: "usd" }, { coin: "ethereum", currency: "eur" }, { coin: "monero", currency: "usd" }] // ── Compact label decimals ──────────────────────────────────────────────── // 0 → "80k" // 1 → "80.0k" (default) // 3 → "80.000k" property int cryptoDecimals: 2 // ── Poll interval ───────────────────────────────────────────────────────── // Seconds between CoinGecko requests. Free tier allows ~30 req/min. // With multiple pairs each refresh fetches one pair then advances the index, // so the effective per-pair interval is: cryptoRefreshSec × cryptoPairs.length property int cryptoRefreshSec: 120 // ── Bar chip icon ───────────────────────────────────────────────────────── // Show the coin icon glyph ("󰿤") on the bar chip. property bool cryptoShowIcon: true }