mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-05 23:09:26 -05:00
618 lines
23 KiB
QML
618 lines
23 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import qs.services
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
|
|
ContentPage {
|
|
forceWidth: true
|
|
|
|
ContentSection {
|
|
icon: "sync_alt"
|
|
title: Translation.tr("Parallax")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "unfold_more_double"
|
|
text: Translation.tr("Vertical")
|
|
checked: Config.options.background.parallax.vertical
|
|
onCheckedChanged: {
|
|
Config.options.background.parallax.vertical = checked;
|
|
}
|
|
}
|
|
|
|
ConfigRow {
|
|
uniform: true
|
|
ConfigSwitch {
|
|
buttonIcon: "counter_1"
|
|
text: Translation.tr("Depends on workspace")
|
|
checked: Config.options.background.parallax.enableWorkspace
|
|
onCheckedChanged: {
|
|
Config.options.background.parallax.enableWorkspace = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "side_navigation"
|
|
text: Translation.tr("Depends on sidebars")
|
|
checked: Config.options.background.parallax.enableSidebar
|
|
onCheckedChanged: {
|
|
Config.options.background.parallax.enableSidebar = checked;
|
|
}
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
icon: "loupe"
|
|
text: Translation.tr("Preferred wallpaper zoom (%)")
|
|
value: Config.options.background.parallax.workspaceZoom * 100
|
|
from: 10
|
|
to: 200
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.background.parallax.workspaceZoom = value / 100;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
id: settingsClock
|
|
icon: "clock_loader_40"
|
|
title: Translation.tr("Widget: Clock")
|
|
|
|
function stylePresent(styleName) {
|
|
if (!Config.options.background.widgets.clock.showOnlyWhenLocked && Config.options.background.widgets.clock.style === styleName) {
|
|
return true;
|
|
}
|
|
if (Config.options.background.widgets.clock.styleLocked === styleName) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
readonly property bool digitalPresent: stylePresent("digital")
|
|
readonly property bool cookiePresent: stylePresent("cookie")
|
|
|
|
ConfigRow {
|
|
Layout.fillWidth: true
|
|
|
|
ConfigSwitch {
|
|
Layout.fillWidth: false
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable")
|
|
checked: Config.options.background.widgets.clock.enable
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.enable = checked;
|
|
}
|
|
}
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
ConfigSelectionArray {
|
|
Layout.fillWidth: false
|
|
currentValue: Config.options.background.widgets.clock.placementStrategy
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.placementStrategy = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: Translation.tr("Draggable"),
|
|
icon: "drag_pan",
|
|
value: "free"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Least busy"),
|
|
icon: "category",
|
|
value: "leastBusy"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Most busy"),
|
|
icon: "shapes",
|
|
value: "mostBusy"
|
|
},
|
|
]
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "lock_clock"
|
|
text: Translation.tr("Show only when locked")
|
|
checked: Config.options.background.widgets.clock.showOnlyWhenLocked
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.showOnlyWhenLocked = checked;
|
|
}
|
|
}
|
|
|
|
ConfigRow {
|
|
ContentSubsection {
|
|
visible: !Config.options.background.widgets.clock.showOnlyWhenLocked
|
|
title: Translation.tr("Clock style")
|
|
Layout.fillWidth: true
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.widgets.clock.style
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.style = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: Translation.tr("Digital"),
|
|
icon: "timer_10",
|
|
value: "digital"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Cookie"),
|
|
icon: "cookie",
|
|
value: "cookie"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Clock style (locked)")
|
|
Layout.fillWidth: false
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.widgets.clock.styleLocked
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.styleLocked = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: Translation.tr("Digital"),
|
|
icon: "timer_10",
|
|
value: "digital"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Cookie"),
|
|
icon: "cookie",
|
|
value: "cookie"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: settingsClock.digitalPresent
|
|
title: Translation.tr("Digital clock settings")
|
|
tooltip: Translation.tr("Font width and roundness settings are only available for some fonts like Google Sans Flex")
|
|
|
|
ConfigRow {
|
|
uniform: true
|
|
ConfigSwitch {
|
|
buttonIcon: "vertical_distribute"
|
|
text: Translation.tr("Vertical")
|
|
checked: Config.options.background.widgets.clock.digital.vertical
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.digital.vertical = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "animation"
|
|
text: Translation.tr("Animate time change")
|
|
checked: Config.options.background.widgets.clock.digital.animateChange
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.digital.animateChange = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
ConfigRow {
|
|
uniform: true
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "date_range"
|
|
text: Translation.tr("Show date")
|
|
checked: Config.options.background.widgets.clock.digital.showDate
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.digital.showDate = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "activity_zone"
|
|
text: Translation.tr("Use adaptive alignment")
|
|
checked: Config.options.background.widgets.clock.digital.adaptiveAlignment
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.digital.adaptiveAlignment = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Aligns the date and quote to left, center or right depending on its position on the screen.")
|
|
}
|
|
}
|
|
}
|
|
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Font family")
|
|
text: Config.options.background.widgets.clock.digital.font.family
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.background.widgets.clock.digital.font.family = text;
|
|
}
|
|
}
|
|
|
|
ConfigSlider {
|
|
text: Translation.tr("Font weight")
|
|
value: Config.options.background.widgets.clock.digital.font.weight
|
|
usePercentTooltip: false
|
|
buttonIcon: "format_bold"
|
|
from: 1
|
|
to: 1000
|
|
stopIndicatorValues: [350]
|
|
onValueChanged: {
|
|
Config.options.background.widgets.clock.digital.font.weight = value;
|
|
}
|
|
}
|
|
|
|
ConfigSlider {
|
|
text: Translation.tr("Font size")
|
|
value: Config.options.background.widgets.clock.digital.font.size
|
|
usePercentTooltip: false
|
|
buttonIcon: "format_size"
|
|
from: 50
|
|
to: 700
|
|
stopIndicatorValues: [90]
|
|
onValueChanged: {
|
|
Config.options.background.widgets.clock.digital.font.size = value;
|
|
}
|
|
}
|
|
|
|
ConfigSlider {
|
|
text: Translation.tr("Font width")
|
|
value: Config.options.background.widgets.clock.digital.font.width
|
|
usePercentTooltip: false
|
|
buttonIcon: "fit_width"
|
|
from: 25
|
|
to: 125
|
|
stopIndicatorValues: [100]
|
|
onValueChanged: {
|
|
Config.options.background.widgets.clock.digital.font.width = value;
|
|
}
|
|
}
|
|
ConfigSlider {
|
|
text: Translation.tr("Font roundness")
|
|
value: Config.options.background.widgets.clock.digital.font.roundness
|
|
usePercentTooltip: false
|
|
buttonIcon: "line_curve"
|
|
from: 0
|
|
to: 100
|
|
onValueChanged: {
|
|
Config.options.background.widgets.clock.digital.font.roundness = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: settingsClock.cookiePresent
|
|
title: Translation.tr("Cookie clock settings")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "wand_stars"
|
|
text: Translation.tr("Auto styling with Gemini")
|
|
checked: Config.options.background.widgets.clock.cookie.aiStyling
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.cookie.aiStyling = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Uses Gemini to categorize the wallpaper then picks a preset based on it.\nYou'll need to set Gemini API key on the left sidebar first.\nImages are downscaled for performance, but just to be safe,\ndo not select wallpapers with sensitive information.")
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "airwave"
|
|
text: Translation.tr("Use old sine wave cookie implementation")
|
|
checked: Config.options.background.widgets.clock.cookie.useSineCookie
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.cookie.useSineCookie = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: "Looks a bit softer and more consistent with different number of sides,\nbut has less impressive morphing"
|
|
}
|
|
}
|
|
|
|
ConfigSpinBox {
|
|
icon: "add_triangle"
|
|
text: Translation.tr("Sides")
|
|
value: Config.options.background.widgets.clock.cookie.sides
|
|
from: 0
|
|
to: 40
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.background.widgets.clock.cookie.sides = value;
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "autoplay"
|
|
text: Translation.tr("Constantly rotate")
|
|
checked: Config.options.background.widgets.clock.cookie.constantlyRotate
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.cookie.constantlyRotate = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: "Makes the clock always rotate. This is extremely expensive\n(expect 50% usage on Intel UHD Graphics) and thus impractical."
|
|
}
|
|
}
|
|
|
|
ConfigRow {
|
|
|
|
ConfigSwitch {
|
|
enabled: Config.options.background.widgets.clock.cookie.dialNumberStyle === "dots" || Config.options.background.widgets.clock.cookie.dialNumberStyle === "full"
|
|
buttonIcon: "brightness_7"
|
|
text: Translation.tr("Hour marks")
|
|
checked: Config.options.background.widgets.clock.cookie.hourMarks
|
|
onEnabledChanged: {
|
|
checked = Config.options.background.widgets.clock.cookie.hourMarks;
|
|
}
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.cookie.hourMarks = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: "Can only be turned on using the 'Dots' or 'Full' dial style for aesthetic reasons"
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
enabled: Config.options.background.widgets.clock.cookie.dialNumberStyle !== "numbers"
|
|
buttonIcon: "timer_10"
|
|
text: Translation.tr("Digits in the middle")
|
|
checked: Config.options.background.widgets.clock.cookie.timeIndicators
|
|
onEnabledChanged: {
|
|
checked = Config.options.background.widgets.clock.cookie.timeIndicators;
|
|
}
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.cookie.timeIndicators = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: "Can't be turned on when using 'Numbers' dial style for aesthetic reasons"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: settingsClock.cookiePresent
|
|
title: Translation.tr("Dial style")
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.widgets.clock.cookie.dialNumberStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.cookie.dialNumberStyle = newValue;
|
|
if (newValue !== "dots" && newValue !== "full") {
|
|
Config.options.background.widgets.clock.cookie.hourMarks = false;
|
|
}
|
|
if (newValue === "numbers") {
|
|
Config.options.background.widgets.clock.cookie.timeIndicators = false;
|
|
}
|
|
}
|
|
options: [
|
|
{
|
|
displayName: "",
|
|
icon: "block",
|
|
value: "none"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Dots"),
|
|
icon: "graph_6",
|
|
value: "dots"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Full"),
|
|
icon: "history_toggle_off",
|
|
value: "full"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Numbers"),
|
|
icon: "counter_1",
|
|
value: "numbers"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: settingsClock.cookiePresent
|
|
title: Translation.tr("Hour hand")
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.widgets.clock.cookie.hourHandStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.cookie.hourHandStyle = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: "",
|
|
icon: "block",
|
|
value: "hide"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Classic"),
|
|
icon: "radio",
|
|
value: "classic"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Hollow"),
|
|
icon: "circle",
|
|
value: "hollow"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Fill"),
|
|
icon: "eraser_size_5",
|
|
value: "fill"
|
|
},
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: settingsClock.cookiePresent
|
|
title: Translation.tr("Minute hand")
|
|
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.widgets.clock.cookie.minuteHandStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.cookie.minuteHandStyle = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: "",
|
|
icon: "block",
|
|
value: "hide"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Classic"),
|
|
icon: "radio",
|
|
value: "classic"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Thin"),
|
|
icon: "line_end",
|
|
value: "thin"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Medium"),
|
|
icon: "eraser_size_2",
|
|
value: "medium"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Bold"),
|
|
icon: "eraser_size_4",
|
|
value: "bold"
|
|
},
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: settingsClock.cookiePresent
|
|
title: Translation.tr("Second hand")
|
|
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.widgets.clock.cookie.secondHandStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.cookie.secondHandStyle = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: "",
|
|
icon: "block",
|
|
value: "hide"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Classic"),
|
|
icon: "radio",
|
|
value: "classic"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Line"),
|
|
icon: "line_end",
|
|
value: "line"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Dot"),
|
|
icon: "adjust",
|
|
value: "dot"
|
|
},
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: settingsClock.cookiePresent
|
|
title: Translation.tr("Date style")
|
|
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.widgets.clock.cookie.dateStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.clock.cookie.dateStyle = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: "",
|
|
icon: "block",
|
|
value: "hide"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Bubble"),
|
|
icon: "bubble_chart",
|
|
value: "bubble"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Border"),
|
|
icon: "rotate_right",
|
|
value: "border"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Rect"),
|
|
icon: "rectangle",
|
|
value: "rect"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Quote")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable")
|
|
checked: Config.options.background.widgets.clock.quote.enable
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.clock.quote.enable = checked;
|
|
}
|
|
}
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Quote")
|
|
text: Config.options.background.widgets.clock.quote.text
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.background.widgets.clock.quote.text = text;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "weather_mix"
|
|
title: Translation.tr("Widget: Weather")
|
|
|
|
ConfigRow {
|
|
Layout.fillWidth: true
|
|
|
|
ConfigSwitch {
|
|
Layout.fillWidth: false
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable")
|
|
checked: Config.options.background.widgets.weather.enable
|
|
onCheckedChanged: {
|
|
Config.options.background.widgets.weather.enable = checked;
|
|
}
|
|
}
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
ConfigSelectionArray {
|
|
Layout.fillWidth: false
|
|
currentValue: Config.options.background.widgets.weather.placementStrategy
|
|
onSelected: newValue => {
|
|
Config.options.background.widgets.weather.placementStrategy = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: Translation.tr("Draggable"),
|
|
icon: "drag_pan",
|
|
value: "free"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Least busy"),
|
|
icon: "category",
|
|
value: "leastBusy"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Most busy"),
|
|
icon: "shapes",
|
|
value: "mostBusy"
|
|
},
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|