Files
dotfiles/.config/quickshell/nucleus-shell/modules/interface/sidebarRight/SidebarRight.qml

98 lines
2.4 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 Quickshell.Services.Pipewire
import Qt5Compat.GraphicalEffects
PanelWindow {
id: sidebarRight
WlrLayershell.namespace: "nucleus:sidebarRight"
WlrLayershell.layer: WlrLayer.Top
visible: Config.initialized && Globals.visiblility.sidebarRight && !Globals.visiblility.sidebarLeft
color: "transparent"
exclusiveZone: 0
WlrLayershell.keyboardFocus: Compositor.require("hyprland") && Globals.visiblility.sidebarRight
property real sidebarRightWidth: 500
implicitWidth: Compositor.screenW
HyprlandFocusGrab {
id: grab
active: Compositor.require("hyprland")
windows: [sidebarRight]
}
anchors {
top: true
right: (Config.runtime.bar.position === "top" || Config.runtime.bar.position === "bottom" || Config.runtime.bar.position === "right")
bottom: true
left: (Config.runtime.bar.position === "left")
}
margins {
top: Config.runtime.bar.margins
bottom: Config.runtime.bar.margins
left: Metrics.margin("small")
right: Metrics.margin("small")
}
PwObjectTracker {
objects: [Pipewire.defaultAudioSink]
}
property var sink: Pipewire.defaultAudioSink?.audio
MouseArea {
anchors.fill: parent
z: 0
onPressed: Globals.visiblility.sidebarRight = false
}
StyledRect {
id: container
z: 1
color: Appearance.m3colors.m3background
radius: Metrics.radius("large")
width: sidebarRight.sidebarRightWidth
anchors {
top: parent.top
bottom: parent.bottom
right: parent.right
}
FocusScope {
focus: true
anchors.fill: parent
Keys.onPressed: {
if (event.key === Qt.Key_Escape) {
Globals.visiblility.sidebarRight = false;
}
}
SidebarRightContent {}
}
}
function togglesidebarRight() {
Globals.visiblility.sidebarRight = !Globals.visiblility.sidebarRight;
}
IpcHandler {
target: "sidebarRight"
function toggle() {
togglesidebarRight();
}
}
}