summaryrefslogtreecommitdiff
path: root/raveos-sddm-theme
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-sddm-theme')
-rw-r--r--raveos-sddm-theme/PKGBUILD18
-rw-r--r--raveos-sddm-theme/raveos-sddm-theme.install4
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml18
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/Input.qml28
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml15
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml2
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml19
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml3
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml3
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml1
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml17
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Main.qml1
-rw-r--r--raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf62
13 files changed, 1 insertions, 190 deletions
diff --git a/raveos-sddm-theme/PKGBUILD b/raveos-sddm-theme/PKGBUILD
index cf0e32b..56004c1 100644
--- a/raveos-sddm-theme/PKGBUILD
+++ b/raveos-sddm-theme/PKGBUILD
@@ -1,18 +1,8 @@
# Maintainer: nippy <nippy@tuta.io>
-#
-# raveos-sddm-theme
-# ------------------
-# Kozos RaveOS SDDM login-kepernyo tema (sddm-rave-theme).
-#
-# Korabban minden DE-tema csomag (cosmic/gnome/hyprland/plasma) sajat
-# maga csomagolta ugyanezt a byte-azonos SDDM temat - ez a kulon csomag
-# valtja ki mind a negyet, hogy csak egyszer kelljen karbantartani es
-# ne legyen fajl-duplikacio/utkozes-veszely a csomagok kozott. A DE-tema
-# csomagok erre a csomagra hivatkoznak depends-kent.
pkgname=raveos-sddm-theme
pkgver=1.0.0
-pkgrel=5
+pkgrel=6
pkgdesc="RaveOS kozos SDDM login tema (sddm-rave-theme)"
arch=('any')
url="https://raveos.local"
@@ -23,7 +13,6 @@ install="${pkgname}.install"
source=()
sha256sums=()
-# Build könyvtárak az src mellé, ne a makepkg alapértelmezettbe
BUILDDIR="${startdir}/build"
PKGDEST="${startdir}/build"
SRCDEST="${startdir}/build"
@@ -31,7 +20,6 @@ SRCPKGDEST="${startdir}/build"
LOGDEST="${startdir}/build"
package() {
- # SDDM téma: rendszerszintű telepítés, SDDM innen olvassa
install -dm755 "${pkgdir}/usr/share/sddm/themes/sddm-rave-theme"
find "${startdir}/sddm-rave-theme" -type f | while read -r f; do
rel="${f#${startdir}/sddm-rave-theme/}"
@@ -40,10 +28,6 @@ package() {
install -Dm644 "$f" "${pkgdir}/usr/share/sddm/themes/sddm-rave-theme/${rel}"
done
- # SDDM konfig forrás: NEM /etc-be telepítjük itt, hanem post_install/
- # post_upgrade hook-ból, mert ha az unowned fájl már létezik, a pacman
- # ütközés-ellenőrzése ELŐBB fut mint a pre_upgrade() hook, és blokkolja
- # a tranzakciót.
install -Dm644 "${startdir}/sddm.conf" \
"${pkgdir}/usr/share/raveos-sddm-theme/sddm.conf"
}
diff --git a/raveos-sddm-theme/raveos-sddm-theme.install b/raveos-sddm-theme/raveos-sddm-theme.install
index 36ebc3e..abc770f 100644
--- a/raveos-sddm-theme/raveos-sddm-theme.install
+++ b/raveos-sddm-theme/raveos-sddm-theme.install
@@ -2,10 +2,6 @@ _sddm_src="/usr/share/raveos-sddm-theme/sddm.conf"
_sddm_dst="/etc/sddm.conf.d/raveos-theme.conf"
pre_install() {
- # Ha a fájl már létezik de pacman nem ownolta, töröljük - de ez csak
- # pre_install esetén segít, pre_upgrade már késő (a pacman ütközés-
- # ellenőrzése ELŐBB fut mint ez a hook). Ezért a konfig fájlt a post_*
- # hook-ok telepítik, nem a package().
rm -f "$_sddm_dst"
}
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml b/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml
index 0caedbe..0d2e36e 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/BatteryIndicator.qml
@@ -7,7 +7,6 @@ Row {
height: root.font.pointSize * 1.6
spacing: root.font.pointSize * 0.5
- // -1 = nincs akkumulátor / nem laptop
property int batteryLevel: -1
property bool isCharging: false
property bool isFull: false
@@ -15,7 +14,6 @@ Row {
visible: batteryLevel >= 0
- // Ismert akksi elérési utak
property var tryPaths: [
"/sys/class/power_supply/BAT0/",
"/sys/class/power_supply/BAT1/",
@@ -24,7 +22,6 @@ Row {
"/sys/class/power_supply/BATT/"
]
- // Dinamikus akkumulátor kereső (pl. kontroller, UPS, egyéb külső akkuk észleléséhez)
FolderListModel {
id: powerSupplyScanner
folder: "file:///sys/class/power_supply"
@@ -45,7 +42,6 @@ Row {
for (var i = 0; i < count; i++) {
var name = get(i, "fileName")
if (name && name !== "." && name !== "..") {
- // Csak a tipikus laptop akkumulátor elnevezések (pl. BAT0, BAT1, BATT, battery)
var isLaptopBat = /^bat/i.test(name) || /^battery/i.test(name)
if (isLaptopBat) {
var fullPath = "/sys/class/power_supply/" + name + "/"
@@ -60,7 +56,6 @@ Row {
}
}
- // ── Fájl olvasó ──────────────────────────────────────────────────────────
function readFile(path, cb) {
var xhr = new XMLHttpRequest()
xhr.open("GET", "file://" + path, true)
@@ -71,7 +66,6 @@ Row {
xhr.send()
}
- // ── Akkumulátor keresés és frissítés ─────────────────────────────────────
function detectBattery(idx) {
if (idx >= tryPaths.length) { batteryLevel = -1; return }
readFile(tryPaths[idx] + "capacity", function(cap) {
@@ -90,7 +84,6 @@ Row {
})
}
- // ── Akkumulátor frissítés ────────────────────────────────────────────────
function refresh() {
if (batteryPath !== "") {
readFile(batteryPath + "capacity", function(cap) {
@@ -118,7 +111,6 @@ Row {
onTriggered: batteryIndicator.refresh()
}
- // ── Szín a töltési szint alapján ─────────────────────────────────────────
function levelColor(lvl, charging) {
if (charging) return "#4ade80" // zöld – tölt
if (lvl > 60) return "#ffffff" // fehér – ok
@@ -127,7 +119,6 @@ Row {
return "#f87171" // piros – kritikus
}
- // ── UI ───────────────────────────────────────────────────────────────────
Canvas {
id: batteryCanvas
width: root.font.pointSize * 3.2
@@ -138,7 +129,6 @@ Row {
var ctx = getContext("2d")
ctx.clearRect(0, 0, width, height)
- // Qt Canvas nem támogatja ctx.roundRect() – saját helper
function rr(c, x, y, w, h, r) {
r = Math.min(Math.max(r, 0), Math.min(w, h) / 2)
c.beginPath()
@@ -165,20 +155,17 @@ Row {
var tx = bw // terminál x
var ty = (height - th) / 2
- // Terminál (+ pólus)
rr(ctx, tx, ty, tw, th, height * 0.15)
ctx.fillStyle = col
ctx.globalAlpha = 0.7
ctx.fill()
ctx.globalAlpha = 1.0
- // Keret (akksi test)
rr(ctx, bx, by, bw, bh, r)
ctx.strokeStyle = col
ctx.lineWidth = height * 0.09
ctx.stroke()
- // Töltési szint kitöltés
var padding = height * 0.18
var fillW = Math.max(0, (bw - padding * 2) * lvl / 100)
if (fillW > 0) {
@@ -191,7 +178,6 @@ Row {
ctx.globalAlpha = 1.0
}
- // Villám jel (töltés közben)
if (charging && !full) {
var cx = bw / 2
var cy = height / 2
@@ -210,7 +196,6 @@ Row {
ctx.globalAlpha = 1.0
}
- // Tele jel (checkbox-szerű pipával)
if (full) {
ctx.beginPath()
ctx.moveTo(bw * 0.32, by + bh / 2)
@@ -227,7 +212,6 @@ Row {
}
}
- // Százalék szöveg
Text {
id: batteryText
anchors.verticalCenter: parent.verticalCenter
@@ -241,7 +225,6 @@ Row {
font.family: root.font.family
font.bold: batteryIndicator.batteryLevel <= 15 && !batteryIndicator.isCharging
- // Pulzáló animáció kritikus töltésnél
SequentialAnimation on opacity {
running: batteryIndicator.batteryLevel <= 15 && !batteryIndicator.isCharging
loops: Animation.Infinite
@@ -250,7 +233,6 @@ Row {
}
}
- // Szint változáskor újrafest
onBatteryLevelChanged: batteryCanvas.requestPaint()
onIsChargingChanged: batteryCanvas.requestPaint()
onIsFullChanged: batteryCanvas.requestPaint()
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml b/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml
index fd29314..61fed97 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/Input.qml
@@ -21,7 +21,6 @@ Column {
Item {
id: errorMessageField
- // change also in selectSession
height: root.font.pointSize * 2
width: parent.width
anchors.horizontalCenter: parent.horizontalCenter
@@ -67,7 +66,6 @@ Column {
}
}
- // Profilkép
Item {
id: avatarField
@@ -114,7 +112,6 @@ Column {
if (!p || p === "") return
var s = p.toString().trim()
if (s === "") return
- // Ignore generic silhouette icon installed in SDDM faces directory
if (s === "/usr/share/sddm/faces/.face.icon" || s === "file:///usr/share/sddm/faces/.face.icon") return
var url = (s.startsWith("file://") || s.startsWith("image://") || s.startsWith("qrc://") || s.startsWith("http")) ? s : ("file://" + s)
if (list.indexOf(url) === -1) {
@@ -122,12 +119,10 @@ Column {
}
}
- // 1. Direct icon reported by SDDM (AccountsService or explicit face config)
if (directIcon !== "") {
addCandidate(directIcon)
}
- // 2. AccountsService system icons (standard across Linux - world-readable 644)
if (uName !== "") {
addCandidate("/var/lib/AccountsService/icons/" + uName)
addCandidate("/var/lib/AccountsService/icons/" + uName + ".png")
@@ -136,7 +131,6 @@ Column {
addCandidate("/var/lib/AccountsService/icons/" + uName + ".svg")
}
- // 3. User's home directory faces
if (home !== "") {
addCandidate(home + "/.face")
addCandidate(home + "/.face.icon")
@@ -156,7 +150,6 @@ Column {
addCandidate("/home/" + uName + "/.avatar")
}
- // 4. System SDDM faces directory
if (uName !== "") {
addCandidate("/usr/share/sddm/faces/" + uName + ".face.icon")
addCandidate("/usr/share/sddm/faces/" + uName + ".png")
@@ -168,7 +161,6 @@ Column {
addCandidate("/var/lib/sddm/faces/" + uName)
}
- // 5. Configured theme avatar
if (config.UserAvatar && config.UserAvatar !== "") {
addCandidate(config.UserAvatar)
}
@@ -217,13 +209,11 @@ Column {
function onDataChanged() { avatarField.updateAvatarSource() }
}
- // Avatar kör
Item {
anchors.centerIn: parent
width: root.font.pointSize * 5.2
height: root.font.pointSize * 5.2
- // Avatar drop shadow
Rectangle {
anchors.fill: parent
anchors.topMargin: root.font.pointSize * 0.15
@@ -238,7 +228,6 @@ Column {
clip: true
color: Qt.rgba(1, 1, 1, 0.15)
- // The mask source
Item {
id: avatarMask
anchors.fill: parent
@@ -282,7 +271,6 @@ Column {
opacity: 0.85
}
- // Draw the border on top of everything!
Rectangle {
anchors.fill: parent
radius: parent.width / 2
@@ -340,7 +328,6 @@ Column {
}
}
- // Container button / click area
Item {
id: userSelectorButton
anchors.centerIn: parent
@@ -358,7 +345,6 @@ Column {
}
KeyNavigation.down: password
- // Background with drop shadow and frosted glass
Item {
anchors.fill: parent
Rectangle {
@@ -379,7 +365,6 @@ Column {
}
}
- // Left Icon (User icon)
Button {
id: userFieldLeftIcon
width: parent.height
@@ -396,7 +381,6 @@ Column {
background: Rectangle { color: "transparent" }
}
- // Username display in the middle (Non-editable, clean text)
Text {
id: username
anchors.centerIn: parent
@@ -414,7 +398,6 @@ Column {
styleColor: Qt.rgba(0, 0, 0, 0.40)
}
- // Dropdown Arrow Button on Right
Item {
id: userDropdownBtn
width: parent.height
@@ -453,7 +436,6 @@ Column {
}
}
- // Whole field click area
MouseArea {
id: userSelectorMouseArea
anchors.fill: parent
@@ -469,7 +451,6 @@ Column {
}
}
- // Dropdown Popup
Popup {
id: userDropdownPopup
@@ -482,7 +463,6 @@ Column {
z: 100
background: Item {
- // Drop shadow underlay
Rectangle {
anchors.fill: parent
anchors.topMargin: root.font.pointSize * 0.15
@@ -490,7 +470,6 @@ Column {
color: Qt.rgba(0, 0, 0, 0.40)
}
- // Frosted Glass body (minimally translucent)
Rectangle {
anchors.fill: parent
radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) : root.font.pointSize * 0.8
@@ -561,7 +540,6 @@ Column {
anchors.rightMargin: root.font.pointSize * 0.8
spacing: root.font.pointSize * 0.8
- // Mini avatar in dropdown row
Item {
width: root.font.pointSize * 2.4
height: root.font.pointSize * 2.4
@@ -620,7 +598,6 @@ Column {
}
}
- // Username & realName
Column {
anchors.verticalCenter: parent.verticalCenter
spacing: 2
@@ -841,7 +818,6 @@ Column {
KeyNavigation.down: rebootBtn
- // Drop shadow
Rectangle {
anchors.fill: parent
anchors.topMargin: root.font.pointSize * 0.12
@@ -915,7 +891,6 @@ Column {
anchors.bottomMargin: root.font.pointSize * 0.3
spacing: root.font.pointSize * 1.8
- // Reboot gomb
Column {
spacing: root.font.pointSize * 0.5
@@ -923,7 +898,6 @@ Column {
width: root.font.pointSize * 4.2
height: root.font.pointSize * 4.2
- // Button shadow
Rectangle {
anchors.fill: parent
anchors.topMargin: root.font.pointSize * 0.12
@@ -979,7 +953,6 @@ Column {
}
}
- // Shutdown gomb
Column {
spacing: root.font.pointSize * 0.5
@@ -987,7 +960,6 @@ Column {
width: root.font.pointSize * 4.2
height: root.font.pointSize * 4.2
- // Button shadow
Rectangle {
anchors.fill: parent
anchors.topMargin: root.font.pointSize * 0.12
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml b/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml
index ffe10fa..0d95c06 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/KeyboardLayoutIndicator.qml
@@ -1,5 +1,3 @@
-// Keyboard Layout Indicator component
-// Displays the current locale/layout and switches between them when clicked (if multiple are available)
import QtQuick 2.15
import QtQml 2.15
@@ -13,13 +11,10 @@ Item {
width: implicitWidth
height: implicitHeight
- // Number of available layouts
property int layoutsCount: (typeof keyboard !== "undefined" && keyboard && keyboard.layouts) ? keyboard.layouts.length : 0
- // Show if we have layout info or a valid locale fallback and not hidden
visible: (config.HideKeyboardLayout !== "false") ? false : (currentShortName !== "")
- // Get current layout shortname (e.g. "US", "HU")
property string currentShortName: ""
function updateCurrentShortName() {
@@ -34,7 +29,6 @@ Item {
}
}
- // Fallback to config locale or system locale
var loc = config.Locale || Qt.locale().name
if (loc) {
var parts = loc.split("_")
@@ -48,7 +42,6 @@ Item {
Component.onCompleted: updateCurrentShortName()
- // Colors matched to the theme config
property color textColor: config.UserIconColor || "#ffffff"
property color hoverColor: config.HoverUserIconColor || "#b7cef1"
@@ -56,9 +49,7 @@ Item {
id: layoutRow
height: root.font.pointSize * 1.1
spacing: root.font.pointSize * 0.4
- // Removed anchors.centerIn to prevent circular binding loop with parent width/height
- // Keyboard icon
Canvas {
id: kbdCanvas
width: root.font.pointSize * 1.5
@@ -79,7 +70,6 @@ Item {
ctx.lineJoin = "round"
ctx.globalAlpha = 0.85
- // Draw keyboard outline
var r = height * 0.15
var bx = ctx.lineWidth / 2
var by = ctx.lineWidth / 2
@@ -95,16 +85,13 @@ Item {
ctx.closePath()
ctx.stroke()
- // Draw simple key grid
ctx.lineWidth = height * 0.06
var kw = bw / 6
var kh = bh / 4
- // Row 1 & 2 keys
for (var i = 0; i < 4; i++) {
ctx.fillRect(bx + kw * (i + 1), by + kh, kw * 0.6, kh * 0.6)
ctx.fillRect(bx + kw * (i + 0.5), by + kh * 2, kw * 0.6, kh * 0.6)
}
- // Spacebar
ctx.fillRect(bx + kw * 1.5, by + kh * 3, kw * 3, kh * 0.6)
ctx.globalAlpha = 1.0
@@ -116,7 +103,6 @@ Item {
}
}
- // Layout Short Name (e.g. US, HU)
Text {
id: layoutText
anchors.verticalCenter: parent.verticalCenter
@@ -176,7 +162,6 @@ Item {
color: delegateMouse.containsMouse ? Qt.rgba(1, 1, 1, 0.15) : "transparent"
radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) / 4 : root.font.pointSize * 0.4
- // Get layout object safely
property var layoutObj: (typeof keyboard !== "undefined" && keyboard && keyboard.layouts) ? keyboard.layouts[index] : null
property string shortName: layoutObj && layoutObj.shortName ? layoutObj.shortName.toUpperCase() : ""
property string longName: layoutObj && layoutObj.longName ? layoutObj.longName : ""
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml b/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml
index 779a21a..65e6e41 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/LoginForm.qml
@@ -29,7 +29,6 @@ ColumnLayout {
Layout.rightMargin: innerPadding
}
- // Akkumulátor + Hálózat jelzők
RowLayout {
id: statusRow
@@ -56,7 +55,6 @@ ColumnLayout {
}
}
- // Billentyűzet kiosztás jelző (letiltva a felhasználói kérésnek megfelelően)
KeyboardLayoutIndicator {
id: keyboardLayoutIndicator
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml b/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml
index 6300841..07bf902 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/NetworkIndicator.qml
@@ -10,7 +10,6 @@ Row {
height: root.font.pointSize * 1.6
spacing: root.font.pointSize * 0.5
- // "none" | "wifi" | "ethernet"
property string netType: "none"
property int wifiQuality: 0 // 0-100
property string activeIface: ""
@@ -28,7 +27,6 @@ Row {
"enp0s3","enp0s31f6","ens33","ens3","ens18"
]
- // ── Fájl olvasó ──────────────────────────────────────────────────────────
function readFile(path, cb) {
var xhr = new XMLHttpRequest()
xhr.open("GET", "file://" + path, true)
@@ -42,16 +40,13 @@ Row {
xhr.send()
}
- // ── WiFi jelerősség /proc/net/wireless-ből ───────────────────────────────
function readWifiSignal(iface) {
readFile("/proc/net/wireless", function(content) {
if (!content) { wifiQuality = 60; netCanvas.requestPaint(); return }
var lines = content.split("\n")
for (var i = 0; i < lines.length; i++) {
if (lines[i].indexOf(iface + ":") !== -1) {
- // formátum: "wlan0: 0000 61. -49. -256 ..."
var parts = lines[i].trim().replace(/\./g,"").split(/\s+/)
- // parts[2] = link quality (0–70 tartomány általában)
var q = parseFloat(parts[2]) || 0
wifiQuality = Math.min(100, Math.round(q / 70 * 100))
break
@@ -61,7 +56,6 @@ Row {
})
}
- // ── Interfész keresők ────────────────────────────────────────────────────
function checkWifi(idx) {
if (idx >= wifiIfaces.length) { checkEth(0); return }
readFile("/sys/class/net/" + wifiIfaces[idx] + "/operstate", function(st) {
@@ -75,7 +69,6 @@ Row {
})
}
- // ── Ethernet keresés ─────────────────────────────────────────────────────
function checkEth(idx) {
if (idx >= ethIfaces.length) { netType = "none"; return }
readFile("/sys/class/net/" + ethIfaces[idx] + "/operstate", function(st) {
@@ -100,21 +93,18 @@ Row {
onTriggered: networkIndicator.refresh()
}
- // ── Szín ─────────────────────────────────────────────────────────────────
function signalColor(q) {
if (q >= 65) return "#4ade80" // zöld – erős
if (q >= 40) return "#facc15" // sárga – közepes
return "#fb923c" // narancs – gyenge
}
- // ── UI ───────────────────────────────────────────────────────────────────
Canvas {
id: netCanvas
width: root.font.pointSize * 2.0
height: root.font.pointSize * 1.6
anchors.verticalCenter: parent.verticalCenter
- // Qt Canvas nem támogatja ctx.roundRect() – saját helper
function rr(c, x, y, w, h, r) {
r = Math.min(Math.max(r, 0), Math.min(w, h) / 2)
c.beginPath()
@@ -136,14 +126,12 @@ Row {
drawEthernet(ctx)
}
- // ── WiFi antenna ikon (4 ívelt sáv) ─────────────────────────────
function drawWifi(ctx) {
var q = networkIndicator.wifiQuality
var cx = width / 2
var base = height * 0.96
var dot = height * 0.08
- // Sávok száma a minőség alapján
var bars = q >= 70 ? 4 : q >= 45 ? 3 : q >= 20 ? 2 : 1
var col = networkIndicator.signalColor(q)
@@ -161,7 +149,6 @@ Row {
ctx.stroke()
}
- // Középső pont (antenna)
ctx.beginPath()
ctx.arc(cx, base, dot, 0, Math.PI * 2)
ctx.fillStyle = col
@@ -170,7 +157,6 @@ Row {
ctx.globalAlpha = 1.0
}
- // ── Ethernet dugó ikon ───────────────────────────────────────────
function drawEthernet(ctx) {
var col = "#4ade80"
var lw = height * 0.09
@@ -184,7 +170,6 @@ Row {
var cx = width / 2
var cy = height / 2
- // Kábel test (felső téglalap)
var bw = width * 0.70
var bh = height * 0.38
var bx = cx - bw / 2
@@ -192,7 +177,6 @@ Row {
rr(ctx, bx, by, bw, bh, height * 0.06)
ctx.stroke()
- // 3 érintkező pin a téglalapban
var pinW = width * 0.08
var pinH = height * 0.22
var pinY = by - pinH + lw
@@ -202,13 +186,11 @@ Row {
ctx.fill()
}
- // Kábel vonala lefelé
ctx.beginPath()
ctx.moveTo(cx, by + bh)
ctx.lineTo(cx, cy + height * 0.38)
ctx.stroke()
- // Dugó alap vonal
ctx.lineWidth = lw * 1.5
ctx.beginPath()
ctx.moveTo(cx - width * 0.22, cy + height * 0.38)
@@ -219,7 +201,6 @@ Row {
}
}
- // Felirat
Text {
id: netLabel
anchors.verticalCenter: parent.verticalCenter
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml b/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml
index 27d5b71..5c25217 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/ParticleOverlay.qml
@@ -40,7 +40,6 @@ Canvas {
var p = particles[i]
var r = p.baseR * (0.75 + 0.25 * Math.sin(p.phase + time * 2.2))
- // Glow halo
var grd = ctx.createRadialGradient(p.x, p.y, 0, p.x, p.y, p.glowR)
grd.addColorStop(0, "hsla(" + p.hue + ",100%,72%," + (p.opacity * 0.55) + ")")
grd.addColorStop(1, "hsla(" + p.hue + ",100%,72%,0)")
@@ -49,7 +48,6 @@ Canvas {
ctx.fillStyle = grd
ctx.fill()
- // Core dot
ctx.beginPath()
ctx.arc(p.x, p.y, r, 0, Math.PI * 2)
ctx.fillStyle = "hsla(" + p.hue + ",100%,88%," + p.opacity + ")"
@@ -84,7 +82,6 @@ Canvas {
}
Component.onCompleted: {
- // kis késleltetés hogy a méret biztosan kész legyen
Qt.callLater(initParticles)
}
}
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml b/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml
index 045e298..a04408f 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/SessionButton.qml
@@ -20,8 +20,6 @@ Item {
ComboBox {
id: selectSession
- // important
- // change also in errorMessage
height: root.font.pointSize * 1.8
anchors.horizontalCenter: parent.horizontalCenter
@@ -37,7 +35,6 @@ Item {
}
delegate: ItemDelegate {
- // minus padding
width: popupHandler.width - root.font.pointSize * 1.5
anchors.horizontalCenter: popupHandler.horizontalCenter
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml b/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml
index 672f346..b3c16be 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/ToastNotification.qml
@@ -45,7 +45,6 @@ Item {
border.color: Qt.rgba(1, 0.35, 0.35, 0.65)
border.width: root.font.pointSize * 0.08
- // Pulse animation border
SequentialAnimation on border.color {
running: toastRoot.showing
loops: Animation.Infinite
diff --git a/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml b/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml
index f87b4d0..30d4013 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Components/UserSwitcher.qml
@@ -9,13 +9,11 @@ import QtQuick.Effects 6.5
Item {
id: userSwitcher
- // Csak akkor látható ha több mint 1 felhasználó van
visible: userModel.count > 1
width: switchBtn.implicitWidth + root.font.pointSize * 2
height: switchBtn.implicitHeight + root.font.pointSize * 0.6
- // Kiválasztott felhasználó indexe (kívülről beállítható)
property int selectedIndex: 0
property string selectedName: {
if (userModel.count < 1) return ""
@@ -25,7 +23,6 @@ Item {
signal userSwitched(int idx, string name)
- // ── Segédfüggvények ───────────────────────────────────────────────────────────────────
function resolveUserIcon(idx) {
var list = []
var count = (typeof userModel !== "undefined" && userModel) ? userModel.count : 0
@@ -64,7 +61,6 @@ Item {
return userModel.data(userModel.index(idx, 0), Qt.UserRole + 1) || ""
}
- // ── Gomb (chip stílus) ────────────────────────────────────────────────────
Rectangle {
id: switchBtn
anchors.centerIn: parent
@@ -90,7 +86,6 @@ Item {
anchors.centerIn: parent
spacing: root.font.pointSize * 0.5
- // Mini avatar kör
Rectangle {
id: miniAvatarCircle
width: root.font.pointSize * 1.6
@@ -159,7 +154,6 @@ Item {
}
}
- // Felhasználónév
Text {
anchors.verticalCenter: parent.verticalCenter
text: userSwitcher.selectedName
@@ -170,14 +164,12 @@ Item {
font.family: root.font.family
}
- // Nyíl ikon
Text {
anchors.verticalCenter: parent.verticalCenter
text: "⌄"
color: Qt.rgba(1, 1, 1, 0.70)
font.pointSize: root.font.pointSize * 0.85
font.family: root.font.family
- // Csak ha több user van, akkor látszik a nyíl
visible: userModel.count > 1
rotation: popup.visible ? 180 : 0
@@ -190,12 +182,10 @@ Item {
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
- // Csak akkor nyit popup-ot ha több felhasználó van
onClicked: if (userModel.count > 1) { popup.visible ? popup.close() : popup.open() }
}
}
- // ── Felhasználó-lista popup ───────────────────────────────────────────────
Popup {
id: popup
@@ -225,7 +215,6 @@ Item {
border.width: root.font.pointSize * 0.08
}
- // Fejléc
Column {
width: parent.width
spacing: root.font.pointSize * 0.4
@@ -239,14 +228,12 @@ Item {
bottomPadding: root.font.pointSize * 0.2
}
- // Elválasztó vonal
Rectangle {
width: parent.width
height: root.font.pointSize * 0.08
color: Qt.rgba(1, 1, 1, 0.12)
}
- // Felhasználók listája
ListView {
id: userList
width: parent.width
@@ -264,7 +251,6 @@ Item {
height: root.font.pointSize * 4
radius: config.RoundCorners !== "" ? parseInt(config.RoundCorners) / 2 : root.font.pointSize * 0.6
- // Kiemelés: aktív felhasználó
property bool isActive: index === userSwitcher.selectedIndex
color: isActive
? Qt.rgba(1, 1, 1, 0.12)
@@ -280,7 +266,6 @@ Item {
anchors.leftMargin: root.font.pointSize * 0.7
spacing: root.font.pointSize * 0.8
- // Avatar kör
Rectangle {
id: delegateAvatarCircle
width: root.font.pointSize * 3
@@ -336,7 +321,6 @@ Item {
}
}
- // Felhasználónév
Text {
anchors.verticalCenter: parent.verticalCenter
text: userSwitcher.getUserName(index)
@@ -347,7 +331,6 @@ Item {
}
}
- // Aktív jelző csík a bal oldalon
Rectangle {
visible: delegateRect.isActive
width: root.font.pointSize * 0.23
diff --git a/raveos-sddm-theme/sddm-rave-theme/Main.qml b/raveos-sddm-theme/sddm-rave-theme/Main.qml
index 10f8325..c938645 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Main.qml
+++ b/raveos-sddm-theme/sddm-rave-theme/Main.qml
@@ -177,7 +177,6 @@ Pane {
id: virtualKeyboard
source: "Components/VirtualKeyboard.qml"
- // x * 0.4 = x / 2.5
width: config.KeyboardSize == "" ? parent.width * 0.4 : parent.width * config.KeyboardSize
anchors.left: config.VirtualKeyboardPosition == "left" ? parent.left : undefined;
anchors.horizontalCenter: config.VirtualKeyboardPosition == "center" ? parent.horizontalCenter : undefined;
diff --git a/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf b/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf
index cd2c870..d98e25e 100644
--- a/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf
+++ b/raveos-sddm-theme/sddm-rave-theme/Themes/rave.conf
@@ -1,75 +1,36 @@
[General]
-#################### General ####################
ScreenWidth=""
ScreenHeight=""
ScreenPadding=""
Logo="Themes/logo.png"
-# Default 0, Options: from 0 to min(screen width/2,screen height/2).
UserAvatar=""
-# Optional path to a specific user avatar image (e.g. "/usr/share/sddm/faces/user.face.icon" or relative to theme)
DefaultAvatar=""
-# Fallback avatar when no user-specific avatar is found.
Font="Open Sans"
FontSize=""
-# Default is screen height divided by 80 (1080/80=13.5), Options: 0-inf.
KeyboardSize="0.4"
-# Default 0.4, Options 0.1-1.0
RoundCorners=""
Locale="hu"
-# Locale for data and time format. I suggest leaving it blank.
HourFormat="HH:mm"
-# Default Locale.ShortFormat.
DateFormat="MMMM d dddd"
-# Default Locale.LongFormat.
HeaderText=""
-# You can put somehting fun.
-#################### Background ####################
BackgroundPlaceholder="Backgrounds/rave_background.png"
-# Must be a relative path.
-# Background displayed before the actual background is loaded.
-# Use only if the background is a video, otherwise leave blank.
-# Connected with: Background.
-# Background="Backgrounds/sddm_bg_animated.mp4"
Background="Backgrounds/rave_background.png"
-# Must be a relative path.
-# Supports: png, jpg, jpeg, webp, gif, avi, mp4, mov, mkv, m4v, webm.
BackgroundSpeed=""
-# Default 1.0. Options: 0.0-10.0 (can go higher).
-# Speed of animated wallpaper.
-# Connected with: Background.
PauseBackground=""
-# Default false.
-# If set to true, stops playback of gifs. Works only with gifs.
-# Connected with: Background.
LoopBackground="false"
-# Default false.
-# If set to true, loops video playback infinitely. When false, freezes on the last frame when video ends.
-# Connected with: Background.
DimBackground="0.0"
-# Options: 0.0-1.0.
-# Connected with: DimBackgroundColor
CropBackground="true"
-# Default false.
-# Crop or fit background.
-# Connected with: BackgroundHorizontalAlignment and BackgroundVerticalAlignment dosn't work when set to true.
BackgroundHorizontalAlignment="center"
-# Default: center, Options: left, center, right.
-# Horizontal position of the background picture.
-# Connected with: CropBackground must be set to false.
BackgroundVerticalAlignment="center"
-# Horizontal position of the background picture.
-# Default: center, Options: bottom, center, top.
-# Connected with: CropBackground must be set to false.
-#################### Colors ####################
HeaderTextColor="#ffffff"
DateTextColor="#ffffff"
@@ -109,32 +70,18 @@ HoverSystemButtonsIconsColor="#b7cef1"
HoverSessionButtonTextColor="#b7cef1"
HoverVirtualKeyboardButtonTextColor="#b7cef1"
-#################### Form ####################
PartialBlur="true"
-# Default false.
FullBlur=""
-# Default false.
-# If you use FullBlur I recommend setting BlurMax to 64 and Blur to 1.0.
BlurMax="48"
-# Default 48, Options: 2-64.
-# Connected with: Blur.
Blur="1.0"
-# Default 1.0, Options: 0.0-1.0.
-# Connected with: BlurMax.
HaveFormBackground="false"
-# Form background is transparent if set to false.
-# Connected with: PartialBlur and BackgroundColor.
FormPosition="right"
-# Default: left, Options: left, center, right.
-#################### Virtual Keyboard ####################
VirtualKeyboardPosition="left"
-# Default: left, Options: left, center, right.
-#################### Interface Behavior ####################
HideKeyboardLayout="true"
HideVirtualKeyboard="false"
@@ -142,23 +89,14 @@ HideSystemButtons="false"
HideLoginButton="false"
ForceLastUser="true"
-# If set to true last successfully logged in user appeares automatically in the username field.
PasswordFocus="true"
-# Automaticaly focuses password field.
HideCompletePassword="true"
-# Hides the password while typing.
AllowEmptyPassword="false"
-# Enable login for users without a password.
AllowUppercaseLettersInUsernames="false"
-# Do not change this! Uppercase letters are generally not allowed in usernames. This option is only for systems that differ from this standard!
BypassSystemButtonsChecks="false"
-# Skips checking if sddm can perform shutdown, restart, suspend or hibernate, always displays all system buttons.
RightToLeftLayout="false"
-# Revert the layout either because you would like the login to be on the right hand side or SDDM won't respect your language locale for some reason. This will reverse the current position of FormPosition if it is either left or right and in addition position some smaller elements on the right hand side of the form itself (also when FormPosition is set to center).
-#################### Translation ####################
-# These don't necessarily need to translate anything. You can enter whatever you want here.
TranslatePlaceholderUsername=""
TranslatePlaceholderPassword=""
TranslateLogin=""