Skip to content
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
omacom:masterfrom
adamwhiles:ubuntu-26.04-upstream
Open

Resolve packages, repos and Yaru variants against the running Ubuntu release#615
adamwhiles wants to merge 1 commit into
omacom:masterfrom
adamwhiles:ubuntu-26.04-upstream

Conversation

@adamwhiles

Copy link
Copy Markdown

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

Package Status
gnome-tweak-tool transitional package dropped; the real name has always been gnome-tweaks
libncurses5-dev folded into libncurses-dev
libvips runtime is now libvips42t64, pulled in by libvips-tools

Each 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-bark and Yaru-viridian; 25.10 dropped both and added wartybrown and yellow. Everforest was left setting a gtk-theme that isn't installed, so GNOME silently fell back to stock Ubuntu orange — no error, just the wrong theme.

Separately, GNOME 47+ takes accent-color from a fixed enum (blue teal green yellow orange red pink purple slate brown) whose names only partly overlap Yaru's variant names, so magenta, sage, bark and grey were 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, orange and grey were 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 resolute builds today, so this is about the next release rather than this one.

Smaller fixes found along the way

  • check-version.sh used bc, which server and minimal installs don't have. dpkg --compare-versions ships everywhere.
  • Framework detection ran xrandr unguarded — 26.04 has no X11 session at all. It also wrote the terminal font size to alacritty.toml, which stopped holding it when font-size.toml was split out, so the Framework path had been a no-op for a while.
  • app-wl-clipboard.sh was missing -y and prompted mid-install.
  • app-cursor.sh pipes the download URL through jq without installing it.
  • applications.sh assumed ~/.local/share/applications already exists.
  • The Xtra app folder lists ids GNOME has renamed (org.Charactersorg.gnome.Characters, Eye of GNOME → Loupe). Both are listed now; ids with no installed app are ignored by GNOME.
  • TopHat's theme colour and the accent-color write 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.sh or set-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.sh repairs 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

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>
Copilot AI review requested due to automatic review settings July 29, 2026 13:09

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.sh helper 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-color enum 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 thread install/lib/compat.sh
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
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Themes apply non-existent Yaru variants and invalid accent-color (Ubuntu 26.04)

2 participants