Switched to Material3 colors principle
- works with matugen only for now - need to restore rosepine
This commit is contained in:
parent
7fced5df95
commit
73c7ba8cdc
55 changed files with 519 additions and 583 deletions
|
|
@ -1,28 +1,7 @@
|
||||||
# matugen configuration for Noctalia
|
# This file configures how matugen generates colors from wallpapers for Noctalia
|
||||||
# This file configures how matugen generates colors from wallpapers
|
|
||||||
|
|
||||||
[config]
|
[config]
|
||||||
# Color scheme type for generation
|
|
||||||
scheme = "dark"
|
|
||||||
|
|
||||||
# Color space for color extraction
|
|
||||||
color_space = "oklch"
|
|
||||||
|
|
||||||
# Algorithm for color extraction
|
|
||||||
algorithm = "kmeans"
|
|
||||||
|
|
||||||
# Number of colors to extract
|
|
||||||
color_count = 16
|
|
||||||
|
|
||||||
# Use source image colors
|
|
||||||
use_source_colors = true
|
|
||||||
|
|
||||||
# Generate dark theme variant
|
|
||||||
generate_dark = true
|
|
||||||
|
|
||||||
# Generate light theme variant
|
|
||||||
generate_light = false
|
|
||||||
|
|
||||||
[templates.noctalia]
|
[templates.noctalia]
|
||||||
input_path = "templates/noctalia.json"
|
input_path = "templates/noctalia.json"
|
||||||
output_path = "~/.config/noctalia/theme.json"
|
output_path = "~/.config/noctalia/colors.json"
|
||||||
|
|
@ -1,26 +1,31 @@
|
||||||
{
|
{
|
||||||
"backgroundPrimary": "{{colors.surface_dim.default.hex}}",
|
"colorPrimary": "{{colors.primary.default.hex}}",
|
||||||
"backgroundSecondary": "{{colors.surface.default.hex}}",
|
"colorOnPrimary": "{{colors.on_primary.default.hex}}",
|
||||||
"backgroundTertiary": "{{colors.surface_bright.default.hex}}",
|
"colorPrimaryContainer": "{{colors.primary_container.default.hex}}",
|
||||||
|
"colorOnPrimaryContainer": "{{colors.on_primary_container.default.hex}}",
|
||||||
|
|
||||||
|
"colorSecondary": "{{colors.secondary.default.hex}}",
|
||||||
|
"colorOnSecondary": "{{colors.on_secondary.default.hex}}",
|
||||||
|
"colorSecondaryContainer": "{{colors.secondary_container.default.hex}}",
|
||||||
|
"colorOnSecondaryContainer": "{{colors.on_secondary_container.default.hex}}",
|
||||||
|
|
||||||
|
"colorTertiary": "{{colors.tertiary.default.hex}}",
|
||||||
|
"colorOnTertiary": "{{colors.on_tertiary.default.hex}}",
|
||||||
|
"colorTertiaryContainer": "{{colors.tertiary_container.default.hex}}",
|
||||||
|
"colorOnTertiaryContainer": "{{colors.on_tertiary_container.default.hex}}",
|
||||||
|
|
||||||
|
"colorError": "{{colors.error.default.hex}}",
|
||||||
|
"colorOnError": "{{colors.on_error.default.hex}}",
|
||||||
|
"colorErrorContainer": "{{colors.error_container.default.hex}}",
|
||||||
|
"colorOnErrorContainer": "{{colors.on_error_container.default.hex}}",
|
||||||
|
|
||||||
|
"colorSurface": "{{colors.surface.default.hex}}",
|
||||||
|
"colorOnSurface": "{{colors.on_surface.default.hex}}",
|
||||||
|
"colorSurfaceVariant": "{{colors.surface_variant.default.hex}}",
|
||||||
|
"colorOnSurfaceVariant": "{{colors.on_surface_variant.default.hex}}",
|
||||||
|
|
||||||
"surface": "{{colors.surface.default.hex}}",
|
"colorInversePrimary": "{{colors.inverse_primary.default.hex}}",
|
||||||
"surfaceVariant": "{{colors.surface_variant.default.hex}}",
|
"colorOutline": "{{colors.outline.default.hex}}",
|
||||||
|
"colorOutlineVariant": "{{colors.outline_variant.default.hex}}",
|
||||||
"textPrimary": "{{colors.on_surface.default.hex}}",
|
"colorShadow": "{{colors.shadow.default.hex}}"
|
||||||
"textSecondary": "{{colors.on_surface_variant.default.hex}}",
|
|
||||||
"textDisabled": "{{colors.on_surface_variant.default.hex}}",
|
|
||||||
|
|
||||||
"accentPrimary": "{{colors.primary.default.hex}}",
|
|
||||||
"accentSecondary": "{{colors.secondary.default.hex}}",
|
|
||||||
"accentTertiary": "{{colors.tertiary.default.hex}}",
|
|
||||||
|
|
||||||
"error": "{{colors.error.default.hex}}",
|
|
||||||
"warning": "{{colors.error_container.default.hex}}",
|
|
||||||
|
|
||||||
"hover": "{{colors.primary_container.default.hex}}",
|
|
||||||
"onAccent": "{{colors.on_primary.default.hex}}",
|
|
||||||
"outline": "{{colors.outline.default.hex}}",
|
|
||||||
|
|
||||||
"shadow": "{{colors.shadow.default.hex}}",
|
|
||||||
"overlay": "{{colors.scrim.default.hex}}"
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,62 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# matugen-theme.sh - Generate theme colors from wallpaper using matugen
|
|
||||||
# Usage: ./matugen-theme.sh <wallpaper_path>
|
|
||||||
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# Configuration
|
|
||||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
||||||
CONFIG_FILE="$PROJECT_DIR/Assets/Matugen/matugen.toml"
|
|
||||||
TEMPLATE_FILE="$PROJECT_DIR/Assets/Matugen/templates/noctalia.json"
|
|
||||||
OUTPUT_DIR="$HOME/.config/noctalia"
|
|
||||||
OUTPUT_FILE="$OUTPUT_DIR/theme.json"
|
|
||||||
|
|
||||||
# Check if wallpaper path is provided
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
echo "Error: No wallpaper path provided"
|
|
||||||
echo "Usage: $0 <wallpaper_path>"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
WALLPAPER_PATH="$1"
|
|
||||||
|
|
||||||
# Check if wallpaper exists
|
|
||||||
if [ ! -f "$WALLPAPER_PATH" ]; then
|
|
||||||
echo "Error: Wallpaper file not found: $WALLPAPER_PATH"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Create output directory if it doesn't exist
|
|
||||||
mkdir -p "$OUTPUT_DIR"
|
|
||||||
|
|
||||||
# Generate theme using matugen
|
|
||||||
echo "Generating theme from wallpaper: $WALLPAPER_PATH"
|
|
||||||
|
|
||||||
# Use matugen to generate colors and transform to our format
|
|
||||||
matugen image "$WALLPAPER_PATH" \
|
|
||||||
--config "$CONFIG_FILE" \
|
|
||||||
--json hex | jq -c '
|
|
||||||
{
|
|
||||||
"backgroundPrimary": .colors.dark.surface_dim,
|
|
||||||
"backgroundSecondary": .colors.dark.surface,
|
|
||||||
"backgroundTertiary": .colors.dark.surface_bright,
|
|
||||||
"surface": .colors.dark.surface,
|
|
||||||
"surfaceVariant": .colors.dark.surface_variant,
|
|
||||||
"textPrimary": .colors.dark.on_surface,
|
|
||||||
"textSecondary": .colors.dark.on_surface_variant,
|
|
||||||
"textDisabled": .colors.dark.on_surface_variant,
|
|
||||||
"accentPrimary": .colors.dark.primary,
|
|
||||||
"accentSecondary": .colors.dark.secondary,
|
|
||||||
"accentTertiary": .colors.dark.tertiary,
|
|
||||||
"error": .colors.dark.error,
|
|
||||||
"warning": .colors.dark.error_container,
|
|
||||||
"hover": .colors.dark.primary_container,
|
|
||||||
"onAccent": .colors.dark.on_primary,
|
|
||||||
"outline": .colors.dark.outline,
|
|
||||||
"shadow": .colors.dark.shadow,
|
|
||||||
"overlay": .colors.dark.scrim
|
|
||||||
}' > "$OUTPUT_FILE.tmp" && mv "$OUTPUT_FILE.tmp" "$OUTPUT_FILE"
|
|
||||||
|
|
||||||
echo "Theme generated successfully: $OUTPUT_FILE"
|
|
||||||
|
|
@ -254,19 +254,19 @@ NLoader {
|
||||||
width: Math.min(700 * scaling, parent.width * 0.75)
|
width: Math.min(700 * scaling, parent.width * 0.75)
|
||||||
height: Math.min(550 * scaling, parent.height * 0.8)
|
height: Math.min(550 * scaling, parent.height * 0.8)
|
||||||
radius: 32 * scaling
|
radius: 32 * scaling
|
||||||
color: Colors.backgroundPrimary
|
color: Colors.colorSurface
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Style.borderThin * scaling
|
border.width: Style.borderThin * scaling
|
||||||
|
|
||||||
// Subtle gradient background
|
// Subtle gradient background
|
||||||
gradient: Gradient {
|
gradient: Gradient {
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 0.0
|
position: 0.0
|
||||||
color: Qt.lighter(Colors.backgroundPrimary, 1.02)
|
color: Qt.lighter(Colors.colorSurface, 1.02)
|
||||||
}
|
}
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 1.0
|
position: 1.0
|
||||||
color: Qt.darker(Colors.backgroundPrimary, 1.1)
|
color: Qt.darker(Colors.colorSurface, 1.1)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -281,8 +281,8 @@ NLoader {
|
||||||
Layout.preferredHeight: 40 * scaling
|
Layout.preferredHeight: 40 * scaling
|
||||||
Layout.bottomMargin: Style.marginMedium * scaling
|
Layout.bottomMargin: Style.marginMedium * scaling
|
||||||
radius: 20 * scaling
|
radius: 20 * scaling
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
border.color: searchInput.activeFocus ? Colors.accentPrimary : Colors.outline
|
border.color: searchInput.activeFocus ? Colors.colorPrimary : Colors.colorOutline
|
||||||
border.width: searchInput.activeFocus ? 2 : 1
|
border.width: searchInput.activeFocus ? 2 : 1
|
||||||
|
|
||||||
Row {
|
Row {
|
||||||
|
|
@ -294,14 +294,14 @@ NLoader {
|
||||||
text: "search"
|
text: "search"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: 16 * scaling
|
font.pointSize: 16 * scaling
|
||||||
color: searchInput.activeFocus ? Colors.accentPrimary : Colors.textSecondary
|
color: searchInput.activeFocus ? Colors.colorPrimary : Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
TextField {
|
||||||
id: searchInput
|
id: searchInput
|
||||||
placeholderText: "Search applications..."
|
placeholderText: "Search applications..."
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
placeholderTextColor: Colors.textSecondary
|
placeholderTextColor: Colors.colorOnSurface
|
||||||
background: null
|
background: null
|
||||||
font.pointSize: 13 * scaling
|
font.pointSize: 13 * scaling
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -309,8 +309,8 @@ NLoader {
|
||||||
searchText = text
|
searchText = text
|
||||||
selectedIndex = 0 // Reset selection when search changes
|
selectedIndex = 0 // Reset selection when search changes
|
||||||
}
|
}
|
||||||
selectedTextColor: Colors.textPrimary
|
selectedTextColor: Colors.colorOnSurface
|
||||||
selectionColor: Colors.accentPrimary
|
selectionColor: Colors.colorPrimary
|
||||||
padding: 0
|
padding: 0
|
||||||
verticalAlignment: TextInput.AlignVCenter
|
verticalAlignment: TextInput.AlignVCenter
|
||||||
leftPadding: 0
|
leftPadding: 0
|
||||||
|
|
@ -319,14 +319,14 @@ NLoader {
|
||||||
bottomPadding: 0
|
bottomPadding: 0
|
||||||
font.bold: true
|
font.bold: true
|
||||||
Component.onCompleted: {
|
Component.onCompleted: {
|
||||||
contentItem.cursorColor = Colors.textPrimary
|
contentItem.cursorColor = Colors.colorOnSurface
|
||||||
contentItem.verticalAlignment = TextInput.AlignVCenter
|
contentItem.verticalAlignment = TextInput.AlignVCenter
|
||||||
// Focus the search bar by default
|
// Focus the search bar by default
|
||||||
Qt.callLater(() => {
|
Qt.callLater(() => {
|
||||||
searchInput.forceActiveFocus()
|
searchInput.forceActiveFocus()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
onActiveFocusChanged: contentItem.cursorColor = Colors.textPrimary
|
onActiveFocusChanged: contentItem.cursorColor = Colors.colorOnSurface
|
||||||
|
|
||||||
Keys.onDownPressed: selectNext()
|
Keys.onDownPressed: selectNext()
|
||||||
Keys.onUpPressed: selectPrev()
|
Keys.onUpPressed: selectPrev()
|
||||||
|
|
@ -370,10 +370,10 @@ NLoader {
|
||||||
radius: 16 * scaling
|
radius: 16 * scaling
|
||||||
property bool isSelected: index === selectedIndex
|
property bool isSelected: index === selectedIndex
|
||||||
color: (appCardArea.containsMouse || isSelected) ? Qt.darker(
|
color: (appCardArea.containsMouse || isSelected) ? Qt.darker(
|
||||||
Colors.accentPrimary,
|
Colors.colorPrimary,
|
||||||
1.1) : Colors.backgroundSecondary
|
1.1) : Colors.colorSurface
|
||||||
border.color: (appCardArea.containsMouse
|
border.color: (appCardArea.containsMouse
|
||||||
|| isSelected) ? Colors.accentPrimary : "transparent"
|
|| isSelected) ? Colors.colorPrimary : "transparent"
|
||||||
border.width: (appCardArea.containsMouse || isSelected) ? 2 : 0
|
border.width: (appCardArea.containsMouse || isSelected) ? 2 : 0
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
|
|
@ -404,8 +404,8 @@ NLoader {
|
||||||
Layout.preferredWidth: 40 * scaling
|
Layout.preferredWidth: 40 * scaling
|
||||||
Layout.preferredHeight: 40 * scaling
|
Layout.preferredHeight: 40 * scaling
|
||||||
radius: 14 * scaling
|
radius: 14 * scaling
|
||||||
color: appCardArea.containsMouse ? Qt.darker(Colors.accentPrimary,
|
color: appCardArea.containsMouse ? Qt.darker(Colors.colorPrimary,
|
||||||
1.1) : Colors.backgroundTertiary
|
1.1) : Colors.colorSurfaceVariant
|
||||||
property bool iconLoaded: (modelData.isCalculator || modelData.isClipboard
|
property bool iconLoaded: (modelData.isCalculator || modelData.isClipboard
|
||||||
|| modelData.isCommand) || (iconImg.status === Image.Ready
|
|| modelData.isCommand) || (iconImg.status === Image.Ready
|
||||||
&& iconImg.source !== ""
|
&& iconImg.source !== ""
|
||||||
|
|
@ -440,7 +440,7 @@ NLoader {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.margins: 6 * scaling
|
anchors.margins: 6 * scaling
|
||||||
radius: 10 * scaling
|
radius: 10 * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
opacity: 0.3
|
opacity: 0.3
|
||||||
visible: !parent.iconLoaded
|
visible: !parent.iconLoaded
|
||||||
}
|
}
|
||||||
|
|
@ -452,7 +452,7 @@ NLoader {
|
||||||
text: modelData.name ? modelData.name.charAt(0).toUpperCase() : "?"
|
text: modelData.name ? modelData.name.charAt(0).toUpperCase() : "?"
|
||||||
font.pointSize: 18 * scaling
|
font.pointSize: 18 * scaling
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
|
|
@ -471,7 +471,7 @@ NLoader {
|
||||||
text: modelData.name || "Unknown"
|
text: modelData.name || "Unknown"
|
||||||
font.pointSize: 14 * scaling
|
font.pointSize: 14 * scaling
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -480,7 +480,7 @@ NLoader {
|
||||||
text: modelData.isCalculator ? (modelData.expr + " = " + modelData.result) : modelData.isClipboard ? modelData.content : modelData.isCommand ? modelData.content : (modelData.genericName || modelData.comment || "")
|
text: modelData.isCalculator ? (modelData.expr + " = " + modelData.result) : modelData.isClipboard ? modelData.content : modelData.isCommand ? modelData.content : (modelData.genericName || modelData.comment || "")
|
||||||
font.pointSize: 11 * scaling
|
font.pointSize: 11 * scaling
|
||||||
color: (appCardArea.containsMouse
|
color: (appCardArea.containsMouse
|
||||||
|| isSelected) ? Colors.textPrimary : Colors.textSecondary
|
|| isSelected) ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
visible: text !== ""
|
visible: text !== ""
|
||||||
|
|
@ -507,7 +507,7 @@ NLoader {
|
||||||
NText {
|
NText {
|
||||||
text: searchText.trim() !== "" ? "No applications found" : "No applications available"
|
text: searchText.trim() !== "" ? "No applications found" : "No applications available"
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
visible: filteredEntries.length === 0
|
visible: filteredEntries.length === 0
|
||||||
|
|
@ -521,7 +521,7 @@ NLoader {
|
||||||
">calc") ? `${filteredEntries.length} result${filteredEntries.length
|
">calc") ? `${filteredEntries.length} result${filteredEntries.length
|
||||||
!== 1 ? 's' : ''}` : `${filteredEntries.length} application${filteredEntries.length !== 1 ? 's' : ''}`
|
!== 1 ? 's' : ''}` : `${filteredEntries.length} application${filteredEntries.length !== 1 ? 's' : ''}`
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
visible: searchText.trim() !== ""
|
visible: searchText.trim() !== ""
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ Item {
|
||||||
id: root
|
id: root
|
||||||
property int innerRadius: 32 * scaling
|
property int innerRadius: 32 * scaling
|
||||||
property int outerRadius: 64 * scaling
|
property int outerRadius: 64 * scaling
|
||||||
property color fillColor: Colors.accentPrimary
|
property color fillColor: Colors.colorPrimary
|
||||||
property color strokeColor: Colors.textPrimary
|
property color strokeColor: Colors.colorOnSurface
|
||||||
property int strokeWidth: 0 * scaling
|
property int strokeWidth: 0 * scaling
|
||||||
property var values: []
|
property var values: []
|
||||||
property int usableOuter: 64
|
property int usableOuter: 64
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ import qs.Services
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: root
|
id: root
|
||||||
property color fillColor: Colors.accentPrimary
|
property color fillColor: Colors.colorPrimary
|
||||||
property color strokeColor: Colors.textPrimary
|
property color strokeColor: Colors.colorOnSurface
|
||||||
property int strokeWidth: 0
|
property int strokeWidth: 0
|
||||||
property var values: []
|
property var values: []
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -62,7 +62,7 @@ NLoader {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Qt.rgba(Colors.backgroundPrimary.r, Colors.backgroundPrimary.g, Colors.backgroundPrimary.b, 0.5)
|
color: Qt.rgba(Colors.colorSurface.r, Colors.colorSurface.g, Colors.colorSurface.b, 0.5)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ NLoader {
|
||||||
required property ShellScreen modelData
|
required property ShellScreen modelData
|
||||||
|
|
||||||
// Visible ring color
|
// Visible ring color
|
||||||
property color ringColor: Colors.backgroundPrimary
|
property color ringColor: Colors.colorSurface
|
||||||
// The amount subtracted from full size for the inner cutout
|
// The amount subtracted from full size for the inner cutout
|
||||||
// Inner size = full size - borderWidth (per axis)
|
// Inner size = full size - borderWidth (per axis)
|
||||||
property int borderWidth: Style.borderMedium
|
property int borderWidth: Style.borderMedium
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ Variants {
|
||||||
id: bar
|
id: bar
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Colors.backgroundPrimary
|
color: Colors.colorSurface
|
||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -51,10 +51,10 @@ NPill {
|
||||||
|
|
||||||
icon: root.batteryIcon()
|
icon: root.batteryIcon()
|
||||||
text: Math.round(root.percent) + "%"
|
text: Math.round(root.percent) + "%"
|
||||||
pillColor: Colors.surfaceVariant
|
pillColor: Colors.colorSurfaceVariant
|
||||||
iconCircleColor: Colors.accentPrimary
|
iconCircleColor: Colors.colorPrimary
|
||||||
iconTextColor: Colors.backgroundPrimary
|
iconTextColor: Colors.colorSurface
|
||||||
textColor: charging ? Colors.accentPrimary : Colors.textPrimary
|
textColor: charging ? Colors.colorPrimary : Colors.colorOnSurface
|
||||||
tooltipText: {
|
tooltipText: {
|
||||||
let lines = []
|
let lines = []
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,7 @@ Row {
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
|
|
@ -45,7 +45,7 @@ Row {
|
||||||
text: "thermometer"
|
text: "thermometer"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
}
|
}
|
||||||
|
|
@ -68,7 +68,7 @@ Row {
|
||||||
text: "memory"
|
text: "memory"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -73,8 +73,8 @@ PopupWindow {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: bg
|
id: bg
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
z: 0
|
z: 0
|
||||||
|
|
@ -112,7 +112,7 @@ PopupWindow {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: bg
|
id: bg
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: mouseArea.containsMouse ? Colors.hover : "transparent"
|
color: mouseArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
visible: !(modelData?.isSeparator ?? false)
|
visible: !(modelData?.isSeparator ?? false)
|
||||||
|
|
||||||
|
|
@ -126,7 +126,7 @@ PopupWindow {
|
||||||
id: text
|
id: text
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
color: (modelData?.enabled
|
color: (modelData?.enabled
|
||||||
?? true) ? (mouseArea.containsMouse ? Colors.textPrimary : Colors.textPrimary) : Colors.textDisabled
|
?? true) ? (mouseArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface) : Colors.textDisabled
|
||||||
text: modelData?.text ?? ""
|
text: modelData?.text ?? ""
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
|
@ -148,7 +148,7 @@ PopupWindow {
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
visible: modelData?.hasChildren ?? false
|
visible: modelData?.hasChildren ?? false
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -308,8 +308,8 @@ PopupWindow {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: bg
|
id: bg
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
z: 0
|
z: 0
|
||||||
|
|
@ -347,10 +347,10 @@ PopupWindow {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: bg
|
id: bg
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: mouseArea.containsMouse ? Colors.hover : "transparent"
|
color: mouseArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
visible: !(modelData?.isSeparator ?? false)
|
visible: !(modelData?.isSeparator ?? false)
|
||||||
property color hoverTextColor: mouseArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
property color hoverTextColor: mouseArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
|
||||||
|
|
@ -38,8 +38,8 @@ Item {
|
||||||
NPill {
|
NPill {
|
||||||
id: pill
|
id: pill
|
||||||
icon: getIcon()
|
icon: getIcon()
|
||||||
iconCircleColor: Colors.accentPrimary
|
iconCircleColor: Colors.colorPrimary
|
||||||
collapsedIconColor: Colors.textPrimary
|
collapsedIconColor: Colors.colorOnSurface
|
||||||
autoHide: true
|
autoHide: true
|
||||||
text: Math.floor(Audio.volume * 100) + "%"
|
text: Math.floor(Audio.volume * 100) + "%"
|
||||||
tooltipText: "Volume: " + Math.round(
|
tooltipText: "Volume: " + Math.round(
|
||||||
|
|
|
||||||
|
|
@ -67,9 +67,9 @@ NLoader {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: wifiMenuRect
|
id: wifiMenuRect
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.backgroundTertiary
|
border.color: Colors.colorSurfaceVariant
|
||||||
border.width: Math.max(1, Style.borderMedium * scaling)
|
border.width: Math.max(1, Style.borderMedium * scaling)
|
||||||
width: 340 * scaling
|
width: 340 * scaling
|
||||||
height: 320 * scaling
|
height: 320 * scaling
|
||||||
|
|
@ -119,14 +119,14 @@ NLoader {
|
||||||
text: "wifi"
|
text: "wifi"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "WiFi"
|
text: "WiFi"
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
font.bold: true
|
font.bold: true
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -180,7 +180,7 @@ NLoader {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: Style.baseWidgetSize * 1.5 * scaling
|
Layout.preferredHeight: Style.baseWidgetSize * 1.5 * scaling
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: modelData.connected ? Colors.accentPrimary : (networkMouseArea.containsMouse ? Colors.hover : "transparent")
|
color: modelData.connected ? Colors.colorPrimary : (networkMouseArea.containsMouse ? Colors.colorTertiary : "transparent")
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -191,7 +191,7 @@ NLoader {
|
||||||
text: network.signalIcon(modelData.signal)
|
text: network.signalIcon(modelData.signal)
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
color: modelData.connected ? Colors.backgroundPrimary : (networkMouseArea.containsMouse ? Colors.backgroundPrimary : Colors.textPrimary)
|
color: modelData.connected ? Colors.colorSurface : (networkMouseArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface)
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
|
@ -204,7 +204,7 @@ NLoader {
|
||||||
font.pointSize: Style.fontSizeNormal * scaling
|
font.pointSize: Style.fontSizeNormal * scaling
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
color: modelData.connected ? Colors.backgroundPrimary : (networkMouseArea.containsMouse ? Colors.backgroundPrimary : Colors.textPrimary)
|
color: modelData.connected ? Colors.colorSurface : (networkMouseArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Security Protocol
|
// Security Protocol
|
||||||
|
|
@ -213,14 +213,14 @@ NLoader {
|
||||||
font.pointSize: Style.fontSizeTiny * scaling
|
font.pointSize: Style.fontSizeTiny * scaling
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
color: modelData.connected ? Colors.backgroundPrimary : (networkMouseArea.containsMouse ? Colors.backgroundPrimary : Colors.textPrimary)
|
color: modelData.connected ? Colors.colorSurface : (networkMouseArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface)
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
visible: network.connectStatusSsid === modelData.ssid && network.connectStatus === "error"
|
visible: network.connectStatusSsid === modelData.ssid && network.connectStatus === "error"
|
||||||
&& network.connectError.length > 0
|
&& network.connectError.length > 0
|
||||||
text: network.connectError
|
text: network.connectError
|
||||||
color: Colors.error
|
color: Colors.colorError
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -236,7 +236,7 @@ NLoader {
|
||||||
NBusyIndicator {
|
NBusyIndicator {
|
||||||
visible: network.connectingSsid === modelData.ssid
|
visible: network.connectingSsid === modelData.ssid
|
||||||
running: network.connectingSsid === modelData.ssid
|
running: network.connectingSsid === modelData.ssid
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
size: Style.baseWidgetSize * 0.7 * scaling
|
size: Style.baseWidgetSize * 0.7 * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -257,7 +257,7 @@ NLoader {
|
||||||
text: "error"
|
text: "error"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.error
|
color: Colors.colorError
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -266,7 +266,7 @@ NLoader {
|
||||||
visible: modelData.connected
|
visible: modelData.connected
|
||||||
text: "connected"
|
text: "connected"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: modelData.connected ? Colors.backgroundPrimary : (networkMouseArea.containsMouse ? Colors.backgroundPrimary : Colors.textPrimary)
|
color: modelData.connected ? Colors.colorSurface : (networkMouseArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -298,7 +298,7 @@ NLoader {
|
||||||
Layout.preferredHeight: modelData.ssid === passwordPromptSsid && showPasswordPrompt ? 60 : 0
|
Layout.preferredHeight: modelData.ssid === passwordPromptSsid && showPasswordPrompt ? 60 : 0
|
||||||
Layout.margins: 8
|
Layout.margins: 8
|
||||||
visible: modelData.ssid === passwordPromptSsid && showPasswordPrompt
|
visible: modelData.ssid === passwordPromptSsid && showPasswordPrompt
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurfaceVariant
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
|
|
@ -314,7 +314,7 @@ NLoader {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: 8
|
radius: 8
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: passwordInputField.activeFocus ? Colors.accentPrimary : Colors.outline
|
border.color: passwordInputField.activeFocus ? Colors.colorPrimary : Colors.colorOutline
|
||||||
border.width: 1
|
border.width: 1
|
||||||
|
|
||||||
TextInput {
|
TextInput {
|
||||||
|
|
@ -323,7 +323,7 @@ NLoader {
|
||||||
anchors.margins: Style.marginMedium * scaling
|
anchors.margins: Style.marginMedium * scaling
|
||||||
text: passwordInput
|
text: passwordInput
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
verticalAlignment: TextInput.AlignVCenter
|
verticalAlignment: TextInput.AlignVCenter
|
||||||
clip: true
|
clip: true
|
||||||
focus: true
|
focus: true
|
||||||
|
|
@ -350,8 +350,8 @@ NLoader {
|
||||||
Layout.preferredWidth: 80
|
Layout.preferredWidth: 80
|
||||||
Layout.preferredHeight: 36
|
Layout.preferredHeight: 36
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: 0
|
border.width: 0
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
|
|
@ -363,7 +363,7 @@ NLoader {
|
||||||
NText {
|
NText {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: "Connect"
|
text: "Connect"
|
||||||
color: Colors.backgroundPrimary
|
color: Colors.colorSurface
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -375,8 +375,8 @@ NLoader {
|
||||||
}
|
}
|
||||||
cursorShape: Qt.PointingHandCursor
|
cursorShape: Qt.PointingHandCursor
|
||||||
hoverEnabled: true
|
hoverEnabled: true
|
||||||
onEntered: parent.color = Qt.darker(Colors.accentPrimary, 1.1)
|
onEntered: parent.color = Qt.darker(Colors.colorPrimary, 1.1)
|
||||||
onExited: parent.color = Colors.accentPrimary
|
onExited: parent.color = Colors.colorPrimary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ Item {
|
||||||
property ListModel localWorkspaces: ListModel {}
|
property ListModel localWorkspaces: ListModel {}
|
||||||
property real masterProgress: 0.0
|
property real masterProgress: 0.0
|
||||||
property bool effectsActive: false
|
property bool effectsActive: false
|
||||||
property color effectColor: Colors.accentPrimary
|
property color effectColor: Colors.colorPrimary
|
||||||
|
|
||||||
property int horizontalPadding: Math.round(16 * s)
|
property int horizontalPadding: Math.round(16 * s)
|
||||||
property int spacingBetweenPills: Math.round(8 * s)
|
property int spacingBetweenPills: Math.round(8 * s)
|
||||||
|
|
@ -72,7 +72,7 @@ Item {
|
||||||
}
|
}
|
||||||
|
|
||||||
function triggerUnifiedWave() {
|
function triggerUnifiedWave() {
|
||||||
effectColor = Colors.accentPrimary
|
effectColor = Colors.colorPrimary
|
||||||
masterAnimation.restart()
|
masterAnimation.restart()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -108,7 +108,7 @@ Item {
|
||||||
const ws = localWorkspaces.get(i)
|
const ws = localWorkspaces.get(i)
|
||||||
if (ws.isFocused === true) {
|
if (ws.isFocused === true) {
|
||||||
root.triggerUnifiedWave()
|
root.triggerUnifiedWave()
|
||||||
root.workspaceChanged(ws.id, Colors.accentPrimary)
|
root.workspaceChanged(ws.id, Colors.colorPrimary)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -121,14 +121,12 @@ Item {
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
radius: Math.round(12 * s)
|
radius: Math.round(12 * s)
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurfaceVariant
|
||||||
border.color: Qt.rgba(Colors.textPrimary.r, Colors.textPrimary.g, Colors.textPrimary.b, 0.1)
|
border.color: Colors.colorOutlineVariant
|
||||||
border.width: Math.max(1, Math.round(1 * s))
|
border.width: Math.max(1, Math.round(1 * s))
|
||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
layer.effect: MultiEffect {
|
layer.effect: MultiEffect {
|
||||||
shadowColor: "black"
|
shadowColor: Colors.colorShadow
|
||||||
|
|
||||||
// radius: 12
|
|
||||||
shadowVerticalOffset: 0
|
shadowVerticalOffset: 0
|
||||||
shadowHorizontalOffset: 0
|
shadowHorizontalOffset: 0
|
||||||
shadowOpacity: 0.10
|
shadowOpacity: 0.10
|
||||||
|
|
@ -168,15 +166,15 @@ Item {
|
||||||
}
|
}
|
||||||
color: {
|
color: {
|
||||||
if (model.isFocused)
|
if (model.isFocused)
|
||||||
return Colors.accentPrimary
|
return Colors.colorPrimary
|
||||||
if (model.isUrgent)
|
if (model.isUrgent)
|
||||||
return Colors.error
|
return Colors.colorError
|
||||||
if (model.isActive || model.isOccupied)
|
if (model.isActive || model.isOccupied)
|
||||||
return Colors.accentTertiary
|
return Colors.colorSecondary
|
||||||
if (model.isUrgent)
|
if (model.isUrgent)
|
||||||
return Colors.error
|
return Colors.colorError
|
||||||
|
|
||||||
return Colors.outline
|
return Colors.colorOutline
|
||||||
}
|
}
|
||||||
scale: model.isFocused ? 1.0 : 0.9
|
scale: model.isFocused ? 1.0 : 0.9
|
||||||
z: 0
|
z: 0
|
||||||
|
|
|
||||||
|
|
@ -63,9 +63,9 @@ NLoader {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: calendarRect
|
id: calendarRect
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.backgroundTertiary
|
border.color: Colors.colorSurfaceVariant
|
||||||
border.width: Math.max(1, Style.borderMedium * scaling)
|
border.width: Math.max(1, Style.borderMedium * scaling)
|
||||||
width: 340 * scaling
|
width: 340 * scaling
|
||||||
height: 320 * scaling // Reduced height to eliminate bottom space
|
height: 320 * scaling // Reduced height to eliminate bottom space
|
||||||
|
|
@ -135,7 +135,7 @@ NLoader {
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
NIconButton {
|
NIconButton {
|
||||||
|
|
@ -172,7 +172,7 @@ NLoader {
|
||||||
let dayIndex = (firstDay + index) % 7
|
let dayIndex = (firstDay + index) % 7
|
||||||
return Qt.locale().dayName(dayIndex, Locale.ShortFormat)
|
return Qt.locale().dayName(dayIndex, Locale.ShortFormat)
|
||||||
}
|
}
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
@ -210,12 +210,12 @@ NLoader {
|
||||||
width: (Style.baseWidgetSize * scaling)
|
width: (Style.baseWidgetSize * scaling)
|
||||||
height: (Style.baseWidgetSize * scaling)
|
height: (Style.baseWidgetSize * scaling)
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: model.today ? Colors.accentPrimary : "transparent"
|
color: model.today ? Colors.colorPrimary : "transparent"
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: model.day
|
text: model.day
|
||||||
color: model.today ? Colors.onAccent : Colors.textPrimary
|
color: model.today ? Colors.onAccent : Colors.colorOnSurface
|
||||||
opacity: model.month === grid.month ? Style.opacityHeavy : Style.opacityLight
|
opacity: model.month === grid.month ? Style.opacityHeavy : Style.opacityLight
|
||||||
font.pointSize: (Style.fontSizeMedium * scaling)
|
font.pointSize: (Style.fontSizeMedium * scaling)
|
||||||
font.weight: model.today ? Style.fontWeightBold : Style.fontWeightRegular
|
font.weight: model.today ? Style.fontWeightBold : Style.fontWeightRegular
|
||||||
|
|
|
||||||
|
|
@ -68,10 +68,10 @@ NLoader {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: bgRect
|
id: bgRect
|
||||||
color: Colors.backgroundPrimary
|
color: Colors.colorSurface
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorOutlineVariant
|
||||||
border.width: 2
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
width: 500 * scaling
|
width: 500 * scaling
|
||||||
height: 700 * scaling
|
height: 700 * scaling
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
|
|
@ -115,7 +115,7 @@ NLoader {
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "DemoPanel"
|
text: "DemoPanel"
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
|
|
@ -130,7 +130,7 @@ NLoader {
|
||||||
spacing: Style.marginLarge * scaling
|
spacing: Style.marginLarge * scaling
|
||||||
NText {
|
NText {
|
||||||
text: "Scaling"
|
text: "Scaling"
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
NText {
|
NText {
|
||||||
|
|
@ -173,7 +173,7 @@ NLoader {
|
||||||
spacing: Style.marginLarge * scaling
|
spacing: Style.marginLarge * scaling
|
||||||
NText {
|
NText {
|
||||||
text: "NIconButton"
|
text: "NIconButton"
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -193,7 +193,7 @@ NLoader {
|
||||||
spacing: Style.marginMedium * scaling
|
spacing: Style.marginMedium * scaling
|
||||||
NText {
|
NText {
|
||||||
text: "NToggle"
|
text: "NToggle"
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -215,7 +215,7 @@ NLoader {
|
||||||
spacing: Style.marginMedium * scaling
|
spacing: Style.marginMedium * scaling
|
||||||
NText {
|
NText {
|
||||||
text: "NComboBox"
|
text: "NComboBox"
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -240,7 +240,7 @@ NLoader {
|
||||||
spacing: Style.marginMedium * scaling
|
spacing: Style.marginMedium * scaling
|
||||||
NText {
|
NText {
|
||||||
text: "NTextInput"
|
text: "NTextInput"
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -263,7 +263,7 @@ NLoader {
|
||||||
spacing: Style.marginMedium * scaling
|
spacing: Style.marginMedium * scaling
|
||||||
NText {
|
NText {
|
||||||
text: "NBusyIndicator"
|
text: "NBusyIndicator"
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -104,7 +104,7 @@ NLoader {
|
||||||
id: dockContainer
|
id: dockContainer
|
||||||
width: dock.width + 40
|
width: dock.width + 40
|
||||||
height: 50
|
height: 50
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
topLeftRadius: 20
|
topLeftRadius: 20
|
||||||
|
|
@ -203,7 +203,7 @@ NLoader {
|
||||||
text: appButton.appId ? appButton.appId.charAt(0).toUpperCase() : "?"
|
text: appButton.appId ? appButton.appId.charAt(0).toUpperCase() : "?"
|
||||||
font.pixelSize: 14
|
font.pixelSize: 14
|
||||||
font.bold: true
|
font.bold: true
|
||||||
color: appButton.isActive ? Colors.accentPrimary : Colors.textPrimary
|
color: appButton.isActive ? Colors.colorPrimary : Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
|
|
@ -253,7 +253,7 @@ NLoader {
|
||||||
visible: isActive
|
visible: isActive
|
||||||
width: 20
|
width: 20
|
||||||
height: 3
|
height: 3
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
radius: 1.5
|
radius: 1.5
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
@ -292,8 +292,8 @@ NLoader {
|
||||||
width: 80
|
width: 80
|
||||||
height: 32
|
height: 32
|
||||||
radius: 8
|
radius: 8
|
||||||
color: closeMouseArea.containsMouse ? Colors.hover : Colors.backgroundPrimary
|
color: closeMouseArea.containsMouse ? Colors.colorTertiary : Colors.colorSurface
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: 1
|
border.width: 1
|
||||||
|
|
||||||
x: {
|
x: {
|
||||||
|
|
@ -315,7 +315,7 @@ NLoader {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: "Close"
|
text: "Close"
|
||||||
font.pixelSize: 14
|
font.pixelSize: 14
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ WlSessionLock {
|
||||||
width: Math.random() * 4 + 2
|
width: Math.random() * 4 + 2
|
||||||
height: width
|
height: width
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: Qt.rgba(Colors.accentPrimary.r, Colors.accentPrimary.g, Colors.accentPrimary.b, 0.3)
|
color: Qt.rgba(Colors.colorPrimary.r, Colors.colorPrimary.g, Colors.colorPrimary.b, 0.3)
|
||||||
x: Math.random() * parent.width
|
x: Math.random() * parent.width
|
||||||
y: Math.random() * parent.height
|
y: Math.random() * parent.height
|
||||||
|
|
||||||
|
|
@ -181,7 +181,7 @@ WlSessionLock {
|
||||||
font.pointSize: Style.fontSizeXXL * 6
|
font.pointSize: Style.fontSizeXXL * 6
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
font.letterSpacing: -2
|
font.letterSpacing: -2
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
|
||||||
SequentialAnimation on scale {
|
SequentialAnimation on scale {
|
||||||
|
|
@ -205,7 +205,7 @@ WlSessionLock {
|
||||||
font.family: "Inter"
|
font.family: "Inter"
|
||||||
font.pointSize: Style.fontSizeXL
|
font.pointSize: Style.fontSizeXL
|
||||||
font.weight: Font.Light
|
font.weight: Font.Light
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
width: timeText.width
|
width: timeText.width
|
||||||
}
|
}
|
||||||
|
|
@ -222,7 +222,7 @@ WlSessionLock {
|
||||||
height: 120 * Scaling.scale(screen)
|
height: 120 * Scaling.scale(screen)
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: 3 * Scaling.scale(screen)
|
border.width: 3 * Scaling.scale(screen)
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
|
||||||
|
|
@ -233,7 +233,7 @@ WlSessionLock {
|
||||||
height: parent.height + 24 * Scaling.scale(screen)
|
height: parent.height + 24 * Scaling.scale(screen)
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Qt.rgba(Colors.accentPrimary.r, Colors.accentPrimary.g, Colors.accentPrimary.b, 0.3)
|
border.color: Qt.rgba(Colors.colorPrimary.r, Colors.colorPrimary.g, Colors.colorPrimary.b, 0.3)
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
z: -1
|
z: -1
|
||||||
|
|
||||||
|
|
@ -301,8 +301,8 @@ WlSessionLock {
|
||||||
id: terminalBackground
|
id: terminalBackground
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: 16
|
radius: 16
|
||||||
color: Colors.applyOpacity(Colors.backgroundPrimary, "E6")
|
color: Colors.applyOpacity(Colors.colorSurface, "E6")
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
|
|
||||||
// Scanline effect
|
// Scanline effect
|
||||||
|
|
@ -311,7 +311,7 @@ WlSessionLock {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: 1
|
height: 1
|
||||||
color: Colors.applyOpacity(Colors.accentPrimary, "1A")
|
color: Colors.applyOpacity(Colors.colorPrimary, "1A")
|
||||||
y: index * 10
|
y: index * 10
|
||||||
opacity: 0.3
|
opacity: 0.3
|
||||||
|
|
||||||
|
|
@ -333,7 +333,7 @@ WlSessionLock {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: 40 * Scaling.scale(screen)
|
height: 40 * Scaling.scale(screen)
|
||||||
color: Colors.applyOpacity(Colors.accentPrimary, "33")
|
color: Colors.applyOpacity(Colors.colorPrimary, "33")
|
||||||
topLeftRadius: 14
|
topLeftRadius: 14
|
||||||
topRightRadius: 14
|
topRightRadius: 14
|
||||||
|
|
||||||
|
|
@ -344,7 +344,7 @@ WlSessionLock {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "SECURE TERMINAL"
|
text: "SECURE TERMINAL"
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
|
|
@ -370,7 +370,7 @@ WlSessionLock {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "root@noctalia:~$"
|
text: "root@noctalia:~$"
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
|
|
@ -379,7 +379,7 @@ WlSessionLock {
|
||||||
Text {
|
Text {
|
||||||
id: welcomeText
|
id: welcomeText
|
||||||
text: ""
|
text: ""
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
property int currentIndex: 0
|
property int currentIndex: 0
|
||||||
|
|
@ -408,7 +408,7 @@ WlSessionLock {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "root@noctalia:~$"
|
text: "root@noctalia:~$"
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
|
|
@ -416,7 +416,7 @@ WlSessionLock {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "sudo unlock_session"
|
text: "sudo unlock_session"
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
}
|
}
|
||||||
|
|
@ -429,7 +429,7 @@ WlSessionLock {
|
||||||
visible: false
|
visible: false
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
echoMode: TextInput.Password
|
echoMode: TextInput.Password
|
||||||
passwordCharacter: "*"
|
passwordCharacter: "*"
|
||||||
passwordMaskDelay: 0
|
passwordMaskDelay: 0
|
||||||
|
|
@ -456,7 +456,7 @@ WlSessionLock {
|
||||||
Text {
|
Text {
|
||||||
id: asterisksText
|
id: asterisksText
|
||||||
text: "*".repeat(passwordInput.text.length)
|
text: "*".repeat(passwordInput.text.length)
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
visible: passwordInput.activeFocus
|
visible: passwordInput.activeFocus
|
||||||
|
|
@ -483,7 +483,7 @@ WlSessionLock {
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: 8 * Scaling.scale(screen)
|
width: 8 * Scaling.scale(screen)
|
||||||
height: 20 * Scaling.scale(screen)
|
height: 20 * Scaling.scale(screen)
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
visible: passwordInput.activeFocus
|
visible: passwordInput.activeFocus
|
||||||
anchors.left: asterisksText.right
|
anchors.left: asterisksText.right
|
||||||
anchors.leftMargin: 2 * Scaling.scale(screen)
|
anchors.leftMargin: 2 * Scaling.scale(screen)
|
||||||
|
|
@ -506,7 +506,7 @@ WlSessionLock {
|
||||||
// Status messages
|
// Status messages
|
||||||
Text {
|
Text {
|
||||||
text: lock.authenticating ? "Authenticating..." : (lock.errorMessage !== "" ? "Authentication failed." : "")
|
text: lock.authenticating ? "Authenticating..." : (lock.errorMessage !== "" ? "Authentication failed." : "")
|
||||||
color: lock.authenticating ? Colors.accentPrimary : (lock.errorMessage !== "" ? Colors.error : "transparent")
|
color: lock.authenticating ? Colors.colorPrimary : (lock.errorMessage !== "" ? Colors.colorError : "transparent")
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeLarge
|
font.pointSize: Style.fontSizeLarge
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -530,9 +530,9 @@ WlSessionLock {
|
||||||
width: 120 * Scaling.scale(screen)
|
width: 120 * Scaling.scale(screen)
|
||||||
height: 40 * Scaling.scale(screen)
|
height: 40 * Scaling.scale(screen)
|
||||||
radius: 12
|
radius: 12
|
||||||
color: executeButtonArea.containsMouse ? Colors.accentPrimary : Colors.applyOpacity(
|
color: executeButtonArea.containsMouse ? Colors.colorPrimary : Colors.applyOpacity(
|
||||||
Colors.accentPrimary, "33")
|
Colors.colorPrimary, "33")
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: 1
|
border.width: 1
|
||||||
enabled: !lock.authenticating
|
enabled: !lock.authenticating
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
|
|
@ -541,7 +541,7 @@ WlSessionLock {
|
||||||
Text {
|
Text {
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
text: lock.authenticating ? "EXECUTING" : "EXECUTE"
|
text: lock.authenticating ? "EXECUTING" : "EXECUTE"
|
||||||
color: executeButtonArea.containsMouse ? Colors.onAccent : Colors.accentPrimary
|
color: executeButtonArea.containsMouse ? Colors.onAccent : Colors.colorPrimary
|
||||||
font.family: "DejaVu Sans Mono"
|
font.family: "DejaVu Sans Mono"
|
||||||
font.pointSize: Style.fontSizeMedium
|
font.pointSize: Style.fontSizeMedium
|
||||||
font.weight: Font.Bold
|
font.weight: Font.Bold
|
||||||
|
|
@ -595,7 +595,7 @@ WlSessionLock {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: parent.radius
|
radius: parent.radius
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Colors.applyOpacity(Colors.accentPrimary, "4D")
|
border.color: Colors.applyOpacity(Colors.colorPrimary, "4D")
|
||||||
border.width: 1
|
border.width: 1
|
||||||
z: -1
|
z: -1
|
||||||
|
|
||||||
|
|
@ -631,8 +631,8 @@ WlSessionLock {
|
||||||
width: 64 * Scaling.scale(screen)
|
width: 64 * Scaling.scale(screen)
|
||||||
height: 64 * Scaling.scale(screen)
|
height: 64 * Scaling.scale(screen)
|
||||||
radius: 32
|
radius: 32
|
||||||
color: Qt.rgba(Colors.error.r, Colors.error.g, Colors.error.b, shutdownArea.containsMouse ? 0.9 : 0.2)
|
color: Qt.rgba(Colors.colorError.r, Colors.colorError.g, Colors.colorError.b, shutdownArea.containsMouse ? 0.9 : 0.2)
|
||||||
border.color: Colors.error
|
border.color: Colors.colorError
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
|
|
||||||
// Glow effect
|
// Glow effect
|
||||||
|
|
@ -642,7 +642,7 @@ WlSessionLock {
|
||||||
height: parent.height + 10 * Scaling.scale(screen)
|
height: parent.height + 10 * Scaling.scale(screen)
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Qt.rgba(Colors.error.r, Colors.error.g, Colors.error.b, 0.3)
|
border.color: Qt.rgba(Colors.colorError.r, Colors.colorError.g, Colors.colorError.b, 0.3)
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
opacity: shutdownArea.containsMouse ? 1 : 0
|
opacity: shutdownArea.containsMouse ? 1 : 0
|
||||||
z: -1
|
z: -1
|
||||||
|
|
@ -671,7 +671,7 @@ WlSessionLock {
|
||||||
text: "power_settings_new"
|
text: "power_settings_new"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pixelSize: 28 * Scaling.scale(screen)
|
font.pixelSize: 28 * Scaling.scale(screen)
|
||||||
color: shutdownArea.containsMouse ? Colors.onAccent : Colors.error
|
color: shutdownArea.containsMouse ? Colors.onAccent : Colors.colorError
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
|
|
@ -688,9 +688,9 @@ WlSessionLock {
|
||||||
width: 64 * Scaling.scale(screen)
|
width: 64 * Scaling.scale(screen)
|
||||||
height: 64 * Scaling.scale(screen)
|
height: 64 * Scaling.scale(screen)
|
||||||
radius: 32
|
radius: 32
|
||||||
color: Qt.rgba(Colors.accentPrimary.r, Colors.accentPrimary.g, Colors.accentPrimary.b,
|
color: Qt.rgba(Colors.colorPrimary.r, Colors.colorPrimary.g, Colors.colorPrimary.b,
|
||||||
rebootArea.containsMouse ? 0.9 : 0.2)
|
rebootArea.containsMouse ? 0.9 : 0.2)
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
|
|
||||||
// Glow effect
|
// Glow effect
|
||||||
|
|
@ -700,7 +700,7 @@ WlSessionLock {
|
||||||
height: parent.height + 10 * Scaling.scale(screen)
|
height: parent.height + 10 * Scaling.scale(screen)
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Qt.rgba(Colors.accentPrimary.r, Colors.accentPrimary.g, Colors.accentPrimary.b, 0.3)
|
border.color: Qt.rgba(Colors.colorPrimary.r, Colors.colorPrimary.g, Colors.colorPrimary.b, 0.3)
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
opacity: rebootArea.containsMouse ? 1 : 0
|
opacity: rebootArea.containsMouse ? 1 : 0
|
||||||
z: -1
|
z: -1
|
||||||
|
|
@ -728,7 +728,7 @@ WlSessionLock {
|
||||||
text: "refresh"
|
text: "refresh"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pixelSize: 28 * Scaling.scale(screen)
|
font.pixelSize: 28 * Scaling.scale(screen)
|
||||||
color: rebootArea.containsMouse ? Colors.onAccent : Colors.accentPrimary
|
color: rebootArea.containsMouse ? Colors.onAccent : Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
|
|
@ -745,9 +745,9 @@ WlSessionLock {
|
||||||
width: 64 * Scaling.scale(screen)
|
width: 64 * Scaling.scale(screen)
|
||||||
height: 64 * Scaling.scale(screen)
|
height: 64 * Scaling.scale(screen)
|
||||||
radius: 32
|
radius: 32
|
||||||
color: Qt.rgba(Colors.accentSecondary.r, Colors.accentSecondary.g, Colors.accentSecondary.b,
|
color: Qt.rgba(Colors.colorSecondary.r, Colors.colorSecondary.g, Colors.colorSecondary.b,
|
||||||
logoutArea.containsMouse ? 0.9 : 0.2)
|
logoutArea.containsMouse ? 0.9 : 0.2)
|
||||||
border.color: Colors.accentSecondary
|
border.color: Colors.colorSecondary
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
|
|
||||||
// Glow effect
|
// Glow effect
|
||||||
|
|
@ -757,7 +757,7 @@ WlSessionLock {
|
||||||
height: parent.height + 10 * Scaling.scale(screen)
|
height: parent.height + 10 * Scaling.scale(screen)
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: Qt.rgba(Colors.accentSecondary.r, Colors.accentSecondary.g, Colors.accentSecondary.b, 0.3)
|
border.color: Qt.rgba(Colors.colorSecondary.r, Colors.colorSecondary.g, Colors.colorSecondary.b, 0.3)
|
||||||
border.width: 2 * Scaling.scale(screen)
|
border.width: 2 * Scaling.scale(screen)
|
||||||
opacity: logoutArea.containsMouse ? 1 : 0
|
opacity: logoutArea.containsMouse ? 1 : 0
|
||||||
z: -1
|
z: -1
|
||||||
|
|
@ -787,7 +787,7 @@ WlSessionLock {
|
||||||
text: "exit_to_app"
|
text: "exit_to_app"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pixelSize: 28 * Scaling.scale(screen)
|
font.pixelSize: 28 * Scaling.scale(screen)
|
||||||
color: logoutArea.containsMouse ? Colors.onAccent : Colors.accentSecondary
|
color: logoutArea.containsMouse ? Colors.onAccent : Colors.colorSecondary
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on color {
|
Behavior on color {
|
||||||
|
|
|
||||||
|
|
@ -63,18 +63,9 @@ PanelWindow {
|
||||||
height: Math.max(80 * scaling, contentColumn.implicitHeight + (Style.marginMedium * 2 * scaling))
|
height: Math.max(80 * scaling, contentColumn.implicitHeight + (Style.marginMedium * 2 * scaling))
|
||||||
clip: true
|
clip: true
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
gradient: Gradient {
|
color: Colors.colorSurface
|
||||||
GradientStop {
|
|
||||||
position: 0.0
|
|
||||||
color: Colors.backgroundSecondary
|
|
||||||
}
|
|
||||||
GradientStop {
|
|
||||||
position: 1.0
|
|
||||||
color: Colors.backgroundTertiary
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Animation properties
|
// Animation properties
|
||||||
property real scaleValue: 0.8
|
property real scaleValue: 0.8
|
||||||
|
|
@ -142,14 +133,14 @@ PanelWindow {
|
||||||
spacing: Style.marginSmall * scaling
|
spacing: Style.marginSmall * scaling
|
||||||
NText {
|
NText {
|
||||||
text: (model.appName || model.desktopEntry) || "Unknown App"
|
text: (model.appName || model.desktopEntry) || "Unknown App"
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
}
|
}
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: 6 * scaling
|
width: 6 * scaling
|
||||||
height: 6 * scaling
|
height: 6 * scaling
|
||||||
radius: 3 * scaling
|
radius: 3 * scaling
|
||||||
color: (model.urgency === NotificationUrgency.Critical) ? Colors.error : (model.urgency === NotificationUrgency.Low) ? Colors.textSecondary : Colors.accentPrimary
|
color: (model.urgency === NotificationUrgency.Critical) ? Colors.colorError : (model.urgency === NotificationUrgency.Low) ? Colors.colorOnSurface : Colors.colorPrimary
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
}
|
}
|
||||||
Item {
|
Item {
|
||||||
|
|
@ -157,7 +148,7 @@ PanelWindow {
|
||||||
}
|
}
|
||||||
NText {
|
NText {
|
||||||
text: notificationService.formatTimestamp(model.timestamp)
|
text: notificationService.formatTimestamp(model.timestamp)
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -166,7 +157,7 @@ PanelWindow {
|
||||||
text: model.summary || "No summary"
|
text: model.summary || "No summary"
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.Wrap
|
wrapMode: Text.Wrap
|
||||||
width: 300 * scaling
|
width: 300 * scaling
|
||||||
maximumLineCount: 3
|
maximumLineCount: 3
|
||||||
|
|
@ -176,7 +167,7 @@ PanelWindow {
|
||||||
NText {
|
NText {
|
||||||
text: model.body || ""
|
text: model.body || ""
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.Wrap
|
wrapMode: Text.Wrap
|
||||||
width: 300 * scaling
|
width: 300 * scaling
|
||||||
maximumLineCount: 5
|
maximumLineCount: 5
|
||||||
|
|
|
||||||
|
|
@ -65,9 +65,9 @@ NLoader {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: notificationRect
|
id: notificationRect
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.backgroundTertiary
|
border.color: Colors.colorSurfaceVariant
|
||||||
border.width: Math.max(1, Style.borderMedium * scaling)
|
border.width: Math.max(1, Style.borderMedium * scaling)
|
||||||
width: 400 * scaling
|
width: 400 * scaling
|
||||||
height: 500 * scaling
|
height: 500 * scaling
|
||||||
|
|
@ -117,14 +117,14 @@ NLoader {
|
||||||
text: "notifications"
|
text: "notifications"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Notification History"
|
text: "Notification History"
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
font.bold: true
|
font.bold: true
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -159,7 +159,7 @@ NLoader {
|
||||||
width: notificationList ? (notificationList.width - 20) : 380 * scaling
|
width: notificationList ? (notificationList.width - 20) : 380 * scaling
|
||||||
height: Math.max(80, notificationContent.height + 30)
|
height: Math.max(80, notificationContent.height + 30)
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: notificationMouseArea.containsMouse ? Colors.accentPrimary : "transparent"
|
color: notificationMouseArea.containsMouse ? Colors.colorPrimary : "transparent"
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
anchors {
|
anchors {
|
||||||
|
|
@ -179,7 +179,7 @@ NLoader {
|
||||||
text: (summary || "No summary").substring(0, 100)
|
text: (summary || "No summary").substring(0, 100)
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Font.Medium
|
font.weight: Font.Medium
|
||||||
color: notificationMouseArea.containsMouse ? Colors.backgroundPrimary : Colors.textPrimary
|
color: notificationMouseArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface
|
||||||
wrapMode: Text.Wrap
|
wrapMode: Text.Wrap
|
||||||
width: parent.width - 30
|
width: parent.width - 30
|
||||||
maximumLineCount: 2
|
maximumLineCount: 2
|
||||||
|
|
@ -189,7 +189,7 @@ NLoader {
|
||||||
NText {
|
NText {
|
||||||
text: (body || "").substring(0, 150)
|
text: (body || "").substring(0, 150)
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: notificationMouseArea.containsMouse ? Colors.backgroundPrimary : Colors.textSecondary
|
color: notificationMouseArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface
|
||||||
wrapMode: Text.Wrap
|
wrapMode: Text.Wrap
|
||||||
width: parent.width - 30
|
width: parent.width - 30
|
||||||
maximumLineCount: 3
|
maximumLineCount: 3
|
||||||
|
|
@ -199,7 +199,7 @@ NLoader {
|
||||||
NText {
|
NText {
|
||||||
text: NotificationService.formatTimestamp(timestamp)
|
text: NotificationService.formatTimestamp(timestamp)
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: notificationMouseArea.containsMouse ? Colors.backgroundPrimary : Colors.textSecondary
|
color: notificationMouseArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -158,9 +158,9 @@ NLoader {
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: bgRect
|
id: bgRect
|
||||||
color: Colors.backgroundPrimary
|
color: Colors.colorSurface
|
||||||
radius: Style.radiusLarge * scaling
|
radius: Style.radiusLarge * scaling
|
||||||
border.color: Colors.backgroundTertiary
|
border.color: Colors.colorOutlineVariant
|
||||||
border.width: Math.max(1, Style.borderMedium * scaling)
|
border.width: Math.max(1, Style.borderMedium * scaling)
|
||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
width: (screen.width * 0.5) * scaling
|
width: (screen.width * 0.5) * scaling
|
||||||
|
|
@ -209,10 +209,10 @@ NLoader {
|
||||||
id: sidebar
|
id: sidebar
|
||||||
Layout.preferredWidth: 260 * scaling
|
Layout.preferredWidth: 260 * scaling
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
radius: Style.radiusMedium * scaling
|
color: Colors.colorSurfaceVariant
|
||||||
color: Colors.backgroundSecondary
|
border.color: Colors.colorOutlineVariant
|
||||||
border.color: Colors.outline
|
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
|
radius: Style.radiusMedium * scaling
|
||||||
|
|
||||||
Column {
|
Column {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -229,7 +229,7 @@ NLoader {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: 32 * scaling // Back to original height
|
height: 32 * scaling // Back to original height
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: selected ? Colors.accentPrimary : (tabItem.hovering ? Colors.hover : "transparent")
|
color: selected ? Colors.colorPrimary : (tabItem.hovering ? Colors.colorTertiary : "transparent")
|
||||||
border.color: "transparent"
|
border.color: "transparent"
|
||||||
border.width: 0
|
border.width: 0
|
||||||
|
|
||||||
|
|
@ -238,24 +238,28 @@ NLoader {
|
||||||
// Subtle hover effect: only icon/text color tint on hover
|
// Subtle hover effect: only icon/text color tint on hover
|
||||||
property bool hovering: false
|
property bool hovering: false
|
||||||
|
|
||||||
|
property color tabTextColor: selected ? Colors.colorOnPrimary : (tabItem.hovering ? Colors.colorOnTertiary : Colors.colorOnSurface)
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.leftMargin: Style.marginSmall * scaling
|
anchors.leftMargin: Style.marginSmall * scaling
|
||||||
anchors.rightMargin: Style.marginSmall * scaling
|
anchors.rightMargin: Style.marginSmall * scaling
|
||||||
spacing: Style.marginSmall * scaling
|
spacing: Style.marginSmall * scaling
|
||||||
|
// Tab icon on the left side
|
||||||
NText {
|
NText {
|
||||||
text: modelData.icon
|
text: modelData.icon
|
||||||
|
color: tabTextColor
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.variableAxes: {
|
font.variableAxes: {
|
||||||
"wght": (Font.Normal + Font.Bold) / 2.0
|
"wght": (Font.Normal + Font.Bold) / 2.0
|
||||||
}
|
}
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
color: selected ? Colors.onAccent : (tabItem.hovering ? Colors.onAccent : Colors.textSecondary)
|
|
||||||
}
|
}
|
||||||
// Tab label on the left side
|
// Tab label on the left side
|
||||||
NText {
|
NText {
|
||||||
text: modelData.label
|
text: modelData.label
|
||||||
color: selected ? Colors.onAccent : (tabItem.hovering ? Colors.onAccent : Colors.textPrimary)
|
color: tabTextColor
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -281,8 +285,8 @@ NLoader {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurfaceVariant
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutlineVariant
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
|
|
@ -302,7 +306,7 @@ NLoader {
|
||||||
text: panel.tabsModel[currentTabIndex].label
|
text: panel.tabsModel[currentTabIndex].label
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
NIconButton {
|
NIconButton {
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ ColumnLayout {
|
||||||
text: "Noctalia: quiet by design"
|
text: "Noctalia: quiet by design"
|
||||||
font.pointSize: Style.fontSizeXXL * scaling
|
font.pointSize: Style.fontSizeXXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.alignment: Qt.AlignCenter
|
Layout.alignment: Qt.AlignCenter
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -67,7 +67,7 @@ ColumnLayout {
|
||||||
NText {
|
NText {
|
||||||
text: "It may just be another quickshell setup but it won't get in your way."
|
text: "It may just be another quickshell setup but it won't get in your way."
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
Layout.alignment: Qt.AlignCenter
|
Layout.alignment: Qt.AlignCenter
|
||||||
Layout.bottomMargin: Style.marginLarge * scaling
|
Layout.bottomMargin: Style.marginLarge * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -80,25 +80,25 @@ ColumnLayout {
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Latest Version:"
|
text: "Latest Version:"
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: root.latestVersion
|
text: root.latestVersion
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Installed Version:"
|
text: "Installed Version:"
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
Layout.alignment: Qt.AlignRight
|
Layout.alignment: Qt.AlignRight
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: root.currentVersion
|
text: root.currentVersion
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -109,8 +109,8 @@ ColumnLayout {
|
||||||
Layout.preferredWidth: updateText.implicitWidth + 46 * scaling
|
Layout.preferredWidth: updateText.implicitWidth + 46 * scaling
|
||||||
Layout.preferredHeight: 32 * scaling
|
Layout.preferredHeight: 32 * scaling
|
||||||
radius: Style.radiusLarge * scaling
|
radius: Style.radiusLarge * scaling
|
||||||
color: updateArea.containsMouse ? Colors.accentPrimary : "transparent"
|
color: updateArea.containsMouse ? Colors.colorPrimary : "transparent"
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: 1
|
border.width: 1
|
||||||
visible: {
|
visible: {
|
||||||
if (root.currentVersion === "Unknown" || root.latestVersion === "Unknown")
|
if (root.currentVersion === "Unknown" || root.latestVersion === "Unknown")
|
||||||
|
|
@ -138,14 +138,14 @@ ColumnLayout {
|
||||||
text: "system_update"
|
text: "system_update"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: 18 * scaling
|
font.pointSize: 18 * scaling
|
||||||
color: updateArea.containsMouse ? Colors.backgroundPrimary : Colors.accentPrimary
|
color: updateArea.containsMouse ? Colors.colorSurface : Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
id: updateText
|
id: updateText
|
||||||
text: "Download latest release"
|
text: "Download latest release"
|
||||||
font.pointSize: 14 * scaling
|
font.pointSize: 14 * scaling
|
||||||
color: updateArea.containsMouse ? Colors.backgroundPrimary : Colors.accentPrimary
|
color: updateArea.containsMouse ? Colors.colorSurface : Colors.colorPrimary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -171,7 +171,7 @@ ColumnLayout {
|
||||||
text: `Shout-out to our ${root.contributors.length} awesome contributors!`
|
text: `Shout-out to our ${root.contributors.length} awesome contributors!`
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
Layout.alignment: Qt.AlignCenter
|
Layout.alignment: Qt.AlignCenter
|
||||||
Layout.topMargin: Style.marginLarge * 2
|
Layout.topMargin: Style.marginLarge * 2
|
||||||
}
|
}
|
||||||
|
|
@ -199,7 +199,7 @@ ColumnLayout {
|
||||||
width: contributorsGrid.cellWidth - Style.marginLarge * scaling
|
width: contributorsGrid.cellWidth - Style.marginLarge * scaling
|
||||||
height: contributorsGrid.cellHeight - Style.marginTiny * scaling
|
height: contributorsGrid.cellHeight - Style.marginTiny * scaling
|
||||||
radius: Style.radiusLarge * scaling
|
radius: Style.radiusLarge * scaling
|
||||||
color: contributorArea.containsMouse ? Colors.hover : "transparent"
|
color: contributorArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
|
|
||||||
RowLayout {
|
RowLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|
@ -216,7 +216,7 @@ ColumnLayout {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.margins: Style.marginTiny * scaling
|
anchors.margins: Style.marginTiny * scaling
|
||||||
fallbackIcon: "person"
|
fallbackIcon: "person"
|
||||||
borderColor: Colors.accentPrimary
|
borderColor: Colors.colorPrimary
|
||||||
borderWidth: Math.max(1, Style.borderMedium * scaling)
|
borderWidth: Math.max(1, Style.borderMedium * scaling)
|
||||||
imageRadius: width * 0.5
|
imageRadius: width * 0.5
|
||||||
}
|
}
|
||||||
|
|
@ -230,7 +230,7 @@ ColumnLayout {
|
||||||
NText {
|
NText {
|
||||||
text: modelData.login || "Unknown"
|
text: modelData.login || "Unknown"
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: contributorArea.containsMouse ? Colors.backgroundPrimary : Colors.textPrimary
|
color: contributorArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -239,7 +239,7 @@ ColumnLayout {
|
||||||
text: (modelData.contributions || 0) + " " + ((modelData.contributions
|
text: (modelData.contributions || 0) + " " + ((modelData.contributions
|
||||||
|| 0) === 1 ? "commit" : "commits")
|
|| 0) === 1 ? "commit" : "commits")
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: contributorArea.containsMouse ? Colors.backgroundPrimary : Colors.textSecondary
|
color: contributorArea.containsMouse ? Colors.colorSurface : Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -49,7 +49,7 @@ ColumnLayout {
|
||||||
text: "Audio"
|
text: "Audio"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -70,13 +70,13 @@ ColumnLayout {
|
||||||
NText {
|
NText {
|
||||||
text: "Master Volume"
|
text: "Master Volume"
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "System-wide volume level"
|
text: "System-wide volume level"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -110,7 +110,7 @@ ColumnLayout {
|
||||||
NText {
|
NText {
|
||||||
text: Math.floor(Audio.volume * 100) + "%"
|
text: Math.floor(Audio.volume * 100) + "%"
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -149,7 +149,7 @@ ColumnLayout {
|
||||||
text: "Audio Devices"
|
text: "Audio Devices"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -168,13 +168,13 @@ ColumnLayout {
|
||||||
text: "Output Device"
|
text: "Output Device"
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Select the desired audio output device"
|
text: "Select the desired audio output device"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -207,13 +207,13 @@ ColumnLayout {
|
||||||
text: "Input Device"
|
text: "Input Device"
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Select desired audio input device"
|
text: "Select desired audio input device"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -247,7 +247,7 @@ ColumnLayout {
|
||||||
text: "Audio Visualizer"
|
text: "Audio Visualizer"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ ColumnLayout {
|
||||||
text: "Components"
|
text: "Components"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NToggle {
|
NToggle {
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,7 @@ Item {
|
||||||
text: "Per‑monitor configuration"
|
text: "Per‑monitor configuration"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
|
|
@ -52,8 +52,8 @@ Item {
|
||||||
delegate: Rectangle {
|
delegate: Rectangle {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: Colors.surface
|
color: Colors.colorSurface
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
implicitHeight: contentCol.implicitHeight + Style.marginXL * 2 * scaling
|
implicitHeight: contentCol.implicitHeight + Style.marginXL * 2 * scaling
|
||||||
|
|
||||||
|
|
@ -67,13 +67,13 @@ Item {
|
||||||
text: (modelData.name || "Unknown")
|
text: (modelData.name || "Unknown")
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.accentSecondary
|
color: Colors.colorSecondary
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: `Resolution: ${modelData.width}x${modelData.height} - Position: (${modelData.x}, ${modelData.y})`
|
text: `Resolution: ${modelData.width}x${modelData.height} - Position: (${modelData.x}, ${modelData.y})`
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ ColumnLayout {
|
||||||
text: "General Settings"
|
text: "General Settings"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
// Profile section
|
// Profile section
|
||||||
|
|
@ -55,7 +55,7 @@ ColumnLayout {
|
||||||
height: 64 * scaling
|
height: 64 * scaling
|
||||||
imagePath: Settings.data.general.avatarImage
|
imagePath: Settings.data.general.avatarImage
|
||||||
fallbackIcon: "person"
|
fallbackIcon: "person"
|
||||||
borderColor: Colors.accentPrimary
|
borderColor: Colors.colorPrimary
|
||||||
borderWidth: Math.max(1, Style.borderMedium)
|
borderWidth: Math.max(1, Style.borderMedium)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,7 +87,7 @@ ColumnLayout {
|
||||||
text: "User Interface"
|
text: "User Interface"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ ColumnLayout {
|
||||||
text: "Miscellaneous Settings"
|
text: "Miscellaneous Settings"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ ColumnLayout {
|
||||||
text: "Interfaces"
|
text: "Interfaces"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NToggle {
|
NToggle {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ ColumnLayout {
|
||||||
text: "Recording"
|
text: "Recording"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,7 +87,7 @@ ColumnLayout {
|
||||||
text: "Video Settings"
|
text: "Video Settings"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -155,7 +155,7 @@ ColumnLayout {
|
||||||
text: "Audio Settings"
|
text: "Audio Settings"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ ColumnLayout {
|
||||||
text: "Location"
|
text: "Location"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,7 +73,7 @@ ColumnLayout {
|
||||||
text: "Time Format"
|
text: "Time Format"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: 8
|
Layout.bottomMargin: 8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -111,7 +111,7 @@ ColumnLayout {
|
||||||
text: "Weather"
|
text: "Weather"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ ColumnLayout {
|
||||||
text: "Directory"
|
text: "Directory"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -78,7 +78,7 @@ ColumnLayout {
|
||||||
text: "Automation"
|
text: "Automation"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: Style.marginSmall * scaling
|
Layout.bottomMargin: Style.marginSmall * scaling
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -111,13 +111,13 @@ ColumnLayout {
|
||||||
NText {
|
NText {
|
||||||
text: "Wallpaper Interval"
|
text: "Wallpaper Interval"
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "How often to change wallpapers automatically (in seconds)"
|
text: "How often to change wallpapers automatically (in seconds)"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -137,7 +137,7 @@ ColumnLayout {
|
||||||
stepSize: 10
|
stepSize: 10
|
||||||
value: Settings.data.wallpaper.randomInterval
|
value: Settings.data.wallpaper.randomInterval
|
||||||
onPressedChanged: Settings.data.wallpaper.randomInterval = Math.round(value)
|
onPressedChanged: Settings.data.wallpaper.randomInterval = Math.round(value)
|
||||||
cutoutColor: Colors.backgroundPrimary
|
cutoutColor: Colors.colorSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -158,7 +158,7 @@ ColumnLayout {
|
||||||
text: "SWWW"
|
text: "SWWW"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
Layout.bottomMargin: 8
|
Layout.bottomMargin: 8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -212,13 +212,13 @@ ColumnLayout {
|
||||||
NText {
|
NText {
|
||||||
text: "Transition FPS"
|
text: "Transition FPS"
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Frames per second for transition animations"
|
text: "Frames per second for transition animations"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -238,7 +238,7 @@ ColumnLayout {
|
||||||
stepSize: 5
|
stepSize: 5
|
||||||
value: Settings.data.wallpaper.swww.transitionFps
|
value: Settings.data.wallpaper.swww.transitionFps
|
||||||
onPressedChanged: Settings.data.wallpaper.swww.transitionFps = Math.round(value)
|
onPressedChanged: Settings.data.wallpaper.swww.transitionFps = Math.round(value)
|
||||||
cutoutColor: Colors.backgroundPrimary
|
cutoutColor: Colors.colorSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -251,13 +251,13 @@ ColumnLayout {
|
||||||
NText {
|
NText {
|
||||||
text: "Transition Duration"
|
text: "Transition Duration"
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Duration of transition animations in seconds"
|
text: "Duration of transition animations in seconds"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -277,7 +277,7 @@ ColumnLayout {
|
||||||
stepSize: 0.05
|
stepSize: 0.05
|
||||||
value: Settings.data.wallpaper.swww.transitionDuration
|
value: Settings.data.wallpaper.swww.transitionDuration
|
||||||
onPressedChanged: Settings.data.wallpaper.swww.transitionDuration = value
|
onPressedChanged: Settings.data.wallpaper.swww.transitionDuration = value
|
||||||
cutoutColor: Colors.backgroundPrimary
|
cutoutColor: Colors.colorSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,15 +32,15 @@ Item {
|
||||||
text: "Current Wallpaper"
|
text: "Current Wallpaper"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 120 * scaling
|
Layout.preferredHeight: 120 * scaling
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
|
|
@ -50,7 +50,7 @@ Item {
|
||||||
anchors.margins: Style.marginSmall * scaling
|
anchors.margins: Style.marginSmall * scaling
|
||||||
imagePath: Wallpapers.currentWallpaper
|
imagePath: Wallpapers.currentWallpaper
|
||||||
fallbackIcon: "image"
|
fallbackIcon: "image"
|
||||||
borderColor: Colors.outline
|
borderColor: Colors.colorOutline
|
||||||
borderWidth: Math.max(1, Style.borderThin * scaling)
|
borderWidth: Math.max(1, Style.borderThin * scaling)
|
||||||
imageRadius: Style.radiusMedium * scaling
|
imageRadius: Style.radiusMedium * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -73,12 +73,12 @@ Item {
|
||||||
text: "Wallpaper Selector"
|
text: "Wallpaper Selector"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Click on a wallpaper to set it as your current wallpaper"
|
text: "Click on a wallpaper to set it as your current wallpaper"
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -86,7 +86,7 @@ Item {
|
||||||
NText {
|
NText {
|
||||||
text: Settings.data.wallpaper.swww.enabled ? "Wallpapers will change with " + Settings.data.wallpaper.swww.transitionType
|
text: Settings.data.wallpaper.swww.enabled ? "Wallpapers will change with " + Settings.data.wallpaper.swww.transitionType
|
||||||
+ " transition" : "Wallpapers will change instantly"
|
+ " transition" : "Wallpapers will change instantly"
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
visible: Settings.data.wallpaper.swww.enabled
|
visible: Settings.data.wallpaper.swww.enabled
|
||||||
}
|
}
|
||||||
|
|
@ -147,8 +147,8 @@ Item {
|
||||||
width: wallpaperGridView.itemSize
|
width: wallpaperGridView.itemSize
|
||||||
height: Math.floor(wallpaperGridView.itemSize * 0.67)
|
height: Math.floor(wallpaperGridView.itemSize * 0.67)
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: isSelected ? Colors.accentPrimary : Colors.backgroundSecondary
|
color: isSelected ? Colors.colorPrimary : Colors.colorSurface
|
||||||
border.color: isSelected ? Colors.accentSecondary : Colors.outline
|
border.color: isSelected ? Colors.colorSecondary : Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
|
|
@ -170,8 +170,8 @@ Item {
|
||||||
width: 20 * scaling
|
width: 20 * scaling
|
||||||
height: 20 * scaling
|
height: 20 * scaling
|
||||||
radius: width / 2
|
radius: width / 2
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
border.color: Colors.onAccent
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
visible: isSelected
|
visible: isSelected
|
||||||
|
|
||||||
|
|
@ -180,14 +180,14 @@ Item {
|
||||||
text: "check"
|
text: "check"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.onAccent
|
color: Colors.colorOnPrimary
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hover effect
|
// Hover effect
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
opacity: mouseArea.containsMouse ? 0.1 : 0
|
opacity: mouseArea.containsMouse ? 0.1 : 0
|
||||||
radius: parent.radius
|
radius: parent.radius
|
||||||
|
|
||||||
|
|
@ -213,9 +213,9 @@ Item {
|
||||||
// Empty state
|
// Empty state
|
||||||
Rectangle {
|
Rectangle {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
visible: folderModel.count === 0 && !Wallpapers.scanning
|
visible: folderModel.count === 0 && !Wallpapers.scanning
|
||||||
|
|
||||||
|
|
@ -227,20 +227,20 @@ Item {
|
||||||
text: "folder_open"
|
text: "folder_open"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeLarge * scaling
|
font.pointSize: Style.fontSizeLarge * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "No wallpapers found"
|
text: "No wallpapers found"
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: "Make sure your wallpaper directory is configured and contains image files"
|
text: "Make sure your wallpaper directory is configured and contains image files"
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
Layout.preferredWidth: 300 * scaling
|
Layout.preferredWidth: 300 * scaling
|
||||||
|
|
|
||||||
|
|
@ -39,13 +39,13 @@ NBox {
|
||||||
NText {
|
NText {
|
||||||
text: "album"
|
text: "album"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: 28 * scaling
|
font.pointSize: Style.fontSizeXXL * 2.5 * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurfaceVariant
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
}
|
}
|
||||||
NText {
|
NText {
|
||||||
text: "No media player detected"
|
text: "No media player detected"
|
||||||
color: Colors.textDisabled
|
color: Colors.colorOnSurfaceVariant
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -76,7 +76,7 @@ NBox {
|
||||||
// implicitWidth: 120 * scaling
|
// implicitWidth: 120 * scaling
|
||||||
// implicitHeight: 30 * scaling
|
// implicitHeight: 30 * scaling
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: playerSelector.activeFocus ? Colors.hover : Colors.outline
|
border.color: playerSelector.activeFocus ? Colors.colorTertiary : Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -87,7 +87,7 @@ NBox {
|
||||||
rightPadding: playerSelector.indicator.width + playerSelector.spacing
|
rightPadding: playerSelector.indicator.width + playerSelector.spacing
|
||||||
text: playerSelector.displayText
|
text: playerSelector.displayText
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
}
|
}
|
||||||
|
|
@ -98,7 +98,7 @@ NBox {
|
||||||
text: "arrow_drop_down"
|
text: "arrow_drop_down"
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignRight
|
horizontalAlignment: Text.AlignRight
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -122,14 +122,14 @@ NBox {
|
||||||
gradient: Gradient {
|
gradient: Gradient {
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 0.0
|
position: 0.0
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
}
|
}
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 1.0
|
position: 1.0
|
||||||
color: Colors.backgroundTertiary
|
color: Colors.colorSurfaceVariant
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
radius: Style.radiusTiny * scaling
|
radius: Style.radiusTiny * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -140,7 +140,7 @@ NBox {
|
||||||
contentItem: NText {
|
contentItem: NText {
|
||||||
text: modelData.identity
|
text: modelData.identity
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: highlighted ? Colors.backgroundPrimary : Colors.textPrimary
|
color: highlighted ? Colors.colorSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
}
|
}
|
||||||
|
|
@ -148,7 +148,7 @@ NBox {
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
width: popup.width - Style.marginSmall * scaling * 2
|
width: popup.width - Style.marginSmall * scaling * 2
|
||||||
color: highlighted ? Colors.hover : "transparent"
|
color: highlighted ? Colors.colorTertiary : "transparent"
|
||||||
radius: Style.radiusTiny * scaling
|
radius: Style.radiusTiny * scaling
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -169,8 +169,8 @@ NBox {
|
||||||
width: 90 * scaling
|
width: 90 * scaling
|
||||||
height: 90 * scaling
|
height: 90 * scaling
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: trackArt.visible ? Colors.accentPrimary : "transparent"
|
color: trackArt.visible ? Colors.colorPrimary : "transparent"
|
||||||
border.color: trackArt.visible ? Colors.outline : "transparent"
|
border.color: trackArt.visible ? Colors.colorOutline : "transparent"
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
|
|
@ -182,7 +182,7 @@ NBox {
|
||||||
anchors.margins: Style.marginTiny * scaling
|
anchors.margins: Style.marginTiny * scaling
|
||||||
imagePath: MediaPlayer.trackArtUrl
|
imagePath: MediaPlayer.trackArtUrl
|
||||||
fallbackIcon: "image"
|
fallbackIcon: "image"
|
||||||
borderColor: Colors.outline
|
borderColor: Colors.colorOutline
|
||||||
borderWidth: Math.max(1, Style.borderThin * scaling)
|
borderWidth: Math.max(1, Style.borderThin * scaling)
|
||||||
imageRadius: width * 0.5
|
imageRadius: width * 0.5
|
||||||
}
|
}
|
||||||
|
|
@ -217,7 +217,7 @@ NBox {
|
||||||
NText {
|
NText {
|
||||||
visible: MediaPlayer.trackArtist !== ""
|
visible: MediaPlayer.trackArtist !== ""
|
||||||
text: MediaPlayer.trackArtist
|
text: MediaPlayer.trackArtist
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -226,7 +226,7 @@ NBox {
|
||||||
NText {
|
NText {
|
||||||
visible: MediaPlayer.trackAlbum !== ""
|
visible: MediaPlayer.trackAlbum !== ""
|
||||||
text: MediaPlayer.trackAlbum
|
text: MediaPlayer.trackAlbum
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
@ -241,7 +241,7 @@ NBox {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: 4 * scaling
|
height: 4 * scaling
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: Colors.backgroundTertiary
|
color: Colors.colorSurfaceVariant
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
property real progressRatio: {
|
property real progressRatio: {
|
||||||
|
|
@ -256,7 +256,7 @@ NBox {
|
||||||
width: progressBarBackground.progressRatio * parent.width
|
width: progressBarBackground.progressRatio * parent.width
|
||||||
height: parent.height
|
height: parent.height
|
||||||
radius: parent.radius
|
radius: parent.radius
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
|
|
||||||
Behavior on width {
|
Behavior on width {
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
|
|
@ -271,8 +271,8 @@ NBox {
|
||||||
width: 16 * scaling
|
width: 16 * scaling
|
||||||
height: 16 * scaling
|
height: 16 * scaling
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
border.color: Colors.backgroundPrimary
|
border.color: Colors.colorSurface
|
||||||
border.width: Math.max(1 * Style.borderMedium * scaling)
|
border.width: Math.max(1 * Style.borderMedium * scaling)
|
||||||
|
|
||||||
x: Math.max(0, Math.min(parent.width - width, progressFill.width - width / 2))
|
x: Math.max(0, Math.min(parent.width - width, progressFill.width - width / 2))
|
||||||
|
|
@ -345,7 +345,7 @@ NBox {
|
||||||
width: 300 * scaling
|
width: 300 * scaling
|
||||||
height: 80 * scaling
|
height: 80 * scaling
|
||||||
values: Cava.values
|
values: Cava.values
|
||||||
fillColor: Colors.textPrimary
|
fillColor: Colors.colorOnSurface
|
||||||
Layout.alignment: Qt.AlignHCenter
|
Layout.alignment: Qt.AlignHCenter
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -355,8 +355,8 @@ NBox {
|
||||||
// values: Cava.values
|
// values: Cava.values
|
||||||
// innerRadius: 30 * scaling // Position just outside 60x60 album art
|
// innerRadius: 30 * scaling // Position just outside 60x60 album art
|
||||||
// outerRadius: 48 * scaling // Extend bars outward from album art
|
// outerRadius: 48 * scaling // Extend bars outward from album art
|
||||||
// fillColor: Colors.accentPrimary
|
// fillColor: Colors.colorPrimary
|
||||||
// strokeColor: Colors.accentPrimary
|
// strokeColor: Colors.colorPrimary
|
||||||
// strokeWidth: 0 * scaling
|
// strokeWidth: 0 * scaling
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ NBox {
|
||||||
height: Style.baseWidgetSize * 1.25 * scaling
|
height: Style.baseWidgetSize * 1.25 * scaling
|
||||||
imagePath: Settings.data.general.avatarImage
|
imagePath: Settings.data.general.avatarImage
|
||||||
fallbackIcon: "person"
|
fallbackIcon: "person"
|
||||||
borderColor: Colors.accentPrimary
|
borderColor: Colors.colorPrimary
|
||||||
borderWidth: Math.max(1, Style.borderMedium * scaling)
|
borderWidth: Math.max(1, Style.borderMedium * scaling)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -46,7 +46,7 @@ NBox {
|
||||||
}
|
}
|
||||||
NText {
|
NText {
|
||||||
text: `System Uptime: ${uptimeText}`
|
text: `System Uptime: ${uptimeText}`
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ NBox {
|
||||||
text: weatherReady ? Location.weatherSymbolFromCode(Location.data.weather.current_weather.weathercode) : ""
|
text: weatherReady ? Location.weatherSymbolFromCode(Location.data.weather.current_weather.weathercode) : ""
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeXXL * 1.5 * scaling
|
font.pointSize: Style.fontSizeXXL * 1.5 * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
|
|
@ -91,13 +91,13 @@ NBox {
|
||||||
spacing: Style.marginSmall * scaling
|
spacing: Style.marginSmall * scaling
|
||||||
NText {
|
NText {
|
||||||
text: Qt.formatDateTime(new Date(Location.data.weather.daily.time[index]), "ddd")
|
text: Qt.formatDateTime(new Date(Location.data.weather.daily.time[index]), "ddd")
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
NText {
|
NText {
|
||||||
text: Location.weatherSymbolFromCode(Location.data.weather.daily.weathercode[index])
|
text: Location.weatherSymbolFromCode(Location.data.weather.daily.weathercode[index])
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeXL * scaling
|
font.pointSize: Style.fontSizeXL * scaling
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
}
|
}
|
||||||
NText {
|
NText {
|
||||||
text: {
|
text: {
|
||||||
|
|
@ -112,7 +112,7 @@ NBox {
|
||||||
return `${max}°/${min}°`
|
return `${max}°/${min}°`
|
||||||
}
|
}
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurfaceVariant
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -25,16 +25,16 @@ NPanel {
|
||||||
width: 160 * scaling
|
width: 160 * scaling
|
||||||
height: 220 * scaling
|
height: 220 * scaling
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
gradient: Gradient {
|
gradient: Gradient {
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 0.0
|
position: 0.0
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
}
|
}
|
||||||
GradientStop {
|
GradientStop {
|
||||||
position: 1.0
|
position: 1.0
|
||||||
color: Colors.backgroundTertiary
|
color: Colors.colorSurfaceVariant
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -65,7 +65,7 @@ NPanel {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 36 * scaling
|
Layout.preferredHeight: 36 * scaling
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: lockButtonArea.containsMouse ? Colors.hover : "transparent"
|
color: lockButtonArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
@ -88,7 +88,7 @@ NPanel {
|
||||||
font.variableAxes: {
|
font.variableAxes: {
|
||||||
"wght": (Font.Normal + Font.Bold) / 2.0
|
"wght": (Font.Normal + Font.Bold) / 2.0
|
||||||
}
|
}
|
||||||
color: lockButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: lockButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -96,7 +96,7 @@ NPanel {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "Lock Screen"
|
text: "Lock Screen"
|
||||||
color: lockButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: lockButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -125,7 +125,7 @@ NPanel {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 36 * scaling
|
Layout.preferredHeight: 36 * scaling
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: suspendButtonArea.containsMouse ? Colors.hover : "transparent"
|
color: suspendButtonArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
@ -148,7 +148,7 @@ NPanel {
|
||||||
font.variableAxes: {
|
font.variableAxes: {
|
||||||
"wght": (Font.Normal + Font.Bold) / 2.0
|
"wght": (Font.Normal + Font.Bold) / 2.0
|
||||||
}
|
}
|
||||||
color: suspendButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: suspendButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -156,7 +156,7 @@ NPanel {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "Suspend"
|
text: "Suspend"
|
||||||
color: suspendButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: suspendButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -183,7 +183,7 @@ NPanel {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 36 * scaling
|
Layout.preferredHeight: 36 * scaling
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: rebootButtonArea.containsMouse ? Colors.hover : "transparent"
|
color: rebootButtonArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
@ -206,7 +206,7 @@ NPanel {
|
||||||
font.variableAxes: {
|
font.variableAxes: {
|
||||||
"wght": (Font.Normal + Font.Bold) / 2.0
|
"wght": (Font.Normal + Font.Bold) / 2.0
|
||||||
}
|
}
|
||||||
color: rebootButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: rebootButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -214,7 +214,7 @@ NPanel {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "Reboot"
|
text: "Reboot"
|
||||||
color: rebootButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: rebootButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -241,7 +241,7 @@ NPanel {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 36 * scaling
|
Layout.preferredHeight: 36 * scaling
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: logoutButtonArea.containsMouse ? Colors.hover : "transparent"
|
color: logoutButtonArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
@ -264,7 +264,7 @@ NPanel {
|
||||||
font.variableAxes: {
|
font.variableAxes: {
|
||||||
"wght": (Font.Normal + Font.Bold) / 2.0
|
"wght": (Font.Normal + Font.Bold) / 2.0
|
||||||
}
|
}
|
||||||
color: logoutButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: logoutButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -272,7 +272,7 @@ NPanel {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "Logout"
|
text: "Logout"
|
||||||
color: logoutButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: logoutButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -299,7 +299,7 @@ NPanel {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.preferredHeight: 36 * scaling
|
Layout.preferredHeight: 36 * scaling
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
color: shutdownButtonArea.containsMouse ? Colors.hover : "transparent"
|
color: shutdownButtonArea.containsMouse ? Colors.colorTertiary : "transparent"
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
|
|
@ -322,7 +322,7 @@ NPanel {
|
||||||
font.variableAxes: {
|
font.variableAxes: {
|
||||||
"wght": (Font.Normal + Font.Bold) / 2.0
|
"wght": (Font.Normal + Font.Bold) / 2.0
|
||||||
}
|
}
|
||||||
color: shutdownButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: shutdownButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
@ -330,7 +330,7 @@ NPanel {
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
text: "Shutdown"
|
text: "Shutdown"
|
||||||
color: shutdownButtonArea.containsMouse ? Colors.textPrimary : Colors.textPrimary
|
color: shutdownButtonArea.containsMouse ? Colors.colorOnSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
anchors.verticalCenterOffset: 1 * scaling
|
anchors.verticalCenterOffset: 1 * scaling
|
||||||
|
|
|
||||||
|
|
@ -81,20 +81,9 @@ NLoader {
|
||||||
// Inline helpers moved to dedicated widgets: NCard and NCircleStat
|
// Inline helpers moved to dedicated widgets: NCard and NCircleStat
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: panelBackground
|
id: panelBackground
|
||||||
color: "transparent"
|
color: Colors.colorSurface
|
||||||
gradient: Gradient {
|
|
||||||
GradientStop {
|
|
||||||
position: 0.0
|
|
||||||
color: Colors.backgroundSecondary
|
|
||||||
}
|
|
||||||
GradientStop {
|
|
||||||
position: 1.0
|
|
||||||
color: Colors.backgroundTertiary
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
radius: Style.radiusLarge * scaling
|
radius: Style.radiusLarge * scaling
|
||||||
border.color: Colors.backgroundTertiary
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderMedium * scaling)
|
border.width: Math.max(1, Style.borderMedium * scaling)
|
||||||
layer.enabled: true
|
layer.enabled: true
|
||||||
width: 460 * scaling
|
width: 460 * scaling
|
||||||
|
|
|
||||||
|
|
@ -5,117 +5,162 @@ import Quickshell
|
||||||
import Quickshell.Io
|
import Quickshell.Io
|
||||||
import qs.Services
|
import qs.Services
|
||||||
|
|
||||||
|
// --------------------------------
|
||||||
|
// Material3 Colors
|
||||||
|
// We only use a subset of all materials colors to avoid complexity
|
||||||
Singleton {
|
Singleton {
|
||||||
id: root
|
id: root
|
||||||
|
|
||||||
// Backgrounds
|
// --- Key Colors
|
||||||
property color backgroundPrimary: useMatugen ? matugenTheme.backgroundPrimary : defaultTheme.backgroundPrimary
|
property color colorPrimary: useMatugen ? matugenTheme.colorPrimary : defaultTheme.colorPrimary
|
||||||
property color backgroundSecondary: useMatugen ? matugenTheme.backgroundSecondary : defaultTheme.backgroundSecondary
|
property color colorOnPrimary: useMatugen ? matugenTheme.colorOnPrimary : defaultTheme.colorOnPrimary
|
||||||
property color backgroundTertiary: useMatugen ? matugenTheme.backgroundTertiary : defaultTheme.backgroundTertiary
|
property color colorPrimaryContainer: useMatugen ? matugenTheme.colorPrimaryContainer : defaultTheme.colorPrimaryContainer
|
||||||
|
property color colorOnPrimaryContainer: useMatugen ? matugenTheme.colorOnPrimaryContainer : defaultTheme.colorOnPrimaryContainer
|
||||||
|
|
||||||
// Surfaces & Elevation
|
property color colorSecondary: useMatugen ? matugenTheme.colorSecondary : defaultTheme.colorSecondary
|
||||||
property color surface: useMatugen ? matugenTheme.surface : defaultTheme.surface
|
property color colorOnSecondary: useMatugen ? matugenTheme.colorOnSecondary : defaultTheme.colorOnSecondary
|
||||||
property color surfaceVariant: useMatugen ? matugenTheme.surfaceVariant : defaultTheme.surfaceVariant
|
property color colorSecondaryContainer: useMatugen ? matugenTheme.colorSecondaryContainer : defaultTheme.colorSecondaryContainer
|
||||||
|
property color colorOnSecondaryContainer: useMatugen ? matugenTheme.colorOnSecondaryContainer : defaultTheme.colorOnSecondaryContainer
|
||||||
|
|
||||||
// Text Colors
|
property color colorTertiary: useMatugen ? matugenTheme.colorTertiary : defaultTheme.colorTertiary
|
||||||
property color textPrimary: useMatugen ? matugenTheme.textPrimary : defaultTheme.textPrimary
|
property color colorOnTertiary: useMatugen ? matugenTheme.colorOnTertiary : defaultTheme.colorOnTertiary
|
||||||
property color textSecondary: useMatugen ? matugenTheme.textSecondary : defaultTheme.textSecondary
|
property color colorTertiaryContainer: useMatugen ? matugenTheme.colorTertiaryContainer : defaultTheme.colorTertiaryContainer
|
||||||
property color textDisabled: useMatugen ? matugenTheme.textDisabled : defaultTheme.textDisabled
|
property color colorOnTertiaryContainer: useMatugen ? matugenTheme.colorOnTertiaryContainer : defaultTheme.colorOnTertiaryContainer
|
||||||
|
|
||||||
// Accent Colors
|
// --- Utility Colors
|
||||||
property color accentPrimary: useMatugen ? matugenTheme.accentPrimary : defaultTheme.accentPrimary
|
property color colorError: useMatugen ? matugenTheme.colorError : defaultTheme.colorError
|
||||||
property color accentSecondary: useMatugen ? matugenTheme.accentSecondary : defaultTheme.accentSecondary
|
property color colorOnError: useMatugen ? matugenTheme.colorOnError : defaultTheme.colorOnError
|
||||||
property color accentTertiary: useMatugen ? matugenTheme.accentTertiary : defaultTheme.accentTertiary
|
property color colorErrorContainer: useMatugen ? matugenTheme.colorErrorContainer : defaultTheme.colorErrorContainer
|
||||||
|
property color colorOnErrorContainer: useMatugen ? matugenTheme.colorOnErrorContainer : defaultTheme.colorOnErrorContainer
|
||||||
|
|
||||||
// Error/Warning
|
// --- Surface and Variant Colors
|
||||||
property color error: useMatugen ? matugenTheme.error : defaultTheme.error
|
property color colorSurface: useMatugen ? matugenTheme.colorSurface : defaultTheme.colorSurface
|
||||||
property color warning: useMatugen ? matugenTheme.warning : defaultTheme.warning
|
property color colorOnSurface: useMatugen ? matugenTheme.colorOnSurface : defaultTheme.colorOnSurface
|
||||||
|
property color colorSurfaceVariant: useMatugen ? matugenTheme.colorSurfaceVariant : defaultTheme.colorSurfaceVariant
|
||||||
|
property color colorOnSurfaceVariant: useMatugen ? matugenTheme.colorOnSurfaceVariant : defaultTheme.colorOnSurfaceVariant
|
||||||
|
property color colorInversePrimary: useMatugen ? matugenTheme.colorInversePrimary : defaultTheme.colorInversePrimary
|
||||||
|
property color colorOutline: useMatugen ? matugenTheme.colorOutline : defaultTheme.colorOutline
|
||||||
|
property color colorOutlineVariant: useMatugen ? matugenTheme.colorOutlineVariant : defaultTheme.colorOutlineVariant
|
||||||
|
property color colorShadow: useMatugen ? matugenTheme.colorShadow : defaultTheme.colorShadow
|
||||||
|
|
||||||
// Hover
|
|
||||||
property color hover: useMatugen ? matugenTheme.hover : defaultTheme.hover
|
|
||||||
|
|
||||||
// Additional Theme Properties
|
|
||||||
property color onAccent: useMatugen ? matugenTheme.onAccent : defaultTheme.onAccent
|
|
||||||
property color outline: useMatugen ? matugenTheme.outline : defaultTheme.outline
|
|
||||||
|
|
||||||
// Shadows & Overlays
|
|
||||||
property color shadow: applyOpacity(useMatugen ? matugenTheme.shadow : defaultTheme.shadow, "B3")
|
|
||||||
property color overlay: applyOpacity(useMatugen ? matugenTheme.overlay : defaultTheme.overlay, "66")
|
|
||||||
|
|
||||||
|
// -----------
|
||||||
// Check if we should use Matugen theme
|
// Check if we should use Matugen theme
|
||||||
property bool useMatugen: Settings.data.wallpaper.generateTheme && matugenFile.loaded
|
property bool useMatugen: Settings.data.wallpaper.generateTheme && matugenFile.loaded
|
||||||
|
|
||||||
|
// -----------
|
||||||
function applyOpacity(color, opacity) {
|
function applyOpacity(color, opacity) {
|
||||||
// Convert color to string and apply opacity
|
// Convert color to string and apply opacity
|
||||||
return color.toString().replace("#", "#" + opacity)
|
return color.toString().replace("#", "#" + opacity)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Default theme colors
|
// --------------------------------
|
||||||
|
// Default theme colors - RosePine
|
||||||
QtObject {
|
QtObject {
|
||||||
id: defaultTheme
|
id: defaultTheme
|
||||||
|
|
||||||
property color backgroundPrimary: "#191724"
|
// // --- Key Colors: These are the main accent colors that define your app's theme.
|
||||||
property color backgroundSecondary: "#1f1d2e"
|
property color colorPrimary: "#000000" // The main brand color, used most frequently.
|
||||||
property color backgroundTertiary: "#26233a"
|
property color colorOnPrimary: "#000000" // Color for text/icons on a Primary background.
|
||||||
|
property color colorPrimaryContainer: "#000000" // A lighter/subtler tone of Primary, used for component backgrounds.
|
||||||
|
property color colorOnPrimaryContainer: "#000000" // Color for text/icons on a Primary Container background.
|
||||||
|
|
||||||
property color surface: "#1b1927"
|
property color colorSecondary: "#000000" // An accent color for less prominent components.
|
||||||
property color surfaceVariant: "#262337"
|
property color colorOnSecondary: "#000000" // Color for text/icons on a Secondary background.
|
||||||
|
property color colorSecondaryContainer: "#000000" // A lighter/subtler tone of Secondary.
|
||||||
|
property color colorOnSecondaryContainer: "#000000" // olor for text/icons on a Secondary Container background.
|
||||||
|
|
||||||
property color textPrimary: "#e0def4"
|
property color colorTertiary: "#000000" // A contrasting accent color used for things like highlights or special actions.
|
||||||
property color textSecondary: "#908caa"
|
property color colorOnTertiary: "#000000" // Color for text/icons on a Tertiary background.
|
||||||
property color textDisabled: "#6e6a86"
|
property color colorTertiaryContainer: "#000000" // A lighter/subtler tone of Tertiary.
|
||||||
|
property color colorOnTertiaryContainer: "#000000" // Color for text/icons on a Tertiary Container background.
|
||||||
|
|
||||||
property color accentPrimary: "#ebbcba"
|
// --- Utility colorColors: These colors serve specific, universal purposes like indicating errors or providing neutral backgrounds.
|
||||||
property color accentSecondary: "#31748f"
|
property color colorError: "#000000" // Indicates an error state.
|
||||||
property color accentTertiary: "#9ccfd8"
|
property color colorOnError: "#000000" // Color for text/icons on an Error background.
|
||||||
|
property color colorErrorContainer: "#000000" // A lighter/subtler tone of Error.
|
||||||
|
property color colorOnErrorContainer: "#000000" // Color for text/icons on an Error Container background.
|
||||||
|
|
||||||
property color error: "#eb6f92"
|
// --- Surface colorand Variant Colors: These provide additional options for surfaces and their contents, creating visual hierarchy.
|
||||||
property color warning: "#f6c177"
|
property color colorSurface: "#000000" // The color for component surfaces like cards, sheets, and menus.
|
||||||
|
property color colorOnSurface: "#000000" // The primary color for text/icons on a Surface background.
|
||||||
|
property color colorSurfaceVariant: "#000000" // A surface color with a slightly different tint for differentiation.
|
||||||
|
property color colorOnSurfaceVariant: "#000000" // The color for less prominent text/icons on a Surface.
|
||||||
|
property color colorInversePrimary: "#000000" // A primary color legible on an Inverse Surface, often used for call-to-action buttons.
|
||||||
|
property color colorOutline: "#000000" // The color for component outlines, like text fields or buttons.
|
||||||
|
property color colorOutlineVariant: "#000000" // A subtler outline color for decorative elements or dividers.
|
||||||
|
property color colorShadow: "#000000" // The color used for shadows to create elevation.
|
||||||
|
|
||||||
property color hover: "#c4a7e7"
|
|
||||||
|
|
||||||
property color onAccent: "#191724"
|
// // property color colorBackground: "#191724"
|
||||||
property color outline: "#44415a"
|
// // property color colorSurface: "#1f1d2e"
|
||||||
|
// // property color colorSurfaceVariant: "#26233a"
|
||||||
|
|
||||||
property color shadow: "#191724"
|
// // property color surface: "#1b1927"
|
||||||
property color overlay: "#191724"
|
// // property color surfaceVariant: "#262337"
|
||||||
|
|
||||||
|
// // property color colorOnBackground: "#e0def4"
|
||||||
|
// // property color textSecondary: "#908caa"
|
||||||
|
// // property color textDisabled: "#6e6a86"
|
||||||
|
|
||||||
|
// // property color colorPrimary: "#ebbcba"
|
||||||
|
// // property color accentSecondary: "#31748f"
|
||||||
|
// // property color accentTertiary: "#9ccfd8"
|
||||||
|
|
||||||
|
// // property color error: "#eb6f92"
|
||||||
|
// // property color warning: "#f6c177"
|
||||||
|
|
||||||
|
// // property color hover: "#c4a7e7"
|
||||||
|
|
||||||
|
// // property color onAccent: "#191724"
|
||||||
|
// // property color outline: "#44415a"
|
||||||
|
|
||||||
|
// // property color shadow: "#191724"
|
||||||
|
// // property color overlay: "#191724"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ----------------------------------------------------------------
|
||||||
// Matugen theme colors (loaded from theme.json)
|
// Matugen theme colors (loaded from theme.json)
|
||||||
QtObject {
|
QtObject {
|
||||||
id: matugenTheme
|
id: matugenTheme
|
||||||
|
|
||||||
property color backgroundPrimary: matugenData.backgroundPrimary
|
// --- Key Colors
|
||||||
property color backgroundSecondary: matugenData.backgroundSecondary
|
property color colorPrimary: matugenData.colorPrimary
|
||||||
property color backgroundTertiary: matugenData.backgroundTertiary
|
property color colorOnPrimary: matugenData.colorOnPrimary
|
||||||
|
property color colorPrimaryContainer: matugenData.colorPrimaryContainer
|
||||||
|
property color colorOnPrimaryContainer: matugenData.colorOnPrimaryContainer
|
||||||
|
|
||||||
property color surface: matugenData.surface
|
property color colorSecondary: matugenData.colorSecondary
|
||||||
property color surfaceVariant: matugenData.surfaceVariant
|
property color colorOnSecondary: matugenData.colorOnSecondary
|
||||||
|
property color colorSecondaryContainer: matugenData.colorSecondaryContainer
|
||||||
|
property color colorOnSecondaryContainer: matugenData.colorOnSecondaryContainer
|
||||||
|
|
||||||
property color textPrimary: matugenData.textPrimary
|
property color colorTertiary: matugenData.colorTertiary
|
||||||
property color textSecondary: matugenData.textSecondary
|
property color colorOnTertiary: matugenData.colorOnTertiary
|
||||||
property color textDisabled: matugenData.textDisabled
|
property color colorTertiaryContainer: matugenData.colorTertiaryContainer
|
||||||
|
property color colorOnTertiaryContainer: matugenData.colorOnTertiaryContainer
|
||||||
|
|
||||||
property color accentPrimary: matugenData.accentPrimary
|
// --- Utility Colors
|
||||||
property color accentSecondary: matugenData.accentSecondary
|
property color colorError: matugenData.colorError
|
||||||
property color accentTertiary: matugenData.accentTertiary
|
property color colorOnError: matugenData.colorOnError
|
||||||
|
property color colorErrorContainer: matugenData.colorErrorContainer
|
||||||
|
property color colorOnErrorContainer: matugenData.colorOnErrorContainer
|
||||||
|
|
||||||
property color error: matugenData.error
|
// --- Surface and Variant Colors
|
||||||
property color warning: matugenData.warning
|
property color colorSurface: matugenData.colorSurface
|
||||||
|
property color colorOnSurface: matugenData.colorOnSurface
|
||||||
property color hover: matugenData.hover
|
property color colorSurfaceVariant: matugenData.colorSurfaceVariant
|
||||||
|
property color colorOnSurfaceVariant: matugenData.colorOnSurfaceVariant
|
||||||
property color onAccent: matugenData.onAccent
|
property color colorInversePrimary: matugenData.colorInversePrimary
|
||||||
property color outline: matugenData.outline
|
property color colorOutline: matugenData.colorOutline
|
||||||
|
property color colorOutlineVariant: matugenData.colorOutlineVariant
|
||||||
property color shadow: matugenData.shadow
|
property color colorShadow: matugenData.colorShadow
|
||||||
property color overlay: matugenData.overlay
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// FileView to load Matugen theme data from Theme.json
|
// FileView to load Matugen theme data from colors.json
|
||||||
FileView {
|
FileView {
|
||||||
id: matugenFile
|
id: matugenFile
|
||||||
path: Settings.configDir + "theme.json"
|
path: Settings.configDir + "colors.json"
|
||||||
watchChanges: true
|
watchChanges: true
|
||||||
onFileChanged: reload()
|
onFileChanged: reload()
|
||||||
onAdapterUpdated: writeAdapter()
|
onAdapterUpdated: writeAdapter()
|
||||||
|
|
@ -128,39 +173,37 @@ Singleton {
|
||||||
JsonAdapter {
|
JsonAdapter {
|
||||||
id: matugenData
|
id: matugenData
|
||||||
|
|
||||||
// Backgrounds
|
// --- Key Colors
|
||||||
property string backgroundPrimary: "#191724"
|
property color colorPrimary: defaultTheme.colorPrimary
|
||||||
property string backgroundSecondary: "#1f1d2e"
|
property color colorOnPrimary: defaultTheme.colorOnPrimary
|
||||||
property string backgroundTertiary: "#26233a"
|
property color colorPrimaryContainer: defaultTheme.colorPrimaryContainer
|
||||||
|
property color colorOnPrimaryContainer: defaultTheme.colorOnPrimaryContainer
|
||||||
|
|
||||||
// Surfaces & Elevation
|
property color colorSecondary: defaultTheme.colorSecondary
|
||||||
property string surface: "#1b1927"
|
property color colorOnSecondary: defaultTheme.colorOnSecondary
|
||||||
property string surfaceVariant: "#262337"
|
property color colorSecondaryContainer: defaultTheme.colorSecondaryContainer
|
||||||
|
property color colorOnSecondaryContainer: defaultTheme.colorOnSecondaryContainer
|
||||||
|
|
||||||
// Text Colors
|
property color colorTertiary: defaultTheme.colorTertiary
|
||||||
property string textPrimary: "#e0def4"
|
property color colorOnTertiary: defaultTheme.colorOnTertiary
|
||||||
property string textSecondary: "#908caa"
|
property color colorTertiaryContainer: defaultTheme.colorTertiaryContainer
|
||||||
property string textDisabled: "#6e6a86"
|
property color colorOnTertiaryContainer: defaultTheme.colorOnTertiaryContainer
|
||||||
|
|
||||||
// Accent Colors
|
// --- Utility Colors
|
||||||
property string accentPrimary: "#ebbcba"
|
property color colorError: defaultTheme.colorError
|
||||||
property string accentSecondary: "#31748f"
|
property color colorOnError: defaultTheme.colorOnError
|
||||||
property string accentTertiary: "#9ccfd8"
|
property color colorErrorContainer: defaultTheme.colorErrorContainer
|
||||||
|
property color colorOnErrorContainer: defaultTheme.colorOnErrorContainer
|
||||||
|
|
||||||
// Error/Warning
|
// --- Surface and Variant Colors
|
||||||
property string error: "#eb6f92"
|
property color colorSurface: defaultTheme.colorSurface
|
||||||
property string warning: "#f6c177"
|
property color colorOnSurface: defaultTheme.colorOnSurface
|
||||||
|
property color colorSurfaceVariant: defaultTheme.colorSurfaceVariant
|
||||||
// Hover
|
property color colorOnSurfaceVariant: defaultTheme.colorOnSurfaceVariant
|
||||||
property string hover: "#c4a7e7"
|
property color colorInversePrimary: defaultTheme.colorInversePrimary
|
||||||
|
property color colorOutline: defaultTheme.colorOutline
|
||||||
// Additional Theme Properties
|
property color colorOutlineVariant: defaultTheme.colorOutlineVariant
|
||||||
property string onAccent: "#191724"
|
property color colorShadow: defaultTheme.colorShadow
|
||||||
property string outline: "#44415a"
|
|
||||||
|
|
||||||
// Shadows & Overlays
|
|
||||||
property string shadow: "#191724"
|
|
||||||
property string overlay: "#191724"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ Singleton {
|
||||||
"HOME") + "/.cache") + "/" + shellName + "/"
|
"HOME") + "/.cache") + "/" + shellName + "/"
|
||||||
|
|
||||||
property string settingsFile: Quickshell.env("NOCTALIA_SETTINGS_FILE") || (configDir + "settings.json")
|
property string settingsFile: Quickshell.env("NOCTALIA_SETTINGS_FILE") || (configDir + "settings.json")
|
||||||
property string colorsFile: Quickshell.env("NOCTALIA_COLORS_FILE") || (configDir + "colors.json")
|
|
||||||
|
|
||||||
property string defaultWallpaper: Qt.resolvedUrl("../Assets/Tests/wallpaper.png")
|
property string defaultWallpaper: Qt.resolvedUrl("../Assets/Tests/wallpaper.png")
|
||||||
property string defaultAvatar: Quickshell.env("HOME") + "/.face"
|
property string defaultAvatar: Quickshell.env("HOME") + "/.face"
|
||||||
|
|
|
||||||
|
|
@ -155,13 +155,12 @@ Singleton {
|
||||||
|
|
||||||
Process {
|
Process {
|
||||||
id: generateThemeProcess
|
id: generateThemeProcess
|
||||||
command: [Quickshell.shellDir + "/Bin/matugen-theme.sh", currentWallpaper]
|
command: ["matugen", "image", currentWallpaper, "--config", Quickshell.shellDir + "/Assets/Matugen/matugen.toml"]
|
||||||
workingDirectory: Quickshell.shellDir
|
workingDirectory: Quickshell.shellDir
|
||||||
running: false
|
running: false
|
||||||
stdout: StdioCollector {
|
stdout: StdioCollector {
|
||||||
onStreamFinished: {
|
onStreamFinished: {
|
||||||
|
//console.log(this.text)
|
||||||
// console.log(this.text)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,9 +11,9 @@ Rectangle {
|
||||||
implicitWidth: childrenRect.width
|
implicitWidth: childrenRect.width
|
||||||
implicitHeight: childrenRect.height
|
implicitHeight: childrenRect.height
|
||||||
|
|
||||||
color: Colors.surface
|
color: Colors.colorSurfaceVariant
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.backgroundTertiary
|
border.color: Colors.colorOutlineVariant
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
clip: true
|
clip: true
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ Item {
|
||||||
readonly property real scaling: Scaling.scale(screen)
|
readonly property real scaling: Scaling.scale(screen)
|
||||||
|
|
||||||
property bool running: true
|
property bool running: true
|
||||||
property color color: Colors.accentPrimary
|
property color color: Colors.colorPrimary
|
||||||
property int size: Style.baseWidgetSize * scaling
|
property int size: Style.baseWidgetSize * scaling
|
||||||
property int strokeWidth: Style.borderThick * scaling
|
property int strokeWidth: Style.borderThick * scaling
|
||||||
property int duration: 1000
|
property int duration: 1000
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ Rectangle {
|
||||||
implicitWidth: childrenRect.width
|
implicitWidth: childrenRect.width
|
||||||
implicitHeight: childrenRect.height
|
implicitHeight: childrenRect.height
|
||||||
|
|
||||||
color: Colors.backgroundSecondary
|
color: Colors.colorSurface
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
border.color: Colors.backgroundTertiary
|
border.color: Colors.colorSurfaceVariant
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,9 @@ Rectangle {
|
||||||
|
|
||||||
width: 68 * scaling
|
width: 68 * scaling
|
||||||
height: 92 * scaling
|
height: 92 * scaling
|
||||||
color: flat ? "transparent" : Colors.backgroundSecondary
|
color: flat ? "transparent" : Colors.colorSurface
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
border.color: flat ? "transparent" : Colors.backgroundTertiary
|
border.color: flat ? "transparent" : Colors.colorSurfaceVariant
|
||||||
border.width: flat ? 0 : Math.max(1, Style.borderThin * scaling)
|
border.width: flat ? 0 : Math.max(1, Style.borderThin * scaling)
|
||||||
clip: true
|
clip: true
|
||||||
|
|
||||||
|
|
@ -58,14 +58,14 @@ Rectangle {
|
||||||
ctx.reset()
|
ctx.reset()
|
||||||
ctx.lineWidth = 6 * root.scaling * contentScale
|
ctx.lineWidth = 6 * root.scaling * contentScale
|
||||||
// Track uses surfaceVariant for stronger contrast
|
// Track uses surfaceVariant for stronger contrast
|
||||||
ctx.strokeStyle = Colors.surfaceVariant
|
ctx.strokeStyle = Colors.colorSurface
|
||||||
ctx.beginPath()
|
ctx.beginPath()
|
||||||
ctx.arc(cx, cy, r, start, endBg)
|
ctx.arc(cx, cy, r, start, endBg)
|
||||||
ctx.stroke()
|
ctx.stroke()
|
||||||
// Value arc
|
// Value arc
|
||||||
const ratio = Math.max(0, Math.min(1, root.value / 100))
|
const ratio = Math.max(0, Math.min(1, root.value / 100))
|
||||||
const end = start + (endBg - start) * ratio
|
const end = start + (endBg - start) * ratio
|
||||||
ctx.strokeStyle = Colors.accentPrimary
|
ctx.strokeStyle = Colors.colorPrimary
|
||||||
ctx.beginPath()
|
ctx.beginPath()
|
||||||
ctx.arc(cx, cy, r, start, end)
|
ctx.arc(cx, cy, r, start, end)
|
||||||
ctx.stroke()
|
ctx.stroke()
|
||||||
|
|
@ -79,7 +79,7 @@ Rectangle {
|
||||||
text: `${root.value}${root.suffix}`
|
text: `${root.value}${root.suffix}`
|
||||||
font.pointSize: Style.fontSizeMedium * scaling * contentScale
|
font.pointSize: Style.fontSizeMedium * scaling * contentScale
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,8 +89,8 @@ Rectangle {
|
||||||
width: 28 * scaling * contentScale
|
width: 28 * scaling * contentScale
|
||||||
height: width
|
height: width
|
||||||
radius: width / 2
|
radius: width / 2
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurface
|
||||||
// border.color: Colors.accentPrimary
|
// border.color: Colors.colorPrimary
|
||||||
// border.width: Math.max(1, Style.borderThin * scaling)
|
// border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
|
@ -102,7 +102,7 @@ Rectangle {
|
||||||
text: root.icon
|
text: root.icon
|
||||||
font.family: "Material Symbols Outlined"
|
font.family: "Material Symbols Outlined"
|
||||||
font.pointSize: Style.fontSizeLargeXL * scaling * contentScale
|
font.pointSize: Style.fontSizeLargeXL * scaling * contentScale
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,13 @@ ColumnLayout {
|
||||||
text: label
|
text: label
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: description
|
text: description
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -56,8 +56,8 @@ ColumnLayout {
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
implicitWidth: 120 * scaling
|
implicitWidth: 120 * scaling
|
||||||
implicitHeight: preferredHeight
|
implicitHeight: preferredHeight
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurfaceVariant
|
||||||
border.color: combo.activeFocus ? Colors.hover : Colors.outline
|
border.color: combo.activeFocus ? Colors.colorTertiary : Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -97,8 +97,8 @@ ColumnLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurfaceVariant
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
}
|
}
|
||||||
|
|
@ -112,14 +112,14 @@ ColumnLayout {
|
||||||
text: (combo.model.indexOf(modelData) >= 0 && combo.model.indexOf(
|
text: (combo.model.indexOf(modelData) >= 0 && combo.model.indexOf(
|
||||||
modelData) < root.optionsLabels.length) ? root.optionsLabels[combo.model.indexOf(modelData)] : ""
|
modelData) < root.optionsLabels.length) ? root.optionsLabels[combo.model.indexOf(modelData)] : ""
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
color: highlighted ? Colors.backgroundPrimary : Colors.textPrimary
|
color: highlighted ? Colors.colorSurface : Colors.colorOnSurface
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
}
|
}
|
||||||
|
|
||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
width: combo.width - Style.marginMedium * scaling * 3
|
width: combo.width - Style.marginMedium * scaling * 3
|
||||||
color: highlighted ? Colors.hover : "transparent"
|
color: highlighted ? Colors.colorTertiary : "transparent"
|
||||||
radius: Style.radiusSmall * scaling
|
radius: Style.radiusSmall * scaling
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,5 +6,5 @@ import qs.Services
|
||||||
Rectangle {
|
Rectangle {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: Math.max(1, Style.borderThin * scaling)
|
height: Math.max(1, Style.borderThin * scaling)
|
||||||
color: Colors.outline
|
color: Colors.colorOutline
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,9 @@ Rectangle {
|
||||||
implicitWidth: size
|
implicitWidth: size
|
||||||
implicitHeight: size
|
implicitHeight: size
|
||||||
|
|
||||||
color: (root.hovering || showFilled) ? Colors.accentPrimary : "transparent"
|
color: (root.hovering || showFilled) ? Colors.colorPrimary : "transparent"
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
border.color: showBorder ? Colors.accentPrimary : "transparent"
|
border.color: showBorder ? Colors.colorPrimary : "transparent"
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
|
|
@ -42,7 +42,7 @@ Rectangle {
|
||||||
font.variableAxes: {
|
font.variableAxes: {
|
||||||
"wght": (Font.Normal + Font.Bold) / 2.0
|
"wght": (Font.Normal + Font.Bold) / 2.0
|
||||||
}
|
}
|
||||||
color: (root.hovering || showFilled) ? Colors.onAccent : showBorder ? Colors.accentPrimary : Colors.textPrimary
|
color: (root.hovering || showFilled) ? Colors.colorOnPrimary : showBorder ? Colors.colorPrimary : Colors.colorOnSurface
|
||||||
horizontalAlignment: Text.AlignHCenter
|
horizontalAlignment: Text.AlignHCenter
|
||||||
verticalAlignment: Text.AlignVCenter
|
verticalAlignment: Text.AlignVCenter
|
||||||
opacity: root.enabled ? Style.opacityFull : Style.opacityMedium
|
opacity: root.enabled ? Style.opacityFull : Style.opacityMedium
|
||||||
|
|
|
||||||
|
|
@ -10,11 +10,11 @@ Item {
|
||||||
property string icon: ""
|
property string icon: ""
|
||||||
property string text: ""
|
property string text: ""
|
||||||
property string tooltipText: ""
|
property string tooltipText: ""
|
||||||
property color pillColor: Colors.surfaceVariant
|
property color pillColor: Colors.colorSurfaceVariant
|
||||||
property color textColor: Colors.textPrimary
|
property color textColor: Colors.colorOnSurface
|
||||||
property color iconCircleColor: Colors.accentPrimary
|
property color iconCircleColor: Colors.colorPrimary
|
||||||
property color iconTextColor: Colors.backgroundPrimary
|
property color iconTextColor: Colors.colorSurface
|
||||||
property color collapsedIconColor: Colors.textPrimary
|
property color collapsedIconColor: Colors.colorOnSurface
|
||||||
property real sizeMultiplier: 0.8
|
property real sizeMultiplier: 0.8
|
||||||
property bool autoHide: false
|
property bool autoHide: false
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ RadioButton {
|
||||||
implicitHeight: 20 * scaling
|
implicitHeight: 20 * scaling
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: root.checked ? Colors.accentPrimary : Colors.textPrimary
|
border.color: root.checked ? Colors.colorPrimary : Colors.colorOnSurface
|
||||||
border.width: 2
|
border.width: 2
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
|
||||||
|
|
@ -23,7 +23,7 @@ RadioButton {
|
||||||
implicitHeight: Style.marginSmall * scaling
|
implicitHeight: Style.marginSmall * scaling
|
||||||
|
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: Qt.alpha(Colors.accentPrimary, root.checked ? 1 : 0)
|
color: Qt.alpha(Colors.colorPrimary, root.checked ? 1 : 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
Behavior on border.color {
|
Behavior on border.color {
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,13 @@ Slider {
|
||||||
width: root.availableWidth
|
width: root.availableWidth
|
||||||
height: implicitHeight
|
height: implicitHeight
|
||||||
radius: height / 2
|
radius: height / 2
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurfaceVariant
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: activeTrack
|
id: activeTrack
|
||||||
width: root.visualPosition * parent.width
|
width: root.visualPosition * parent.width
|
||||||
height: parent.height
|
height: parent.height
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
radius: parent.radius
|
radius: parent.radius
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ Slider {
|
||||||
width: knobDiameter + cutoutExtra
|
width: knobDiameter + cutoutExtra
|
||||||
height: knobDiameter + cutoutExtra
|
height: knobDiameter + cutoutExtra
|
||||||
radius: width / 2
|
radius: width / 2
|
||||||
color: root.cutoutColor !== undefined ? root.cutoutColor : Colors.backgroundPrimary
|
color: root.cutoutColor !== undefined ? root.cutoutColor : Colors.colorSurface
|
||||||
x: Math.max(0, Math.min(parent.width - width,
|
x: Math.max(0, Math.min(parent.width - width,
|
||||||
root.visualPosition * (parent.width - root.knobDiameter) - cutoutExtra / 2))
|
root.visualPosition * (parent.width - root.knobDiameter) - cutoutExtra / 2))
|
||||||
y: (parent.height - height) / 2
|
y: (parent.height - height) / 2
|
||||||
|
|
@ -61,7 +61,7 @@ Slider {
|
||||||
anchors.fill: knob
|
anchors.fill: knob
|
||||||
source: knob
|
source: knob
|
||||||
shadowEnabled: true
|
shadowEnabled: true
|
||||||
shadowColor: Colors.shadow
|
shadowColor: Colors.colorShadow
|
||||||
shadowOpacity: 0.25
|
shadowOpacity: 0.25
|
||||||
shadowHorizontalOffset: 0
|
shadowHorizontalOffset: 0
|
||||||
shadowVerticalOffset: 1
|
shadowVerticalOffset: 1
|
||||||
|
|
@ -73,8 +73,8 @@ Slider {
|
||||||
implicitWidth: knobDiameter
|
implicitWidth: knobDiameter
|
||||||
implicitHeight: knobDiameter
|
implicitHeight: knobDiameter
|
||||||
radius: width * 0.5
|
radius: width * 0.5
|
||||||
color: root.pressed ? Colors.surfaceVariant : Colors.surface
|
color: root.pressed ? Colors.colorSurfaceVariant : Colors.colorSurface
|
||||||
border.color: Colors.accentPrimary
|
border.color: Colors.colorPrimary
|
||||||
border.width: Math.max(1, Style.borderThick * scaling)
|
border.width: Math.max(1, Style.borderThick * scaling)
|
||||||
|
|
||||||
// Press feedback halo (using accent color, low opacity)
|
// Press feedback halo (using accent color, low opacity)
|
||||||
|
|
@ -83,7 +83,7 @@ Slider {
|
||||||
width: parent.width + 8 * scaling
|
width: parent.width + 8 * scaling
|
||||||
height: parent.height + 8 * scaling
|
height: parent.height + 8 * scaling
|
||||||
radius: width / 2
|
radius: width / 2
|
||||||
color: Colors.accentPrimary
|
color: Colors.colorPrimary
|
||||||
opacity: root.pressed ? 0.16 : 0.0
|
opacity: root.pressed ? 0.16 : 0.0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,5 +10,5 @@ Text {
|
||||||
font.family: Settings.data.ui.fontFamily
|
font.family: Settings.data.ui.fontFamily
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightRegular
|
font.weight: Style.fontWeightRegular
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -29,13 +29,13 @@ Item {
|
||||||
text: label
|
text: label
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: description
|
text: description
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -47,8 +47,8 @@ Item {
|
||||||
implicitWidth: root.width
|
implicitWidth: root.width
|
||||||
implicitHeight: Style.baseWidgetSize * 1.35 * scaling
|
implicitHeight: Style.baseWidgetSize * 1.35 * scaling
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
color: Colors.surfaceVariant
|
color: Colors.colorSurfaceVariant
|
||||||
border.color: Colors.outline
|
border.color: Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
|
|
||||||
// Focus ring
|
// Focus ring
|
||||||
|
|
@ -56,7 +56,7 @@ Item {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: frame.radius
|
radius: frame.radius
|
||||||
color: "transparent"
|
color: "transparent"
|
||||||
border.color: input.activeFocus ? Colors.hover : "transparent"
|
border.color: input.activeFocus ? Colors.colorTertiary : "transparent"
|
||||||
border.width: input.activeFocus ? Math.max(1, Style.borderThin * scaling) : 0
|
border.width: input.activeFocus ? Math.max(1, Style.borderThin * scaling) : 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -74,8 +74,8 @@ Item {
|
||||||
echoMode: TextInput.Normal
|
echoMode: TextInput.Normal
|
||||||
readOnly: root.readOnly
|
readOnly: root.readOnly
|
||||||
enabled: root.enabled
|
enabled: root.enabled
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
placeholderTextColor: Colors.textSecondary
|
placeholderTextColor: Colors.colorOnSurface
|
||||||
background: null
|
background: null
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
onEditingFinished: root.editingFinished()
|
onEditingFinished: root.editingFinished()
|
||||||
|
|
|
||||||
|
|
@ -27,13 +27,13 @@ RowLayout {
|
||||||
text: label
|
text: label
|
||||||
font.pointSize: Style.fontSizeMedium * scaling
|
font.pointSize: Style.fontSizeMedium * scaling
|
||||||
font.weight: Style.fontWeightBold
|
font.weight: Style.fontWeightBold
|
||||||
color: Colors.textPrimary
|
color: Colors.colorOnSurface
|
||||||
}
|
}
|
||||||
|
|
||||||
NText {
|
NText {
|
||||||
text: description
|
text: description
|
||||||
font.pointSize: Style.fontSizeSmall * scaling
|
font.pointSize: Style.fontSizeSmall * scaling
|
||||||
color: Colors.textSecondary
|
color: Colors.colorOnSurface
|
||||||
wrapMode: Text.WordWrap
|
wrapMode: Text.WordWrap
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
}
|
}
|
||||||
|
|
@ -45,16 +45,16 @@ RowLayout {
|
||||||
implicitWidth: root.baseSize * 1.625 * scaling
|
implicitWidth: root.baseSize * 1.625 * scaling
|
||||||
implicitHeight: root.baseSize * scaling
|
implicitHeight: root.baseSize * scaling
|
||||||
radius: height * 0.5
|
radius: height * 0.5
|
||||||
color: value ? Colors.accentPrimary : Colors.surfaceVariant
|
color: value ? Colors.colorPrimary : Colors.colorSurface
|
||||||
border.color: value ? Colors.accentPrimary : Colors.outline
|
border.color: value ? Colors.colorPrimary : Colors.colorOutline
|
||||||
border.width: Math.max(1, Style.borderMedium * scaling)
|
border.width: Math.max(1, Style.borderMedium * scaling)
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
implicitWidth: (root.baseSize - 4) * scaling
|
implicitWidth: (root.baseSize - 5) * scaling
|
||||||
implicitHeight: (root.baseSize - 4) * scaling
|
implicitHeight: (root.baseSize - 5) * scaling
|
||||||
radius: height * 0.5
|
radius: height * 0.5
|
||||||
color: Colors.surface
|
color: value ? Colors.colorOnSurface : Colors.colorPrimary //Colors.onBackground : Colors.colorSecondary
|
||||||
border.color: hovering ? Colors.textDisabled : Colors.outline
|
border.color: value ? Colors.colorSurface: Colors.colorSurface
|
||||||
border.width: Math.max(1, Style.borderMedium * scaling)
|
border.width: Math.max(1, Style.borderMedium * scaling)
|
||||||
y: 2 * scaling
|
y: 2 * scaling
|
||||||
x: value ? switcher.width - width - 2 * scaling : 2 * scaling
|
x: value ? switcher.width - width - 2 * scaling : 2 * scaling
|
||||||
|
|
|
||||||
|
|
@ -135,17 +135,8 @@ Window {
|
||||||
id: tooltipRect
|
id: tooltipRect
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
radius: Style.radiusMedium * scaling
|
radius: Style.radiusMedium * scaling
|
||||||
gradient: Gradient {
|
color: Colors.colorSurface
|
||||||
GradientStop {
|
border.color: Colors.colorOutline
|
||||||
position: 0.0
|
|
||||||
color: Colors.backgroundSecondary
|
|
||||||
}
|
|
||||||
GradientStop {
|
|
||||||
position: 1.0
|
|
||||||
color: Colors.backgroundTertiary
|
|
||||||
}
|
|
||||||
}
|
|
||||||
border.color: Colors.outline
|
|
||||||
border.width: Math.max(1, Style.borderThin * scaling)
|
border.width: Math.max(1, Style.borderThin * scaling)
|
||||||
z: 1
|
z: 1
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue