1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2025-12-05 21:15:38 -05:00

hypr: add exclusive focus override

This commit is contained in:
bbedward
2025-12-05 10:37:24 -05:00
parent c69a55df29
commit b5378e5d3c
13 changed files with 29 additions and 17 deletions

View File

@@ -12,7 +12,7 @@ DankModal {
HyprlandFocusGrab {
windows: [root.contentWindow]
active: CompositorService.isHyprland && root.shouldHaveFocus
active: root.useHyprlandFocusGrab && root.shouldHaveFocus
}
property string deviceName: ""

View File

@@ -15,7 +15,7 @@ DankModal {
HyprlandFocusGrab {
windows: [clipboardHistoryModal.contentWindow]
active: CompositorService.isHyprland && clipboardHistoryModal.shouldHaveFocus
active: clipboardHistoryModal.useHyprlandFocusGrab && clipboardHistoryModal.shouldHaveFocus
}
property int totalCount: 0

View File

@@ -47,6 +47,7 @@ Item {
property bool useOverlayLayer: false
readonly property alias contentWindow: contentWindow
readonly property alias backgroundWindow: backgroundWindow
readonly property bool useHyprlandFocusGrab: CompositorService.useHyprlandFocusGrab
signal opened
signal dialogClosed
@@ -262,7 +263,7 @@ Item {
return customKeyboardFocus;
if (!shouldHaveFocus)
return WlrKeyboardFocus.None;
if (CompositorService.isHyprland)
if (root.useHyprlandFocusGrab)
return WlrKeyboardFocus.OnDemand;
return WlrKeyboardFocus.Exclusive;
}

View File

@@ -13,7 +13,7 @@ DankModal {
HyprlandFocusGrab {
windows: [root.contentWindow]
active: CompositorService.isHyprland && root.shouldHaveFocus
active: root.useHyprlandFocusGrab && root.shouldHaveFocus
}
property string pickerTitle: I18n.tr("Choose Color")

View File

@@ -21,7 +21,7 @@ DankModal {
HyprlandFocusGrab {
windows: [root.contentWindow]
active: CompositorService.isHyprland && root.shouldHaveFocus
active: root.useHyprlandFocusGrab && root.shouldHaveFocus
}
function scrollDown() {

View File

@@ -13,7 +13,7 @@ DankModal {
HyprlandFocusGrab {
windows: [notificationModal.contentWindow]
active: CompositorService.isHyprland && notificationModal.shouldHaveFocus
active: notificationModal.useHyprlandFocusGrab && notificationModal.shouldHaveFocus
}
property bool notificationModalOpen: false

View File

@@ -15,7 +15,7 @@ DankModal {
HyprlandFocusGrab {
windows: [root.contentWindow]
active: CompositorService.isHyprland && root.shouldHaveFocus
active: root.useHyprlandFocusGrab && root.shouldHaveFocus
}
property int selectedIndex: 0

View File

@@ -12,7 +12,7 @@ DankModal {
HyprlandFocusGrab {
windows: [spotlightModal.contentWindow]
active: CompositorService.isHyprland && spotlightModal.shouldHaveFocus
active: spotlightModal.useHyprlandFocusGrab && spotlightModal.shouldHaveFocus
}
property bool spotlightOpen: false

View File

@@ -76,7 +76,7 @@ DankPopout {
return WlrKeyboardFocus.None;
if (anyModalOpen)
return WlrKeyboardFocus.None;
if (CompositorService.isHyprland)
if (CompositorService.useHyprlandFocusGrab)
return WlrKeyboardFocus.OnDemand;
return WlrKeyboardFocus.Exclusive;
}

View File

@@ -427,7 +427,7 @@ Item {
WlrLayershell.keyboardFocus: {
if (!root.menuOpen)
return WlrKeyboardFocus.None;
if (CompositorService.isHyprland)
if (CompositorService.useHyprlandFocusGrab)
return WlrKeyboardFocus.OnDemand;
return WlrKeyboardFocus.Exclusive;
}
@@ -436,7 +436,7 @@ Item {
HyprlandFocusGrab {
windows: [overflowMenu]
active: CompositorService.isHyprland && root.menuOpen
active: CompositorService.useHyprlandFocusGrab && root.menuOpen
}
Connections {
@@ -915,7 +915,7 @@ Item {
WlrLayershell.keyboardFocus: {
if (!menuRoot.showMenu)
return WlrKeyboardFocus.None;
if (CompositorService.isHyprland)
if (CompositorService.useHyprlandFocusGrab)
return WlrKeyboardFocus.OnDemand;
return WlrKeyboardFocus.Exclusive;
}
@@ -923,7 +923,7 @@ Item {
HyprlandFocusGrab {
windows: [menuWindow]
active: CompositorService.isHyprland && menuRoot.showMenu
active: CompositorService.useHyprlandFocusGrab && menuRoot.showMenu
}
anchors {

View File

@@ -4,6 +4,7 @@ import Quickshell
import Quickshell.Wayland
import Quickshell.Hyprland
import qs.Common
import qs.Services
Scope {
id: overviewScope
@@ -32,7 +33,13 @@ Scope {
WlrLayershell.namespace: "dms:workspace-overview"
WlrLayershell.layer: WlrLayer.Overlay
WlrLayershell.exclusiveZone: -1
WlrLayershell.keyboardFocus: overviewScope.overviewOpen ? WlrKeyboardFocus.OnDemand : WlrKeyboardFocus.None
WlrLayershell.keyboardFocus: {
if (!overviewScope.overviewOpen)
return WlrKeyboardFocus.None;
if (CompositorService.useHyprlandFocusGrab)
return WlrKeyboardFocus.OnDemand;
return WlrKeyboardFocus.Exclusive;
}
anchors {
top: true
@@ -63,7 +70,8 @@ Scope {
function onOverviewOpenChanged() {
if (overviewScope.overviewOpen) {
grab.hasBeenActivated = false
delayedGrabTimer.start()
if (CompositorService.useHyprlandFocusGrab)
delayedGrabTimer.start()
} else {
delayedGrabTimer.stop()
grab.active = false
@@ -75,6 +83,8 @@ Scope {
Connections {
target: root
function onMonitorIsFocusedChanged() {
if (!CompositorService.useHyprlandFocusGrab)
return;
if (overviewScope.overviewOpen && root.monitorIsFocused && !grab.active) {
grab.hasBeenActivated = false
grab.active = true
@@ -89,7 +99,7 @@ Scope {
interval: 150
repeat: false
onTriggered: {
if (overviewScope.overviewOpen && root.monitorIsFocused) {
if (CompositorService.useHyprlandFocusGrab && overviewScope.overviewOpen && root.monitorIsFocused) {
grab.active = true
}
}

View File

@@ -16,6 +16,7 @@ Singleton {
property bool isSway: false
property bool isLabwc: false
property string compositor: "unknown"
readonly property bool useHyprlandFocusGrab: isHyprland && Quickshell.env("DMS_HYPRLAND_EXCLUSIVE_FOCUS") !== "1"
readonly property string hyprlandSignature: Quickshell.env("HYPRLAND_INSTANCE_SIGNATURE")
readonly property string niriSocket: Quickshell.env("NIRI_SOCKET")

View File

@@ -286,7 +286,7 @@ Item {
return customKeyboardFocus;
if (!shouldBeVisible)
return WlrKeyboardFocus.None;
if (CompositorService.isHyprland)
if (CompositorService.useHyprlandFocusGrab)
return WlrKeyboardFocus.OnDemand;
return WlrKeyboardFocus.Exclusive;
}