// vig default configuration
// Faithfully reproduces all hardcoded defaults in git/state.rs and github/state.rs.
// Syntax highlighting theme for the diff view. `vig config themes` lists the choices.
theme "base16-eighties.dark"
// File icons in the Files view: "nerd" (requires a Nerd Font) or "none".
icons "nerd"
// Image previews in the Files view: "auto" (detect Kitty / iTerm2 / Sixel,
// fall back to unicode halfblocks), "halfblocks" (skip detection), or "none".
image-preview "auto"
// Markdown files in the Files view preview: "render" (styled) or "raw"
// (plain highlighted text). `m` toggles it per session.
markdown-preview "render"
// Automatic refreshes (GitHub page polling, Projects stale re-fetch):
// "on" or "off". Off leaves only manual `r`. Automatic refreshes also slow
// down after 10 minutes without a key press and when the GraphQL quota
// runs low, and stop under 5 % of it.
github-auto-refresh "on"
// How often the Procs view re-reads processes and listening ports
// ("2s", "500ms", ...; at least 250ms). Sampling pauses while another view is shown.
procs-refresh-interval "2s"
// How many samples the Procs history graphs keep (one per refresh interval;
// "10" to "10000"). The default 120 is 4 minutes of history at "2s".
procs-history "120"
// How often the GitHub page polls while something is active - the Workflow
// Runs column, a PR's checks in watch mode and a running job's log
// ("5s", "2s", ...; at least 2s). Polling pauses on the other pages.
github-poll-interval "5s"
// How often the Projects page asks GitHub whether the shown board changed
// (one GraphQL point per probe; the board is re-fetched only on a change).
// "30s", "5s", ...; at least 5s. Probing pauses on the other pages.
projects-poll-interval "30s"
// Pages in tab order: the position here is the slot shown in the header
// (`1:Git`, `2:GitHub`, ...). A user config's `pages` replaces this list
// wholesale; pages left out are disabled. `app` bindings address pages by name.
pages "git" "github" "files" "docker" "procs" "worktrees" "projects"
app {
"Ctrl+c" "Quit"
"1" "page:git"
"2" "page:github"
"3" "page:files"
"4" "page:docker"
"5" "page:procs"
"6" "page:worktrees"
"7" "page:projects"
}
page "git" {
layout {
split direction="vertical" {
split direction="horizontal" size="40%" {
place "file_tree" size="30"
place "branch_list" size="35%"
place "reflog" size="min:20"
}
slot "main" size="min:3" then="git_log" default="diff_view" {
triggers "branch_list" "reflog" "git_log"
}
}
}
tabs "file_tree" "branch_list" "reflog"
bind select="file_tree" detail="diff_view"
bind select="branch_list" detail="git_log"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"h" "PrevTab"
"l" "NextTab"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
"e" "OpenEditor"
}
}
pane "file_tree" {
keys {
preset "nav"
preset "search"
"Space" "ToggleDir"
"Right" "ExpandOrOpen"
"Enter" "ExpandOrOpen"
"i" "FocusDiff"
"Esc" "Esc"
}
}
pane "branch_list" {
keys {
preset "nav"
preset "search"
"Enter" "OpenActionMenu"
"i" "FocusLog"
"Esc" "Esc"
}
}
pane "git_log" {
keys {
preset "nav"
preset "search"
"y" "YankHash"
"Y" "YankUrl"
"o" "OpenGitHub"
"h" "FocusReflog"
"Esc" "Esc"
}
}
pane "reflog" {
keys {
preset "nav"
preset "search"
"Enter" "SetDiffBase"
"i" "FocusLog"
"Esc" "Esc"
}
}
pane "diff_view" {
keys {
preset "nav"
preset "search"
"h" "ScrollLeft"
"Left" "ScrollLeft"
"l" "ScrollRight"
"Right" "ScrollRight"
"i" "EnterNormalMode"
"Esc" "Esc"
}
}
}
page "github" {
layout {
split direction="vertical" {
split direction="horizontal" size="40%" {
place "issue_list" size="33%"
place "pr_list" size="34%"
place "run_list" size="33%"
}
slot "detail" size="min:3" default="issue_detail" {
when "pr_list" "pr_detail" then="pr_detail"
when "run_list" "run_detail" then="run_detail"
}
}
}
tabs "issue_list" "pr_list" "run_list"
bind select="issue_list" detail="issue_detail"
bind select="pr_list" detail="pr_detail"
bind select="run_list" detail="run_detail"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"h" "PrevTab"
"l" "NextTab"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
}
}
pane "issue_list" {
keys {
preset "nav"
preset "search"
"i" "OpenDetail"
"Enter" "OpenDetail"
"Tab" "SwitchTab"
"o" "OpenBrowser"
"y" "CopyUrl"
"Esc" "Esc"
}
}
pane "pr_list" {
keys {
preset "nav"
preset "search"
"i" "OpenDetail"
"Enter" "OpenDetail"
"BackTab" "SwitchTab"
"o" "OpenBrowser"
"y" "CopyUrl"
"Esc" "Esc"
}
}
pane "run_list" {
keys {
preset "nav"
preset "search"
"i" "OpenDetail"
"Enter" "OpenDetail"
"BackTab" "SwitchTab"
"o" "OpenBrowser"
"y" "CopyUrl"
"Esc" "Esc"
}
}
pane "issue_detail" {
keys {
preset "nav"
"h" "FocusBody"
"l" "FocusRight"
"Tab" "CycleForward"
"BackTab" "CycleBackward"
"w" "ToggleWatch"
"o" "OpenItem"
"y" "CopyUrl"
"Esc" "Esc"
}
}
pane "pr_detail" {
keys {
preset "nav"
"h" "FocusBody"
"l" "FocusRight"
"Tab" "CycleForward"
"BackTab" "CycleBackward"
"w" "ToggleWatch"
"o" "OpenItem"
"y" "CopyUrl"
"Esc" "Esc"
}
}
pane "run_detail" {
keys {
preset "nav"
preset "search"
"h" "FocusBody"
"l" "FocusRight"
"Tab" "CycleForward"
"BackTab" "CycleBackward"
"i" "OpenLog"
"Enter" "OpenLog"
"]" "NextFailed"
"[" "PrevFailed"
"o" "OpenItem"
"y" "CopyUrl"
"Esc" "Esc"
}
}
}
page "files" {
layout {
split direction="horizontal" {
place "parent_dir" size="20%"
place "dir_list" size="30%"
place "preview" size="min:20"
}
}
tabs "dir_list" "preview"
bind select="dir_list" detail="preview"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
"e" "OpenEditor"
"o" "OpenDefault"
"O" "OpenWith"
"m" "ToggleMarkdown"
}
}
// Display-only: shows the parent directory with the current one highlighted.
pane "parent_dir" {
}
pane "dir_list" {
keys {
preset "nav"
preset "search"
"l" "Enter"
"Right" "Enter"
"Enter" "Enter"
"h" "Parent"
"Left" "Parent"
"Backspace" "Parent"
"i" "FocusPreview"
"Esc" "Esc"
}
}
pane "preview" {
keys {
preset "nav"
preset "search"
"h" "ScrollLeft"
"Left" "ScrollLeft"
"l" "ScrollRight"
"Right" "ScrollRight"
"Esc" "Esc"
}
}
}
page "docker" {
layout {
split direction="horizontal" {
split direction="vertical" size="45%" {
place "containers" size="60%"
place "images" size="min:5"
}
split direction="vertical" size="min:30" {
place "detail" size="55%"
place "logs" size="min:5"
}
}
}
tabs "containers" "images" "detail" "logs"
bind select="containers" detail="detail"
bind select="images" detail="detail"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
}
}
pane "containers" {
keys {
preset "nav"
preset "search"
"i" "OpenDetail"
"Enter" "OpenDetail"
"l" "FocusLogs"
"Esc" "Esc"
}
}
pane "images" {
keys {
preset "nav"
preset "search"
"i" "OpenDetail"
"Enter" "OpenDetail"
"Esc" "Esc"
}
}
pane "detail" {
keys {
preset "nav"
"h" "Back"
"Esc" "Esc"
}
}
pane "logs" {
keys {
preset "nav"
preset "search"
"h" "Back"
"Esc" "Esc"
}
}
}
page "procs" {
layout {
split direction="vertical" {
place "graphs" size="12"
split direction="horizontal" size="min:10" {
place "processes" size="55%"
split direction="vertical" size="min:30" {
place "ports" size="45%"
place "detail" size="min:5"
}
}
}
}
tabs "processes" "ports" "detail" "graphs"
bind select="processes" detail="detail"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
}
}
pane "processes" {
keys {
preset "nav"
preset "search"
"Enter" "FocusDetail"
"i" "FocusDetail"
"l" "FocusDetail"
"s" "CycleSort"
"c" "TogglePerCore"
"Esc" "Esc"
}
}
pane "ports" {
keys {
preset "nav"
preset "search"
"Enter" "JumpToProcess"
"Esc" "Esc"
}
}
pane "detail" {
keys {
preset "nav"
"h" "Back"
"Left" "Back"
"Esc" "Esc"
}
}
pane "graphs" {
keys {
"c" "TogglePerCore"
"Esc" "Esc"
}
}
}
page "worktrees" {
layout {
split direction="horizontal" {
split direction="vertical" size="40%" {
place "worktrees" size="40%"
place "stashes" size="min:3"
}
place "preview" size="min:20"
}
}
tabs "worktrees" "stashes" "preview"
bind select="worktrees" detail="preview"
bind select="stashes" detail="preview"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
}
}
pane "worktrees" {
keys {
preset "nav"
preset "search"
"i" "FocusPreview"
"l" "FocusPreview"
"Enter" "FocusPreview"
"Esc" "Esc"
}
}
pane "stashes" {
keys {
preset "nav"
preset "search"
"i" "FocusPreview"
"l" "FocusPreview"
"Enter" "FocusPreview"
"Esc" "Esc"
}
}
// Stash patches use the side-by-side diff view: h / l scroll
// horizontally, `i` enters Normal mode (cursor, yank, visual selection).
pane "preview" {
keys {
preset "nav"
preset "search"
"h" "ScrollLeft"
"Left" "ScrollLeft"
"l" "ScrollRight"
"Right" "ScrollRight"
"]" "NextFile"
"[" "PrevFile"
"i" "EnterNormalMode"
"Backspace" "Back"
"Esc" "Esc"
}
}
}
// The board of the projects linked to the current repository takes the
// full width; `p` / `P` switch between several linked projects. The
// `projects` list pane is defined but not placed (inactive). To get the
// list back, place it in your own layout (its `bind` below then applies):
//
// page "projects" {
// layout {
// split direction="horizontal" {
// place "projects" size="22%"
// split direction="vertical" size="min:30" {
// place "board" size="60%"
// place "detail" size="min:5"
// }
// }
// }
// tabs "projects" "board" "detail"
// }
page "projects" {
layout {
split direction="vertical" {
place "board" size="60%"
place "detail" size="min:5"
}
}
tabs "board" "detail"
bind select="projects" detail="board"
bind select="board" detail="detail"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"p" "NextProject"
"P" "PrevProject"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
}
}
// Optional list of the linked projects (not placed by default).
pane "projects" {
keys {
preset "nav"
preset "search"
"Enter" "OpenBoard"
"i" "OpenBoard"
"l" "OpenBoard"
"o" "OpenBrowser"
"y" "CopyUrl"
"Esc" "Esc"
}
}
// Board mode: h / l move between columns, j / k within one. Table mode
// (`t`): j / k walk the rows, h / l and `s` pick the sort column.
pane "board" {
keys {
preset "nav"
preset "search"
"h" "PrevColumn"
"Left" "PrevColumn"
"l" "NextColumn"
"Right" "NextColumn"
"t" "ToggleTable"
"s" "CycleSort"
"v" "NextView"
"V" "PrevView"
"Space" "ToggleLane"
"+" "ZoomIn"
"-" "ZoomOut"
"Enter" "OpenDetail"
"i" "OpenDetail"
"o" "OpenBrowser"
"y" "CopyUrl"
"Esc" "Esc"
}
}
pane "detail" {
keys {
preset "nav"
"h" "Back"
"Left" "Back"
"o" "OpenBrowser"
"Esc" "Esc"
}
}
}