Modern software engineers and DevOps practitioners spend a substantial portion of their working day managing GitHub repositories, conducting code reviews, reviewing pull requests (PRs), and tracking CI/CD build issues. Constantly toggling between a browser tab to view GitHub notifications and a terminal editor disrupts developer flow state. While the official GitHub CLI (gh) brings repository management to the command line, viewing complex lists of issues and PRs across multiple repositories can still feel fragmented.
gh-dash is a rich, highly configurable terminal user interface (TUI) extension for the GitHub CLI. Built with Go and Bubble Tea, gh-dash provides a unified, keyboard-driven dashboard directly in your Linux terminal. It allows you to monitor incoming review requests, track issues assigned to you, inspect GitHub Actions workflow statuses, and switch between branches with single keystrokes. This tutorial walks you through installing gh-dash on Linux, configuring custom multi-repository query sections, mastering keyboard navigation, and integrating custom keybindings.
Prerequisite: gh-dash requires the official GitHub CLI (gh) version 2.0 or higher, authenticated against your GitHub account. Ensure gh auth status succeeds before installing the extension.
Why Use gh-dash for GitHub Management?
gh-dash bridges the gap between raw CLI commands and web-based GitHub interfaces:
- Unified Single-Screen View: View pull requests requiring your review, PRs you authored, open issues, and repository activity simultaneously in side-by-side or stacked panels.
- Fast Keyboard Control: Checkout PR branches locally, approve changes, view web links, and comment without leaving your shell.
- Configurable Custom Sections: Tailor your dashboard to query specific organisations, milestones, labels, or personal assignees using GitHub search syntax.
- Lightweight Footprint: Runs seamlessly across local terminals, remote SSH environments, and tmux/Zellij multiplexer sessions with negligible CPU overhead.
Step 1: Installing the GitHub CLI (gh) on Linux
If you have not yet installed and authenticated the GitHub CLI on your Linux system:
On Ubuntu and Debian
(type -p wget >/dev/null || (sudo apt update && sudo apt install -y wget)) \
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& sudo apt update \
&& sudo apt install -y gh
On Fedora, RHEL, and CentOS
sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh
On Arch Linux
sudo pacman -S github-cli
Authenticating with GitHub
Once installed, authenticate your account:
gh auth login
Follow the on-screen prompts to authenticate via your web browser or personal access token.
Step 2: Installing the gh-dash Extension
With gh operational, installing gh-dash takes a single command via the native extension manager:
gh extension install dlvhdr/gh-dash
To upgrade gh-dash to the latest version in the future, simply run:
gh extension upgrade gh-dash
Step 3: Launching and Navigating the Dashboard
Launch the dashboard from any terminal window or project directory:
gh dash
Upon launch, gh-dash displays a two-column or split-panel layout dividing Pull Requests and Issues. Navigation is entirely keyboard-driven:
- Use j and k (or ↓ and ↑) to move up and down through list items.
- Press Tab to switch focus between the Pull Requests section and the Issues section.
- Press Enter to inspect the selected PR or issue, revealing author details, descriptions, labels, checks, and comments in a dedicated preview pane.
- Press o to open the highlighted item directly in your default desktop web browser.
- Press c on a pull request to check out that branch into your local Git repository immediately.
- Press r to refresh live data from GitHub servers.
- Press ? to display the in-app help modal.
- Press q to exit the dashboard.
Step 4: Customising Dashboard Sections and Filters
gh-dash uses a YAML configuration file located at ~/.config/gh-dash/config.yml. You can customise query sections to reflect your personal workflow:
mkdir -p ~/.config/gh-dash
nano ~/.config/gh-dash/config.yml
Paste the following production configuration example:
prSections:
- title: Needs My Review
filters: is:open review-requested:@me
- title: Created by Me
filters: is:open author:@me
- title: Subscribed PRs
filters: is:open involves:@me -author:@me
issuesSections:
- title: Assigned to Me
filters: is:open assignee:@me
- title: Mentioned
filters: is:open mentions:@me
defaults:
prsLimit: 25
issuesLimit: 25
preview:
open: true
width: 60
theme:
colors:
text:
primary: "#ffffff"
secondary: "#a0a0a0"
border:
faint: "#333333"
Save the file (Ctrl + O, then Ctrl + X in nano). The next time you run gh dash, your custom sections will immediately populate with targeted queries.
Step 5: Reviewing PRs and Approving Changes Directly
One of gh-dash’s most productive features is executing code review workflows without opening a browser:
- Highlight a pull request in the Needs My Review section.
- Press d to display the full code diff in your terminal pager.
- Press v to open the review submission menu.
- Select your review outcome: Approve, Comment, or Request Changes.
- Type your review comment and submit; the action immediately reflects on GitHub.
gh-dash Essential Keyboard Shortcuts
| Key | Context | Action Executed |
|---|---|---|
| Tab | Global | Switch active panel between PRs and Issues |
| j / k | Navigation | Move cursor down and up through records |
| Enter | Global | Open detailed preview pane for selected item |
| o | Global | Open current item in default web browser |
| c | PRs Panel | Checkout PR branch into active local repository |
| d | PRs Panel | View unified diff of the pull request |
| v | PRs Panel | Submit a review (Approve / Comment / Request Changes) |
| r | Global | Force refresh data from GitHub API |
| ? | Global | Toggle interactive help dialogue |
| q | Global | Quit gh-dash and return to shell |