Watch
1
0
Fork
You've already forked souveraine
0

publish: the public projection begins here

This is a projection, not a development branch. The tree above was constructed
from the internal source named below under a manifest that decides which paths
may leave, then scanned as a whole tree rather than as a series of patches, and
only then published.

Public history starts here because the history before it was not admissible,
and neither was the tree. What used to stand in this repository included a
rescue copy of another machine, a directory of phone handoffs, deployment
wired to one house, and a submodule pointing at a forge no stranger can reach.
None of that was ever the product. It stays in the private forge, which is
allowed to hold the whole working organism, and this is what was deliberately
sent out instead.

Three mechanisms produced this tree, in decreasing order of trust. A top-level
path the manifest does not name never arrives at all, which is the one that
catches directories nobody has thought of yet. Named internal files inside
admitted roots are dropped. A short, reviewed table replaces deployment
defaults that a public build must not carry -- an endpoint aimed at one LAN, a
VPN profile belonging to one phone, packaging built from one checkout path.

Everything after this commit is an ordinary publication with the same three
trailers, so a force push stops being routine and starts meaning that
something deliberate happened. The trailers bind the projection to its source
without pretending the public SHA is the private one: same lineage, different
tree, and the record says so.

Source-Sha: 8f27b1e76a8fef560a336aba18e6990713ff1047
Policy-Sha: 6b261d2f3e6e1fb19874846ba4bb1dfe15565d25b8618c1c1afba0419c101d27
Tree-Digest: 18ec3563c5e5ef9a414993a9f6734b251ff9ed3cd56eebdd6cac01e45c6e3067
This commit is contained in:
Fimeg 2026-09-04 15:55:48 -04:00
commit 8f42fc953d
1476 changed files with 238455 additions and 0 deletions

View file

@ -0,0 +1,932 @@
import QtQuick
import QtQuick.Layouts
import qs.services
import qs.modules.common
import qs.modules.common.widgets
ContentPage {
forceWidth: true
ContentSection {
icon: "keyboard"
title: Translation.tr("Cheat sheet")
ContentSubsection {
title: Translation.tr("Super key symbol")
tooltip: Translation.tr("You can also manually edit cheatsheet.superKey")
ConfigSelectionArray {
currentValue: Config.options.cheatsheet.superKey
onSelected: newValue => {
Config.options.cheatsheet.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.cheatsheet.useMacSymbol
onCheckedChanged: {
Config.options.cheatsheet.useMacSymbol = checked;
}
StyledToolTip {
text: Translation.tr("e.g. 󰘴 for Ctrl, 󰘵 for Alt, 󰘶 for Shift, etc")
}
}
ConfigSwitch {
buttonIcon: "󱊶"
text: Translation.tr("Use symbols for function keys")
checked: Config.options.cheatsheet.useFnSymbol
onCheckedChanged: {
Config.options.cheatsheet.useFnSymbol = checked;
}
StyledToolTip {
text: Translation.tr("e.g. 󱊫 for F1, 󱊶 for F12")
}
}
ConfigSwitch {
buttonIcon: "󰍽"
text: Translation.tr("Use symbols for mouse")
checked: Config.options.cheatsheet.useMouseSymbol
onCheckedChanged: {
Config.options.cheatsheet.useMouseSymbol = checked;
}
StyledToolTip {
text: Translation.tr("Replace 󱕐 for \"Scroll ↓\", 󱕑 \"Scroll ↑\", L󰍽 \"LMB\", R󰍽 \"RMB\", 󱕒 \"Scroll ↑/↓\" and ⇞/⇟ for \"Page_↑/↓\"")
}
}
ConfigSwitch {
buttonIcon: "highlight_keyboard_focus"
text: Translation.tr("Split buttons")
checked: Config.options.cheatsheet.splitButtons
onCheckedChanged: {
Config.options.cheatsheet.splitButtons = checked;
}
StyledToolTip {
text: Translation.tr("Display modifiers and keys in multiple keycap (e.g., \"Ctrl + A\" instead of \"Ctrl A\" or \"󰘴 + A\" instead of \"󰘴 A\")")
}
}
ConfigSpinBox {
text: Translation.tr("Keybind font size")
value: Config.options.cheatsheet.fontSize.key
from: 8
to: 30
stepSize: 1
onValueChanged: {
Config.options.cheatsheet.fontSize.key = value;
}
}
ConfigSpinBox {
text: Translation.tr("Description font size")
value: Config.options.cheatsheet.fontSize.comment
from: 8
to: 30
stepSize: 1
onValueChanged: {
Config.options.cheatsheet.fontSize.comment = value;
}
}
}
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;
}
}
ConfigSwitch {
buttonIcon: "monitor"
text: Translation.tr("Force specific monitor")
checked: Config.options.notifications.forceMonitor.enable
onCheckedChanged: {
Config.options.notifications.forceMonitor.enable = checked;
}
StyledToolTip {
text: Translation.tr("If you have multiple monitors and want notifications to only show on one of them, enable this and enter the monitor name below (e.g., eDP-1)")
}
}
ConfigRow {
enabled: Config.options.notifications.forceMonitor.enable
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Monitor name to show notifications on (e.g., eDP-1)")
text: Config.options.notifications.forceMonitor.name
wrapMode: TextEdit.Wrap
onTextChanged: {
Config.options.notifications.forceMonitor.name = text;
}
}
}
}
ContentSection {
icon: "select_window"
title: Translation.tr("Overlay: General")
ConfigSwitch {
buttonIcon: "high_density"
text: Translation.tr("Enable opening zoom animation")
checked: Config.options.overlay.openingZoomAnimation
onCheckedChanged: {
Config.options.overlay.openingZoomAnimation = checked;
}
}
ConfigSwitch {
buttonIcon: "texture"
text: Translation.tr("Darken screen")
checked: Config.options.overlay.darkenScreen
onCheckedChanged: {
Config.options.overlay.darkenScreen = checked;
}
}
}
ContentSection {
icon: "point_scan"
title: Translation.tr("Overlay: Crosshair")
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 open the overlay and pin the crosshair")
}
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: "point_scan"
title: Translation.tr("Overlay: Floating Image")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Image source")
text: Config.options.overlay.floatingImage.imageSource
wrapMode: TextEdit.Wrap
onTextChanged: {
Config.options.overlay.floatingImage.imageSource = text;
}
}
}
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;
}
}
}
ConfigRow {
uniform: true
ConfigSelectionArray {
currentValue: Config.options.overview.orderRightLeft
onSelected: newValue => {
Config.options.overview.orderRightLeft = newValue
}
options: [
{
displayName: Translation.tr("Left to right"),
icon: "arrow_forward",
value: 0
},
{
displayName: Translation.tr("Right to left"),
icon: "arrow_back",
value: 1
}
]
}
ConfigSelectionArray {
currentValue: Config.options.overview.orderBottomUp
onSelected: newValue => {
Config.options.overview.orderBottomUp = newValue
}
options: [
{
displayName: Translation.tr("Top-down"),
icon: "arrow_downward",
value: 0
},
{
displayName: Translation.tr("Bottom-up"),
icon: "arrow_upward",
value: 1
}
]
}
}
}
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: "text_format"
title: Translation.tr("Fonts")
ContentSubsection {
title: Translation.tr("Main font")
tooltip: Translation.tr("Used for general UI text")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Font family name (e.g., Google Sans Flex)")
text: Config.options.appearance.fonts.main
wrapMode: TextEdit.NoWrap
onTextChanged: {
Config.options.appearance.fonts.main = text;
}
}
}
ContentSubsection {
title: Translation.tr("Numbers font")
tooltip: Translation.tr("Used for displaying numbers")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Font family name")
text: Config.options.appearance.fonts.numbers
wrapMode: TextEdit.NoWrap
onTextChanged: {
Config.options.appearance.fonts.numbers = text;
}
}
}
ContentSubsection {
title: Translation.tr("Title font")
tooltip: Translation.tr("Used for headings and titles")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Font family name")
text: Config.options.appearance.fonts.title
wrapMode: TextEdit.NoWrap
onTextChanged: {
Config.options.appearance.fonts.title = text;
}
}
}
ContentSubsection {
title: Translation.tr("Monospace font")
tooltip: Translation.tr("Used for code and terminal")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Font family name (e.g., JetBrains Mono NF)")
text: Config.options.appearance.fonts.monospace
wrapMode: TextEdit.NoWrap
onTextChanged: {
Config.options.appearance.fonts.monospace = text;
}
}
}
ContentSubsection {
title: Translation.tr("Nerd font icons")
tooltip: Translation.tr("Font used for Nerd Font icons")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Font family name (e.g., JetBrains Mono NF)")
text: Config.options.appearance.fonts.iconNerd
wrapMode: TextEdit.NoWrap
onTextChanged: {
Config.options.appearance.fonts.iconNerd = text;
}
}
}
ContentSubsection {
title: Translation.tr("Reading font")
tooltip: Translation.tr("Used for reading large blocks of text")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Font family name (e.g., Readex Pro)")
text: Config.options.appearance.fonts.reading
wrapMode: TextEdit.NoWrap
onTextChanged: {
Config.options.appearance.fonts.reading = text;
}
}
}
ContentSubsection {
title: Translation.tr("Expressive font")
tooltip: Translation.tr("Used for decorative/expressive text")
MaterialTextArea {
Layout.fillWidth: true
placeholderText: Translation.tr("Font family name (e.g., Space Grotesk)")
text: Config.options.appearance.fonts.expressive
wrapMode: TextEdit.NoWrap
onTextChanged: {
Config.options.appearance.fonts.expressive = text;
}
}
}
}
}