From d83b1fb7b1336389d7965af75a88912ff2fafbb8 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sat, 17 Oct 2026 09:55:26 +0200 Subject: desktop: git config moves to the settings window The global git config is set once and left alone, which is what the settings window is for. The user row and its page stay in the drawer; "More git settings" there now closes the drawer and opens git in the window: Drawer.show hands any settings module to the window, so every deep link, IPC included, lands in the right place. Git was the only user of Module.up, the page back() returned to, so up goes with it and back from a drawer page is always the grid. Also gives autostart its rocket glyph, which the first commit wrote as an empty string. Co-Authored-By: Claude Opus 5.5 --- desktop/Drawer.qml | 16 +++++++++++++--- desktop/Module.qml | 4 ---- desktop/README.md | 2 +- desktop/modules/autostart/AutostartModule.qml | 2 +- desktop/modules/git/GitModule.qml | 7 +++---- desktop/modules/git/README.md | 4 ++-- desktop/modules/user/README.md | 3 ++- desktop/shell.qml | 1 + 8 files changed, 23 insertions(+), 16 deletions(-) (limited to 'desktop') diff --git a/desktop/Drawer.qml b/desktop/Drawer.qml index 7855823..2151547 100644 --- a/desktop/Drawer.qml +++ b/desktop/Drawer.qml @@ -21,6 +21,11 @@ Scope { // The modules the drawer hosts, in grid order. Set from shell.qml. property list modules + // The settings window, set from shell.qml. A page that lives there is + // handed to it rather than shown here (the user page opens git). + // Not named `settings`, shell.qml's id for it (it would bind to itself). + property var settingsWindow: null + // Waybar runs on this screen and the launcher sits at its left end, so // the drawer belongs here. Falls back to the first screen when this // monitor is not connected, so the drawer is never invisible. @@ -62,6 +67,11 @@ Scope { } function show(name) { + if (root.settingsWindow && root.modules.some(m => m.name === name && m.settings)) { + root.close(); + root.settingsWindow.show(name); + return; + } // Deep-linking to a page must leave the history view, or both loaders // stay active and the later-declared history loader paints on top. root.history = false; @@ -69,12 +79,12 @@ Scope { root.open = true; } - // One step out: history, then a page (to its module's `up`, the grid by - // default), then the drawer itself. Escape, the mouse's back button and + // One step out: history, then a page (to the grid), then the drawer + // itself. Escape, the mouse's back button and // a page's back arrow. function back() { if (root.history) root.history = false; - else if (root.page) root.page = root.current?.up ?? ""; + else if (root.page) root.page = ""; else root.close(); } diff --git a/desktop/Module.qml b/desktop/Module.qml index 64fb69f..5217d3f 100644 --- a/desktop/Module.qml +++ b/desktop/Module.qml @@ -46,10 +46,6 @@ QtObject { // some other way: the user page opens from the drawer's header row. property bool tiled: !settings - // The page back() returns to from this module's page. Empty is the grid. - // The git page sets "user", the page it is opened from. - property string up: "" - // Rendered inside the tile, below the icon: a short state line. Null for // a tile that says nothing beyond its label. property Component tileContent: null diff --git a/desktop/README.md b/desktop/README.md index 3fd1cac..39a0275 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -50,7 +50,7 @@ gear tile opens it, and so does IPC: modules/perf/ CPU, temperatures, GPU, network, disks, ~/.cache modules/user/ the greeting row and the user's details page modules/clipboard/ cliphist history: search, copy, delete, clear all - modules/git/ the global git config, opened from the user page + modules/git/ the global git config, in the settings window modules/autostart/ Hyprland's autostart.lua, in the settings window Sound, mail, vm, network, bluetooth, kdeconnect and ai each carry their own README. diff --git a/desktop/modules/autostart/AutostartModule.qml b/desktop/modules/autostart/AutostartModule.qml index bba8aff..db11b28 100644 --- a/desktop/modules/autostart/AutostartModule.qml +++ b/desktop/modules/autostart/AutostartModule.qml @@ -18,7 +18,7 @@ Module { name: "autostart" label: "Autostart" // nf-fa-rocket, present in Inconsolata Nerd Font. - icon: "" + icon: "\uf135" settings: true page: Component { diff --git a/desktop/modules/git/GitModule.qml b/desktop/modules/git/GitModule.qml index 7b1cecf..8a2b6dd 100644 --- a/desktop/modules/git/GitModule.qml +++ b/desktop/modules/git/GitModule.qml @@ -12,16 +12,15 @@ import QtQuick import "../.." -// The global git config. No tile: the user page's Git section opens it, and -// back returns there. +// The global git config, in the settings window: set once and left alone. +// The user page's "More git settings" opens it there. Module { id: gm name: "git" label: "Git config" // nf-dev-git, present in Inconsolata Nerd Font. icon: "" - tiled: false - up: "user" + settings: true page: Component { Page { diff --git a/desktop/modules/git/README.md b/desktop/modules/git/README.md index 65f2a8a..08ed5ea 100644 --- a/desktop/modules/git/README.md +++ b/desktop/modules/git/README.md @@ -1,7 +1,7 @@ # git -The global git config (`~/.gitconfig`), every key, reached from the user -page's "More git settings" button. Back returns to the user page. +The global git config (`~/.gitconfig`), every key, in the settings window, +also reached from the user page's "More git settings" button. One row per value, grouped by section in file order, so a key set several times shows several rows. Enter saves a row, Escape undoes an edit, Remove diff --git a/desktop/modules/user/README.md b/desktop/modules/user/README.md index 7178838..8f3e8f1 100644 --- a/desktop/modules/user/README.md +++ b/desktop/modules/user/README.md @@ -16,7 +16,8 @@ what is typed is sent to `nominatim.openstreetmap.org`, 1s after typing stops and from three characters, per its usage policy. Up/Down, Enter and Escape work the list. Offline, the field is plain text. The Git section shows the name and email git will get, read-only, and the signing key; -"More git settings" opens the full global git config (`../git/`). +"More git settings" closes the drawer and opens the full global git config +(`../git/`) in the settings window. The greeting is picked at random on each drawer open, never the same one twice running, from `~/.config/quickshell/greetings`: one per line, `{user}` diff --git a/desktop/shell.qml b/desktop/shell.qml index bceb568..0d56e87 100644 --- a/desktop/shell.qml +++ b/desktop/shell.qml @@ -59,6 +59,7 @@ ShellRoot { Drawer { id: drawer + settingsWindow: settings modules: [ SoundModule { id: soundModule }, NetworkModule {}, -- cgit v1.2.3