You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**Service management (`neru services`)**| ✅ launchd user agent | ⚠️ systemd user unit only ³ | ⚠️ systemd user unit only ³ | ⚠️ systemd user unit only ³ | 🟡 `CodeNotSupported`|
@@ -238,6 +238,18 @@ nothing else. From two notches up (`scroll_step_half`, `scroll_step_full`, or a
238
238
`scroll_step` above 60) the same eased curve applies as everywhere else, and
239
239
those are the scrolls the animation is worth having for.
240
240
241
+
⁵ This row is about the native *field* — a platform text control that owns
242
+
keyboard focus and brings the system's input method with it. Only macOS has
243
+
one. Everywhere else the query is read from the event tap's key stream, which
244
+
is why dead keys and IME composition do not work there and a hint search takes
245
+
plain characters.
246
+
247
+
**What the box on screen is, is a different question, and every platform draws
248
+
one.** Linux paints the search badge onto the shared overlay surface with the
249
+
same Cairo primitives as its other badges, so `hints.search_input_ui.*` means
250
+
what it says on all three; the badge is a display of the query the mode handler
251
+
already holds, and it never captures a key.
252
+
241
253
Neru sends the same distance on every backend; only the granularity of a step
242
254
differs — though on Wayland the animated path spends that distance as a
243
255
continuous delta where the unanimated one spends it as notches, and an
@@ -576,7 +588,7 @@ discovery rather than the mode itself.
576
588
|**Hints**| Element discovery | ✅ full AX tree | ⚠️ AT-SPI, toolkit-dependent | ⚠️ UIA, shallow tree |
|**Hints**| Label placement | ✅ top / center / bottom | ✅ top / center / bottom | ✅ top / center / bottom |
582
594
|**Grid**| Transition animation | ✅ | ✅ | ❌ |
@@ -703,19 +715,6 @@ green in every cell while an option means nothing, which is exactly how
703
715
|`app_configs.ignore_clickable_check`| option | ✅ | ❌ | ❌ | the clickable and visibility checks are AX-specific; the AT-SPI and UIA walks decide what is clickable their own way and never consult these |
704
716
|`app_configs.visible_check_enabled`| option | ✅ | ❌ | ❌ | the clickable and visibility checks are AX-specific; the AT-SPI and UIA walks decide what is clickable their own way and never consult these |
705
717
|`grid.prewarm_enabled`| option | ✅ | ❌ | ❌ | only the darwin grid overlay prewarms its layers; the other backends draw on demand |
706
-
|`hints.search_input_ui.font_size`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
707
-
|`hints.search_input_ui.font_family`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
708
-
|`hints.search_input_ui.border_radius`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
709
-
|`hints.search_input_ui.padding_x`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
710
-
|`hints.search_input_ui.padding_y`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
711
-
|`hints.search_input_ui.border_width`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
712
-
|`hints.search_input_ui.position`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
713
-
|`hints.search_input_ui.x_offset`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
714
-
|`hints.search_input_ui.y_offset`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
715
-
|`hints.search_input_ui.width`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
716
-
|`hints.search_input_ui.background_color`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
717
-
|`hints.search_input_ui.text_color`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
718
-
|`hints.search_input_ui.border_color`| option | ✅ | ❌ | ✅ | no Linux overlay backend draws the hints search input badge; the query still reaches hints through the event tap |
719
718
|`hints.vision.detect_text`| option | ✅ | ❌ | ❌ | no element-detection engine outside macOS answers the vision strategy, so it finds nothing there and none of its settings are read; use axtree |
720
719
|`hints.vision.request_timeout_ms`| option | ✅ | ❌ | ❌ | no element-detection engine outside macOS answers the vision strategy, so it finds nothing there and none of its settings are read; use axtree |
721
720
|`hints.vision.minimum_confidence`| option | ✅ | ❌ | ❌ | no element-detection engine outside macOS answers the vision strategy, so it finds nothing there and none of its settings are read; use axtree |
@@ -835,39 +834,36 @@ command — that means less here than it does on macOS, whether or not the
835
834
836
835
1.`neru docs` — returns `CodeNotSupported` although the tray already opens
837
836
URLs through `xdg-open` in the same repo
838
-
2. Hints search input badge — not drawn; the overlay manager reports
839
-
`CodeNotSupported` and the query goes on reaching hints through the event
840
-
tap's key stream
841
-
3. Screen capture — no code path anywhere in the tree. Prerequisite for the OCR
837
+
2. Screen capture — no code path anywhere in the tree. Prerequisite for the OCR
842
838
strategy below and the missing half of `ports.Vision`. Take it per backend:
843
839
`wlr-screencopy` on wlroots, `XGetImage` on X11, the portal only for KDE
844
-
4.`vision` hint strategy — no engine. Met by linking one through
840
+
3.`vision` hint strategy — no engine. Met by linking one through
845
841
`#cgo pkg-config`, as every other native dependency here is, with the engine
846
842
added to the required Linux library list and its language data checked at
847
843
use so a missing `tessdata` reports `CodeNotSupported` naming what is
848
844
absent. Note the strategy is wider than OCR: macOS also runs rectangle
849
845
detection and saliency, which no OCR engine answers, so
850
846
`hints.vision.detect_rectangles` and the four `rectangle_*` options are
851
-
declared macOS-only and Linux `vision` is text-only. Needs 3
852
-
5. X11 unmodified scroll — a scroll with no `--modifier` presses nothing, so the
847
+
declared macOS-only and Linux `vision` is text-only. Needs 2
848
+
4. X11 unmodified scroll — a scroll with no `--modifier` presses nothing, so the
853
849
`XTestFakeButtonEvent` still carries whatever the X server records the user as
854
850
physically holding. Binding `Ctrl+J` to a plain `scroll_down` therefore sends
855
851
ctrl+scroll for as long as ctrl is down. macOS forces the empty set onto the
856
852
event instead; a real-key backend has no per-event field to zero, so closing
857
853
this means reading the live key state through `XQueryKeymap` in the C bridge
858
-
6. KDE RemoteDesktop portal grant — does not survive a daemon restart, so the
854
+
5. KDE RemoteDesktop portal grant — does not survive a daemon restart, so the
859
855
consent prompt returns on every start
860
-
7. Grid virtual-pointer indicator — a no-op on Linux, while recursive grid
856
+
6. Grid virtual-pointer indicator — a no-op on Linux, while recursive grid
861
857
draws it on all three platforms
862
-
8.`FocusedWindowBounds` — returns not-found on KWin, so callers silently fall
858
+
7.`FocusedWindowBounds` — returns not-found on KWin, so callers silently fall
863
859
back to the active screen
864
-
9. Wayland global hotkeys — a setup requirement rather than missing code: they
860
+
8. Wayland global hotkeys — a setup requirement rather than missing code: they
865
861
need `input`-group membership and a CGO build. Failing loudly with the
866
862
remedy, and documenting it as a first-class setup step, is the work
867
-
10. Tail — the tray tooltip is a no-op (dbusmenu carries no such property), the
868
-
tray has one icon for both running and paused states where macOS has two,
869
-
and the `CGO_ENABLED=0` build should announce its boundary once at startup
870
-
rather than failing feature by feature
863
+
9. Tail — the tray tooltip is a no-op (dbusmenu carries no such property), the
864
+
tray has one icon for both running and paused states where macOS has two,
865
+
and the `CGO_ENABLED=0` build should announce its boundary once at startup
866
+
rather than failing feature by feature
871
867
872
868
The gaps above are the work; what a person writes and finds inert *today* is
873
869
[Platform Support Per Word](#platform-support-per-word), which is generated
0 commit comments