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.Controls
import QtQuick.Layouts import QtQuick.Layouts
import Quickshell import Quickshell
import Quickshell.Hyprland
import Quickshell.Io import Quickshell.Io
import Quickshell.Wayland
import Quickshell.Widgets import Quickshell.Widgets
import Quickshell.Wayland
import Quickshell.Hyprland
Scope { Scope {
id: root id: root
readonly property Toplevel activeWindow: ToplevelManager.activeToplevel property var focusedScreen: Quickshell.screens.find(s => s.name === Hyprland.focusedMonitor?.name)
Variants {
id: sessionVariants
model: Quickshell.screens
Loader { Loader {
id: sessionLoader id: sessionLoader
property var modelData
active: false active: false
PanelWindow { // Session menu PanelWindow { // Session menu
id: sessionRoot id: sessionRoot
visible: sessionLoader.active visible: sessionLoader.active
property string subtitle
function hide() { function hide() {
sessionLoader.active = false sessionLoader.active = false
} }
property string subtitle
screen: modelData
exclusionMode: ExclusionMode.Ignore exclusionMode: ExclusionMode.Ignore
WlrLayershell.namespace: "quickshell:session" WlrLayershell.namespace: "quickshell:session"
WlrLayershell.layer: WlrLayer.Overlay WlrLayershell.layer: WlrLayer.Overlay
@@ -45,8 +39,8 @@ Scope {
right: true right: true
} }
implicitWidth: modelData.width implicitWidth: root.focusedScreen?.width ?? 0
implicitHeight: modelData.height implicitHeight: root.focusedScreen?.height ?? 0
MouseArea { MouseArea {
id: sessionMouseArea id: sessionMouseArea
@@ -197,30 +191,20 @@ Scope {
} }
} }
}
IpcHandler { IpcHandler {
target: "session" target: "session"
function toggle(): void { function toggle(): void {
for (let i = 0; i < sessionVariants.instances.length; i++) { sessionLoader.active = !sessionLoader.active;
let loader = sessionVariants.instances[i];
loader.active = !loader.active;
}
} }
function close(): void { function close(): void {
for (let i = 0; i < sessionVariants.instances.length; i++) { sessionLoader.active = false;
let loader = sessionVariants.instances[i];
loader.active = false;
}
} }
function open(): void { function open(): void {
for (let i = 0; i < sessionVariants.instances.length; i++) { sessionLoader.active = true;
let loader = sessionVariants.instances[i];
loader.active = true;
}
} }
} }
@@ -229,10 +213,7 @@ Scope {
description: "Toggles session screen on press" description: "Toggles session screen on press"
onPressed: { onPressed: {
for (let i = 0; i < sessionVariants.instances.length; i++) { sessionLoader.active = !sessionLoader.active;
let loader = sessionVariants.instances[i];
loader.active = !loader.active;
}
} }
} }
@@ -241,10 +222,7 @@ Scope {
description: "Opens session screen on press" description: "Opens session screen on press"
onPressed: { onPressed: {
for (let i = 0; i < sessionVariants.instances.length; i++) { sessionLoader.active = true;
let loader = sessionVariants.instances[i];
loader.active = !loader.active;
}
} }
} }