session menu: only show on focused monitor

This commit is contained in:
end-4
2025-05-18 00:37:08 +02:00
parent 4626ab2bb2
commit 5af7ede329
+11 -33
View File
@@ -4,35 +4,29 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Quickshell
import Quickshell.Hyprland
import Quickshell.Io
import Quickshell.Wayland
import Quickshell.Widgets
import Quickshell.Wayland
import Quickshell.Hyprland
Scope {
id: root
readonly property Toplevel activeWindow: ToplevelManager.activeToplevel
Variants {
id: sessionVariants
model: Quickshell.screens
property var focusedScreen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name)
Loader {
id: sessionLoader
property var modelData
active: false
PanelWindow { // Session menu
id: sessionRoot
visible: sessionLoader.active
property string subtitle
function hide() {
sessionLoader.active = false
}
property string subtitle
screen: modelData
exclusionMode: ExclusionMode.Ignore
WlrLayershell.namespace: "quickshell:session"
WlrLayershell.layer: WlrLayer.Overlay
@@ -45,8 +39,8 @@ Scope {
right: true
}
implicitWidth: modelData.width
implicitHeight: modelData.height
implicitWidth: root.focusedScreen?.width ?? 0
implicitHeight: root.focusedScreen?.height ?? 0
MouseArea {
id: sessionMouseArea
@@ -197,30 +191,20 @@ Scope {
}
}
}
IpcHandler {
target: "session"
function toggle(): void {
for (let i = 0; i < sessionVariants.instances.length; i++) {
let loader = sessionVariants.instances[i];
loader.active = !loader.active;
}
sessionLoader.active = !sessionLoader.active;
}
function close(): void {
for (let i = 0; i < sessionVariants.instances.length; i++) {
let loader = sessionVariants.instances[i];
loader.active = false;
}
sessionLoader.active = false;
}
function open(): void {
for (let i = 0; i < sessionVariants.instances.length; i++) {
let loader = sessionVariants.instances[i];
loader.active = true;
}
sessionLoader.active = true;
}
}
@@ -229,10 +213,7 @@ Scope {
description: "Toggles session screen on press"
onPressed: {
for (let i = 0; i < sessionVariants.instances.length; i++) {
let loader = sessionVariants.instances[i];
loader.active = !loader.active;
}
sessionLoader.active = !sessionLoader.active;
}
}
@@ -241,10 +222,7 @@ Scope {
description: "Opens session screen on press"
onPressed: {
for (let i = 0; i < sessionVariants.instances.length; i++) {
let loader = sessionVariants.instances[i];
loader.active = !loader.active;
}
sessionLoader.active = true;
}
}