Documentation
Introduction ⋅ Config file structure ⋅ Models ⋅ Key Bindings ⋅ User Commands ⋅ Appearance
Introduction
For scripting functions and plugin development, see the API Reference.
Peeknext is configured using a single human-readable configuration file.
The configuration format is designed to be simple to edit, version control, and share. Most settings can be changed without restarting the editor unless otherwise noted.
Open the configuration file at any time with ⌘command , or Open config file from the Command Palette.
A copy of the latest default configuration is always available from the peeknext/peeknext repo.
Config file structure
The config file is divided into sections:
-- Peeknext configuration
--
-- Settings in this file override built-in defaults.
-- Remove or comment a setting to use the current default.
--
-- Documentation:
-- https://peeknext.com/docs/
--
-- Default configuration:
-- https://github.com/peeknext/peeknext/blob/main/.hackerman
--
-- Default scripts:
-- https://github.com/peeknext/peeknext/blob/main/.hackerman-scripts
--
-- EULA:
-- https://peeknext.com/end-user-license-agreement/
--
-- Privacy:
-- https://peeknext.com/privacy-policy/
[license]
-- Peeknext is free for non-commercial use.
-- For commercial use, purchase a license at:
-- https://peeknext.com/
path_to_license_file -- path to license file, /path/to/license.json
[editor]
-- Use any installed font or add fonts to ~/Library/Application Support/Peeknext/fonts
-- See built-in themes: https://peeknext.com/docs/#appearance
font SF Mono
font_size 14
...
[models]
code_completion qwen2.5-coder:1.5b
inline_chat glm-5.3-flash:cloud
[keybinds]
-- Important: Use Comma, Period, Plus, Minus for symbols , . + -
new_file Cmd + N
new_window Cmd + Shift + N
open_file Cmd + O
save_file Cmd + S
...
[user]
-- Add custom functions here and assign key bindings.
-- API documentation:
-- https://peeknext.com/api/
word_count Cmd + J
...
Sections can be removed or commented out if not needed.
Themes are defined like this:
[koi-dark]
background #1f272a
foreground #f7f7f4
text_color #ffffff
...
[dracula]
background #282A36
foreground #6272A4
text_color #F8F8F2
...
See Appearance for more about themes.
License
[license]
-- Peeknext is free for non-commercial use.
-- For commercial use, purchase a license at:
-- https://peeknext.com/
path_to_license_file -- path to license file, /path/to/license.json
Use the absolute path to your Peeknext license file, for example: /Users/michael/license.json
Editor
[editor]
-- Use any installed font or add fonts to ~/Library/Application Support/Peeknext/fonts
-- See built-in themes: https://peeknext.com/docs/#appearance
font SF Mono
font_weight -- light, normal, medium, bold
font_size 14
line_extra_height 2
tab_width 4
theme adaptive
adaptive_theme koi, koi-dark
auto_indent true
auto_complete true
file_explorer_root -- absolute path; defaults to Desktop
file_types_to_exclude .dmg, .app, .git, .ttf, .dylib, .so, .venv, .pyc, .zip, .egg, .DS_Store, dist, build
files_to_open_on_startup -- comma-separated absolute paths
inline_command_in_files txt, md, org
inline_shell_symbol %
inline_chat_symbol >
bookmark_prefix !>
annotation_words TODO, NOTE, MARK, FIXME
scripts_enabled false
allow_unsafe_scripts false -- allow imports
click_on_links false -- if false, use an inline command to activate
-- These bindings are additive and do not override existing bindings.
accept_auto_completion -- tab, newline, move_caret_line_end; default: newline
accept_code_completion -- tab, newline, move_caret_line_end; default: tab
Editor settings control fonts, spacing, themes, indentation, completion, startup files, inline commands, scripting, navigation, and completion behavior.
Use any installed font or place a font in Application Support/Peeknext/fonts. Display width of a tab is measured in spaces.
Set theme to adaptive to change theme based on the system appearance.
Themes to use as adaptive is set by adaptive_theme, for example: koi, koi-dark.
User interface
-- UI
show_line_numbers true
show_scrollbar true
show_minimap false
show_indent_guides true
show_annotations true
show_ui_borders false
show_splitter_handle false
Show or hide individual elements of the editor interface.
Cursor
-- Cursor
cursor_width 2
cursor_extra_height 8
cursor_as_block false
cursor_line_highlight true
cursor_blink false
cursor_blink_period 530 -- milliseconds; default: 530
cursor_trail_effect false
Configure the cursor size, shape, line highlighting, blinking, and trail effect.
Status bar
-- Status bar
show_line_info true
show_file_explorer_root true
show_file_with_path false
show_model_info true
show_active_lexer true
Choose which file, editor, and model information is displayed in the status bar.
Miscellaneous
-- Miscellaneous
ui_font SF Mono
ui_font_weight -- default: normal
ui_font_size -- default: 12pt
scrollbar_width 4
minimap_width 64
open_on_largest_screen true
eol_mode lf -- crlf, cr, lf
eol_symbols_visible false
terminal_to_use -- Ghostty, Warp; default: Terminal
window_opacity 1
selection_opacity 0.2
indent_guides_opacity 0.1
whitespace_opacity 0.1
whitespace_symbol ▪
vertical_rulers -- comma-separated list of columns
Additional settings for interface typography, scrolling, line endings, terminals, opacity, whitespace, and rulers.
Editing
| Setting | Description |
|---|---|
auto_indent |
Automatically indent new lines. |
auto_complete |
Enable context-aware auto completion. |
tabs_over_spaces |
Prefer tabs instead of spaces for indentation. |
font_ligatures |
Enable font ligatures. Requires restart. |
Auto completion uses the contents of the current document as context. It suggests words, names, and symbols that already appear in the open file. Project-wide completion is currently not supported.
Completion
Auto completion and AI code completion can be accepted independently using editor commands.
| Setting | Description |
|---|---|
accept_auto_completion |
Editor command that accepts the current auto-completion suggestion. Default: newline. |
accept_code_completion |
Editor command that accepts the current AI code-completion suggestion. Default: tab. |
These settings are additive: the selected editor command keeps its normal behavior when there is no completion to accept.
accept_auto_completion newline
accept_code_completion tab
With this configuration, Return accepts an active auto-completion suggestion before inserting a newline, while Tab accepts an active code-completion suggestion before inserting indentation.
Files
| Setting | Description |
|---|---|
file_explorer_root |
Absolute path to the folder used as the file explorer root on startup. Defaults to the Desktop. |
file_types_to_exclude |
Comma-separated files, extensions, and directories excluded from the file explorer and file index. |
files_to_open_on_startup |
Comma-separated list of absolute paths to files opened when Peeknext launches. |
path_to_scripts_file |
Path to an external scripts file. Requires restart. |
Example
file_types_to_exclude .dmg, .app, .git, .ttf, .dylib, .so, .venv, .pyc, .zip, .egg, .DS_Store, dist, build
Peeknext does not use project files or project-specific configuration. Any folder can be selected as the file explorer root, allowing it to act as the working scope for a repository, project, collection of notes, or any other directory.
The file explorer can also be used as a general-purpose file browser. Resetting the root with Reset file explorer command returns it to the default location.
Inline Commands
| Setting | Description |
|---|---|
inline_command_in_files |
File types supporting inline commands. |
inline_shell_symbol |
Prefix used to identify inline shell commands. Default: %. |
inline_chat_symbol |
Prefix used to identify inline chat prompts. Default: >. |
scripts_enabled |
Enable scripting support. |
allow_unsafe_scripts |
Allow imports and other unsafe script functionality. This is currently disabled. |
click_on_links |
Open links directly when enabled. When disabled, links can be activated through Inline command. |
Example
inline_command_in_files txt, md, org,
inline_shell_symbol %
inline_chat_symbol >
scripts_enabled false
allow_unsafe_scripts false
click_on_links false
Inline command allow shell commands, expressions, and AI chat to be executed directly from a document.
Shell commands
A shell command begins with the configured inline_shell_symbol:
% pwd
Run the command with Inline command.
Inline shell commands have a hard execution timeout of 10 seconds. They are intended for short, one-off commands and scripts rather than interactive programs, long-running processes, or REPL sessions.
Python expressions
Python expressions can also be evaluated inline:
print("hello there")
For example, to print the current date without importing additional modules:
print(__import__("datetime").date.today())
Evaluate the expression with Inline command.
Inline chat
Inline chat prompts use the configured inline_chat_symbol.
With the default configuration:
> Explain why this function may be slow.
Place the cursor on the prompt line and submit with Inline command.
The configured inline chat model uses the current file as context and writes the response directly into the document.
Configure the model in [models]:
[models]
inline_chat gpt-oss:120b-cloud
User Interface
| Setting | Description |
|---|---|
show_line_numbers |
Show line numbers. |
show_scrollbar |
Show the editor scrollbar. |
show_minimap |
Show the minimap. |
show_indent_guides |
Show indentation guides. |
show_annotations |
Show editor annotations. |
show_ui_borders |
Draw borders around editor UI components. |
show_splitter_handle |
Show the handle between split editor panes. |
Cursor
| Setting | Description |
|---|---|
cursor_width |
Caret width in pixels. |
cursor_extra_height |
Additional cursor height. |
cursor_as_block |
Display the caret as a block cursor. |
cursor_line_highlight |
Highlight the current line. |
cursor_blink |
Enable cursor blinking. |
cursor_blink_period |
Cursor blink interval in milliseconds. Default: 530. |
cursor_trail_effect |
Show a short animated trail when the cursor moves. |
Example
cursor_width 2
cursor_extra_height 8
cursor_as_block false
cursor_line_highlight true
cursor_blink false
cursor_blink_period 530
cursor_trail_effect false
Status Bar
| Setting | Description |
|---|---|
show_line_info |
Display the current line and column. |
show_word_count |
Display document word and character count. This is automatically disabled on larger files. This is currently disabled. |
show_file_explorer_root |
Display the current file explorer root. |
show_file_with_path |
Display the full path of the active file. |
show_model_info |
Display the active AI models. |
show_active_lexer |
Display the active syntax lexer. |
Fonts
| Setting | Description |
|---|---|
ui_font |
Font used by the editor UI. |
ui_font_weight |
UI font weight. Leave empty for the default. |
ui_font_size |
UI font size. Leave empty for the default. |
Layout
| Setting | Description |
|---|---|
scrollbar_width |
Scrollbar width. |
minimap_width |
Minimap width. |
open_on_largest_screen |
Open Peeknext on the largest connected display. |
Line Endings
| Setting | Description |
|---|---|
eol_mode |
Default EOL mode: lf, crlf, or cr. |
eol_symbols_visible |
Show end-of-line symbols. |
Example
eol_mode lf
eol_symbols_visible false
The EOL mode can also be changed for the current buffer from the Command Palette. Peeknext provides commands for changing the active EOL mode and for converting all existing line endings in a document.
Terminal
| Setting | Description |
|---|---|
terminal_to_use |
Preferred terminal application. Leave empty to use Apple Terminal. |
Visual Opacity
| Setting | Description |
|---|---|
window_opacity |
Window opacity. |
selection_opacity |
Selection background opacity. |
indent_guides_opacity |
Indentation guide opacity. |
whitespace_opacity |
Whitespace marker opacity. |
Example
window_opacity 1
selection_opacity 0.2
indent_guides_opacity 0.1
whitespace_opacity 0.1
Symbols and rulers
| Setting | Description |
|---|---|
whitespace_symbol |
Character used for visible whitespace. |
bookmark_prefix |
Prefix used to identify bookmarks. Default: !>. This is currently disabled. |
annotation_words |
Comma-separated words recognized as annotations by the navigator panel. |
vertical_rulers |
Comma-separated list of columns at which to draw vertical rulers. |
Example
whitespace_symbol ▪
-- bookmark_prefix !>
annotation_words TODO, NOTE, MARK, FIXME
vertical_rulers 80, 120
Experimental
Several settings are available but are experimental, unused, or retained for development:
-- always_show_completion_list true
-- wrap_word txt, md,
-- use_native_title_bar false
-- dim_non_active_editors false
-- fixed_line_number_width false
-- path_to_shell /bin/zsh
Models
Peeknext supports AI models through Ollama.
Example
[models]
code_completion qwen2.5-coder:1.5b
inline_chat gpt-oss:120b-cloud
- The
code_completionsetting is used for inline code suggestions and works best with fill-in-the-middle (FIM) models. - The
inline_chatsetting is used by the inline chat command.
Both settings are optional. Peeknext can be used without configuring AI models.
Key Bindings
Keyboard shortcuts are configured in the [keybinds] section.
Example
save_file Cmd + S
find_in_file Cmd + F
duplicate_line Cmd + Shift + D
Multiple bindings can be assigned to the same command by separating them with commas:
undo Cmd + Z, Control + /
Multiple bindings are additive and can be customized independently. Use the names Comma, Period, Plus, and Minus when binding those punctuation keys.
open_config_file Cmd + Comma
document_start Option + Comma
document_end Option + Period
Unassigned commands can simply be left blank. Peeknext includes commands for file management, navigation, selection, multi-cursor editing, indentation, line endings, search, diffing, editor layout, and other operations.
All active key bindings are listed in the Command Palette.
Common navigation commands include:
show_file_explorer Cmd + P
show_outline_panel Cmd + I
show_buffer_explorer Cmd + B, Cmd + Shift + \
show_command_palette Cmd + Shift + P
go_to_line Cmd + G
open_terminal Cmd + T
Indentation
Indentation can be controlled independently for each buffer using commands including:
detect_tab_width
tab_width_2_spaces
tab_width_4_spaces
tab_width_8_spaces
indent_with_spaces
indent_with_tabs
replace_tabs_with_spaces
The detect_tab_width command examines the current document and automatically determines the likely indentation width and whether the file primarily uses tabs or spaces.
This makes it possible to open files with different indentation conventions without changing the global tab_width setting.
Line endings
Peeknext provides commands for inspecting and changing line endings:
toggle_eol_symbols
replace_all_eol
eol_mode_lf
eol_mode_crlf
eol_mode_cr
- The
eol_mode_*commands change the EOL mode for the current buffer. - The
replace_all_eolcommand converts existing line endings in the current document to the active EOL mode.
Multi-cursor and selection
Peeknext includes commands for creating and manipulating multiple selections:
select_next_match
unselect_last_match
select_matches
line_add_caret_up
line_add_caret_down
add_cursors_to_line_starts
For example, the default bindings are
select_next_match Cmd + E
unselect_last_match Cmd + Shift + E
select_matches Cmd + Option + F
line_add_caret_up Control + Shift + Up
line_add_caret_down Control + Shift + Down
Buffer navigation
Buffers can be selected directly with:
switch_to_buffer_1 Cmd + 1
switch_to_buffer_2 Cmd + 2
...
switch_to_buffer_9 Cmd + 9
The extend_to_buffer_* commands are available for extending the active tab selection.
Previous and next buffers can be selected with:
previous_tab Cmd + ;, Option + Cmd + Left
next_tab Cmd + ', Option + Cmd + Right
previous_tab_extend Cmd + Shift + ;, Option + Shift + Cmd + Left
next_tab_extend Cmd + Shift + ', Option + Shift + Cmd + Right
Pane navigation commands are available separately:
focus_main_editor
focus_split_editor
They do not have default key bindings.
User Commands
The [user] section is reserved for your own editor commands.
Example
[user]
word_count
insert_uuid
insert_link
insert_unchecked_box
fenced_block
make_bold
Custom functions can then be assigned keyboard shortcuts like built-in commands.
User commands also appear in the Command Palette.
For scripting functions and plugin development, see the API Reference.
Appearance
Built-in themes are:
- koi
- koi-dark
- koi-mono
- hackerman
- focus
- writer
- github-dark
- kujukuju
- ayu-dark
- chatgpt
- dracula
- gruvbox
- jblow
- mono-light
- tokyo-night
- catppuccin
- nord
- monokai
Themes are named sections in the configuration file.
Example theme: Koi Dark
[koi-dark]
background #1f272a
foreground #f7f7f4
text_color #ffffff
cursor #C6E5FF
default #f7f7f4
keyword #E67D74
class #D0C5A9
name #D0C5A9
function #D0C5A9
string #D4BC7D
number #D699B5
operator #E0AD82
comment #87919D
special #C6E5FF
type #C6E5FF
constant #D699B5
builtin #E0AD82
_highlight #D4BC7D
_link #C6E5FF, #C6E5FF
A theme is a mapping of colors to lexer styles. Peeknext lexers support the same set of styles.
Editor styling
The editor window is styled from these four base styles.
| Style | Description |
|---|---|
background |
Editor background. |
foreground |
UI foreground color. |
text_color |
Highlighted or selected text items in UI. |
cursor |
Caret color. |
All other system colors are derived from these, such as dialog backgrounds, editor selections, active states.
Syntax colors
| Style | Description |
|---|---|
default |
Default text. |
keyword |
Language keywords. |
class |
Class names. |
name |
Function names. |
function |
Function definitions. |
string |
String literals. |
number |
Numbers. |
operator |
Operators. |
comment |
Comments. |
special |
Language-specific symbols. |
type |
Types. |
constant |
Constants. |
builtin |
Built-in functions. |
Optional styles
These styles fall back to sensible defaults if omitted.
| Style | Description |
|---|---|
_selection |
Selection color. |
_highlight |
Search highlights. |
_link |
Links in Markdown and Org. Falls back to special. |
_bold |
Bold rich-text syntax. Falls back to builtin. |
_italic |
Italic rich-text syntax. Falls back to name. |
_underline |
Underlined rich-text syntax. Falls back to default. |
_verbatim |
Verbatim rich-text syntax. Falls back to name. |
_code |
Inline code in Markdown and Org. Falls back to comment. |
_annotation |
Editor annotations. Falls back to comment. |
_error |
Deleted diff lines. |
_warning |
Warnings, status bar state labels, and modified diff lines. |
_success |
Added diff lines. |
Style background and formats
Set the style background with another hex color.
_link #0081FF, #0081FF
The background will automatically add opacity so the text and background can use the same color.
Set the style format:
keyword #FF79C6, bold
Or background and format:
keyword #FF79C6, #282A36, italic
Currently supported formats are bold and italic.
API Reference
Default config-file