aboutsummaryrefslogtreecommitdiffstats
path: root/desktop/companion/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/companion/README.md')
-rw-r--r--desktop/companion/README.md35
1 files changed, 30 insertions, 5 deletions
diff --git a/desktop/companion/README.md b/desktop/companion/README.md
index 4bb87f2..4fbe887 100644
--- a/desktop/companion/README.md
+++ b/desktop/companion/README.md
@@ -11,7 +11,7 @@ The design, with what was measured on the way, is
| `Companion.qml` | the window, inputs, timers, speech, IPC (`companion toggle/show/hide`) |
| `Figure.qml` | draws a frame: crossfade, bob, drop out and back, explosion |
| `Mood.js` | which state wins, from a snapshot; all the timings are its `T` |
-| `Lines.js` | her lines and the opening monologue |
+| `Lines.js` | her reaction, per-app and per-artist lines, and the opening monologue |
| `Admired.qml` | the wallpaper list she blushes at, and what wallp has on each monitor |
| `ListFile.js` | that list as plain text: parse and toggle |
| `prep-frames` | generated images to display frames |
@@ -21,9 +21,16 @@ The design, with what was measured on the way, is
it wins over the directory's own file (see AGENTS.md).
Whether she is shown is `companion` in `Prefs.qml`, so it survives a
-restart: SUPER+\ and the switch on Settings > Desktop > Companion
+restart: SUPER+\ and the switch on Settings > Companion
(`desktop/modules/companion/`) both set it.
+A hide by SUPER+\ or that switch plays a goodbye first: she waves (`wave`,
+`wave-l` and `wave-r` cycling) and then drops out. One hide in four she also
+says a `bye` line, under the usual 30 s line cooldown; with a line she holds
+`Mood.T.goodbye` (2 s, enough to read it), silently only
+`Mood.T.goodbyeSilent` (0.5 s). Fullscreen, the lock screen and the monitor
+hop keep their own exits and do not wave.
+
## Art
Not in the repo: the character is Square Enix's and this repo is GPLv2.
@@ -56,14 +63,31 @@ frame falls back to its outfit's `base`.
- The program in front of her is Hyprland's `activewindow` event,
`class,title`. It also fires on every title change, so she reacts
only when the class changes, a third of the time, under the 30 s line
- cooldown. Lines are `app:<class>` in `Lines.js`, class lowercased; a
- class with none says nothing.
-- A listed wallpaper (Settings > Desktop > Companion for the file, the
+ cooldown. Lines are by lowercased class in `Lines.js`; a class with
+ none says nothing. Settings > Companion > Companion phrases edits them
+ into `Prefs.companionApps`, which then replaces the defaults.
+- A listed wallpaper (Settings > Companion for the file, the
heart in the wallpaper picker for entries) on an empty workspace: she
turns to it with `watch` and blushes with `blush3`, at most every 3
minutes. Checked on `workspacev2` and `closewindow`, and whenever she
stops being away. Her monitor's wallpaper comes from wallp's
`wallp.conf` outputs and `wall_h`/`wall_v`.
+- Sony headphones connecting are the island's rule (`island/StatusPill.qml`:
+ `WH-`/`WF-`/`LinkBuds` by name, since BlueZ has no headphones class): she
+ sings once for `Mood.T.singHold`, 4 s, and says a line if the usual 30 s
+ cooldown allows it. A shell start with them already on is not a connection:
+ Bluetooth reads empty for ~2 s, then populates.
+- What is playing is `modules/sound/Player.qml`, which already drops the
+ playerctld and browser-integration duplicates. A new artist+title while
+ playing makes her DJ for `Mood.T.djHold`, 6 s (`dj` and `dj-scratch`
+ cycling), and say the artist's line if one matches: lowercased keys in
+ `Lines.artists`, matched as a substring, edited on Settings > Companion
+ artists into `Prefs.companionArtists`. Pause and resume of the same
+ track is not a change; a shell start with music on DJs once. While
+ music plays, the first idle stage is a groove instead of bored:
+ `whistle`, `headbang` (`headbang-up`/`-down` cycling) or `airguitar`,
+ picked at random, with a `groove` line; yawning and lying down are
+ unchanged.
- She only feels the pointer while it is over her: Quickshell has no
global pointer and Hyprland sends no motion events. Hence the 0.6 s
dodge rather than moving away as the pointer approaches.
@@ -83,3 +107,4 @@ frame falls back to its outfit's `base`.
## Check
node desktop/companion/test_mood.js
+ node desktop/companion/test_lines.js