mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-29 16:02:51 -05:00
feat: Enable multi-monitor notepad support
- Notepad will now open on the currently focused monitor/workspace display by default
This commit is contained in:
@@ -26,9 +26,9 @@ PanelWindow {
|
|||||||
if (!notepadVariants || !notepadVariants.instances) return null
|
if (!notepadVariants || !notepadVariants.instances) return null
|
||||||
|
|
||||||
for (var i = 0; i < notepadVariants.instances.length; i++) {
|
for (var i = 0; i < notepadVariants.instances.length; i++) {
|
||||||
var instance = notepadVariants.instances[i]
|
var loader = notepadVariants.instances[i]
|
||||||
if (instance.modelData && instance.modelData.name === root.screen?.name) {
|
if (loader.modelData && loader.modelData.name === root.screen?.name) {
|
||||||
return instance
|
return loader.ensureLoaded()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
|
|||||||
71
shell.qml
71
shell.qml
@@ -270,9 +270,30 @@ ShellRoot {
|
|||||||
id: notepadSlideoutVariants
|
id: notepadSlideoutVariants
|
||||||
model: SettingsData.getFilteredScreens("notepad")
|
model: SettingsData.getFilteredScreens("notepad")
|
||||||
|
|
||||||
delegate: NotepadSlideout {
|
delegate: Loader {
|
||||||
id: notepadSlideout
|
id: notepadLoader
|
||||||
modelData: item
|
property var modelData: item
|
||||||
|
active: false
|
||||||
|
|
||||||
|
sourceComponent: Component {
|
||||||
|
NotepadSlideout {
|
||||||
|
id: notepadSlideout
|
||||||
|
modelData: notepadLoader.modelData
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
notepadLoader.loaded = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
property bool loaded: false
|
||||||
|
|
||||||
|
function ensureLoaded() {
|
||||||
|
if (!active) {
|
||||||
|
active = true
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -364,23 +385,55 @@ ShellRoot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
IpcHandler {
|
IpcHandler {
|
||||||
|
function getFocusedScreenName() {
|
||||||
|
if (CompositorService.isHyprland && Hyprland.focusedWorkspace && Hyprland.focusedWorkspace.monitor) {
|
||||||
|
return Hyprland.focusedWorkspace.monitor.name
|
||||||
|
}
|
||||||
|
if (CompositorService.isNiri && NiriService.currentOutput) {
|
||||||
|
return NiriService.currentOutput
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
function getNotepadInstanceForScreen(screenName) {
|
||||||
|
if (!screenName || notepadSlideoutVariants.instances.length === 0) {
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < notepadSlideoutVariants.instances.length; i++) {
|
||||||
|
var loader = notepadSlideoutVariants.instances[i]
|
||||||
|
if (loader.modelData && loader.modelData.name === screenName) {
|
||||||
|
return loader.ensureLoaded()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
function getActiveNotepadInstance() {
|
function getActiveNotepadInstance() {
|
||||||
if (notepadSlideoutVariants.instances.length === 0) {
|
if (notepadSlideoutVariants.instances.length === 0) {
|
||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
if (notepadSlideoutVariants.instances.length === 1) {
|
if (notepadSlideoutVariants.instances.length === 1) {
|
||||||
return notepadSlideoutVariants.instances[0]
|
return notepadSlideoutVariants.instances[0].ensureLoaded()
|
||||||
}
|
}
|
||||||
|
|
||||||
for (var i = 0; i < notepadSlideoutVariants.instances.length; i++) {
|
var focusedScreen = getFocusedScreenName()
|
||||||
var instance = notepadSlideoutVariants.instances[i]
|
if (focusedScreen) {
|
||||||
if (instance.notepadVisible) {
|
var focusedInstance = getNotepadInstanceForScreen(focusedScreen)
|
||||||
return instance
|
if (focusedInstance) {
|
||||||
|
return focusedInstance
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return notepadSlideoutVariants.instances[0]
|
for (var i = 0; i < notepadSlideoutVariants.instances.length; i++) {
|
||||||
|
var loader = notepadSlideoutVariants.instances[i]
|
||||||
|
if (loader.active && loader.item && loader.item.notepadVisible) {
|
||||||
|
return loader.item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return notepadSlideoutVariants.instances[0].ensureLoaded()
|
||||||
}
|
}
|
||||||
|
|
||||||
function open(): string {
|
function open(): string {
|
||||||
|
|||||||
Reference in New Issue
Block a user