From 66049c965139d821747ea76960b1e91316f8110a Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Sat, 17 Oct 2026 09:54:18 +0200 Subject: desktop: a settings window, and autostart as its first page The drawer's tiles were turning into a full settings app. The drawer stays the quick area, live state and things toggled often; pages set once and left alone go to a settings window, a normal Hyprland toplevel listing them down the left. A module joins with settings: true, which also drops its tile. A gear tile and ipc call settings open|toggle reach it. Autostart edits hypr-theme's autostart.lua directly, line by line: an hl.exec_cmd line is an entry, behind -- it is disabled, everything else passes through. Edits refuse when their line moved since the parse, and writes are atomic because Hyprland reloads on every change. A wrong entry only shows at the next login, so adding is guided rather than a free text field: pick an installed app or type a command whose program must resolve on PATH before Add enables, then a workspace and silent, composed into a [workspace X silent] rule. Try runs the line through hyprctl dispatch so the rule applies as at login. Existing rows get no Try: they ran at login, and a second start stacks an instance. Co-Authored-By: Claude Opus 5.5 --- desktop/README.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'desktop/README.md') diff --git a/desktop/README.md b/desktop/README.md index 092baae..3fd1cac 100644 --- a/desktop/README.md +++ b/desktop/README.md @@ -24,6 +24,19 @@ declared argument to be present and a defaulted parameter registers as a type the IPC layer rejects. The page-less grid entry is therefore the zero-argument `toggle`. `ipc call drawer close` closes it. +## The settings window + +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: + + qs -p ./desktop ipc call settings open autostart + qs -p ./desktop ipc call settings toggle + +`open` takes a page name; an unknown or empty one opens the first page. + ## The modules modules/sound/ output and input volume, the OSD, the player @@ -38,6 +51,7 @@ the IPC layer rejects. The page-less grid entry is therefore the zero-argument 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/autostart/ Hyprland's autostart.lua, in the settings window Sound, mail, vm, network, bluetooth, kdeconnect and ai each carry their own README. Appearance is a tile onto the separate appearance shell, whose README covers the @@ -54,6 +68,8 @@ drawer needs to show it: - `tileContent`: a `Component` for the short state line under the label, or null for a tile that says nothing beyond its name. - `page`: a `Component` for the full-height page behind the tile, or null. +- `settings`: the page lives in the settings window, not the drawer, and the + module has no tile. - `activate()`: what a tile with no page does when clicked. - `alwaysActive`: declares whether the module's service is meant to run while the drawer is closed. The drawer does not read it, the module implements its -- cgit v1.2.3