Skip to content

Desktop Implementation

The hover opaque application is, technically, an overlay — a visual layer rendered on top of existing application interfaces without altering the underlying content. Implementing that overlay so it is simultaneously unobtrusive, transparent to clicks, and yet interactive where needed is a non-trivial, OS-specific engineering problem. This page covers how it is built.

An overlay presents additional data or controls on top of an existing interface — much like digital annotations. Relevant patterns include:

  • Tooltips — quick, contextual information shown on hover.
  • Popovers — additional information or mini-actions tied to a UI element, persisting until dismissed.

The “opaque” behavior is dynamic: the application stays translucent and unobtrusive when idle, and its interactive elements become fully opaque on interaction, drawing the lawyer’s attention to the input fields that require it. This dynamic opacity keeps the tool out of the way until it is needed.

On Windows, transparent and click-through overlays are created by modifying the window’s Extended Style attributes:

  • WS_EX_LAYERED — enables a layered window whose opacity can be controlled.
  • WS_EX_TRANSPARENT — makes the window surface transparent to mouse clicks, allowing interaction to pass through to the application beneath.
  • Alpha values — set to control overall opacity.

On macOS, the equivalent overlay is built with a custom NSWindow:

  • A borderless window style.
  • isOpaque = false and backgroundColor = .clear to achieve transparency.
  • ignoresMouseEvents = true to enable click-through to underlying applications.

As on Windows, the design must carefully distinguish purely informational regions from interactive input fields, using layering and event handling to prevent unintended interaction with the underlying desktop.

ConcernApproach
TransparencyLayered/borderless windows with controlled alpha
Click-throughWS_EX_TRANSPARENT (Windows) / ignoresMouseEvents (macOS)
Selective interactivityPrecise input routing so overlay controls still receive events
Focus & clarityDynamic opacity — opaque on interaction, translucent at rest
Unintended interactionCareful layering and event handling to isolate input regions
flowchart TB
  CONCEPT["Overlay concept<br/>tooltips · popovers · dynamic opacity"]
  CONCEPT --> WIN
  CONCEPT --> MAC
  subgraph WIN["Windows — extended window styles"]
    W1["WS_EX_LAYERED"]
    W2["WS_EX_TRANSPARENT"]
    W3["Alpha values"]
  end
  subgraph MAC["macOS — custom NSWindow"]
    M1["Borderless window"]
    M2["isOpaque = false · backgroundColor = .clear"]
    M3["ignoresMouseEvents = true"]
  end
  WIN --> OVERLAY
  MAC --> OVERLAY
  OVERLAY["Transparent, click-through window<br/>+ selective interactivity via input routing"]
  OVERLAY --> RENDER["Renders CV results · data suggestions · workflow intelligence<br/>without disrupting underlying apps"]

Each OS reaches the same result through different primitives — a transparent, click-through window that stays interactive only where the overlay needs input.

The overlay is the surface on which the platform’s intelligence is presented. It renders the fields and suggestions produced by AI Computer Vision, data extraction, and workflow intelligence, and it is where the lawyer performs human-in-the-loop review and approval — all without forcing the lawyer to leave their existing applications.