mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-28 23:42:51 -05:00
keybinds: fix cheatsheet on non niri
- separate read only logic from writeread
This commit is contained in:
@@ -22,6 +22,18 @@ Singleton {
|
||||
|
||||
property bool available: CompositorService.isNiri && shortcutInhibitorAvailable
|
||||
property string currentProvider: "niri"
|
||||
|
||||
readonly property string cheatsheetProvider: {
|
||||
if (CompositorService.isNiri)
|
||||
return "niri";
|
||||
if (CompositorService.isHyprland)
|
||||
return "hyprland";
|
||||
return "";
|
||||
}
|
||||
property bool cheatsheetAvailable: cheatsheetProvider !== ""
|
||||
property bool cheatsheetLoading: false
|
||||
property var cheatsheet: ({})
|
||||
|
||||
property bool loading: false
|
||||
property bool saving: false
|
||||
property bool fixing: false
|
||||
@@ -58,17 +70,14 @@ Singleton {
|
||||
signal bindSaveCompleted(bool success)
|
||||
signal bindRemoved(string key)
|
||||
signal dmsBindsFixed
|
||||
|
||||
Component.onCompleted: {
|
||||
if (available)
|
||||
Qt.callLater(loadBinds);
|
||||
}
|
||||
signal cheatsheetLoaded
|
||||
|
||||
Connections {
|
||||
target: CompositorService
|
||||
function onCompositorChanged() {
|
||||
if (CompositorService.isNiri)
|
||||
Qt.callLater(root.loadBinds);
|
||||
if (!CompositorService.isNiri)
|
||||
return;
|
||||
Qt.callLater(root.loadBinds);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -80,6 +89,31 @@ Singleton {
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: cheatsheetProcess
|
||||
running: false
|
||||
|
||||
stdout: StdioCollector {
|
||||
onStreamFinished: {
|
||||
try {
|
||||
root.cheatsheet = JSON.parse(text);
|
||||
} catch (e) {
|
||||
console.error("[KeybindsService] Failed to parse cheatsheet:", e);
|
||||
root.cheatsheet = {};
|
||||
}
|
||||
root.cheatsheetLoading = false;
|
||||
root.cheatsheetLoaded();
|
||||
}
|
||||
}
|
||||
|
||||
onExited: exitCode => {
|
||||
if (exitCode === 0)
|
||||
return;
|
||||
console.warn("[KeybindsService] Cheatsheet load failed with code:", exitCode);
|
||||
root.cheatsheetLoading = false;
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: loadProcess
|
||||
running: false
|
||||
@@ -199,6 +233,14 @@ Singleton {
|
||||
loadBinds(true);
|
||||
}
|
||||
|
||||
function loadCheatsheet() {
|
||||
if (cheatsheetProcess.running || !cheatsheetAvailable)
|
||||
return;
|
||||
cheatsheetLoading = true;
|
||||
cheatsheetProcess.command = ["dms", "keybinds", "show", cheatsheetProvider];
|
||||
cheatsheetProcess.running = true;
|
||||
}
|
||||
|
||||
function loadBinds(showLoading) {
|
||||
if (loadProcess.running || !available)
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user