aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/island/README.md
AgeCommit message (Collapse)AuthorFilesLines
5 daysisland: headphones panel for Sony noise controlDanilo M.1-4/+16
A headphones icon in the status pill, shown while Sony headphones are connected, opens a panel in the capsule: battery, noise control tiles (ANC, ambient, off), ambient level, focus on voice, the headphones' own sink volume, power off and refresh. Battery and volume need nothing new: BlueZ's Battery1 already reports the charge, and volume is AVRCP through PipeWire, so the slider drives the headphones' bluez_output node rather than the default sink. Only the mode needs Sony's own protocol, which sonyctl speaks over RFCOMM with the Python standard library. The headphones advertise the v2 MDR service on channel 18 and answer an 8-byte init reply, which is the v2 shape. What was measured on a WH-CH720N, and differs from what reading Gadgetbridge alone suggested: the ambient subtype is 17, while 15 (what Gadgetbridge sends to models without wind-noise reduction) is acked and never answered; the set payload is 7 bytes, with no wind byte. Noise cancelling has no strength, only on or off; a level sent with it is ignored and the previous ambient level kept. Focus on voice reads back as set. A connect right after the previous run closed fails with EBUSY, so sonyctl retries it briefly. Each call is about 2s, so the panel runs one at a time and sends the ambient level only once the slider or wheel settles. The mode is re-read on every open because the headphones' own button changes it too. Power off was not exercised, to keep the headphones on during development. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
6 daysName the project Keystone, and move its paths and namespacesDanilo M.1-3/+3
The repository had no name of its own, only the framework's. It is now Keystone, in the README, AGENTS.md, the settings window, notes commit messages, calctl's PRODID and the user page's User-Agent. Its files move off quickshell's name too: ~/.config/quickshell/greetings -> ~/.config/keystone/ ~/.config/quickshell/obs-scene-icons.json -> ~/.config/keystone/ $XDG_STATE_HOME/quickshell/desktop.json -> $XDG_STATE_HOME/keystone/ ~/.config/quickshell is Quickshell's own default config directory (a bare qs loads its shell.qml), so sharing it was a collision rather than a home. There is no fallback to the old paths: the files are moved once. The layer namespaces become keystone-*, and the Hyprland blur rules in hypr-theme are renamed to match in the same change. A running shell keeps its old namespaces until restarted. Left alone: the retired standalone mail and vm shells' namespaces, which their READMEs keep as history; Quickshell's own app id, binary and process name; and the repository directory. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
6 daysisland: open the window source's properties from the pillDanilo M.1-5/+7
A Wayland window capture is chosen in the portal picker, which only OBS's source dialog can open. In a scene whose only source is a PipeWire capture, the panel gets a Window button that opens that dialog. A window scene with more than one source needs a per-scene designation the pill does not have yet.
6 daysisland: icon buttons, audio and corner controls, scene gridDanilo M.1-4/+8
6 daysdocs: the OBS pillDanilo M.1-0/+19
7 daysappearance moves into the settings windowDanilo M.1-1/+1
The appearance shell existed because a wallpaper picker needed more room than the 600px drawer, so it ran as its own process with a full-screen overlay. The settings window now gives it that room, and its five tabs become five settings pages in the desktop process: Wallpaper, Theme, Icons & cursor, Sunset and Idle. appearance/ is gone, and with it a process, a keepalive window and a layer blur rule. The files move to desktop/modules/appearance/ unchanged in what they do. Each tab gets a small *Module.qml; the window's refresh-on-open calls the singletons' refresh(), which the panel's show() used to. The two tabs that were inline Components in AppearancePanel become ThemeTab and WallpaperTab, owning the notices the panel printed. Sunset, Idle and Icons drop their own Flickable so the page scrolls them and search can reveal a row; the wallpaper list virtualises its rows and scrolls itself, so it takes the page's new viewHeight instead. Search finds a colour scheme and an icon or cursor theme by name. The appearance IPC target moves to desktop/shell.qml with the same verbs, so udt-steps and any keybind change only the path. Git now follows the appearance pages and autostart in the sidebar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7 daysfix(island): say why a drop is refusedDanilo M.1-1/+3
A drop offering no local file:// URL was refused silently: the bubble vanished and nothing happened. Measured on the first report: the file manager offers a trashed file as trash:, with no path to read. The bubble now shows the reason for a moment, Trash named as such, and the refusal is logged with the URL schemes and offered formats (never the paths). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
7 daysfeat(island): take a file drop for the assistantDanilo M.1-0/+9
A DropArea over the sliver grows into a bubble while a file drag is over it and hands file:// paths to the canvas. Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
7 daysfeat(island): a media pill left of the clockDanilo M.1-1/+12
Shows album art and a scrolling "artist · album · title" while a player is playing or paused, using the sound module's Player so the browser proxy duplicates are already filtered. Hovering swaps the text for a progress bar, swapped in place rather than growing the pill; MPRIS does not push position, so it is re-read every second while hovered, and a click seeks only when the player reports canSeek and a known length. The wheel steps tracks one per notch, as the layout flag does, so a touchpad does not skip several. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 daysfeat(perf): the performance page moves to the drawer, with ~/.cacheDanilo M.1-37/+3
The island's performance icon and panel are gone: the drawer page covers them. With only one host left, the panel drops its three-column grid for one card per row at a larger size, since the page scrolls; temperatures get a card of their own as tiles. The files move from island/perf to modules/perf. A cache card ports conky's: ~/.cache and its five largest children, measured with du each time the page opens (28ms over 2 GiB here) rather than read from conky's 15-minute sampler file. The largest is yellow, red past half the total, as conky had it. The warning dot now shows only on the drawer tile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
8 daysrefactor(island): the controls panel goesDanilo M.1-24/+8
Each of its seven tiles opened a drawer page that already existed, and it went unused. SUPER alone will open the drawer instead. Removed with it: the status pill's controls icon, Island.toggleControls, the island IPC target, Controls.js and its test, and the controls list in Prefs. Prefs now holds only the pinned IP; a controls key left in desktop.json is still kept on write, because writes merge into the parsed document. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
10 daysdocs: the performance panelDanilo M.1-1/+38
What the panel shows, the dot's thresholds and their lack of hysteresis, why the public IP is pinned, and what is sampled always versus only while open. AGENTS.md gains two gotchas found building it: FileView reads /proc on reload(), and a hot reload does not resize an existing layer surface, which left the panel cut off after the height was raised. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 daysdocs(island): calendar edits touch only what changedDanilo M.1-2/+4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 daysdocs: the calendar panel and calctlDanilo M.1-1/+18
The island README gains the panel. AGENTS.md records why calctl reads the vdir itself, the local-time recurrence rule, the system Python it needs, and two traps the build hit: a QML method named escape fails to load, and a pill expanding for any panel grew beside the calendar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 daysdocs: the controls panel, its preferences file and bindDanilo M.1-1/+24
The island README gains the panel. AGENTS.md records that a bare SUPER release bind is cancelled by drag and scroll on Hyprland 0.56.2, which was the open risk in the spec, and that FileView creates parent directories while Quickshell.stateDir is per-shell. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-07docs: the island, and waybar goneDanilo M.1-0/+93
AGENTS.md describes the hybrid model (desktop/ hosts drawer and island) and gains the gotchas found while building the island: UseQApplication for tray menus, WheelHandler vs MouseArea, accent colliding with green, xkb layout switching, and the tray popup un-hovering the island. The Blur waybar measurement becomes history. READMEs drop their present-tense waybar references. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>