This document lists and describes all the user interface panels, tabs, views, overlay pickers, inputs, and modal dialogs implemented in Gitwig, along with their available keyboard shortcuts.
The primary dashboard shown when Gitwig starts up.
repos │ dirty │ ahead │ stale. Click a tab, or press Tab / Shift+Tab, to filter the repository list to that section; the active tab is drawn as a highlighted block and Esc clears the filter. When a label filter is active, a ● label ▶ chip sits at the left of the tab strip (click it to reopen the label picker) and the tab counts scope to that label. If the active filters leave nothing to show, the tab strip stays visible above a message explaining which filter is empty and how to leave it.↑ / k / up : Move selection up↓ / j / down : Move selection downPgUp / pageup : Jump one page upPgDn / pagedown : Jump one page downHome / home : Go to top of listEnd / end : Go to bottom of listEnter / → / right : Open repository details (in Tile view → moves the selection right instead of opening the repository)Space : Toggle selection for batch actionsp : Toggle pin status of selected item* : Toggle Starred / Favorite status of selected itemy : Yank absolute path to clipboard/ : Open fuzzy Jump-to-Repo pickerf : Enter repository list search query input modeTab / Shift+Tab : Cycle summary-bar filter (repos → dirty → ahead → stale) forward / backwardL : Open label picker to filter the list to one label (“project view”; sticky until deselected)ctrl-f : Open global code search across all repositoriesR : Refresh status of selected item manuallyF : Bulk fetch all repositories concurrentlyE : Show why the selected repository’s last fetch failedo : Cycle sorting criteria (Name, Path, Last Commit, Status)O : Toggle reverse sortingv : Cycle repository list layout (Normal/Compact/Tile)a : Add a repository via the directory-scanner pickerA : Bulk add subdirectories of a directoryi : Import / clone a remote repositorye : Edit selected repository entryD : Delete selected repository entryl : Edit custom labels of selected itemt : Open the embedded terminal panel in repository pathT : Open a full-screen external shell in repository pathg : Launch preferred external Git GUI clientd : Open debug logs panelV : Open about dialogh : Show signs & symbols legend popupu : Check for updates manuallys : Open settings view? : Toggle help overlayctrl-q : Quit GitwigShow Grouping is enabled. Groups repositories into Recent, Starred, and custom Labels.
← / → : Collapse / expand the selected group (when on a group header row; there is no sidebar focus toggle)Space / Enter : Toggle collapse / expand of label groups (when on a group header row)L): Floating fuzzy picker listing every label with its repository count, plus an “All repositories” row. Selecting a label filters the home list to it — a sticky “project view” that survives Esc and app restarts until deselected (re-select the active label or choose “All repositories”). The active label is marked with ● in the picker, pinned as a ● label ▶ chip at the left of the summary tab strip (clickable to reopen the picker), and shown as a Label: chip in the status bar; the summary tabs’ counts scope to the selected label. Press → on a highlighted label to open its Label Settings popup (see below), where settings shared by every repository carrying that label are edited. If the active label has a theme set in its Label Settings, the home repo-list view is tinted with that theme while the filter is active.t on Home, ctrl+t anywhere): An IDE-style integrated terminal docked above the status bar, available from both the Home list and the Detail view. It runs your $SHELL in a PTY, starting in the selected repository’s directory, and every other view shrinks to make room while it is open.
ctrl+t) leaves the shell and anything running in it alive; reopening shows it exactly where you left off. The session ends when the shell exits (a placeholder then invites any key to close) or when Gitwig quits.ctrl+t (hide), ctrl+q (quit Gitwig), and Shift+PgUp/Shift+PgDn (scrollback, 1000 lines kept; the title shows [+N] while scrolled back). Clicking the panel focuses it; clicking anywhere else unfocuses it while keeping it visible; the mouse wheel scrolls history.GITWIG=1 and GITWIG_SHELL=1 are set in the shell, and TERM is xterm-256color.Triggered by opening a repository.
Esc / q / Q : Close details / Return to Home Screen? : Toggle detail view shortcut help overlayw : Cycle focus forward through panelsW : Cycle focus backward through panels+ / - : Grow (+) or shrink (-) the focused panel by moving its layout split (same splits the mouse can drag)Tab : Cycle tab forwardShift+Tab / backtab : Cycle tab backwardR : Resync active tab details manually1 - 7 : Jump directly to Tabs 1-7 (or 1 - 5 for the five advanced tabs when the Advanced group is active)Z : Toggle Advanced Tab group (Worktrees, Submodules, Reflog, Issues, PRs)O : Show repository Overview overlay↑ / k / K : Move selection up↓ / j / J : Move selection downPgUp / PgDn : Scroll commit listHome / End : Jump to top / bottom of listEnter / → : Inspect selected commit (enters Commit Inspection Layout)t / T : Create tag at selected commitb / B : Create new branch at selected commity / Y : Yank selected commit hasho / O : Checkout selected commit (detached HEAD)v / V : Revert selected commitp / P : Cherry-pick selected commiti / I : Run interactive rebase from selected commits / S : Open stashing UI panelc : Open Commit message dialogC : Open Commit message dialog with Amend/ : Fuzzy search commits listf : Open search column picker popupl / L : Open full-screen Logs viewG : Load more commits↑ / k / K : Move selection up↓ / j / J : Move selection downPgUp / PgDn : Scroll file listHome / End : Jump to top / bottom of file tree> / → / Enter : Expand / toggle selected folder in tree< / , : Collapse selected folder in tree← : Collapse all folders in treeb / B : Toggle git blame paneln / N : Toggle line numbers in content viewere / o : Open selected file in default terminal editorH : View commit history of the selected file/ : Launch fuzzy file search picker↑ / k / K : Scroll content up↓ / j / J : Scroll content downPgUp / PgDown : Scroll content page up / downHome / End : Scroll to top / bottom of content→ : Enter full-screen view mode← : Exit full-screen view mode↑ / k / K : Move selection up↓ / j / J : Move selection downPgUp / PgDn : Scroll graph pageHome / End : Jump to top / bottomEnter / → : Inspect selected commit (enters Commit Inspection Layout)y / Y : Yank selected commit hash← / → : Switch focus between Local and Remote branches lists↑ / k / K : Move selection up↓ / j / J : Move selection downPgUp / PgDn / Home / End : Navigate branch listsEnter : Checkout selected branchc / C : Create new branchD : Delete selected branchm : Merge selected branch into current branchM : Checkout selected local branch and merge the (previously) current branch into itr : Rebase current branch onto selected branchi / I : Interactive rebase of current branch onto selected branchp : Pull remote changes (for local branches)P : Push selected branch to remote (for local branches; supports y Push, t Push + Tags --tags)f / F : Fetch remotea / A : Add a new remote/ : Fuzzy search branches↑ / k / K / ↓ / j / J : Move selectionPgUp / PgDn / Home / End : Navigate tag listEnter : Checkout selected tagD : Delete selected tagp : Push selected tag to remote (supports y Push, f Force Push --force)P : Push all tags to remotef / F : Fetch remote tags/ : Fuzzy search tagst / T from the Workspace tab’s commits list (annotated -m or lightweight; Tab toggles input fields; prompts to force update -f if existing) — there is no create-tag key on this tab.↑ / k / K / ↓ / j / J : Move selectionPgUp / PgDn / Home / End : Navigate remote lista / A : Add a new remoteD : Delete selected remotef / F : Fetch selected remote (opens picker if multiple remotes exist)↑ / k / K / ↓ / j / J : Move selectionPgUp / PgDn / Home / End : Navigate stashes lista / A : Apply selected stashs / S : Create a new stash (opens stash message input)D : Delete selected stash↑ / k / K / ↓ / j / J : Move selectionPgUp / PgDn / Home / End : Navigate worktrees listEnter : Open selected worktree in new Gitwig context (adds to list and focuses it)a : Add new worktreeD : Remove selected worktreel : Toggle lock status of selected worktree (asks for reason if locking)p : Prune stale worktree metadata↑ / k / K / ↓ / j / J : Move selectiona : Add new submoduleD : Delete selected submodule↑ / k / K / ↓ / j / J : Move selectionPgUp / PgDn / Home / End : Navigate reflog listEnter / Space : Checkout commit OID of selected reflog entry↑ / k / K / ↓ / j / J : Move selectionPgUp / PgDn / Home / End : Navigate issues listEnter : Checkout branch corresponding to selected issueo : Open selected issue in web browsera : Toggle between “Assigned to me” and all open issues↑ / k / K / ↓ / j / J : Move selectionPgUp / PgDn / Home / End : Navigate PRs listEnter : Checkout branch corresponding to selected PRo : Open selected PR in web browsern : Add a line comment to the current Pull RequestMode::Inspect)Workspace layout for inspecting commits and diffs in details.
Esc / q / Q : Exit inspection, return to Workspace Tabw : Cycle focus forward between Staged, Unstaged, Conflicts, and Diff viewer panelsW : Cycle focus backward between panels? : Toggle inspect view shortcut help↑ / k / K / ↓ / j / J : Navigate file listsEnter : Stage selected file (if in Unstaged list) or Unstage selected file (if in Staged list)a : Stage all changes (if in Unstaged) or Unstage all changes (if in Staged)x : Discard changes in selected unstaged file (opens confirmation dialog)X : Discard all unstaged changes in repository (opens confirmation dialog)c : Start commit message dialogC : Start commit message dialog with Amendo : Accept OURS version of conflictt : Accept THEIRS version of conflictr : Mark conflict as resolvedA : Abort the mergeC : Continue the mergeM : Open external mergetool↑ / k / K / ↓ / j / J : Navigate lines / hunks (or scroll content)PgUp / PgDn / Home / End : Scroll diff viewer→ : Expand diff viewer to full screen (sets inspect_full_diff = true)← : Exit full-screen diff viewerl / L : Toggle line-by-line stage/discard mode (switches between Hunk mode and Line mode)Enter / s : Stage selected line or hunk (when focused on Unstaged file diff)Enter / u : Unstage selected line or hunk (when focused on Staged file diff)x / Delete : Discard selected line or hunk (when focused on Unstaged file diff)Triggers when staging changes encounters merge conflicts.
o : Accept OURS version of conflictt : Accept THEIRS version of conflictr : Mark conflict as resolvedA : Abort merge (opens confirmation dialog)C : Continue merge (opens confirmation dialog)M : Open external mergetool for the selected file (Conflicts file list or ConflictDiff pane, Workspace tab or Inspect view)Mode::Logs)Full-screen git commits history.
Esc / q / Q : Return to Workspace Tab↑ / k / K / ↓ / j / J : Navigate commitsPgUp / PgDn / Home / End : Scroll commits listEnter : Inspect selected commit (enters Commit Inspection Layout)/ : Start commit fuzzy search pickerf : Open search column picker popupG : Load more commitsMode::FileHistory)Commits history of selected file.
Esc / q / Q : Return to detail viewTab / w / W / ← / → : Toggle keyboard focus between Revisions list and Diff panel↑ / k / K / ↓ / j / J : Scroll list (when Revisions is focused) or scroll diff (when Diff is focused)PgUp / PgDn / Home / End : Scroll list / diffMode::Overview)Full-screen overlay summarizing the current repository (opened with O from the Detail view), split into an Overview pane and a Stats pane.
Esc / q / Q / O : Close overlay and return to Detail views / S : Open Repository Settings popupTab / w / W : Cycle pane focus between Overview and Stats↑ / k / K / ↓ / j / J : Scroll focused panePgUp / PgDn : Scroll focused pane by pageHome / End : Jump to top / bottom of focused paneMode::StashingUI)Overlay for reviewing what will be stashed before saving (opened with s / S from the Workspace tab’s commits or files list).
s / S : Save stash (opens stash message input)u / U : Toggle “Stash untracked files” optioni / I : Toggle “Keep index” option↑ / k / K / ↓ / j / J : Navigate the file listEsc / q / Q : Close and return to Detail viewMode::DebugLogs)App logs viewer.
Esc / q / D / l / L : Return to Home Screen↑ / k / ↓ / j : Scroll logs line-by-linePgUp / PgDown : Scroll logs page-by-pageHome / End : Scroll to top / bottom of debug logs/ : Enter fuzzy search query modec / C / x : Clear all debug logs and reset scrollMode::Settings)Full-screen configuration editor split into Categories and Fields.
Esc : Return to category sidebar (if in fields panel) or return to Home Screen (if in sidebar)q / Q : Return to Home Screen1 - 5 : Jump directly to Category 1-5 (General, Sorting, Scan, Theme, Keybindings)← / h : Focus category sidebar→ / l / w / W : Focus fields panel on the right↑ / k / K / ↓ / j / J : Navigate categories (if focused on sidebar) or fields (if focused on fields)PgUp / PgDown : Jump selection to top / bottom of active category or fieldsHome / End : Jump to the first / last item of the active listEnter : Edit selected setting field (or toggle switch)Enter : Save and commit changesEsc : Cancel edits and revert field valueBackspace / character keys : Input value↑ / k / ↓ / j / PgUp / PgDown / Home / End : Navigate items (only when selecting a theme)Mode::Legend)Quick reference guide to badges, operations, and status indicators.
Esc / q / Q / h : Close legend popup↑ / k / ↓ / j / PgUp / PgDown / Home / End : Scroll legend contentMode::About)Information about Gitwig, version details, and creator profile.
Esc / q / Q / V : Close about popupMode::StatsDashboard)Dashboard detailing aggregated usage statistics such as session duration, total lines authored, repositories imported, branches/commits created, network activities, and a visual 52-week Activity Heatmap.
Esc / Enter / q / Q : Close stats dashboardMode::SearchColumnPicker)Picker to select columns to search by (SHA, Message, Author, Date) before entering fuzzy logs search.
↑ / k / ↓ / j : Navigate search columns (SHA, Message, Author, Date)Space : Toggle selected search column checkboxEnter : Confirm and open logs search input modalEsc / q : Cancel and close columns selectorMode::RemotePicker)Picker to select the target remote for sync/fetch operations when multiple remotes exist.
↑ / k / K / ↓ / j / J : Navigate remotes listEnter : Confirm selected remoteEsc / q / Q : Cancel and close pickerMode::CommitHistoryPicker)Picker listing historical commit messages to reuse (opened with Ctrl+H from the Commit Message Dialog).
↑ / k / ↓ / j : Navigate commit messagesEnter : Select message and return to the commit dialogEsc / q : Cancel and return to the commit dialogMode::RepoSettings)Custom per-repository config editor (Theme, Page Size, Max Commits, Resync on Tab Change, Auto Fetch interval, Editor path, custom Note, Git LFS Tracking/Pull, LFS Storage Size). Accessed via s on the repository Overview screen. The Auto Fetch row overrides the global auto_fetch_interval_mins for just that repository — leave it empty to inherit the global cadence, or set 0 to exclude the repository from background fetching.
Esc : Cancel text edit (if editing) or return to Detail view (if in popup)q : Return to Detail view↑ / k / ↓ / j : Navigate settings rows← / h / → / l : Change values for option fields (Theme, Resync on Tab Change)Enter / Space : Edit/Toggle setting (toggles themes, enters text input for fields, runs LFS Pull, or refreshes LFS details)Mode::LabelSettings)Per-label config editor (Theme, Page Size, Max Commits, Resync on Tab Change, Auto Fetch interval, Editor path). Accessed via → on a highlighted label in the Label Picker Overlay. Settings chosen here apply to every repository carrying that label and are resolved between the per-repo override and the global default: a per-repo setting wins first, then the first of the repo’s labels (in stored order) that defines the setting, then the global default. Each row left empty inherits the next tier down; the Auto Fetch row accepts 0 to exclude the whole label group from background fetching (handy for an archive label). The Theme row additionally tints the home repo-list view while that label’s filter (“project view”) is active — a visual cue for which project you are focused on. Label settings persist to [label_configs.<label>] in config.toml, and a label’s settings are pruned automatically once no repository carries it.
↑ / k / ↓ / j : Navigate settings rows← / h / → / l : Change values for option fields (Theme, Resync on Tab Change)Enter / Space : Edit/Toggle setting (toggles themes or enters text input for fields)Esc : Cancel text edit (if editing), otherwise return to the label pickerMode::NotGitRepo)Warning dialog shown when selecting a directory that is not a valid Git repository.
Esc / Enter / q : Acknowledge warning and return to Home ScreenMode::Help / Mode::DetailHelp)Floating keyboard shortcut reference popup shown on top of the Home Screen or Detail View.
Esc / q / ? : Dismiss help overlayMode::GlobalSearch)Full-screen dashboard to search for keywords/code across all tracked repositories simultaneously.
Esc : Clear search and return to Home ScreenTab : Toggle keyboard focus between search input and matches list↑ / ↓ : Scroll/navigate matched itemsPgUp / PgDn / Home / End : Navigate matches listEnter : Trigger search (if input is focused) or open selected file match in Detail view (if list is focused)Backspace / character keys : Input query (when input is focused)Floating modal components with search-as-you-type inputs. Matches are ranked and updated in real time.
/ on Home Screen)a on Home Screen)A on Home Screen)/ on Branches Tab)/ on Files Tab)/ on Commits Tab or Logs View)/ on Tags Tab)Ctrl+H in the Commit Message Dialog)Esc : Cancel and close overlayEnter : Confirm selection↑ / ↓ : Navigate matched items listBackspace : Delete search query characterModal text entry boxes for setting up configurations or typing messages.
Ctrl+S (submit directly), Ctrl+U (clear message buffer), Ctrl+A (toggle amend), Ctrl+H (history picker), Ctrl+D (maximize popup), Ctrl+K (kill to end of line), Ctrl+W (delete word before cursor), Ctrl+B/Ctrl+F (cursor left/right), Ctrl+P/Ctrl+N (line up/down), and Ctrl+C (finish typing to enter confirm mode with x/u to clear, a/Space to toggle amend, d/D/m/M to maximize/restore, q to close, and Enter to commit).Esc : Cancel / close dialog (note: only Esc cancels modal inputs; letters like q/Q are typed as regular input text)Enter : Submit entry (for multi-line inputs like the Commit Dialog, use Ctrl+S to submit while editing, or Ctrl+C then Enter)Backspace : Erase characterCtrl+V / Terminal Paste : Paste text from system clipboard (single-line input dialogs automatically sanitize and strip trailing newlines)Double-checks before executing hazardous or state-altering actions.
To prevent accidental data loss due to muscle-memory Enter keypresses, Gitwig intercepts keystrokes on the router level. For any modal classified as a Destructive Action, pressing Enter defaults to Cancel (ConfirmNo). To confirm a destructive action, the user must explicitly press y or Y. For non-destructive actions, Enter acts normally to confirm.
Enter acts as Cancel)Mode::DiscardChangesConfirm): Discarding unstaged/staged files. Only file-level discards ask for confirmation — hunk/line discards (x / Delete in the diff viewer) apply immediately without a dialog.Mode::BranchDeleteConfirm): Deleting a local or remote tracking branch.Mode::TagDeleteConfirm): Deleting a Git tag locally or remotely.Mode::StashDeleteConfirm): Dropping/deleting a stash entry from the stashes list.Mode::RemoteDeleteConfirm): Removing a configured remote repository connection.Mode::SubmoduleDeleteConfirm): Deleting a submodule reference.Mode::MergeAbortConfirm): Aborting an active merge session (reverting resolved conflicts).Enter acts as Confirm)Mode::BranchCheckoutConfirm): Switching to another branch.Mode::CommitCheckoutConfirm): Checking out a commit OID from the Workspace commits list.Mode::TagCheckoutConfirm): Detaching HEAD to check out a tag.Mode::BranchPushConfirm): Pushing commits to remote (supports y Push, t Push + Tags --tags).Mode::TagOverwriteConfirm): Force updating an existing tag (-f).Mode::TagPushConfirm / Mode::TagPushAllConfirm): Pushing single or all tags to remote (supports y Push, f Force Push --force).Mode::BranchMergeConfirm): Merging a branch into the active branch.Mode::BranchMergeIntoConfirm): Checking out the selected branch and merging the previously current branch into it.Mode::BranchRebaseConfirm / Mode::BranchInteractiveRebaseConfirm): Rebasing the current branch.Mode::StashApplyConfirm): Applying a stash onto the working directory.Mode::CherryPickConfirm): Cherry-picking a commit.Mode::RevertConfirm): Creating a revert commit for a specific commit.Mode::MergeContinueConfirm): Continuing a merge after conflicts are resolved.Mode::UpdateConfirm): Confirming a self-update.y / Y : Confirm action (required for destructive actions; works for all)f / F : Force push tag (--force) in Tag Push confirmation dialogt / T : Push branch with tags (--tags) in Branch Push confirmation dialogEsc / n / N : Cancel action / close popupEnter : Confirm action (only works for non-destructive actions; cancels for destructive actions)