Files
dotfiles/.config/quickshell/nucleus-shell/modules/interface/sidebarLeft/SidebarLeft.qml

91 lines
2.2 KiB
QML

import qs.config
import qs.modules.components
import qs.modules.functions
import qs.services
import QtQuick
import Quickshell
import QtQuick.Layouts
import Quickshell.Wayland
import Quickshell.Io
import Quickshell.Hyprland
import QtQuick.Controls
import Qt5Compat.GraphicalEffects
PanelWindow {
id: sidebarLeft
WlrLayershell.namespace: "nucleus:sidebarLeft"
WlrLayershell.layer: WlrLayer.Top
visible: Config.initialized && Globals.visiblility.sidebarLeft && !Globals.visiblility.sidebarRight
color: "transparent"
exclusiveZone: 0
WlrLayershell.keyboardFocus: Compositor.require("hyprland") && Globals.visiblility.sidebarLeft
property real sidebarLeftWidth: 500
implicitWidth: Compositor.screenW
HyprlandFocusGrab {
id: grab
active: Compositor.require("hyprland")
windows: [sidebarLeft]
}
anchors {
top: true
left: (Config.runtime.bar.position === "top" || Config.runtime.bar.position === "bottom" || Config.runtime.bar.position === "left")
bottom: true
right: (Config.runtime.bar.position === "right")
}
margins {
top: Config.runtime.bar.margins
bottom: Config.runtime.bar.margins
left: Metrics.margin("small")
right: Metrics.margin("small")
}
MouseArea {
anchors.fill: parent
z: 0
onPressed: Globals.visiblility.sidebarLeft = false
}
StyledRect {
id: container
z: 1
color: Appearance.m3colors.m3background
radius: Metrics.radius("large")
width: sidebarLeft.sidebarLeftWidth
anchors {
top: parent.top
bottom: parent.bottom
left: parent.left
}
FocusScope {
focus: true
anchors.fill: parent
Keys.onPressed: {
if (event.key === Qt.Key_Escape) {
Globals.visiblility.sidebarLeft = false;
}
}
SidebarLeftContent {}
}
}
function togglesidebarLeft() {
Globals.visiblility.sidebarLeft = !Globals.visiblility.sidebarLeft;
}
IpcHandler {
target: "sidebarLeft"
function toggle() {
togglesidebarLeft();
}
}
}