changes to parch
This commit is contained in:
parent
a76d4517f1
commit
46eef77493
15 changed files with 1297 additions and 0 deletions
55
parch/Main.qml
Normal file
55
parch/Main.qml
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
import QtQuick.Window 2.12
|
||||||
|
import "components"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: root
|
||||||
|
|
||||||
|
height: Screen.height
|
||||||
|
width: Screen.width
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: background
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
height: parent.height
|
||||||
|
width: parent.width
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
source: config.Background
|
||||||
|
asynchronous: false
|
||||||
|
cache: true
|
||||||
|
mipmap: true
|
||||||
|
clip: true
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: contentPanel
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
fill: parent
|
||||||
|
topMargin: config.Padding
|
||||||
|
rightMargin: config.Padding
|
||||||
|
bottomMargin: config.Padding
|
||||||
|
leftMargin: config.Padding
|
||||||
|
}
|
||||||
|
|
||||||
|
DateTimePanel {
|
||||||
|
id: dateTimePanel
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
top: parent.top
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
LoginPanel {
|
||||||
|
id: loginPanel
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
parch/backgrounds/glacier.png
Normal file
BIN
parch/backgrounds/glacier.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 654 KiB |
BIN
parch/backgrounds/leaves.png
Normal file
BIN
parch/backgrounds/leaves.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.4 MiB |
53
parch/components/DateTimePanel.qml
Normal file
53
parch/components/DateTimePanel.qml
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
|
||||||
|
Column {
|
||||||
|
spacing: 0
|
||||||
|
Component.onCompleted: {
|
||||||
|
timeLabel.updateTime();
|
||||||
|
dateLabel.updateDate();
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: dateLabel
|
||||||
|
|
||||||
|
function updateDate() {
|
||||||
|
text = new Date().toLocaleDateString(Qt.locale(), config.DateFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
anchors.right: parent.right
|
||||||
|
opacity: config.DateOpacity
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.DateSize
|
||||||
|
font.bold: config.DateIsBold == "true" ? true : false
|
||||||
|
color: config.DateColor
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: timeLabel
|
||||||
|
|
||||||
|
function updateTime() {
|
||||||
|
text = new Date().toLocaleTimeString(Qt.locale(), config.TimeFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
anchors.right: parent.right
|
||||||
|
opacity: config.TimeOpacity
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.TimeSize
|
||||||
|
font.bold: config.TimeIsBold == "true" ? true : false
|
||||||
|
color: config.TimeColor
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
interval: 1000
|
||||||
|
repeat: true
|
||||||
|
running: true
|
||||||
|
onTriggered: {
|
||||||
|
timeLabel.updateTime();
|
||||||
|
dateLabel.updateDate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
180
parch/components/LoginPanel.qml
Normal file
180
parch/components/LoginPanel.qml
Normal file
|
@ -0,0 +1,180 @@
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
import QtQuick.Window 2.12
|
||||||
|
|
||||||
|
Item {
|
||||||
|
property var user: userPanel.username
|
||||||
|
property var password: passwordField.text
|
||||||
|
property var session: sessionPanel.session
|
||||||
|
property var inputHeight: Screen.height * config.UIScale * 0.25
|
||||||
|
property var inputWidth: Screen.width * config.UIScale
|
||||||
|
|
||||||
|
Column {
|
||||||
|
spacing: 8
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
bottom: parent.bottom
|
||||||
|
left: parent.left
|
||||||
|
}
|
||||||
|
|
||||||
|
PowerPanel {
|
||||||
|
id: powerPanel
|
||||||
|
}
|
||||||
|
|
||||||
|
SessionPanel {
|
||||||
|
id: sessionPanel
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
spacing: 8
|
||||||
|
width: inputWidth
|
||||||
|
|
||||||
|
anchors {
|
||||||
|
bottom: parent.bottom
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
|
||||||
|
UserPanel {
|
||||||
|
id: userPanel
|
||||||
|
}
|
||||||
|
|
||||||
|
PasswordPanel {
|
||||||
|
id: passwordField
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: parent.width
|
||||||
|
onAccepted: loginButton.clicked()
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: loginButton
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: parent.width
|
||||||
|
enabled: user != "" && password != "" ? true : false
|
||||||
|
hoverEnabled: true
|
||||||
|
text: "Login!!"
|
||||||
|
onClicked: {
|
||||||
|
sddm.login(user, password, session);
|
||||||
|
}
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: loginButton.down
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.darker(config.LoginButtonBg, 1.4)
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonText
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: loginButton.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
color: Qt.darker(config.LoginButtonBg, 1.2)
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonText
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "enabled"
|
||||||
|
when: loginButton.enabled
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonBackground
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: buttonText
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: loginAnim
|
||||||
|
|
||||||
|
radius: parent.width / 2
|
||||||
|
anchors.centerIn: loginButton
|
||||||
|
color: "black"
|
||||||
|
opacity: 1
|
||||||
|
|
||||||
|
NumberAnimation {
|
||||||
|
id: coverScreen
|
||||||
|
|
||||||
|
target: loginAnim
|
||||||
|
properties: "height, width"
|
||||||
|
from: 0
|
||||||
|
to: root.width * 2
|
||||||
|
duration: 1000
|
||||||
|
easing.type: Easing.InExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
id: buttonText
|
||||||
|
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize
|
||||||
|
font.bold: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
color: config.LoginButtonTextColor
|
||||||
|
opacity: 0.5
|
||||||
|
text: config.LoginButtonText
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: buttonBackground
|
||||||
|
|
||||||
|
color: config.LoginButtonBg
|
||||||
|
opacity: 0.5
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, opacity"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
function onLoginSucceeded() {
|
||||||
|
coverScreen.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLoginFailed() {
|
||||||
|
passwordField.text = "";
|
||||||
|
passwordField.focus = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
target: sddm
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
61
parch/components/PasswordPanel.qml
Normal file
61
parch/components/PasswordPanel.qml
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: passwordField
|
||||||
|
|
||||||
|
focus: true
|
||||||
|
selectByMouse: true
|
||||||
|
placeholderText: config.PassFieldBgText
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
passwordCharacter: "•"
|
||||||
|
passwordMaskDelay: 1000
|
||||||
|
selectionColor: config.FieldText
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize
|
||||||
|
font.bold: true
|
||||||
|
color: config.FieldText
|
||||||
|
horizontalAlignment: TextInput.AlignHCenter
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: passwordField.activeFocus
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: passFieldBg
|
||||||
|
color: Qt.darker(config.FieldBackground, 1.2)
|
||||||
|
border.width: config.FieldBorderWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: passwordField.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: passFieldBg
|
||||||
|
color: Qt.darker(config.FieldBackground, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: passFieldBg
|
||||||
|
|
||||||
|
color: config.FieldBackground
|
||||||
|
border.color: config.FieldBorderColor
|
||||||
|
border.width: 0
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, border.width"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
236
parch/components/PowerPanel.qml
Normal file
236
parch/components/PowerPanel.qml
Normal file
|
@ -0,0 +1,236 @@
|
||||||
|
import QtGraphicalEffects 1.12
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
|
||||||
|
Item {
|
||||||
|
implicitHeight: powerButton.height
|
||||||
|
implicitWidth: powerButton.width
|
||||||
|
|
||||||
|
ListModel {
|
||||||
|
id: powerModel
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
name: "Sleep"
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
name: "Restart"
|
||||||
|
}
|
||||||
|
|
||||||
|
ListElement {
|
||||||
|
name: "Shut\nDown"
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: powerButton
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: inputHeight
|
||||||
|
hoverEnabled: true
|
||||||
|
icon.source: Qt.resolvedUrl("../icons/power.svg")
|
||||||
|
icon.height: height
|
||||||
|
icon.width: width
|
||||||
|
icon.color: config.PowerIconColor
|
||||||
|
onClicked: {
|
||||||
|
powerPopup.visible ? powerPopup.close() : powerPopup.open();
|
||||||
|
powerButton.state = "pressed";
|
||||||
|
}
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: powerButton.down
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: powerButtonBg
|
||||||
|
color: Qt.darker(config.PowerButtonBg, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: powerButton.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: powerButtonBg
|
||||||
|
color: Qt.darker(config.PowerButtonBg, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "selection"
|
||||||
|
when: powerPopup.visible
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: powerButtonBg
|
||||||
|
color: Qt.darker(config.PowerButtonBg, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: powerButtonBg
|
||||||
|
|
||||||
|
color: config.PowerButtonBg
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Popup {
|
||||||
|
id: powerPopup
|
||||||
|
|
||||||
|
height: inputHeight * 2.2 + padding * 2
|
||||||
|
x: powerButton.width + powerList.spacing
|
||||||
|
y: -height + powerButton.height
|
||||||
|
padding: 15
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.Radius * 1.8
|
||||||
|
color: config.PopupBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
id: powerList
|
||||||
|
|
||||||
|
implicitWidth: contentWidth
|
||||||
|
spacing: 8
|
||||||
|
orientation: Qt.Horizontal
|
||||||
|
clip: true
|
||||||
|
model: powerModel
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
id: powerEntry
|
||||||
|
|
||||||
|
height: inputHeight * 2.2
|
||||||
|
width: inputHeight * 2.2
|
||||||
|
display: AbstractButton.TextUnderIcon
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: powerEntry.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: powerEntryBg
|
||||||
|
color: Qt.darker(config.PopupHighlight, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: iconOverlay
|
||||||
|
color: Qt.darker(config.PopupHighlight, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: powerText
|
||||||
|
opacity: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
powerPopup.close();
|
||||||
|
index == 0 ? sddm.suspend() : (index == 1 ? sddm.reboot() : sddm.powerOff());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Item {
|
||||||
|
Image {
|
||||||
|
id: powerIcon
|
||||||
|
|
||||||
|
anchors.centerIn: parent
|
||||||
|
source: index == 0 ? Qt.resolvedUrl("../icons/sleep.svg") : (index == 1 ? Qt.resolvedUrl("../icons/restart.svg") : Qt.resolvedUrl("../icons/power.svg"))
|
||||||
|
sourceSize: Qt.size(powerEntry.width * 0.5, powerEntry.height * 0.5)
|
||||||
|
}
|
||||||
|
|
||||||
|
ColorOverlay {
|
||||||
|
id: iconOverlay
|
||||||
|
|
||||||
|
anchors.fill: powerIcon
|
||||||
|
source: powerIcon
|
||||||
|
color: config.PopupBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: powerText
|
||||||
|
|
||||||
|
anchors.centerIn: parent
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize
|
||||||
|
font.bold: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
color: config.PopupBackground
|
||||||
|
text: name
|
||||||
|
opacity: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: powerEntryBg
|
||||||
|
|
||||||
|
color: config.PopupHighlight
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, opacity"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
ParallelAnimation {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
duration: 400
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
NumberAnimation {
|
||||||
|
property: "x"
|
||||||
|
from: powerPopup.x - (inputWidth * 0.1)
|
||||||
|
to: powerPopup.x
|
||||||
|
duration: 500
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
duration: 300
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
195
parch/components/SessionPanel.qml
Normal file
195
parch/components/SessionPanel.qml
Normal file
|
@ -0,0 +1,195 @@
|
||||||
|
import QtQml.Models 2.12
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
|
||||||
|
Item {
|
||||||
|
property var session: sessionList.currentIndex
|
||||||
|
|
||||||
|
implicitHeight: sessionButton.height
|
||||||
|
implicitWidth: sessionButton.width
|
||||||
|
|
||||||
|
DelegateModel {
|
||||||
|
id: sessionWrapper
|
||||||
|
|
||||||
|
model: sessionModel
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
id: sessionEntry
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: parent.width
|
||||||
|
highlighted: sessionList.currentIndex == index
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: sessionEntry.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: sessionEntryBg
|
||||||
|
color: highlighted ? Qt.darker(config.PopupHighlight, 1.2) : Qt.darker(config.PopupBackground, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
sessionList.currentIndex = index;
|
||||||
|
sessionPopup.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize
|
||||||
|
font.bold: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
color: highlighted ? config.PopupHighlightText : config.PopupHighlight
|
||||||
|
text: name
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: sessionEntryBg
|
||||||
|
|
||||||
|
color: highlighted ? config.PopupHighlight : config.PopupBackground
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
property: "color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: sessionButton
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: inputHeight
|
||||||
|
hoverEnabled: true
|
||||||
|
icon.source: Qt.resolvedUrl("../icons/settings.svg")
|
||||||
|
icon.height: height * 0.6
|
||||||
|
icon.width: width * 0.6
|
||||||
|
icon.color: config.SessionIconColor
|
||||||
|
onClicked: {
|
||||||
|
sessionPopup.visible ? sessionPopup.close() : sessionPopup.open();
|
||||||
|
sessionButton.state = "pressed";
|
||||||
|
}
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
when: sessionButton.down
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: sessionButtonBg
|
||||||
|
color: Qt.darker(config.SessionButtonBg, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: sessionButton.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: sessionButtonBg
|
||||||
|
color: Qt.darker(config.SessionButtonBg, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "selection"
|
||||||
|
when: sessionPopup.visible
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: sessionButtonBg
|
||||||
|
color: Qt.darker(config.SessionButtonBg, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: sessionButtonBg
|
||||||
|
|
||||||
|
color: config.SessionButtonBg
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Popup {
|
||||||
|
id: sessionPopup
|
||||||
|
|
||||||
|
width: inputWidth + padding * 2
|
||||||
|
x: sessionButton.width + sessionList.spacing
|
||||||
|
y: -(contentHeight + padding * 2) + sessionButton.height
|
||||||
|
padding: 15
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.Radius * 1.8
|
||||||
|
color: config.PopupBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
id: sessionList
|
||||||
|
|
||||||
|
implicitHeight: contentHeight
|
||||||
|
spacing: 8
|
||||||
|
model: sessionWrapper
|
||||||
|
currentIndex: sessionModel.lastIndex
|
||||||
|
clip: true
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
ParallelAnimation {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
duration: 400
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
NumberAnimation {
|
||||||
|
property: "x"
|
||||||
|
from: sessionPopup.x - (inputWidth * 0.1)
|
||||||
|
to: sessionPopup.x
|
||||||
|
duration: 500
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
duration: 300
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
62
parch/components/UserFieldPanel.qml
Normal file
62
parch/components/UserFieldPanel.qml
Normal file
|
@ -0,0 +1,62 @@
|
||||||
|
import QtGraphicalEffects 1.12
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: usernameField
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: inputWidth
|
||||||
|
selectByMouse: true
|
||||||
|
echoMode: TextInput.Normal
|
||||||
|
selectionColor: config.FieldText
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize
|
||||||
|
font.bold: true
|
||||||
|
color: config.FieldText
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
placeholderText: config.UserFieldBgText
|
||||||
|
text: userModel.lastUser
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "focused"
|
||||||
|
when: usernameField.activeFocus
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: userFieldBackground
|
||||||
|
color: Qt.darker(config.FieldBackground, 1.2)
|
||||||
|
border.width: config.FieldBorderWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: usernameField.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: userFieldBackground
|
||||||
|
color: Qt.darker(config.FieldBackground, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: userFieldBackground
|
||||||
|
|
||||||
|
color: config.FieldBackground
|
||||||
|
border.color: config.FieldBorderColor
|
||||||
|
border.width: 0
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "color, border.width"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
323
parch/components/UserPanel.qml
Normal file
323
parch/components/UserPanel.qml
Normal file
|
@ -0,0 +1,323 @@
|
||||||
|
import QtGraphicalEffects 1.12
|
||||||
|
import QtQml.Models 2.12
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.12
|
||||||
|
|
||||||
|
Column {
|
||||||
|
property var username: usernameField.text
|
||||||
|
|
||||||
|
spacing: 30
|
||||||
|
Component.onCompleted: userPicture.source = userWrapper.items.get(userList.currentIndex).model.icon
|
||||||
|
|
||||||
|
DelegateModel {
|
||||||
|
id: userWrapper
|
||||||
|
|
||||||
|
model: userModel
|
||||||
|
|
||||||
|
delegate: ItemDelegate {
|
||||||
|
id: userEntry
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: parent.width
|
||||||
|
highlighted: userList.currentIndex == index
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
when: userEntry.hovered
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: userEntryBg
|
||||||
|
color: highlighted ? Qt.darker(config.PopupHighlight, 1.2) : Qt.darker(config.PopupBackground, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
userList.currentIndex = index;
|
||||||
|
usernameField.text = userWrapper.items.get(index).model.name;
|
||||||
|
userPicture.source = userWrapper.items.get(index).model.icon;
|
||||||
|
userPopup.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize
|
||||||
|
font.bold: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
color: highlighted ? config.PopupHighlightText : config.PopupHighlight
|
||||||
|
text: name
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
id: userEntryBg
|
||||||
|
|
||||||
|
color: highlighted ? config.PopupHighlight : config.PopupBackground
|
||||||
|
radius: config.Radius
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
property: "color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Popup {
|
||||||
|
id: userPopup
|
||||||
|
|
||||||
|
width: inputWidth
|
||||||
|
padding: 15
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.Radius * 1.8
|
||||||
|
color: config.PopupBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: ListView {
|
||||||
|
id: userList
|
||||||
|
|
||||||
|
implicitHeight: contentHeight
|
||||||
|
spacing: 8
|
||||||
|
model: userWrapper
|
||||||
|
currentIndex: userModel.lastIndex
|
||||||
|
clip: true
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
ParallelAnimation {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
duration: 400
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
NumberAnimation {
|
||||||
|
property: "y"
|
||||||
|
from: (inputWidth / 3) - userPopup.padding - (inputHeight * userList.count * 0.5) - (userList.spacing * (userList.count - 1) * 0.5) + (inputWidth * 0.1)
|
||||||
|
to: (inputWidth / 3) - userPopup.padding - (inputHeight * userList.count * 0.5) - (userList.spacing * (userList.count - 1) * 0.5)
|
||||||
|
duration: 500
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
duration: 300
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: inputWidth
|
||||||
|
implicitHeight: pictureBorder.height
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: pictureBorder
|
||||||
|
|
||||||
|
anchors.centerIn: userPicture
|
||||||
|
height: inputWidth / 1.5 + (border.width * 2)
|
||||||
|
width: inputWidth / 1.5 + (border.width * 2)
|
||||||
|
radius: height / 2
|
||||||
|
border.width: config.UAPBorderWidth
|
||||||
|
border.color: config.UAPBorderColor
|
||||||
|
color: config.UAPColor
|
||||||
|
states: [
|
||||||
|
State {
|
||||||
|
name: "pressed"
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: pictureBorder
|
||||||
|
border.color: Qt.darker(config.UAPBorderColor, 1.2)
|
||||||
|
color: Qt.darker(config.UAPColor, 1.2)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "hovered"
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: pictureBorder
|
||||||
|
border.color: Qt.darker(config.UAPBorderColor, 1.4)
|
||||||
|
color: Qt.darker(config.UAPColor, 1.4)
|
||||||
|
}
|
||||||
|
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
name: "unhovered"
|
||||||
|
|
||||||
|
PropertyChanges {
|
||||||
|
target: pictureBorder
|
||||||
|
border.color: config.UAPBorderColor
|
||||||
|
color: config.UAPColor
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: roundMouseArea
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
hoverEnabled: true
|
||||||
|
onClicked: userPopup.open()
|
||||||
|
onHoveredChanged: {
|
||||||
|
if (containsMouse)
|
||||||
|
pictureBorder.state = "hovered";
|
||||||
|
else
|
||||||
|
pictureBorder.state = "unhovered";
|
||||||
|
}
|
||||||
|
onPressedChanged: {
|
||||||
|
if (containsPress)
|
||||||
|
pictureBorder.state = "pressed";
|
||||||
|
else if (containsMouse)
|
||||||
|
pictureBorder.state = "hovered";
|
||||||
|
else
|
||||||
|
pictureBorder.state = "unhovered";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
transitions: Transition {
|
||||||
|
PropertyAnimation {
|
||||||
|
properties: "border.color, color"
|
||||||
|
duration: 150
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: userPicture
|
||||||
|
|
||||||
|
source: ""
|
||||||
|
height: inputWidth / 1.5
|
||||||
|
width: inputWidth / 1.5
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
layer.enabled: true
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: mask
|
||||||
|
|
||||||
|
anchors.fill: parent
|
||||||
|
radius: inputWidth / 3
|
||||||
|
visible: false
|
||||||
|
}
|
||||||
|
|
||||||
|
layer.effect: OpacityMask {
|
||||||
|
maskSource: mask
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Popup {
|
||||||
|
id: incorrectPopup
|
||||||
|
|
||||||
|
height: incorrectText.paintedHeight * 2
|
||||||
|
width: inputWidth
|
||||||
|
y: (pictureBorder.height - height) / 2
|
||||||
|
onOpened: incorrectTimer.start()
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: incorrectTimer
|
||||||
|
|
||||||
|
interval: 3000
|
||||||
|
onTriggered: incorrectPopup.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
radius: config.Radius
|
||||||
|
color: config.PopupBackground
|
||||||
|
}
|
||||||
|
|
||||||
|
contentItem: Text {
|
||||||
|
id: incorrectText
|
||||||
|
|
||||||
|
renderType: Text.NativeRendering
|
||||||
|
font.family: config.Font
|
||||||
|
font.pointSize: config.FontSize
|
||||||
|
font.bold: true
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
verticalAlignment: Text.AlignVCenter
|
||||||
|
color: config.PopupHighlight
|
||||||
|
text: "Incorrect username\nor password!"
|
||||||
|
}
|
||||||
|
|
||||||
|
enter: Transition {
|
||||||
|
ParallelAnimation {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 0
|
||||||
|
to: 1
|
||||||
|
duration: 400
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
NumberAnimation {
|
||||||
|
property: "x"
|
||||||
|
from: incorrectPopup.x - (inputWidth * 0.1)
|
||||||
|
to: incorrectPopup.x
|
||||||
|
duration: 500
|
||||||
|
easing.type: Easing.OutElastic
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
exit: Transition {
|
||||||
|
NumberAnimation {
|
||||||
|
property: "opacity"
|
||||||
|
from: 1
|
||||||
|
to: 0
|
||||||
|
duration: 300
|
||||||
|
easing.type: Easing.OutExpo
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
UserFieldPanel {
|
||||||
|
id: usernameField
|
||||||
|
|
||||||
|
height: inputHeight
|
||||||
|
width: inputWidth
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
function onLoginSucceeded() {
|
||||||
|
}
|
||||||
|
|
||||||
|
function onLoginFailed() {
|
||||||
|
incorrectPopup.open();
|
||||||
|
}
|
||||||
|
|
||||||
|
target: sddm
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
1
parch/icons/power.svg
Normal file
1
parch/icons/power.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M16.56,5.44L15.11,6.89C16.84,7.94 18,9.83 18,12A6,6 0 0,1 12,18A6,6 0 0,1 6,12C6,9.83 7.16,7.94 8.88,6.88L7.44,5.44C5.36,6.88 4,9.28 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12C20,9.28 18.64,6.88 16.56,5.44M13,3H11V13H13"/></svg>
|
After Width: | Height: | Size: 291 B |
1
parch/icons/restart.svg
Normal file
1
parch/icons/restart.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z"/></svg>
|
After Width: | Height: | Size: 401 B |
1
parch/icons/settings.svg
Normal file
1
parch/icons/settings.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z"/></svg>
|
After Width: | Height: | Size: 1.3 KiB |
1
parch/icons/sleep.svg
Normal file
1
parch/icons/sleep.svg
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.73,18C15.4,21.69 9.71,22 6,18.64C2.33,15.31 2.04,9.62 5.37,5.93C6.9,4.25 9,3.2 11.27,3C7.96,6.7 8.27,12.39 12,15.71C13.63,17.19 15.78,18 18,18C18.25,18 18.5,18 18.73,18Z"/></svg>
|
After Width: | Height: | Size: 251 B |
128
parch/theme.conf
Normal file
128
parch/theme.conf
Normal file
|
@ -0,0 +1,128 @@
|
||||||
|
[General]
|
||||||
|
|
||||||
|
### GENERAL
|
||||||
|
#
|
||||||
|
# Background: wallpaper path, absolute or relative. can be placed
|
||||||
|
# in the backgrounds/ folder (as seen below) for extra convenience.
|
||||||
|
#
|
||||||
|
# Font: please name the font family!
|
||||||
|
#
|
||||||
|
# FontSize: this size is used for everything *except* the date and time.
|
||||||
|
#
|
||||||
|
# Padding: specify how far stuff should be from the screen edges.
|
||||||
|
#
|
||||||
|
# Radius: set to 0 to disable rounded corners on UI elements.
|
||||||
|
#
|
||||||
|
# UIScale: if UI elements are too big or small, try to adjust this value.
|
||||||
|
# you should probably keep it below 1, though.
|
||||||
|
|
||||||
|
Background="backgrounds/parch.png"
|
||||||
|
Font="Atkinson Hyperlegible"
|
||||||
|
FontSize="9"
|
||||||
|
Padding="50"
|
||||||
|
Radius="5"
|
||||||
|
UIScale="0.175"
|
||||||
|
|
||||||
|
### USER ACCOUNT PICTURE (UAP)
|
||||||
|
#
|
||||||
|
# UAPBorderWidth: set to 0 to disable the border around the picture.
|
||||||
|
#
|
||||||
|
# UAPBorderColor: remember to include the "#" when specifying color! will not
|
||||||
|
# show when border width is 0.
|
||||||
|
#
|
||||||
|
# UAPColor: color of the default, blank avatar. only visible if you
|
||||||
|
# don't have your own picture.
|
||||||
|
|
||||||
|
UAPBorderWidth="5"
|
||||||
|
UAPBorderColor="#b4befe"
|
||||||
|
UAPColor="#cdd6f4"
|
||||||
|
|
||||||
|
### USERNAME, PASSWORD FIELDS
|
||||||
|
#
|
||||||
|
# FieldBackground: background color of the input fields.
|
||||||
|
#
|
||||||
|
# FieldText: color of the typed text.
|
||||||
|
#
|
||||||
|
# FieldBorderWidth: border width of the currently selected field. set to 0
|
||||||
|
# to disable the border.
|
||||||
|
#
|
||||||
|
# FieldBorderColor: border color of selected field. not visible if width is 0.
|
||||||
|
#
|
||||||
|
# UserFieldBgText: placeholder text shown when user field is empty.
|
||||||
|
#
|
||||||
|
# PassFieldBgText: placeholder text shown when password field is empty.
|
||||||
|
|
||||||
|
FieldBackground="#1e1e2e"
|
||||||
|
FieldText="#cdd6f4"
|
||||||
|
FieldBorderWidth="3"
|
||||||
|
FieldBorderColor="#b4befe"
|
||||||
|
UserFieldBgText="enter username"
|
||||||
|
PassFieldBgText="enter password"
|
||||||
|
|
||||||
|
### LOGIN BUTTON
|
||||||
|
#
|
||||||
|
# LoginButtonTextColor: text color of login button.
|
||||||
|
#
|
||||||
|
# LoginButtonText: text displayed on the login button.
|
||||||
|
#
|
||||||
|
# LoginButtonBg: login button background color.
|
||||||
|
|
||||||
|
LoginButtonTextColor="#1e1e2e"
|
||||||
|
LoginButtonText="Login!!"
|
||||||
|
LoginButtonBg="#b4befe"
|
||||||
|
|
||||||
|
### POWER, SESSION, USER SELECTION POPUPS
|
||||||
|
#
|
||||||
|
# PopupBackground: background color of popup window.
|
||||||
|
#
|
||||||
|
# PopupHighlight: color of the currently selected entry.
|
||||||
|
#
|
||||||
|
# PopupHighlightText: text color inside the currently selected entry. this is
|
||||||
|
# provided in case the highlight clashes with the text.
|
||||||
|
|
||||||
|
PopupBackground="#b4befe"
|
||||||
|
PopupHighlight="#1e1e2e"
|
||||||
|
PopupHighlightText="#cdd6f4"
|
||||||
|
|
||||||
|
### SESSION, POWER BUTTONS
|
||||||
|
#
|
||||||
|
# SessionButtonBg: session button background color.
|
||||||
|
#
|
||||||
|
# SessionIconColor: session icon color inside session button.
|
||||||
|
#
|
||||||
|
# PowerButtonBg: power button background color.
|
||||||
|
#
|
||||||
|
# PowerIconColor: power icon color inside power button.
|
||||||
|
|
||||||
|
SessionButtonBg="#b4befe"
|
||||||
|
SessionIconColor="#1e1e2e"
|
||||||
|
PowerButtonBg="#b4befe"
|
||||||
|
PowerIconColor="#1e1e2e"
|
||||||
|
|
||||||
|
### DATE, TIME
|
||||||
|
#
|
||||||
|
# DateColor: date text color.
|
||||||
|
#
|
||||||
|
# DateSize: font size for the date.
|
||||||
|
#
|
||||||
|
# DateIsBold: whether date text should be bolded. accepts "true" or "false"
|
||||||
|
#
|
||||||
|
# DateOpacity: date text opacity value between 0.0 (completely transparent)
|
||||||
|
# and 1.0 (fully solid).
|
||||||
|
#
|
||||||
|
# DateFormat: here, you can create a custom date format.
|
||||||
|
#
|
||||||
|
# of course, equivalent options exist for the time.
|
||||||
|
|
||||||
|
DateColor="#cdd6f4"
|
||||||
|
DateSize="36"
|
||||||
|
DateIsBold="false"
|
||||||
|
DateOpacity="1.0"
|
||||||
|
DateFormat="dddd, MMMM d"
|
||||||
|
|
||||||
|
TimeColor="#cdd6f4"
|
||||||
|
TimeSize="48"
|
||||||
|
TimeIsBold="true"
|
||||||
|
TimeOpacity="1.0"
|
||||||
|
TimeFormat="hh:mm AP"
|
||||||
|
|
Loading…
Add table
Reference in a new issue