diff options
Diffstat (limited to 'desktop/modules')
| -rw-r--r-- | desktop/modules/autostart/AutostartModule.qml | 21 | ||||
| -rw-r--r-- | desktop/modules/autostart/AutostartPage.qml | 7 | ||||
| -rw-r--r-- | desktop/modules/git/GitModule.qml | 18 | ||||
| -rw-r--r-- | desktop/modules/git/GitPage.qml | 2 |
4 files changed, 39 insertions, 9 deletions
diff --git a/desktop/modules/autostart/AutostartModule.qml b/desktop/modules/autostart/AutostartModule.qml index ef4c005..24c69da 100644 --- a/desktop/modules/autostart/AutostartModule.qml +++ b/desktop/modules/autostart/AutostartModule.qml @@ -9,24 +9,41 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. +import Quickshell +import Quickshell.Io import QtQuick import "../.." +import "Autostart.js" as A // What Hyprland launches at login, from hypr-theme's autostart.lua. Set once // and left alone, so it lives in the settings window, not on a tile. Module { + id: am name: "autostart" label: "Autostart" // nf-fa-rocket, present in Inconsolata Nerd Font. - icon: "\uf135" + icon: "" settings: true keywords: ["login", "startup", "launch", "exec", "daemon", "session", "workspace", "silent", "scratchpad", "autostart.lua", "hyprland"] + readonly property string file: (Quickshell.env("XDG_CONFIG_HOME") || Quickshell.env("HOME") + "/.config") + + "/hypr/sections/autostart.lua" + + // Every entry, as the page lists it; key is the row's objectName there. + function refresh() { fv.reload(); } + property FileView fv: FileView { + path: am.file + printErrors: false + watchChanges: true + onFileChanged: reload() + onLoaded: am.searchItems = A.parse(text()).map(e => ({ text: e.cmd, key: e.cmd })) + } + page: Component { Page { title: "Autostart" - AutostartPage { width: parent.width } + AutostartPage { width: parent.width; file: am.file } } } } diff --git a/desktop/modules/autostart/AutostartPage.qml b/desktop/modules/autostart/AutostartPage.qml index 1289a93..e0fa2c9 100644 --- a/desktop/modules/autostart/AutostartPage.qml +++ b/desktop/modules/autostart/AutostartPage.qml @@ -29,6 +29,8 @@ Column { spacing: 6 readonly property string home: Quickshell.env("HOME") + // autostart.lua, from the module. + required property string file property var entries: [] // Entry index -> the program's resolved path, "" when it is not found. property var found: ({}) @@ -48,8 +50,7 @@ Column { FileView { id: fv - path: (Quickshell.env("XDG_CONFIG_HOME") || page.home + "/.config") - + "/hypr/sections/autostart.lua" + path: page.file // Hyprland reloads its config on every change, so a half-written file // would reach it. atomicWrites: true @@ -253,6 +254,8 @@ Column { readonly property var parts: A.split(modelData.cmd) readonly property var where: A.workspace(parts.rule) readonly property string path: page.found[modelData.index] ?? "?" + // What a search hit scrolls to (AutostartModule's searchItems key). + objectName: modelData.cmd width: page.width height: 44 diff --git a/desktop/modules/git/GitModule.qml b/desktop/modules/git/GitModule.qml index aaa72a9..6aa0bc6 100644 --- a/desktop/modules/git/GitModule.qml +++ b/desktop/modules/git/GitModule.qml @@ -9,8 +9,10 @@ // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. +import Quickshell.Io import QtQuick import "../.." +import "Git.js" as G // The global git config, in the settings window: set once and left alone. // The user page's "More git settings" opens it there. @@ -21,11 +23,17 @@ Module { // nf-dev-git, present in Inconsolata Nerd Font. icon: "" settings: true - keywords: ["gitconfig", "user", "name", "email", "signingkey", "signing", "gpg", - "alias", "core", "editor", "pager", "commit", "gpgsign", "init", - "defaultBranch", "branch", "pull", "push", "fetch", "rebase", "merge", - "diff", "log", "color", "credential", "lfs", "rerere", "tag", "status", - "safe", "directory"] + keywords: ["gitconfig"] + + // Every value, as the page lists it; key is the row's tag in GitPage. + function refresh() { proc.running = false; proc.running = true; } + property Process proc: Process { + command: [Qt.resolvedUrl("gitcfg").toString().replace(/^file:\/\//, ""), "list"] + stdout: StdioCollector { + onStreamFinished: gm.searchItems = text.startsWith("error=") ? [] + : G.parse(text).map(e => ({ text: e.name + " = " + e.value, key: e.name + "=" + e.value })) + } + } page: Component { Page { diff --git a/desktop/modules/git/GitPage.qml b/desktop/modules/git/GitPage.qml index 6edf085..c5d04d9 100644 --- a/desktop/modules/git/GitPage.qml +++ b/desktop/modules/git/GitPage.qml @@ -244,6 +244,8 @@ Column { // An Item with anchors, not a Row: a Row sizes to its children // and fixed widths in one overflow the page (AGENTS.md). Item { + // What a search hit scrolls to (GitModule's searchItems key). + objectName: row.tag width: parent.width height: 34 |
