This repository maintains a Linux-focused fork of GitHub Desktop, the open-source Electron app written in TypeScript and React.
The previous Linux fork went quiet for several years. This project is taking over maintenance with a practical goal: keep GitHub Desktop usable on Linux, catch up important Windows/macOS Desktop features where possible, and ship installable Linux packages directly from GitHub.
- Keep the Linux app building and installable.
- Continue catching up high-value Desktop workflows such as Git hooks, multi-domain account flows, security status links, and GitHub browser shortcuts.
- Prefer small, tested, end-to-end feature slices over large rewrites.
- Publish user-installable
.deb,.rpm, and.AppImageartifacts from GitHub Actions.
See TODO.md for the active catch-up roadmap.
This fork includes Linux-focused catch-up work on top of the upstream GitHub Desktop codebase:
-
AI commit messages: generate commit summaries and descriptions from the currently selected changes. Configure OpenRouter in Preferences, choose the model and base URL, and optionally disable generation per repository in Repository Settings.
-
AI-native workflow: four one-shot AI actions that reuse the same OpenRouter provider as AI commit messages — generate a pull request description (title + body) from the branch's commits and diff, summarize a set of changes or a commit in plain language, review your changes before committing (severity-tagged findings), and get merge-conflict assistance that explains a conflict and suggests a resolution. Each shows in a shared result dialog with Copy/Regenerate. Reach the review/summarize actions from the command palette and PR descriptions from the "Open pull request" dialog.
-
Command palette: a fuzzy action launcher opened with
Ctrl/Cmd+K— jump to repository sections, push/pull/fetch, create a branch, toggle the terminal, open preferences, or run the AI actions, all from the keyboard. -
Git blame: a per-line blame gutter in the Files viewer (toggle Blame) showing the author and short SHA that last touched each line, with contiguous runs of the same commit collapsed.
-
In-file find:
Ctrl/Cmd+Fin the Files viewer opens a find bar with a match count and next/previous navigation that highlights the active match. -
Commit graph: the History list draws branch/merge topology as colored lane lines beside each commit.
-
Submodules management: a Submodules tab listing each submodule with its checked-out commit, status (uninitialized / out-of-date / conflicted), and actions to update (init + checkout) all or one, and to sync remote URLs.
-
Integrated terminal: a repo-scoped terminal panel docked at the bottom of the window, toggled with
Ctrl+`. It runs real shell sessions (node-pty+xterm.js) with multiple tabs and per-repository session persistence. -
Files browser: a read-only Files tab with a working-tree file tree and a multi-tab viewer. Open several files at once (reorder tabs by dragging, close via the per-tab button, middle-click, or a right-click menu with close others/left/right/all), with syntax highlighting, rendered Markdown, CSV/TSV tables, inline image/video preview, and "open in browser" for HTML/PDF. Right-click tree entries to rename, trash, copy paths, or open in your editor.
-
Interactive rebase: a planning dialog to reorder, squash, fixup, and drop a range of recent commits, then run a single
git rebase -ithrough Desktop's multi-commit-operation machinery with progress and undo. -
Repository health dashboard: a cross-repository status view showing uncommitted files, ahead/behind counts, open pull request count, default-branch CI status, and a per-repository attention score, with sorting, filtering, and refresh. Signal cells drill down — click one to open that repository on the relevant tab (changes → Changes, ahead/behind → History, CI → Actions).
-
In-app pull request review: review a pull request without leaving the app — load its review threads, draft line comments, set a verdict (approve, request changes, or comment), and submit the review in one shot.
-
Stash management: a Stashes tab listing every stash entry — created by Desktop or the Git CLI — with apply and create-with-message actions.
-
Worktrees management: a Worktrees tab listing the repository's linked worktrees with each one's checked-out branch, uncommitted-change count, and locked/prunable state — and actions to add a worktree (on a new or existing branch), remove one, and prune stale entries.
-
GitHub Actions workflow runs: an Actions tab listing recent workflow runs with status icons, filterable by state (queued, in-progress, completed, success, failure, cancelled), and a "Run workflow" button that opens a dispatch dialog with a workflow dropdown and branch input.
-
Working-directory change summary: the Changes tab shows aggregate added/removed line counts next to the changed-file count.
-
Changed-file filtering: filter the Changes view by path using one or more case-insensitive search terms while keeping the existing file selection flow.
-
Organization diagnostics: see visible organizations for each signed-in GitHub.com or GitHub Enterprise account in Preferences, with guidance for common missing-organization causes such as OAuth app restrictions, SAML SSO, private membership, and repository permissions.
-
Manual Linux release builds: maintainers can run the
CI / Linuxworkflow manually for a branch, tag, or SHA and produce.AppImage,.deb,.rpm, and.sha256artifacts, with optional draft GitHub Release creation.
Packages are distributed through GitHub Actions artifacts and GitHub Releases. Package-manager feeds from older Linux forks are no longer the primary distribution path for this project.
- Open the CI / Linux workflow.
- Choose the latest successful run, or a tagged draft release when available.
- Download the artifact for your architecture:
ubuntu-amd64-artifactsubuntu-arm64-artifactsubuntu-arm-artifacts
- Extract the artifact and install one package:
- Debian/Ubuntu:
sudo apt install ./GitHubDesktop-linux-*.deb - Fedora/RHEL/openSUSE: install the
.rpmwith your package manager. - Any supported Linux distribution: mark the
.AppImageexecutable and run it.
- Debian/Ubuntu:
Example AppImage install:
chmod +x GitHubDesktop-linux-*.AppImage
./GitHubDesktop-linux-*.AppImageExample Debian package install:
sudo apt install ./GitHubDesktop-linux-*.debMaintainers build Linux packages with the CI / Linux GitHub Actions workflow.
Use Run workflow, choose the branch/tag/SHA to build, and leave
publish_release disabled for artifact-only validation builds.
To create a draft GitHub Release, run the same workflow with:
publish_release: enabledrelease_tag: a tag such asrelease-3.4.9-linux1
The workflow builds .AppImage, .deb, .rpm, and .sha256 files for the
supported Linux architectures. Users can download these files directly from the
workflow artifacts or from the draft release after it is reviewed and published.
This repository uses Yarn 1.x and Node 20.17.0.
yarn
yarn build:dev
yarn startUseful checks:
yarn test
yarn lint
yarn compile:devFor contributor and agent guidance, see AGENTS.md and CLAUDE.md.
Linux-specific issues and workarounds are tracked in
docs/known-issues.md. Some older documentation in
docs/ still refers to the previous fork and upstream release process; prefer
this README and TODO.md for current project direction.
This project is based on GitHub Desktop but is not an official GitHub product
release channel. We will continue to reference upstream
desktop/desktop for architecture,
bugfixes, and feature parity, while maintaining Linux packaging and Linux-first
fixes here.
The MIT license grant is not for GitHub's trademarks, which include the logo designs. GitHub reserves all trademark and copyright rights in and to all GitHub trademarks. GitHub's logos include, for instance, the stylized Invertocat designs that include "logo" in the file title in logos.
GitHub® and its stylized versions and the Invertocat mark are GitHub's trademarks or registered trademarks. When using GitHub's logos, follow the GitHub logo guidelines.

