summaryrefslogtreecommitdiff
path: root/bar
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2025-07-13 16:40:14 +0800
committerlittleblack111 <littleblack11111@gmail.com>2025-07-13 16:40:14 +0800
commit8127908623a6f1737537a7b53d479bf9039a4afd (patch)
tree739df679343db82aeb8c06445a286ebc3f20965a /bar
parentf5462c3274d008c1bb509cfac4eab8492d822cf5 (diff)
margin implicit width not cool
Diffstat (limited to 'bar')
-rw-r--r--bar/Bar.qml6
-rw-r--r--bar/Workspace.qml23
2 files changed, 22 insertions, 7 deletions
diff --git a/bar/Bar.qml b/bar/Bar.qml
index a18ad06..3428b06 100644
--- a/bar/Bar.qml
+++ b/bar/Bar.qml
@@ -11,6 +11,7 @@ Scope {
model: Quickshell.screens
IWindow {
+ id: barWindow
name: "Bar"
anchors {
@@ -43,7 +44,7 @@ Scope {
anchors {
left: parent.left
}
- implicitWidth: workspace.width + mpris.width
+ implicitWidth: workspace.width + leftRow.anchors.leftMargin + mpris.width
implicitHeight: leftRow.height
color: Qt.rgba(Colors.r, Colors.g, Colors.b, Bar.bgTransparency)
radius: Bar.moduleRadius
@@ -58,7 +59,8 @@ Scope {
Workspace {
id: workspace
- Layout.minimumWidth: 400 // FIXME
+ // screen: barWindow.screen // multi monitor
+ // Layout.minimumWidth: 400 // FIXME
}
Mpris {
id: mpris
diff --git a/bar/Workspace.qml b/bar/Workspace.qml
index 6155bb5..27acf03 100644
--- a/bar/Workspace.qml
+++ b/bar/Workspace.qml
@@ -2,12 +2,16 @@ import QtQuick.Layouts
import QtQuick
import Quickshell
import Quickshell.Hyprland
+import Quickshell.Wayland
import qs.config as Config
import qs.components
Item {
id: root
+ // required property ShellScreen screen // multi monitor
+
+ // readonly property HyprlandMonitor monitor: Hyprland.monitorFor(screen) // multi monitor
property list<bool> workspaceOccupied: []
function updateWorkspaceOccupied() {
@@ -23,11 +27,20 @@ Item {
// dont work no more for some reason
function isActive(index: int): bool {
return Hyprland.focusedWorkspace?.id === (index + 1);
+ // return monitor.activeWorkspace.id === (index + 1); // multi monitor
}
function isOccupied(index: int): bool {
return workspaceOccupied[index] === true;
}
+ // TODO: allow specific index after tl can do that
+ // function isEmpty(): bool {
+ // for (let i of ToplevelManager.toplevels.values)
+ // if (i.activated)
+ // return false;
+ // return true;
+ // }
+
Connections {
target: Hyprland.workspaces
function onValuesChanged() {
@@ -37,6 +50,8 @@ Item {
Component.onCompleted: updateWorkspaceOccupied()
+ implicitWidth: layout.implicitWidth
+
RowLayout {
id: layout
implicitWidth: childrenRect.width
@@ -54,18 +69,16 @@ Item {
implicitWidth: !isActive(index) ? Config.Bar.workspaceIconSize : Config.Bar.workspaceActiveIconSize
implicitHeight: Config.Bar.workspaceIconSize - 10
- anchors {
- topMargin: 20
- }
radius: Config.Bar.workspaceRounding
Icons {
anchors.centerIn: parent
text: Config.Icons.ws[index + 1]
font.pixelSize: Config.Bar.workspaceIconSize / 1.9
color: Config.Colors.foreground // TODO make IText w/ ts default color
- // opacity: !isOccupied(index) ? 0 : 1 // less contrast
- opacity: isActive(index) ? Config.Bar.workspaceActiveOpacity : isOccupied(index) ? Config.Bar.workspaceOpacity : Config.Bar.workspaceEmptyOpacity
+ opacity: !isOccupied(index) ? 0 : 1 // less contrast
+ // opacity: isActive(index) ? Config.Bar.workspaceActiveOpacity : isOccupied(index) ? Config.Bar.workspaceOpacity : Config.Bar.workspaceEmptyOpacity
}
+
color: isOccupied(index) ? Config.Colors.alt : Config.Colors.foreground
opacity: isActive(index) ? Config.Bar.workspaceActiveOpacity : isOccupied(index) ? Config.Bar.workspaceOpacity : Config.Bar.workspaceEmptyOpacity
}