fix: expose config types to qml properly

This commit is contained in:
2 * r + 2 * t 2026-04-11 03:07:48 +10:00
parent f7aec30ad2
commit ff1bde855e
19 changed files with 128 additions and 1 deletions

View file

@ -8,6 +8,8 @@ namespace caelestia::config {
class AnimCurves : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QList<qreal>, emphasized)
CONFIG_PROPERTY(QList<qreal>, emphasizedAccel)
CONFIG_PROPERTY(QList<qreal>, emphasizedDecel)
@ -34,6 +36,8 @@ public:
class RoundingTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, small, 12)
CONFIG_PROPERTY(int, normal, 17)
CONFIG_PROPERTY(int, large, 25)
@ -46,6 +50,8 @@ public:
class SpacingTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, small, 7)
CONFIG_PROPERTY(int, smaller, 10)
CONFIG_PROPERTY(int, normal, 12)
@ -59,6 +65,8 @@ public:
class PaddingTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, small, 5)
CONFIG_PROPERTY(int, smaller, 7)
CONFIG_PROPERTY(int, normal, 10)
@ -72,6 +80,8 @@ public:
class FontSizeTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, small, 11)
CONFIG_PROPERTY(int, smaller, 12)
CONFIG_PROPERTY(int, normal, 13)
@ -86,6 +96,8 @@ public:
class AnimDurationTokens : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, small, 200)
CONFIG_PROPERTY(int, normal, 400)
CONFIG_PROPERTY(int, large, 600)
@ -101,6 +113,8 @@ public:
class AdvancedAppearance : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_SUBOBJECT(AnimCurves, curves)
CONFIG_SUBOBJECT(RoundingTokens, rounding)
CONFIG_SUBOBJECT(SpacingTokens, spacing)
@ -121,6 +135,8 @@ public:
class BarSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, innerWidth, 40)
CONFIG_PROPERTY(int, windowPreviewSize, 400)
CONFIG_PROPERTY(int, trayMenuWidth, 300)
@ -135,6 +151,8 @@ public:
class AdvancedDashboard : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, showDashboard, true)
CONFIG_PROPERTY(bool, showMedia, true)
CONFIG_PROPERTY(bool, showPerformance, true)
@ -187,6 +205,8 @@ public:
class LauncherSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, itemWidth, 600)
CONFIG_PROPERTY(int, itemHeight, 57)
CONFIG_PROPERTY(int, wallpaperWidth, 280)
@ -199,6 +219,8 @@ public:
class NotifsSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, width, 400)
CONFIG_PROPERTY(int, image, 41)
CONFIG_PROPERTY(int, badge, 20)
@ -210,6 +232,8 @@ public:
class OsdSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, sliderWidth, 30)
CONFIG_PROPERTY(int, sliderHeight, 150)
@ -220,6 +244,8 @@ public:
class SessionSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, button, 80)
public:
@ -229,6 +255,8 @@ public:
class SidebarSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, width, 430)
public:
@ -238,6 +266,8 @@ public:
class UtilitiesSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, width, 430)
CONFIG_PROPERTY(int, toastWidth, 430)
@ -248,6 +278,8 @@ public:
class LockSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, heightMult, 0.7)
CONFIG_PROPERTY(qreal, ratio, 16.0 / 9.0)
CONFIG_PROPERTY(int, centerWidth, 600)
@ -259,6 +291,8 @@ public:
class WInfoSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, heightMult, 0.7)
CONFIG_PROPERTY(qreal, detailsWidth, 500)
@ -269,6 +303,8 @@ public:
class ControlCenterSizes : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, heightMult, 0.7)
CONFIG_PROPERTY(qreal, ratio, 16.0 / 9.0)
@ -279,6 +315,8 @@ public:
class AdvancedConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_SUBOBJECT(AdvancedAppearance, appearance)
CONFIG_SUBOBJECT(BarSizes, bar)
CONFIG_SUBOBJECT(AdvancedDashboard, dashboard)

View file

@ -15,6 +15,8 @@ class AnimDurationTokens;
class AppearanceRounding : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, scale, 1)
Q_PROPERTY(int small READ small NOTIFY valuesChanged)
@ -41,6 +43,8 @@ private:
class AppearanceSpacing : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, scale, 1)
Q_PROPERTY(int small READ small NOTIFY valuesChanged)
@ -69,6 +73,8 @@ private:
class AppearancePadding : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, scale, 1)
Q_PROPERTY(int small READ small NOTIFY valuesChanged)
@ -97,6 +103,8 @@ private:
class FontFamily : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QString, sans, QStringLiteral("Rubik"))
CONFIG_PROPERTY(QString, mono, QStringLiteral("CaskaydiaCove NF"))
CONFIG_PROPERTY(QString, material, QStringLiteral("Material Symbols Rounded"))
@ -109,6 +117,8 @@ public:
class FontSize : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, scale, 1)
Q_PROPERTY(int small READ small NOTIFY valuesChanged)
@ -139,6 +149,8 @@ private:
class AppearanceFont : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_SUBOBJECT(FontFamily, family)
CONFIG_SUBOBJECT(FontSize, size)
@ -151,6 +163,8 @@ public:
class AnimDurations : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, scale, 1)
Q_PROPERTY(int small READ small NOTIFY valuesChanged)
@ -183,6 +197,8 @@ private:
class AppearanceAnim : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(qreal, mediaGifSpeedAdjustment, 300)
CONFIG_PROPERTY(qreal, sessionGifSpeed, 0.7)
CONFIG_SUBOBJECT(AnimDurations, durations)
@ -195,6 +211,8 @@ public:
class AppearanceTransparency : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(qreal, base, 0.85)
CONFIG_PROPERTY(qreal, layers, 0.4)
@ -206,6 +224,8 @@ public:
class AppearanceConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_SUBOBJECT(AppearanceRounding, rounding)
CONFIG_SUBOBJECT(AppearanceSpacing, spacing)
CONFIG_SUBOBJECT(AppearancePadding, padding)

View file

@ -8,6 +8,8 @@ namespace caelestia::config {
class DesktopClockBackground : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(qreal, opacity, 0.7)
CONFIG_PROPERTY(bool, blur, true)
@ -19,6 +21,8 @@ public:
class DesktopClockShadow : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(qreal, opacity, 0.7)
CONFIG_PROPERTY(qreal, blur, 0.4)
@ -30,6 +34,8 @@ public:
class DesktopClock : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(qreal, scale, 1.0)
CONFIG_PROPERTY(QString, position, QStringLiteral("bottom-right"))
@ -46,6 +52,8 @@ public:
class BackgroundVisualiser : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(bool, autoHide, true)
CONFIG_PROPERTY(bool, blur, false)
@ -59,6 +67,8 @@ public:
class BackgroundConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(bool, wallpaperEnabled, true)
CONFIG_SUBOBJECT(DesktopClock, desktopClock)

View file

@ -10,6 +10,8 @@ namespace caelestia::config {
class BarScrollActions : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, workspaces, true)
CONFIG_PROPERTY(bool, volume, true)
CONFIG_PROPERTY(bool, brightness, true)
@ -21,6 +23,8 @@ public:
class BarPopouts : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, activeWindow, true)
CONFIG_PROPERTY(bool, tray, true)
CONFIG_PROPERTY(bool, statusIcons, true)
@ -32,6 +36,8 @@ public:
class BarWorkspaces : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, shown, 5)
CONFIG_PROPERTY(bool, activeIndicator, true)
CONFIG_PROPERTY(bool, occupiedBg, false)
@ -54,6 +60,8 @@ public:
class BarActiveWindow : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, compact, false)
CONFIG_PROPERTY(bool, inverted, false)
CONFIG_PROPERTY(bool, showOnHover, true)
@ -65,6 +73,8 @@ public:
class BarTray : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, background, false)
CONFIG_PROPERTY(bool, recolour, false)
CONFIG_PROPERTY(bool, compact, false)
@ -78,6 +88,8 @@ public:
class BarStatus : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, showAudio, false)
CONFIG_PROPERTY(bool, showMicrophone, false)
CONFIG_PROPERTY(bool, showKbLayout, false)
@ -94,6 +106,8 @@ public:
class BarClock : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, background, false)
CONFIG_PROPERTY(bool, showDate, false)
CONFIG_PROPERTY(bool, showIcon, true)
@ -105,6 +119,8 @@ public:
class BarConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, persistent, true)
CONFIG_PROPERTY(bool, showOnHover, true)
CONFIG_PROPERTY(int, dragThreshold, 20)

View file

@ -8,6 +8,8 @@ namespace caelestia::config {
class BorderConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(int, thickness, 10)
CONFIG_PROPERTY(int, rounding, 25)

View file

@ -39,7 +39,6 @@ namespace caelestia::config {
class ConfigObject : public QObject {
Q_OBJECT
QML_ANONYMOUS
public:
explicit ConfigObject(QObject* parent = nullptr);

View file

@ -8,6 +8,7 @@ namespace caelestia::config {
// All properties are in AdvancedConfig.controlCenter
class ControlCenterConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
public:
explicit ControlCenterConfig(QObject* parent = nullptr)

View file

@ -6,6 +6,8 @@ namespace caelestia::config {
class DashboardPerformance : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, showBattery, true)
CONFIG_PROPERTY(bool, showGpu, true)
CONFIG_PROPERTY(bool, showCpu, true)
@ -20,6 +22,8 @@ public:
class DashboardConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(bool, showOnHover, true)
CONFIG_PROPERTY(int, mediaUpdateInterval, 500)

View file

@ -10,6 +10,8 @@ namespace caelestia::config {
class GeneralApps : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QStringList, terminal, { QStringLiteral("foot") })
CONFIG_PROPERTY(QStringList, audio, { QStringLiteral("pavucontrol") })
CONFIG_PROPERTY(QStringList, playback, { QStringLiteral("mpv") })
@ -22,6 +24,8 @@ public:
class GeneralIdle : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, lockBeforeSleep, true)
CONFIG_PROPERTY(bool, inhibitWhenAudio, true)
CONFIG_PROPERTY(QVariantList, timeouts)
@ -33,6 +37,8 @@ public:
class GeneralBattery : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QVariantList, warnLevels)
CONFIG_PROPERTY(int, criticalLevel, 3)
@ -43,6 +49,8 @@ public:
class GeneralConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QString, logo)
CONFIG_PROPERTY(QStringList, excludedScreens)
CONFIG_SUBOBJECT(GeneralApps, apps)

View file

@ -10,6 +10,8 @@ namespace caelestia::config {
class LauncherUseFuzzy : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, apps, false)
CONFIG_PROPERTY(bool, actions, false)
CONFIG_PROPERTY(bool, schemes, false)
@ -23,6 +25,8 @@ public:
class LauncherConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(bool, showOnHover, false)
CONFIG_PROPERTY(int, maxShown, 7)

View file

@ -6,6 +6,8 @@ namespace caelestia::config {
class LockConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, recolourLogo, false)
CONFIG_PROPERTY(bool, enableFprint, true)
CONFIG_PROPERTY(int, maxFprintTries, 3)

View file

@ -8,6 +8,8 @@ namespace caelestia::config {
class NotifsConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, expire, true)
CONFIG_PROPERTY(QString, fullscreen, QStringLiteral("on"))
CONFIG_PROPERTY(int, defaultExpireTimeout, 5000)

View file

@ -6,6 +6,8 @@ namespace caelestia::config {
class OsdConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(int, hideDelay, 2000)
CONFIG_PROPERTY(bool, enableBrightness, true)

View file

@ -9,6 +9,8 @@ namespace caelestia::config {
class ServiceConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QString, weatherLocation)
CONFIG_PROPERTY(bool, useFahrenheit, false)
CONFIG_PROPERTY(bool, useFahrenheitPerformance, false)

View file

@ -9,6 +9,8 @@ namespace caelestia::config {
class SessionIcons : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QString, logout, QStringLiteral("logout"))
CONFIG_PROPERTY(QString, shutdown, QStringLiteral("power_settings_new"))
CONFIG_PROPERTY(QString, hibernate, QStringLiteral("downloading"))
@ -21,6 +23,8 @@ public:
class SessionCommands : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QStringList, logout, { QStringLiteral("loginctl"), QStringLiteral("terminate-user"), QString() })
CONFIG_PROPERTY(QStringList, shutdown, { QStringLiteral("systemctl"), QStringLiteral("poweroff") })
CONFIG_PROPERTY(QStringList, hibernate, { QStringLiteral("systemctl"), QStringLiteral("hibernate") })
@ -33,6 +37,8 @@ public:
class SessionConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(int, dragThreshold, 30)
CONFIG_PROPERTY(bool, vimKeybinds, false)

View file

@ -6,6 +6,8 @@ namespace caelestia::config {
class SidebarConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(int, dragThreshold, 80)

View file

@ -10,6 +10,8 @@ namespace caelestia::config {
class UserPaths : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(QString, wallpaperDir,
QStandardPaths::writableLocation(QStandardPaths::PicturesLocation) + QStringLiteral("/Wallpapers"))
CONFIG_PROPERTY(QString, lyricsDir, QDir::homePath() + QStringLiteral("/Music/lyrics/"))

View file

@ -9,6 +9,8 @@ namespace caelestia::config {
class UtilitiesToasts : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, configLoaded, true)
CONFIG_PROPERTY(QString, fullscreen, QStringLiteral("off"))
CONFIG_PROPERTY(bool, chargingChanged, true)
@ -30,6 +32,8 @@ public:
class UtilitiesVpn : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, false)
CONFIG_PROPERTY(QVariantList, provider)
@ -40,6 +44,8 @@ public:
class UtilitiesConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
CONFIG_PROPERTY(bool, enabled, true)
CONFIG_PROPERTY(int, maxToasts, 4)
CONFIG_SUBOBJECT(UtilitiesToasts, toasts)

View file

@ -8,6 +8,7 @@ namespace caelestia::config {
// All properties are in AdvancedConfig.winfo
class WInfoConfig : public ConfigObject {
Q_OBJECT
QML_ANONYMOUS
public:
explicit WInfoConfig(QObject* parent = nullptr)