This repository was archived by the owner on Aug 30, 2026. It is now read-only.
Resolve packages, repos and Yaru variants against the running Ubuntu release - #615
Open
adamwhiles wants to merge 1 commit into
Open
Resolve packages, repos and Yaru variants against the running Ubuntu release#615adamwhiles wants to merge 1 commit into
adamwhiles wants to merge 1 commit into
Conversation
Omakub resolves what it installs against names that were correct for 24.04. Several no longer exist on 26.04, and Yaru dropped an accent two themes depend on. Rather than swap in the 26.04 names and break again on 26.10, resolve against whatever the running release actually ships. Adds install/lib/compat.sh and uses it where a name is release-dependent: - gnome-tweak-tool, libncurses5-dev and libvips are gone from 26.04. Each is resolved from a candidate list, so 24.04 and 26.04 both work. - Yaru replaced the bark and viridian accents with wartybrown and yellow. Everforest was left pointing at an uninstalled theme, falling back to stock Ubuntu orange with no error. Themes now resolve to an installed variant, and pick a valid value from Gnome 47+'s accent-color enum, which uses names that only partly overlap Yaru's. Fixes omacom#604. - Docker, and the fastfetch, Ulauncher and Mainline PPAs, are keyed on the Ubuntu codename and publish for a new release on their own schedule. Each is checked for a build before its source is written, falling back to the archive or to the newest suite the vendor does carry, rather than leaving a source that 404s on every later apt update. - The TopHat theme colour and the accent-color write skip cleanly when the schema is absent instead of erroring out of a theme switch. Also fixed along the way: - check-version.sh used bc, which server and minimal installs lack. dpkg ships everywhere and compares versions natively. - Framework detection ran xrandr unguarded; 26.04 has no X11 session. It also wrote the terminal font size to alacritty.toml, which stopped holding it when font-size.toml was split out. - app-wl-clipboard.sh was missing -y, so it prompted mid-install. - app-cursor.sh pipes the download URL through jq without installing it. - applications.sh assumed ~/.local/share/applications exists. - The Xtra app folder lists ids Gnome has since renamed; both are listed now, and missing ones are ignored. Scoped to avoid conflicting with omacom#600, which already covers the dev language scripts and the Space Bar schema split. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR improves Ubuntu release portability by resolving package names, repository suites/PPAs, and Yaru theme/accent variants against what the running Ubuntu/GNOME environment actually provides, reducing breakage across 24.04 → 26.04 and future series.
Changes:
- Added
install/lib/compat.shhelper utilities for package/ppa availability checks and GNOME/Yaru compatibility mapping. - Updated installers to avoid adding repos/PPAs that don’t publish for the current series and to gracefully skip missing GNOME settings/schemas.
- Updated theme application to select an installed Yaru variant and translate theme colors into valid GNOME
accent-colorenum values.
Tip
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or run gh pr ready --undo.
Click "Ready for review" or run gh pr ready to reengage.
Reviewed changes
Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
install/lib/compat.sh |
New compatibility helpers for apt/package selection, repo/ppa publication checks, and GNOME/Yaru setting resolution. |
themes/set-gnome-theme.sh |
Resolves Yaru variant to an installed theme/icon set; maps theme color to valid GNOME accent-color when available. |
themes/tokyo-night/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/rose-pine/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/ristretto/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/osaka-jade/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/nord/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/matte-black/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/kanagawa/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/gruvbox/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/everforest/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
themes/catppuccin/tophat.sh |
Uses compatibility helper to avoid erroring when TopHat schema isn’t present. |
migrations/1785277200.sh |
Migration to repair renamed packages and repoint invalid Yaru theme/accent settings after upgrading to Ubuntu 26.04. |
install/terminal/libraries.sh |
Resolves renamed libncurses and libvips packages via compatibility helpers. |
install/terminal/docker.sh |
Avoids writing a Docker source for an unpublished Ubuntu series by falling back to the newest published suite. |
install/terminal/app-fastfetch.sh |
Adds PPA only if it publishes for the current series; otherwise falls back to archive package. |
install/desktop/ulauncher.sh |
Adds Ulauncher PPA only if it publishes for the current series; otherwise skips with an actionable message. |
install/desktop/optional/app-mainline-kernels.sh |
Adds Mainline PPA only if it publishes for the current series; otherwise skips with a message. |
install/desktop/optional/app-cursor.sh |
Installs missing dependencies (jq, fuse packages) required for Cursor AppImage download/run. |
install/desktop/applications.sh |
Ensures ~/.local/share/applications exists before sourcing application scripts. |
install/desktop/app-wl-clipboard.sh |
Adds -y to prevent mid-install prompts. |
install/desktop/app-gnome-tweak-tool.sh |
Installs gnome-tweaks when gnome-tweak-tool no longer exists on newer releases. |
install/desktop/set-framework-text-scaling.sh |
Avoids noisy errors when dmidecode/xrandr aren’t available; updates alacritty font-size file target. |
install/desktop/set-app-grid.sh |
Includes both old/new GNOME desktop IDs to support renamed apps across releases. |
install/check-version.sh |
Replaces bc version comparison with dpkg --compare-versions for minimal/server compatibility. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+95
to
+101
| ppa_publishes_package() { | ||
| local ppa=${1#ppa:} package=$2 series=${3:-$(omakub_ubuntu_codename)} | ||
|
|
||
| curl --silent --fail --location --max-time 20 \ | ||
| "https://ppa.launchpadcontent.net/${ppa%%/*}/${ppa#*/}/ubuntu/dists/$series/main/binary-$(dpkg --print-architecture)/Packages.gz" | | ||
| gunzip 2>/dev/null | grep -qx "Package: $package" | ||
| } |
| apt_install_first libfuse2t64 libfuse2 | ||
|
|
||
| cd /tmp | ||
| curl -L "https://www.cursor.com/api/download?platform=linux-x64&releaseTrack=stable" | jq -r '.downloadUrl' | xargs curl -L -o cursor.appimage |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Omakub resolves what it installs against names that were correct for 24.04. Four of them no longer exist on 26.04, and Yaru dropped an accent two themes depend on. Swapping in the 26.04 names would just break again on 26.10, so this resolves against whatever the running release actually ships.
Verified on a stock Ubuntu 26.04 (Resolute Raccoon) desktop, GNOME Shell 50.1, and re-checked against 24.04 package data so nothing regresses there.
Packages that no longer exist on 26.04
gnome-tweak-toolgnome-tweakslibncurses5-devlibncurses-devlibvipslibvips42t64, pulled in bylibvips-toolsEach is resolved from a candidate list, so 24.04 and 26.04 both work from the same script.
Yaru variants and accent-color — fixes #604
24.04 shipped
Yaru-barkandYaru-viridian; 25.10 dropped both and addedwartybrownandyellow. Everforest was left setting agtk-themethat isn't installed, so GNOME silently fell back to stock Ubuntu orange — no error, just the wrong theme.Separately, GNOME 47+ takes
accent-colorfrom a fixed enum (blue teal green yellow orange red pink purple slate brown) whose names only partly overlap Yaru's variant names, somagenta,sage,barkandgreywere being dropped on the floor.Themes now resolve to a variant that is installed and translate the accent onto a value the enum accepts. As #604 notes,
green,orangeandgreywere never Yaru variant names on any release — those keep falling back to stock Yaru exactly as before, but they now get a sensible accent instead of none.Codename-keyed repositories
Docker and the fastfetch, Ulauncher and Mainline PPAs are keyed on the Ubuntu codename and publish for a new release on their own schedule. Adding a source before the vendor has published leaves a 404 that breaks every later
apt update, not just the install.Each is now checked for a build first. Docker falls back to the newest suite it does carry (walking back through
/usr/share/distro-info/ubuntu.csv), fastfetch falls back to the archive package — 26.04 carries it in universe — and Ulauncher and Mainline skip with a message telling the user to re-run once the PPA catches up.All three PPAs do have
resolutebuilds today, so this is about the next release rather than this one.Smaller fixes found along the way
check-version.shusedbc, which server and minimal installs don't have.dpkg --compare-versionsships everywhere.xrandrunguarded — 26.04 has no X11 session at all. It also wrote the terminal font size toalacritty.toml, which stopped holding it whenfont-size.tomlwas split out, so the Framework path had been a no-op for a while.app-wl-clipboard.shwas missing-yand prompted mid-install.app-cursor.shpipes the download URL throughjqwithout installing it.applications.shassumed~/.local/share/applicationsalready exists.org.Characters→org.gnome.Characters, Eye of GNOME → Loupe). Both are listed now; ids with no installed app are ignored by GNOME.accent-colorwrite now skip cleanly when the schema is absent, instead of erroring out of a theme switch when the extension isn't installed.Scope
Deliberately does not touch
select-dev-language.sh,uninstall/dev-language.shorset-gnome-extensions.sh— #600 already covers the dev language rewrite and the Space Bar schema split, and I didn't want to collide with it. This should merge cleanly alongside that PR in either order.migrations/1785277200.shrepairs an existing install carried onto 26.04: reinstalls the renamed packages and repoints a theme left on a Yaru variant that is no longer installed.I also have a non-root preflight checker that verifies every package, repository, PPA, extension, gsettings key, theme variant and download without changing anything — happy to open it as a follow-up if that's of interest, but I left it out to keep this focused.
🤖 Generated with Claude Code