forked from Shinonome/dots-hyprland
session menu: only show on focused monitor
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user