How to Install GitHub Desktop on Fedora Linux

Last updated Saturday, February 28, 2026 2:14 pm 9 min read 1 comment

When you want a quick visual pass over a messy diff or need to switch branches without juggling terminal commands, GitHub Desktop is easier to live with than raw Git alone. To install GitHub Desktop on Fedora, the two methods that still make sense are the community-maintained shiftkey/desktop project RPM build and the Flathub package, because GitHub does not publish an official Fedora repository.

GitHub Desktop is not available in Fedora’s official repositories, and older third-party DNF repo options currently lag behind upstream. That leaves two paths worth your time: the latest RPM release from GitHub releases and the Flathub build. Both are current, easy to verify, and straightforward to remove later if you change your mind.

Install GitHub Desktop on Fedora

The direct RPM is the least layered option and behaves like a normal host package. Flatpak is usually the smoother choice on Fedora Workstation because Flathub handles updates cleanly and Fedora already ships the runtime support.

MethodSourceFreshnessUpdatesBest For
Direct RPMGitHub releasesLatest stableRerun the install commandUsers who want the upstream build on the host system
FlatpakFlathubLatest stableflatpak updateMost Fedora Workstation users

Flatpak is the better default for most Fedora desktops because it fits the way Fedora Workstation already handles desktop apps and updates cleanly from Flathub. Use the direct RPM when you want GitHub Desktop installed on the host without Flatpak sandboxing. Older community DNF repositories still show up in search results, but they currently trail upstream, so they are more likely to leave you on an older build.

Some older shiftkey RPM repo instructions still point to rpm.packages.shiftkey.dev. During Fedora 43 testing, that host failed TLS certificate validation, and older mirror-based repo paths were not a reliable way to stay on the newest build. If you want the current RPM, use the direct GitHub release method below or the update script later in this guide.

Update Fedora Before Installing GitHub Desktop

Refresh Fedora’s package metadata and install pending updates before adding GitHub Desktop:

sudo dnf upgrade --refresh

This guide uses sudo for commands that need root privileges. If your account is not in the sudoers file yet, switch to root or follow the guide on adding a user to sudoers on Fedora before continuing.

Install GitHub Desktop RPM on Fedora from GitHub Releases

This method queries the latest GitHub release, matches it to your Fedora architecture, and installs the RPM with DNF:

ARCH=$(uname -m)
RPM_URL=$(curl -fsSL https://api.github.com/repos/shiftkey/desktop/releases/latest | grep -oE "\"browser_download_url\": \"[^\"]+${ARCH}[^\"]*\\.rpm\"" | head -n 1 | cut -d '"' -f4)
sudo dnf install -y "$RPM_URL"

The first line detects your architecture, the second pulls the matching release URL, and DNF installs that RPM. On Fedora 43 Workstation, the command resolves to the x86_64 build. If RPM_URL comes back empty on a less common architecture, open the releases page and pick the matching RPM manually.

Verify that Fedora registered the package after installation:

rpm -q github-desktop
github-desktop-3.4.13.linux1-1.x86_64

The version will move forward as new releases land, but the package name format stays the same.

Install GitHub Desktop Flatpak on Fedora from Flathub

The Flathub build is the easiest Fedora path when you want a current package with straightforward updates.

Fedora Workstation already includes Flatpak. On minimal or server-style Fedora installs, add it first with sudo dnf install flatpak. If you just installed Flatpak yourself, log out and back in once before launching graphical apps.

This guide uses a system-wide Flatpak install, so the app, update command, and removal steps all stay under the same Fedora-managed scope.

Add the Flathub remote if it is not already configured on your system:

sudo flatpak remote-add --system --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

Install GitHub Desktop system-wide from Flathub:

sudo flatpak install --system -y flathub io.github.shiftey.Desktop

Confirm the Flatpak package is installed and available:

flatpak info io.github.shiftey.Desktop
GitHub Desktop - Simple collaboration from your desktop

          ID: io.github.shiftey.Desktop
        Arch: x86_64
      Branch: stable
     Version: 3.4.13-linux1
      Origin: flathub
Installation: system

If a newer release is available when you run the command, only the Version line should differ.

Launch GitHub Desktop on Fedora

Open GitHub Desktop from Activities

Search for GitHub Desktop in Activities and open it like any other Fedora desktop application.

Launch GitHub Desktop from the Terminal

RPM installations launch with the standard command:

github-desktop

Flatpak installations use the application ID instead:

flatpak run io.github.shiftey.Desktop

If this is a fresh Fedora machine, check your Git identity before the first commit. GitHub Desktop uses the same Git configuration, so it helps to configure Git username and email first.

Update or Remove GitHub Desktop on Fedora

Update the GitHub Desktop RPM on Fedora

Rerun the same release-detection command whenever you want the newest upstream RPM. DNF upgrades the package in place and prints Nothing to do. if you are already current. If you would rather keep a reusable helper on the system, use the script in the next subsection.

ARCH=$(uname -m)
RPM_URL=$(curl -fsSL https://api.github.com/repos/shiftkey/desktop/releases/latest | grep -oE "\"browser_download_url\": \"[^\"]+${ARCH}[^\"]*\\.rpm\"" | head -n 1 | cut -d '"' -f4)
sudo dnf install -y "$RPM_URL"

Create a GitHub Desktop RPM Update Script on Fedora

This helper script is for the direct RPM method, not Flatpak. It checks the installed GitHub Desktop version, fetches the latest Fedora-compatible RPM from the shiftkey/desktop releases page, downloads the matching .sha256 file, verifies the checksum, and then hands the RPM to DNF. Run it as your regular user account because the script calls sudo only when the package install step begins.

Save the script to /usr/local/bin so you can run it from any terminal directory later:

sudo tee /usr/local/bin/update-github-desktop > /dev/null << 'SCRIPT_EOF'
#!/usr/bin/env bash
set -euo pipefail

AUTO_YES=0
if [ "${1:-}" = "--yes" ]; then
  AUTO_YES=1
fi

if [ "$(id -u)" -eq 0 ]; then
  echo "Run this script as a regular user. It uses sudo only for the DNF install step."
  exit 1
fi

for cmd in curl dnf rpm grep head cut sed sha256sum mktemp uname tr; do
  if ! command -v "$cmd" >/dev/null 2>&1; then
    echo "Error: $cmd is required but not installed."
    exit 1
  fi
done

ARCH=$(uname -m)
case "$ARCH" in
  x86_64) RPM_ARCH="x86_64" ;;
  aarch64) RPM_ARCH="aarch64" ;;
  armv7l) RPM_ARCH="armv7l" ;;
  *)
    echo "Unsupported architecture: $ARCH"
    exit 1
    ;;
esac

echo "Checking the latest GitHub Desktop release for Fedora..."
RELEASE_JSON=$(curl -fsSL https://api.github.com/repos/shiftkey/desktop/releases/latest)
LATEST_TAG=$(printf '%s\n' "$RELEASE_JSON" | grep -oE '"tag_name": "[^"]+"' | head -n 1 | cut -d '"' -f4)
RPM_URL=$(printf '%s\n' "$RELEASE_JSON" | grep -oE "\"browser_download_url\": \"[^\"]+${RPM_ARCH}[^\"]*\\.rpm\"" | head -n 1 | cut -d '"' -f4)

if [ -z "$LATEST_TAG" ] || [ -z "$RPM_URL" ]; then
  echo "Error: Could not determine the latest GitHub Desktop RPM URL."
  exit 1
fi

LATEST_VERSION=$(printf '%s\n' "$LATEST_TAG" | sed -E 's/^release-//; s/-linux/.linux/')
CURRENT_VERSION=$(rpm -q --qf '%{VERSION}\n' github-desktop 2>/dev/null || echo "none")

echo "Current installed version: $CURRENT_VERSION"
echo "Latest available version: $LATEST_VERSION"

if [ "$CURRENT_VERSION" = "$LATEST_VERSION" ]; then
  echo "Already up to date."
  exit 0
fi

if [ "$AUTO_YES" -ne 1 ]; then
  printf 'Continue with the RPM install/update? [y/N] '
  read -r REPLY
  case "$REPLY" in
    [yY]|[yY][eE][sS]) ;;
    *)
      echo "Update canceled."
      exit 0
      ;;
  esac
fi

WORKDIR=$(mktemp -d)
trap 'rm -rf "$WORKDIR"' EXIT
cd "$WORKDIR"

RPM_FILE=${RPM_URL##*/}
CHECKSUM_URL="${RPM_URL}.sha256"
CHECKSUM_FILE="${RPM_FILE}.sha256"

echo "Downloading $RPM_FILE..."
curl -fL --progress-bar "$RPM_URL" -o "$RPM_FILE"
echo "Downloading checksum..."
curl -fsSL "$CHECKSUM_URL" -o "$CHECKSUM_FILE"

EXPECTED_SUM=$(tr -d '\r\n' < "$CHECKSUM_FILE")
ACTUAL_SUM=$(sha256sum "$RPM_FILE" | cut -d ' ' -f1)

if [ "$EXPECTED_SUM" != "$ACTUAL_SUM" ]; then
  echo "Error: Checksum verification failed for $RPM_FILE."
  exit 1
fi

echo "Checksum verified."
echo "Installing the RPM with DNF..."
sudo dnf install -y "./$RPM_FILE"

NEW_VERSION=$(rpm -q --qf '%{VERSION}\n' github-desktop)
echo "Update complete."
echo "Installed version: $NEW_VERSION"
SCRIPT_EOF
sudo chmod +x /usr/local/bin/update-github-desktop

Run the script from any terminal directory with:

update-github-desktop

If you intentionally want a noninteractive run, add --yes to skip the confirmation prompt:

update-github-desktop --yes

Use this as a manual helper first. It is safer to watch a few successful runs yourself than to wire unattended RPM updates into cron and discover a GitHub API or download failure later.

Example output when an update is available:

Checking the latest GitHub Desktop release for Fedora...
Current installed version: 3.4.12.linux1
Latest available version: 3.4.13.linux1
Continue with the RPM install/update? [y/N] y
Downloading GitHubDesktop-linux-x86_64-3.4.13-linux1.rpm...
Downloading checksum...
Checksum verified.
Installing the RPM with DNF...
Upgrading:
 github-desktop x86_64 3.4.13.linux1-1 @commandline
Complete!
Update complete.
Installed version: 3.4.13.linux1

When you are already current, the same command stops without downloading the RPM again:

Checking the latest GitHub Desktop release for Fedora...
Current installed version: 3.4.13.linux1
Latest available version: 3.4.13.linux1
Already up to date.

Update the GitHub Desktop Flatpak on Fedora

Update only GitHub Desktop from Flathub with:

sudo flatpak update --system io.github.shiftey.Desktop

Remove the GitHub Desktop RPM from Fedora

Remove the RPM package with DNF:

sudo dnf remove github-desktop

The next command removes GitHub Desktop settings from your home directory, but it does not delete any Git repositories you cloned elsewhere. Back up custom preferences first if you want to keep them.

rm -rf ~/.config/GitHub\ Desktop

Verify that the RPM package is gone:

rpm -q github-desktop
package github-desktop is not installed

Remove the GitHub Desktop Flatpak from Fedora

Remove the Flatpak build and delete its sandbox data in one step:

sudo flatpak remove --system -y --delete-data io.github.shiftey.Desktop

If you want to confirm the Flatpak package is gone, run:

flatpak info io.github.shiftey.Desktop
error: io.github.shiftey.Desktop/*unspecified*/*unspecified* not installed

Troubleshoot GitHub Desktop on Fedora

Fix GitHub Desktop Flatpak Remote or App ID Errors

Flatpak installation problems usually come from a missing Flathub remote or a mistyped application ID. List your configured remotes first:

flatpak remotes
fedora	system,oci
flathub	system

If flathub does not appear, add it again and retry the install:

sudo flatpak remote-add --system --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo flatpak install --system -y flathub io.github.shiftey.Desktop

Verify Which GitHub Desktop Build Fedora Installed

If GitHub Desktop does not appear in Activities or you are not sure which method you used, check the RPM and Flatpak package databases directly:

rpm -q github-desktop
flatpak info io.github.shiftey.Desktop

An installed RPM reports a package name such as github-desktop-3.4.13.linux1-1.x86_64. An installed Flatpak reports ID: io.github.shiftey.Desktop and Origin: flathub. If both commands fail, Fedora does not currently have GitHub Desktop installed and you can rerun one of the installation methods above.

Frequently Asked Questions About GitHub Desktop on Fedora

Is GitHub Desktop available in Fedora’s default repositories?

No. GitHub Desktop is not packaged in Fedora’s official repositories. On Fedora, the reliable installation methods are the current shiftkey/desktop RPM release from GitHub or the Flathub package.

Should I use the RPM or Flatpak build of GitHub Desktop on Fedora?

Flatpak is the better default for most Fedora Workstation systems because Flathub updates are straightforward and Fedora already integrates Flatpak well. The RPM method makes more sense when you want GitHub Desktop installed directly on the host system without Flatpak sandboxing.

Can GitHub Desktop use SSH keys on Fedora?

Yes. GitHub Desktop can use the same SSH authentication that Fedora already uses for Git. Clone repositories with SSH URLs and the app works with your existing SSH agent and keys. If you still need to set that up, follow the guide on SSH on Fedora.

Where does Fedora install GitHub Desktop?

The RPM package installs the launcher at /usr/bin/github-desktop and the application files under /usr/lib/github-desktop. The system-wide Flatpak build installs under /var/lib/flatpak/app/io.github.shiftey.Desktop. RPM settings for the current user are stored in ~/.config/GitHub Desktop.

Conclusion

Fedora now has a clean GitHub Desktop setup, whether you chose the direct RPM or the easier Flatpak route. Diffs, branch switches, and pull requests can stay in one place instead of being scattered across terminal tabs. If the Git side still needs attention, start with Git on Fedora, then configure Git username and email, and add SSH on Fedora when you want SSH-based repository access.

Search LinuxCapable

Need another guide?

Search LinuxCapable for package installs, commands, troubleshooting, and follow-up guides related to what you just read.

Found this guide useful?

Support LinuxCapable to keep tutorials free and up to date.

Buy me a coffee Buy me a coffee

1 thought on “How to Install GitHub Desktop on Fedora Linux”

Before commenting, please review our Comments Policy.
Formatting tips for your comment

You can use basic HTML to format your comment. Useful tags currently allowed:

You type Result
<code>command</code> command
<strong>bold</strong> bold
<em>italic</em> italic
<blockquote>quote</blockquote> quote block

Leave a Comment

We read and reply to every comment - let us know how we can help or improve this guide.

Let us know you are human: