// 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"
// 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"
// 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" "actions" "worktrees"
app {
"Ctrl+c" "Quit"
"1" "page:git"
"2" "page:github"
"3" "page:files"
"4" "page:docker"
"5" "page:procs"
"6" "page:actions"
"7" "page:worktrees"
}
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"
"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="50%"
place "pr_list" size="50%"
}
slot "detail" size="min:3" then="pr_detail" default="issue_detail" {
triggers "pr_list" "pr_detail"
}
}
}
tabs "issue_list" "pr_list"
bind select="issue_list" detail="issue_detail"
bind select="pr_list" detail="pr_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"
"Esc" "Esc"
}
}
pane "pr_list" {
keys {
preset "nav"
preset "search"
"i" "OpenDetail"
"Enter" "OpenDetail"
"BackTab" "SwitchTab"
"o" "OpenBrowser"
"Esc" "Esc"
}
}
pane "issue_detail" {
keys {
preset "nav"
"h" "FocusBody"
"l" "FocusRight"
"Tab" "CycleForward"
"BackTab" "CycleBackward"
"w" "ToggleWatch"
"o" "OpenItem"
"Esc" "Esc"
}
}
pane "pr_detail" {
keys {
preset "nav"
"h" "FocusBody"
"l" "FocusRight"
"Tab" "CycleForward"
"BackTab" "CycleBackward"
"w" "ToggleWatch"
"o" "OpenItem"
"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"
}
}
// 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"
"h" "Back"
"Left" "Back"
"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="horizontal" {
place "processes" size="55%"
split direction="vertical" size="min:30" {
place "ports" size="45%"
place "detail" size="min:5"
}
}
}
tabs "processes" "ports" "detail"
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"
"Esc" "Esc"
}
}
pane "ports" {
keys {
preset "nav"
preset "search"
"Enter" "JumpToProcess"
"Esc" "Esc"
}
}
pane "detail" {
keys {
preset "nav"
"h" "Back"
"Left" "Back"
"Esc" "Esc"
}
}
}
page "actions" {
layout {
split direction="horizontal" {
place "runs" size="45%"
split direction="vertical" size="min:30" {
place "jobs" size="40%"
place "log" size="min:5"
}
}
}
tabs "runs" "jobs" "log"
bind select="runs" detail="jobs"
pane "view" {
keys {
"q" "Quit"
"?" "Help"
"r" "Refresh"
"Tab" "CyclePaneForward"
"BackTab" "CyclePaneBackward"
}
}
pane "runs" {
keys {
preset "nav"
preset "search"
"i" "OpenDetail"
"Enter" "OpenDetail"
"o" "OpenBrowser"
"Esc" "Esc"
}
}
pane "jobs" {
keys {
preset "nav"
preset "search"
"i" "OpenLog"
"Enter" "OpenLog"
"o" "OpenBrowser"
"h" "Back"
"Esc" "Esc"
}
}
pane "log" {
keys {
preset "nav"
preset "search"
"]" "NextFailed"
"[" "PrevFailed"
"h" "Back"
"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"
}
}
}