sddm-i3-theme
This commit is contained in:
parent
a432aeafb9
commit
19f3c5eaee
17 changed files with 958 additions and 5 deletions
16
files/sddm-i3-theme/LICENSE
Normal file
16
files/sddm-i3-theme/LICENSE
Normal file
|
@ -0,0 +1,16 @@
|
|||
maya
|
||||
----------------------------------------------------------------------
|
||||
|
||||
This theme follow the licencing policy of SDDM.
|
||||
|
||||
1) All QML files are available under terms of the MIT License.
|
||||
|
||||
2) The material design icons from https://design.google.com/icons/
|
||||
have been used in the theme.
|
||||
These icon are available under the Creative Common Attribution 4.0
|
||||
International License (CC-BY 4.0).
|
||||
|
||||
3) Open Sans Condensed font downloaded from Font Squirrel is available
|
||||
under the Apache License version 2.0.
|
||||
(https://www.fontsquirrel.com/license/open-sans-condensed)
|
||||
----------------------------------------------------------------------
|
374
files/sddm-i3-theme/Main.qml
Normal file
374
files/sddm-i3-theme/Main.qml
Normal file
|
@ -0,0 +1,374 @@
|
|||
//
|
||||
// [maya] main.qml
|
||||
//
|
||||
// Main script for the SDDM theme
|
||||
//
|
||||
// (c) 2016 Sanjeev Premi (spremi@ymail.com)
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
// (https://spdx.org/licenses/MIT.html)
|
||||
//
|
||||
|
||||
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.0
|
||||
import SddmComponents 2.0
|
||||
import "components"
|
||||
|
||||
Rectangle {
|
||||
id : gRoot
|
||||
|
||||
property color cTextNormal : "#ffffff"
|
||||
property color cTextFailure : "#f43841"
|
||||
property color cTextSuccess : "#00ff00"
|
||||
property color cBackgroundRoot : "#000000"
|
||||
property color cBackgroundNormal : "#333333"
|
||||
property color cBackgroundActive : "#285577"
|
||||
property color cBorderNormal : "#222222"
|
||||
property color cBorderActive : "#4c7899"
|
||||
|
||||
property string fontFamily : "monospace"
|
||||
property int fontSize : 16
|
||||
|
||||
property string defaultUser : ""
|
||||
|
||||
property int panelSize : 420
|
||||
property int offset : 96
|
||||
|
||||
color: cBackgroundRoot
|
||||
|
||||
property int activeInput : initInputs()
|
||||
property int currentSessionsIndex : sessionModel.lastIndex
|
||||
property string currentSession: sessionModel.data(sessionModel.index(currentSessionsIndex, 0), Qt.UserRole + 4)
|
||||
|
||||
function xCenter(sz) {
|
||||
return gRoot.width / 2 - sz / 2;
|
||||
}
|
||||
|
||||
function yCenter(sz) {
|
||||
return gRoot.height / 2 - sz / 2;
|
||||
}
|
||||
|
||||
function initInputs() {
|
||||
if(defaultUser != "") {
|
||||
gPasswordInput.forceActiveFocus();
|
||||
return 1;
|
||||
} else {
|
||||
gLoginInput.forceActiveFocus();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function initInfoText() {
|
||||
var text = "";
|
||||
if(sddm.canPowerOff) {
|
||||
text += "f1 shutdown"
|
||||
}
|
||||
if(sddm.canReboot) {
|
||||
if(text != "") {
|
||||
text += " "
|
||||
}
|
||||
text += "f2 reboot"
|
||||
}
|
||||
return text;
|
||||
}
|
||||
|
||||
function sessionsCycleSelectPrev() {
|
||||
if(timer.running) {
|
||||
return;
|
||||
}
|
||||
if (currentSessionsIndex - 1 < 0) {
|
||||
currentSessionsIndex = sessionModel.rowCount() - 1;
|
||||
} else {
|
||||
currentSessionsIndex--;
|
||||
}
|
||||
}
|
||||
|
||||
function sessionsCycleSelectNext() {
|
||||
if(timer.running) {
|
||||
return;
|
||||
}
|
||||
if (currentSessionsIndex >= sessionModel.rowCount() - 1) {
|
||||
currentSessionsIndex = 0;
|
||||
} else {
|
||||
currentSessionsIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
function focusNext() {
|
||||
if(timer.running) {
|
||||
return;
|
||||
}
|
||||
if(gRoot.activeInput == 0) {
|
||||
gPasswordInput.forceActiveFocus();
|
||||
gRoot.activeInput = 1;
|
||||
} else if(gRoot.activeInput == -1) {
|
||||
gLoginInput.forceActiveFocus();
|
||||
gRoot.activeInput = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function focusPrev() {
|
||||
if(timer.running) {
|
||||
return;
|
||||
}
|
||||
if(gRoot.activeInput == 1) {
|
||||
gLoginInput.forceActiveFocus();
|
||||
gRoot.activeInput = 0;
|
||||
} else if(gRoot.activeInput == 0) {
|
||||
gSessionBox.forceActiveFocus();
|
||||
gRoot.activeInput = -1;
|
||||
}
|
||||
}
|
||||
|
||||
function setInputLock(lock) {
|
||||
gLoginInput.readOnly = lock;
|
||||
gPasswordInput.readOnly = lock;
|
||||
gLoginInput.enabled = !lock;
|
||||
gPasswordInput.enabled = !lock;
|
||||
gSessionBox.enabled = !lock;
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: timer
|
||||
interval: 750
|
||||
repeat: true
|
||||
running: false
|
||||
onTriggered: {
|
||||
gInfoLabel.text += ".";
|
||||
}
|
||||
}
|
||||
|
||||
function tryLogin() {
|
||||
gInfoLabel.color = cTextNormal;
|
||||
gInfoLabel.text = ".";
|
||||
timer.start();
|
||||
|
||||
setInputLock(true);
|
||||
|
||||
sddm.login(gLoginInput.text, gPasswordInput.text, currentSessionsIndex);
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: sddm
|
||||
function onLoginSucceeded() {
|
||||
timer.stop();
|
||||
gInfoLabel.color = cTextSuccess
|
||||
gInfoLabel.text = "success"
|
||||
}
|
||||
|
||||
function onLoginFailed() {
|
||||
timer.stop();
|
||||
gInfoLabel.color = cTextFailure
|
||||
gInfoLabel.text = "auth failure"
|
||||
setInputLock(false);
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Down"
|
||||
onActivated: focusNext();
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Up"
|
||||
onActivated: focusPrev();
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "F1"
|
||||
onActivated: {
|
||||
sddm.powerOff();
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "F2"
|
||||
onActivated: {
|
||||
sddm.reboot();
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
x: xCenter(panelSize)
|
||||
y: yCenter(panelSize)
|
||||
width: panelSize
|
||||
height: 2 * fontSize
|
||||
|
||||
horizontalAlignment: Qt.AlignHCenter
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
||||
font.pixelSize: fontSize
|
||||
font.family: fontFamily
|
||||
|
||||
color: cTextNormal
|
||||
|
||||
text: sddm.hostName;
|
||||
}
|
||||
|
||||
Text {
|
||||
x: 0
|
||||
y: gRoot.height - 2 * fontSize
|
||||
width: gRoot.width
|
||||
height: 2 * fontSize
|
||||
|
||||
horizontalAlignment: Qt.AlignHCenter
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
||||
font.pixelSize: fontSize
|
||||
font.family: fontFamily
|
||||
|
||||
color: cTextNormal
|
||||
text: initInfoText();
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
x: xCenter(panelSize)
|
||||
y: yCenter(panelSize) + 3 * fontSize
|
||||
|
||||
Text {
|
||||
width: panelSize
|
||||
height: 2 * fontSize
|
||||
|
||||
horizontalAlignment: Qt.AlignHLeft
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
||||
font.pixelSize: fontSize
|
||||
font.family: fontFamily
|
||||
|
||||
color: cTextNormal
|
||||
|
||||
text: "session:"
|
||||
}
|
||||
|
||||
SessionSelect {
|
||||
id: gSessionBox
|
||||
|
||||
x: offset
|
||||
|
||||
width: panelSize - offset
|
||||
height: fontSize * 2
|
||||
|
||||
text: currentSession
|
||||
|
||||
onPrevClicked: sessionsCycleSelectPrev();
|
||||
onNextClicked: sessionsCycleSelectNext();
|
||||
|
||||
KeyNavigation.tab : gLoginInput
|
||||
|
||||
Keys.onPressed: function (event) {
|
||||
if(event.key == Qt.Key_Return || event.key == Qt.Key_Enter) {
|
||||
focusNext();
|
||||
event.accepted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
x: xCenter(panelSize)
|
||||
y: yCenter(panelSize) + 2 * 3 * fontSize
|
||||
|
||||
Text {
|
||||
width: panelSize
|
||||
height: 2 * fontSize
|
||||
|
||||
horizontalAlignment: Qt.AlignHLeft
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
||||
font.pixelSize: fontSize
|
||||
font.family: fontFamily
|
||||
|
||||
color: cTextNormal
|
||||
|
||||
text: "login:"
|
||||
}
|
||||
|
||||
TextBoxCustom {
|
||||
id: gLoginInput
|
||||
|
||||
x: offset
|
||||
width: panelSize - offset
|
||||
height: 2 * fontSize
|
||||
|
||||
font.pixelSize: fontSize
|
||||
font.family: fontFamily
|
||||
|
||||
cText: cTextNormal
|
||||
// TODO set the remaining colors
|
||||
|
||||
text: defaultUser
|
||||
|
||||
KeyNavigation.tab : gPasswordInput
|
||||
KeyNavigation.backtab : gSessionBox
|
||||
|
||||
Keys.onPressed: function (event) {
|
||||
if(event.key == Qt.Key_Return || event.key == Qt.Key_Enter) {
|
||||
focusNext();
|
||||
event.accepted = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
x: xCenter(panelSize)
|
||||
y: yCenter(panelSize) + 3 * 3 * fontSize
|
||||
|
||||
Text {
|
||||
width: panelSize
|
||||
height: 2 * fontSize
|
||||
|
||||
horizontalAlignment: Qt.AlignHLeft
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
||||
font.pixelSize: fontSize
|
||||
font.family: fontFamily
|
||||
|
||||
color: cTextNormal
|
||||
|
||||
text: "password:"
|
||||
}
|
||||
|
||||
TextBoxCustom {
|
||||
id: gPasswordInput
|
||||
|
||||
x: offset
|
||||
width: panelSize - offset
|
||||
height: 2 * fontSize
|
||||
|
||||
font.pixelSize: fontSize
|
||||
font.family: fontFamily
|
||||
|
||||
cText: cTextNormal
|
||||
// todo set the remaining colors here
|
||||
|
||||
echoMode: TextInput.Password
|
||||
|
||||
Keys.onPressed: function(event) {
|
||||
if(event.key == Qt.Key_Return || event.key == Qt.Key_Enter) {
|
||||
tryLogin();
|
||||
event.accepted = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: gInfoLabel
|
||||
|
||||
text: ""
|
||||
|
||||
x: xCenter(panelSize)
|
||||
y: yCenter(panelSize) + 4 * 3 * fontSize
|
||||
|
||||
width: panelSize
|
||||
height: 2 * fontSize
|
||||
|
||||
horizontalAlignment: Qt.AlignHCenter
|
||||
verticalAlignment: Qt.AlignVCenter
|
||||
|
||||
color: cTextNormal
|
||||
}
|
||||
}
|
||||
|
31
files/sddm-i3-theme/README
Normal file
31
files/sddm-i3-theme/README
Normal file
|
@ -0,0 +1,31 @@
|
|||
1. INTRODUCTION
|
||||
|
||||
In Hindi, 'maya' refers to 'material wealth'.
|
||||
|
||||
This is a simple 'material' inspired SDDM theme.
|
||||
|
||||
|
||||
2. BACKGROUND
|
||||
|
||||
While contributing new translations, I tried testing them on
|
||||
my working Linux machine. But only few strings appeared to be
|
||||
translated.
|
||||
|
||||
Took some time, to discover that SDDM theme on my desktop was
|
||||
not using strings from SDDM. Few other themes I tried, weren't
|
||||
using all the strings.
|
||||
|
||||
Necessity to test translations was the driving force behind
|
||||
this theme. The 'material' inspiration helps in keeping focus
|
||||
on original intent.
|
||||
|
||||
|
||||
3. ACKNOWLEDGEMENTS
|
||||
|
||||
1. The basic theme and colors are material inspired.
|
||||
|
||||
2. Material Icons have been used from:
|
||||
https://design.google.com/icons/
|
||||
|
||||
3. Open Sans Condensed font from Font Squirrel.
|
||||
https://www.fontsquirrel.com/
|
121
files/sddm-i3-theme/components/SessionSelect.qml
Normal file
121
files/sddm-i3-theme/components/SessionSelect.qml
Normal file
|
@ -0,0 +1,121 @@
|
|||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.0
|
||||
|
||||
FocusScope {
|
||||
id: root
|
||||
|
||||
signal prevClicked()
|
||||
signal nextClicked()
|
||||
|
||||
property string fontFamily: "monospace"
|
||||
property int fontSize: 16
|
||||
property string prevText: "<"
|
||||
property string nextText: ">"
|
||||
property string text: ""
|
||||
property color textColor: "#ffffff"
|
||||
|
||||
property color cNormalBorder : "#222222"
|
||||
property color cNormalBackground : "#333333"
|
||||
property color cFocusBorder : "#4c7899"
|
||||
property color cFocusBackground : "#285577"
|
||||
|
||||
Shortcut {
|
||||
sequence: "Left"
|
||||
onActivated: {
|
||||
prevClicked()
|
||||
}
|
||||
}
|
||||
|
||||
Shortcut {
|
||||
sequence: "Right"
|
||||
onActivated: {
|
||||
nextClicked()
|
||||
}
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id: main
|
||||
|
||||
anchors.fill: root
|
||||
|
||||
color: cNormalBackground
|
||||
border.color: cNormalBorder
|
||||
border.width: 1
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "focus"
|
||||
when: root.activeFocus
|
||||
PropertyChanges {
|
||||
target: main
|
||||
color: cFocusBackground
|
||||
border.color: cFocusBorder
|
||||
border.width: 1
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
root.focus = true;
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: sessionName
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font.pixelSize: root.fontSize
|
||||
font.family: root.fontFamily
|
||||
color: textColor
|
||||
text: root.text
|
||||
anchors {
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: prevButton
|
||||
text: root.prevText
|
||||
color: textColor
|
||||
font.pixelSize: root.fontSize
|
||||
font.family: root.fontFamily
|
||||
anchors {
|
||||
left: parent.left
|
||||
verticalCenter: parent.verticalCenter
|
||||
rightMargin: 10
|
||||
leftMargin: 8
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
root.prevClicked();
|
||||
root.focus = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id: nextButton
|
||||
text: root.nextText
|
||||
color: textColor
|
||||
font.pixelSize: root.fontSize
|
||||
font.family: "monospace"
|
||||
anchors {
|
||||
right: parent.right
|
||||
verticalCenter: parent.verticalCenter
|
||||
leftMargin: 10
|
||||
rightMargin: 8
|
||||
}
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
root.nextClicked();
|
||||
root.focus = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
206
files/sddm-i3-theme/components/SpButton.qml
Normal file
206
files/sddm-i3-theme/components/SpButton.qml
Normal file
|
@ -0,0 +1,206 @@
|
|||
//
|
||||
// [maya] components/SpButton.qml
|
||||
//
|
||||
// Implements custom action button with label
|
||||
//
|
||||
// (c) 2016 Sanjeev Premi (spremi@ymail.com)
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
// (https://spdx.org/licenses/MIT.html)
|
||||
//
|
||||
|
||||
|
||||
import QtQuick 2.0
|
||||
|
||||
Item {
|
||||
id : sp_button
|
||||
|
||||
property bool enabled : true
|
||||
|
||||
property alias icon : sp_button_icon.source
|
||||
property alias label : sp_button_label.text
|
||||
property alias font : sp_button_label.font
|
||||
|
||||
property color iconColor : "#aaaaaa"
|
||||
property color labelColor : "#424242"
|
||||
|
||||
property color hoverIconColor : "#cccccc"
|
||||
property color hoverLabelColor : "#808080"
|
||||
|
||||
property color pressIconColor : "#dcdcdc"
|
||||
property color pressLabelColor : "#a0a0a0"
|
||||
|
||||
property color disableColor : "#888888"
|
||||
|
||||
signal pressed()
|
||||
signal released()
|
||||
signal clicked()
|
||||
|
||||
Row {
|
||||
x : 4
|
||||
y : 4
|
||||
|
||||
spacing : 8
|
||||
|
||||
Rectangle {
|
||||
id : sp_button_bg
|
||||
|
||||
width : 40
|
||||
height : 40
|
||||
|
||||
radius : 20
|
||||
|
||||
color : iconColor
|
||||
|
||||
Image {
|
||||
id : sp_button_icon
|
||||
|
||||
width : 40
|
||||
height : 40
|
||||
|
||||
source : "./blank.svg"
|
||||
|
||||
fillMode : Image.Pad
|
||||
horizontalAlignment : Image.AlignHCenter
|
||||
verticalAlignment : Image.AlignVCenter
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
id : sp_button_label
|
||||
|
||||
height : 40
|
||||
|
||||
text : ""
|
||||
color : labelColor
|
||||
|
||||
font.pixelSize : 24
|
||||
font.weight : Font.DemiBold
|
||||
|
||||
fontSizeMode : Text.VerticalFit
|
||||
horizontalAlignment : Text.AlignRight
|
||||
verticalAlignment : Text.AlignVCenter
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// States and associated visual attributes
|
||||
//
|
||||
states: [
|
||||
State {
|
||||
name : "disabled"
|
||||
when : (sp_button.enabled === false)
|
||||
|
||||
PropertyChanges {
|
||||
target : sp_button_bg
|
||||
color : disableColor
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target : sp_button_label
|
||||
color : disableColor
|
||||
}
|
||||
|
||||
},
|
||||
State {
|
||||
name : "hover"
|
||||
|
||||
PropertyChanges {
|
||||
target : sp_button_label
|
||||
color : hoverLabelColor
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target : sp_button_bg
|
||||
color : hoverIconColor
|
||||
}
|
||||
},
|
||||
State {
|
||||
name : "pressed"
|
||||
|
||||
PropertyChanges {
|
||||
target : sp_button_label
|
||||
color : hoverLabelColor
|
||||
}
|
||||
|
||||
PropertyChanges {
|
||||
target : sp_button_bg
|
||||
color : pressIconColor
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
//
|
||||
// Behavior on state transitions
|
||||
//
|
||||
transitions: [
|
||||
Transition {
|
||||
from : ""
|
||||
to : "hover"
|
||||
|
||||
ColorAnimation {
|
||||
duration: 250
|
||||
}
|
||||
},
|
||||
Transition {
|
||||
from : ""
|
||||
to : "pressed"
|
||||
|
||||
ColorAnimation {
|
||||
duration: 25
|
||||
}
|
||||
},
|
||||
Transition {
|
||||
from : "disabled"
|
||||
to : "enabled"
|
||||
|
||||
ColorAnimation {
|
||||
duration: 50
|
||||
}
|
||||
},
|
||||
Transition {
|
||||
from : "enabled"
|
||||
to : "disabled"
|
||||
|
||||
ColorAnimation {
|
||||
duration: 50
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
//
|
||||
// Area to react to mouse actions
|
||||
//
|
||||
MouseArea {
|
||||
anchors.fill : sp_button
|
||||
|
||||
hoverEnabled : true
|
||||
cursorShape : Qt.PointingHandCursor
|
||||
acceptedButtons : Qt.LeftButton
|
||||
|
||||
onEntered : {
|
||||
sp_button.state = "hover"
|
||||
}
|
||||
|
||||
onExited : {
|
||||
sp_button.state = ""
|
||||
}
|
||||
|
||||
onPressed : {
|
||||
sp_button.state = "pressed"
|
||||
}
|
||||
|
||||
onClicked : {
|
||||
sp_button.clicked()
|
||||
}
|
||||
|
||||
onReleased : {
|
||||
if (containsMouse) {
|
||||
sp_button.state = "hover"
|
||||
} else {
|
||||
sp_button.state = ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
49
files/sddm-i3-theme/components/SpClock.qml
Normal file
49
files/sddm-i3-theme/components/SpClock.qml
Normal file
|
@ -0,0 +1,49 @@
|
|||
//
|
||||
// [maya] components/SpClock.qml
|
||||
//
|
||||
// Implements custom clock component
|
||||
//
|
||||
// (c) 2016 Sanjeev Premi (spremi@ymail.com)
|
||||
//
|
||||
// SPDX-License-Identifier: MIT
|
||||
// (https://spdx.org/licenses/MIT.html)
|
||||
//
|
||||
|
||||
|
||||
import QtQuick 2.0
|
||||
|
||||
|
||||
Item {
|
||||
id : sp_clock
|
||||
|
||||
property date value : new Date()
|
||||
|
||||
property color tColor : "white"
|
||||
property alias tFont : sp_clock_text.font
|
||||
|
||||
implicitWidth : sp_clock_text.implicitWidth
|
||||
implicitHeight : sp_clock_text.implicitHeight
|
||||
|
||||
|
||||
Timer {
|
||||
interval : 100
|
||||
running : true
|
||||
repeat : true;
|
||||
onTriggered : sp_clock.value = new Date()
|
||||
}
|
||||
|
||||
Text {
|
||||
id : sp_clock_text
|
||||
|
||||
text : Qt.formatDateTime(sp_clock.value, "dddd, dd MMMM yyyy HH:mm AP")
|
||||
|
||||
color : sp_clock.tColor
|
||||
|
||||
font.pixelSize : 24
|
||||
|
||||
fontSizeMode : Text.VerticalFit
|
||||
|
||||
horizontalAlignment : Text.AlignHCenter
|
||||
verticalAlignment : Text.AlignVCenter
|
||||
}
|
||||
}
|
87
files/sddm-i3-theme/components/TextBoxCustom.qml
Normal file
87
files/sddm-i3-theme/components/TextBoxCustom.qml
Normal file
|
@ -0,0 +1,87 @@
|
|||
/***************************************************************************
|
||||
* Copyright (c) 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person
|
||||
* obtaining a copy of this software and associated documentation
|
||||
* files (the "Software"), to deal in the Software without restriction,
|
||||
* including without limitation the rights to use, copy, modify, merge,
|
||||
* publish, distribute, sublicense, and/or sell copies of the Software,
|
||||
* and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
||||
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||
* OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
***************************************************************************/
|
||||
|
||||
import QtQuick 2.0
|
||||
|
||||
FocusScope {
|
||||
id: container
|
||||
width: 80; height: 30
|
||||
|
||||
property color cNormalBorder : "#222222"
|
||||
property color cNormalBackground : "#333333"
|
||||
property color cFocusBorder : "#4c7899"
|
||||
property color cFocusBackground : "#285577"
|
||||
|
||||
property alias font: txtMain.font
|
||||
property alias cText: txtMain.color
|
||||
property alias echoMode: txtMain.echoMode
|
||||
property alias text: txtMain.text
|
||||
property alias readOnly: txtMain.readOnly
|
||||
|
||||
Rectangle {
|
||||
id: main
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
color: container.cNormalBackground
|
||||
border.color: container.cNormalBorder
|
||||
border.width: 1
|
||||
|
||||
states: [
|
||||
State {
|
||||
name: "focus"
|
||||
when: container.activeFocus
|
||||
PropertyChanges {
|
||||
target: main
|
||||
color: container.cFocusBackground
|
||||
border.color: container.cFocusBorder
|
||||
border.width: 1;
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: mouseArea
|
||||
anchors.fill: container
|
||||
|
||||
cursorShape: Qt.IBeamCursor
|
||||
|
||||
onClicked: container.focus = true;
|
||||
}
|
||||
|
||||
TextInput {
|
||||
id: txtMain
|
||||
width: parent.width - 16
|
||||
anchors.centerIn: parent
|
||||
|
||||
color: "black"
|
||||
|
||||
clip: true
|
||||
focus: true
|
||||
|
||||
passwordCharacter: "*"
|
||||
}
|
||||
}
|
||||
|
BIN
files/sddm-i3-theme/fonts/OpenSans_CondLight.ttf
Normal file
BIN
files/sddm-i3-theme/fonts/OpenSans_CondLight.ttf
Normal file
Binary file not shown.
|
@ -0,0 +1,4 @@
|
|||
<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M7 10l5 5 5-5z"/>
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
</svg>
|
After Width: | Height: | Size: 178 B |
|
@ -0,0 +1,4 @@
|
|||
<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M13 3h-2v10h2V3zm4.83 2.17l-1.42 1.42C17.99 7.86 19 9.81 19 12c0 3.87-3.13 7-7 7s-7-3.13-7-7c0-2.19 1.01-4.14 2.58-5.42L6.17 5.17C4.23 6.82 3 9.26 3 12c0 4.97 4.03 9 9 9s9-4.03 9-9c0-2.74-1.23-5.18-3.17-6.83z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 372 B |
4
files/sddm-i3-theme/images/ic_refresh_white_24px.svg
Normal file
4
files/sddm-i3-theme/images/ic_refresh_white_24px.svg
Normal file
|
@ -0,0 +1,4 @@
|
|||
<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z"/>
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
</svg>
|
After Width: | Height: | Size: 366 B |
4
files/sddm-i3-theme/images/ic_warning_white_24px.svg
Normal file
4
files/sddm-i3-theme/images/ic_warning_white_24px.svg
Normal file
|
@ -0,0 +1,4 @@
|
|||
<svg fill="#FFFFFF" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M0 0h24v24H0z" fill="none"/>
|
||||
<path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"/>
|
||||
</svg>
|
After Width: | Height: | Size: 214 B |
13
files/sddm-i3-theme/metadata.desktop
Normal file
13
files/sddm-i3-theme/metadata.desktop
Normal file
|
@ -0,0 +1,13 @@
|
|||
[SddmGreeterTheme]
|
||||
Name=sddm-i3
|
||||
Description=Simple i3 inspired theme
|
||||
Author=krizej
|
||||
Copyright=(c) 2024, krizej
|
||||
License=MIT
|
||||
Type=sddm-theme
|
||||
Version=1
|
||||
Website=https://github.com/krizej
|
||||
MainScript=Main.qml
|
||||
ConfigFile=theme.conf
|
||||
Theme-Id=sddm-i3
|
||||
Theme-API=2.0
|
BIN
files/sddm-i3-theme/screenshots/hi_IN.png
Normal file
BIN
files/sddm-i3-theme/screenshots/hi_IN.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
24
files/sddm-i3-theme/theme.conf
Normal file
24
files/sddm-i3-theme/theme.conf
Normal file
|
@ -0,0 +1,24 @@
|
|||
[General]
|
||||
primaryShade=
|
||||
primaryLight=
|
||||
primaryDark=
|
||||
|
||||
primaryHue1=
|
||||
primaryHue2=
|
||||
primaryHue3=
|
||||
|
||||
accentShade=
|
||||
accentLight=
|
||||
|
||||
accentHue1=
|
||||
accentHue2=
|
||||
accentHue3=
|
||||
|
||||
normalText=
|
||||
|
||||
successText=
|
||||
failureText=
|
||||
warningText=
|
||||
|
||||
rebootColor=
|
||||
powerColor=
|
20
files/sddm-i3-theme/theme.nix
Normal file
20
files/sddm-i3-theme/theme.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ lib, stdenv, fetchzip }:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sddm-i3-theme";
|
||||
version = "1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "http://192.168.1.12/${pname}.tar.gz";
|
||||
hash = "sha256-587c+T7SflqYshPxRRcVD4xmY2pc4UBw+bYJQm04ZjU=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/sddm/themes/${pname}/
|
||||
cp -r $src/* $out/share/sddm/themes/${pname}/
|
||||
'';
|
||||
|
||||
meta = {
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
|
@ -7,11 +7,7 @@ stdenv.mkDerivation rec {
|
|||
pname = "sddm-i3-theme";
|
||||
version = "1";
|
||||
|
||||
src = fetchzip {
|
||||
# lol
|
||||
url = "http://192.168.1.12/${pname}.tar.gz";
|
||||
hash = "sha256-WGvjW3Z8TfJhAsbxUyYRKSYFucEwYzTIbpDZsLTPbyo=";
|
||||
};
|
||||
src = ../files/sddm-i3-theme;
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/share/sddm/themes/${pname}/
|
||||
|
|
Loading…
Reference in a new issue