feat: added neru config
This commit is contained in:
parent
23075b32ce
commit
4fe2b4cd01
352
neru/config.toml
Normal file
352
neru/config.toml
Normal file
@ -0,0 +1,352 @@
|
|||||||
|
# Neru default configuration
|
||||||
|
# Copy to ~/.config/neru/config.toml to customize.
|
||||||
|
|
||||||
|
# Full config reference: https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md
|
||||||
|
# Full CLI reference: https://github.com/y3owk1n/neru/blob/main/docs/CLI.md
|
||||||
|
|
||||||
|
# General settings
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#general-settings
|
||||||
|
[general]
|
||||||
|
excluded_apps = [] # Bundle IDs to ignore (e.g. "com.apple.Terminal")
|
||||||
|
kb_layout_to_use = "" # Force a keyboard layout InputSourceID (empty = auto)
|
||||||
|
passthrough_unbounded_keys = false # Let unbound Cmd/Ctrl/Alt shortcuts reach macOS
|
||||||
|
should_exit_after_passthrough = false # Exit the current mode after a shortcut is passed through
|
||||||
|
passthrough_unbounded_keys_blacklist = [] # Shortcuts to still consume when passthrough is on
|
||||||
|
hide_overlay_in_screen_share = false # Hide overlay from screen sharing apps
|
||||||
|
|
||||||
|
# Theme palette
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#theme-palette
|
||||||
|
[theme.light]
|
||||||
|
surface = "#FFFFFF"
|
||||||
|
accent = "#2563EB"
|
||||||
|
accent_alt = "#DC2626"
|
||||||
|
on_accent_alt = "#FFFFFF"
|
||||||
|
text = "#1E293B"
|
||||||
|
|
||||||
|
[theme.dark]
|
||||||
|
surface = "#0A0A0A"
|
||||||
|
accent = "#60A5FA"
|
||||||
|
accent_alt = "#F87171"
|
||||||
|
on_accent_alt = "#FFFFFF"
|
||||||
|
text = "#F1F5F9"
|
||||||
|
|
||||||
|
# Hotkeys
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#hotkeys
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CLI.md
|
||||||
|
[hotkeys]
|
||||||
|
"Primary+Shift+Space" = "hints"
|
||||||
|
"Primary+Shift+G" = "grid"
|
||||||
|
"Primary+Shift+C" = "recursive_grid"
|
||||||
|
"Primary+Shift+S" = "scroll"
|
||||||
|
"Primary+Shift+1" = "action move_monitor 'Built-in Retina Display'"
|
||||||
|
"Primary+Shift+2" = "action move_monitor 'Mi Monitor'"
|
||||||
|
"Primary+Shift+3" = "action move_monitor 'ZOWIE RL LCD'"
|
||||||
|
|
||||||
|
# Hint mode
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#hint-mode
|
||||||
|
[hints]
|
||||||
|
enabled = true
|
||||||
|
hint_characters = "arstneio" # Characters used for hint labels
|
||||||
|
max_depth = 50 # Max accessibility tree depth (0 = unlimited)
|
||||||
|
include_menubar_hints = false
|
||||||
|
additional_menubar_hints_targets = [
|
||||||
|
"com.apple.TextInputMenuAgent",
|
||||||
|
"com.apple.controlcenter",
|
||||||
|
"com.apple.systemuiserver",
|
||||||
|
"com.y3owk1n.neru",
|
||||||
|
]
|
||||||
|
include_dock_hints = false
|
||||||
|
include_nc_hints = false
|
||||||
|
include_stage_manager_hints = false
|
||||||
|
include_pip_hints = false
|
||||||
|
include_screen_capture_hints = false
|
||||||
|
detect_mission_control = false
|
||||||
|
clickable_roles = [
|
||||||
|
"AXButton",
|
||||||
|
"AXMenuButton",
|
||||||
|
"AXComboBox",
|
||||||
|
"AXCheckBox",
|
||||||
|
"AXRadioButton",
|
||||||
|
"AXLink",
|
||||||
|
"AXPopUpButton",
|
||||||
|
"AXTextField",
|
||||||
|
"AXSlider",
|
||||||
|
"AXTabButton",
|
||||||
|
"AXSwitch",
|
||||||
|
"AXDisclosureTriangle",
|
||||||
|
"AXTextArea",
|
||||||
|
"AXMenuItem",
|
||||||
|
"AXCell",
|
||||||
|
"AXRow",
|
||||||
|
"AXGenericElement",
|
||||||
|
]
|
||||||
|
ignore_clickable_check = false
|
||||||
|
|
||||||
|
[hints.hotkeys]
|
||||||
|
"Escape" = "idle"
|
||||||
|
"}" = "action search_hints"
|
||||||
|
"Backspace" = "action backspace"
|
||||||
|
"Tab" = "action cycle_hint"
|
||||||
|
"Shift+Tab" = "action cycle_hint --backward"
|
||||||
|
"Enter" = ["action left_click","idle"]
|
||||||
|
"Shift+R" = "action right_click"
|
||||||
|
"Shift+M" = "action middle_click"
|
||||||
|
"Shift+I" = "action mouse_down"
|
||||||
|
"Shift+U" = "action mouse_up"
|
||||||
|
"Up" = "action move_mouse_relative --dx=0 --dy=-10"
|
||||||
|
"Down" = "action move_mouse_relative --dx=0 --dy=10"
|
||||||
|
"Left" = "action move_mouse_relative --dx=-10 --dy=0"
|
||||||
|
"Right" = "action move_mouse_relative --dx=10 --dy=0"
|
||||||
|
|
||||||
|
[hints.additional_ax_support]
|
||||||
|
enable = false # Enable enhanced AX for Electron/Chromium/Firefox apps
|
||||||
|
additional_electron_bundles = []
|
||||||
|
additional_chromium_bundles = []
|
||||||
|
additional_firefox_bundles = []
|
||||||
|
|
||||||
|
[hints.ui]
|
||||||
|
font_size = 10
|
||||||
|
font_family = "" # Empty = system font
|
||||||
|
border_radius = -1 # -1 = auto pill
|
||||||
|
padding_x = -1 # -1 = auto based on font size
|
||||||
|
padding_y = -1 # -1 = auto based on font size
|
||||||
|
border_width = 1
|
||||||
|
placement = "bottom" # top, center, bottom
|
||||||
|
background_color = { light = "#E0F2FE", dark = "#083344" } # Cyan-tinted background
|
||||||
|
text_color = { light = "#0C4A6E", dark = "#67E8F9" } # High contrast text
|
||||||
|
matched_text_color = { light = "#DC2626", dark = "#F87171" }
|
||||||
|
border_color = { light = "#0284C7", dark = "#22D3EE" }
|
||||||
|
|
||||||
|
[hints.search_input_ui]
|
||||||
|
font_size = 10
|
||||||
|
font_family = "" # Empty = system font
|
||||||
|
border_radius = -1 # -1 = auto pill
|
||||||
|
padding_x = -1 # -1 = auto based on font size
|
||||||
|
padding_y = -1 # -1 = auto based on font size
|
||||||
|
border_width = 1
|
||||||
|
position = "bottom_center" # top_left, top_center, top_right, center, bottom_left, bottom_center, bottom_right
|
||||||
|
x_offset = 0 # Offset from the selected position on the active screen
|
||||||
|
y_offset = 24 # Offset from the selected position on the active screen
|
||||||
|
width = 320 # Search input width in pixels
|
||||||
|
|
||||||
|
[hints.boundary_highlight]
|
||||||
|
enabled = false # Draw a subtle outline around each target element
|
||||||
|
border_width = 1
|
||||||
|
border_radius = -1 # -1 = auto pill
|
||||||
|
|
||||||
|
# Grid mode
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#grid-mode
|
||||||
|
[grid]
|
||||||
|
enabled = true
|
||||||
|
characters = "arstgmneio" # Primary grid labels
|
||||||
|
sublayer_keys = "arstgmneio" # Subgrid labels (fallback to characters)
|
||||||
|
live_match_update = true # Highlight cells as you type
|
||||||
|
hide_unmatched = true # Hide non-matching cells
|
||||||
|
prewarm_enabled = true # Pre-compute grid on startup (~1.5MB RAM)
|
||||||
|
enable_gc = false # Periodic memory cleanup (adds CPU overhead)
|
||||||
|
|
||||||
|
[grid.hotkeys]
|
||||||
|
"Escape" = "idle"
|
||||||
|
"`" = "toggle-cursor-follow-selection"
|
||||||
|
"Space" = "action reset"
|
||||||
|
"Backspace" = "action backspace"
|
||||||
|
"Enter" = ["action left_click","idle"]
|
||||||
|
"Shift+R" = "action right_click"
|
||||||
|
"Shift+M" = "action middle_click"
|
||||||
|
"Shift+I" = "action mouse_down"
|
||||||
|
"Shift+U" = "action mouse_up"
|
||||||
|
"Up" = "action move_mouse_relative --dx=0 --dy=-10"
|
||||||
|
"Down" = "action move_mouse_relative --dx=0 --dy=10"
|
||||||
|
"Left" = "action move_mouse_relative --dx=-10 --dy=0"
|
||||||
|
"Right" = "action move_mouse_relative --dx=10 --dy=0"
|
||||||
|
|
||||||
|
[grid.ui]
|
||||||
|
font_size = 8
|
||||||
|
font_family = ""
|
||||||
|
border_width = 0
|
||||||
|
matched_background_color = { light = "#FECACA", dark = "#7F1D1D" } # Red for matched
|
||||||
|
matched_border_color = { light = "#DC2626", dark = "#F87171" }
|
||||||
|
border_color = { light = "#D1D5DB", dark = "#374151" }
|
||||||
|
|
||||||
|
# Recursive grid mode (recommended)
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#recursive-grid-mode-recommended
|
||||||
|
[recursive_grid]
|
||||||
|
enabled = true
|
||||||
|
grid_cols = 5 # Number of columns (>= 1)
|
||||||
|
grid_rows = 3 # Number of rows (>= 1)
|
||||||
|
keys = "qwfpbarstgzxcdv" # Cell selection keys (must be grid_cols * grid_rows chars)
|
||||||
|
min_size_width = 1 # Stop subdividing below this width (px)
|
||||||
|
min_size_height = 1 # Stop subdividing below this height (px)
|
||||||
|
max_depth = 4 # Maximum recursion levels (1–20)
|
||||||
|
|
||||||
|
[recursive_grid.animation]
|
||||||
|
enabled = false # Opt in to native depth transition animation on supported platforms
|
||||||
|
duration_ms = 180 # Recursive-grid animation duration in milliseconds
|
||||||
|
|
||||||
|
[recursive_grid.hotkeys]
|
||||||
|
"Escape" = "idle"
|
||||||
|
"`" = "toggle-cursor-follow-selection"
|
||||||
|
"Space" = "action reset"
|
||||||
|
"Backspace" = "action backspace"
|
||||||
|
"Return" = ["action left_click","idle"]
|
||||||
|
"Shift+R" = "action right_click"
|
||||||
|
"Shift+M" = "action middle_click"
|
||||||
|
"Shift+I" = "action mouse_down"
|
||||||
|
"Shift+U" = "action mouse_up"
|
||||||
|
"Up" = "action move_mouse_relative --dx=0 --dy=-10"
|
||||||
|
"Down" = "action move_mouse_relative --dx=0 --dy=10"
|
||||||
|
"Left" = "action move_mouse_relative --dx=-10 --dy=0"
|
||||||
|
"Right" = "action move_mouse_relative --dx=10 --dy=0"
|
||||||
|
|
||||||
|
[recursive_grid.ui]
|
||||||
|
line_width = 1
|
||||||
|
font_size = 8
|
||||||
|
font_family = ""
|
||||||
|
label_background = false # Add rounded backgrounds behind cell labels
|
||||||
|
label_background_padding_x = -1
|
||||||
|
label_background_padding_y = -1
|
||||||
|
label_background_border_radius = -1
|
||||||
|
label_background_border_width = 1
|
||||||
|
sub_key_preview = false # Draw miniature key grid inside each cell
|
||||||
|
sub_key_preview_font_size = 8
|
||||||
|
sub_key_preview_autohide_multiplier = 1.5
|
||||||
|
#highlight_color = { light = "#DC2626", dark = "#F87171" } # Bright red highlight
|
||||||
|
#line_color = { light = "#9CA3AF", dark = "#4B5563" } # Subtle grid lines
|
||||||
|
#text_color = { light = "#1E293B", dark = "#F1F5F9" }
|
||||||
|
|
||||||
|
# Virtual pointer
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#virtual-pointer
|
||||||
|
[virtual_pointer]
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
[virtual_pointer.ui]
|
||||||
|
size = 5 # Larger dot
|
||||||
|
color = { light = "#DC2626", dark = "#F87171" }
|
||||||
|
|
||||||
|
# Mouse action indicator (macOS)
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#mouse-action-indicator
|
||||||
|
[mouse_action_indicator]
|
||||||
|
enabled = false # Disabled by default
|
||||||
|
actions = ["left_click", "right_click", "middle_click", "mouse_down", "mouse_up"]
|
||||||
|
|
||||||
|
[mouse_action_indicator.ui]
|
||||||
|
size = 36
|
||||||
|
border_width = 2
|
||||||
|
shape = "circle" # circle or square
|
||||||
|
|
||||||
|
[mouse_action_indicator.animation]
|
||||||
|
duration_ms = 260
|
||||||
|
start_scale = 0.55
|
||||||
|
end_scale = 1.35
|
||||||
|
start_opacity = 0.85
|
||||||
|
end_opacity = 0.0
|
||||||
|
easing = "ease_out" # linear, ease_in, ease_out, ease_in_out
|
||||||
|
|
||||||
|
# Scroll mode
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#scroll-mode
|
||||||
|
[scroll]
|
||||||
|
scroll_step = 50 # Pixels per j/k press
|
||||||
|
scroll_step_half = 500 # Pixels for d/u (half page)
|
||||||
|
scroll_step_full = 1000000 # Pixels for gg/G (top/bottom)
|
||||||
|
|
||||||
|
[scroll.hotkeys]
|
||||||
|
"Escape" = "idle"
|
||||||
|
"k" = "action scroll_up"
|
||||||
|
"j" = "action scroll_down"
|
||||||
|
"h" = "action scroll_left"
|
||||||
|
"l" = "action scroll_right"
|
||||||
|
"gg" = "action go_top"
|
||||||
|
"Shift+G" = "action go_bottom"
|
||||||
|
"u" = "action page_up"
|
||||||
|
"PageUp" = "action page_up"
|
||||||
|
"d" = "action page_down"
|
||||||
|
"PageDown" = "action page_down"
|
||||||
|
"Shift+L" = "action left_click"
|
||||||
|
"Shift+R" = "action right_click"
|
||||||
|
"Shift+M" = "action middle_click"
|
||||||
|
"Shift+I" = "action mouse_down"
|
||||||
|
"Shift+U" = "action mouse_up"
|
||||||
|
"Up" = "action move_mouse_relative --dx=0 --dy=-10"
|
||||||
|
"Down" = "action move_mouse_relative --dx=0 --dy=10"
|
||||||
|
"Left" = "action move_mouse_relative --dx=-10 --dy=0"
|
||||||
|
"Right" = "action move_mouse_relative --dx=10 --dy=0"
|
||||||
|
|
||||||
|
# Mode indicator
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#mode-indicator
|
||||||
|
[mode_indicator]
|
||||||
|
|
||||||
|
[mode_indicator.scroll]
|
||||||
|
enabled = true
|
||||||
|
text = "Scroll"
|
||||||
|
|
||||||
|
[mode_indicator.hints]
|
||||||
|
enabled = true
|
||||||
|
text = "Hints"
|
||||||
|
background_color = { light = "#E0F2FE", dark = "#083344" }
|
||||||
|
|
||||||
|
[mode_indicator.grid]
|
||||||
|
enabled = false
|
||||||
|
text = "Grid"
|
||||||
|
|
||||||
|
[mode_indicator.recursive_grid]
|
||||||
|
enabled = false
|
||||||
|
text = "Recursive Grid"
|
||||||
|
background_color = { light = "#FEE2E2", dark = "#7F1D1D" }
|
||||||
|
|
||||||
|
[mode_indicator.ui]
|
||||||
|
font_size = 10
|
||||||
|
font_family = ""
|
||||||
|
border_width = 1
|
||||||
|
padding_x = -1
|
||||||
|
padding_y = -1
|
||||||
|
border_radius = -1
|
||||||
|
indicator_x_offset = 20
|
||||||
|
indicator_y_offset = 20
|
||||||
|
|
||||||
|
# Sticky modifiers
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#sticky-modifiers
|
||||||
|
[sticky_modifiers]
|
||||||
|
enabled = true
|
||||||
|
tap_max_duration = 300
|
||||||
|
|
||||||
|
[sticky_modifiers.ui]
|
||||||
|
font_size = 10
|
||||||
|
font_family = ""
|
||||||
|
border_width = 1
|
||||||
|
padding_x = -1
|
||||||
|
padding_y = -1
|
||||||
|
border_radius = -1
|
||||||
|
indicator_x_offset = -40
|
||||||
|
indicator_y_offset = 20
|
||||||
|
|
||||||
|
# Smooth cursor (animates cursor movement between positions)
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#smooth-cursor
|
||||||
|
[smooth_cursor]
|
||||||
|
move_mouse_enabled = false # Enable smooth mouse movement
|
||||||
|
steps = 10 # Number of intermediate positions
|
||||||
|
max_duration = 200 # Maximum animation duration in ms
|
||||||
|
duration_per_pixel = 0.1 # Ms per pixel for adaptive duration
|
||||||
|
|
||||||
|
# Smooth scroll (animates scroll actions with eased chunking)
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#smooth-scroll
|
||||||
|
[smooth_scroll]
|
||||||
|
enabled = false # Enable smooth scrolling
|
||||||
|
steps = 20 # Number of animation steps
|
||||||
|
max_duration = 180 # Maximum animation duration in ms
|
||||||
|
duration_per_pixel = 1.00 # Ms per pixel for adaptive duration
|
||||||
|
|
||||||
|
# Systray
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#systray
|
||||||
|
[systray]
|
||||||
|
enabled = true # Show menu bar icon (false = headless mode)
|
||||||
|
|
||||||
|
# Logging
|
||||||
|
# See https://github.com/y3owk1n/neru/blob/main/docs/CONFIGURATION.md#logging
|
||||||
|
[logging]
|
||||||
|
log_level = "info" # debug, info, warn, error
|
||||||
|
log_file = "" # Custom log path (empty = default location)
|
||||||
|
structured_logging = true # JSON format
|
||||||
|
disable_file_logging = true # Console only (no file)
|
||||||
|
max_file_size = 10 # MB before rotation
|
||||||
|
max_backups = 5 # Old log files to keep
|
||||||
|
max_age = 30 # Days to retain old logs
|
||||||
Loading…
x
Reference in New Issue
Block a user