mirror of
https://github.com/end-4/dots-hyprland.git
synced 2026-06-05 23:09:26 -05:00
1117 lines
41 KiB
QML
1117 lines
41 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import qs.services
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
|
|
ContentPage {
|
|
forceWidth: true
|
|
|
|
ContentSection {
|
|
icon: "wallpaper"
|
|
title: Translation.tr("Background")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "nest_clock_farsight_analog"
|
|
text: Translation.tr("Show clock")
|
|
checked: Config.options.background.clock.show
|
|
onCheckedChanged: {
|
|
Config.options.background.clock.show = checked;
|
|
}
|
|
}
|
|
|
|
|
|
ConfigSpinBox {
|
|
icon: "loupe"
|
|
text: Translation.tr("Scale (%)")
|
|
value: Config.options.background.clock.scale * 100
|
|
from: 1
|
|
to: 200
|
|
stepSize: 2
|
|
onValueChanged: {
|
|
Config.options.background.clock.scale = value / 100;
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Clock style")
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.clock.style
|
|
onSelected: newValue => {
|
|
Config.options.background.clock.style = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: Translation.tr("Simple digital"),
|
|
icon: "timer_10",
|
|
value: "digital"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Material cookie"),
|
|
icon: "cookie",
|
|
value: "cookie"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: Config.options.background.clock.style === "digital"
|
|
title: Translation.tr("Digital clock settings")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "animation"
|
|
text: Translation.tr("Animate time change")
|
|
checked: Config.options.background.clock.digital.animateChange
|
|
onCheckedChanged: {
|
|
Config.options.background.clock.digital.animateChange = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: Config.options.background.clock.style === "cookie"
|
|
title: Translation.tr("Cookie clock settings")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "wand_stars"
|
|
text: Translation.tr("Auto styling with Gemini")
|
|
checked: Config.options.background.clock.cookie.aiStyling
|
|
onCheckedChanged: {
|
|
Config.options.background.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.clock.cookie.useSineCookie
|
|
onCheckedChanged: {
|
|
Config.options.background.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.clock.cookie.sides
|
|
from: 0
|
|
to: 40
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.background.clock.cookie.sides = value;
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "autoplay"
|
|
text: Translation.tr("Constantly rotate")
|
|
checked: Config.options.background.clock.cookie.constantlyRotate
|
|
onCheckedChanged: {
|
|
Config.options.background.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.clock.style === "cookie" && Config.options.background.clock.cookie.dialNumberStyle === "dots" || Config.options.background.clock.cookie.dialNumberStyle === "full"
|
|
buttonIcon: "brightness_7"
|
|
text: Translation.tr("Hour marks")
|
|
checked: Config.options.background.clock.cookie.hourMarks
|
|
onEnabledChanged: {
|
|
checked = Config.options.background.clock.cookie.hourMarks;
|
|
}
|
|
onCheckedChanged: {
|
|
Config.options.background.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.clock.style === "cookie" && Config.options.background.clock.cookie.dialNumberStyle !== "numbers"
|
|
buttonIcon: "timer_10"
|
|
text: Translation.tr("Digits in the middle")
|
|
checked: Config.options.background.clock.cookie.timeIndicators
|
|
onEnabledChanged: {
|
|
checked = Config.options.background.clock.cookie.timeIndicators;
|
|
}
|
|
onCheckedChanged: {
|
|
Config.options.background.clock.cookie.timeIndicators = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: "Can't be turned on when using 'Numbers' dial style for aesthetic reasons"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
visible: Config.options.background.clock.style === "cookie"
|
|
title: Translation.tr("Dial style")
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.clock.cookie.dialNumberStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.clock.cookie.dialNumberStyle = newValue;
|
|
if (newValue !== "dots" && newValue !== "full") {
|
|
Config.options.background.clock.cookie.hourMarks = false;
|
|
}
|
|
if (newValue === "numbers") {
|
|
Config.options.background.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: Config.options.background.clock.style === "cookie"
|
|
title: Translation.tr("Hour hand")
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.clock.cookie.hourHandStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.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: Config.options.background.clock.style === "cookie"
|
|
title: Translation.tr("Minute hand")
|
|
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.clock.cookie.minuteHandStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.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: Config.options.background.clock.style === "cookie"
|
|
title: Translation.tr("Second hand")
|
|
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.clock.cookie.secondHandStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.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: Config.options.background.clock.style === "cookie"
|
|
title: Translation.tr("Date style")
|
|
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.background.clock.cookie.dateStyle
|
|
onSelected: newValue => {
|
|
Config.options.background.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 settings")
|
|
ConfigSwitch {
|
|
buttonIcon: "format_quote"
|
|
text: Translation.tr("Show quote")
|
|
checked: Config.options.background.showQuote
|
|
onCheckedChanged: {
|
|
Config.options.background.showQuote = checked;
|
|
}
|
|
}
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Quote")
|
|
text: Config.options.background.quote
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.background.quote = text;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Wallpaper 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: 100
|
|
to: 150
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.background.parallax.workspaceZoom = value / 100;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "point_scan"
|
|
title: Translation.tr("Crosshair overlay")
|
|
|
|
MaterialTextArea {
|
|
Layout.fillWidth: true
|
|
placeholderText: Translation.tr("Crosshair code (in Valorant's format)")
|
|
text: Config.options.crosshair.code
|
|
wrapMode: TextEdit.Wrap
|
|
onTextChanged: {
|
|
Config.options.crosshair.code = text;
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
StyledText {
|
|
Layout.leftMargin: 10
|
|
color: Appearance.colors.colSubtext
|
|
font.pixelSize: Appearance.font.pixelSize.smallie
|
|
text: Translation.tr("Press Super+G to toggle appearance")
|
|
}
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
RippleButtonWithIcon {
|
|
id: editorButton
|
|
buttonRadius: Appearance.rounding.full
|
|
materialIcon: "open_in_new"
|
|
mainText: Translation.tr("Open editor")
|
|
onClicked: {
|
|
Qt.openUrlExternally(`https://www.vcrdb.net/builder?c=${Config.options.crosshair.code}`);
|
|
}
|
|
StyledToolTip {
|
|
text: "www.vcrdb.net"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "call_to_action"
|
|
title: Translation.tr("Dock")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable")
|
|
checked: Config.options.dock.enable
|
|
onCheckedChanged: {
|
|
Config.options.dock.enable = checked;
|
|
}
|
|
}
|
|
|
|
ConfigRow {
|
|
uniform: true
|
|
ConfigSwitch {
|
|
buttonIcon: "highlight_mouse_cursor"
|
|
text: Translation.tr("Hover to reveal")
|
|
checked: Config.options.dock.hoverToReveal
|
|
onCheckedChanged: {
|
|
Config.options.dock.hoverToReveal = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "keep"
|
|
text: Translation.tr("Pinned on startup")
|
|
checked: Config.options.dock.pinnedOnStartup
|
|
onCheckedChanged: {
|
|
Config.options.dock.pinnedOnStartup = checked;
|
|
}
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "colors"
|
|
text: Translation.tr("Tint app icons")
|
|
checked: Config.options.dock.monochromeIcons
|
|
onCheckedChanged: {
|
|
Config.options.dock.monochromeIcons = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "lock"
|
|
title: Translation.tr("Lock screen")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "water_drop"
|
|
text: Translation.tr('Use Hyprlock (instead of Quickshell)')
|
|
checked: Config.options.lock.useHyprlock
|
|
onCheckedChanged: {
|
|
Config.options.lock.useHyprlock = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("If you want to somehow use fingerprint unlock...")
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "account_circle"
|
|
text: Translation.tr('Launch on startup')
|
|
checked: Config.options.lock.launchOnStartup
|
|
onCheckedChanged: {
|
|
Config.options.lock.launchOnStartup = checked;
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Security")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "settings_power"
|
|
text: Translation.tr('Require password to power off/restart')
|
|
checked: Config.options.lock.security.requirePasswordToPower
|
|
onCheckedChanged: {
|
|
Config.options.lock.security.requirePasswordToPower = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Remember that on most devices one can always hold the power button to force shutdown\nThis only makes it a tiny bit harder for accidents to happen")
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "key_vertical"
|
|
text: Translation.tr('Also unlock keyring')
|
|
checked: Config.options.lock.security.unlockKeyring
|
|
onCheckedChanged: {
|
|
Config.options.lock.security.unlockKeyring = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("This is usually safe and needed for your browser and AI sidebar anyway\nMostly useful for those who use lock on startup instead of a display manager that does it (GDM, SDDM, etc.)")
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Style: general")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "center_focus_weak"
|
|
text: Translation.tr('Center clock')
|
|
checked: Config.options.lock.centerClock
|
|
onCheckedChanged: {
|
|
Config.options.lock.centerClock = checked;
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "info"
|
|
text: Translation.tr('Show "Locked" text')
|
|
checked: Config.options.lock.showLockedText
|
|
onCheckedChanged: {
|
|
Config.options.lock.showLockedText = checked;
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "shapes"
|
|
text: Translation.tr('Use varying shapes for password characters')
|
|
checked: Config.options.lock.materialShapeChars
|
|
onCheckedChanged: {
|
|
Config.options.lock.materialShapeChars = checked;
|
|
}
|
|
}
|
|
}
|
|
ContentSubsection {
|
|
title: Translation.tr("Style: Blurred")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "blur_on"
|
|
text: Translation.tr('Enable blur')
|
|
checked: Config.options.lock.blur.enable
|
|
onCheckedChanged: {
|
|
Config.options.lock.blur.enable = checked;
|
|
}
|
|
}
|
|
|
|
ConfigSpinBox {
|
|
icon: "loupe"
|
|
text: Translation.tr("Extra wallpaper zoom (%)")
|
|
value: Config.options.lock.blur.extraZoom * 100
|
|
from: 1
|
|
to: 150
|
|
stepSize: 2
|
|
onValueChanged: {
|
|
Config.options.lock.blur.extraZoom = value / 100;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "notifications"
|
|
title: Translation.tr("Notifications")
|
|
|
|
ConfigSpinBox {
|
|
icon: "av_timer"
|
|
text: Translation.tr("Timeout duration (if not defined by notification) (ms)")
|
|
value: Config.options.notifications.timeout
|
|
from: 1000
|
|
to: 60000
|
|
stepSize: 1000
|
|
onValueChanged: {
|
|
Config.options.notifications.timeout = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "screenshot_frame_2"
|
|
title: Translation.tr("Region selector (screen snipping/Google Lens)")
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Hint target regions")
|
|
ConfigRow {
|
|
ConfigSwitch {
|
|
buttonIcon: "select_window"
|
|
text: Translation.tr('Windows')
|
|
checked: Config.options.regionSelector.targetRegions.windows
|
|
onCheckedChanged: {
|
|
Config.options.regionSelector.targetRegions.windows = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "right_panel_open"
|
|
text: Translation.tr('Layers')
|
|
checked: Config.options.regionSelector.targetRegions.layers
|
|
onCheckedChanged: {
|
|
Config.options.regionSelector.targetRegions.layers = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "nearby"
|
|
text: Translation.tr('Content')
|
|
checked: Config.options.regionSelector.targetRegions.content
|
|
onCheckedChanged: {
|
|
Config.options.regionSelector.targetRegions.content = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Could be images or parts of the screen that have some containment.\nMight not always be accurate.\nThis is done with an image processing algorithm run locally and no AI is used.")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Google Lens")
|
|
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.search.imageSearch.useCircleSelection ? "circle" : "rectangles"
|
|
onSelected: newValue => {
|
|
Config.options.search.imageSearch.useCircleSelection = (newValue === "circle");
|
|
}
|
|
options: [
|
|
{ icon: "activity_zone", value: "rectangles", displayName: Translation.tr("Rectangular selection") },
|
|
{ icon: "gesture", value: "circle", displayName: Translation.tr("Circle to Search") }
|
|
]
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Rectangular selection")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "point_scan"
|
|
text: Translation.tr("Show aim lines")
|
|
checked: Config.options.regionSelector.rect.showAimLines
|
|
onCheckedChanged: {
|
|
Config.options.regionSelector.rect.showAimLines = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Circle selection")
|
|
|
|
ConfigSpinBox {
|
|
icon: "eraser_size_3"
|
|
text: Translation.tr("Stroke width")
|
|
value: Config.options.regionSelector.circle.strokeWidth
|
|
from: 1
|
|
to: 20
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.regionSelector.circle.strokeWidth = value;
|
|
}
|
|
}
|
|
|
|
ConfigSpinBox {
|
|
icon: "screenshot_frame_2"
|
|
text: Translation.tr("Padding")
|
|
value: Config.options.regionSelector.circle.padding
|
|
from: 0
|
|
to: 100
|
|
stepSize: 5
|
|
onValueChanged: {
|
|
Config.options.regionSelector.circle.padding = value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "side_navigation"
|
|
title: Translation.tr("Sidebars")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "memory"
|
|
text: Translation.tr('Keep right sidebar loaded')
|
|
checked: Config.options.sidebar.keepRightSidebarLoaded
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.keepRightSidebarLoaded = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("When enabled keeps the content of the right sidebar loaded to reduce the delay when opening,\nat the cost of around 15MB of consistent RAM usage. Delay significance depends on your system's performance.\nUsing a custom kernel like linux-cachyos might help")
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "translate"
|
|
text: Translation.tr('Enable translator')
|
|
checked: Config.options.sidebar.translator.enable
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.translator.enable = checked;
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Quick toggles")
|
|
|
|
ConfigSelectionArray {
|
|
Layout.fillWidth: false
|
|
currentValue: Config.options.sidebar.quickToggles.style
|
|
onSelected: newValue => {
|
|
Config.options.sidebar.quickToggles.style = newValue;
|
|
}
|
|
options: [
|
|
{
|
|
displayName: Translation.tr("Classic"),
|
|
icon: "password_2",
|
|
value: "classic"
|
|
},
|
|
{
|
|
displayName: Translation.tr("Android"),
|
|
icon: "action_key",
|
|
value: "android"
|
|
}
|
|
]
|
|
}
|
|
|
|
ConfigSpinBox {
|
|
enabled: Config.options.sidebar.quickToggles.style === "android"
|
|
icon: "splitscreen_left"
|
|
text: Translation.tr("Columns")
|
|
value: Config.options.sidebar.quickToggles.android.columns
|
|
from: 1
|
|
to: 8
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.sidebar.quickToggles.android.columns = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Sliders")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable")
|
|
checked: Config.options.sidebar.quickSliders.enable
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.quickSliders.enable = checked;
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "brightness_6"
|
|
text: Translation.tr("Brightness")
|
|
enabled: Config.options.sidebar.quickSliders.enable
|
|
checked: Config.options.sidebar.quickSliders.showBrightness
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.quickSliders.showBrightness = checked;
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "volume_up"
|
|
text: Translation.tr("Volume")
|
|
enabled: Config.options.sidebar.quickSliders.enable
|
|
checked: Config.options.sidebar.quickSliders.showVolume
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.quickSliders.showVolume = checked;
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "mic"
|
|
text: Translation.tr("Microphone")
|
|
enabled: Config.options.sidebar.quickSliders.enable
|
|
checked: Config.options.sidebar.quickSliders.showMic
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.quickSliders.showMic = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Corner open")
|
|
tooltip: Translation.tr("Allows you to open sidebars by clicking or hovering screen corners regardless of bar position")
|
|
ConfigRow {
|
|
uniform: true
|
|
ConfigSwitch {
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable")
|
|
checked: Config.options.sidebar.cornerOpen.enable
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.cornerOpen.enable = checked;
|
|
}
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "highlight_mouse_cursor"
|
|
text: Translation.tr("Hover to trigger")
|
|
checked: Config.options.sidebar.cornerOpen.clickless
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.cornerOpen.clickless = checked;
|
|
}
|
|
|
|
StyledToolTip {
|
|
text: Translation.tr("When this is off you'll have to click")
|
|
}
|
|
}
|
|
Row {
|
|
ConfigSwitch {
|
|
enabled: !Config.options.sidebar.cornerOpen.clickless
|
|
text: Translation.tr("Force hover open at absolute corner")
|
|
checked: Config.options.sidebar.cornerOpen.clicklessCornerEnd
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.cornerOpen.clicklessCornerEnd = checked;
|
|
}
|
|
|
|
StyledToolTip {
|
|
text: Translation.tr("When the previous option is off and this is on,\nyou can still hover the corner's end to open sidebar,\nand the remaining area can be used for volume/brightness scroll")
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
icon: "arrow_cool_down"
|
|
text: Translation.tr("with vertical offset")
|
|
value: Config.options.sidebar.cornerOpen.clicklessCornerVerticalOffset
|
|
from: 0
|
|
to: 20
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.sidebar.cornerOpen.clicklessCornerVerticalOffset = value;
|
|
}
|
|
MouseArea {
|
|
id: mouseArea
|
|
anchors.fill: parent
|
|
hoverEnabled: true
|
|
acceptedButtons: Qt.NoButton
|
|
StyledToolTip {
|
|
extraVisibleCondition: mouseArea.containsMouse
|
|
text: Translation.tr("Why this is cool:\nFor non-0 values, it won't trigger when you reach the\nscreen corner along the horizontal edge, but it will when\nyou do along the vertical edge")
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ConfigRow {
|
|
uniform: true
|
|
ConfigSwitch {
|
|
buttonIcon: "vertical_align_bottom"
|
|
text: Translation.tr("Place at bottom")
|
|
checked: Config.options.sidebar.cornerOpen.bottom
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.cornerOpen.bottom = checked;
|
|
}
|
|
|
|
StyledToolTip {
|
|
text: Translation.tr("Place the corners to trigger at the bottom")
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "unfold_more_double"
|
|
text: Translation.tr("Value scroll")
|
|
checked: Config.options.sidebar.cornerOpen.valueScroll
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.cornerOpen.valueScroll = checked;
|
|
}
|
|
|
|
StyledToolTip {
|
|
text: Translation.tr("Brightness and volume")
|
|
}
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "visibility"
|
|
text: Translation.tr("Visualize region")
|
|
checked: Config.options.sidebar.cornerOpen.visualize
|
|
onCheckedChanged: {
|
|
Config.options.sidebar.cornerOpen.visualize = checked;
|
|
}
|
|
}
|
|
ConfigRow {
|
|
ConfigSpinBox {
|
|
icon: "arrow_range"
|
|
text: Translation.tr("Region width")
|
|
value: Config.options.sidebar.cornerOpen.cornerRegionWidth
|
|
from: 1
|
|
to: 300
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.sidebar.cornerOpen.cornerRegionWidth = value;
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
icon: "height"
|
|
text: Translation.tr("Region height")
|
|
value: Config.options.sidebar.cornerOpen.cornerRegionHeight
|
|
from: 1
|
|
to: 300
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.sidebar.cornerOpen.cornerRegionHeight = value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "voting_chip"
|
|
title: Translation.tr("On-screen display")
|
|
|
|
ConfigSpinBox {
|
|
icon: "av_timer"
|
|
text: Translation.tr("Timeout (ms)")
|
|
value: Config.options.osd.timeout
|
|
from: 100
|
|
to: 3000
|
|
stepSize: 100
|
|
onValueChanged: {
|
|
Config.options.osd.timeout = value;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "overview_key"
|
|
title: Translation.tr("Overview")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "check"
|
|
text: Translation.tr("Enable")
|
|
checked: Config.options.overview.enable
|
|
onCheckedChanged: {
|
|
Config.options.overview.enable = checked;
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: "center_focus_strong"
|
|
text: Translation.tr("Center icons")
|
|
checked: Config.options.overview.centerIcons
|
|
onCheckedChanged: {
|
|
Config.options.overview.centerIcons = checked;
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
icon: "loupe"
|
|
text: Translation.tr("Scale (%)")
|
|
value: Config.options.overview.scale * 100
|
|
from: 1
|
|
to: 100
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.overview.scale = value / 100;
|
|
}
|
|
}
|
|
ConfigRow {
|
|
uniform: true
|
|
ConfigSpinBox {
|
|
icon: "splitscreen_bottom"
|
|
text: Translation.tr("Rows")
|
|
value: Config.options.overview.rows
|
|
from: 1
|
|
to: 20
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.overview.rows = value;
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
icon: "splitscreen_right"
|
|
text: Translation.tr("Columns")
|
|
value: Config.options.overview.columns
|
|
from: 1
|
|
to: 20
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.overview.columns = value;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "wallpaper_slideshow"
|
|
title: Translation.tr("Wallpaper selector")
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: "ad"
|
|
text: Translation.tr('Use system file picker')
|
|
checked: Config.options.wallpaperSelector.useSystemFileDialog
|
|
onCheckedChanged: {
|
|
Config.options.wallpaperSelector.useSystemFileDialog = checked;
|
|
}
|
|
}
|
|
}
|
|
|
|
ContentSection {
|
|
icon: "keyboard"
|
|
title: Translation.tr("Cheatsheet")
|
|
|
|
ContentSubsection {
|
|
title: Translation.tr("Super Key Symbol")
|
|
tooltip: Translation.tr("Choose a symbol from this list or edit config.json and add your own nerd symbol in appearance.keybinds.superKey.")
|
|
ConfigSelectionArray {
|
|
currentValue: Config.options.appearance.keybinds.superKey
|
|
onSelected: newValue => {
|
|
Config.options.appearance.keybinds.superKey = newValue;
|
|
}
|
|
// Use a nerdfont to see the icons
|
|
options: ([
|
|
"", "", "", "", "", "", "", "", "",
|
|
"", "", "", "", "", "⌘", "", "", ""
|
|
]).map(icon => { return {
|
|
displayName: icon,
|
|
value: icon
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: ""
|
|
text: Translation.tr("Use macOS-like symbols for mods keys")
|
|
checked: Config.options.appearance.keybinds.useMacSymbol
|
|
onCheckedChanged: {
|
|
Config.options.appearance.keybinds.useMacSymbol = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("macOS-style symbols, e.g. for Ctrl, for Alt, for Shift, etc")
|
|
}
|
|
}
|
|
|
|
ConfigSwitch {
|
|
buttonIcon: ""
|
|
text: Translation.tr("Use symbols for function keys")
|
|
checked: Config.options.appearance.keybinds.useFnSymbol
|
|
onCheckedChanged: {
|
|
Config.options.appearance.keybinds.useFnSymbol = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Show functions keys as symbols, e.g. for F1, for F12")
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: ""
|
|
text: Translation.tr("Use symbols for mouse")
|
|
checked: Config.options.appearance.keybinds.useMouseSymbol
|
|
onCheckedChanged: {
|
|
Config.options.appearance.keybinds.useMouseSymbol = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Replace for \"Scroll ↓\", \"Scroll ↑\", L \"LMB\", R \"RMB\", \"Scroll ↑/↓\" and ⇞/⇟ for \"Page_↑/↓\"")
|
|
}
|
|
}
|
|
ConfigSwitch {
|
|
buttonIcon: ""
|
|
text: Translation.tr("Use macOS shortcut layout")
|
|
checked: Config.options.appearance.keybinds.useMacLikeShortcut
|
|
onCheckedChanged: {
|
|
Config.options.appearance.keybinds.useMacLikeShortcut = checked;
|
|
}
|
|
StyledToolTip {
|
|
text: Translation.tr("Display modifiers and keys in a single keycap (e.g., \"Ctrl A\" instead of \"Ctrl + A\" or \" A\" instead of \" + A\")")
|
|
}
|
|
|
|
}
|
|
|
|
ConfigSpinBox {
|
|
text: Translation.tr("Keybind font size")
|
|
value: Config.options.appearance.keybinds.fontSize.key
|
|
from: Appearance.font.pixelSize.smallest
|
|
to: Appearance.font.pixelSize.large
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.appearance.keybinds.fontSize.key = value;
|
|
}
|
|
}
|
|
ConfigSpinBox {
|
|
text: Translation.tr("Description font size")
|
|
value: Config.options.appearance.keybinds.fontSize.comment
|
|
from: Appearance.font.pixelSize.smallest
|
|
to: Appearance.font.pixelSize.large
|
|
stepSize: 1
|
|
onValueChanged: {
|
|
Config.options.appearance.keybinds.fontSize.comment = value;
|
|
}
|
|
}
|
|
}
|
|
}
|