diff options
Diffstat (limited to 'desktop')
| -rw-r--r-- | desktop/Drawer.qml | 30 | ||||
| -rw-r--r-- | desktop/README.md | 10 | ||||
| -rw-r--r-- | desktop/shell.qml | 7 |
3 files changed, 33 insertions, 14 deletions
diff --git a/desktop/Drawer.qml b/desktop/Drawer.qml index 2151547..0458418 100644 --- a/desktop/Drawer.qml +++ b/desktop/Drawer.qml @@ -176,10 +176,38 @@ Scope { UserRow { id: user - anchors { top: parent.top; left: parent.left; right: parent.right } + anchors { top: parent.top; left: parent.left; right: gear.left; rightMargin: 8 } onClicked: root.show("user") } + // The settings window, beside the user header: it is not + // a quick setting, so it is not a tile. + Rectangle { + id: gear + anchors { top: parent.top; right: parent.right; topMargin: (user.height - height) / 2 } + width: 40; height: 40; radius: 20 + color: gearArea.containsMouse ? Qt.alpha(Theme.accent, 0.22) : "transparent" + + Text { + anchors.centerIn: parent + // nf-fa-gear, present in Inconsolata Nerd Font. + text: "\uf013" + font { family: Theme.iconFamily; pixelSize: 20 } + color: Theme.text + } + + MouseArea { + id: gearArea + anchors.fill: parent + hoverEnabled: true + cursorShape: Qt.PointingHandCursor + onClicked: { + root.close(); + root.settingsWindow?.show(""); + } + } + } + // The notification engine's space. The live queue lists // here while the drawer is open; the balloons stand down // because the drawer flag above is set. diff --git a/desktop/README.md b/desktop/README.md index fe189a0..1c7d781 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -30,7 +30,7 @@ The drawer is the quick area: live state, and things toggled often. Pages that are set once and left alone live in a settings window instead, a normal Hyprland window rather than a layer surface, with those pages listed down its left. A module joins it with `settings: true`, which also drops its tile. The -gear tile opens it, and so does IPC: +gear beside the user header opens it, as do SUPER+Return and IPC: qs -p ./desktop ipc call settings open autostart qs -p ./desktop ipc call settings toggle @@ -97,9 +97,8 @@ which: it reads those properties and does the obvious thing. A page is wrapped in `Page.qml` for the header and back arrow, and a tile with no page is fire-and-forget, so its click calls `activate()` and closes the drawer. -The settings gear in `shell.qml` is the smallest complete example: a name, an -icon, and an `activate()` that opens the settings window, with no page and no -service. Sound, mail, vm, network, bluetooth and kdeconnect each add a service +A tile with no page is the smallest complete example: a name, an icon, and an +`activate()`, with no page and no service. Sound, mail, vm, network, bluetooth and kdeconnect each add a service and a page on top of that same shape; `modules/appearance/ThemeModule.qml` is a small settings page. @@ -148,8 +147,7 @@ below it sits where it will sit once notifications arrive. The bottom is a fourth row scrolls inside that box rather than pushing into the notification space, and a thin accent bar in the margin shows only when a row is hidden. The order is Sound, Network, Bluetooth, KDE Connect, Mail, Status, -Performance, Clipboard, VMs, AI, then the settings gear, the everyday ones -first. +Performance, Clipboard, VMs, AI, the everyday ones first. A page can close the whole drawer by emitting `dismiss` from its `Page`, as the clipboard does after a copy; `back` returns to the grid. diff --git a/desktop/shell.qml b/desktop/shell.qml index bb8c1df..3cbfe51 100644 --- a/desktop/shell.qml +++ b/desktop/shell.qml @@ -74,13 +74,6 @@ ShellRoot { AiModule {}, UserModule {}, NotesModule {}, - // The settings window's entry point, a tile like the others. - Module { - name: "settings" - // nf-fa-gear, present in Inconsolata Nerd Font. - icon: "\uf013" - function activate() { settings.show(""); } - }, WallpaperModule {}, ThemeModule {}, IconsModule {}, |
