unfinished workspace redesign
This commit is contained in:
+1
-1
@@ -35,7 +35,7 @@ PanelWindow {
|
||||
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.left: parent.left
|
||||
anchors.leftMargin: 0
|
||||
anchors.leftMargin: Config.big_spacing_fun(height)
|
||||
spacing: Config.big_spacing_fun(height)
|
||||
|
||||
MenuButton {}
|
||||
|
||||
@@ -16,17 +16,16 @@ MouseArea {
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: menuButton.containsMouse ? Colors.secondaryContainer_fg : Qt.alpha(Colors.secondary, 0.75)
|
||||
color: "transparent"
|
||||
radius: Config.radius_fun(menuButton.height)
|
||||
border.width: 0
|
||||
|
||||
Text {
|
||||
id: menuText
|
||||
anchors.centerIn: parent
|
||||
anchors.centerIn: parent
|
||||
text: ""
|
||||
font.pixelSize: Config.bigIconSize(menuButton.height)
|
||||
font.family: Config.font
|
||||
color: menuButton.containsMouse ? Colors.secondaryContainer : Colors.secondary_fg
|
||||
color: Colors.secondaryContainer_fg
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,76 +4,102 @@ import Quickshell.Hyprland
|
||||
import "../../../config"
|
||||
import "../states/Apps"
|
||||
|
||||
Row {
|
||||
id: workspacesRow
|
||||
|
||||
Rectangle {
|
||||
id: workspacesContainer
|
||||
required property HyprlandMonitor thisMonitor
|
||||
spacing: Config.spacing_fun(bar.height)
|
||||
|
||||
Repeater {
|
||||
model: Hyprland.workspaces
|
||||
Loader {
|
||||
active: modelData.monitor === thisMonitor
|
||||
sourceComponent: Rectangle {
|
||||
id: wsRect
|
||||
property var workspaceData: modelData
|
||||
height: bar.height - (Config.spacing_fun(bar.height) * 1.5)
|
||||
width: workspacesRow.width + (Config.spacing_fun(bar.height) * 2)
|
||||
|
||||
radius: height / 2
|
||||
|
||||
color: Colors.surfaceVariant
|
||||
border.color: Colors.surfaceVariant_fg
|
||||
border.width: Config.border_width
|
||||
|
||||
width: {
|
||||
var cw = wsNum.width
|
||||
if (wsIconsRow.children.length > 0)
|
||||
cw += Config.spacing_fun(bar.height) + wsIconsRow.width
|
||||
Math.max(cw + Config.spacing_fun(bar.height)*2, wsNum.height + Config.spacing_fun(bar.height)*2)
|
||||
}
|
||||
height: wsNum.height + Config.spacing_fun(wsNum.height)
|
||||
radius: Config.radius_fun(height)
|
||||
color: wsArea.containsMouse ? Colors.tertiaryContainer
|
||||
: workspaceData.active ? Colors.primaryContainer
|
||||
: Colors.secondaryContainer
|
||||
border.color: wsArea.containsMouse ? Colors.tertiaryContainer_fg
|
||||
: workspaceData.active ? Colors.primaryContainer_fg
|
||||
: Colors.secondaryContainer_fg
|
||||
border.width: Config.border_width
|
||||
Row {
|
||||
id: workspacesRow
|
||||
anchors.centerIn: parent
|
||||
spacing: Config.spacing_fun(bar.height) / 2
|
||||
|
||||
MouseArea {
|
||||
id: wsArea
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
console.log("[Workspaces] Switch to workspace: " + workspaceData.id)
|
||||
Hyprland.dispatch("workspace " + workspaceData.id)
|
||||
Hyprland.dispatch("hl.dsp.focus({ workspace = "+workspaceData.id+" })")
|
||||
Repeater {
|
||||
model: Hyprland.workspaces
|
||||
Loader {
|
||||
active: modelData.monitor === thisMonitor
|
||||
sourceComponent: Item {
|
||||
id: wsItem
|
||||
property var workspaceData: modelData
|
||||
|
||||
|
||||
width: {
|
||||
var cw = wsNum.width
|
||||
if (wsIconsRow.children.length > 0)
|
||||
cw += Config.spacing_fun(bar.height) + wsIconsRow.width
|
||||
Math.max(cw + Config.spacing_fun(bar.height)*2, wsNum.height + Config.spacing_fun(bar.height)*2)
|
||||
}
|
||||
height: workspacesContainer.height
|
||||
|
||||
// highlight
|
||||
Rectangle {
|
||||
anchors.centerIn: parent
|
||||
width: parent.width
|
||||
height: parent.height - (Config.spacing_fun(bar.height) * 1.5)
|
||||
|
||||
radius: height / 2
|
||||
|
||||
color: wsArea.containsMouse ? Colors.tertiaryContainer
|
||||
: workspaceData.active ? Colors.primaryContainer
|
||||
: "transparent"
|
||||
|
||||
border.color: wsArea.containsMouse ? Colors.tertiaryContainer_fg
|
||||
: workspaceData.active ? Colors.primaryContainer_fg
|
||||
: "transparent"
|
||||
|
||||
border.width: (wsArea.containsMouse || workspaceData.active) ? Config.border_width : 0
|
||||
}
|
||||
|
||||
Row {
|
||||
anchors.centerIn: parent
|
||||
spacing: Config.spacing_fun(parent.height)
|
||||
|
||||
Text {
|
||||
id: wsNum
|
||||
text: workspaceData.id
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
color: wsArea.containsMouse ? Colors.tertiary
|
||||
: workspaceData.active ? Colors.primary
|
||||
: Colors.secondary
|
||||
font.pixelSize: Config.iconSize(bar.height)
|
||||
font.family: Config.font
|
||||
font.bold: true
|
||||
// hyprland workspace api + color
|
||||
MouseArea {
|
||||
id: wsArea
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
console.log("[Workspaces] Switch to workspace: " + workspaceData.id)
|
||||
Hyprland.dispatch("workspace " + workspaceData.id)
|
||||
Hyprland.dispatch("hl.dsp.focus({ workspace = "+workspaceData.id+" })")
|
||||
}
|
||||
|
||||
Row {
|
||||
id: wsIconsRow
|
||||
spacing: Config.spacing_fun(workspacesRow.height)
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.centerIn: parent
|
||||
spacing: Config.spacing_fun(parent.height)
|
||||
|
||||
Repeater {
|
||||
model: AppsState.iconsForWorkspace(workspaceData.id)
|
||||
delegate: Text {
|
||||
text: modelData
|
||||
color: wsArea.containsMouse ? Colors.tertiary
|
||||
: Colors.secondary
|
||||
font.pixelSize: Config.labelSize(bar.height)
|
||||
font.family: Config.font
|
||||
Text {
|
||||
id: wsNum
|
||||
text: workspaceData.id
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
color: wsArea.containsMouse ? Colors.tertiary
|
||||
: workspaceData.active ? Colors.primary
|
||||
: Colors.secondary
|
||||
font.pixelSize: Config.iconSize(bar.height)
|
||||
font.family: Config.font
|
||||
font.bold: true
|
||||
}
|
||||
|
||||
Row {
|
||||
id: wsIconsRow
|
||||
spacing: Config.spacing_fun(workspacesContainer.height)
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
Repeater {
|
||||
model: AppsState.iconsForWorkspace(workspaceData.id)
|
||||
delegate: Text {
|
||||
text: modelData
|
||||
color: wsArea.containsMouse ? Colors.tertiary
|
||||
: Colors.secondary
|
||||
font.pixelSize: Config.labelSize(bar.height)
|
||||
font.family: Config.font
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -88,5 +114,6 @@ Row {
|
||||
text: "No Workspaces"
|
||||
color: Colors.error
|
||||
font.pixelSize: Config.iconSize(bar.height)
|
||||
anchors.centerIn: parent
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user