mirror of
https://github.com/belsabbagh/dotfiles.git
synced 2026-04-11 09:36:46 +00:00
quickshell and hyprland additions
This commit is contained in:
14
.config/quickshell/caelestia/config/Appearance.qml
Normal file
14
.config/quickshell/caelestia/config/Appearance.qml
Normal file
@@ -0,0 +1,14 @@
|
||||
pragma Singleton
|
||||
|
||||
import Quickshell
|
||||
|
||||
Singleton {
|
||||
// Literally just here to shorten accessing stuff :woe:
|
||||
// Also kinda so I can keep accessing it with `Appearance.xxx` instead of `Config.appearance.xxx`
|
||||
readonly property AppearanceConfig.Rounding rounding: Config.appearance.rounding
|
||||
readonly property AppearanceConfig.Spacing spacing: Config.appearance.spacing
|
||||
readonly property AppearanceConfig.Padding padding: Config.appearance.padding
|
||||
readonly property AppearanceConfig.FontStuff font: Config.appearance.font
|
||||
readonly property AppearanceConfig.Anim anim: Config.appearance.anim
|
||||
readonly property AppearanceConfig.Transparency transparency: Config.appearance.transparency
|
||||
}
|
||||
94
.config/quickshell/caelestia/config/AppearanceConfig.qml
Normal file
94
.config/quickshell/caelestia/config/AppearanceConfig.qml
Normal file
@@ -0,0 +1,94 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property Rounding rounding: Rounding {}
|
||||
property Spacing spacing: Spacing {}
|
||||
property Padding padding: Padding {}
|
||||
property FontStuff font: FontStuff {}
|
||||
property Anim anim: Anim {}
|
||||
property Transparency transparency: Transparency {}
|
||||
|
||||
component Rounding: JsonObject {
|
||||
property real scale: 1
|
||||
property int small: 12 * scale
|
||||
property int normal: 17 * scale
|
||||
property int large: 25 * scale
|
||||
property int full: 1000 * scale
|
||||
}
|
||||
|
||||
component Spacing: JsonObject {
|
||||
property real scale: 1
|
||||
property int small: 7 * scale
|
||||
property int smaller: 10 * scale
|
||||
property int normal: 12 * scale
|
||||
property int larger: 15 * scale
|
||||
property int large: 20 * scale
|
||||
}
|
||||
|
||||
component Padding: JsonObject {
|
||||
property real scale: 1
|
||||
property int small: 5 * scale
|
||||
property int smaller: 7 * scale
|
||||
property int normal: 10 * scale
|
||||
property int larger: 12 * scale
|
||||
property int large: 15 * scale
|
||||
}
|
||||
|
||||
component FontFamily: JsonObject {
|
||||
property string sans: "Rubik"
|
||||
property string mono: "CaskaydiaCove NF"
|
||||
property string material: "Material Symbols Rounded"
|
||||
property string clock: "Rubik"
|
||||
}
|
||||
|
||||
component FontSize: JsonObject {
|
||||
property real scale: 1
|
||||
property int small: 11 * scale
|
||||
property int smaller: 12 * scale
|
||||
property int normal: 13 * scale
|
||||
property int larger: 15 * scale
|
||||
property int large: 18 * scale
|
||||
property int extraLarge: 28 * scale
|
||||
}
|
||||
|
||||
component FontStuff: JsonObject {
|
||||
property FontFamily family: FontFamily {}
|
||||
property FontSize size: FontSize {}
|
||||
}
|
||||
|
||||
component AnimCurves: JsonObject {
|
||||
property list<real> emphasized: [0.05, 0, 2 / 15, 0.06, 1 / 6, 0.4, 5 / 24, 0.82, 0.25, 1, 1, 1]
|
||||
property list<real> emphasizedAccel: [0.3, 0, 0.8, 0.15, 1, 1]
|
||||
property list<real> emphasizedDecel: [0.05, 0.7, 0.1, 1, 1, 1]
|
||||
property list<real> standard: [0.2, 0, 0, 1, 1, 1]
|
||||
property list<real> standardAccel: [0.3, 0, 1, 1, 1, 1]
|
||||
property list<real> standardDecel: [0, 0, 0, 1, 1, 1]
|
||||
property list<real> expressiveFastSpatial: [0.42, 1.67, 0.21, 0.9, 1, 1]
|
||||
property list<real> expressiveDefaultSpatial: [0.38, 1.21, 0.22, 1, 1, 1]
|
||||
property list<real> expressiveEffects: [0.34, 0.8, 0.34, 1, 1, 1]
|
||||
}
|
||||
|
||||
component AnimDurations: JsonObject {
|
||||
property real scale: 1
|
||||
property int small: 200 * scale
|
||||
property int normal: 400 * scale
|
||||
property int large: 600 * scale
|
||||
property int extraLarge: 1000 * scale
|
||||
property int expressiveFastSpatial: 350 * scale
|
||||
property int expressiveDefaultSpatial: 500 * scale
|
||||
property int expressiveEffects: 200 * scale
|
||||
}
|
||||
|
||||
component Anim: JsonObject {
|
||||
property real mediaGifSpeedAdjustment: 300
|
||||
property real sessionGifSpeed: 0.7
|
||||
property AnimCurves curves: AnimCurves {}
|
||||
property AnimDurations durations: AnimDurations {}
|
||||
}
|
||||
|
||||
component Transparency: JsonObject {
|
||||
property bool enabled: false
|
||||
property real base: 0.85
|
||||
property real layers: 0.4
|
||||
}
|
||||
}
|
||||
37
.config/quickshell/caelestia/config/BackgroundConfig.qml
Normal file
37
.config/quickshell/caelestia/config/BackgroundConfig.qml
Normal file
@@ -0,0 +1,37 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool enabled: true
|
||||
property bool wallpaperEnabled: true
|
||||
property DesktopClock desktopClock: DesktopClock {}
|
||||
property Visualiser visualiser: Visualiser {}
|
||||
|
||||
component DesktopClock: JsonObject {
|
||||
property bool enabled: false
|
||||
property real scale: 1.0
|
||||
property string position: "bottom-right"
|
||||
property bool invertColors: false
|
||||
property DesktopClockBackground background: DesktopClockBackground {}
|
||||
property DesktopClockShadow shadow: DesktopClockShadow {}
|
||||
}
|
||||
|
||||
component DesktopClockBackground: JsonObject {
|
||||
property bool enabled: false
|
||||
property real opacity: 0.7
|
||||
property bool blur: true
|
||||
}
|
||||
|
||||
component DesktopClockShadow: JsonObject {
|
||||
property bool enabled: true
|
||||
property real opacity: 0.7
|
||||
property real blur: 0.4
|
||||
}
|
||||
|
||||
component Visualiser: JsonObject {
|
||||
property bool enabled: false
|
||||
property bool autoHide: true
|
||||
property bool blur: false
|
||||
property real rounding: 1
|
||||
property real spacing: 1
|
||||
}
|
||||
}
|
||||
118
.config/quickshell/caelestia/config/BarConfig.qml
Normal file
118
.config/quickshell/caelestia/config/BarConfig.qml
Normal file
@@ -0,0 +1,118 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool persistent: true
|
||||
property bool showOnHover: true
|
||||
property int dragThreshold: 20
|
||||
property ScrollActions scrollActions: ScrollActions {}
|
||||
property Popouts popouts: Popouts {}
|
||||
property Workspaces workspaces: Workspaces {}
|
||||
property ActiveWindow activeWindow: ActiveWindow {}
|
||||
property Tray tray: Tray {}
|
||||
property Status status: Status {}
|
||||
property Clock clock: Clock {}
|
||||
property Sizes sizes: Sizes {}
|
||||
property list<string> excludedScreens: []
|
||||
|
||||
property list<var> entries: [
|
||||
{
|
||||
id: "logo",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "workspaces",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "spacer",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "activeWindow",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "spacer",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "tray",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "clock",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "statusIcons",
|
||||
enabled: true
|
||||
},
|
||||
{
|
||||
id: "power",
|
||||
enabled: true
|
||||
}
|
||||
]
|
||||
|
||||
component ScrollActions: JsonObject {
|
||||
property bool workspaces: true
|
||||
property bool volume: true
|
||||
property bool brightness: true
|
||||
}
|
||||
|
||||
component Popouts: JsonObject {
|
||||
property bool activeWindow: true
|
||||
property bool tray: true
|
||||
property bool statusIcons: true
|
||||
}
|
||||
|
||||
component Workspaces: JsonObject {
|
||||
property int shown: 5
|
||||
property bool activeIndicator: true
|
||||
property bool occupiedBg: false
|
||||
property bool showWindows: true
|
||||
property bool showWindowsOnSpecialWorkspaces: showWindows
|
||||
property bool activeTrail: false
|
||||
property bool perMonitorWorkspaces: true
|
||||
property string label: " " // if empty, will show workspace name's first letter
|
||||
property string occupiedLabel: ""
|
||||
property string activeLabel: ""
|
||||
property string capitalisation: "preserve" // upper, lower, or preserve - relevant only if label is empty
|
||||
property list<var> specialWorkspaceIcons: []
|
||||
}
|
||||
|
||||
component ActiveWindow: JsonObject {
|
||||
property bool inverted: false
|
||||
}
|
||||
|
||||
component Tray: JsonObject {
|
||||
property bool background: false
|
||||
property bool recolour: false
|
||||
property bool compact: false
|
||||
property list<var> iconSubs: []
|
||||
property list<string> hiddenIcons: []
|
||||
}
|
||||
|
||||
component Status: JsonObject {
|
||||
property bool showAudio: false
|
||||
property bool showMicrophone: false
|
||||
property bool showKbLayout: false
|
||||
property bool showNetwork: true
|
||||
property bool showWifi: true
|
||||
property bool showBluetooth: true
|
||||
property bool showBattery: true
|
||||
property bool showLockStatus: true
|
||||
}
|
||||
|
||||
component Clock: JsonObject {
|
||||
property bool showIcon: true
|
||||
}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property int innerWidth: 40
|
||||
property int windowPreviewSize: 400
|
||||
property int trayMenuWidth: 300
|
||||
property int batteryWidth: 250
|
||||
property int networkWidth: 320
|
||||
property int kbLayoutWidth: 320
|
||||
}
|
||||
}
|
||||
6
.config/quickshell/caelestia/config/BorderConfig.qml
Normal file
6
.config/quickshell/caelestia/config/BorderConfig.qml
Normal file
@@ -0,0 +1,6 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property int thickness: Appearance.padding.normal
|
||||
property int rounding: Appearance.rounding.large
|
||||
}
|
||||
522
.config/quickshell/caelestia/config/Config.qml
Normal file
522
.config/quickshell/caelestia/config/Config.qml
Normal file
@@ -0,0 +1,522 @@
|
||||
pragma Singleton
|
||||
|
||||
import qs.utils
|
||||
import Caelestia
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
property alias appearance: adapter.appearance
|
||||
property alias general: adapter.general
|
||||
property alias background: adapter.background
|
||||
property alias bar: adapter.bar
|
||||
property alias border: adapter.border
|
||||
property alias dashboard: adapter.dashboard
|
||||
property alias controlCenter: adapter.controlCenter
|
||||
property alias launcher: adapter.launcher
|
||||
property alias notifs: adapter.notifs
|
||||
property alias osd: adapter.osd
|
||||
property alias session: adapter.session
|
||||
property alias winfo: adapter.winfo
|
||||
property alias lock: adapter.lock
|
||||
property alias utilities: adapter.utilities
|
||||
property alias sidebar: adapter.sidebar
|
||||
property alias services: adapter.services
|
||||
property alias paths: adapter.paths
|
||||
|
||||
// Public save function - call this to persist config changes
|
||||
function save(): void {
|
||||
saveTimer.restart();
|
||||
recentlySaved = true;
|
||||
recentSaveCooldown.restart();
|
||||
}
|
||||
|
||||
property bool recentlySaved: false
|
||||
|
||||
ElapsedTimer {
|
||||
id: timer
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: saveTimer
|
||||
|
||||
interval: 500
|
||||
onTriggered: {
|
||||
timer.restart();
|
||||
try {
|
||||
// Parse current config to preserve structure and comments if possible
|
||||
let config = {};
|
||||
try {
|
||||
config = JSON.parse(fileView.text());
|
||||
} catch (e) {
|
||||
// If parsing fails, start with empty object
|
||||
config = {};
|
||||
}
|
||||
|
||||
// Update config with current values
|
||||
config = serializeConfig();
|
||||
|
||||
// Save to file with pretty printing
|
||||
fileView.setText(JSON.stringify(config, null, 2));
|
||||
} catch (e) {
|
||||
Toaster.toast(qsTr("Failed to serialize config"), e.message, "settings_alert", Toast.Error);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: recentSaveCooldown
|
||||
|
||||
interval: 2000
|
||||
onTriggered: {
|
||||
recentlySaved = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Helper function to serialize the config object
|
||||
function serializeConfig(): var {
|
||||
return {
|
||||
appearance: serializeAppearance(),
|
||||
general: serializeGeneral(),
|
||||
background: serializeBackground(),
|
||||
bar: serializeBar(),
|
||||
border: serializeBorder(),
|
||||
dashboard: serializeDashboard(),
|
||||
controlCenter: serializeControlCenter(),
|
||||
launcher: serializeLauncher(),
|
||||
notifs: serializeNotifs(),
|
||||
osd: serializeOsd(),
|
||||
session: serializeSession(),
|
||||
winfo: serializeWinfo(),
|
||||
lock: serializeLock(),
|
||||
utilities: serializeUtilities(),
|
||||
sidebar: serializeSidebar(),
|
||||
services: serializeServices(),
|
||||
paths: serializePaths()
|
||||
};
|
||||
}
|
||||
|
||||
function serializeAppearance(): var {
|
||||
return {
|
||||
rounding: {
|
||||
scale: appearance.rounding.scale
|
||||
},
|
||||
spacing: {
|
||||
scale: appearance.spacing.scale
|
||||
},
|
||||
padding: {
|
||||
scale: appearance.padding.scale
|
||||
},
|
||||
font: {
|
||||
family: {
|
||||
sans: appearance.font.family.sans,
|
||||
mono: appearance.font.family.mono,
|
||||
material: appearance.font.family.material,
|
||||
clock: appearance.font.family.clock
|
||||
},
|
||||
size: {
|
||||
scale: appearance.font.size.scale
|
||||
}
|
||||
},
|
||||
anim: {
|
||||
mediaGifSpeedAdjustment: 300,
|
||||
sessionGifSpeed: 0.7,
|
||||
durations: {
|
||||
scale: appearance.anim.durations.scale
|
||||
}
|
||||
},
|
||||
transparency: {
|
||||
enabled: appearance.transparency.enabled,
|
||||
base: appearance.transparency.base,
|
||||
layers: appearance.transparency.layers
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeGeneral(): var {
|
||||
return {
|
||||
logo: general.logo,
|
||||
apps: {
|
||||
terminal: general.apps.terminal,
|
||||
audio: general.apps.audio,
|
||||
playback: general.apps.playback,
|
||||
explorer: general.apps.explorer
|
||||
},
|
||||
idle: {
|
||||
lockBeforeSleep: general.idle.lockBeforeSleep,
|
||||
inhibitWhenAudio: general.idle.inhibitWhenAudio,
|
||||
timeouts: general.idle.timeouts
|
||||
},
|
||||
battery: {
|
||||
warnLevels: general.battery.warnLevels,
|
||||
criticalLevel: general.battery.criticalLevel
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeBackground(): var {
|
||||
return {
|
||||
enabled: background.enabled,
|
||||
wallpaperEnabled: background.wallpaperEnabled,
|
||||
desktopClock: {
|
||||
enabled: background.desktopClock.enabled,
|
||||
scale: background.desktopClock.scale,
|
||||
position: background.desktopClock.position,
|
||||
invertColors: background.desktopClock.invertColors,
|
||||
background: {
|
||||
enabled: background.desktopClock.background.enabled,
|
||||
opacity: background.desktopClock.background.opacity,
|
||||
blur: background.desktopClock.background.blur
|
||||
},
|
||||
shadow: {
|
||||
enabled: background.desktopClock.shadow.enabled,
|
||||
opacity: background.desktopClock.shadow.opacity,
|
||||
blur: background.desktopClock.shadow.blur
|
||||
}
|
||||
},
|
||||
visualiser: {
|
||||
enabled: background.visualiser.enabled,
|
||||
autoHide: background.visualiser.autoHide,
|
||||
blur: background.visualiser.blur,
|
||||
rounding: background.visualiser.rounding,
|
||||
spacing: background.visualiser.spacing
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeBar(): var {
|
||||
return {
|
||||
persistent: bar.persistent,
|
||||
showOnHover: bar.showOnHover,
|
||||
dragThreshold: bar.dragThreshold,
|
||||
scrollActions: {
|
||||
workspaces: bar.scrollActions.workspaces,
|
||||
volume: bar.scrollActions.volume,
|
||||
brightness: bar.scrollActions.brightness
|
||||
},
|
||||
popouts: {
|
||||
activeWindow: bar.popouts.activeWindow,
|
||||
tray: bar.popouts.tray,
|
||||
statusIcons: bar.popouts.statusIcons
|
||||
},
|
||||
workspaces: {
|
||||
shown: bar.workspaces.shown,
|
||||
activeIndicator: bar.workspaces.activeIndicator,
|
||||
occupiedBg: bar.workspaces.occupiedBg,
|
||||
showWindows: bar.workspaces.showWindows,
|
||||
showWindowsOnSpecialWorkspaces: bar.workspaces.showWindowsOnSpecialWorkspaces,
|
||||
activeTrail: bar.workspaces.activeTrail,
|
||||
perMonitorWorkspaces: bar.workspaces.perMonitorWorkspaces,
|
||||
label: bar.workspaces.label,
|
||||
occupiedLabel: bar.workspaces.occupiedLabel,
|
||||
activeLabel: bar.workspaces.activeLabel,
|
||||
capitalisation: bar.workspaces.capitalisation,
|
||||
specialWorkspaceIcons: bar.workspaces.specialWorkspaceIcons
|
||||
},
|
||||
tray: {
|
||||
background: bar.tray.background,
|
||||
recolour: bar.tray.recolour,
|
||||
compact: bar.tray.compact,
|
||||
iconSubs: bar.tray.iconSubs
|
||||
},
|
||||
status: {
|
||||
showAudio: bar.status.showAudio,
|
||||
showMicrophone: bar.status.showMicrophone,
|
||||
showKbLayout: bar.status.showKbLayout,
|
||||
showNetwork: bar.status.showNetwork,
|
||||
showWifi: bar.status.showWifi,
|
||||
showBluetooth: bar.status.showBluetooth,
|
||||
showBattery: bar.status.showBattery,
|
||||
showLockStatus: bar.status.showLockStatus
|
||||
},
|
||||
clock: {
|
||||
showIcon: bar.clock.showIcon
|
||||
},
|
||||
sizes: {
|
||||
innerWidth: bar.sizes.innerWidth,
|
||||
windowPreviewSize: bar.sizes.windowPreviewSize,
|
||||
trayMenuWidth: bar.sizes.trayMenuWidth,
|
||||
batteryWidth: bar.sizes.batteryWidth,
|
||||
networkWidth: bar.sizes.networkWidth
|
||||
},
|
||||
entries: bar.entries,
|
||||
excludedScreens: bar.excludedScreens
|
||||
};
|
||||
}
|
||||
|
||||
function serializeBorder(): var {
|
||||
return {
|
||||
thickness: border.thickness,
|
||||
rounding: border.rounding
|
||||
};
|
||||
}
|
||||
|
||||
function serializeDashboard(): var {
|
||||
return {
|
||||
enabled: dashboard.enabled,
|
||||
showOnHover: dashboard.showOnHover,
|
||||
updateInterval: dashboard.updateInterval,
|
||||
dragThreshold: dashboard.dragThreshold,
|
||||
performance: {
|
||||
showBattery: dashboard.performance.showBattery,
|
||||
showGpu: dashboard.performance.showGpu,
|
||||
showCpu: dashboard.performance.showCpu,
|
||||
showMemory: dashboard.performance.showMemory,
|
||||
showStorage: dashboard.performance.showStorage,
|
||||
showNetwork: dashboard.performance.showNetwork
|
||||
},
|
||||
sizes: {
|
||||
tabIndicatorHeight: dashboard.sizes.tabIndicatorHeight,
|
||||
tabIndicatorSpacing: dashboard.sizes.tabIndicatorSpacing,
|
||||
infoWidth: dashboard.sizes.infoWidth,
|
||||
infoIconSize: dashboard.sizes.infoIconSize,
|
||||
dateTimeWidth: dashboard.sizes.dateTimeWidth,
|
||||
mediaWidth: dashboard.sizes.mediaWidth,
|
||||
mediaProgressSweep: dashboard.sizes.mediaProgressSweep,
|
||||
mediaProgressThickness: dashboard.sizes.mediaProgressThickness,
|
||||
resourceProgessThickness: dashboard.sizes.resourceProgessThickness,
|
||||
weatherWidth: dashboard.sizes.weatherWidth,
|
||||
mediaCoverArtSize: dashboard.sizes.mediaCoverArtSize,
|
||||
mediaVisualiserSize: dashboard.sizes.mediaVisualiserSize,
|
||||
resourceSize: dashboard.sizes.resourceSize
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeControlCenter(): var {
|
||||
return {
|
||||
sizes: {
|
||||
heightMult: controlCenter.sizes.heightMult,
|
||||
ratio: controlCenter.sizes.ratio
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeLauncher(): var {
|
||||
return {
|
||||
enabled: launcher.enabled,
|
||||
showOnHover: launcher.showOnHover,
|
||||
maxShown: launcher.maxShown,
|
||||
maxWallpapers: launcher.maxWallpapers,
|
||||
specialPrefix: launcher.specialPrefix,
|
||||
actionPrefix: launcher.actionPrefix,
|
||||
enableDangerousActions: launcher.enableDangerousActions,
|
||||
dragThreshold: launcher.dragThreshold,
|
||||
vimKeybinds: launcher.vimKeybinds,
|
||||
favouriteApps: launcher.favouriteApps,
|
||||
hiddenApps: launcher.hiddenApps,
|
||||
useFuzzy: {
|
||||
apps: launcher.useFuzzy.apps,
|
||||
actions: launcher.useFuzzy.actions,
|
||||
schemes: launcher.useFuzzy.schemes,
|
||||
variants: launcher.useFuzzy.variants,
|
||||
wallpapers: launcher.useFuzzy.wallpapers
|
||||
},
|
||||
sizes: {
|
||||
itemWidth: launcher.sizes.itemWidth,
|
||||
itemHeight: launcher.sizes.itemHeight,
|
||||
wallpaperWidth: launcher.sizes.wallpaperWidth,
|
||||
wallpaperHeight: launcher.sizes.wallpaperHeight
|
||||
},
|
||||
actions: launcher.actions
|
||||
};
|
||||
}
|
||||
|
||||
function serializeNotifs(): var {
|
||||
return {
|
||||
expire: notifs.expire,
|
||||
defaultExpireTimeout: notifs.defaultExpireTimeout,
|
||||
clearThreshold: notifs.clearThreshold,
|
||||
expandThreshold: notifs.expandThreshold,
|
||||
actionOnClick: notifs.actionOnClick,
|
||||
groupPreviewNum: notifs.groupPreviewNum,
|
||||
sizes: {
|
||||
width: notifs.sizes.width,
|
||||
image: notifs.sizes.image,
|
||||
badge: notifs.sizes.badge
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeOsd(): var {
|
||||
return {
|
||||
enabled: osd.enabled,
|
||||
hideDelay: osd.hideDelay,
|
||||
enableBrightness: osd.enableBrightness,
|
||||
enableMicrophone: osd.enableMicrophone,
|
||||
sizes: {
|
||||
sliderWidth: osd.sizes.sliderWidth,
|
||||
sliderHeight: osd.sizes.sliderHeight
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeSession(): var {
|
||||
return {
|
||||
enabled: session.enabled,
|
||||
dragThreshold: session.dragThreshold,
|
||||
vimKeybinds: session.vimKeybinds,
|
||||
icons: {
|
||||
logout: session.icons.logout,
|
||||
shutdown: session.icons.shutdown,
|
||||
hibernate: session.icons.hibernate,
|
||||
reboot: session.icons.reboot
|
||||
},
|
||||
commands: {
|
||||
logout: session.commands.logout,
|
||||
shutdown: session.commands.shutdown,
|
||||
hibernate: session.commands.hibernate,
|
||||
reboot: session.commands.reboot
|
||||
},
|
||||
sizes: {
|
||||
button: session.sizes.button
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeWinfo(): var {
|
||||
return {
|
||||
sizes: {
|
||||
heightMult: winfo.sizes.heightMult,
|
||||
detailsWidth: winfo.sizes.detailsWidth
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeLock(): var {
|
||||
return {
|
||||
recolourLogo: lock.recolourLogo,
|
||||
enableFprint: lock.enableFprint,
|
||||
maxFprintTries: lock.maxFprintTries,
|
||||
sizes: {
|
||||
heightMult: lock.sizes.heightMult,
|
||||
ratio: lock.sizes.ratio,
|
||||
centerWidth: lock.sizes.centerWidth
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeUtilities(): var {
|
||||
return {
|
||||
enabled: utilities.enabled,
|
||||
maxToasts: utilities.maxToasts,
|
||||
sizes: {
|
||||
width: utilities.sizes.width,
|
||||
toastWidth: utilities.sizes.toastWidth
|
||||
},
|
||||
toasts: {
|
||||
configLoaded: utilities.toasts.configLoaded,
|
||||
chargingChanged: utilities.toasts.chargingChanged,
|
||||
gameModeChanged: utilities.toasts.gameModeChanged,
|
||||
dndChanged: utilities.toasts.dndChanged,
|
||||
audioOutputChanged: utilities.toasts.audioOutputChanged,
|
||||
audioInputChanged: utilities.toasts.audioInputChanged,
|
||||
capsLockChanged: utilities.toasts.capsLockChanged,
|
||||
numLockChanged: utilities.toasts.numLockChanged,
|
||||
kbLayoutChanged: utilities.toasts.kbLayoutChanged,
|
||||
vpnChanged: utilities.toasts.vpnChanged,
|
||||
nowPlaying: utilities.toasts.nowPlaying
|
||||
},
|
||||
vpn: {
|
||||
enabled: utilities.vpn.enabled,
|
||||
provider: utilities.vpn.provider
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeSidebar(): var {
|
||||
return {
|
||||
enabled: sidebar.enabled,
|
||||
dragThreshold: sidebar.dragThreshold,
|
||||
sizes: {
|
||||
width: sidebar.sizes.width
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function serializeServices(): var {
|
||||
return {
|
||||
weatherLocation: services.weatherLocation,
|
||||
useFahrenheit: services.useFahrenheit,
|
||||
useFahrenheitPerformance: services.useFahrenheitPerformance,
|
||||
useTwelveHourClock: services.useTwelveHourClock,
|
||||
gpuType: services.gpuType,
|
||||
visualiserBars: services.visualiserBars,
|
||||
audioIncrement: services.audioIncrement,
|
||||
brightnessIncrement: services.brightnessIncrement,
|
||||
maxVolume: services.maxVolume,
|
||||
smartScheme: services.smartScheme,
|
||||
defaultPlayer: services.defaultPlayer,
|
||||
playerAliases: services.playerAliases
|
||||
};
|
||||
}
|
||||
|
||||
function serializePaths(): var {
|
||||
return {
|
||||
wallpaperDir: paths.wallpaperDir,
|
||||
sessionGif: paths.sessionGif,
|
||||
mediaGif: paths.mediaGif
|
||||
};
|
||||
}
|
||||
|
||||
FileView {
|
||||
id: fileView
|
||||
|
||||
path: `${Paths.config}/shell.json`
|
||||
watchChanges: true
|
||||
onFileChanged: {
|
||||
// Prevent reload loop - don't reload if we just saved
|
||||
if (!recentlySaved) {
|
||||
timer.restart();
|
||||
reload();
|
||||
} else {
|
||||
// Self-initiated save - reload without toast
|
||||
reload();
|
||||
}
|
||||
}
|
||||
onLoaded: {
|
||||
try {
|
||||
JSON.parse(text());
|
||||
const elapsed = timer.elapsedMs();
|
||||
// Only show toast for external changes (not our own saves) and when elapsed time is meaningful
|
||||
if (adapter.utilities.toasts.configLoaded && !recentlySaved && elapsed > 0) {
|
||||
Toaster.toast(qsTr("Config loaded"), qsTr("Config loaded in %1ms").arg(elapsed), "rule_settings");
|
||||
} else if (adapter.utilities.toasts.configLoaded && recentlySaved && elapsed > 0) {
|
||||
Toaster.toast(qsTr("Config saved"), qsTr("Config reloaded in %1ms").arg(elapsed), "rule_settings");
|
||||
}
|
||||
} catch (e) {
|
||||
Toaster.toast(qsTr("Failed to load config"), e.message, "settings_alert", Toast.Error);
|
||||
}
|
||||
}
|
||||
onLoadFailed: err => {
|
||||
if (err !== FileViewError.FileNotFound)
|
||||
Toaster.toast(qsTr("Failed to read config file"), FileViewError.toString(err), "settings_alert", Toast.Warning);
|
||||
}
|
||||
onSaveFailed: err => Toaster.toast(qsTr("Failed to save config"), FileViewError.toString(err), "settings_alert", Toast.Error)
|
||||
|
||||
JsonAdapter {
|
||||
id: adapter
|
||||
|
||||
property AppearanceConfig appearance: AppearanceConfig {}
|
||||
property GeneralConfig general: GeneralConfig {}
|
||||
property BackgroundConfig background: BackgroundConfig {}
|
||||
property BarConfig bar: BarConfig {}
|
||||
property BorderConfig border: BorderConfig {}
|
||||
property DashboardConfig dashboard: DashboardConfig {}
|
||||
property ControlCenterConfig controlCenter: ControlCenterConfig {}
|
||||
property LauncherConfig launcher: LauncherConfig {}
|
||||
property NotifsConfig notifs: NotifsConfig {}
|
||||
property OsdConfig osd: OsdConfig {}
|
||||
property SessionConfig session: SessionConfig {}
|
||||
property WInfoConfig winfo: WInfoConfig {}
|
||||
property LockConfig lock: LockConfig {}
|
||||
property UtilitiesConfig utilities: UtilitiesConfig {}
|
||||
property SidebarConfig sidebar: SidebarConfig {}
|
||||
property ServiceConfig services: ServiceConfig {}
|
||||
property UserPaths paths: UserPaths {}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
.config/quickshell/caelestia/config/ControlCenterConfig.qml
Normal file
10
.config/quickshell/caelestia/config/ControlCenterConfig.qml
Normal file
@@ -0,0 +1,10 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property real heightMult: 0.7
|
||||
property real ratio: 16 / 9
|
||||
}
|
||||
}
|
||||
36
.config/quickshell/caelestia/config/DashboardConfig.qml
Normal file
36
.config/quickshell/caelestia/config/DashboardConfig.qml
Normal file
@@ -0,0 +1,36 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool enabled: true
|
||||
property bool showOnHover: true
|
||||
property int mediaUpdateInterval: 500
|
||||
property int resourceUpdateInterval: 1000
|
||||
property int dragThreshold: 50
|
||||
property Sizes sizes: Sizes {}
|
||||
property Performance performance: Performance {}
|
||||
|
||||
component Performance: JsonObject {
|
||||
property bool showBattery: true
|
||||
property bool showGpu: true
|
||||
property bool showCpu: true
|
||||
property bool showMemory: true
|
||||
property bool showStorage: true
|
||||
property bool showNetwork: true
|
||||
}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
readonly property int tabIndicatorHeight: 3
|
||||
readonly property int tabIndicatorSpacing: 5
|
||||
readonly property int infoWidth: 200
|
||||
readonly property int infoIconSize: 25
|
||||
readonly property int dateTimeWidth: 110
|
||||
readonly property int mediaWidth: 200
|
||||
readonly property int mediaProgressSweep: 180
|
||||
readonly property int mediaProgressThickness: 8
|
||||
readonly property int resourceProgessThickness: 10
|
||||
readonly property int weatherWidth: 250
|
||||
readonly property int mediaCoverArtSize: 150
|
||||
readonly property int mediaVisualiserSize: 80
|
||||
readonly property int resourceSize: 200
|
||||
}
|
||||
}
|
||||
60
.config/quickshell/caelestia/config/GeneralConfig.qml
Normal file
60
.config/quickshell/caelestia/config/GeneralConfig.qml
Normal file
@@ -0,0 +1,60 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property string logo: ""
|
||||
property Apps apps: Apps {}
|
||||
property Idle idle: Idle {}
|
||||
property Battery battery: Battery {}
|
||||
|
||||
component Apps: JsonObject {
|
||||
property list<string> terminal: ["foot"]
|
||||
property list<string> audio: ["pavucontrol"]
|
||||
property list<string> playback: ["mpv"]
|
||||
property list<string> explorer: ["thunar"]
|
||||
}
|
||||
|
||||
component Idle: JsonObject {
|
||||
property bool lockBeforeSleep: true
|
||||
property bool inhibitWhenAudio: true
|
||||
property list<var> timeouts: [
|
||||
{
|
||||
timeout: 180,
|
||||
idleAction: "lock"
|
||||
},
|
||||
{
|
||||
timeout: 300,
|
||||
idleAction: "dpms off",
|
||||
returnAction: "dpms on"
|
||||
},
|
||||
{
|
||||
timeout: 600,
|
||||
idleAction: ["systemctl", "suspend-then-hibernate"]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
component Battery: JsonObject {
|
||||
property list<var> warnLevels: [
|
||||
{
|
||||
level: 20,
|
||||
title: qsTr("Low battery"),
|
||||
message: qsTr("You might want to plug in a charger"),
|
||||
icon: "battery_android_frame_2"
|
||||
},
|
||||
{
|
||||
level: 10,
|
||||
title: qsTr("Did you see the previous message?"),
|
||||
message: qsTr("You should probably plug in a charger <b>now</b>"),
|
||||
icon: "battery_android_frame_1"
|
||||
},
|
||||
{
|
||||
level: 5,
|
||||
title: qsTr("Critical battery level"),
|
||||
message: qsTr("PLUG THE CHARGER RIGHT NOW!!"),
|
||||
icon: "battery_android_alert",
|
||||
critical: true
|
||||
},
|
||||
]
|
||||
property int criticalLevel: 3
|
||||
}
|
||||
}
|
||||
147
.config/quickshell/caelestia/config/LauncherConfig.qml
Normal file
147
.config/quickshell/caelestia/config/LauncherConfig.qml
Normal file
@@ -0,0 +1,147 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool enabled: true
|
||||
property bool showOnHover: false
|
||||
property int maxShown: 7
|
||||
property int maxWallpapers: 9 // Warning: even numbers look bad
|
||||
property string specialPrefix: "@"
|
||||
property string actionPrefix: ">"
|
||||
property bool enableDangerousActions: false // Allow actions that can cause losing data, like shutdown, reboot and logout
|
||||
property int dragThreshold: 50
|
||||
property bool vimKeybinds: false
|
||||
property list<string> favouriteApps: []
|
||||
property list<string> hiddenApps: []
|
||||
property UseFuzzy useFuzzy: UseFuzzy {}
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component UseFuzzy: JsonObject {
|
||||
property bool apps: false
|
||||
property bool actions: false
|
||||
property bool schemes: false
|
||||
property bool variants: false
|
||||
property bool wallpapers: false
|
||||
}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property int itemWidth: 600
|
||||
property int itemHeight: 57
|
||||
property int wallpaperWidth: 280
|
||||
property int wallpaperHeight: 200
|
||||
}
|
||||
|
||||
property list<var> actions: [
|
||||
{
|
||||
name: "Calculator",
|
||||
icon: "calculate",
|
||||
description: "Do simple math equations (powered by Qalc)",
|
||||
command: ["autocomplete", "calc"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Scheme",
|
||||
icon: "palette",
|
||||
description: "Change the current colour scheme",
|
||||
command: ["autocomplete", "scheme"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Wallpaper",
|
||||
icon: "image",
|
||||
description: "Change the current wallpaper",
|
||||
command: ["autocomplete", "wallpaper"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Variant",
|
||||
icon: "colors",
|
||||
description: "Change the current scheme variant",
|
||||
command: ["autocomplete", "variant"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Transparency",
|
||||
icon: "opacity",
|
||||
description: "Change shell transparency",
|
||||
command: ["autocomplete", "transparency"],
|
||||
enabled: false,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Random",
|
||||
icon: "casino",
|
||||
description: "Switch to a random wallpaper",
|
||||
command: ["caelestia", "wallpaper", "-r"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Light",
|
||||
icon: "light_mode",
|
||||
description: "Change the scheme to light mode",
|
||||
command: ["setMode", "light"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Dark",
|
||||
icon: "dark_mode",
|
||||
description: "Change the scheme to dark mode",
|
||||
command: ["setMode", "dark"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Shutdown",
|
||||
icon: "power_settings_new",
|
||||
description: "Shutdown the system",
|
||||
command: ["systemctl", "poweroff"],
|
||||
enabled: true,
|
||||
dangerous: true
|
||||
},
|
||||
{
|
||||
name: "Reboot",
|
||||
icon: "cached",
|
||||
description: "Reboot the system",
|
||||
command: ["systemctl", "reboot"],
|
||||
enabled: true,
|
||||
dangerous: true
|
||||
},
|
||||
{
|
||||
name: "Logout",
|
||||
icon: "exit_to_app",
|
||||
description: "Log out of the current session",
|
||||
command: ["loginctl", "terminate-user", ""],
|
||||
enabled: true,
|
||||
dangerous: true
|
||||
},
|
||||
{
|
||||
name: "Lock",
|
||||
icon: "lock",
|
||||
description: "Lock the current session",
|
||||
command: ["loginctl", "lock-session"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Sleep",
|
||||
icon: "bedtime",
|
||||
description: "Suspend then hibernate",
|
||||
command: ["systemctl", "suspend-then-hibernate"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
},
|
||||
{
|
||||
name: "Settings",
|
||||
icon: "settings",
|
||||
description: "Configure the shell",
|
||||
command: ["caelestia", "shell", "controlCenter", "open"],
|
||||
enabled: true,
|
||||
dangerous: false
|
||||
}
|
||||
]
|
||||
}
|
||||
14
.config/quickshell/caelestia/config/LockConfig.qml
Normal file
14
.config/quickshell/caelestia/config/LockConfig.qml
Normal file
@@ -0,0 +1,14 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool recolourLogo: false
|
||||
property bool enableFprint: true
|
||||
property int maxFprintTries: 3
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property real heightMult: 0.7
|
||||
property real ratio: 16 / 9
|
||||
property int centerWidth: 600
|
||||
}
|
||||
}
|
||||
18
.config/quickshell/caelestia/config/NotifsConfig.qml
Normal file
18
.config/quickshell/caelestia/config/NotifsConfig.qml
Normal file
@@ -0,0 +1,18 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool expire: true
|
||||
property int defaultExpireTimeout: 5000
|
||||
property real clearThreshold: 0.3
|
||||
property int expandThreshold: 20
|
||||
property bool actionOnClick: false
|
||||
property int groupPreviewNum: 3
|
||||
property bool openExpanded: false // Show the notifichation in expanded state when opening
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property int width: 400
|
||||
property int image: 41
|
||||
property int badge: 20
|
||||
}
|
||||
}
|
||||
14
.config/quickshell/caelestia/config/OsdConfig.qml
Normal file
14
.config/quickshell/caelestia/config/OsdConfig.qml
Normal file
@@ -0,0 +1,14 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool enabled: true
|
||||
property int hideDelay: 2000
|
||||
property bool enableBrightness: true
|
||||
property bool enableMicrophone: false
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property int sliderWidth: 30
|
||||
property int sliderHeight: 150
|
||||
}
|
||||
}
|
||||
22
.config/quickshell/caelestia/config/ServiceConfig.qml
Normal file
22
.config/quickshell/caelestia/config/ServiceConfig.qml
Normal file
@@ -0,0 +1,22 @@
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
|
||||
JsonObject {
|
||||
property string weatherLocation: "" // A lat,long pair or empty for autodetection, e.g. "37.8267,-122.4233"
|
||||
property bool useFahrenheit: [Locale.ImperialUSSystem, Locale.ImperialSystem].includes(Qt.locale().measurementSystem)
|
||||
property bool useFahrenheitPerformance: [Locale.ImperialUSSystem, Locale.ImperialSystem].includes(Qt.locale().measurementSystem)
|
||||
property bool useTwelveHourClock: Qt.locale().timeFormat(Locale.ShortFormat).toLowerCase().includes("a")
|
||||
property string gpuType: ""
|
||||
property int visualiserBars: 45
|
||||
property real audioIncrement: 0.1
|
||||
property real brightnessIncrement: 0.1
|
||||
property real maxVolume: 1.0
|
||||
property bool smartScheme: true
|
||||
property string defaultPlayer: "Spotify"
|
||||
property list<var> playerAliases: [
|
||||
{
|
||||
"from": "com.github.th_ch.youtube_music",
|
||||
"to": "YT Music"
|
||||
}
|
||||
]
|
||||
}
|
||||
29
.config/quickshell/caelestia/config/SessionConfig.qml
Normal file
29
.config/quickshell/caelestia/config/SessionConfig.qml
Normal file
@@ -0,0 +1,29 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool enabled: true
|
||||
property int dragThreshold: 30
|
||||
property bool vimKeybinds: false
|
||||
property Icons icons: Icons {}
|
||||
property Commands commands: Commands {}
|
||||
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component Icons: JsonObject {
|
||||
property string logout: "logout"
|
||||
property string shutdown: "power_settings_new"
|
||||
property string hibernate: "downloading"
|
||||
property string reboot: "cached"
|
||||
}
|
||||
|
||||
component Commands: JsonObject {
|
||||
property list<string> logout: ["loginctl", "terminate-user", ""]
|
||||
property list<string> shutdown: ["systemctl", "poweroff"]
|
||||
property list<string> hibernate: ["systemctl", "hibernate"]
|
||||
property list<string> reboot: ["systemctl", "reboot"]
|
||||
}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property int button: 80
|
||||
}
|
||||
}
|
||||
11
.config/quickshell/caelestia/config/SidebarConfig.qml
Normal file
11
.config/quickshell/caelestia/config/SidebarConfig.qml
Normal file
@@ -0,0 +1,11 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool enabled: true
|
||||
property int dragThreshold: 80
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property int width: 430
|
||||
}
|
||||
}
|
||||
8
.config/quickshell/caelestia/config/UserPaths.qml
Normal file
8
.config/quickshell/caelestia/config/UserPaths.qml
Normal file
@@ -0,0 +1,8 @@
|
||||
import qs.utils
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property string wallpaperDir: `${Paths.pictures}/Wallpapers`
|
||||
property string sessionGif: "root:/assets/kurukuru.gif"
|
||||
property string mediaGif: "root:/assets/bongocat.gif"
|
||||
}
|
||||
35
.config/quickshell/caelestia/config/UtilitiesConfig.qml
Normal file
35
.config/quickshell/caelestia/config/UtilitiesConfig.qml
Normal file
@@ -0,0 +1,35 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property bool enabled: true
|
||||
property int maxToasts: 4
|
||||
|
||||
property Sizes sizes: Sizes {}
|
||||
property Toasts toasts: Toasts {}
|
||||
property Vpn vpn: Vpn {}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property int width: 430
|
||||
property int toastWidth: 430
|
||||
}
|
||||
|
||||
component Toasts: JsonObject {
|
||||
property bool configLoaded: true
|
||||
property bool chargingChanged: true
|
||||
property bool gameModeChanged: true
|
||||
property bool dndChanged: true
|
||||
property bool audioOutputChanged: true
|
||||
property bool audioInputChanged: true
|
||||
property bool capsLockChanged: true
|
||||
property bool numLockChanged: true
|
||||
property bool kbLayoutChanged: true
|
||||
property bool kbLimit: true
|
||||
property bool vpnChanged: true
|
||||
property bool nowPlaying: false
|
||||
}
|
||||
|
||||
component Vpn: JsonObject {
|
||||
property bool enabled: false
|
||||
property list<var> provider: ["netbird"]
|
||||
}
|
||||
}
|
||||
10
.config/quickshell/caelestia/config/WInfoConfig.qml
Normal file
10
.config/quickshell/caelestia/config/WInfoConfig.qml
Normal file
@@ -0,0 +1,10 @@
|
||||
import Quickshell.Io
|
||||
|
||||
JsonObject {
|
||||
property Sizes sizes: Sizes {}
|
||||
|
||||
component Sizes: JsonObject {
|
||||
property real heightMult: 0.7
|
||||
property real detailsWidth: 500
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user