added settings options
This commit is contained in:
@@ -1,141 +1,159 @@
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import qs.Components
|
||||
import qs.Modules as Modules
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
import qs.Helpers
|
||||
|
||||
CustomFlickable {
|
||||
SettingsPage {
|
||||
id: root
|
||||
|
||||
contentHeight: clayout.implicitHeight
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Scale"
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
SettingSpinBox {
|
||||
name: "Rounding scale"
|
||||
object: Config.appearance.rounding
|
||||
setting: "scale"
|
||||
step: 0.1
|
||||
}
|
||||
|
||||
onTapped: function (eventPoint) {
|
||||
const menu = SettingsDropdowns.activeMenu;
|
||||
if (!menu)
|
||||
return;
|
||||
Separator {
|
||||
}
|
||||
|
||||
const p = eventPoint.scenePosition;
|
||||
SettingSpinBox {
|
||||
name: "Spacing scale"
|
||||
object: Config.appearance.spacing
|
||||
setting: "scale"
|
||||
step: 0.1
|
||||
}
|
||||
|
||||
if (SettingsDropdowns.hit(SettingsDropdowns.activeTrigger, p))
|
||||
return;
|
||||
Separator {
|
||||
}
|
||||
|
||||
if (SettingsDropdowns.hit(menu, p))
|
||||
return;
|
||||
SettingSpinBox {
|
||||
name: "Padding scale"
|
||||
object: Config.appearance.padding
|
||||
setting: "scale"
|
||||
step: 0.1
|
||||
}
|
||||
|
||||
SettingsDropdowns.closeActive();
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Font size scale"
|
||||
object: Config.appearance.font.size
|
||||
setting: "scale"
|
||||
step: 0.1
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Animation duration scale"
|
||||
object: Config.appearance.anim.durations
|
||||
setting: "scale"
|
||||
step: 0.1
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
id: clayout
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Fonts"
|
||||
}
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
SettingInput {
|
||||
name: "Sans family"
|
||||
object: Config.appearance.font.family
|
||||
setting: "sans"
|
||||
}
|
||||
|
||||
CustomRect {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: colorLayout.implicitHeight + Appearance.padding.normal * 2
|
||||
color: DynamicColors.tPalette.m3surfaceContainer
|
||||
radius: Appearance.rounding.normal - Appearance.padding.smaller
|
||||
Separator {
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
id: colorLayout
|
||||
SettingInput {
|
||||
name: "Monospace family"
|
||||
object: Config.appearance.font.family
|
||||
setting: "mono"
|
||||
}
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.margins: Appearance.padding.large
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
spacing: Appearance.spacing.normal
|
||||
Separator {
|
||||
}
|
||||
|
||||
Settings {
|
||||
name: "Color"
|
||||
}
|
||||
SettingInput {
|
||||
name: "Material family"
|
||||
object: Config.appearance.font.family
|
||||
setting: "material"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Automatic color scheme"
|
||||
object: Config.general.color
|
||||
setting: "schemeGeneration"
|
||||
}
|
||||
Separator {
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Smart color scheme"
|
||||
object: Config.general.color
|
||||
setting: "smart"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinner {
|
||||
name: "Schedule dark mode"
|
||||
object: Config.general.color
|
||||
settings: ["scheduleDarkStart", "scheduleDarkEnd"]
|
||||
z: 2
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
CustomSplitButtonRow {
|
||||
enabled: true
|
||||
label: qsTr("Scheme mode")
|
||||
|
||||
menuItems: [
|
||||
MenuItem {
|
||||
property string val: "light"
|
||||
|
||||
icon: "light_mode"
|
||||
text: qsTr("Light")
|
||||
},
|
||||
MenuItem {
|
||||
property string val: "dark"
|
||||
|
||||
icon: "dark_mode"
|
||||
text: qsTr("Dark")
|
||||
}
|
||||
]
|
||||
|
||||
Component.onCompleted: {
|
||||
if (Config.general.color.mode === "light")
|
||||
active = menuItems[0];
|
||||
else
|
||||
active = menuItems[1];
|
||||
}
|
||||
onSelected: item => {
|
||||
Config.general.color.mode = item.val;
|
||||
Config.save();
|
||||
}
|
||||
}
|
||||
}
|
||||
SettingInput {
|
||||
name: "Clock family"
|
||||
object: Config.appearance.font.family
|
||||
setting: "clock"
|
||||
}
|
||||
}
|
||||
|
||||
component Settings: CustomRect {
|
||||
id: settingsItem
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Animation"
|
||||
}
|
||||
|
||||
required property string name
|
||||
SettingSpinBox {
|
||||
name: "Media GIF speed adjustment"
|
||||
object: Config.appearance.anim
|
||||
setting: "mediaGifSpeedAdjustment"
|
||||
step: 10
|
||||
}
|
||||
|
||||
Layout.preferredHeight: 60
|
||||
Layout.preferredWidth: 200
|
||||
Separator {
|
||||
}
|
||||
|
||||
CustomText {
|
||||
id: text
|
||||
SettingSpinBox {
|
||||
name: "Session GIF speed"
|
||||
max: 5
|
||||
min: 0
|
||||
object: Config.appearance.anim
|
||||
setting: "sessionGifSpeed"
|
||||
step: 0.1
|
||||
}
|
||||
}
|
||||
|
||||
anchors.fill: parent
|
||||
font.bold: true
|
||||
font.pointSize: Appearance.font.size.large * 2
|
||||
text: settingsItem.name
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Transparency"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable transparency"
|
||||
object: Config.appearance.transparency
|
||||
setting: "enabled"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Base opacity"
|
||||
max: 1
|
||||
min: 0
|
||||
object: Config.appearance.transparency
|
||||
setting: "base"
|
||||
step: 0.05
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Layer opacity"
|
||||
max: 1
|
||||
min: 0
|
||||
object: Config.appearance.transparency
|
||||
setting: "layers"
|
||||
step: 0.05
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,29 @@
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import qs.Components
|
||||
import qs.Modules as Modules
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
import qs.Helpers
|
||||
|
||||
CustomRect {
|
||||
SettingsPage {
|
||||
id: root
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Wallpaper"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable wallpaper rendering"
|
||||
object: Config.background
|
||||
setting: "enabled"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Fade duration"
|
||||
min: 0
|
||||
object: Config.background
|
||||
setting: "wallFadeDuration"
|
||||
step: 50
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,184 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Bar"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Auto hide"
|
||||
object: Config.barConfig
|
||||
setting: "autoHide"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Height"
|
||||
min: 1
|
||||
object: Config.barConfig
|
||||
setting: "height"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Rounding"
|
||||
min: 0
|
||||
object: Config.barConfig
|
||||
setting: "rounding"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Border"
|
||||
min: 0
|
||||
object: Config.barConfig
|
||||
setting: "border"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Popouts"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Tray"
|
||||
object: Config.barConfig.popouts
|
||||
setting: "tray"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Audio"
|
||||
object: Config.barConfig.popouts
|
||||
setting: "audio"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Active window"
|
||||
object: Config.barConfig.popouts
|
||||
setting: "activeWindow"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Resources"
|
||||
object: Config.barConfig.popouts
|
||||
setting: "resources"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Clock"
|
||||
object: Config.barConfig.popouts
|
||||
setting: "clock"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Network"
|
||||
object: Config.barConfig.popouts
|
||||
setting: "network"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Power"
|
||||
object: Config.barConfig.popouts
|
||||
setting: "upower"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Entries"
|
||||
}
|
||||
|
||||
SettingBarEntryList {
|
||||
name: "Bar entries"
|
||||
object: Config.barConfig
|
||||
setting: "entries"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Dock"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable dock"
|
||||
object: Config.dock
|
||||
setting: "enable"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Dock height"
|
||||
min: 1
|
||||
object: Config.dock
|
||||
setting: "height"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Hover to reveal"
|
||||
object: Config.dock
|
||||
setting: "hoverToReveal"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Pin on startup"
|
||||
object: Config.dock
|
||||
setting: "pinnedOnStartup"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingStringList {
|
||||
name: "Pinned apps"
|
||||
addLabel: qsTr("Add pinned app")
|
||||
object: Config.dock
|
||||
setting: "pinnedApps"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingStringList {
|
||||
name: "Ignored app regexes"
|
||||
addLabel: qsTr("Add ignored regex")
|
||||
object: Config.dock
|
||||
setting: "ignoredAppRegexes"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,212 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Dashboard"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable dashboard"
|
||||
object: Config.dashboard
|
||||
setting: "enabled"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Media update interval"
|
||||
min: 0
|
||||
object: Config.dashboard
|
||||
setting: "mediaUpdateInterval"
|
||||
step: 50
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Resource update interval"
|
||||
min: 0
|
||||
object: Config.dashboard
|
||||
setting: "resourceUpdateInterval"
|
||||
step: 50
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Drag threshold"
|
||||
min: 0
|
||||
object: Config.dashboard
|
||||
setting: "dragThreshold"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Performance"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Show battery"
|
||||
object: Config.dashboard.performance
|
||||
setting: "showBattery"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Show GPU"
|
||||
object: Config.dashboard.performance
|
||||
setting: "showGpu"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Show CPU"
|
||||
object: Config.dashboard.performance
|
||||
setting: "showCpu"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Show memory"
|
||||
object: Config.dashboard.performance
|
||||
setting: "showMemory"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Show storage"
|
||||
object: Config.dashboard.performance
|
||||
setting: "showStorage"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Show network"
|
||||
object: Config.dashboard.performance
|
||||
setting: "showNetwork"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Layout Sizes"
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Tab indicator height"
|
||||
value: String(Config.dashboard.sizes.tabIndicatorHeight)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Tab indicator spacing"
|
||||
value: String(Config.dashboard.sizes.tabIndicatorSpacing)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Info width"
|
||||
value: String(Config.dashboard.sizes.infoWidth)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Info icon size"
|
||||
value: String(Config.dashboard.sizes.infoIconSize)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Date time width"
|
||||
value: String(Config.dashboard.sizes.dateTimeWidth)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Media width"
|
||||
value: String(Config.dashboard.sizes.mediaWidth)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Media progress sweep"
|
||||
value: String(Config.dashboard.sizes.mediaProgressSweep)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Media progress thickness"
|
||||
value: String(Config.dashboard.sizes.mediaProgressThickness)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Resource progress thickness"
|
||||
value: String(Config.dashboard.sizes.resourceProgessThickness)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Weather width"
|
||||
value: String(Config.dashboard.sizes.weatherWidth)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Media cover art size"
|
||||
value: String(Config.dashboard.sizes.mediaCoverArtSize)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Media visualiser size"
|
||||
value: String(Config.dashboard.sizes.mediaVisualiserSize)
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingReadOnly {
|
||||
name: "Resource size"
|
||||
value: String(Config.dashboard.sizes.resourceSize)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,37 +1,212 @@
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import qs.Components
|
||||
import qs.Modules as Modules
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
import qs.Helpers
|
||||
import qs.Components
|
||||
|
||||
CustomRect {
|
||||
SettingsPage {
|
||||
id: root
|
||||
|
||||
ColumnLayout {
|
||||
id: clayout
|
||||
function schemeTypeItem(items, value) {
|
||||
for (let i = 0; i < items.length; i++) {
|
||||
const item = items[i];
|
||||
if (item.value === value)
|
||||
return item;
|
||||
}
|
||||
|
||||
anchors.fill: parent
|
||||
return items[0] ?? null;
|
||||
}
|
||||
|
||||
component Settings: CustomRect {
|
||||
id: settingsItem
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "General"
|
||||
}
|
||||
|
||||
required property string name
|
||||
SettingInput {
|
||||
name: "Logo"
|
||||
object: Config.general
|
||||
setting: "logo"
|
||||
}
|
||||
|
||||
Layout.preferredHeight: 60
|
||||
Layout.preferredWidth: 200
|
||||
Separator {
|
||||
}
|
||||
|
||||
CustomText {
|
||||
id: text
|
||||
SettingInput {
|
||||
name: "Wallpaper path"
|
||||
object: Config.general
|
||||
setting: "wallpaperPath"
|
||||
}
|
||||
|
||||
anchors.fill: parent
|
||||
font.bold: true
|
||||
font.pointSize: Appearance.font.size.large * 2
|
||||
text: settingsItem.name
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Desktop icons"
|
||||
object: Config.general
|
||||
setting: "desktopIcons"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Color"
|
||||
}
|
||||
|
||||
CustomSplitButtonRow {
|
||||
active: Config.general.color.mode === "light" ? menuItems[0] : menuItems[1]
|
||||
label: qsTr("Scheme mode")
|
||||
|
||||
menuItems: [
|
||||
MenuItem {
|
||||
icon: "light_mode"
|
||||
text: qsTr("Light")
|
||||
value: "light"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "dark_mode"
|
||||
text: qsTr("Dark")
|
||||
value: "dark"
|
||||
}
|
||||
]
|
||||
|
||||
onSelected: item => {
|
||||
Config.general.color.mode = item.value;
|
||||
Config.save();
|
||||
}
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
CustomSplitButtonRow {
|
||||
id: schemeType
|
||||
|
||||
active: root.schemeTypeItem(menuItems, Config.colors.schemeType)
|
||||
label: qsTr("Scheme type")
|
||||
z: 2
|
||||
|
||||
menuItems: [
|
||||
MenuItem {
|
||||
icon: "palette"
|
||||
text: qsTr("Vibrant")
|
||||
value: "vibrant"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "gesture"
|
||||
text: qsTr("Expressive")
|
||||
value: "expressive"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "contrast"
|
||||
text: qsTr("Monochrome")
|
||||
value: "monochrome"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "tonality"
|
||||
text: qsTr("Neutral")
|
||||
value: "neutral"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "gradient"
|
||||
text: qsTr("Tonal spot")
|
||||
value: "tonalSpot"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "target"
|
||||
text: qsTr("Fidelity")
|
||||
value: "fidelity"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "article"
|
||||
text: qsTr("Content")
|
||||
value: "content"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "colors"
|
||||
text: qsTr("Rainbow")
|
||||
value: "rainbow"
|
||||
},
|
||||
MenuItem {
|
||||
icon: "nutrition"
|
||||
text: qsTr("Fruit salad")
|
||||
value: "fruitSalad"
|
||||
}
|
||||
]
|
||||
|
||||
onSelected: item => {
|
||||
Config.colors.schemeType = item.value;
|
||||
Config.save();
|
||||
}
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Automatic color scheme"
|
||||
object: Config.general.color
|
||||
setting: "schemeGeneration"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Smart color scheme"
|
||||
object: Config.general.color
|
||||
setting: "smart"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinner {
|
||||
name: "Schedule dark mode"
|
||||
object: Config.general.color
|
||||
settings: ["scheduleDarkStart", "scheduleDarkEnd"]
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
z: -1
|
||||
|
||||
SettingsHeader {
|
||||
name: "Default Apps"
|
||||
}
|
||||
|
||||
SettingStringList {
|
||||
addLabel: qsTr("Add terminal command")
|
||||
name: "Terminal"
|
||||
object: Config.general.apps
|
||||
setting: "terminal"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingStringList {
|
||||
addLabel: qsTr("Add audio command")
|
||||
name: "Audio"
|
||||
object: Config.general.apps
|
||||
setting: "audio"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingStringList {
|
||||
addLabel: qsTr("Add playback command")
|
||||
name: "Playback"
|
||||
object: Config.general.apps
|
||||
setting: "playback"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingStringList {
|
||||
addLabel: qsTr("Add explorer command")
|
||||
name: "Explorer"
|
||||
object: Config.general.apps
|
||||
setting: "explorer"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,148 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Launcher"
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Max apps shown"
|
||||
min: 1
|
||||
object: Config.launcher
|
||||
setting: "maxAppsShown"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Max wallpapers shown"
|
||||
min: 1
|
||||
object: Config.launcher
|
||||
setting: "maxWallpapers"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingInput {
|
||||
name: "Action prefix"
|
||||
object: Config.launcher
|
||||
setting: "actionPrefix"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingInput {
|
||||
name: "Special prefix"
|
||||
object: Config.launcher
|
||||
setting: "specialPrefix"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Fuzzy Search"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Apps"
|
||||
object: Config.launcher.useFuzzy
|
||||
setting: "apps"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Actions"
|
||||
object: Config.launcher.useFuzzy
|
||||
setting: "actions"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Schemes"
|
||||
object: Config.launcher.useFuzzy
|
||||
setting: "schemes"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Variants"
|
||||
object: Config.launcher.useFuzzy
|
||||
setting: "variants"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Wallpapers"
|
||||
object: Config.launcher.useFuzzy
|
||||
setting: "wallpapers"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Sizes"
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Item width"
|
||||
min: 1
|
||||
object: Config.launcher.sizes
|
||||
setting: "itemWidth"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Item height"
|
||||
min: 1
|
||||
object: Config.launcher.sizes
|
||||
setting: "itemHeight"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Wallpaper width"
|
||||
min: 1
|
||||
object: Config.launcher.sizes
|
||||
setting: "wallpaperWidth"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Wallpaper height"
|
||||
min: 1
|
||||
object: Config.launcher.sizes
|
||||
setting: "wallpaperHeight"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Actions"
|
||||
}
|
||||
|
||||
SettingActionList {
|
||||
name: "Launcher actions"
|
||||
object: Config.launcher
|
||||
setting: "actions"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,77 +1,90 @@
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import qs.Components
|
||||
import qs.Modules as Modules
|
||||
import qs.Modules.Settings.Categories.Lockscreen
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
import qs.Helpers
|
||||
|
||||
CustomFlickable {
|
||||
SettingsPage {
|
||||
id: root
|
||||
|
||||
contentHeight: clayout.implicitHeight
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Lockscreen"
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
acceptedButtons: Qt.LeftButton
|
||||
SettingSwitch {
|
||||
name: "Recolor logo"
|
||||
object: Config.lock
|
||||
setting: "recolorLogo"
|
||||
}
|
||||
|
||||
onTapped: function (eventPoint) {
|
||||
const menu = SettingsDropdowns.activeMenu;
|
||||
if (!menu)
|
||||
return;
|
||||
Separator {
|
||||
}
|
||||
|
||||
const p = eventPoint.scenePosition;
|
||||
SettingSwitch {
|
||||
name: "Enable fingerprint"
|
||||
object: Config.lock
|
||||
setting: "enableFprint"
|
||||
}
|
||||
|
||||
if (SettingsDropdowns.hit(SettingsDropdowns.activeTrigger, p))
|
||||
return;
|
||||
Separator {
|
||||
}
|
||||
|
||||
if (SettingsDropdowns.hit(menu, p))
|
||||
return;
|
||||
SettingSpinBox {
|
||||
name: "Max fingerprint tries"
|
||||
min: 1
|
||||
object: Config.lock
|
||||
setting: "maxFprintTries"
|
||||
step: 1
|
||||
}
|
||||
|
||||
SettingsDropdowns.closeActive();
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Blur amount"
|
||||
min: 0
|
||||
object: Config.lock
|
||||
setting: "blurAmount"
|
||||
step: 1
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Height multiplier"
|
||||
max: 2
|
||||
min: 0.1
|
||||
object: Config.lock.sizes
|
||||
setting: "heightMult"
|
||||
step: 0.05
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Aspect ratio"
|
||||
max: 4
|
||||
min: 0.5
|
||||
object: Config.lock.sizes
|
||||
setting: "ratio"
|
||||
step: 0.05
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Center width"
|
||||
min: 100
|
||||
object: Config.lock.sizes
|
||||
setting: "centerWidth"
|
||||
step: 10
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
id: clayout
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
CustomRect {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: idleLayout.implicitHeight + Appearance.padding.normal * 2
|
||||
color: DynamicColors.tPalette.m3surfaceContainer
|
||||
radius: Appearance.rounding.normal - Appearance.padding.smaller
|
||||
z: -1
|
||||
|
||||
Idle {
|
||||
id: idleLayout
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.margins: Appearance.padding.large
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
component Settings: CustomRect {
|
||||
id: settingsItem
|
||||
|
||||
required property string name
|
||||
|
||||
Layout.preferredHeight: 60
|
||||
Layout.preferredWidth: 200
|
||||
|
||||
CustomText {
|
||||
id: text
|
||||
|
||||
anchors.fill: parent
|
||||
font.bold: true
|
||||
font.pointSize: Appearance.font.size.large * 2
|
||||
text: settingsItem.name
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
SettingsSection {
|
||||
Idle {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Notifications"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Expire notifications"
|
||||
object: Config.notifs
|
||||
setting: "expire"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Default expire timeout"
|
||||
min: 0
|
||||
object: Config.notifs
|
||||
setting: "defaultExpireTimeout"
|
||||
step: 100
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "App notification cooldown"
|
||||
min: 0
|
||||
object: Config.notifs
|
||||
setting: "appNotifCooldown"
|
||||
step: 100
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Clear threshold"
|
||||
max: 1
|
||||
min: 0
|
||||
object: Config.notifs
|
||||
setting: "clearThreshold"
|
||||
step: 0.05
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Expand threshold"
|
||||
min: 0
|
||||
object: Config.notifs
|
||||
setting: "expandThreshold"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Action on click"
|
||||
object: Config.notifs
|
||||
setting: "actionOnClick"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Group preview count"
|
||||
min: 1
|
||||
object: Config.notifs
|
||||
setting: "groupPreviewNum"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Sizes"
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Width"
|
||||
min: 1
|
||||
object: Config.notifs.sizes
|
||||
setting: "width"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Image size"
|
||||
min: 1
|
||||
object: Config.notifs.sizes
|
||||
setting: "image"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Badge size"
|
||||
min: 1
|
||||
object: Config.notifs.sizes
|
||||
setting: "badge"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,77 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "On Screen Display"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable OSD"
|
||||
object: Config.osd
|
||||
setting: "enabled"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Hide delay"
|
||||
min: 0
|
||||
object: Config.osd
|
||||
setting: "hideDelay"
|
||||
step: 100
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable brightness OSD"
|
||||
object: Config.osd
|
||||
setting: "enableBrightness"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable microphone OSD"
|
||||
object: Config.osd
|
||||
setting: "enableMicrophone"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Brightness on all monitors"
|
||||
object: Config.osd
|
||||
setting: "allMonBrightness"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Sizes"
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Slider width"
|
||||
min: 1
|
||||
object: Config.osd.sizes
|
||||
setting: "sliderWidth"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Slider height"
|
||||
min: 1
|
||||
object: Config.osd.sizes
|
||||
setting: "sliderHeight"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,120 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Services"
|
||||
}
|
||||
|
||||
SettingInput {
|
||||
name: "Weather location"
|
||||
object: Config.services
|
||||
setting: "weatherLocation"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Use Fahrenheit"
|
||||
object: Config.services
|
||||
setting: "useFahrenheit"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Use twelve hour clock"
|
||||
object: Config.services
|
||||
setting: "useTwelveHourClock"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable ddcutil service"
|
||||
object: Config.services
|
||||
setting: "ddcutilService"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingInput {
|
||||
name: "GPU type"
|
||||
object: Config.services
|
||||
setting: "gpuType"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Media"
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Audio increment"
|
||||
max: 1
|
||||
min: 0
|
||||
object: Config.services
|
||||
setting: "audioIncrement"
|
||||
step: 0.05
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Brightness increment"
|
||||
max: 1
|
||||
min: 0
|
||||
object: Config.services
|
||||
setting: "brightnessIncrement"
|
||||
step: 0.05
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Max volume"
|
||||
max: 5
|
||||
min: 0
|
||||
object: Config.services
|
||||
setting: "maxVolume"
|
||||
step: 0.05
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingInput {
|
||||
name: "Default player"
|
||||
object: Config.services
|
||||
setting: "defaultPlayer"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Visualizer bars"
|
||||
min: 1
|
||||
object: Config.services
|
||||
setting: "visualizerBars"
|
||||
step: 1
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingAliasList {
|
||||
name: "Player aliases"
|
||||
object: Config.services
|
||||
setting: "playerAliases"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Sidebar"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable sidebar"
|
||||
object: Config.sidebar
|
||||
setting: "enabled"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Width"
|
||||
min: 1
|
||||
object: Config.sidebar.sizes
|
||||
setting: "width"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,170 @@
|
||||
import qs.Modules.Settings.Controls
|
||||
import qs.Config
|
||||
|
||||
SettingsPage {
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Utilities"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable utilities"
|
||||
object: Config.utilities
|
||||
setting: "enabled"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Max toasts"
|
||||
min: 1
|
||||
object: Config.utilities
|
||||
setting: "maxToasts"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Panel width"
|
||||
min: 1
|
||||
object: Config.utilities.sizes
|
||||
setting: "width"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSpinBox {
|
||||
name: "Toast width"
|
||||
min: 1
|
||||
object: Config.utilities.sizes
|
||||
setting: "toastWidth"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "Toasts"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Config loaded"
|
||||
object: Config.utilities.toasts
|
||||
setting: "configLoaded"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Charging changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "chargingChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Game mode changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "gameModeChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Do not disturb changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "dndChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Audio output changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "audioOutputChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Audio input changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "audioInputChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Caps lock changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "capsLockChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Num lock changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "numLockChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Keyboard layout changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "kbLayoutChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "VPN changed"
|
||||
object: Config.utilities.toasts
|
||||
setting: "vpnChanged"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Now playing"
|
||||
object: Config.utilities.toasts
|
||||
setting: "nowPlaying"
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSection {
|
||||
SettingsHeader {
|
||||
name: "VPN"
|
||||
}
|
||||
|
||||
SettingSwitch {
|
||||
name: "Enable VPN integration"
|
||||
object: Config.utilities.vpn
|
||||
setting: "enabled"
|
||||
}
|
||||
|
||||
Separator {
|
||||
}
|
||||
|
||||
SettingStringList {
|
||||
name: "Provider"
|
||||
addLabel: qsTr("Add VPN provider")
|
||||
object: Config.utilities.vpn
|
||||
setting: "provider"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user