Simple rEFInd install script for the Steam Deck (with GUI customization)
翻譯準備中
其他C++ · ShellGitHub @jlobue10自行安裝營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
安裝型專案無需部署網域也可驗證。個人儲存庫可透過 GitHub 登入驗證,組織儲存庫可使用上方的儲存庫驗證檔案。
製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗An easy rEFInd boot manager setup for the Steam Deck, for dual booting SteamOS alongside Windows (internal NVMe or micro SD card), other Linux distros, Batocera, and Ventoy.
Please feel free to donate and support me at the following link. Donations are not required, nor are they expected. I will continue to work on this repository and potential future variations, with or without donations.
Make sure your sudo password is set and you are connected to the internet, then run this from a terminal in desktop mode:
curl -L https://github.com/jlobue10/SteamDeck_rEFInd/raw/main/install-GUI.sh | bash
The installer stages everything into ~/.local/SteamDeck_rEFInd/, installs the latest GUI release package, and creates a desktop shortcut.
pacman is available as a fallback if the Sourceforge download has issues. If you already have a working rEFInd install, you can skip this step.~/.local/SteamDeck_rEFInd/GUI/refind.conf, which you can inspect or hand-edit. If you change the background or icon images, click Create Config again so the new files get staged.sudo password if the rule is missing).Additional buttons and options:
bootnext-refind systemd service (SteamOS updates can otherwise reorder or drop the rEFInd entry); the buttons pop up an xterm that asks for the sudo password and shows the service status when done. In the Windows app they toggle the equivalent scheduled task (SteamDeck_rEFInd_bootnext), which sets rEFInd as the next boot at each Windows logon — replacing the old "Dual Boot Fix" zip.~/.local/SteamDeck_rEFInd/backgrounds/ and installs it as the rEFInd background. Add or remove PNGs in that folder as you like. If you turn it off and want a fixed background again, redo Create Config + Install Config.VTOYEFI partition label (not both concurrently).Custom images: backgrounds should be 1,280x800 PNG files and icons square PNGs — ideally matching the Boot Icon Size you pick in the GUI (128x128 for the default; 256 and 512 versions of the Steam and Windows icons are included for the larger sizes). Other sizes still work, just scaled. PNG is required because other formats are hit and miss with rEFInd.
Everything the GUI installs to the ESP is first staged as plain files under ~/.local/SteamDeck_rEFInd/ (%LOCALAPPDATA%\SteamDeck_rEFInd for the Windows app). Editing those files by hand is supported — the install buttons copy whatever is there:
GUI/refind.conf — generated by Create Config. You can tweak or extend it (extra stanzas, rEFInd options the GUI doesn't expose) before pressing Install Config, which installs it exactly as edited — along with GUI/active_theme.conf when a theme is selected. Pressing Create Config again regenerates the file, so keep a copy of manual edits you want to re-apply.GUI/background.png and GUI/os_icon1.png … os_icon4.png — the staged copies of the selected background and icons. Replacing these files directly (PNG only) works just as well as picking them in the GUI; Install Config installs whatever is staged.backgrounds/ — the pool the background randomizer draws from on each boot; add or remove PNGs as you like.themes/<name>/ — the tree Install Themes copies to the ESP (every folder containing a theme.conf counts). You can edit a bundled theme — swap its icons, tweak its theme.conf — or drop in a new one, then press Install Themes again to install it as-is.Automated since 2.0.0 — just make sure the SD card is inserted when you click Create Config; the Windows-on-SD entry and its partition GUID are detected and resolved automatically.
If you ever need to do it manually, edit /esp/efi/refind/refind.conf with sudo, and in the "Windows SD card" stanza set volume to the SD card ESP's partition UUID (find it with lsblk -o NAME,PARTUUID or KDE Partition Manager) and remove the disabled line. Add disabled to the internal "Windows" stanza if you don't want both shown.
For quick config changes from Game Mode, set up the Plasma Nested Session and add its shortcut to Steam. Launch the nested session, run the GUI, install your changes, then use the 'Return to Gaming Mode' desktop shortcut to exit.
The repo ships a set of community rEFInd themes under themes/. A theme restyles the whole boot menu at once — background, OS/tool icons, selection highlights, and (for some themes) fonts — by way of the theme's own theme.conf, which supersedes the matching settings in the generated refind.conf.
How it works: when a theme is selected, Create Config appends a single stable line to the end of the generated config — include themes/active_theme.conf — and stages active_theme.conf (a copy of the chosen theme's theme.conf) next to it. Switching themes just replaces that one file; refind.conf itself never changes per theme.
Using themes from the GUI:
Random to have one picked for you at Create Config time; None keeps the classic look). Then Create Config and Install Config as usual.themes/ tree to the ESP (EFI/refind/themes/, about 12 MB). Needed once before an installed config's theme can render, and again only if the shipped themes change or you add your own. If the selected theme's files are not on the ESP yet, Install Config says so — until they are, rEFInd falls back to its own default banner (the rEFInd logo, stretched over the screen) instead of the theme.rEFInd_theme_randomizer systemd service on SteamOS, a scheduled task running at each Windows logon in the Windows app): it copies a random theme's theme.conf over themes/active_theme.conf on the ESP. It only acts when the live refind.conf contains the theme include line, so it is inert while the Theme dropdown is None.Note: if both the background randomizer and the theme randomizer are enabled, the theme's banner wins — a theme's theme.conf sets its own banner, which supersedes the randomized background.png.
All theming credit goes to the original theme authors. These themes are redistributed here (unmodified apart from folder-name normalization) purely for install convenience; please star/support the upstream repos.
| Theme | Author | Upstream | License |
|---|---|---|---|
| BlackCatMuzzle | Scorpi-ON (XIIIMICT) | https://github.com/XIIIMICT/BlackCatMuzzle-rEFInd | MIT |
| Matrix-rEFInd | Yannis Vierkötter (Yannis4444) | https://github.com/Yannis4444/Matrix-rEFInd | MIT |
| rEFInd-fallout | awanwar | https://github.com/awanwar/rEFInd-fallout | MIT |
| rEFInd-glassy | Pr0cella | https://github.com/Pr0cella/rEFInd-glassy | No stated theme license (its LICENSE file covers only the bundled Nimbus font, AGPL-3.0) — redistributed with attribution* |
| rEFInd-mountain | Chris Alves (Chrisae9) | https://github.com/Chrisae9/rEFInd-mountain | MIT |
| Starwars-rEFInd | thilakshan2003 | https://github.com/thilakshan2003/Starwars-rEFInd | No license file — redistributed with attribution* |
| wave | zeeshan933 | https://github.com/zeeshan933/Refind-Themes | No license file — redistributed with attribution* |
* These themes carry no explicit redistribution license; they are included with full attribution and links to the originals, and will be removed immediately at the original author's request.
More themes to explore (installable manually the same way — drop a folder holding a theme.conf under themes/, then press Install Themes; the folder name does not have to match the themes/<name>/... paths inside the theme.conf, a theme unpacked as <name>-master works as it is):
The GUI also builds and runs on Windows (Qt6), so you can configure and install rEFInd from the Windows side of a dual-boot Deck. Download SteamDeck_rEFInd-<version>-setup.exe from the Releases page. The installer requests Administrator access so executable code and privileged helpers can be protected under Program Files; mutable configuration stays in %LOCALAPPDATA%\SteamDeck_rEFInd. Release builds are code-signed — see the code signing policy below and Windows/GUI/SIGNING.md.
The Sysd On/Off, Rand BG On/Off, and Theme Rand On/Off buttons work in the Windows app too: each toggles a Windows scheduled task that runs at logon and does what the matching systemd service does on SteamOS (set rEFInd as the next boot, randomize the background, randomize the theme). The installer also offers an optional checkbox — off by default — to enable the "keep rEFInd first" bootnext task right away.
Free code signing provided by SignPath.io, certificate by SignPath Foundation.
The Windows release binaries — SteamDeck_rEFInd.exe, SteamDeck_rEFInd_helper.exe, the bundled windows\*.ps1 scripts, and the SteamDeck_rEFInd-<version>-setup.exe installer — are Authenticode-signed with a certificate issued to this project by SignPath Foundation. Signing happens only inside this repository's GitHub Actions release workflow, from the source at a tagged commit; nothing is signed on a developer machine. The Qt and MinGW runtime DLLs bundled with the app are upstream MSYS2 builds and ship unsigned. Details, including the exact artifact configurations SignPath applies, are in Windows/GUI/SIGNING.md.
Team roles. This is a single-maintainer project; every role is held by @jlobue10:
Privacy policy. This program will not transfer any information to other networked systems unless specifically requested by the user. The only network access is user-initiated: Check For Update (in the About dialog) fetches this repository's VERSION file from GitHub, and Install rEFInd downloads rEFInd from SourceForge and the UsbXbox360Dxe / TouchI2cDxe UEFI drivers from GitHub. No telemetry is collected, and the optional at-logon scheduled tasks work entirely offline. Those downloads are subject to GitHub's privacy statement and SourceForge's privacy policy.
The script method assumes valid EFI boot files exist at /esp/efi/steamos/steamcl.efi (SteamOS) and /esp/efi/Microsoft/Boot/bootmgfw.efi (Windows) — which is the case after a typical dual boot setup. You can verify by holding Volume Up + Power, choosing "Boot from file", and selecting each manually; if either doesn't boot correctly, don't proceed unless you know how to point the refind.conf boot stanzas at your correct EFI files.
If you want custom icons (square PNGs, 128x128 at the default icon size) or a custom background (1,280x800 PNG), swap the files and update refind.conf to match before running the installation script.
From a SteamOS command line in desktop mode:
git clone https://github.com/jlobue10/SteamDeck_rEFInd/
cd SteamDeck_rEFInd
chmod +x SteamDeck_rEFInd_install.sh
./SteamDeck_rEFInd_install.sh
If the pacman repositories are having issues, run this instead for a pacman-free installation (rEFInd downloaded from Sourceforge):
chmod +x refind_install_no_pacman.sh
./refind_install_no_pacman.sh
Afterwards rEFInd is set up with SteamOS as the default OS. The timeout in refind.conf (default 5 seconds) is how long the menu waits before booting the default; -1 boots the default immediately unless a button or trackpad is touched during power-on. Select an OS with the right trackpad + R2, or the D-Pad + A button.
The supplied config uses manual boot stanzas on purpose, to control the icon order left to right. For everything else the config supports, see the rEFInd documentation.
This is one of the most commonly missed steps. Without it, Windows re-inserts itself at the top of the boot order and you never see the rEFInd menu. Two ways to fix it:
Option 1 — disable the Windows EFI entry (from SteamOS desktop mode; the installers also do this automatically):
1. Open "Konsole"
2. type: efibootmgr
## Take note of the Windows EFI four digit number and replace the XXXX in the following commands with that number.
## An active entry shows a '*' after BootXXXX; disabling removes the '*'.
3. type: sudo efibootmgr -b XXXX -A
Current SteamOS (3.9) note:
efibootmgron SteamOS 3.9 cannot rewrite an existing boot entry in place, so step 3 fails even withsudo(creating and deleting entries still works — only the active/inactive toggle is affected). Temporarily loosening the permissions of the entry's NVRAM file works around it:sudo chmod 666 /sys/firmware/efi/efivars/BootXXXX-8be4df61-93ca-11d2-aa0d-00e098032b8c sudo efibootmgr -b XXXX -A sudo chmod 644 /sys/firmware/efi/efivars/BootXXXX-8be4df61-93ca-11d2-aa0d-00e098032b8cThe install/uninstall scripts and the
bootnext-refindservice apply this workaround automatically (and no longer touch entries that are already in the requested state). Booting the SteamOS recovery USB or another live Linux also still works if you prefer not to do this on the installed system.
Option 2 — enable the Windows-side bootnext task (use this especially if option 1 gives a Boot entry not found error). Instead of disabling the Windows entry, a scheduled task sets rEFInd as the next boot every time Windows runs. If you use the Windows app, just click Sysd On there (or tick the "keep rEFInd first" checkbox when installing it) — that registers the task with no extra downloads. The legacy standalone route still works too: while booted into Windows, download this folder and run its batch script as an administrator (video from Deck Wizard, time code 17:57); the app's Sysd On/Off supersedes and replaces that task if you later install the GUI.
bootnext-refind.service failing with status=203/EXEC after a SteamOS update — since SteamOS 3.6 an OS update resets /etc except for keep-listed paths: the service and its enablement survived, but /etc/SteamDeck_rEFInd/ (the script it runs, the GUI's helper) and the passwordless-config sudoers rule did not, so the unit and the randomizers failed and Install Config asked to "reinstall to repair" (#232). Current installers register those paths in /etc/atomic-update.conf.d/SteamDeck_rEFInd.conf so they persist. If you installed before that fix, re-run the GUI install command from this README once; it restores the files and adds the keep-list drop-in. Check with sudo systemctl status bootnext-refind.service; if the unit itself is missing or disabled, recopy systemd/bootnext-refind.service to /etc/systemd/system/ and run sudo systemctl enable --now bootnext-refind.service (the GUI's Sysd On/Off buttons also handle this).sudo efibootmgr -b YYYY -a (YYYY = the Windows entry number; on SteamOS 3.9 use the chmod workaround from the dual boot fix above if the command fails). Disable it again afterwards (see the dual boot fix above).bootnext-refind.service shows "failed ... could not activate ... entry" — older versions of restore_EFI_entries.sh ran efibootmgr -b XXXX -a on every boot, which always fails on SteamOS 3.9 (see the note in the dual boot fix section) even when the entries are healthy and already active. Fixed in the current script: update by re-running the GUI install command from this README, then sudo systemctl restart bootnext-refind.service to clear the failed state.EFI/Linux (for example Fedora with kernel-install layout=uki) as one Boot Option per distro. Its menu entry boots the newest kernel, and older kernels sit in that entry's submenu (F2, Insert or Tab in the boot menu). UKI file names change with every kernel update of that Linux system, and SteamOS can't see those updates. Install on that Linux system: its kernel-install hook re-points these entries in the installed automatically. Otherwise, run Create Config and Install Config here again after it updates its kernel.Run the uninstall script (staged by the GUI install; also available in this repo under scripts/):
~/.local/SteamDeck_rEFInd/scripts/uninstall_rEFInd.sh
It disables the bootnext-refind and background-randomizer services first (otherwise the boot entry would be recreated on the next boot), deletes the rEFInd boot entries that target the Deck's ESP (a rEFInd installed from the Windows side, e.g. on an SD card, is detected and left alone), re-activates the Windows boot entry, removes EFI/refind and EFI/Xbox360 from /esp plus /boot/refind_linux.conf, and removes the pacman refind package. Flags:
--keep-esp-files — undo only the services and boot entries; keep rEFInd's files on /esp--remove-app — also remove the SteamDeck_rEFInd GUI package, ~/.local/SteamDeck_rEFInd, and the desktop shortcutsOn the Windows side, uninstalling "SteamDeck rEFInd GUI" from Settings > Apps asks whether to also remove rEFInd itself and then performs the equivalent cleanup automatically.
rEFInd_GUI is this project's sibling for laptops, desktops, and other handhelds (ASUS ROG Ally/Ally X, Legion Go, and more), with generic Linux + Windows dual boot support and secure boot guidance.
Video tutorial by Deck Wizard — worth a watch before posting an issue.
The GUI follows the system language and currently ships translations for 20 languages alongside English —
German, Dutch, Spanish, French, Italian, Portuguese, Russian, Ukrainian, Turkish,
Japanese, Korean, Simplified Chinese, Vietnamese, Indonesian, Hindi,
Bengali, Sicilian, Arabic, Persian (Farsi), and Urdu (right-to-left layout included
for Arabic, Persian, and Urdu) (untranslated strings fall back to
English). Translation contributions are welcome — see the contributor guide in
I18N_AUDIT.md: add a SteamDeck_rEFInd_<lang>.ts file under
GUI/src/, list it in CMakeLists.txt, and translate it with Qt Linguist.
Special thanks to DeckWizard for extensive testing and feedback.
Special thanks to Reddit user ChewyYui for solving the annoying Windows graphical glitch and helping to figure out the SteamOS splash screen setting from the SteamOS manual boot stanza.
Credit to GitHub user CryoByte33 (maker of steam-deck-utilities) for zenity additions to my own code.
Also thank you to GitHub user YoshiAye for the updated background that I made default for the GUI installation.
This project (and its sibling rEFInd_GUI) is only intended to simplify the installation and configuration of the rEFInd boot manager. All credit for the rEFInd boot manager itself goes to Roderick W. Smith (rodsbooks.com/refind); rEFInd performs all of the complicated bootloader tasks.
If you have an idea for code, script, or GUI improvement, please reach out to me. I am all for making this repository as good as possible. If you are going to use some aspect of my code for your own design, please give some credit or acknowledgment for the original code.
refind.confbcdedit.exe -set {globalsettings} highestmode on (PowerShell: bcdedit /set "{globalsettings}" highestmode on). It prevents the issue entirely.ldd $(command -v SteamDeck_rEFInd) shows libQt5Widgets), install the Qt5 integration (plasma5-integration, where the distro still ships it) — or just update.