Selection service: compositor-wide primary selection for TASK-18
Verified on blueline that Hyprland advertises primary-selection plus both data-control managers, so wl-paste --primary --watch sees every selection with no per-app hooks. Settles TASK-18's selection-detection question as compositor-level; viewtop is not needed. The protocol gives no selection rectangle, so anchor is the pointer position at selection time. Opt-in by default: the watcher observes every highlight on the device, including passwords, so it is killed while locked and selection text is never persisted, logged, or trailed.
This commit is contained in:
parent
c8507e924b
commit
147999a918
3 changed files with 234 additions and 0 deletions
|
|
@ -567,6 +567,33 @@ Singleton {
|
|||
}
|
||||
}
|
||||
|
||||
// Text-selection action menu (TASK-18).
|
||||
//
|
||||
// OPT-IN ON PURPOSE, and do not flip this default casually. When
|
||||
// enabled, the shell watches the compositor's primary selection,
|
||||
// which means it observes EVERY piece of text the user highlights
|
||||
// anywhere on the device — including a password highlighted inside
|
||||
// a password manager. No tier in SESSION-AUTHORITY-DOCTRINE §2
|
||||
// covers an ambient capability of that reach, so the user turns it
|
||||
// on knowingly or it does not run. Selection.qml additionally kills
|
||||
// its watcher whenever the session is locked and never persists or
|
||||
// logs selection content.
|
||||
property JsonObject selection: JsonObject {
|
||||
property bool enable: false
|
||||
// Read Aloud is the one action with a live backend today; it
|
||||
// routes through Speech.speak() and so also obeys
|
||||
// speech.tts.enable. The rest are stubs until they earn a
|
||||
// backend (TASK-18: a stubbed action is fine, a janky menu is not).
|
||||
property bool readAloud: true
|
||||
// Agent actions ("Talk about this" / "Add to our conversation")
|
||||
// reach conversation history, which is `personal` tier — they
|
||||
// stay dark until the session is genuinely unlocked.
|
||||
property bool agentActions: true
|
||||
// Reference lookups stay strictly local/offline by default,
|
||||
// per TASK-18's stated default stance: never touch the agent.
|
||||
property bool referenceActions: true
|
||||
}
|
||||
|
||||
property JsonObject overlay: JsonObject {
|
||||
property bool openingZoomAnimation: true
|
||||
property bool darkenScreen: true
|
||||
|
|
|
|||
Loading…
Reference in a new issue