Completely make it from scratch

This commit is contained in:
=
2025-08-02 17:41:49 -05:00
parent a53ff9410f
commit 68e091a4a7
17 changed files with 157 additions and 910 deletions

View File

@@ -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
}
}
]
}

View File

@@ -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()
}
}
}
}
}

175
Login.qml
View File

@@ -1,175 +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.
passwordBox.clear()
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
// 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
Rectangle {
PlasmaExtras.PasswordField {
id: passwordBox
x: -470
y: 248
width: 825
font.pointSize: fontSize + 20
Layout.fillWidth: false
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: []
// Theming
background: Rectangle {
color: "transparent"
}
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()
}
}
}
}
Rectangle {
PlasmaComponents3.Button {
id: loginButton
x: 370
y: 238
width: 105
height: 73
Accessible.name: i18nd("plasma-desktop-sddm-theme", "Log In")
Layout.preferredHeight: passwordBox.implicitHeight
Layout.preferredWidth: text.length === 0 ? loginButton.Layout.preferredHeight : -1
background: Rectangle {
color: "transparent"
}
text: root.showUsernamePrompt || userList.currentItem.needsPassword ? "" : i18n("Log In")
onClicked: startLogin()
Keys.onEnterPressed: clicked()
Keys.onReturnPressed: clicked()
}
}
}
}

559
Main.qml
View File

@@ -6,450 +6,187 @@
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import QtQuick.Controls 2.15 as QQC2 import QtQuick.Controls 2.15
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
Item { Item {
id: root id: mainStack
property bool usingCustomUser: false
property bool attemptingToLogin: false
// If we're using software rendering, draw outlines instead of shadows // Background Image
// See https://bugs.kde.org/show_bug.cgi?id=398317 Image {
readonly property bool softwareRendering: GraphicsInfo.api === GraphicsInfo.Software id: sceneImageBackground
source: "background.png"
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
}
Item {
id: wallpaper
anchors.fill: parent anchors.fill: parent
Repeater { sourceSize.width: parent.width
model: screenModel sourceSize.height: parent.height
fillMode: Image.PreserveAspectCrop
Background { smooth: true;
x: geometry.x; y: geometry.y; width: geometry.width; height: geometry.height
sceneBackgroundType: config.type
sceneBackgroundColor: config.color
sceneBackgroundImage: config.background
} }
// Session
ComboBox {
id: session
model: sessionModel
currentIndex: sessionModel.lastIndex
textRole: "name"
anchors {
top: parent.top
left: parent.left
topMargin: 75
leftMargin: 10
}
height: 50
background: Rectangle {
color: "transparent"
}
font.family: "Rajdhani"
font.capitalization: Font.AllUppercase
font.bold: true
font.pointSize: 30
indicator: Image {
id: sessionArrow
source: "icons/down-arrow.png"
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
width: 36
height: 36
fillMode: Image.PreserveAspectFit
rotation: session.popup.visible ? 180 : 0
Behavior on rotation { NumberAnimation { duration: 150; easing.type: Easing.InOutQuad } }
} }
} }
RejectPasswordAnimation { // User Switcher
id: rejectPasswordAnimation Rectangle {
target: mainStack anchors {
top: parent.top
right: parent.right
topMargin: 68
rightMargin: 3
} }
width: 50
height: 50
color: "#FFFFFF"
opacity: 0
radius: 5
MouseArea { MouseArea {
id: loginScreenRoot
anchors.fill: parent
property bool uiVisible: true
property bool blockUI: mainStack.depth > 1 || userListComponent.mainPasswordBox.text.length > 0 || inputPanel.keyboardActive || config.type !== "image"
hoverEnabled: true hoverEnabled: true
drag.filterChildren: true anchors.fill: parent
onPressed: uiVisible = true;
onPositionChanged: uiVisible = true;
onUiVisibleChanged: {
if (blockUI) {
fadeoutTimer.running = false;
} else if (uiVisible) {
fadeoutTimer.restart();
}
}
onBlockUIChanged: {
if (blockUI) {
fadeoutTimer.running = false;
uiVisible = true;
} else {
fadeoutTimer.restart();
}
}
Keys.onPressed: event => {
uiVisible = true;
event.accepted = false;
}
//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;
}
}
}
QQC2.StackView {
id: mainStack
anchors {
left: parent.left
right: parent.right
}
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()
}
initialItem: Login {
id: userListComponent
userList.opacity: 0
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
}
if (userListModel.count === 0 ) {
return false
}
if (userListModel.hasOwnProperty("containsAllUsers") && !userListModel.containsAllUsers) {
return false
}
return userListModel.count <= userListModel.disableAvatarsThreshold
}
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(" • ");
}
actionItemsVisible: !inputPanel.keyboardActive
actionItems: [
/*ActionButton {
icon.name: "system-suspend"
text: i18ndc("plasma-desktop-sddm-theme", "Suspend to RAM", "Sleep")
onClicked: sddm.suspend()
enabled: sddm.canSuspend
},
ActionButton {
icon.name: "system-reboot"
text: i18nd("plasma-desktop-sddm-theme", "Restart")
onClicked: sddm.reboot()
enabled: sddm.canReboot
},
ActionButton {
icon.name: "system-shutdown"
text: i18nd("plasma-desktop-sddm-theme", "Shut Down")
onClicked: sddm.powerOff()
enabled: sddm.canPowerOff
},
ActionButton {
icon.name: "system-user-prompt"
text: i18ndc("plasma-desktop-sddm-theme", "For switching to a username and password prompt", "Other…")
onClicked: mainStack.push(userPromptComponent)
visible: !userListComponent.showUsernamePrompt
}*/]
onLoginRequest: {
root.notificationMessage = ""
sddm.login(username, password, sessionButton.currentIndex)
}
}
Behavior on opacity {
OpacityAnimator {
duration: Kirigami.Units.longDuration
}
}
readonly property real zoomFactor: 1.5
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
}
}
popExit: Transition {
ScaleAnimator {
from: 1
to: 1 / mainStack.zoomFactor
duration: Kirigami.Units.veryLongDuration
easing.type: Easing.OutCubic
}
OpacityAnimator {
from: 1
to: 0
duration: Kirigami.Units.veryLongDuration
easing.type: Easing.OutCubic
}
}
pushEnter: Transition {
ScaleAnimator {
from: 1 / 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
}
}
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
}
}
}
VirtualKeyboardLoader {
id: inputPanel
z: 1
screenRoot: root
mainStack: mainStack
mainBlock: userListComponent
passwordField: userListComponent.mainPasswordBox
}
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"))
}
}
onLoginRequest: {
root.notificationMessage = ""
sddm.login(username, password, sessionButton.currentIndex)
}
actionItemsVisible: !inputPanel.keyboardActive
actionItems: [
ActionButton {
icon.name: "system-suspend"
text: i18ndc("plasma-desktop-sddm-theme", "Suspend to RAM", "Sleep")
onClicked: sddm.suspend()
enabled: sddm.canSuspend
},
ActionButton {
icon.name: "system-reboot"
text: i18nd("plasma-desktop-sddm-theme", "Restart")
onClicked: sddm.reboot()
enabled: sddm.canReboot
},
ActionButton {
icon.name: "system-shutdown"
text: i18nd("plasma-desktop-sddm-theme", "Shut Down")
onClicked: sddm.powerOff()
enabled: sddm.canPowerOff
},
ActionButton {
icon.name: "system-user-list"
text: i18nd("plasma-desktop-sddm-theme", "List Users")
onClicked: mainStack.pop()
}
]
}
}
// 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
anchors {
bottom: parent.bottom
left: parent.left
right: parent.right
margins: Kirigami.Units.smallSpacing
}
spacing: Kirigami.Units.smallSpacing
Behavior on opacity {
OpacityAnimator {
duration: Kirigami.Units.longDuration
}
}
/*PlasmaComponents3.ToolButton {
id: virtualKeyboardButton
text: i18ndc("plasma-desktop-sddm-theme", "Button to show/hide virtual keyboard")
icon.name: inputPanel.keyboardActive ? "input-keyboard-virtual-on" : "input-keyboard-virtual-off"
onClicked: { onClicked: {
// Otherwise the password field loses focus and virtual keyboard usingCustomUser = !usingCustomUser
// keystrokes get eaten
userListComponent.mainPasswordBox.forceActiveFocus();
inputPanel.showHide()
} }
visible: inputPanel.status === Loader.Ready onEntered: {
parent.opacity = 0.2
Layout.fillHeight: true
containmentMask: Item {
parent: virtualKeyboardButton
anchors.fill: parent
anchors.leftMargin: -footer.anchors.margins
anchors.bottomMargin: -footer.anchors.margins
} }
}*/ onExited: {
parent.opacity = 0
KeyboardButton { }
id: keyboardButton onPressed: {
parent.opacity = 0.3
onKeyboardLayoutChanged: { }
// Otherwise the password field loses focus and virtual keyboard onReleased: {
// keystrokes get eaten parent.opacity = 0.2
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
} }
} }
SessionButton { Image {
id: sessionButton anchors {
top: parent.top
onSessionChanged: { right: parent.right
// Otherwise the password field loses focus and virtual keyboard topMargin: 75
// keystrokes get eaten rightMargin: 10
userListComponent.mainPasswordBox.forceActiveFocus(); }
source: "icons/user.png"
width: 36
height: 36
fillMode: Image.PreserveAspectFit
} }
Layout.fillHeight: true // Text Fields
containmentMask: Item { ColumnLayout {
parent: sessionButton anchors.horizontalCenter: parent.horizontalCenter
anchors.fill: parent y: 975
anchors.leftMargin: virtualKeyboardButton.visible || keyboardButton.visible
? 0 : -footer.anchors.margins
anchors.bottomMargin: -footer.anchors.margins
}
}
// Username
Item { Item {
Layout.fillWidth: true Layout.preferredHeight: 100
visible: usingCustomUser
Image {
id: usernameBg
source: "text-field"
x: -(sourceSize.width / 2)
}
TextField {
id: usernameField
enabled: !attemptingToLogin
focus: usingCustomUser
placeholderText: "Username"
x: -(usernameBg.sourceSize.width / 2) + 6
y: 5
width: 955
height: 75
background: Rectangle {
color: "transparent"
}
font.family: "Rajdhani"
font.pointSize: 30
font.bold: true
Keys.onEscapePressed: {
mainStack.forceActiveFocus();
}
onAccepted: {
passwordField.forceActiveFocus();
}
}
} }
Battery {} // Password
Item {
Layout.preferredHeight: 100
Image {
id: passwordBg
source: "text-field"
x: -(sourceSize.width / 2)
}
TextField {
id: passwordField
enabled: !attemptingToLogin
focus: !usingCustomUser
echoMode: TextInput.Password
placeholderText: "Password"
x: -(passwordBg.sourceSize.width / 2) + 6
y: 5
width: 955
height: 75
background: Rectangle {
color: "transparent"
}
font.family: "Rajdhani"
font.pointSize: 30
font.bold: true
Keys.onEscapePressed: {
mainStack.forceActiveFocus();
}
onAccepted: {
attemptingToLogin = true
sddm.login(usernameField.text, passwordField.text, session.index)
event.accepted = true
} }
} }
Connections { Connections {
target: sddm target: sddm
function onLoginFailed() { function onLoginFailed() {
notificationMessage = i18nd("plasma-desktop-sddm-theme", "Login Failed") passwordField.selectAll()
footer.enabled = true passwordField.forceActiveFocus()
mainStack.enabled = true attemptingToLogin = false
userListComponent.userList.opacity = 0
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
} }
} }
onNotificationMessageChanged: {
if (notificationMessage) {
notificationResetTimer.start();
} }
} }
Timer {
id: notificationResetTimer
interval: 3000
onTriggered: notificationMessage = ""
}
} }

View File

@@ -1,2 +0,0 @@
#! /usr/bin/env bash
$XGETTEXT `find . -name \*.qml` -L Java -o $podir/plasma-desktop-sddm-theme.pot

View File

@@ -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()
}
}
}
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 577 KiB

After

Width:  |  Height:  |  Size: 577 KiB

View File

@@ -1,4 +0,0 @@
<svg width="4626" height="1044" viewBox="0 0 4626 1044" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M712.182 149.566C686.396 149.566 665.636 170.325 665.636 196.111C665.636 221.897 686.396 242.656 712.182 242.656C737.968 242.656 758.727 221.897 758.727 196.111C758.727 170.325 737.968 149.566 712.182 149.566ZM1038 149.566L944.909 242.656L1084.55 382.293L944.909 521.929L1038 615.02L1177.64 475.384L1270.73 382.293L1038 149.566ZM595.818 428.838C557.139 428.838 526 459.977 526 498.656C526 537.336 557.139 568.475 595.818 568.475C634.497 568.475 665.636 537.336 665.636 498.656C665.636 459.977 634.497 428.838 595.818 428.838V428.838ZM805.273 708.111C753.7 708.111 712.182 749.63 712.182 801.202C712.182 852.774 753.7 894.293 805.273 894.293C856.845 894.293 898.364 852.774 898.364 801.202C898.364 749.63 856.845 708.111 805.273 708.111Z" fill="white"/>
<path d="M1736.7 279.263C1806.2 279.263 1856.85 293.413 1888.62 321.712C1920.4 349.516 1936.28 388.49 1936.28 438.635C1936.28 468.424 1929.58 496.227 1916.18 522.045C1903.27 547.862 1881.42 568.963 1850.64 585.347C1819.86 601.234 1778.15 609.178 1725.52 609.178H1668.18V811H1587.75V279.263H1736.7ZM1730.74 347.033H1668.18V541.408H1716.59C1761.77 541.408 1795.78 533.96 1818.62 519.066C1841.95 503.675 1853.62 477.857 1853.62 441.614C1853.62 409.839 1843.69 386.256 1823.83 370.865C1803.97 354.977 1772.94 347.033 1730.74 347.033ZM2113.76 811H2034.81V245.005H2113.76V811ZM2393.37 402.143C2443.52 402.143 2481 413.314 2505.83 435.656C2531.15 457.501 2543.81 492.007 2543.81 539.174V811H2487.95L2472.31 755.145H2469.34C2451.96 776.991 2433.59 793.126 2414.23 803.553C2395.36 813.482 2369.04 818.447 2335.28 818.447C2299.04 818.447 2269 808.766 2245.17 789.403C2221.34 769.543 2209.42 738.761 2209.42 697.056C2209.42 655.848 2224.82 624.817 2255.6 603.965C2286.88 582.616 2334.29 570.949 2397.84 568.963L2466.36 566.729V544.387C2466.36 515.094 2459.65 494.49 2446.25 482.574C2432.84 470.162 2413.98 463.956 2389.65 463.956C2369.29 463.956 2349.68 466.935 2330.82 472.893C2311.95 478.85 2293.83 486.049 2276.45 494.49L2251.13 437.146C2270 427.216 2291.59 419.024 2315.92 412.569C2340.75 405.619 2366.56 402.143 2393.37 402.143ZM2465.61 618.115L2411.99 619.604C2366.31 621.59 2334.54 629.286 2316.67 642.691C2299.29 656.096 2290.6 674.466 2290.6 697.801C2290.6 718.653 2296.81 733.796 2309.22 743.23C2321.63 752.663 2337.77 757.379 2357.63 757.379C2388.41 757.379 2413.98 748.691 2434.33 731.314C2455.19 713.937 2465.61 687.871 2465.61 653.117V618.115ZM2931.98 697.801C2931.98 737.52 2917.58 767.557 2888.78 787.913C2860.48 808.269 2820.51 818.447 2768.88 818.447C2740.58 818.447 2716.25 816.461 2695.9 812.489C2676.04 808.518 2657.67 802.311 2640.79 793.871V724.611C2658.16 733.052 2678.52 740.747 2701.85 747.698C2725.69 754.152 2748.77 757.379 2771.11 757.379C2800.9 757.379 2822.25 752.663 2835.16 743.23C2848.57 733.796 2855.27 721.136 2855.27 705.248C2855.27 696.312 2852.79 688.368 2847.82 681.417C2842.86 673.97 2833.42 666.522 2819.52 659.075C2806.12 651.131 2786.26 642.195 2759.94 632.265C2734.13 622.335 2712.28 612.157 2694.41 601.731C2677.03 591.305 2663.62 578.892 2654.19 564.494C2644.76 550.096 2640.04 531.974 2640.04 510.129C2640.04 475.375 2653.94 448.813 2681.75 430.443C2710.05 411.576 2747.28 402.143 2793.46 402.143C2817.78 402.143 2840.62 404.626 2861.97 409.591C2883.82 414.555 2904.92 421.506 2925.27 430.443L2899.21 490.766C2881.83 483.319 2863.96 477.113 2845.59 472.148C2827.22 466.686 2808.6 463.956 2789.73 463.956C2741.08 463.956 2716.75 478.106 2716.75 506.405C2716.75 515.839 2719.48 524.031 2724.94 530.982C2730.9 537.932 2740.83 544.883 2754.73 551.834C2769.13 558.785 2788.99 567.225 2814.31 577.155C2838.64 586.588 2859.49 596.518 2876.87 606.944C2894.74 616.874 2908.39 629.038 2917.83 643.436C2927.26 657.834 2931.98 675.956 2931.98 697.801ZM3475.91 402.143C3521.09 402.143 3555.1 413.811 3577.94 437.146C3600.77 460.48 3612.19 497.965 3612.19 549.6V811H3533.25V560.026C3533.25 497.965 3508.18 466.935 3458.03 466.935C3422.29 466.935 3396.72 478.106 3381.33 500.448C3365.94 522.293 3358.24 553.82 3358.24 595.028V811H3280.04V560.026C3280.04 497.965 3254.72 466.935 3204.08 466.935C3166.35 466.935 3140.28 479.099 3125.88 503.427C3111.98 527.754 3105.03 562.757 3105.03 608.433V811H3026.09V409.591H3088.65L3099.82 463.211H3104.29C3116.7 442.359 3133.33 426.968 3154.18 417.038C3175.53 407.108 3198.12 402.143 3221.95 402.143C3283.52 402.143 3324.23 423.74 3344.09 466.935H3350.05C3362.96 445.089 3380.83 428.953 3403.67 418.527C3426.51 407.605 3450.59 402.143 3475.91 402.143ZM3888.65 402.143C3938.8 402.143 3976.28 413.314 4001.11 435.656C4026.43 457.501 4039.09 492.007 4039.09 539.174V811H3983.23L3967.59 755.145H3964.61C3947.24 776.991 3928.87 793.126 3909.5 803.553C3890.64 813.482 3864.32 818.447 3830.56 818.447C3794.32 818.447 3764.28 808.766 3740.45 789.403C3716.62 769.543 3704.7 738.761 3704.7 697.056C3704.7 655.848 3720.09 624.817 3750.88 603.965C3782.15 582.616 3829.57 570.949 3893.12 568.963L3961.63 566.729V544.387C3961.63 515.094 3954.93 494.49 3941.53 482.574C3928.12 470.162 3909.26 463.956 3884.93 463.956C3864.57 463.956 3844.96 466.935 3826.09 472.893C3807.23 478.85 3789.11 486.049 3771.73 494.49L3746.41 437.146C3765.27 427.216 3786.87 419.024 3811.2 412.569C3836.02 405.619 3861.84 402.143 3888.65 402.143ZM3960.89 618.115L3907.27 619.604C3861.59 621.59 3829.82 629.286 3811.94 642.691C3794.57 656.096 3785.88 674.466 3785.88 697.801C3785.88 718.653 3792.08 733.796 3804.5 743.23C3816.91 752.663 3833.04 757.379 3852.9 757.379C3883.69 757.379 3909.26 748.691 3929.61 731.314C3950.46 713.937 3960.89 687.871 3960.89 653.117V618.115Z" fill="white"/>
</svg>

Before

Width:  |  Height:  |  Size: 5.5 KiB

View File

@@ -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>

Before

Width:  |  Height:  |  Size: 782 B

BIN
icons/down-arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

BIN
icons/user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@@ -1,107 +0,0 @@
[SddmGreeterTheme]
Name=Breeze
Name[ar]=نسيم
Name[az]=Breeze
Name[be]=Breeze
Name[bg]=Breeze
Name[ca]=Brisa
Name[ca@valencia]=Brisa
Name[cs]=Breeze
Name[da]=Breeze
Name[de]=Breeze
Name[el]=Breeze
Name[en_GB]=Breeze
Name[eo]=Breeze
Name[es]=Brisa
Name[eu]=Breeze
Name[fi]=Breeze
Name[fr]=Breeze
Name[gl]=Brisa
Name[he]=בריזה
Name[hu]=Breeze
Name[ia]=Breeze (Brisa)
Name[id]=Breeze
Name[is]=Breeze
Name[it]=Brezza
Name[ka]=Breeze
Name[ko]=Breeze
Name[lt]=Breeze
Name[lv]=Breeze
Name[nb]=Breeze
Name[nl]=Breeze
Name[nn]=Breeze
Name[pa]=ਬਰੀਜ਼
Name[pl]=Bryza
Name[pt_BR]=Breeze
Name[ro]=Breeze
Name[ru]=Breeze
Name[sa]=वायुः
Name[sk]=Vánok
Name[sl]=Sapica
Name[sv]=Breeze
Name[ta]=பிரீஸ்
Name[tr]=Esinti
Name[uk]=Breeze
Name[x-test]=xxBreezexx
Name[zh_CN]=Breeze 微风
Name[zh_TW]=Breeze
Description=Breeze
Description[ar]=نسيم
Description[az]=Breeze
Description[be]=Breeze
Description[bg]=Breeze
Description[ca]=Brisa
Description[ca@valencia]=Brisa
Description[cs]=Breeze
Description[da]=Breeze
Description[de]=Breeze
Description[el]=Breeze
Description[en_GB]=Breeze
Description[eo]=Brizo
Description[es]=Brisa
Description[eu]=Brisa
Description[fi]=Breeze
Description[fr]=Breeze
Description[gl]=Brisa.
Description[he]=בריזה
Description[hu]=Breeze
Description[ia]=Breeze (Brisa)
Description[id]=Breeze
Description[is]=Breeze
Description[it]=Brezza
Description[ka]=Breeze
Description[ko]=Breeze
Description[lt]=Breeze
Description[lv]=Breeze
Description[nb]=Breeze
Description[nl]=Breeze
Description[nn]=Breeze
Description[pa]=ਬਰੀਜ਼
Description[pl]=Bryza
Description[pt_BR]=Breeze
Description[ro]=Briză
Description[ru]=Breeze
Description[sa]=वायुः
Description[sk]=Vánok
Description[sl]=Sapica
Description[sv]=Breeze
Description[ta]=பிரீஸ்
Description[tr]=Esinti
Description[uk]=Breeze
Description[x-test]=xxBreezexx
Description[zh_CN]=Breeze 微风
Description[zh_TW]=Breeze
Author=KDE Visual Design Group
Copyright=(c) 2014, David Edmundson
License=CC-BY-SA
Type=sddm-theme
Version=0.1
Website=https://github.com/sddm/sddm
Screenshot=preview.png
MainScript=Main.qml
ConfigFile=theme.conf
TranslationsDirectory=translations
Email=plasma-devel@kde.org
Theme-Id=breeze
Theme-API=2.0
QtVersion=6

Binary file not shown.

Before

Width:  |  Height:  |  Size: 528 KiB

BIN
text-field.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -1,9 +1,2 @@
[General] [General]
showlogo=hidden
showClock=true
logo=/nix/store/0gnm173zw3fic8h8hn9fwvg04k2h3szy-plasma-desktop-6.4.3/share/sddm/themes/breeze/default-logo.svg
type=image
color=#1d99f3
fontSize=10
background=background.png background=background.png
needsFullUserModel=false

View File

@@ -1,9 +0,0 @@
[General]
showlogo=hidden
showClock=true
logo=${KDE_INSTALL_FULL_DATADIR}/sddm/themes/breeze/default-logo.svg
type=image
color=#1d99f3
fontSize=10
background=${KDE_INSTALL_FULL_WALLPAPERDIR}/Next/contents/images/5120x2880.png
needsFullUserModel=false