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.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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user