mirror of
https://github.com/kossLAN/dots.git
synced 2025-11-05 06:59:50 -05:00
mpris stuff
This commit is contained in:
parent
233e12e094
commit
f0673a66a2
10 changed files with 192 additions and 104 deletions
139
bar/Bar.qml
139
bar/Bar.qml
|
|
@ -1,11 +1,11 @@
|
|||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import Quickshell
|
||||
import Quickshell.Widgets
|
||||
import "battery"
|
||||
import "control" as Control
|
||||
import "systray" as SysTray
|
||||
import "notifications" as Notifications
|
||||
import "popups" as Popup
|
||||
import "mpris" as Mpris
|
||||
import "../widgets" as Widgets
|
||||
import ".."
|
||||
|
||||
|
|
@ -27,83 +27,94 @@ PanelWindow {
|
|||
bar: root
|
||||
}
|
||||
|
||||
// Left
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
spacing: 0
|
||||
|
||||
anchors {
|
||||
top: parent.top
|
||||
left: parent.left
|
||||
bottom: parent.bottom
|
||||
leftMargin: 4
|
||||
fill: parent
|
||||
leftMargin: 5
|
||||
rightMargin: 5
|
||||
}
|
||||
|
||||
HyprWorkspaces {
|
||||
screen: root.screen
|
||||
Layout.fillWidth: false
|
||||
Layout.preferredHeight: parent.height
|
||||
Layout.leftMargin: 4
|
||||
// Left side of bar
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
anchors.fill: parent
|
||||
|
||||
HyprWorkspaces {
|
||||
screen: root.screen
|
||||
Layout.fillHeight: true
|
||||
Layout.leftMargin: 4
|
||||
}
|
||||
|
||||
Widgets.Separator {
|
||||
visible: activeWindow.visible
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
}
|
||||
|
||||
ActiveWindow {
|
||||
id: activeWindow
|
||||
Layout.preferredWidth: 400
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Widgets.Separator {
|
||||
visible: activeWindow.visible
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
// Center of bar
|
||||
WrapperItem {
|
||||
topMargin: 2
|
||||
bottomMargin: 2
|
||||
Layout.fillHeight: true
|
||||
|
||||
Mpris.Button {
|
||||
bar: root
|
||||
}
|
||||
}
|
||||
|
||||
ActiveWindow {
|
||||
id: activeWindow
|
||||
Layout.preferredWidth: 400
|
||||
}
|
||||
}
|
||||
// Right side of bar
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
|
||||
// Right
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
|
||||
anchors {
|
||||
top: parent.top
|
||||
bottom: parent.bottom
|
||||
right: parent.right
|
||||
rightMargin: 4
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
SysTray.SysTray {
|
||||
id: sysTray
|
||||
popup: root.popup
|
||||
}
|
||||
SysTray.SysTray {
|
||||
id: sysTray
|
||||
popup: root.popup
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
// Notifications.NotificationButton {
|
||||
// implicitSize: 16
|
||||
// bar: root
|
||||
// }
|
||||
BatteryIndicator {
|
||||
id: batteryIndicator
|
||||
popup: root.popup
|
||||
Layout.fillHeight: true
|
||||
}
|
||||
|
||||
// Text {
|
||||
// text: "home"
|
||||
// color: "white"
|
||||
// font.family: "Material Symbols Rounded"
|
||||
// renderType: Text.NativeRendering
|
||||
// textFormat: Text.PlainText
|
||||
// font.pointSize: 14
|
||||
//
|
||||
// font.variableAxes: {
|
||||
// "FILL": 0
|
||||
// }
|
||||
// }
|
||||
Widgets.Separator {
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
}
|
||||
|
||||
BatteryIndicator {
|
||||
id: batteryIndicator
|
||||
popup: root.popup
|
||||
}
|
||||
|
||||
Widgets.Separator {
|
||||
Layout.leftMargin: 5
|
||||
Layout.rightMargin: 5
|
||||
}
|
||||
|
||||
Clock {
|
||||
id: clock
|
||||
color: ShellSettings.colors["inverse_surface"]
|
||||
Clock {
|
||||
id: clock
|
||||
color: ShellSettings.colors["inverse_surface"]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
10
bar/Controller.qml
Normal file
10
bar/Controller.qml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
import Quickshell
|
||||
|
||||
Variants {
|
||||
model: Quickshell.screens
|
||||
|
||||
Bar {
|
||||
required property var modelData
|
||||
screen: modelData
|
||||
}
|
||||
}
|
||||
|
|
@ -8,15 +8,15 @@ RowLayout {
|
|||
spacing: 6
|
||||
visible: Hyprland.monitors.values.length != 0
|
||||
|
||||
required property var screen
|
||||
required property var screen
|
||||
|
||||
Repeater {
|
||||
id: workspaceButtons
|
||||
|
||||
model: ScriptModel {
|
||||
values: Hyprland.workspaces.values.slice().filter(
|
||||
workspace => workspace.monitor === Hyprland.monitorFor(screen)
|
||||
).sort((a,b) => {
|
||||
return a.id - b.id;
|
||||
});
|
||||
)
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
|
|
@ -26,7 +26,7 @@ RowLayout {
|
|||
Layout.alignment: Qt.AlignVCenter
|
||||
Layout.preferredHeight: 12
|
||||
Layout.preferredWidth: {
|
||||
if (Hyprland.focusedMonitor.activeWorkspace.id == modelData.id)
|
||||
if (Hyprland.focusedMonitor?.activeWorkspace?.id === modelData?.id)
|
||||
return 25;
|
||||
|
||||
return 12;
|
||||
|
|
@ -40,7 +40,7 @@ RowLayout {
|
|||
|
||||
if (workspaceButton.containsMouse) {
|
||||
value = ShellSettings.colors["on_primary"];
|
||||
} else if (Hyprland.focusedMonitor.activeWorkspace.id == modelData.id) {
|
||||
} else if (Hyprland.focusedMonitor.activeWorkspace.id === modelData.id) {
|
||||
value = ShellSettings.colors["primary"];
|
||||
}
|
||||
|
||||
|
|
@ -55,6 +55,13 @@ RowLayout {
|
|||
}
|
||||
}
|
||||
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: 100
|
||||
easing.type: Easing.OutQuad
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
id: workspaceButton
|
||||
anchors.fill: parent
|
||||
|
|
|
|||
|
|
@ -10,8 +10,7 @@ import "../.."
|
|||
|
||||
Item {
|
||||
id: root
|
||||
implicitWidth: parent.height + 8
|
||||
implicitHeight: parent.height
|
||||
implicitWidth: height + 8 // for margin
|
||||
visible: UPower.displayDevice.isLaptopBattery
|
||||
|
||||
required property var popup
|
||||
|
|
|
|||
63
bar/mpris/Button.qml
Normal file
63
bar/mpris/Button.qml
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
import Quickshell.Widgets
|
||||
import QtQuick
|
||||
import "../../mpris" as Mpris
|
||||
import "../.."
|
||||
|
||||
WrapperRectangle {
|
||||
id: root
|
||||
color: button.containsMouse ? ShellSettings.colors["primary"] : "transparent"
|
||||
radius: 6
|
||||
leftMargin: 5
|
||||
rightMargin: 5
|
||||
|
||||
required property var bar
|
||||
property var player: Mpris.Controller.trackedPlayer
|
||||
|
||||
Text {
|
||||
id: mediaInfo
|
||||
text: root.player?.trackTitle ?? ""
|
||||
color: button.containsMouse ? ShellSettings.colors["inverse_primary"] : ShellSettings.colors["inverse_surface"]
|
||||
elide: Text.ElideRight
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font.pointSize: 11
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
MouseArea {
|
||||
id: button
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
|
||||
onClicked: {
|
||||
popup.visible = !popup.visible;
|
||||
}
|
||||
}
|
||||
|
||||
WidgetWindow {
|
||||
id: popup
|
||||
visible: false
|
||||
parentWindow: root.bar
|
||||
|
||||
// anchor.window: root.bar
|
||||
}
|
||||
|
||||
// Item {
|
||||
// id: menu
|
||||
// visible: false
|
||||
// implicitWidth: 250
|
||||
// implicitHeight: 80
|
||||
// }
|
||||
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Behavior on color {
|
||||
ColorAnimation {
|
||||
duration: 100
|
||||
}
|
||||
}
|
||||
}
|
||||
9
bar/mpris/WidgetWindow.qml
Normal file
9
bar/mpris/WidgetWindow.qml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
import Quickshell
|
||||
|
||||
PopupWindow {
|
||||
id: root
|
||||
color: "red"
|
||||
implicitWidth: 500
|
||||
implicitHeight: 500
|
||||
|
||||
}
|
||||
|
|
@ -30,7 +30,6 @@ PopupWindow {
|
|||
property var content
|
||||
|
||||
function set(item, content) {
|
||||
// isOpen = false;
|
||||
root.item = item;
|
||||
root.content = content;
|
||||
popupContent.data = content;
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ RowLayout {
|
|||
id: root
|
||||
spacing: 10
|
||||
visible: SystemTray.items.values.length > 0
|
||||
implicitHeight: parent.height
|
||||
|
||||
required property var popup
|
||||
|
||||
|
|
@ -20,8 +19,8 @@ RowLayout {
|
|||
|
||||
delegate: Item {
|
||||
id: trayField
|
||||
implicitHeight: parent.height
|
||||
implicitWidth: trayContainer.width
|
||||
Layout.preferredWidth: parent.height
|
||||
Layout.fillHeight: true
|
||||
required property SystemTrayItem modelData
|
||||
|
||||
MouseArea {
|
||||
|
|
@ -79,14 +78,20 @@ RowLayout {
|
|||
id: trayContainer
|
||||
color: trayButton.containsMouse ? ShellSettings.colors["primary"] : "transparent"
|
||||
radius: width / 2
|
||||
implicitHeight: parent.height - 2
|
||||
implicitWidth: parent.height - 2
|
||||
anchors.centerIn: parent
|
||||
implicitHeight: parent.height
|
||||
implicitWidth: parent.height
|
||||
|
||||
anchors {
|
||||
fill: parent
|
||||
margins: 1
|
||||
}
|
||||
|
||||
IconImage {
|
||||
id: trayIcon
|
||||
|
||||
source: {
|
||||
// console.log(trayField.modelData.id);
|
||||
|
||||
switch (trayField.modelData.id) {
|
||||
case "obs":
|
||||
return "image://icon/obs-tray";
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue