init: working version
This commit is contained in:
commit
7d8d7dacae
109 changed files with 15066 additions and 0 deletions
161
modules/bar/popouts/NixOS.qml
Normal file
161
modules/bar/popouts/NixOS.qml
Normal file
|
|
@ -0,0 +1,161 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import qs.config
|
||||
import qs.custom
|
||||
import qs.services
|
||||
import qs.util
|
||||
import Quickshell
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
ColumnLayout {
|
||||
id: root
|
||||
|
||||
spacing: 7
|
||||
width: 340
|
||||
|
||||
function nixosVersionShort(version: string): string {
|
||||
const parts = version.split('.');
|
||||
return `${parts[0]}.${parts[1]}`;
|
||||
}
|
||||
|
||||
Row {
|
||||
spacing: 12
|
||||
|
||||
Image {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
readonly property real size: 72
|
||||
|
||||
source: "root:/assets/nixos-logo.svg"
|
||||
width: size
|
||||
height: size
|
||||
sourceSize.width: size
|
||||
sourceSize.height: size
|
||||
}
|
||||
|
||||
CustomText {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
text: "NixOS"
|
||||
color: Config.colors.secondary
|
||||
font.pointSize: Config.font.size.largest * 1.3
|
||||
}
|
||||
|
||||
Column {
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.verticalCenterOffset: -2
|
||||
|
||||
CustomText {
|
||||
text: "v" + root.nixosVersionShort(NixOS.currentGen?.nixosVersion)
|
||||
font.pointSize: Config.font.size.larger
|
||||
}
|
||||
|
||||
CustomText {
|
||||
text: "Nix " + NixOS.nixVersion
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CustomRect {
|
||||
Layout.topMargin: 5
|
||||
Layout.fillWidth: true
|
||||
height: 180
|
||||
|
||||
radius: 17
|
||||
color: Config.colors.container
|
||||
|
||||
CustomText {
|
||||
id: genText
|
||||
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
anchors.top: parent.top
|
||||
anchors.topMargin: 7
|
||||
|
||||
text: "Generations"
|
||||
color: Config.colors.secondary
|
||||
font.pointSize: Config.font.size.normal
|
||||
font.weight: 500
|
||||
}
|
||||
|
||||
CustomListView {
|
||||
id: list
|
||||
|
||||
anchors.top: genText.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.margins: 6
|
||||
anchors.topMargin: 8
|
||||
|
||||
spacing: 6
|
||||
clip: true
|
||||
|
||||
model: ScriptModel {
|
||||
values: [...NixOS.generations]
|
||||
objectProp: "id"
|
||||
}
|
||||
|
||||
CustomScrollBar.vertical: CustomScrollBar {
|
||||
flickable: list
|
||||
}
|
||||
|
||||
|
||||
delegate: CustomRect {
|
||||
required property NixOS.Generation modelData
|
||||
|
||||
width: list.width
|
||||
height: 42
|
||||
|
||||
radius: 12
|
||||
color: modelData.current ?
|
||||
Qt.tint(Config.colors.container, Qt.alpha(Config.colors.nixos, 0.2)) :
|
||||
Config.colors.containerAlt
|
||||
|
||||
Item {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 7
|
||||
anchors.topMargin: 2
|
||||
anchors.bottomMargin: 1
|
||||
|
||||
CustomText {
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
anchors.topMargin: 2
|
||||
|
||||
text: `Generation ${modelData.id}`
|
||||
color: modelData.current ? Config.colors.nixos : Config.colors.secondary
|
||||
}
|
||||
|
||||
CustomText {
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.rightMargin: 6
|
||||
|
||||
text: modelData.revision !== "Unknown" ? modelData.revision : ""
|
||||
elide: Text.ElideRight
|
||||
font.family: Config.font.family.mono
|
||||
color: modelData.current ? Config.colors.secondary : Config.colors.primary
|
||||
}
|
||||
|
||||
CustomText {
|
||||
anchors.top: parent.top
|
||||
anchors.right: parent.right
|
||||
|
||||
text: `NixOS ${root.nixosVersionShort(modelData.nixosVersion)} 🞄 Linux ${modelData.kernelVersion}`
|
||||
color: modelData.current ? Config.colors.secondary : Config.colors.primary
|
||||
}
|
||||
|
||||
CustomText {
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.right: parent.right
|
||||
|
||||
text: Qt.formatDateTime(modelData.date, "yyyy-MM-dd ddd hh:mm")
|
||||
font.family: Config.font.family.mono
|
||||
color: modelData.current ? Config.colors.secondary : Config.colors.primary
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue