173 lines
12 KiB
QML
173 lines
12 KiB
QML
pragma Singleton
|
||
import QtQuick
|
||
import Quickshell
|
||
import "themes"
|
||
|
||
QtObject {
|
||
id: root
|
||
|
||
readonly property var theme: Snowy
|
||
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
// Widgets
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
property bool enableBgDate: true
|
||
property bool sideBarSysInfo: true
|
||
property bool sideBarMpris: true
|
||
property bool sideBarWeather: true
|
||
property string sideBarPosition: "right" // "left" or "right"
|
||
property bool enablePolkit: true
|
||
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
// BAR
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
property string barPosition: "bottom"
|
||
property int barHeight: 35
|
||
property int margin: 15
|
||
property int radius: 20
|
||
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
// FRAME
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
property string frameVariant: "bar" // "card" or "bar"
|
||
property int frameBorderWidth: 3
|
||
property int frameBarPadTop: 5 // bar variant: padding from top edge
|
||
property int frameBarPadBottom: 5 // bar variant: padding from bottom edge
|
||
|
||
|
||
// ── 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
|
||
property string popupAnimType: "slide" // "bubbleslide" or "slide"
|
||
|
||
// ── 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
|
||
property bool statsShowCpu: true
|
||
property bool statsShowMem: true
|
||
property bool statsShowDisk: true
|
||
property bool statsShowCpuTemp: true
|
||
property bool statsShowGpuTemp: true
|
||
|
||
// ── 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
|
||
|
||
|
||
|
||
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
// NOTIFICATIONS
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
property bool notificationShakeEnabled: true // bell ringing shake for 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
|
||
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
// CRYPTO
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
|
||
// ── Coin/currency pairs to cycle ──────────────────────────────────────────
|
||
// Each entry is a { coin, currency } object. The bar chip fetches one pair
|
||
// per timer tick and auto-rotates to the next after each successful fetch.
|
||
//
|
||
// coin – CoinGecko coin ID, e.g. "bitcoin", "monero", "solana"
|
||
// currency – quote currency: "usd", "eur", "brl", "btc", "eth", …
|
||
//
|
||
// 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" }, { coin: "bitcoin", currency: "eur" }, { coin: "bitcoin", currency: "brl" }, { coin: "ethereum", currency: "usd" }]
|
||
|
||
// ── Compact label decimals ────────────────────────────────────────────────
|
||
// 0 → "80k"
|
||
// 1 → "80.0k" (default)
|
||
// 3 → "80.000k"
|
||
property int cryptoDecimals: 2
|
||
|
||
// ── Poll interval ─────────────────────────────────────────────────────────
|
||
// Seconds between CoinGecko requests. Each tick fetches one pair
|
||
// and advances to the next in the cycle. Free tier allows ~30 req/min.
|
||
property int cryptoRefreshSec: 120
|
||
|
||
// ── Bar rotate interval ────────────────────────────────────────────────────
|
||
// Seconds between auto-rotating the displayed pair. 0 = disabled.
|
||
// Uses cached data (no API call), instant switching.
|
||
property int cryptoRotateSec: 10
|
||
|
||
// ── Bar chip icon ─────────────────────────────────────────────────────────
|
||
// Show the coin icon glyph ("") on the bar chip.
|
||
property bool cryptoShowIcon: true
|
||
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
// WEATHER
|
||
// ────────────────────────────────────────────────────────────────────────
|
||
property string weatherLocation: "" // city name, e.g. "London" or "New+York"; empty → auto-detect from IP
|
||
property int weatherRefreshMin: 30 // update interval in minutes
|
||
}
|