Reviewing a pull request is easier when you can see changed files, branches, and commit history without turning every step into a Git command. To install GitHub Desktop on Fedora, use the community-maintained shiftkey/desktop Linux fork, because GitHub does not publish an official Fedora repository for the upstream Desktop app.
GitHub Desktop is not packaged in Fedora’s official repositories. The practical Fedora paths are the RPM release asset from GitHub releases, verified with its published SHA256 checksum, and the Flathub package. If you only need the Git command-line tools for GitHub repositories, start with installing Git on Fedora instead.
Install GitHub Desktop on Fedora
The RPM method gives you the newest release asset directly on the host system. Flatpak is usually the easier Fedora Workstation path because Fedora already integrates Flatpak well, but the current Flathub package is unverified and requests broad host access, so treat it as an update-friendly packaging choice rather than a strict sandbox.
| Method | Source | Update Behavior | Best For | Important Notes |
|---|---|---|---|---|
| Direct RPM | GitHub releases | Manual reinstall or helper script | Users who want the newest host-installed build | Verify the published SHA256 checksum before installing |
| Flatpak | Flathub | flatpak update | Most Fedora Workstation users | Unverified Flathub package with broad permissions |
Older RPM repository instructions still appear in search results. The
rpm.packages.shiftkey.devrepository currently fails TLS certificate validation, while the Mwt RPM mirror is reachable but lags behind the latest GitHub release. Use the direct RPM release workflow when you need the newest RPM build.
The RPM release page currently publishes Fedora-compatible builds for x86_64, aarch64, and armv7l. Flathub publishes the app under the ID io.github.shiftey.Desktop.
Update Fedora Before Installing GitHub Desktop
Refresh Fedora’s package metadata and install pending updates before adding a new desktop application:
sudo dnf upgrade --refresh
Commands that change system packages or system-wide Flatpak state need
sudo. 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
The direct RPM method asks the GitHub release API for the latest Linux build, matches it to your Fedora architecture, and stores the release URL in your current terminal session:
ARCH=$(uname -m)
case "$ARCH" in
x86_64|aarch64|armv7l) RPM_ARCH="$ARCH" ;;
*)
printf 'Unsupported architecture: %s\n' "$ARCH" >&2
exit 1
;;
esac
RELEASE_JSON=$(curl -fsSL https://api.github.com/repos/shiftkey/desktop/releases/latest)
RPM_URL=$(printf '%s\n' "$RELEASE_JSON" | grep -oE "\"browser_download_url\": \"[^\"]+${RPM_ARCH}[^\"]*\\.rpm\"" | head -n 1 | cut -d '"' -f4)
if [ -z "$RPM_URL" ]; then
printf 'No matching GitHub Desktop RPM was found for %s.\n' "$RPM_ARCH" >&2
exit 1
fi
RPM_FILE=${RPM_URL##*/}
Download the RPM and its matching checksum file, then verify the downloaded package before DNF installs it:
curl -fL "$RPM_URL" -o "$RPM_FILE"
curl -fsSL "${RPM_URL}.sha256" -o "${RPM_FILE}.sha256"
printf '%s %s\n' "$(tr -d '\r\n' < "${RPM_FILE}.sha256")" "$RPM_FILE" | sha256sum -c -
A successful checksum verification prints a line like this. The filename changes for newer releases or different architectures:
GitHubDesktop-linux-x86_64-3.4.13-linux1.rpm: OK
Inspect the local RPM metadata so you can see the package name, version, release, and architecture DNF will register. On x86_64, output for the current release looks like this:
rpm -qp --qf '%{NAME} %{VERSION}-%{RELEASE} %{ARCH}\n' "$RPM_FILE"
github-desktop 3.4.13.linux1-1 x86_64
Install the verified RPM with DNF:
sudo dnf install "./$RPM_FILE"
DNF may print
Warning: skipped OpenPGP checks for 1 package from repository: @commandlinefor this direct release RPM. That warning appears because the package is installed from a local file, not a signed DNF repository. The SHA256 check confirms the file matches the checksum published beside the release asset; keep direct RPM updates as a manual review step instead of wiring them into unattended automation.
The DNF command uses Fedora’s local-RPM install syntax. Fedora’s DNF5 install examples explain the package-manager pattern in more detail if you want to see how local RPM files differ from repository packages.
Verify that Fedora registered the package after installation:
rpm -q github-desktop
github-desktop-3.4.13.linux1-1.x86_64
The version moves 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 GitHub Desktop to update with other Flatpak applications.
Fedora Workstation already includes Flatpak. On mutable Fedora installs where flatpak --version fails, such as Server or minimal systems, install the Flatpak package first:
sudo dnf install flatpak
If you just installed Flatpak on a minimal system, log out and back in once before launching graphical apps.
Add the Flathub remote if it is not already configured:
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
Install GitHub Desktop from Flathub. Review the permission prompt before confirming; the current package requests broad host filesystem and device access.
sudo flatpak install flathub io.github.shiftey.Desktop
Confirm the Flatpak package is installed and available:
flatpak info io.github.shiftey.Desktop | grep -E '^[[:space:]]*(ID|Ref|Arch|Branch|Version|Origin|Installation|Runtime):'
Relevant output includes:
ID: io.github.shiftey.Desktop
Ref: app/io.github.shiftey.Desktop/x86_64/stable
Arch: x86_64
Branch: stable
Version: 3.4.13-linux1
Origin: flathub
Installation: system
Runtime: org.freedesktop.Platform/x86_64/25.08
If a newer release is available when you run the command, only the version and runtime branch may 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 desktop command:
github-desktop
Flatpak installations use the application ID instead:
flatpak run io.github.shiftey.Desktop
The RPM package also creates a github helper symlink for GitHub Desktop. That command is not the separate GitHub CLI tool, which uses the gh command name.
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. For SSH clone URLs, GitHub Desktop can use your existing SSH agent and keys; set up SSH on Fedora before cloning if that workflow is not ready yet.
Update or Remove GitHub Desktop on Fedora
Update the GitHub Desktop RPM on Fedora
The direct RPM method is not connected to a DNF repository, so normal dnf upgrade runs do not discover new GitHub Desktop releases. Rerun the direct RPM install workflow, or create a helper script if you want a repeatable update command with checksum verification.
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/')
if ! CURRENT_VERSION=$(rpm -q --qf '%{VERSION}\n' github-desktop 2>/dev/null); then
CURRENT_VERSION="none"
fi
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..."
if [ "$AUTO_YES" -eq 1 ]; then
sudo dnf install -y "./$RPM_FILE"
else
sudo dnf install "./$RPM_FILE"
fi
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
When the installed RPM already matches the latest release, relevant output includes:
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.
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.
When an update is available, the helper downloads the new RPM, checks the published checksum, and then starts the DNF install transaction. Review the DNF package summary before accepting any update that changes more than GitHub Desktop itself.
Update the GitHub Desktop Flatpak on Fedora
Update only GitHub Desktop from Flathub with:
sudo flatpak update io.github.shiftey.Desktop
Remove the GitHub Desktop RPM from Fedora
Remove the RPM package with DNF:
sudo dnf remove github-desktop
If you created the optional update helper, remove it too:
sudo rm -f /usr/local/bin/update-github-desktop
The next command permanently deletes GitHub Desktop settings for your current Linux account, but it does not delete Git repositories you cloned elsewhere. Back up preferences first if you want to keep them.
rm -rf "$HOME/.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
The next command removes the system-wide Flatpak package. Export or copy anything you need from GitHub Desktop before removing its per-user profile data.
sudo flatpak uninstall io.github.shiftey.Desktop
Verify that the system-scope Flatpak package is gone:
flatpak list --system --app --columns=application | grep -Fx io.github.shiftey.Desktop || echo "NOT_INSTALLED"
NOT_INSTALLED
Remove your user profile data only when you no longer need local GitHub Desktop settings, cached state, or account/session data:
rm -rf -- "$HOME/.var/app/io.github.shiftey.Desktop"
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 --columns=name,options
fedora system,oci flathub system
If flathub does not appear, add it again and retry the install. If it appears but is disabled, re-enable it first with sudo flatpak remote-modify --enable flathub.
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
sudo flatpak install 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 and owns /usr/bin/github-desktop, /usr/bin/github, /usr/share/applications/github-desktop.desktop, and application files under /usr/lib/github-desktop. An installed Flatpak reports ID: io.github.shiftey.Desktop and Origin: flathub. If both checks fail, Fedora does not currently have GitHub Desktop installed and you can choose one installation method again.
Fix Old GitHub Desktop RPM Repository Errors
If an older setup keeps trying to reach the retired PackageCloud feed or the broken Shiftkey RPM host, remove that stale repository file before using the direct RPM or Flatpak method:
sudo rm -f /etc/yum.repos.d/packagecloud-shiftkey-desktop.repo
sudo rm -f /etc/yum.repos.d/shiftkey-packages.repo
sudo dnf clean metadata
Check that Fedora no longer enables those old repository IDs:
dnf repolist --enabled | grep -Ei 'shiftkey|packagecloud' || echo "OLD_REPOS_DISABLED"
OLD_REPOS_DISABLED
Conclusion
GitHub Desktop is ready on Fedora through either the checksum-checked direct RPM workflow or the Flathub build, with updates and cleanup handled by the method you chose. For a smoother first repository setup, pair it with Git username and email configuration, then add SSH on Fedora when you want SSH-based repository access.


Very impressive. Thanks