Update
Before Width: | Height: | Size: 4.1 MiB |
|
@ -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
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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_lookandfeel_org.kde.lookandfeel", "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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 int fontSize: parseInt(config.fontSize)
|
||||
|
||||
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_lookandfeel_org.kde.lookandfeel", "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_lookandfeel_org.kde.lookandfeel", "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_lookandfeel_org.kde.lookandfeel", "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()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,553 +0,0 @@
|
|||
/*
|
||||
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.plasma5support 2.0 as P5Support
|
||||
import org.kde.kirigami 2.20 as Kirigami
|
||||
|
||||
import org.kde.breeze.components
|
||||
|
||||
// TODO: Once SDDM 0.19 is released and we are setting the font size using the
|
||||
// SDDM KCM's syncing feature, remove the `config.fontSize` overrides here and
|
||||
// the fontSize properties in various components, because the theme's default
|
||||
// font size will be correctly propagated to the login screen
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
// 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
|
||||
|
||||
P5Support.DataSource {
|
||||
id: keystateSource
|
||||
engine: "keystate"
|
||||
connectedSources: "Caps Lock"
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
RejectPasswordAnimation {
|
||||
id: rejectPasswordAnimation
|
||||
target: mainStack
|
||||
}
|
||||
|
||||
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
|
||||
drag.filterChildren: true
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
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
|
||||
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 (keystateSource.data["Caps Lock"]["Locked"]) {
|
||||
parts.push(i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Caps Lock is on"));
|
||||
}
|
||||
if (root.notificationMessage) {
|
||||
parts.push(root.notificationMessage);
|
||||
}
|
||||
return parts.join(" • ");
|
||||
}
|
||||
|
||||
actionItemsVisible: !inputPanel.keyboardActive
|
||||
actionItems: [
|
||||
ActionButton {
|
||||
iconSource: "system-suspend"
|
||||
text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "Suspend to RAM", "Sleep")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: sddm.suspend()
|
||||
enabled: sddm.canSuspend
|
||||
},
|
||||
ActionButton {
|
||||
iconSource: "system-reboot"
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Restart")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: sddm.reboot()
|
||||
enabled: sddm.canReboot
|
||||
},
|
||||
ActionButton {
|
||||
iconSource: "system-shutdown"
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Shut Down")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: sddm.powerOff()
|
||||
enabled: sddm.canPowerOff
|
||||
},
|
||||
ActionButton {
|
||||
iconSource: "system-user-prompt"
|
||||
text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "For switching to a username and password prompt", "Other…")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: mainStack.push(userPromptComponent)
|
||||
enabled: true
|
||||
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: parseInt(config.fontSize) + 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_lookandfeel_org.kde.lookandfeel", "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 {
|
||||
iconSource: "system-suspend"
|
||||
text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "Suspend to RAM", "Sleep")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: sddm.suspend()
|
||||
enabled: sddm.canSuspend
|
||||
},
|
||||
ActionButton {
|
||||
iconSource: "system-reboot"
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Restart")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: sddm.reboot()
|
||||
enabled: sddm.canReboot
|
||||
},
|
||||
ActionButton {
|
||||
iconSource: "system-shutdown"
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Shut Down")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: sddm.powerOff()
|
||||
enabled: sddm.canPowerOff
|
||||
},
|
||||
ActionButton {
|
||||
iconSource: "system-user-list"
|
||||
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "List Users")
|
||||
fontSize: parseInt(config.fontSize) + 1
|
||||
onClicked: mainStack.pop()
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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_lookandfeel_org.kde.lookandfeel", "Button to show/hide virtual keyboard", "Virtual Keyboard")
|
||||
font.pointSize: config.fontSize
|
||||
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()
|
||||
}
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
KeyboardButton {
|
||||
id: keyboardButton
|
||||
|
||||
font.pointSize: config.fontSize
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
SessionButton {
|
||||
id: sessionButton
|
||||
|
||||
font.pointSize: config.fontSize
|
||||
|
||||
onSessionChanged: {
|
||||
// Otherwise the password field loses focus and virtual keyboard
|
||||
// keystrokes get eaten
|
||||
userListComponent.mainPasswordBox.forceActiveFocus();
|
||||
}
|
||||
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Battery {
|
||||
fontSize: config.fontSize
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: sddm
|
||||
function onLoginFailed() {
|
||||
notificationMessage = i18nd("plasma_lookandfeel_org.kde.lookandfeel", "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
|
||||
}
|
||||
}
|
||||
|
||||
onNotificationMessageChanged: {
|
||||
if (notificationMessage) {
|
||||
notificationResetTimer.start();
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: notificationResetTimer
|
||||
interval: 3000
|
||||
onTriggered: notificationMessage = ""
|
||||
}
|
||||
}
|
|
@ -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_lookandfeel_org.kde.lookandfeel", "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()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -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 |
|
@ -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 |
|
@ -1,123 +0,0 @@
|
|||
[SddmGreeterTheme]
|
||||
Name=Breeze
|
||||
Name[ar]=نسيم
|
||||
Name[az]=Breeze
|
||||
Name[be]=Breeze
|
||||
Name[bg]=Breeze
|
||||
Name[bs]=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[et]=Breeze
|
||||
Name[eu]=Breeze
|
||||
Name[fi]=Breeze
|
||||
Name[fr]=Breeze
|
||||
Name[gl]=Breeze
|
||||
Name[he]=בריזה
|
||||
Name[hi]=ब्रीज़
|
||||
Name[hu]=Breeze
|
||||
Name[ia]=Brisa
|
||||
Name[id]=Breeze
|
||||
Name[is]=Breeze
|
||||
Name[it]=Brezza
|
||||
Name[ja]=Breeze
|
||||
Name[ka]=ნიავი
|
||||
Name[ko]=Breeze
|
||||
Name[lt]=Breeze
|
||||
Name[ml]=ബ്രീസ്
|
||||
Name[nb]=Breeze
|
||||
Name[nds]=Breeze
|
||||
Name[nl]=Breeze
|
||||
Name[nn]=Breeze
|
||||
Name[pa]=ਬਰੀਜ਼
|
||||
Name[pl]=Bryza
|
||||
Name[pt]=Brisa
|
||||
Name[pt_BR]=Breeze
|
||||
Name[ro]=Briză
|
||||
Name[ru]=Breeze
|
||||
Name[sa]=ब्रीज़
|
||||
Name[sk]=Vánok
|
||||
Name[sl]=Sapica
|
||||
Name[sr]=Поветарац
|
||||
Name[sr@ijekavian]=Поветарац
|
||||
Name[sr@ijekavianlatin]=Povetarac
|
||||
Name[sr@latin]=Povetarac
|
||||
Name[sv]=Breeze
|
||||
Name[ta]=பிரீஸ்
|
||||
Name[tg]=Насим
|
||||
Name[tr]=Esinti
|
||||
Name[uk]=Breeze
|
||||
Name[vi]=Breeze
|
||||
Name[x-test]=xxBreezexx
|
||||
Name[zh_CN]=Breeze 微风
|
||||
Name[zh_TW]=微風
|
||||
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[en_GB]=Breeze
|
||||
Description[eo]=Breeze
|
||||
Description[es]=Brisa
|
||||
Description[et]=Breeze
|
||||
Description[eu]=Breeze
|
||||
Description[fi]=Breeze
|
||||
Description[fr]=Breeze
|
||||
Description[gl]=Breeze.
|
||||
Description[he]=בריזה
|
||||
Description[hi]=ब्रीज़
|
||||
Description[hu]=Breeze
|
||||
Description[ia]=Brisa
|
||||
Description[id]=Breeze
|
||||
Description[is]=Breeze
|
||||
Description[it]=Brezza
|
||||
Description[ja]=Breeze
|
||||
Description[ka]=ნიავი
|
||||
Description[ko]=Breeze
|
||||
Description[lt]=Breeze
|
||||
Description[ml]=ബ്രീസ്
|
||||
Description[nl]=Breeze
|
||||
Description[nn]=Breeze
|
||||
Description[pa]=ਬਰੀਜ਼
|
||||
Description[pl]=Bryza
|
||||
Description[pt]=Brisa
|
||||
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[tg]=Насим
|
||||
Description[tr]=Esinti
|
||||
Description[uk]=Breeze
|
||||
Description[vi]=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
|
Before Width: | Height: | Size: 651 KiB |
|
@ -1,8 +0,0 @@
|
|||
[General]
|
||||
showlogo=hidden
|
||||
logo=/usr/share/sddm/themes/breeze/default-logo.svg
|
||||
type=image
|
||||
color=#1d99f3
|
||||
fontSize=10
|
||||
background=/usr/share/wallpapers/Next/contents/images/5120x2880.png
|
||||
needsFullUserModel=false
|
|
@ -1,3 +0,0 @@
|
|||
[General]
|
||||
background=5120x2880.png
|
||||
type=image
|
Before Width: | Height: | Size: 492 KiB |
Before Width: | Height: | Size: 915 KiB |
Before Width: | Height: | Size: 730 KiB |
Before Width: | Height: | Size: 598 KiB |
Before Width: | Height: | Size: 607 KiB |
Before Width: | Height: | Size: 718 KiB |
Before Width: | Height: | Size: 975 KiB |
Before Width: | Height: | Size: 903 KiB |
Before Width: | Height: | Size: 1009 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1.5 MiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 2.2 MiB |
Before Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 2.7 MiB |
Before Width: | Height: | Size: 102 KiB |
Before Width: | Height: | Size: 4.1 MiB |
Before Width: | Height: | Size: 578 KiB |
Before Width: | Height: | Size: 535 KiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 783 KiB |
Before Width: | Height: | Size: 669 KiB |
Before Width: | Height: | Size: 685 KiB |
Before Width: | Height: | Size: 801 KiB |
Before Width: | Height: | Size: 1.0 MiB |
Before Width: | Height: | Size: 1008 KiB |
Before Width: | Height: | Size: 1.1 MiB |
Before Width: | Height: | Size: 1.2 MiB |
Before Width: | Height: | Size: 1.7 MiB |
Before Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 2.4 MiB |
Before Width: | Height: | Size: 2.6 MiB |
Before Width: | Height: | Size: 213 KiB |
Before Width: | Height: | Size: 3.0 MiB |
Before Width: | Height: | Size: 114 KiB |
Before Width: | Height: | Size: 4.6 MiB |
Before Width: | Height: | Size: 648 KiB |
|
@ -1,62 +0,0 @@
|
|||
{
|
||||
"KPlugin": {
|
||||
"Authors": [
|
||||
{
|
||||
"Email": "bluepancake72@gmail.com",
|
||||
"Name": "axo1otl",
|
||||
"Name[bg]": "axo1otl",
|
||||
"Name[ca@valencia]": "axo1otl",
|
||||
"Name[ca]": "axo1otl",
|
||||
"Name[eo]": "axo1otl",
|
||||
"Name[es]": "axo1otl",
|
||||
"Name[eu]": "axo1otl",
|
||||
"Name[fi]": "axo1otl",
|
||||
"Name[fr]": "axo1otl",
|
||||
"Name[gl]": "axo1otl",
|
||||
"Name[hu]": "axo1otl",
|
||||
"Name[ia]": "axo1otl",
|
||||
"Name[it]": "axo1otl",
|
||||
"Name[ka]": "axo1otl",
|
||||
"Name[ko]": "axo1otl",
|
||||
"Name[lt]": "axo1otl",
|
||||
"Name[nn]": "axo1otl",
|
||||
"Name[pl]": "axo1otl",
|
||||
"Name[pt_BR]": "axo1otl",
|
||||
"Name[ro]": "axo1otl",
|
||||
"Name[ru]": "axo1otl",
|
||||
"Name[sk]": "axo1otl",
|
||||
"Name[sl]": "axo1otl",
|
||||
"Name[tr]": "axo1otl",
|
||||
"Name[zh_TW]": "axo1otl"
|
||||
}
|
||||
],
|
||||
"Id": "Next",
|
||||
"License": "CC-BY-SA-4.0",
|
||||
"Name": "Scarlet Tree",
|
||||
"Name[bg]": "Scarlet Tree",
|
||||
"Name[ca@valencia]": "Scarlet Tree",
|
||||
"Name[ca]": "Scarlet Tree",
|
||||
"Name[cs]": "Šarlatový strom",
|
||||
"Name[eo]": "Scarlet Tree",
|
||||
"Name[es]": "Árbol escarlata",
|
||||
"Name[eu]": "Zuhaitz gorrimina",
|
||||
"Name[fi]": "Purppurapuu",
|
||||
"Name[fr]": "Scarlet Tree",
|
||||
"Name[gl]": "Árbore escarlata",
|
||||
"Name[hu]": "Skarlátvörös fa",
|
||||
"Name[ia]": "Arbore scarlatin",
|
||||
"Name[it]": "Albero scarlatto",
|
||||
"Name[ka]": "Scarlet Tree",
|
||||
"Name[ko]": "스칼렛 트리",
|
||||
"Name[lt]": "Skarlet medis",
|
||||
"Name[nn]": "Skarlakseika",
|
||||
"Name[pl]": "Szkarłatne drzewo",
|
||||
"Name[pt_BR]": "Árvore escarlate",
|
||||
"Name[ro]": "Scarlet Tree",
|
||||
"Name[ru]": "Алое дерево",
|
||||
"Name[sk]": "Šarlátový strom",
|
||||
"Name[sl]": "Škrlatno drevo",
|
||||
"Name[tr]": "Kızıl Ağaç",
|
||||
"Name[zh_TW]": "緋紅木"
|
||||
}
|
||||
}
|