1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-31 00:42:50 -05:00

processlist: convert to floating window

This commit is contained in:
bbedward
2025-11-23 12:16:03 -05:00
parent 42de6fd074
commit 48f77e1691
3 changed files with 251 additions and 245 deletions

View File

@@ -126,9 +126,7 @@ windowrulev2 = float, class:^(firefox)$, title:^(Picture-in-Picture)$
windowrulev2 = float, class:^(zoom)$
# DMS windows floating by default
windowrulev2 = float, class:^(org.quickshell)$, title:^(Settings)$
windowrulev2 = float, class:^(org.quickshell)$, title:^(File)$
windowrulev2 = float, class:^(org.quickshell)$
windowrulev2 = opacity 0.9 0.9, floating:0, focus:0
layerrule = noanim, ^(quickshell)$

View File

@@ -218,16 +218,9 @@ window-rule {
geometry-corner-radius 12
clip-to-geometry true
}
// Open dms settings as floating by default
// Open dms windows as floating by default
window-rule {
match app-id=r#"org.quickshell$"#
match title="Settings"
open-floating true
}
// dms file browser
window-rule {
match app-id=r#"org.quickshell$"#
match title=r#"File$"#
open-floating true
}
binds {

View File

@@ -1,30 +1,32 @@
import QtQuick
import QtQuick.Layouts
import Quickshell
import qs.Common
import qs.Modals.Common
import qs.Modules.ProcessList
import qs.Services
import qs.Widgets
DankModal {
FloatingWindow {
id: processListModal
layerNamespace: "dms:process-list-modal"
property int currentTab: 0
property var tabNames: ["Processes", "Performance", "System"]
property bool shouldHaveFocus: visible
property alias shouldBeVisible: processListModal.visible
signal closingModal
function show() {
if (!DgopService.dgopAvailable) {
console.warn("ProcessListModal: dgop is not available");
return;
}
open();
visible = true;
UserInfoService.getUptime();
}
function hide() {
close();
visible = false;
if (processContextMenu.visible) {
processContextMenu.close();
}
@@ -35,20 +37,26 @@ DankModal {
console.warn("ProcessListModal: dgop is not available");
return;
}
if (shouldBeVisible) {
hide();
} else {
show();
}
visible = !visible;
}
modalWidth: 900
modalHeight: 680
backgroundColor: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
cornerRadius: Theme.cornerRadius
enableShadow: true
onBackgroundClicked: () => {
return hide();
objectName: "processListModal"
title: "System Monitor"
implicitWidth: 900
implicitHeight: 680
color: Theme.withAlpha(Theme.surfaceContainer, Theme.popupTransparency)
visible: false
onVisibleChanged: {
if (!visible) {
closingModal();
} else {
Qt.callLater(() => {
if (contentFocusScope) {
contentFocusScope.forceActiveFocus();
}
});
}
}
Component {
@@ -75,27 +83,35 @@ DankModal {
id: processContextMenu
}
content: Component {
Item {
FocusScope {
id: contentFocusScope
anchors.fill: parent
focus: true
Keys.onPressed: event => {
if (event.key === Qt.Key_Escape) {
processListModal.hide();
hide();
event.accepted = true;
} else if (event.key === Qt.Key_1) {
return;
}
switch (event.key) {
case Qt.Key_1:
currentTab = 0;
event.accepted = true;
} else if (event.key === Qt.Key_2) {
return;
case Qt.Key_2:
currentTab = 1;
event.accepted = true;
} else if (event.key === Qt.Key_3) {
return;
case Qt.Key_3:
currentTab = 2;
event.accepted = true;
return;
}
}
// Show error message when dgop is not available
Rectangle {
anchors.centerIn: parent
width: 400
@@ -164,7 +180,7 @@ DankModal {
iconSize: Theme.iconSize - 4
iconColor: Theme.surfaceText
onClicked: () => {
return processListModal.hide();
processListModal.hide();
}
Layout.alignment: Qt.AlignVCenter
}
@@ -271,7 +287,7 @@ DankModal {
anchors.fill: parent
anchors.margins: Theme.spacingS
active: processListModal.shouldBeVisible && currentTab === 0
active: processListModal.visible && currentTab === 0
visible: currentTab === 0
opacity: currentTab === 0 ? 1 : 0
sourceComponent: processesTabComponent
@@ -289,7 +305,7 @@ DankModal {
anchors.fill: parent
anchors.margins: Theme.spacingS
active: processListModal.shouldBeVisible && currentTab === 1
active: processListModal.visible && currentTab === 1
visible: currentTab === 1
opacity: currentTab === 1 ? 1 : 0
sourceComponent: performanceTabComponent
@@ -307,7 +323,7 @@ DankModal {
anchors.fill: parent
anchors.margins: Theme.spacingS
active: processListModal.shouldBeVisible && currentTab === 2
active: processListModal.visible && currentTab === 2
visible: currentTab === 2
opacity: currentTab === 2 ? 1 : 0
sourceComponent: systemTabComponent
@@ -322,5 +338,4 @@ DankModal {
}
}
}
}
}