Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

Config file at ~/.config/qhints/config.json (or $XDG_CONFIG_HOME/qhints/config.json).

All fields are optional. If a field is missing, the Rust default is used.

Quick example

{
  "backends": ["imageproc"],
  "first_key_zones": [
    ["q","w","e","r","t","y","u","i","o","p"],
    ["a","s","d","f","g","h","n","m","l"]
  ],
  "hints": {
    "hint_opacity": 0.85,
    "hint_font_size": 12
  },
  "dev": {
    "spotlight": true
  }
}

General settings

FieldTypeDefaultDescription
exit_keyinteger65307 (Escape)Keycode to dismiss the overlay
hover_modifierinteger4 (Ctrl)Modifier held on last key for hover
double_click_keyinteger65513 (Alt_L)Toggle double-click mode
text_select_keyinteger47 (/)Toggle text selection mode
drag_keyinteger65505 (Shift_L)Toggle drag mode
advanced_modifierinteger0Alternative key for advanced mode (0 = disabled, uses per-mode defaults)
overlay_x_offsetinteger0Horizontal offset for overlay position
overlay_y_offsetinteger0Vertical offset for overlay position
backendsarray of strings["imageproc"]Scanning backends in priority order
huntbooleanfalseRe-scan after every action
center_zone_paddingfloat or object0.2Fraction of screen excluded from center zone (uniform or {top,right,bottom,left})

Hint labels (first_key_zones)

Controls which keys occupy which screen zones. A ragged-row grid where each cell holds the first-character keys for that zone. Example:

[
  ["q","w","e","r","t","y","u","i","o","p"],
  ["a","s","d","f","g","h","j","k","l"],
  ["z","x","c","v","b","n","m"]
]

Rows are equal-height bands. Columns within a row are equal-width. Short rows’ last cell spans to fill the remaining width.

Characters (complementary_keys_alphabet)

{ "complementary_keys_alphabet": "qwertyuiopasdfghjklzxcvbnm" }

Characters used for the 2nd (and 3rd) characters in multi-char hint labels. All first-key zone characters must appear in this alphabet.

Hint appearance

All color fields support separate _r _g _b _a values (0.0–1.0) or hex strings:

{ "hints": { "hint_font": "#2a2a2a" } }

Hex formats: #RGB, #RGBA, #RRGGBB, #RRGGBBAA.

Label box

FieldDefaultDescription
hint_height20.0Label height in pixels
hint_width_padding10.0Horizontal padding inside label
hint_corner_radius6.0Rounded corner radius
hint_border_width1.0Border line width
hint_opacity1.0Global alpha multiplier for all visuals
hint_upercasetrueDisplay labels in uppercase

Background

FieldDefaultDescription
hint_background_r1.0Background red
hint_background_g0.95Background green
hint_background_b0.55Background blue
hint_background_a0.95Background alpha

Border

FieldDefaultDescription
hint_border_r0.78Border red
hint_border_g0.72Border green
hint_border_b0.36Border blue
hint_border_a1.0Border alpha

Text

FieldDefaultDescription
hint_font_size14.0Font size
hint_font_face"monospace"Font family
hint_font_r0.16Character color red
hint_font_g0.16Character color green
hint_font_b0.16Character color blue
hint_font_a1.0Character alpha

First character

FieldDefaultDescription
hint_first_font_r0.85First-char color red
hint_first_font_g0.1First-char color green
hint_first_font_b0.1First-char color blue
hint_first_font_a1.0First-char alpha
hint_first_font_size_boost0.0Extra font size for first char

Pressed (typed) state

FieldDefaultDescription
hint_pressed_font_r0.45Typed-char color red
hint_pressed_font_g0.75Typed-char color green
hint_pressed_font_b0.25Typed-char color blue
hint_pressed_font_a1.0Typed-char alpha

Shadow

FieldDefaultDescription
hint_shadowtrueEnable drop shadow
hint_shadow_r0.0Shadow color red
hint_shadow_g0.0Shadow color green
hint_shadow_b0.0Shadow color blue
hint_shadow_a0.3Shadow opacity
hint_shadow_offset_x1.0Shadow x offset
hint_shadow_offset_y1.0Shadow y offset

Text selection mode settings

FieldDefaultDescription
text_select_border_r0.0Border red in text selection mode
text_select_border_g0.6Border green
text_select_border_b1.0Border blue
text_select_border_a1.0Border alpha
text_select_padding_left0.0Left selection offset (fraction of element width)
text_select_padding_right0.0Right selection offset
text_select_advanced_key0Per-mode key to toggle advanced mode
text_select_nudge_step_x0.03Arrow nudge step X (fraction of element)
text_select_nudge_step_y0.03Arrow nudge step Y
text_select_nudge_step_shift_x0.15Shift+arrow nudge step X
text_select_nudge_step_shift_y0.15Shift+arrow nudge step Y
text_select_pulse_period_ms1200Marker pulse animation period
marker_pulse_interval_ms83Pulse redraw rate (~60 fps)
marker_bright_duration_ticks10Bright flash duration on marker placement
text_selection_show_boxestrueShow blue bounding boxes around all children

Drag mode settings

FieldDefaultDescription
drag_advanced_key0Per-mode key to toggle advanced drag
drag_delay_ms50Delay before mousedown/mouseup
drag_fullscreen_defaulttrueAuto-trigger fullscreen re-scan after source pick
drag_marker_shape"circle"Marker shape ("circle" or "square")
drag_marker_size4.0Marker radius/half-size
drag_show_boxestrueShow green bounding boxes around all children

Advanced mode

FieldDefaultDescription
advanced_border_extra_width0.25Extra border width in advanced mode

Overlap culling

FieldDefaultDescription
hint_overlap_threshold60.00 = show all, 100 = very aggressive culling

Dev options

{
  "dev": {
    "show_grid": false,
    "hunt": false,
    "hunt_timeout_ms": 300,
    "spotlight": false,
    "spotlight_opacity": 0.65,
    "spotlight_radius": 2.5,
    "advanced_spotlight_opacity": 0.4,
    "drag_spotlight_opacity": 0.4,
    "show_text_boxes": false,
    "show_bfs_boxes": false,
    "save_debug_images": false
  }
}
FieldDefaultDescription
show_gridfalseDraw zone grid boundaries
huntfalseRe-scan after every action
hunt_timeout_ms300Delay before re-scan
spotlightfalseDark overlay with holes around matching hints
spotlight_opacity0.65Darkness of spotlight overlay
spotlight_radius2.5Multiplier for spotlight hole radius
advanced_spotlight_opacity0.4Spotlight darkness in advanced selection mode
drag_spotlight_opacity0.4Spotlight darkness in drag mode
show_text_boxesfalseBlue bounding boxes around text words
show_bfs_boxesfalseRed bounding boxes around BFS components
save_debug_imagesfalseSave intermediate debug PNGs to /tmp/qhints_debug/

Application rules

Per-application overrides keyed by the application’s WM_CLASS name.

{
  "application_rules": {
    "firefox": {
      "canny_min_val": 20,
      "canny_max_val": 50,
      "kernel_size": 3
    },
    "default": {
      "canny_min_val": 15,
      "canny_max_val": 40,
      "kernel_size": 3
    }
  }
}
FieldDefaultDescription
scale_factor1.0HiDPI coordinate scale
detection_scale1.0Screenshot upscale before CV (1–4)
states[24, 25, 30]AT-SPI state filter (Sensitive, Showing, Visible)
states_match_type1 (ALL)Match type: 1=all, 3=none
rolesexcluded rolesAT-SPI role filter
roles_match_type3 (NONE)Match type: 1=all, 3=none
canny_min_val15Canny low threshold
canny_max_val40Canny high threshold
kernel_size3Dilation kernel
center_zone_padding0.2Per-rule center zone padding