Everything in Bar

This commit is contained in:
quadbyte 2025-08-10 13:49:27 -04:00
parent 8b31da594c
commit aaf2aba0f8
5 changed files with 108 additions and 103 deletions

View file

@ -6,7 +6,7 @@ import qs.Services
Variants {
model: Quickshell.screens
PanelWindow {
delegate: PanelWindow {
required property ShellScreen modelData
property string wallpaperSource: Qt.resolvedUrl(
"../../Assets/Tests/wallpaper.png")

View file

@ -7,7 +7,7 @@ import qs.Services
Variants {
model: Quickshell.screens
PanelWindow {
delegate: PanelWindow {
required property ShellScreen modelData
property string wallpaperSource: Qt.resolvedUrl(
"../../Assets/Tests/wallpaper.png")

View file

@ -1,104 +1,119 @@
import QtQuick
import Quickshell
import QtQuick.Controls
import QtQuick.Layouts
import qs.Widgets
import Quickshell
import qs.Services
import qs.Widgets
PanelWindow {
id: root
Variants {
model: Quickshell.screens
readonly property real scaling: Scaling.scale(screen)
property var modelData
delegate: PanelWindow {
id: root
screen: modelData
implicitHeight: Style.barHeight * scaling
color: "transparent"
visible: Settings.data.bar.monitors.includes(modelData.name)
|| (Settings.data.bar.monitors.length === 0)
required property ShellScreen modelData
readonly property real scaling: Scaling.scale(screen)
anchors {
top: true
left: true
right: true
}
screen: modelData
implicitHeight: Style.barHeight * scaling
color: "transparent"
visible: Settings.data.bar.monitors.includes(modelData.name) || (Settings.data.bar.monitors.length === 0)
Item {
anchors.fill: parent
clip: true
// Background fill
Rectangle {
id: bar
anchors.fill: parent
color: Colors.backgroundPrimary
layer.enabled: true
}
Row {
id: leftSection
height: parent.height
anchors.left: parent.left
anchors.leftMargin: Style.marginSmall * scaling
anchors.verticalCenter: parent.verticalCenter
spacing: Style.marginSmall * scaling
NText {
text: screen.name
anchors.verticalCenter: parent.verticalCenter
}
}
Row {
id: centerSection
height: parent.height
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
spacing: Style.marginSmall * scaling
Workspace {}
}
Row {
id: rightSection
height: parent.height
anchors.right: bar.right
anchors.rightMargin: Style.marginSmall * scaling
anchors.verticalCenter: bar.verticalCenter
spacing: Style.marginSmall * scaling
Clock {
anchors.verticalCenter: parent.verticalCenter
}
NIconButton {
id: demoPanelToggle
icon: "experiment"
anchors.verticalCenter: parent.verticalCenter
onClicked: function () {
demoPanel.isLoaded = !demoPanel.isLoaded
anchors {
top: true
left: true
right: true
}
}
NIconButton {
id: sidePanelToggle
icon: "widgets"
anchors.verticalCenter: parent.verticalCenter
onClicked: function () {
// Map this button's center to the screen and open the side panel below it
const localCenterX = width / 2
const localCenterY = height / 2
const globalPoint = mapToItem(null, localCenterX, localCenterY)
if (sidePanel.isLoaded) {
sidePanel.isLoaded = false
} else if (sidePanel.openAt) {
sidePanel.openAt(globalPoint.x, screen)
} else {
// Fallback: toggle if API unavailable
sidePanel.isLoaded = true
}
Item {
anchors.fill: parent
clip: true
// Background fill
Rectangle {
id: bar
anchors.fill: parent
color: Colors.backgroundPrimary
layer.enabled: true
}
Row {
id: leftSection
height: parent.height
anchors.left: parent.left
anchors.leftMargin: Style.marginSmall * scaling
anchors.verticalCenter: parent.verticalCenter
spacing: Style.marginSmall * scaling
NText {
text: screen.name
anchors.verticalCenter: parent.verticalCenter
}
}
Row {
id: centerSection
height: parent.height
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter
spacing: Style.marginSmall * scaling
Workspace {
}
}
Row {
id: rightSection
height: parent.height
anchors.right: bar.right
anchors.rightMargin: Style.marginSmall * scaling
anchors.verticalCenter: bar.verticalCenter
spacing: Style.marginSmall * scaling
Clock {
anchors.verticalCenter: parent.verticalCenter
}
NIconButton {
id: demoPanelToggle
icon: "experiment"
anchors.verticalCenter: parent.verticalCenter
onClicked: function() {
demoPanel.isLoaded = !demoPanel.isLoaded;
}
}
NIconButton {
id: sidePanelToggle
icon: "widgets"
anchors.verticalCenter: parent.verticalCenter
onClicked: function() {
// Map this button's center to the screen and open the side panel below it
const localCenterX = width / 2;
const localCenterY = height / 2;
const globalPoint = mapToItem(null, localCenterX, localCenterY);
if (sidePanel.isLoaded)
sidePanel.isLoaded = false;
else if (sidePanel.openAt)
sidePanel.openAt(globalPoint.x, screen);
else
// Fallback: toggle if API unavailable
sidePanel.isLoaded = true;
}
}
}
}
}
}
}
}

View file

@ -1,10 +0,0 @@
import Quickshell
import qs.Modules.Bar
Variants {
model: Quickshell.screens
delegate: Bar {
modelData: item
}
}

View file

@ -17,7 +17,7 @@ ShellRoot {
Background {}
Overview {}
ScreenCorners {}
Bars {}
Bar {}
DemoPanel {
id: demoPanel