summaryrefslogtreecommitdiff
path: root/x11-themes/redcore-theme-sddm/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-11-07 18:08:45 +0000
committerV3n3RiX <venerix@koprulu.sector>2024-11-07 18:08:45 +0000
commitf0bfc317968d5f4cc27c5eb0a608e13c11b6cbd0 (patch)
tree79719245869b7ec1db2fb9718cd3392ce8d8b456 /x11-themes/redcore-theme-sddm/files
parentf83e7b8b9b7b3cec8c5f67c8b8c9805f094454ad (diff)
x11-themes/redcore-theme-sddm : revision bump
Diffstat (limited to 'x11-themes/redcore-theme-sddm/files')
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Background.qml56
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/CapsOn.qml21
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/FalsePass.qml168
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/LayoutPanel.qml213
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/LoginBg.qml53
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/LoginButton.qml35
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordField.qml35
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordFieldPin.qml35
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/PowerPanel.qml390
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/RevealButton.qml68
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/SessionPanel.qml354
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/TruePass.qml787
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/UserList.qml113
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Components/UserPanel.qml1092
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/KeyboardButton.qml61
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Login.qml156
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Main.qml860
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/Messages.sh2
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/SessionButton.qml55
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/faces/.face.icon14
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/fonts/SegMDL2.ttfbin0 -> 203656 bytes
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/fonts/SegoeBoot-Semilight.woffbin0 -> 41404 bytes
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeui.ttfbin0 -> 926016 bytes
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeuil.ttfbin0 -> 879172 bytes
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/metadata.desktop20
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/preview.pngbin0 -> 12966612 bytes
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/redcore-weblink.svg15
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/theme.conf10
-rw-r--r--x11-themes/redcore-theme-sddm/files/redcore/user-192.pngbin0 -> 2392 bytes
29 files changed, 3801 insertions, 812 deletions
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Background.qml b/x11-themes/redcore-theme-sddm/files/redcore/Background.qml
deleted file mode 100644
index 6721e57f..00000000
--- a/x11-themes/redcore-theme-sddm/files/redcore/Background.qml
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- SPDX-FileCopyrightText: 2016 Boudhayan Gupta <bgupta@kde.org>
-
- SPDX-License-Identifier: LGPL-2.0-or-later
-*/
-
-import QtQuick 2.15
-
-FocusScope {
- id: sceneBackground
-
- property var sceneBackgroundType
- property alias sceneBackgroundColor: sceneColorBackground.color
- property alias sceneBackgroundImage: sceneImageBackground.source
-
- Rectangle {
- id: sceneColorBackground
- anchors.fill: parent
- }
-
- Image {
- id: sceneImageBackground
- anchors.fill: parent
- sourceSize.width: parent.width
- sourceSize.height: parent.height
- fillMode: Image.PreserveAspectCrop
- smooth: true;
- }
-
- states: [
- State {
- name: "imageBackground"
- when: sceneBackgroundType === "image"
- PropertyChanges {
- target: sceneColorBackground
- visible: false
- }
- PropertyChanges {
- target: sceneImageBackground
- visible: true
- }
- },
- State {
- name: "colorBackground"
- when: sceneBackgroundType !== "image"
- PropertyChanges {
- target: sceneColorBackground
- visible: true
- }
- PropertyChanges {
- target: sceneImageBackground
- visible: false
- }
- }
- ]
-}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/CapsOn.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/CapsOn.qml
new file mode 100644
index 00000000..64578872
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/CapsOn.qml
@@ -0,0 +1,21 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Rectangle {
+ id: capsButton
+
+ color: "transparent"
+
+ x: -50
+
+ Text {
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ text: "Caps Lock is on"
+ renderType: Text.NativeRendering
+ font.weight: Font.Bold
+ font.pointSize: 12
+ }
+}
+
+
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/FalsePass.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/FalsePass.qml
new file mode 100644
index 00000000..026a89c4
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/FalsePass.qml
@@ -0,0 +1,168 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+FocusScope {
+
+ Text {
+ id: falseText
+ text: "The password is incorrect. Try again."
+ color: "white"
+ font.pointSize: 11
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ x: -falseText.width / 2
+ }
+
+ Button {
+ id: falseButton
+ hoverEnabled: true
+ width: 120
+ height: 33
+
+ x: 1
+ y: 1
+
+ Text {
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ text: "OK"
+ renderType: Text.NativeRendering
+ font.pointSize: 11
+ anchors.centerIn: parent
+ }
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ topMargin: 25
+ top: falseText.bottom
+ }
+
+ background: Rectangle {
+ id: falseButtonBackground
+ color: "#35FFFFFF"
+ border.color: "#35FFFFFF"
+ border.width: 2
+ }
+
+ states: [
+ State {
+ name: "1hovered"
+ when: falseButton.hovered
+ PropertyChanges {
+ target: falseButtonBackground
+ border.color: "#90FFFFFF"
+ }
+ },
+ State {
+ name: "2hovered"
+ when: falseBg.hovered
+ PropertyChanges {
+ target: falseButtonBackground
+ border.color: "#90FFFFFF"
+ }
+ },
+ State {
+ name: "3hovered"
+ when: falseBg2.hovered
+ PropertyChanges {
+ target: falseButtonBackground
+ border.color: "#90FFFFFF"
+ }
+ }
+ ]
+
+ Button {
+ id: falseBg
+ hoverEnabled: true
+ width: 122
+ height: 35
+
+ x: -1
+ y: -1
+
+ background: Rectangle {
+ id: bgBackground
+ color: "transparent"
+ border.color: "black"
+ border.width: 1
+ }
+ }
+
+ Button {
+ id: falseBg2
+ hoverEnabled: true
+ focus: true
+
+ x: -3
+ y: -3
+
+ width: 126
+ height: 39
+
+ background: Rectangle {
+ id: bg2Background
+ color: "transparent"
+ border.color: "white"
+ border.width: 2
+ }
+
+ onClicked: {
+ falsePass.visible = false
+
+ passwordField.visible = config.PinMode === "off" ? true : false
+ passwordField.enabled = config.PinMode === "off" ? true : false
+ passwordField.focus = config.PinMode === "off" ? true : false
+
+ passwordFieldPin.visible = config.PinMode === "off" ? false : true
+ passwordFieldPin.enabled = config.PinMode === "off" ? false : true
+ passwordFieldPin.focus = config.PinMode === "off" ? false : true
+
+ leftPanel.visible = listView2.count > 1 ? true : false
+ rightPanel.visible = true
+
+ passwordField.text = ""
+
+ passwordFieldPin.text = ""
+ }
+
+ Keys.onReturnPressed: {
+ falsePass.visible = false
+
+ passwordField.visible = config.PinMode === "off" ? true : false
+ passwordField.enabled = config.PinMode === "off" ? true : false
+ passwordField.focus = config.PinMode === "off" ? true : false
+
+ passwordFieldPin.visible = config.PinMode === "off" ? false : true
+ passwordFieldPin.enabled = config.PinMode === "off" ? false : true
+ passwordFieldPin.focus = config.PinMode === "off" ? false : true
+
+ leftPanel.visible = listView2.count > 1 ? true : false
+ rightPanel.visible = true
+
+ passwordField.text = ""
+
+ passwordFieldPin.text = ""
+ }
+
+ Keys.onEnterPressed: {
+ falsePass.visible = false
+
+ passwordField.visible = config.PinMode === "off" ? true : false
+ passwordField.enabled = config.PinMode === "off" ? true : false
+ passwordField.focus = config.PinMode === "off" ? true : false
+
+ passwordFieldPin.visible = config.PinMode === "off" ? false : true
+ passwordFieldPin.enabled = config.PinMode === "off" ? false : true
+ passwordFieldPin.focus = config.PinMode === "off" ? false : true
+
+ leftPanel.visible = listView2.count > 1 ? true : false
+ rightPanel.visible = true
+
+ passwordField.text = ""
+
+ passwordFieldPin.text = ""
+ }
+ }
+ }
+}
+
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/LayoutPanel.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/LayoutPanel.qml
new file mode 100644
index 00000000..f2cd9188
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/LayoutPanel.qml
@@ -0,0 +1,213 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Item {
+ implicitHeight: layoutButton.height
+ implicitWidth: layoutButton.width
+
+ signal valueChanged(int id)
+
+ // This gives an error but works, applying what the error says causes it to not work so this stays like that for a while.
+ onValueChanged: {
+ keyboard.currentLayout = id
+ }
+
+ DelegateModel {
+ id: layoutWrapper
+
+ model: keyboard.layouts
+ delegate: ItemDelegate {
+ id: layoutEntry
+ width: parent.width
+ height: 34
+ highlighted: layoutList.currentIndex == index
+
+ contentItem: Text {
+ renderType: Text.NativeRendering
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ elide: Text.ElideRight
+ color: "white"
+ text: modelData.longName
+ }
+
+ background: Rectangle {
+ id: layoutEntryBackground
+ color: "transparent"
+ }
+
+ states: [
+ State {
+ name: "focused"
+ when: layoutEntry.focus
+ PropertyChanges {
+ target: layoutEntryBackground
+ color: config.color
+ }
+ },
+
+ State {
+ name: "hovered"
+ when: layoutEntry.hovered
+ PropertyChanges {
+ target: layoutEntryBackground
+ color: "#343434"
+ }
+ }
+ ]
+
+ MouseArea {
+ anchors.fill: parent
+
+ onPressed: {
+ layoutEntryBackground.color = "#35FFFFFF"
+ }
+
+ onReleased: {
+ if (layoutEntry.focus) {
+ layoutEntryBackground.color = config.color
+ }
+ else {
+ layoutEntryBackground.color = "#1E1E1E"
+ }
+ }
+
+ onClicked: {
+ layoutList.currentIndex = index
+ layoutPopup.close()
+ valueChanged(layoutList.currentIndex)
+ }
+ }
+ }
+ }
+
+ Button {
+ id: layoutButton
+ height: 50
+ width: 50
+ hoverEnabled: true
+
+ Text {
+ color: "white"
+ text: keyboard.layouts[keyboard.currentLayout].shortName
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.capitalization: Font.AllUppercase
+ renderType: Text.NativeRendering
+ font.pointSize: 12
+
+ anchors {
+ horizontalCenter: layoutButton.horizontalCenter
+ verticalCenter: layoutButton.verticalCenter
+ }
+ }
+
+ ToolTip {
+ id: layoutButtonTip
+
+ delay: 1000
+ timeout: 4800
+ leftPadding: 9
+ rightPadding: 9
+ topPadding: 7
+ bottomPadding: 7
+ y: layoutButton.height + 5
+ z: 2
+ visible: layoutButton.hovered
+
+ contentItem: Text {
+ text: keyboard.layouts[keyboard.currentLayout].longName
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ color: "white"
+ }
+
+ background: Rectangle {
+ color: "#2A2A2A"
+ border.width: 1
+ border.color: "#1A1A1A"
+ }
+ }
+
+ background: Rectangle {
+ id: layoutButtonBackground
+ color: "transparent"
+ }
+
+ states: [
+ State {
+ name: "pressed"
+ when: layoutButton.down
+ PropertyChanges {
+ target: layoutButtonBackground
+ color: "#33FFFFFF"
+ }
+ },
+ State {
+ name: "hovered"
+ when: layoutButton.hovered
+ PropertyChanges {
+ target: layoutButtonBackground
+ color: "#1AFFFFFF"
+ }
+ },
+ State {
+ name: "selection"
+ when: layoutPopup.visible
+ PropertyChanges {
+ target: layoutButtonBackground
+ color: "transparent"
+ }
+ }
+ ]
+
+ onClicked: {
+ layoutPopup.visible ? layoutPopup.close() : layoutPopup.open()
+ layoutPopup.visible === layoutPopup.open ; layoutButton.state = "selection"
+ layoutButtonTip.hide()
+ }
+ }
+
+ Popup {
+ id: layoutPopup
+ width: 121
+ x: Math.round((parent.width - width) / 2)
+ y: Math.round(-layoutButton.height -(layoutPopup.height) + 45)
+ topPadding: 5
+ bottomPadding: 5
+ leftPadding: 0
+ rightPadding: 0
+
+ background: Rectangle {
+ color: "#1E1E1E"
+ }
+
+ contentItem: ListView {
+ id: layoutList
+ implicitHeight: contentHeight
+ model: layoutWrapper
+ currentIndex: keyboard.currentLayout
+ clip: true
+ interactive: false
+ }
+
+ enter: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 0
+ to: 1
+ easing.type: Easing.OutCirc
+ }
+ }
+
+ exit: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 1
+ to: 0
+ easing.type: Easing.OutCirc
+ }
+ }
+ }
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/LoginBg.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/LoginBg.qml
new file mode 100644
index 00000000..6b190804
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/LoginBg.qml
@@ -0,0 +1,53 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Button {
+ id: loginBg
+ hoverEnabled: true
+ width: 0
+ height: 0
+
+ background: Rectangle {
+ id: loginbgBackground
+ width: 293
+ height: 36
+ x: -2
+ y: -2
+ color: "transparent"
+ border.color: "#70FFFFFF"
+ border.width: 2
+ }
+
+ states: [
+ State {
+ name: "hovered"
+ when: loginButton.hovered
+ PropertyChanges {
+ target: loginbgBackground
+ border.color: "#FFFFFF"
+ width: loginbgBackground.width
+ height: loginbgBackground.height
+ }
+ },
+
+ State {
+ when: revealButton.hovered
+ PropertyChanges {
+ target: loginbgBackground
+ border.color: "#FFFFFF"
+ width: loginbgBackground.width
+ height: loginbgBackground.height
+ }
+ },
+
+ State {
+ when: passwordField.hovered
+ PropertyChanges {
+ target: loginbgBackground
+ border.color: "#FFFFFF"
+ width: loginbgBackground.width
+ height: loginbgBackground.height
+ }
+ }
+ ]
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/LoginButton.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/LoginButton.qml
new file mode 100644
index 00000000..8cd15cb5
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/LoginButton.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Button {
+ id: loginButton
+ hoverEnabled: true
+ width: 31
+ height: 32
+ x: passwordField.width
+
+ Text {
+ color: "white"
+ text: String.fromCodePoint(0xebe7)
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe MDL2 Assets" : iconfont.name
+ font.pointSize: 13
+ renderType: Text.NativeRendering
+ anchors.centerIn: parent
+ }
+
+ background: Rectangle {
+ id: loginbuttonBackground
+ color: "#35FFFFFF"
+ }
+
+ states: [
+ State {
+ name: "pressed"
+ when: loginButton.down
+ PropertyChanges {
+ target: loginbuttonBackground
+ color: "#75FFFFFF"
+ }
+ }
+ ]
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordField.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordField.qml
new file mode 100644
index 00000000..076b8189
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordField.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+TextField {
+ id: passwordField
+ focus: true
+ visible: true
+ selectByMouse: true
+ placeholderText: "Password"
+
+ property alias text: passwordField.text
+
+ echoMode: TextInput.Password ? TextInput.Password : TextInput.Normal
+ selectionColor: config.color
+
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10.9
+ renderType: Text.NativeRendering
+
+ color: "black"
+
+ x: 3
+
+ horizontalAlignment: TextInput.AlignLeft
+ width: 258
+ height: 32
+
+ background: Rectangle {
+ id: passFieldBackground
+ color: "white"
+ x: -3
+ width: parent.width
+ height: parent.height
+ }
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordFieldPin.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordFieldPin.qml
new file mode 100644
index 00000000..cae4360a
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/PasswordFieldPin.qml
@@ -0,0 +1,35 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+TextField {
+ id: passwordFieldPin
+ focus: true
+ visible: true
+ selectByMouse: true
+ placeholderText: "PIN"
+
+ property alias text: passwordFieldPin.text
+
+ echoMode: TextInput.Password ? TextInput.Password : TextInput.Normal
+ selectionColor: config.color
+
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10.9
+ renderType: Text.NativeRendering
+
+ color: "black"
+
+ x: 3
+
+ horizontalAlignment: TextInput.AlignLeft
+ width: 289
+ height: 32
+
+ background: Rectangle {
+ id: passFieldBackgroundPin
+ color: "white"
+ x: -3
+ width: parent.width
+ height: parent.height
+ }
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/PowerPanel.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/PowerPanel.qml
new file mode 100644
index 00000000..0484850f
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/PowerPanel.qml
@@ -0,0 +1,390 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Item {
+ Button {
+ id: powerButton
+ height: 50
+ width: 50
+ hoverEnabled: true
+
+ Text {
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe MDL2 Assets" : iconfont.name
+ text: String.fromCodePoint(0xe7e8)
+ renderType: Text.NativeRendering
+ font.pointSize: powerButton.height / 2
+ anchors.centerIn: powerButton
+ }
+
+ ToolTip {
+ id: powerButtonTip
+
+ delay: 1000
+ timeout: 4800
+ leftPadding: 9
+ rightPadding: 9
+ topPadding: 7
+ bottomPadding: 7
+ y: powerButton.height + 5
+ z: 2
+ visible: powerButton.hovered
+
+ contentItem: Text {
+ text: "Power"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ color: "white"
+ }
+
+ background: Rectangle {
+ color: "#2A2A2A"
+ border.width: 1
+ border.color: "#1A1A1A"
+ }
+ }
+
+ background: Rectangle {
+ id: powerButtonBackground
+ color: "transparent"
+ }
+
+ states: [
+ State {
+ name: "pressed"
+ when: powerButton.down
+ PropertyChanges {
+ target: powerButtonBackground
+ color: "#33FFFFFF"
+ }
+ },
+
+ State {
+ name: "hovered"
+ when: powerButton.hovered
+ PropertyChanges {
+ target: powerButtonBackground
+ color: "#1AFFFFFF"
+ }
+ },
+
+ State {
+ name: "selection"
+ when: powerPopup.visible
+ PropertyChanges {
+ target: powerButtonBackground
+ color: "transparent"
+ }
+ }
+ ]
+
+ onClicked: {
+ powerPopup.visible ? powerPopup.close() : powerPopup.open()
+ powerPopup.visible === powerPopup.open ; powerButton.state = "selection"
+ powerButtonTip.hide()
+ }
+ }
+
+ Popup {
+ id: powerPopup
+ width: 125
+ height: poweroffButton.height + rebootButton.height + sleepButton.height + 10
+ x: Math.round((powerButton.width - width) / 2) - 13
+ y: -117
+ z: 3
+ topPadding: 5
+ bottomPadding: 5
+ leftPadding: 1
+ rightPadding: 1
+ background: Rectangle {
+ color: "#F51F1F1F"
+ border.width: 1
+ border.color: "black"
+ }
+
+ Button {
+ id: poweroffButton
+ width: parent.width
+ height: 34
+ hoverEnabled: true
+
+ ToolTip {
+ id: poweroffTip
+
+ delay: 1000
+ timeout: 4800
+ leftPadding: 9
+ rightPadding: 9
+ topPadding: 7
+ bottomPadding: 7
+ visible: poweroffButton.hovered
+
+ contentItem: Text {
+ text: "Closes all apps and turns off the PC."
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ color: "white"
+ }
+
+ background: Rectangle {
+ color: "#2A2A2A"
+ border.width: 1
+ border.color: "#1A1A1A"
+ }
+ }
+
+ background: Rectangle {
+ id: poweroffButtonBackground
+ color: "transparent"
+ border.width: 0
+ border.color: "#29292A"
+ }
+
+ Text {
+ text: "Shut Down"
+ color: "white"
+
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10
+ leftPadding: 10
+ renderType: Text.NativeRendering
+
+ anchors {
+ left: poweroffIcon.right
+ verticalCenter: poweroffButton.verticalCenter
+ }
+ }
+
+ Text {
+ id: poweroffIcon
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe MDL2 Assets" : iconfont.name
+ text: String.fromCodePoint(0xe7e8)
+ renderType: Text.NativeRendering
+ font.pointSize: 12
+
+ x: 10
+
+ anchors {
+ verticalCenter: poweroffButton.verticalCenter
+ }
+ }
+
+
+ states: [
+ State {
+ name: "hovered"
+ when: poweroffButton.hovered
+ PropertyChanges {
+ target: poweroffButtonBackground
+ color: "#30FFFFFF"
+ border.color: "#60FFFFFF"
+ border.width: 1
+ }
+ }
+ ]
+
+ onClicked: sddm.powerOff()
+ }
+
+ Button {
+ id: rebootButton
+ width: parent.width
+ height: 34
+ hoverEnabled: true
+
+ anchors {
+ horizontalCenter: poweroffButton.horizontalCenter
+ top: poweroffButton.bottom
+ }
+
+ background: Rectangle {
+ id: rebootButtonBackground
+ color: "transparent"
+ border.width: 0
+ border.color: "#29292A"
+ }
+
+ Text {
+ id: rebootText
+ text: "Restart"
+ color: "white"
+
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10
+ leftPadding: 10
+ renderType: Text.NativeRendering
+
+ anchors {
+ left: rebootIcon.right
+ verticalCenter: rebootButton.verticalCenter
+ }
+ }
+
+ Text {
+ id: rebootIcon
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe MDL2 Assets" : iconfont.name
+ text: String.fromCodePoint(0xe777)
+ renderType: Text.NativeRendering
+ font.pointSize: 12
+
+ x: 10
+
+ anchors {
+ verticalCenter: rebootButton.verticalCenter
+ }
+ }
+
+ ToolTip {
+ id: rebootButtonTip
+
+ delay: 1000
+ timeout: 4800
+ leftPadding: 9
+ rightPadding: 9
+ topPadding: 7
+ bottomPadding: 7
+ visible: rebootButton.hovered
+
+ contentItem: Text {
+ text: "Closes all apps, turns off the PC, and then turns it on
+again." // I had to make it like this, so it's normal, don't touch.
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ color: "white"
+ }
+
+ background: Rectangle {
+ color: "#2A2A2A"
+ border.width: 1
+ border.color: "#1A1A1A"
+ }
+ }
+
+ states: [
+ State {
+ name: "hovered"
+ when: rebootButton.hovered
+ PropertyChanges {
+ target: rebootButtonBackground
+ color: "#30FFFFFF"
+ border.color: "#60FFFFFF"
+ border.width: 1
+ }
+ }
+ ]
+
+ onClicked: sddm.reboot()
+ }
+
+ Button {
+ id: sleepButton
+ width: parent.width
+ height: 34
+ hoverEnabled: true
+
+ anchors {
+ horizontalCenter: rebootButton.horizontalCenter
+ top: rebootButton.bottom
+ }
+
+ background: Rectangle {
+ id: sleepButtonBackground
+ color: "transparent"
+ border.width: 0
+ border.color: "#29292A"
+ }
+
+ Text {
+ text: "Sleep"
+ color: "white"
+
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10
+ leftPadding: 10
+ renderType: Text.NativeRendering
+
+ anchors {
+ left: sleepIcon.right
+ verticalCenter: sleepButton.verticalCenter
+ }
+ }
+
+ Text {
+ id: sleepIcon
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe MDL2 Assets" : iconfont.name
+ text: String.fromCodePoint(0xe708)
+ renderType: Text.NativeRendering
+ font.pointSize: 12
+
+ x: 10
+
+ anchors {
+ verticalCenter: sleepButton.verticalCenter
+ }
+ }
+
+ ToolTip {
+ id: sleepButtonTip
+
+ delay: 1000
+ timeout: 4800
+ leftPadding: 9
+ rightPadding: 9
+ topPadding: 7
+ bottomPadding: 7
+ visible: sleepButton.hovered
+
+ contentItem: Text {
+ text: "The PC stays on but uses low power. Apps stay open so
+when the PC wakes up, you're instantly back to where
+you left off." // Again, it had to be like this, don't touch.
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ color: "white"
+ }
+
+ background: Rectangle {
+ color: "#2A2A2A"
+ border.width: 1
+ border.color: "#1A1A1A"
+ }
+ }
+
+ states: [
+ State {
+ name: "hovered"
+ when: sleepButton.hovered
+ PropertyChanges {
+ target: sleepButtonBackground
+ color: "#30FFFFFF"
+ border.color: "#60FFFFFF"
+ border.width: 1
+ }
+ }
+ ]
+
+ onClicked: sddm.suspend()
+ }
+
+ enter: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 0
+ to: 1
+ easing.type: Easing.OutCirc
+ }
+ }
+
+ exit: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 1
+ to: 0
+ easing.type: Easing.OutCirc
+ }
+ }
+ }
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/RevealButton.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/RevealButton.qml
new file mode 100644
index 00000000..9c1afa5d
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/RevealButton.qml
@@ -0,0 +1,68 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Button {
+ id: revealButton
+ hoverEnabled: true
+ width: 32
+ height: 32
+
+ x: passwordField.width - loginButton.width
+
+ Text {
+ id: revealText
+ color: "black"
+ text: String.fromCodePoint(0xe18b)
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe MDL2 Assets" : iconfont.name
+ font.pointSize: 10
+ renderType: Text.NativeRendering
+ anchors.centerIn: parent
+ }
+
+ background: Rectangle {
+ id: revealButtonBackground
+ color: "white"
+ }
+
+ states: [
+ State {
+ name: "on"
+ when: revealButton.down
+ PropertyChanges {
+ target: passwordField
+ echoMode: TextInput.Normal
+ }
+ PropertyChanges {
+ target: passwordFieldPin
+ echoMode: TextInput.Normal
+ }
+ PropertyChanges {
+ target: revealButtonBackground
+ color: config.color
+ }
+ PropertyChanges {
+ target: revealText
+ color: "white"
+ }
+ },
+ State {
+ name: "off"
+ PropertyChanges {
+ target: passwordField
+ echoMode: TextInput.Password
+ }
+ PropertyChanges {
+ target: passwordFieldPin
+ echoMode: TextInput.Password
+ }
+ },
+ State {
+ name: "hovered"
+ when: revealButton.hovered
+ PropertyChanges {
+ target: revealText
+ color: config.color
+ }
+ }
+ ]
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/SessionPanel.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/SessionPanel.qml
new file mode 100644
index 00000000..49ec000b
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/SessionPanel.qml
@@ -0,0 +1,354 @@
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Item {
+ property int session: sessionList.currentIndex
+
+ implicitHeight: sessionButton.height
+ implicitWidth: sessionButton.width
+
+ DelegateModel {
+ id: sessionWrapper
+ model: sessionModel
+ delegate: ItemDelegate {
+ id: sessionEntry
+ width: parent.width
+ height: 36
+ highlighted: sessionList.currentIndex == index
+ contentItem: Text {
+ renderType: Text.NativeRendering
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10
+ verticalAlignment: Text.AlignVCenter
+ color: "black"
+ text: name
+
+ Text {
+ id: offon
+ text: "Off"
+ color: "black"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.weight: Font.Bold
+ font.pointSize: 10
+ renderType: Text.NativeRendering
+
+ anchors {
+ verticalCenter: parent.verticalCenter
+ bottom: parent.top
+ bottomMargin: 5
+ }
+ }
+
+ Button {
+ id: sessionLever
+ width: 46
+ height: 15
+ z: 3
+
+ anchors {
+ top: parent.bottom
+ topMargin: 7
+ right: parent.right
+ rightMargin: 7
+ }
+
+ background: Rectangle {
+ id: sessionLeverBackground
+ color: "#A6A6A6"
+ border.color: "white"
+ border.width: 1
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ onClicked: {
+ sessionList.currentIndex = index
+ }
+ }
+
+ Button {
+ id: leftblackLever
+ width: 12
+ height: 19
+
+ anchors {
+ verticalCenter: parent.verticalCenter
+ left: parent.left
+ leftMargin: -2
+ }
+
+ background: Rectangle {
+ color: "black"
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ onClicked: {
+ sessionList.currentIndex = index
+ }
+ }
+ }
+
+ Button {
+ id: rightblackLever
+ width: 12
+ height: 19
+ visible: false
+
+ anchors {
+ verticalCenter: parent.verticalCenter
+ right: parent.right
+ rightMargin: -2
+ }
+
+ background: Rectangle {
+ color: "black"
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ onClicked: {
+ sessionList.currentIndex = index
+ }
+ }
+ }
+
+ Button {
+ width: 50
+ height: 19
+
+ anchors {
+ top: parent.bottom
+ topMargin: 5
+ right: parent.right
+ rightMargin: 5
+ }
+
+ MouseArea {
+ anchors.fill: parent
+
+ onClicked: {
+ sessionList.currentIndex = index
+ }
+ }
+
+ background: Rectangle {
+ id: leverBack
+ color: "#A6A6A6"
+ }
+ }
+ }
+
+ background: Rectangle {
+ id: sessionEntryBackground
+ color: "transparent"
+ }
+
+ states: [
+ State {
+ name: "focused"
+ when: sessionEntry.focus
+ PropertyChanges {
+ target: sessionLeverBackground
+ color: config.color
+ }
+ PropertyChanges {
+ target: rightblackLever
+ visible: true
+ }
+ PropertyChanges {
+ target: leftblackLever
+ visible: false
+ }
+ PropertyChanges {
+ target: offon
+ text: "On"
+ }
+ },
+
+ State {
+ name: "hovered"
+ when: sessionLever.hovered
+ PropertyChanges {
+ target: sessionLeverBackground
+ color: "#B5B5B5"
+ }
+ }
+ ]
+ }
+ }
+
+ Button {
+ id: sessionButton
+ height: 50
+ width: 50
+ hoverEnabled: true
+
+ Text {
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe MDL2 Assets" : iconfont.name
+ text: String.fromCodePoint(0xe776)
+ renderType: Text.NativeRendering
+ font.pointSize: sessionButton.height / 2
+ anchors.centerIn: sessionButton
+ }
+
+ ToolTip {
+ id: sessionButtonTip
+
+ delay: 1000
+ timeout: 4800
+ leftPadding: 9
+ rightPadding: 9
+ topPadding: 7
+ bottomPadding: 7
+ y: sessionButton.height + 5
+ z: 2
+ visible: sessionButton.hovered
+
+ contentItem: Text {
+ text: "Session"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ color: "white"
+ }
+
+ background: Rectangle {
+ color: "#2A2A2A"
+ border.width: 1
+ border.color: "#1A1A1A"
+ }
+ }
+
+ background: Rectangle {
+ id: sessionButtonBackground
+ color: "transparent"
+ }
+
+ states: [
+ State {
+ name: "pressed"
+ when: sessionButton.down
+ PropertyChanges {
+ target: sessionButtonBackground
+ color: "#33FFFFFF"
+ }
+ },
+
+ State {
+ name: "hovered"
+ when: sessionButton.hovered
+ PropertyChanges {
+ target: sessionButtonBackground
+ color: "#1AFFFFFF"
+ }
+ },
+
+ State {
+ name: "selection"
+ when: sessionPopup.visible
+ PropertyChanges {
+ target: sessionButtonBackground
+ color: "transparent"
+ }
+ }
+ ]
+
+ onClicked: {
+ sessionPopup.visible ? sessionPopup.close() : sessionPopup.open()
+ sessionPopup.visible === sessionPopup.open ; sessionButton.state = "selection"
+ sessionButtonTip.hide()
+ }
+ }
+
+ Popup {
+ id: sessionPopup
+ width: 175
+ x: Math.round((parent.width - width) / 2)
+ y: Math.round(-sessionButton.height -(sessionPopup.height) + 45)
+ z: 3
+ topPadding: 5
+ bottomPadding: 15
+ leftPadding: 15
+ rightPadding: 15
+
+ background: Rectangle {
+ color: "white"
+ border.width: 1
+ border.color: "black"
+
+ Button {
+ id: screenKeyboard
+ width: parent.width - 2
+ height: 41
+ x: 1
+ y: 1
+ z: 3
+
+ visible: false // disabled for now because i have no idea how to add on screen keyboard :3
+ enabled: false
+
+ Text {
+ color: "black"
+ text: "On-Screen Keyboard"
+ renderType: Text.NativeRendering
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10
+ anchors {
+ verticalCenter: parent.verticalCenter
+ left: parent.left
+ leftMargin: 20
+ }
+ }
+
+ states: [
+ State {
+ name: "hovered"
+ when: screenKeyboard.hovered
+ PropertyChanges {
+ target: screenKeyboardBackground
+ color: "#30000000"
+ }
+ }
+ ]
+
+ background: Rectangle {
+ id: screenKeyboardBackground
+ color: "transparent"
+ }
+ }
+ }
+
+ contentItem: ListView {
+ id: sessionList
+ implicitHeight: contentHeight + 20
+ model: sessionWrapper
+ currentIndex: sessionModel.lastIndex
+ clip: true
+ spacing: 25
+ interactive: false
+ }
+
+ enter: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 0
+ to: 1
+ easing.type: Easing.OutCirc
+ }
+ }
+
+ exit: Transition {
+ NumberAnimation {
+ property: "opacity"
+ from: 1
+ to: 0
+ easing.type: Easing.OutCirc
+ }
+ }
+ }
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/TruePass.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/TruePass.qml
new file mode 100644
index 00000000..58032049
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/TruePass.qml
@@ -0,0 +1,787 @@
+// UNUSED FILE!
+// Planning to use boot up animation but I can't because SDDM isn't made for something like this.
+// https://github.com/sddm/sddm/issues/1960
+
+
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+
+Rectangle {
+ id: trueButton
+ x: 1
+ y: 1
+ color: "transparent"
+
+ Text {
+ id: welcome
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ text: "Welcome"
+ renderType: Text.NativeRendering
+ font.weight: Font.Normal
+ font.pointSize: 16.5
+ anchors.centerIn: parent
+ }
+
+ Text {
+ id: splash
+ color: "white"
+ text: ""
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe Boot Semilight" : animFont.name
+ renderType: Text.NativeRendering
+ font.weight: Font.Normal
+ font.pointSize: 17
+
+ anchors {
+ left: welcome.left
+ leftMargin: -45
+ verticalCenter: parent.verticalCenter
+ }
+
+ SequentialAnimation {
+ id: seqStart
+ running: true
+ loops: Animation.Infinite
+
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 1
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 2
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 3
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 4
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 5
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 6
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 7
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 8
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 9
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 10
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 11
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 12
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 13
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //14
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 15
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 16
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 17
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 18
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 19
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 20
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 21
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 22
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 23
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 24
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 25
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //26
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 27
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 28
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 29
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 30
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 31
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 32
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 33
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 34
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 35
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 36
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 37
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 38
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 39
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 40
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 41
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 42
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 43
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 44
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 45
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 46
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 47
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 48
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 49
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 50
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 51
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 52
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 53
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 54
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 55
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 56
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 57
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // sivas
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 59
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 60
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 61
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //62
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 63
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 64
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 65
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 66
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 67
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 68
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // haha funni number
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 70
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 71
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 72
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 73
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 74
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 75
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 76
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 77
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 78
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 79
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 80
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 81
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 82
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 83
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 84
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //85
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 86
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 87
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 88
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 89
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 90
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 91
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 92
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 93
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 94
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //95
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 96
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 97
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 98
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 99
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 100
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 101
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 102
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 103
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 104
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 105
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 106
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 107
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 108
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 109
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 110
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 111
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 112
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 113
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 114
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 115
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 116
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 117
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 118
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 119
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 120
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 121
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 122
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 123
+ duration: 30
+ }
+ }
+ }
+}
+
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/UserList.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/UserList.qml
new file mode 100644
index 00000000..d5437224
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/UserList.qml
@@ -0,0 +1,113 @@
+import QtQuick 2.15
+import QtQuick.Layouts 2.15
+import QtQuick.Controls 2.15
+import Qt5Compat.GraphicalEffects
+
+Rectangle {
+ id: container
+
+ property alias name: name.text
+ property alias icon: icon.source
+
+ height: 58
+ color: "transparent"
+
+ anchors.left: parent.left
+
+ MouseArea {
+ id: rectArea
+ hoverEnabled: true
+ anchors.fill: parent
+
+ onEntered: {
+ if (container.focus == false)
+ container.color = "#30FFFFFF";
+ }
+
+ onExited: {
+ if (container.focus == false)
+ container.color = "transparent";
+ }
+ }
+
+ states: [
+ State {
+ name: "focused"
+ when: container.focus
+ PropertyChanges {
+ target: container
+ color: config.color
+ }
+ },
+ State {
+ name: "unfocused"
+ when: !container.focus
+ PropertyChanges {
+ target: container
+ color: "transparent"
+ }
+ }
+ ]
+
+ Item {
+ id: users
+
+ Image {
+ id: icon
+ width: 48
+ height: 48
+ smooth: true
+ visible: false
+
+ onStatusChanged: {
+ if (icon.status == Image.Error)
+ icon.source = "../user-192.png"
+ else
+ "/var/lib/AccountsService/icons/" + name
+ }
+
+ x: 12
+ y: 5
+ }
+
+ OpacityMask {
+ id: img
+ anchors.fill: icon
+ source: icon
+ maskSource: mask
+ }
+
+ Item {
+ id: mask
+ width: icon.width
+ height: icon.height
+ layer.enabled: true
+ visible: false
+
+ Rectangle {
+ width: icon.width
+ height: icon.height
+ radius: width / 2
+ color: "black"
+ }
+ }
+
+ Text {
+ id: name
+ renderType: Text.NativeRendering
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ font.pointSize: 10
+ elide: Text.ElideRight
+ verticalAlignment: Text.AlignVCenter
+ clip: true
+
+ color: "white"
+
+ anchors {
+ verticalCenter: img.verticalCenter
+ left: img.right
+ leftMargin: 12
+ }
+ }
+ }
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Components/UserPanel.qml b/x11-themes/redcore-theme-sddm/files/redcore/Components/UserPanel.qml
new file mode 100644
index 00000000..24ca7bb0
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Components/UserPanel.qml
@@ -0,0 +1,1092 @@
+import QtQuick 2.15
+import QtQuick.Window 2.15
+import QtQuick.Controls 2.15
+import Qt5Compat.GraphicalEffects
+
+FocusScope {
+
+ property alias icon: icon.source
+
+ property alias name: name.text
+
+ property alias password: passwordField.text
+
+ property alias passwordpin: passwordFieldPin.text
+
+ property int session: sessionPanel.session
+
+ Connections {
+ target: sddm
+
+ function onLoginFailed() {
+ truePass.visible = false
+
+ passwordField.visible = false
+ passwordField.enabled = false
+ passwordField.focus = false
+
+ rightPanel.visible = false
+ leftPanel.visible = false
+
+ passwordFieldPin.visible = false
+ passwordFieldPin.enabled = false
+ passwordFieldPin.focus = false
+
+ falsePass.visible = true
+ falsePass.focus = true
+
+ bootani.stop()
+ }
+
+ function onLoginSucceeded() {} //broken, but this time it's not my fault. see https://github.com/sddm/sddm/issues/1960
+ }
+
+ Image {
+ id: icon
+ width: 192
+ height: 192
+ smooth: true
+ visible: false
+
+ onStatusChanged: {
+ if (icon.status == Image.Error)
+ icon.source = "../user-192.png"
+ else
+ "/var/lib/AccountsService/icons/" + name
+ }
+
+ x: -(icon.width / 2)
+ y: -(icon.width * 2) + (icon.width * 0.8)
+ }
+
+ OpacityMask {
+ anchors.fill: icon
+ source: icon
+ maskSource: mask
+ }
+
+ Item {
+ id: mask
+ width: icon.width
+ height: icon.height
+ layer.enabled: true
+ visible: false
+
+ Rectangle {
+ width: icon.width
+ height: icon.height
+ radius: width / 2
+ color: "black"
+ }
+ }
+
+ Text {
+ id: name
+ color: "white"
+ font.pointSize: 40
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI Light" : segoeuil.name
+ renderType: Text.NativeRendering
+
+ anchors {
+ topMargin: 15
+ horizontalCenter: icon.horizontalCenter
+ top: icon.bottom
+ }
+ }
+
+ PasswordField {
+ id: passwordField
+ visible: config.PinMode === "off" ? true : false
+ enabled: config.PinMode === "off" ? true : false
+ focus: config.PinMode === "off" ? true : false
+ x: -135
+
+ anchors {
+ topMargin: 25
+ top: name.bottom
+ }
+
+ onTextChanged: {
+ if (passwordField.text !== "") {
+ passwordField.width = 226
+ loginButton.x = passwordField.width + loginButton.width + 1
+ revealButton.x = passwordField.width
+ revealButton.visible = true
+ }
+
+ else {
+ passwordField.width = 258
+ revealButton.visible = false
+ }
+ }
+
+ Keys.onReturnPressed: {
+ truePass.visible = true
+ passwordField.visible = false
+ passwordFieldPin.visible = false
+ rightPanel.visible = false
+ leftPanel.visible = false
+ sddm.login(model.name, password, session)
+
+ bootani.start()
+ }
+
+ Keys.onEnterPressed: {
+ truePass.visible = true
+ passwordField.visible = false
+ passwordFieldPin.visible = false
+ rightPanel.visible = false
+ leftPanel.visible = false
+ sddm.login(model.name, password, session)
+
+ bootani.start()
+ }
+
+ LoginBg {
+ id: loginBg
+
+ x: -3
+
+ LoginButton {
+ id: loginButton
+ visible: true
+
+ ToolTip {
+ id: loginButtonTip
+
+ delay: 1000
+ timeout: 4800
+ leftPadding: 9
+ rightPadding: 9
+ topPadding: 7
+ bottomPadding: 7
+ visible: loginButton.hovered
+
+ contentItem: Text {
+ text: "Submit"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ renderType: Text.NativeRendering
+ color: "white"
+ }
+
+ background: Rectangle {
+ color: "#2A2A2A"
+ border.width: 1
+ border.color: "#1A1A1A"
+ }
+ }
+
+ onClicked: {
+ loginButtonTip.hide()
+ truePass.visible = true
+ rightPanel.visible = false
+ leftPanel.visible = false
+ passwordField.visible = false
+ passwordFieldPin.visible = false
+ sddm.login(model.name, password, session)
+
+ bootani.start()
+ }
+ }
+
+ RevealButton {
+ id: revealButton
+ visible: false
+ }
+ }
+ }
+
+ PasswordFieldPin {
+ id: passwordFieldPin
+ visible: config.PinMode === "off" ? false : true
+ enabled: config.PinMode === "off" ? false : true
+ focus: config.PinMode === "off" ? false : true
+
+ x: -135
+
+ validator: IntValidator { // this dude allows only numbers to be typed, if something goes wrong, blame this dude.
+ bottom: 8
+ top: 1000
+ }
+
+ anchors {
+ topMargin: 25
+ top: name.bottom
+ }
+
+ onTextChanged: {
+ if (passwordFieldPin.text !== "") {
+ passwordFieldPin.width = 257
+ revealButtonPin.x = passwordFieldPin.width
+ revealButtonPin.visible = true
+ }
+
+ else {
+ passwordFieldPin.width = 289
+ revealButtonPin.visible = false
+ }
+
+ if (passwordFieldPin.length > 3 ) {
+ rightPanel.visible = false
+ leftPanel.visible = false
+ sddm.login(model.name, password, session)
+
+ bootani.start()
+ }
+ }
+
+ LoginBg {
+ id: loginBgPin
+
+ x: -3
+
+ RevealButton {
+ id: revealButtonPin
+ visible: false
+ }
+ }
+ }
+
+ FalsePass {
+ id: falsePass
+ visible: false
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ topMargin: 25
+ top: name.bottom
+ }
+ }
+
+ Rectangle {
+ id: truePass
+ x: 1
+ y: 1
+ color: "transparent"
+ visible: false
+
+ Text {
+ id: welcome
+ color: "white"
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI" : segoeui.name
+ text: "Welcome"
+ renderType: Text.NativeRendering
+ font.weight: Font.DemiBold
+ font.pointSize: 17
+ anchors.centerIn: parent
+
+ leftPadding: 50
+ topPadding: 155
+ }
+
+ Rectangle {
+ id: trueButton
+ color: "transparent"
+
+ FontLoader {
+ id: animFont
+ source: Qt.resolvedUrl("../fonts/SegoeBoot-Semilight.woff")
+ }
+
+ anchors.left: welcome.right
+ anchors.top: welcome.bottom
+
+ Text {
+ id: splash
+ color: "white"
+ text: ""
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe Boot Semilight" : animFont.name
+ renderType: Text.NativeRendering
+ font.weight: Font.Normal
+ font.pointSize: 24
+
+ topPadding: -25
+ leftPadding: -150
+
+ visible: true
+ // visible: animFont.status == FontLoader.Ready ? true : false
+
+ anchors {
+ verticalCenter: parent.verticalCenter
+ }
+
+ SequentialAnimation {
+ id: bootani
+ running: false
+ loops: Animation.Infinite
+
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 1
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 2
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 3
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 4
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 5
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 6
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 7
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 8
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 9
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 10
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 11
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 12
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 13
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //14
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 15
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 16
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 17
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 18
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 19
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 20
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 21
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 22
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 23
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 24
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 25
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //26
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 27
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 28
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 29
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 30
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 31
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 32
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 33
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 34
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 35
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 36
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 37
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 38
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 39
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 40
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 41
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 42
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 43
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 44
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 45
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 46
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 47
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 48
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 49
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 50
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 51
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 52
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 53
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 54
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 55
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 56
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 57
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // sivas
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 59
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 60
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 61
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //62
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 63
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 64
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 65
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 66
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 67
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 68
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // haha funni number
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 70
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 71
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 72
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 73
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 74
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 75
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 76
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 77
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 78
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 79
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 80
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 81
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 82
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 83
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 84
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //85
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 86
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 87
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 88
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 89
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 90
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 91
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 92
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 93
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 94
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" //95
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 96
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 97
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 98
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 99
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 100
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 101
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 102
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 103
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 104
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 105
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 106
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 107
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 108
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 109
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 110
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 111
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 112
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 113
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 114
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 115
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 116
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 117
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 118
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 119
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 120
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 121
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 122
+ duration: 30
+ }
+ PropertyAnimation {
+ target: splash
+ property: "text"
+ to: "" // 123
+ duration: 30
+ }
+ }
+ }
+ }
+
+
+ }
+
+ CapsOn {
+ id: capsOn
+ visible: false
+
+ state: keyboard.capsLock ? "on" : "off"
+
+ states: [
+ State {
+ name: "on"
+ PropertyChanges {
+ target: capsOn
+ visible: true
+ }
+ },
+
+ State {
+ name: "off"
+ PropertyChanges {
+ target: capsOn
+ visible: false
+ }
+ }
+ ]
+
+ anchors {
+ top: passwordField.bottom
+ topMargin: 25
+ }
+ }
+}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/KeyboardButton.qml b/x11-themes/redcore-theme-sddm/files/redcore/KeyboardButton.qml
deleted file mode 100644
index cd9f97bd..00000000
--- a/x11-themes/redcore-theme-sddm/files/redcore/KeyboardButton.qml
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org>
- SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org>
-
- SPDX-License-Identifier: LGPL-2.0-or-later
-*/
-
-import QtQuick 2.15
-
-import org.kde.plasma.components 3.0 as PlasmaComponents
-import org.kde.kirigami 2.20 as Kirigami
-
-PlasmaComponents.ToolButton {
- id: root
-
- property int currentIndex: keyboard.currentLayout
- onCurrentIndexChanged: keyboard.currentLayout = currentIndex
-
- text: i18nd("plasma-desktop-sddm-theme", "Keyboard Layout: %1", keyboard.layouts[currentIndex].longName)
- visible: keyboard.layouts.length > 1
-
- checkable: true
- checked: menu.opened
- onToggled: {
- if (checked) {
- menu.popup(root, 0, 0)
- } else {
- menu.dismiss()
- }
- }
-
- signal keyboardLayoutChanged()
-
- PlasmaComponents.Menu {
- id: menu
- Kirigami.Theme.colorSet: Kirigami.Theme.Window
- Kirigami.Theme.inherit: false
-
- onAboutToShow: {
- if (instantiator.model === null) {
- let layouts = keyboard.layouts;
- layouts.sort((a, b) => a.longName.localeCompare(b.longName));
- instantiator.model = layouts;
- }
- }
-
- Instantiator {
- id: instantiator
- model: null
- onObjectAdded: (index, object) => menu.insertItem(index, object)
- onObjectRemoved: (index, object) => menu.removeItem(object)
- delegate: PlasmaComponents.MenuItem {
- text: modelData.longName
- onTriggered: {
- keyboard.currentLayout = keyboard.layouts.indexOf(modelData)
- root.keyboardLayoutChanged()
- }
- }
- }
- }
-}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Login.qml b/x11-themes/redcore-theme-sddm/files/redcore/Login.qml
deleted file mode 100644
index 22751b01..00000000
--- a/x11-themes/redcore-theme-sddm/files/redcore/Login.qml
+++ /dev/null
@@ -1,156 +0,0 @@
-import org.kde.breeze.components
-
-import QtQuick 2.15
-import QtQuick.Layouts 1.15
-import QtQuick.Controls 2.15 as QQC2
-
-import org.kde.plasma.components 3.0 as PlasmaComponents3
-import org.kde.plasma.extras 2.0 as PlasmaExtras
-import org.kde.kirigami 2.20 as Kirigami
-
-SessionManagementScreen {
- id: root
- property Item mainPasswordBox: passwordBox
-
- property bool showUsernamePrompt: !showUserList
-
- property string lastUserName
- property bool loginScreenUiVisible: false
-
- //the y position that should be ensured visible when the on screen keyboard is visible
- property int visibleBoundary: mapFromItem(loginButton, 0, 0).y
- onHeightChanged: visibleBoundary = mapFromItem(loginButton, 0, 0).y + loginButton.height + Kirigami.Units.smallSpacing
-
- property real fontSize: Kirigami.Theme.defaultFont.pointSize
-
- signal loginRequest(string username, string password)
-
- onShowUsernamePromptChanged: {
- if (!showUsernamePrompt) {
- lastUserName = ""
- }
- }
-
- onUserSelected: {
- // Don't startLogin() here, because the signal is connected to the
- // Escape key as well, for which it wouldn't make sense to trigger
- // login.
- focusFirstVisibleFormControl();
- }
-
- QQC2.StackView.onActivating: {
- // Controls are not visible yet.
- Qt.callLater(focusFirstVisibleFormControl);
- }
-
- function focusFirstVisibleFormControl() {
- const nextControl = (userNameInput.visible
- ? userNameInput
- : (passwordBox.visible
- ? passwordBox
- : loginButton));
- // Using TabFocusReason, so that the loginButton gets the visual highlight.
- nextControl.forceActiveFocus(Qt.TabFocusReason);
- }
-
- /*
- * Login has been requested with the following username and password
- * If username field is visible, it will be taken from that, otherwise from the "name" property of the currentIndex
- */
- function startLogin() {
- const username = showUsernamePrompt ? userNameInput.text : userList.selectedUser
- const password = passwordBox.text
-
- footer.enabled = false
- mainStack.enabled = false
- userListComponent.userList.opacity = 0.5
-
- // This is partly because it looks nicer, but more importantly it
- // works round a Qt bug that can trigger if the app is closed with a
- // TextField focused.
- //
- // See https://bugreports.qt.io/browse/QTBUG-55460
- loginButton.forceActiveFocus();
- loginRequest(username, password);
- }
-
- PlasmaComponents3.TextField {
- id: userNameInput
- font.pointSize: fontSize + 1
- Layout.fillWidth: true
-
- text: lastUserName
- visible: showUsernamePrompt
- focus: showUsernamePrompt && !lastUserName //if there's a username prompt it gets focus first, otherwise password does
- placeholderText: i18nd("plasma-desktop-sddm-theme", "Username")
-
- onAccepted: {
- if (root.loginScreenUiVisible) {
- passwordBox.forceActiveFocus()
- }
- }
- }
-
- RowLayout {
- Layout.fillWidth: true
-
- PlasmaExtras.PasswordField {
- id: passwordBox
- font.pointSize: fontSize + 1
- Layout.fillWidth: true
-
- placeholderText: i18nd("plasma-desktop-sddm-theme", "Password")
- focus: !showUsernamePrompt || lastUserName
-
- // Disable reveal password action because SDDM does not have the breeze icon set loaded
- rightActions: []
-
- onAccepted: {
- if (root.loginScreenUiVisible) {
- startLogin();
- }
- }
-
- visible: root.showUsernamePrompt || userList.currentItem.needsPassword
-
- Keys.onEscapePressed: {
- mainStack.currentItem.forceActiveFocus();
- }
-
- //if empty and left or right is pressed change selection in user switch
- //this cannot be in keys.onLeftPressed as then it doesn't reach the password box
- Keys.onPressed: event => {
- if (event.key === Qt.Key_Left && !text) {
- userList.decrementCurrentIndex();
- event.accepted = true
- }
- if (event.key === Qt.Key_Right && !text) {
- userList.incrementCurrentIndex();
- event.accepted = true
- }
- }
-
- Connections {
- target: sddm
- function onLoginFailed() {
- passwordBox.selectAll()
- passwordBox.forceActiveFocus()
- }
- }
- }
-
- PlasmaComponents3.Button {
- id: loginButton
- Accessible.name: i18nd("plasma-desktop-sddm-theme", "Log In")
- Layout.preferredHeight: passwordBox.implicitHeight
- Layout.preferredWidth: text.length === 0 ? loginButton.Layout.preferredHeight : -1
-
- icon.name: text.length === 0 ? (root.LayoutMirroring.enabled ? "go-previous" : "go-next") : ""
-
- text: root.showUsernamePrompt || userList.currentItem.needsPassword ? "" : i18n("Log In")
- onClicked: startLogin()
- Keys.onEnterPressed: clicked()
- Keys.onReturnPressed: clicked()
- }
- }
-}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Main.qml b/x11-themes/redcore-theme-sddm/files/redcore/Main.qml
index 60b8f61d..7f2387d9 100644
--- a/x11-themes/redcore-theme-sddm/files/redcore/Main.qml
+++ b/x11-themes/redcore-theme-sddm/files/redcore/Main.qml
@@ -1,540 +1,528 @@
-/*
- SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org>
-
- SPDX-License-Identifier: LGPL-2.0-or-later
-*/
-
import QtQuick 2.15
-import QtQuick.Layouts 1.15
-import QtQuick.Controls 2.15 as QQC2
-import Qt5Compat.GraphicalEffects
-
-import org.kde.plasma.components 3.0 as PlasmaComponents3
-import org.kde.plasma.private.keyboardindicator as KeyboardIndicator
-import org.kde.kirigami 2.20 as Kirigami
-
-import org.kde.breeze.components
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 2.15
+import "Components"
Item {
id: root
+ width: Screen.width
+ height: Screen.height
- // If we're using software rendering, draw outlines instead of shadows
- // See https://bugs.kde.org/show_bug.cgi?id=398317
- readonly property bool softwareRendering: GraphicsInfo.api === GraphicsInfo.Software
-
- Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
- Kirigami.Theme.inherit: false
-
- width: 1600
- height: 900
-
- property string notificationMessage
-
- LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft
- LayoutMirroring.childrenInherit: true
-
- KeyboardIndicator.KeyState {
- id: capsLockState
- key: Qt.Key_CapsLock
+ FontLoader {
+ id: segoeui
+ source: Qt.resolvedUrl("fonts/segoeui.ttf")
}
- Item {
- id: wallpaper
- anchors.fill: parent
- Repeater {
- model: screenModel
-
- Background {
- x: geometry.x; y: geometry.y; width: geometry.width; height: geometry.height
- sceneBackgroundType: config.type
- sceneBackgroundColor: config.color
- sceneBackgroundImage: config.background
- }
- }
+ FontLoader {
+ id: segoeuil
+ source: Qt.resolvedUrl("fonts/segoeuil.ttf")
}
- RejectPasswordAnimation {
- id: rejectPasswordAnimation
- target: mainStack
+ FontLoader {
+ id: iconfont
+ source: Qt.resolvedUrl("fonts/SegMDL2.ttf")
}
- MouseArea {
- id: loginScreenRoot
+ Rectangle {
+ id: background
anchors.fill: parent
+ width: parent.width
+ height: parent.height
- property bool uiVisible: true
- property bool blockUI: mainStack.depth > 1 || userListComponent.mainPasswordBox.text.length > 0 || inputPanel.keyboardActive || config.type !== "image"
-
- hoverEnabled: true
- drag.filterChildren: true
- onPressed: uiVisible = true;
- onPositionChanged: uiVisible = true;
- onUiVisibleChanged: {
- if (blockUI) {
- fadeoutTimer.running = false;
- } else if (uiVisible) {
- fadeoutTimer.restart();
+ Image {
+ anchors.fill: parent
+ width: parent.width
+ height: parent.height
+ source: config.background
+
+ Rectangle {
+ width: parent.width
+ height: parent.height
+ color: "#75000000"
}
}
- onBlockUIChanged: {
- if (blockUI) {
- fadeoutTimer.running = false;
- uiVisible = true;
- } else {
- fadeoutTimer.restart();
+ }
+
+ Rectangle {
+ id: startupBg
+ width: Screen.width
+ height: Screen.height
+ color: "transparent"
+ z: 4
+
+ Image {
+ anchors.fill: parent
+ width: Screen.width
+ height: Screen.height
+ smooth: true
+ source: config.background
+
+ Rectangle {
+ id: backRect
+ width: Screen.width
+ height: Screen.height
+ color: "#15000000"
}
}
- Keys.onPressed: event => {
- uiVisible = true;
- event.accepted = false;
+ FontLoader {
+ id: localsys
+ source: "/usr/local/share/fonts/s/SegMDL2.ttf"
}
- //takes one full minute for the ui to disappear
- Timer {
- id: fadeoutTimer
- running: true
- interval: 60000
- onTriggered: {
- if (!loginScreenRoot.blockUI) {
- userListComponent.mainPasswordBox.showPassword = false;
- loginScreenRoot.uiVisible = false;
- }
+ Text {
+ id: warning
+ visible: {
+ if (segoeui.status === FontLoader.Error && localsys.status === FontLoader.Error) return true
+
+ return false
}
- }
- WallpaperFader {
- visible: config.type === "image"
- anchors.fill: parent
- state: loginScreenRoot.uiVisible ? "on" : "off"
- source: wallpaper
- mainStack: mainStack
- footer: footer
- clock: clock
- }
- DropShadow {
- id: clockShadow
- anchors.fill: clock
- source: clock
- visible: !softwareRendering
- radius: 6
- samples: 14
- spread: 0.3
- color : "black" // shadows should always be black
- Behavior on opacity {
- OpacityAnimator {
- duration: Kirigami.Units.veryLongDuration * 2
- easing.type: Easing.InOutQuad
- }
+ color: "white"
+ font.pointSize: 19
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI Light" : segoeuisb.name
+ font.weight: Font.DemiBold
+ renderType: Text.NativeRendering
+ horizontalAlignment: Text.AlignLeft
+ text: "w00t"
+ bottomPadding: 400
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
}
}
- Clock {
- id: clock
- property Item shadow: clockShadow
- visible: y > 0
- anchors.horizontalCenter: parent.horizontalCenter
- y: (userListComponent.userList.y + mainStack.y)/2 - height/2
- Layout.alignment: Qt.AlignBaseline
+ Text {
+ id: warning2
+ visible: warning.visible ? true : false
+
+ color: "white"
+ font.pointSize: 19
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI Light" : segoeuisb.name
+ font.weight: Font.DemiBold
+ renderType: Text.NativeRendering
+ horizontalAlignment: Text.AlignLeft
+ text: "w00t"
+ bottomPadding: 250
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
+ }
}
- QQC2.StackView {
- id: mainStack
+ Text {
+ id: warning3
+ visible: warning.visible ? true : false
+
+ color: "white"
+ font.pointSize: 19
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI Light" : segoeuisb.name
+ font.weight: Font.DemiBold
+ renderType: Text.NativeRendering
+ horizontalAlignment: Text.AlignLeft
+ text: "w00t"
+ bottomPadding: 200
+
anchors {
- left: parent.left
- right: parent.right
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
}
- height: root.height + Kirigami.Units.gridUnit * 3
-
- // If true (depends on the style and environment variables), hover events are always accepted
- // and propagation stopped. This means the parent MouseArea won't get them and the UI won't be shown.
- // Disable capturing those events while the UI is hidden to avoid that, while still passing events otherwise.
- // One issue is that while the UI is visible, mouse activity won't keep resetting the timer, but when it
- // finally expires, the next event should immediately set uiVisible = true again.
- hoverEnabled: loginScreenRoot.uiVisible ? undefined : false
-
- focus: true //StackView is an implicit focus scope, so we need to give this focus so the item inside will have it
-
- Timer {
- //SDDM has a bug in 0.13 where even though we set the focus on the right item within the window, the window doesn't have focus
- //it is fixed in 6d5b36b28907b16280ff78995fef764bb0c573db which will be 0.14
- //we need to call "window->activate()" *After* it's been shown. We can't control that in QML so we use a shoddy timer
- //it's been this way for all Plasma 5.x without a huge problem
- running: true
- repeat: false
- interval: 200
- onTriggered: mainStack.forceActiveFocus()
+ }
+
+ Text {
+ id: warning4
+ visible: warning.visible ? true : false
+
+ color: "white"
+ font.pointSize: 19
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI Light" : segoeuisb.name
+ font.weight: Font.DemiBold
+ renderType: Text.NativeRendering
+ horizontalAlignment: Text.AlignLeft
+ text: "w00t"
+ bottomPadding: 50
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ verticalCenter: parent.verticalCenter
}
+ }
- initialItem: Login {
- id: userListComponent
- userListModel: userModel
- loginScreenUiVisible: loginScreenRoot.uiVisible
- userListCurrentIndex: userModel.lastIndex >= 0 ? userModel.lastIndex : 0
- lastUserName: userModel.lastUser
- showUserList: {
- if (!userListModel.hasOwnProperty("count")
- || !userListModel.hasOwnProperty("disableAvatarsThreshold")) {
- return false
- }
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ drag.target: timeDate
+ drag.axis: Drag.YAxis
+ drag.minimumY: -Screen.height / 2
+ drag.maximumY: 0
+ focus: true
+
+ onClicked: {
+ listView.focus = true
+ mouseArea.focus = false
+ mouseArea.enabled = false
+ seqStart.start()
+ parStart.start()
+ }
- if (userListModel.count === 0 ) {
- return false
- }
+ Keys.onPressed: {
+ listView.focus = true
+ mouseArea.focus = false
+ mouseArea.enabled = false
+ seqStart.start()
+ parStart.start()
+ }
- if (userListModel.hasOwnProperty("containsAllUsers") && !userListModel.containsAllUsers) {
- return false
- }
+ property bool dragActive: drag.active
- return userListModel.count <= userListModel.disableAvatarsThreshold
+ onDragActiveChanged: {
+ if(drag.active) {}
+ else {
+ listView.focus = true
+ mouseArea.focus = false
+ mouseArea.enabled = false
+ seqStart.start()
+ parslideStart.start()
}
+ }
+ }
- notificationMessage: {
- const parts = [];
- if (capsLockState.locked) {
- parts.push(i18nd("plasma-desktop-sddm-theme", "Caps Lock is on"));
- }
- if (root.notificationMessage) {
- parts.push(root.notificationMessage);
- }
- return parts.join(" • ");
- }
+ ParallelAnimation {
+ id: parStart
+ running: false
- actionItemsVisible: !inputPanel.keyboardActive
- actionItems: [
- ActionButton {
- iconSource: "system-suspend"
- text: i18ndc("plasma-desktop-sddm-theme", "Suspend to RAM", "Sleep")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: sddm.suspend()
- enabled: sddm.canSuspend
- },
- ActionButton {
- iconSource: "system-reboot"
- text: i18nd("plasma-desktop-sddm-theme", "Restart")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: sddm.reboot()
- enabled: sddm.canReboot
- },
- ActionButton {
- iconSource: "system-shutdown"
- text: i18nd("plasma-desktop-sddm-theme", "Shut Down")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: sddm.powerOff()
- enabled: sddm.canPowerOff
- },
- ActionButton {
- iconSource: "system-user-prompt"
- text: i18ndc("plasma-desktop-sddm-theme", "For switching to a username and password prompt", "Other…")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: mainStack.push(userPromptComponent)
- enabled: true
- visible: !userListComponent.showUsernamePrompt
- }]
-
- onLoginRequest: {
- root.notificationMessage = ""
- sddm.login(username, password, sessionButton.currentIndex)
- }
+ NumberAnimation {
+ target: timeDate
+ properties: "y"
+ from: 0
+ to: -45
+ duration: 125
}
- Behavior on opacity {
- OpacityAnimator {
- duration: Kirigami.Units.longDuration
- }
+ NumberAnimation {
+ target: timeDate
+ properties: "visible"
+ from: 1
+ to: 0
+ duration: 125
}
- readonly property real zoomFactor: 1.5
+ NumberAnimation {
+ target: startupBg
+ properties: "opacity"
+ from: 1
+ to: 0
+ duration: 100
+ }
+ }
- popEnter: Transition {
- ScaleAnimator {
- from: mainStack.zoomFactor
- to: 1
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
- }
- OpacityAnimator {
- from: 0
- to: 1
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
- }
+ ParallelAnimation {
+ id: parslideStart
+ running: false
+
+ NumberAnimation {
+ target: startupBg
+ properties: "opacity"
+ from: 1
+ to: 0
+ duration: 100
+ }
+ }
+
+ SequentialAnimation {
+ id: seqStart
+ running: false
+
+ ColorAnimation {
+ target: backRect
+ properties: "color"
+ from: "#15000000"
+ to: "#75000000"
+ duration: 125
}
- popExit: Transition {
+ ParallelAnimation {
+
ScaleAnimator {
+ target: background
from: 1
- to: 1 / mainStack.zoomFactor
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
+ to: 1.01
+ duration: 250
}
- OpacityAnimator {
- from: 1
- to: 0
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
- }
- }
- pushEnter: Transition {
- ScaleAnimator {
- from: 1 / mainStack.zoomFactor
+ NumberAnimation {
+ target: centerPanel
+ properties: "opacity"
+ from: 0
to: 1
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
+ duration: 225
}
- OpacityAnimator {
+
+ NumberAnimation {
+ target: rightPanel
+ properties: "opacity"
from: 0
to: 1
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
+ duration: 100
}
- }
- pushExit: Transition {
- ScaleAnimator {
- from: 1
- to: mainStack.zoomFactor
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
- }
- OpacityAnimator {
- from: 1
- to: 0
- duration: Kirigami.Units.veryLongDuration
- easing.type: Easing.OutCubic
+ NumberAnimation {
+ target: leftPanel
+ properties: "opacity"
+ from: 0
+ to: 1
+ duration: 100
}
}
}
- VirtualKeyboardLoader {
- id: inputPanel
+ Rectangle {
+ id: timeDate
+ width: parent.width
+ height: parent.height
+ color: "transparent"
- z: 1
+ Column {
+ id: timeContainer
- screenRoot: root
- mainStack: mainStack
- mainBlock: userListComponent
- passwordField: userListComponent.mainPasswordBox
- }
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
+ bottomMargin: 90
+ leftMargin: 35
+ }
- Component {
- id: userPromptComponent
- Login {
- showUsernamePrompt: true
- notificationMessage: root.notificationMessage
- loginScreenUiVisible: loginScreenRoot.uiVisible
- fontSize: Kirigami.Theme.defaultFont.pointSize + 2
-
- // using a model rather than a QObject list to avoid QTBUG-75900
- userListModel: ListModel {
- ListElement {
- name: ""
- icon: ""
- }
- Component.onCompleted: {
- // as we can't bind inside ListElement
- setProperty(0, "name", i18nd("plasma-desktop-sddm-theme", "Type in Username and Password"));
- setProperty(0, "icon", Qt.resolvedUrl("faces/.face.icon"))
+ property date dateTime: new Date()
+
+ Timer {
+ interval: 100; running: true; repeat: true;
+ onTriggered: timeContainer.dateTime = new Date()
+ }
+
+ Text {
+ id: time
+
+ color: "white"
+ font.pointSize: 95
+ font.family: Qt.resolvedUrl("../fonts") ? "Segoe UI Light" : segoeuil.name
+ renderType: Text.NativeRendering
+ text: Qt.formatTime(timeContainer.dateTime, "hh:mm")
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ left: parent.left
}
}
- onLoginRequest: {
- root.notificationMessage = ""
- sddm.login(username, password, sessionButton.currentIndex)
+ Rectangle {
+ id: spacingRect
+ color: "transparent"
+ width: 15
+ height: 15
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ }
}
- actionItemsVisible: !inputPanel.keyboardActive
- actionItems: [
- ActionButton {
- iconSource: "system-suspend"
- text: i18ndc("plasma-desktop-sddm-theme", "Suspend to RAM", "Sleep")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: sddm.suspend()
- enabled: sddm.canSuspend
- },
- ActionButton {
- iconSource: "system-reboot"
- text: i18nd("plasma-desktop-sddm-theme", "Restart")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: sddm.reboot()
- enabled: sddm.canReboot
- },
- ActionButton {
- iconSource: "system-shutdown"
- text: i18nd("plasma-desktop-sddm-theme", "Shut Down")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: sddm.powerOff()
- enabled: sddm.canPowerOff
- },
- ActionButton {
- iconSource: "system-user-list"
- text: i18nd("plasma-desktop-sddm-theme", "List Users")
- fontSize: Kirigami.Theme.defaultFont.pointSize + 1
- onClicked: mainStack.pop()
+ Text {
+ id: date
+
+ color: "white"
+ font.pointSize: 45
+ font.family: "Segoe UI Light"
+ renderType: Text.NativeRendering
+ horizontalAlignment: Text.AlignLeft
+ text: Qt.formatDate(timeContainer.dateTime, "dddd, MMMM dd")
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
}
- ]
+ }
}
}
+ }
- DropShadow {
- id: logoShadow
- anchors.fill: logo
- source: logo
- visible: !softwareRendering && config.showlogo === "shown"
- horizontalOffset: 1
- verticalOffset: 1
- radius: 6
- samples: 14
- spread: 0.3
- color : "black" // shadows should always be black
- opacity: loginScreenRoot.uiVisible ? 0 : 1
- Behavior on opacity {
- //OpacityAnimator when starting from 0 is buggy (it shows one frame with opacity 1)"
- NumberAnimation {
- duration: Kirigami.Units.longDuration
- easing.type: Easing.InOutQuad
- }
+ Item {
+ id: rightPanel
+ z: 2
+ opacity: 0
+
+ anchors {
+ bottom: parent.bottom
+ right: parent.right
+ margins: 75
+ }
+
+ PowerPanel {
+ id: powerPanel
+ }
+
+ SessionPanel {
+ id: sessionPanel
+
+ anchors {
+ right: powerPanel.left
}
}
- Image {
- id: logo
- visible: config.showlogo === "shown"
- source: config.logo
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.bottom: footer.top
- anchors.bottomMargin: Kirigami.Units.largeSpacing
- asynchronous: true
- sourceSize.height: height
- opacity: loginScreenRoot.uiVisible ? 0 : 1
- fillMode: Image.PreserveAspectFit
- height: Math.round(Kirigami.Units.gridUnit * 3.5)
- Behavior on opacity {
- // OpacityAnimator when starting from 0 is buggy (it shows one frame with opacity 1)"
- NumberAnimation {
- duration: Kirigami.Units.longDuration
- easing.type: Easing.InOutQuad
+ LayoutPanel {
+ id: layoutPanel
+
+ anchors {
+ right: sessionPanel.left
+ }
+ }
+ }
+
+ Rectangle {
+ id: leftPanel
+ color: "transparent"
+ anchors.fill: parent
+ z: 2
+ opacity: 0
+
+ visible: listView2.count > 1 ? true : false
+ enabled: listView2.count > 1 ? true : false
+
+ Component {
+ id: userDelegate2
+
+ UserList {
+ id: userList
+ name: (model.realName === "") ? model.name : model.realName
+ icon: "/var/lib/AccountsService/icons/" + name
+
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: {
+ listView2.currentIndex = index
+ listView2.focus = true
+ listView.currentIndex = index
+ listView.focus = true
+ }
}
}
}
- // Note: Containment masks stretch clickable area of their buttons to
- // the screen edges, essentially making them adhere to Fitts's law.
- // Due to virtual keyboard button having an icon, buttons may have
- // different heights, so fillHeight is required.
- //
- // Note for contributors: Keep this in sync with LockScreenUi.qml footer.
- RowLayout {
- id: footer
+ Rectangle {
+ width: 150
+ height: listView2.count > 17 ? Screen.height - 68 : 58 * listView2.count
+ color: "transparent"
+ clip: true
+
anchors {
bottom: parent.bottom
+ bottomMargin: 35
left: parent.left
- right: parent.right
- margins: Kirigami.Units.smallSpacing
+ leftMargin: 35
}
- spacing: Kirigami.Units.smallSpacing
- Behavior on opacity {
- OpacityAnimator {
- duration: Kirigami.Units.longDuration
+ Item {
+ id: usersContainer2
+ width: 255
+ height: parent.height
+
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
}
- }
- PlasmaComponents3.ToolButton {
- id: virtualKeyboardButton
+ Button {
+ id: prevUser2
+ visible: true
+ enabled: false
+ width: 0
- text: i18ndc("plasma-desktop-sddm-theme", "Button to show/hide virtual keyboard", "Virtual Keyboard")
- icon.name: inputPanel.keyboardActive ? "input-keyboard-virtual-on" : "input-keyboard-virtual-off"
- onClicked: {
- // Otherwise the password field loses focus and virtual keyboard
- // keystrokes get eaten
- userListComponent.mainPasswordBox.forceActiveFocus();
- inputPanel.showHide()
+ anchors {
+ bottom: parent.bottom
+ left: parent.left
+ }
}
- visible: inputPanel.status === Loader.Ready
- Layout.fillHeight: true
- containmentMask: Item {
- parent: virtualKeyboardButton
- anchors.fill: parent
- anchors.leftMargin: -footer.anchors.margins
- anchors.bottomMargin: -footer.anchors.margins
+ ListView {
+ id: listView2
+ height: parent.height
+ focus: true
+ model: userModel
+ currentIndex: userModel.lastIndex
+ delegate: userDelegate2
+ verticalLayoutDirection: ListView.TopToBottom
+ orientation: ListView.Vertical
+ interactive: listView2.count > 17 ? true : false
+
+ anchors {
+ left: prevUser2.right
+ right: nextUser2.left
+ }
}
- }
- KeyboardButton {
- id: keyboardButton
+ Button {
+ id: nextUser2
+ visible: true
+ width: 0
+ enabled: false
- onKeyboardLayoutChanged: {
- // Otherwise the password field loses focus and virtual keyboard
- // keystrokes get eaten
- userListComponent.mainPasswordBox.forceActiveFocus();
- }
-
- Layout.fillHeight: true
- containmentMask: Item {
- parent: keyboardButton
- anchors.fill: parent
- anchors.leftMargin: virtualKeyboardButton.visible ? 0 : -footer.anchors.margins
- anchors.bottomMargin: -footer.anchors.margins
+ anchors {
+ bottom: parent.bottom
+ right: parent.right
+ }
}
}
+ }
+ }
- SessionButton {
- id: sessionButton
+ Item {
+ id: centerPanel
+ anchors.centerIn: root
+ z: 2
+ opacity: 0
- onSessionChanged: {
- // Otherwise the password field loses focus and virtual keyboard
- // keystrokes get eaten
- userListComponent.mainPasswordBox.forceActiveFocus();
- }
+ Item {
- Layout.fillHeight: true
- containmentMask: Item {
- parent: sessionButton
- anchors.fill: parent
- anchors.leftMargin: virtualKeyboardButton.visible || keyboardButton.visible
- ? 0 : -footer.anchors.margins
- anchors.bottomMargin: -footer.anchors.margins
+ Component {
+ id: userDelegate
+
+ UserPanel {
+ anchors.centerIn: parent
+ name: (model.realName === "") ? model.name : model.realName
+ icon: "/var/lib/AccountsService/icons/" + name
}
}
- Item {
- Layout.fillWidth: true
+ Button {
+ id: prevUser
+ anchors.left: parent.left
+ enabled: false
+ visible: false
}
- Battery {}
- }
- }
-
- Connections {
- target: sddm
- function onLoginFailed() {
- notificationMessage = i18nd("plasma-desktop-sddm-theme", "Login Failed")
- footer.enabled = true
- mainStack.enabled = true
- userListComponent.userList.opacity = 1
- rejectPasswordAnimation.start()
- }
- function onLoginSucceeded() {
- //note SDDM will kill the greeter at some random point after this
- //there is no certainty any transition will finish, it depends on the time it
- //takes to complete the init
- mainStack.opacity = 0
- footer.opacity = 0
- }
- }
+ ListView {
+ id: listView
+ focus: true
+ model: userModel
+ delegate: userDelegate
+ currentIndex: userModel.lastIndex
+ interactive: false
+
+ anchors {
+ left: prevUser.right
+ right: nextUser.left
+ }
+ }
- onNotificationMessageChanged: {
- if (notificationMessage) {
- notificationResetTimer.start();
+ Button {
+ id: nextUser
+ anchors.right: parent.right
+ enabled: false
+ visible: false
+ }
}
}
-
- Timer {
- id: notificationResetTimer
- interval: 3000
- onTriggered: notificationMessage = ""
- }
}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/Messages.sh b/x11-themes/redcore-theme-sddm/files/redcore/Messages.sh
deleted file mode 100644
index 1ded812a..00000000
--- a/x11-themes/redcore-theme-sddm/files/redcore/Messages.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#! /usr/bin/env bash
-$XGETTEXT `find . -name \*.qml` -L Java -o $podir/plasma-desktop-sddm-theme.pot
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/SessionButton.qml b/x11-themes/redcore-theme-sddm/files/redcore/SessionButton.qml
deleted file mode 100644
index ad387b51..00000000
--- a/x11-themes/redcore-theme-sddm/files/redcore/SessionButton.qml
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org>
- SPDX-FileCopyrightText: 2022 Aleix Pol Gonzalez <aleixpol@kde.org>
-
- SPDX-License-Identifier: LGPL-2.0-or-later
-*/
-
-import QtQuick 2.15
-
-import org.kde.plasma.components 3.0 as PlasmaComponents
-import org.kde.kirigami 2.20 as Kirigami
-
-PlasmaComponents.ToolButton {
- id: root
-
- property int currentIndex: -1
-
- text: i18nd("plasma-desktop-sddm-theme", "Desktop Session: %1", instantiator.objectAt(currentIndex).text || "")
- visible: menu.count > 1
-
- Component.onCompleted: {
- currentIndex = sessionModel.lastIndex
- }
- checkable: true
- checked: menu.opened
- onToggled: {
- if (checked) {
- menu.popup(root, 0, 0)
- } else {
- menu.dismiss()
- }
- }
-
- signal sessionChanged()
-
- PlasmaComponents.Menu {
- Kirigami.Theme.colorSet: Kirigami.Theme.Window
- Kirigami.Theme.inherit: false
-
- id: menu
- Instantiator {
- id: instantiator
- model: sessionModel
- onObjectAdded: (index, object) => menu.insertItem(index, object)
- onObjectRemoved: (index, object) => menu.removeItem(object)
- delegate: PlasmaComponents.MenuItem {
- text: model.name
- onTriggered: {
- root.currentIndex = model.index
- sessionChanged()
- }
- }
- }
- }
-}
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/faces/.face.icon b/x11-themes/redcore-theme-sddm/files/redcore/faces/.face.icon
deleted file mode 100644
index ecee9917..00000000
--- a/x11-themes/redcore-theme-sddm/files/redcore/faces/.face.icon
+++ /dev/null
@@ -1,14 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22">
- <defs id="defs3051">
- <style type="text/css" id="current-color-scheme">
- .ColorScheme-Text {
- color:#f2f2f2;
- }
- </style>
- </defs>
- <path
- style="fill:currentColor;fill-opacity:1;stroke:none"
- d="M 11 3 A 3.9999902 4.0000296 0 0 0 7 7 A 3.9999902 4.0000296 0 0 0 11 11 A 3.9999902 4.0000296 0 0 0 15 7 A 3.9999902 4.0000296 0 0 0 11 3 z M 11 4 A 3 3.0000296 0 0 1 14 7 A 3 3.0000296 0 0 1 11 10 A 3 3.0000296 0 0 1 8 7 A 3 3.0000296 0 0 1 11 4 z M 11 12 A 7.9999504 8.0000296 0 0 0 3.0722656 19 L 4.0800781 19 A 6.9999604 7.0000296 0 0 1 11 13 A 6.9999604 7.0000296 0 0 1 17.921875 19 L 18.929688 19 A 7.9999504 8.0000296 0 0 0 11 12 z "
- class="ColorScheme-Text"
- />
-</svg>
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/fonts/SegMDL2.ttf b/x11-themes/redcore-theme-sddm/files/redcore/fonts/SegMDL2.ttf
new file mode 100644
index 00000000..36820287
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/fonts/SegMDL2.ttf
Binary files differ
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/fonts/SegoeBoot-Semilight.woff b/x11-themes/redcore-theme-sddm/files/redcore/fonts/SegoeBoot-Semilight.woff
new file mode 100644
index 00000000..b20e2f0a
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/fonts/SegoeBoot-Semilight.woff
Binary files differ
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeui.ttf b/x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeui.ttf
new file mode 100644
index 00000000..43b56877
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeui.ttf
Binary files differ
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeuil.ttf b/x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeuil.ttf
new file mode 100644
index 00000000..254d3b06
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/fonts/segoeuil.ttf
Binary files differ
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/metadata.desktop b/x11-themes/redcore-theme-sddm/files/redcore/metadata.desktop
index 11188a8f..6321fed6 100644
--- a/x11-themes/redcore-theme-sddm/files/redcore/metadata.desktop
+++ b/x11-themes/redcore-theme-sddm/files/redcore/metadata.desktop
@@ -1,17 +1,15 @@
[SddmGreeterTheme]
-Name=Redcore-Breeze
-Description=Redcore-Breeze
-Author=KDE Visual Design Group
-Copyright=(c) 2014, David Edmundson
-License=CC-BY-SA
+Name=Redcore-Sddm-Theme
+Description=Redcore-Sddm-Theme
+Author=Redcore Linux Project
+License=MIT
Type=sddm-theme
-Version=0.1
-Website=https://github.com/sddm/sddm
-Screenshot=background.png
+Version=1
+Website=https://redcorelinux.org
+Screenshot=preview.png
MainScript=Main.qml
ConfigFile=theme.conf
-TranslationsDirectory=translations
-Email=plasma-devel@kde.org
-Theme-Id=redcore-breeze
+Email=contact@redcorelinux.org
+Theme-Id=redcore-sddm
Theme-API=2.0
QtVersion=6
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/preview.png b/x11-themes/redcore-theme-sddm/files/redcore/preview.png
new file mode 100644
index 00000000..196752c8
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/preview.png
Binary files differ
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/redcore-weblink.svg b/x11-themes/redcore-theme-sddm/files/redcore/redcore-weblink.svg
deleted file mode 100644
index 7fa6a290..00000000
--- a/x11-themes/redcore-theme-sddm/files/redcore/redcore-weblink.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 48 48">
- <defs>
- <linearGradient id="linearGradient3764" x2="47" gradientUnits="userSpaceOnUse" x1="1" gradientTransform="matrix(0 -1 1 0 -.0000015 48)">
- <stop style="stop-color:#752521" offset="0"/>
- <stop style="stop-color:#852a25" offset="1"/>
- </linearGradient>
- </defs>
- <path style="opacity:.05" d="m36.31 5c5.859 4.062 9.688 10.831 9.688 18.5 0 12.426-10.07 22.5-22.5 22.5-7.669 0-14.438-3.828-18.5-9.688 1.037 1.822 2.306 3.499 3.781 4.969 4.085 3.712 9.514 5.969 15.469 5.969 12.703 0 23-10.298 23-23 0-5.954-2.256-11.384-5.969-15.469-1.469-1.475-3.147-2.744-4.969-3.781zm4.969 3.781c3.854 4.113 6.219 9.637 6.219 15.719 0 12.703-10.297 23-23 23-6.081 0-11.606-2.364-15.719-6.219 4.16 4.144 9.883 6.719 16.219 6.719 12.703 0 23-10.298 23-23 0-6.335-2.575-12.06-6.719-16.219z"/>
- <path style="opacity:.1" d="m41.28 8.781c3.712 4.085 5.969 9.514 5.969 15.469 0 12.703-10.297 23-23 23-5.954 0-11.384-2.256-15.469-5.969 4.113 3.854 9.637 6.219 15.719 6.219 12.703 0 23-10.298 23-23 0-6.081-2.364-11.606-6.219-15.719z"/>
- <path style="opacity:.2" d="m31.25 2.375c8.615 3.154 14.75 11.417 14.75 21.13 0 12.426-10.07 22.5-22.5 22.5-9.708 0-17.971-6.135-21.12-14.75a23 23 0 0 0 44.875 -7 23 23 0 0 0 -16 -21.875z"/>
- <path style="fill:url(#linearGradient3764)" d="m24 1c12.703 0 23 10.297 23 23s-10.297 23-23 23-23-10.297-23-23 10.297-23 23-23z"/>
- <path style="opacity:.1" d="m40.03 7.531c3.712 4.084 5.969 9.514 5.969 15.469 0 12.703-10.297 23-23 23-5.954 0-11.384-2.256-15.469-5.969 4.178 4.291 10.01 6.969 16.469 6.969 12.703 0 23-10.298 23-23 0-6.462-2.677-12.291-6.969-16.469z"/>
- <path d="m25 12c-3.87 0-6.0922 2.3479-7.3652 5.4434-4.604 1.283-6.635 5.092-6.635 7.557 0 7 7 12 12 13-4-2-9-6-9-13 0-1.6997 0.96495-3.397 2.709-4.5508-0.57 2.594-0.709 5.343-0.709 7.551 0-1.658 0.921-5.451 2.754-8.516 0.958-0.306 2.042-0.483 3.246-0.484 0.09012-0.000068 0.21145 0.0019 0.30664 0.002-0.483 0.302-0.936 0.627-1.307 0.998 0.97928-0.58053 2.4997-0.89772 4-1 1.5003 0.10228 3.0207 0.41947 4 1-0.37064-0.37064-0.82409-0.6961-1.3066-0.99805 0.09519-0.000036 0.21652-0.002 0.30664-0.002 1.2036 0.000877 2.2882 0.17838 3.2461 0.48438 1.833 3.065 2.754 6.858 2.754 8.516 0-2.208-0.139-4.957-0.709-7.551 1.744 1.154 2.709 2.851 2.709 4.551 0 7-5 11-9 13 5-1 12-6 12-13 0-2.4646-2.031-6.2736-6.6348-7.5566-1.273-3.095-3.495-5.443-7.365-5.443zm0 3c1.6902 0 3.1336 0.80851 4.3477 2.0156-0.11782-0.0029-0.22748-0.01563-0.34766-0.01563-1 0-2.5 0.25-4 0.75-1.5-0.5-3-0.75-4-0.75-0.12018 0-0.22983 0.01271-0.34766 0.01563 1.2141-1.2071 2.6574-2.0156 4.3477-2.0156zm0 5a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8z" style="opacity:.1"/>
- <path style="fill:#ea5259" d="m24 11c-3.87 0-6.0922 2.3479-7.3652 5.4434-4.604 1.283-6.635 5.092-6.635 7.557 0 7 7 12 12 13-4-2-9-6-9-13 0-1.6997 0.96495-3.397 2.709-4.5508-0.57 2.594-0.709 5.343-0.709 7.551 0-1.658 0.921-5.451 2.754-8.516 0.958-0.306 2.042-0.483 3.246-0.484 0.09012-0.000068 0.21145 0.0019 0.30664 0.002-0.483 0.302-0.936 0.627-1.307 0.998 0.97928-0.58053 2.4997-0.89772 4-1 1.5003 0.10228 3.0207 0.41947 4 1-0.37064-0.37064-0.82409-0.6961-1.3066-0.99805 0.09519-0.000036 0.21652-0.002 0.30664-0.002 1.2036 0.000877 2.2882 0.17838 3.2461 0.48438 1.833 3.065 2.754 6.858 2.754 8.516 0-2.208-0.139-4.957-0.709-7.551 1.744 1.154 2.709 2.851 2.709 4.551 0 7-5 11-9 13 5-1 12-6 12-13 0-2.4646-2.031-6.2736-6.6348-7.5566-1.273-3.095-3.495-5.443-7.365-5.443zm0 3c1.6902 0 3.1336 0.80851 4.3477 2.0156-0.11782-0.0029-0.22748-0.01563-0.34766-0.01563-1 0-2.5 0.25-4 0.75-1.5-0.5-3-0.75-4-0.75-0.12018 0-0.22983 0.01271-0.34766 0.01563 1.2141-1.2071 2.6574-2.0156 4.3477-2.0156zm0 5a8 8 0 0 0 -8 8 8 8 0 0 0 8 8 8 8 0 0 0 8 -8 8 8 0 0 0 -8 -8z"/>
-</svg>
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/theme.conf b/x11-themes/redcore-theme-sddm/files/redcore/theme.conf
index 1dc1948a..cf850b88 100644
--- a/x11-themes/redcore-theme-sddm/files/redcore/theme.conf
+++ b/x11-themes/redcore-theme-sddm/files/redcore/theme.conf
@@ -1,8 +1,6 @@
[General]
-showlogo=hidden
-logo=redcore-weblink.svg
-type=image
-color=#520A0A
-fontSize=10
+
+PinMode="off"
background=background.png
-needsFullUserModel=false
+color="#520A0A"
+
diff --git a/x11-themes/redcore-theme-sddm/files/redcore/user-192.png b/x11-themes/redcore-theme-sddm/files/redcore/user-192.png
new file mode 100644
index 00000000..4f985e15
--- /dev/null
+++ b/x11-themes/redcore-theme-sddm/files/redcore/user-192.png
Binary files differ