initial quickshell config
This commit is contained in:
parent
288c35032e
commit
b72bbb4120
2 changed files with 167 additions and 0 deletions
|
|
@ -20,6 +20,14 @@
|
|||
settings = builtins.fromJSON (builtins.readFile ./swaylock.json);
|
||||
};
|
||||
|
||||
programs.quickshell = {
|
||||
enable = true;
|
||||
configs = {
|
||||
"default" = ./shell.qml;
|
||||
};
|
||||
activeConfig = "default";
|
||||
};
|
||||
|
||||
services.mako = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
|
|
|||
159
modules/home/niri/shell.qml
Normal file
159
modules/home/niri/shell.qml
Normal file
|
|
@ -0,0 +1,159 @@
|
|||
import Quickshell
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Quickshell.Widgets
|
||||
import Quickshell.Services.SystemTray
|
||||
import Quickshell.Services.Pipewire
|
||||
import Quickshell.Io
|
||||
|
||||
PanelWindow {
|
||||
component Pill: Rectangle {
|
||||
default property alias data: inner.data
|
||||
color: Qt.rgba(0.6,0.6,0.6,0.4)
|
||||
radius: height / 2.0 - 2.0
|
||||
implicitWidth: inner.implicitWidth + 8.0 * 2
|
||||
implicitHeight: inner.implicitHeight + 3.0 * 2
|
||||
Item {
|
||||
id: inner
|
||||
anchors.centerIn: parent
|
||||
implicitWidth: inner.childrenRect.width
|
||||
implicitHeight: inner.childrenRect.height
|
||||
}
|
||||
}
|
||||
|
||||
component Tray: WrapperItem {
|
||||
implicitWidth: inner.implicitWidth
|
||||
implicitHeight: inner.implicitHeight
|
||||
RowLayout {
|
||||
id: inner
|
||||
Repeater {
|
||||
model: SystemTray.items.values
|
||||
IconImage {
|
||||
id: tray_item
|
||||
required property SystemTrayItem modelData
|
||||
source: modelData.icon
|
||||
visible: !modelData.icon.includes("?path=")
|
||||
implicitSize: 22.5
|
||||
|
||||
PopupWindow {
|
||||
id: label
|
||||
visible: hover_handler.hovered && hover_text.width
|
||||
implicitWidth: hover_text.width
|
||||
implicitHeight: hover_text.height + 2.0
|
||||
anchor.item: tray_item
|
||||
anchor.rect.y: tray_item.height + 2.0
|
||||
anchor.rect.x: (tray_item.width - this.width) / 2.0
|
||||
color: "black"
|
||||
Text {
|
||||
id: hover_text
|
||||
text: tray_item.modelData.tooltipTitle || tray_item.modelData.title
|
||||
color: "white"
|
||||
}
|
||||
}
|
||||
|
||||
HoverHandler {
|
||||
id: hover_handler
|
||||
}
|
||||
|
||||
TapHandler {
|
||||
onTapped: (eventPoint, button) => {
|
||||
if (button == 1) {
|
||||
tray_item.modelData.activate();
|
||||
} else {
|
||||
tray_item.modelData.display(label, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
anchors {
|
||||
top: true
|
||||
left: true
|
||||
right: true
|
||||
}
|
||||
|
||||
implicitHeight: 35
|
||||
|
||||
color: "transparent"
|
||||
|
||||
Rectangle {
|
||||
color: Qt.rgba(0.3,0.3,0.3,0.5)
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: 11
|
||||
anchors.rightMargin: 11
|
||||
radius: 11
|
||||
}
|
||||
|
||||
SystemClock {
|
||||
id: clock
|
||||
precision: SystemClock.Seconds
|
||||
}
|
||||
|
||||
Pill {
|
||||
Text {
|
||||
text: Qt.formatDateTime(clock.date, "hh:mm dd-MM")
|
||||
color: "white"
|
||||
}
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
|
||||
Pill {
|
||||
anchors.horizontalCenter: parent.left
|
||||
anchors.horizontalCenterOffset: (width / 2.0) + 30.0
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
Text {
|
||||
text: "left"
|
||||
color: "white"
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
anchors.horizontalCenter: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.horizontalCenterOffset: -((width / 2.0) + 30.0)
|
||||
RowLayout {
|
||||
id: right_row
|
||||
anchors.centerIn: parent
|
||||
anchors.horizontalCenterOffset: -(width / 2.0)
|
||||
|
||||
PwObjectTracker {objects: [Pipewire.defaultAudioSink]}
|
||||
|
||||
FileView {
|
||||
id: batteryFile
|
||||
path: "/sys/class/power_supply/BAT1/capacity"
|
||||
watchChanges: true
|
||||
onFileChanged: this.reload()
|
||||
blockLoading: true
|
||||
}
|
||||
|
||||
Pill {
|
||||
Text {
|
||||
color: "white"
|
||||
text: `bat: ${batteryFile.text().slice(0,2)}%`
|
||||
}
|
||||
}
|
||||
|
||||
Pill {
|
||||
Text {
|
||||
text: `vol: ${Math.round(Pipewire.defaultAudioSink.audio.volume * 100)}%`
|
||||
color: "white"
|
||||
}
|
||||
}
|
||||
|
||||
Pill {
|
||||
Text {
|
||||
color: "white"
|
||||
text: Pipewire.defaultAudioSink.description.slice(0, 15)
|
||||
}
|
||||
}
|
||||
|
||||
Pill {
|
||||
Tray {}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue