aboutsummaryrefslogtreecommitdiffstats
path: root/desktop
AgeCommit message (Collapse)AuthorFilesLines
34 hoursdocs(desktop): document the bluetooth moduleDanilo M.2-6/+46
34 hoursfeat(desktop): pair bluetooth devicesDanilo M.3-0/+117
Quickshell has no BlueZ agent and no generic D-Bus module, so a pairing that needs a passkey confirmed cannot be done from QML. bluetoothctl registers its own agent, so pairing is the one shell-out; adapter state, scanning, connecting and forgetting all stay native. The timeout is the ceiling: a device bluetoothctl cannot auto-confirm fails visibly rather than hanging the page.
34 hoursfix(desktop): scale bluetooth battery to a percentageDanilo M.1-1/+1
34 hoursfeat(desktop): bluetooth module, tile and pageDanilo M.5-0/+295
Native Quickshell.Bluetooth for adapter power, discoverable, scan, connect, disconnect, trust and forget. Pairing is separate, because quickshell ships no BlueZ agent. The adapter is null for the first ~2s, so every access is navigated safely rather than assuming a first paint.
34 hoursdocs(desktop): keep the network module docs self-consistentDanilo M.2-11/+11
34 hoursdocs(desktop): document the network moduleDanilo M.2-1/+37
34 hoursfeat(desktop): network wifi pageDanilo M.2-1/+211
Radio switch, scan, and a list ordered connected, known, strongest. A secured unknown network reveals an inline password field rather than opening a popup, since a QtQuick.Controls popup is a separate window that positions badly on this layer surface, the same reason the sound page expands in place. Connection failures come through the Network.connectionFailed signal and show inline; the same failure also notifies, for the case where the drawer has closed by the time it lands.
35 hoursfeat(desktop): network module, live tile and wired pageDanilo M.4-0/+228
Wired first because it is the simpler half and proves the module wiring. Native Quickshell.Networking, no polling: the singletons push, and alwaysActive is true with no Service.qml because there is nothing to gate. The tile shows one line per active link rather than picking a primary, since the API exposes no route metric and guessing wrong would be worse than showing both.
35 hoursfeat(sound): switch default device, control the levelDanilo M.2-24/+179
The sound page showed the default sink and source but gave no way to choose another device and the meter was inert. Each section now lists the real audio devices, streams and monitor nodes filtered out, behind an in-place dropdown that sets Pipewire.preferredDefaultAudioSink or preferredDefaultAudioSource. The meter takes the wheel, click and drag, and the state glyph beside the percentage toggles mute. The list expands in place rather than in a popup because a QtQuick.Controls popup is a separate window and does not position reliably on a layer surface. The meter accepts the wheel and prevents stealing so the page's ScrollView neither scrolls nor flicks instead.
36 hoursfix(desktop): honest alwaysActive docs and working Escape in confirmDanilo M.7-41/+51
36 hoursdocs: correct drawer exit behaviour and dead module commandsDanilo M.4-26/+33
The README claimed a click outside returns to the grid; it closes the drawer, and only Escape-with-a-page or the back arrow return to the grid. The three moved module READMEs' run and IPC commands still named the deleted volume-osd, mail-overview and vm-manager paths, so point them at qs -p desktop and ipc call drawer open sound|mail|vm.
36 hoursdocs: the desktop shell and what the merge changedDanilo M.4-0/+153
Five components become three, and the Theme symlink count with them. Two new notes: a pragma Singleton in a subdirectory resolves through a plain directory import with no qmldir, and Virsh.sampling gates only the stats poll, not the lifecycle stream that keeps the tile correct while the page is closed.
36 hoursfeat(desktop): move vm-manager in as the vm moduleDanilo M.7-0/+975
Virsh.qml is unchanged; VmPanel's body becomes the page and the stat row becomes a Flow, because four stats with 150px bars do not fit a 600px drawer as one row. The page starts and stops Virsh.sampling, so the 2s poll runs only while something is looking at it; the lifecycle event stream still runs always, which is what keeps the tile's dots current.
36 hoursfix(desktop): start the mail Accounts singleton at shell launchDanilo M.1-0/+7
The singleton was referenced only inside lazy Components, so its qtmaildir.conf watcher and unread-count refresh did not start until the drawer first opened, contradicting alwaysActive and the old MailPanel, which shell.qml instantiated directly. Naming Accounts at the Module top level creates it at shell load; the page keeps its own refresh on open.
36 hoursfeat(desktop): move mail-overview in as the mail moduleDanilo M.10-0/+1291
Accounts.qml is unchanged and MailPanel's body becomes the page. The three scripts move with it, which changes the absolute paths in autostart and in the waybar module; both are outside this repo and listed in the plan's final task. Button.qml, byte-identical here and in vm-manager, lands at the shell root as the single copy.
36 hoursfeat(desktop): move volume-osd in as the sound moduleDanilo M.9-0/+792
VolumeOsd.qml did three jobs in one file: PipeWire tracking, the OSD surface and the player transport. They become Service, Osd and the page. The OSD keeps its namespace so the existing Hyprland blur rule still matches, and the service stays always-active because the OSD has to answer a keypress with no drawer open.
36 hoursfeat(desktop): the appearance tileDanilo M.2-1/+39
A tile with no page: appearance stays its own process because a wallpaper picker needs more room than a 600px drawer, so the tile only fires its existing IPC. This is the case the contract's activate() exists for.
36 hoursfix(desktop): slide the page with a transform, not anchored xDanilo M.1-3/+7
The page Loader is anchored to its parent, so the x binding on it was overridden and the slide never rendered. Drive the motion with a Translate transform instead, which the anchors do not touch. Opacity and the back-arrow wiring are unchanged.
36 hoursfeat(desktop): the drawer, with the top reservedDanilo M.2-4/+210
Left of DP-1 because conky holds the right; ExclusionMode.Normal so the bar the drawer is reached from stays visible and clickable. The top is an empty Item claiming the space the notification engine will fill, so the grid already sits where it will sit once that lands.
36 hoursfeat(desktop): tile and page chromeDanilo M.2-0/+147
The page body scrolls because mail with several accounts and vm with several VMs both exceed the drawer height; the tile grid deliberately does not, being fixed at a 3x3 ceiling.
36 hoursfeat(desktop): the module contractDanilo M.1-0/+49
A module provides a tile, a page, both or neither, plus alwaysActive, which governs the background service rather than the page: the drawer is closed most of the time and three of four modules have background work.
37 hoursfeat(desktop): skeleton shell with the keepalive windowDanilo M.2-0/+30
The window draws nothing and catches nothing; it exists because a quickshell config with no visible window exits silently, and this shell's drawer is closed most of the time. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01We9zcHEH8ZWHPcQwMaJRNv