From ab3b581f4520033feedfa8cc978fb2b29681a08e Mon Sep 17 00:00:00 2001 From: Rick Peters Date: Wed, 14 Oct 2026 14:46:32 +0200 Subject: [PATCH] GNOME theme: Ubuntu Dock and Tiling Assistant, SteamOS backgrounds in Settings, dock keeps Ubuntu's look, no settings launchers --- lib/gnome-theme.sh | 86 ++++++++++++++++++++------------ patches/steamify-gnome-shell.css | 3 +- 2 files changed, 55 insertions(+), 34 deletions(-) diff --git a/lib/gnome-theme.sh b/lib/gnome-theme.sh index 415f805..c56c9e1 100644 --- a/lib/gnome-theme.sh +++ b/lib/gnome-theme.sh @@ -10,10 +10,13 @@ GNOME_THEME_CSS="${XDG_CONFIG_HOME:-$HOME/.config}/gtk-4.0/gtk.css" # The Ubuntu-style look: the dock (Ubuntu Dock is Dash to Dock) and our own extension, # Steamify Vapor, which carries the shell colors (its stylesheet.css) and starts GNOME on # the desktop. (Desktop Icons NG and AppIndicator come with the conversion, lib/desktop-shortcut.sh.) -GNOME_THEME_EXTENSIONS=(dash-to-dock@micxgx.gmail.com steamify-vapor@steamify.github.io) -# CachyOS's dash-to-dock package (106) doesn't load on GNOME 51: upstream's release, from extensions.gnome.org's tag. -DOCK_URL="https://github.com/micheleg/dash-to-dock/releases/download/extensions.gnome.org-v110/dash-to-dock@micxgx.gmail.com.zip" -DOCK_SHA256=3e60680fe7217b905aac4f10deb042e39fcf49168c9b8fdcc5a711bdd49bd3d2 +GNOME_THEME_EXTENSIONS=(ubuntu-dock@ubuntu.com tiling-assistant@ubuntu.com steamify-vapor@steamify.github.io) +# Ubuntu's own builds, the ones Ubuntu 26.04 ships (they are the more mature): Ubuntu Dock from its source tag +# (built here: needs make, sassc and gettext) and Tiling Assistant (Ubuntu maintains it now) from its release. +DOCK_URL="https://github.com/micheleg/dash-to-dock/archive/refs/tags/ubuntu-dock-109ubuntu2.tar.gz" +DOCK_SHA256=599057fa27d922d4730bfc27c803b1b14b05f49a20e580e154e151b8481e5d41 +TILING_URL="https://github.com/ubuntu/Tiling-Assistant/releases/download/v56/tiling-assistant@leleat-on-github.shell-extension.zip" +TILING_SHA256=961da0c6b8e5960770e68a06d71205765870435dbe8fe0ccc1ec50d4cc78265a GNOME_USER_EXTENSIONS="${XDG_DATA_HOME:-$HOME/.local/share}/gnome-shell/extensions" GNOME_THEME_WALLPAPER="/usr/share/wallpapers/Steam Deck Logo Default.jpg" @@ -22,18 +25,34 @@ gnometheme_status() { } gnometheme_extensions_install() { - # The dock (pinned upstream release) and the start-on-the-desktop extension, in the user's own extensions folder. - local zip dir="$GNOME_USER_EXTENSIONS/dash-to-dock@micxgx.gmail.com" - if [[ ! -f "$dir/metadata.json" ]] || ! grep -q '"version": 110' "$dir/metadata.json"; then - zip="$(mktemp --suffix=.zip)" - if curl -fsSL --max-time 60 "$DOCK_URL" -o "$zip" && [[ "$(sha256sum < "$zip")" == "$DOCK_SHA256 -" ]]; then + # Ubuntu Dock and Tiling Assistant (pinned downloads, checked) and our own Steamify Vapor, in the user's own extensions folder. + local file work dir + dir="$GNOME_USER_EXTENSIONS/ubuntu-dock@ubuntu.com" + if [[ ! -f "$dir/metadata.json" ]]; then + file="$(mktemp --suffix=.tar.gz)"; work="$(mktemp -d)" + sudo pacman -S --needed --noconfirm make sassc gettext >/dev/null 2>&1 + if curl -fsSL --max-time 60 "$DOCK_URL" -o "$file" && [[ "$(sha256sum < "$file")" == "$DOCK_SHA256 -" ]] && + tar xzf "$file" -C "$work" --strip-components=1 && + make -C "$work" install-local INSTALLBASE="$GNOME_USER_EXTENSIONS" >/dev/null 2>&1; then + : + else + warn "Couldn't set up Ubuntu Dock; the dock stays off." + fi + rm -rf "$file" "$work" + fi + dir="$GNOME_USER_EXTENSIONS/tiling-assistant@ubuntu.com" + if [[ ! -f "$dir/metadata.json" ]]; then + file="$(mktemp --suffix=.zip)" + if curl -fsSL --max-time 60 "$TILING_URL" -o "$file" && [[ "$(sha256sum < "$file")" == "$TILING_SHA256 -" ]]; then rm -rf "$dir"; mkdir -p "$dir" - python3 -c 'import sys,zipfile;zipfile.ZipFile(sys.argv[1]).extractall(sys.argv[2])' "$zip" "$dir" + python3 -c 'import sys,zipfile;zipfile.ZipFile(sys.argv[1]).extractall(sys.argv[2])' "$file" "$dir" + # Under the name Ubuntu gives it (GNOME Settings' desktop panel looks for it). + sed -i 's|"uuid": "tiling-assistant@leleat-on-github"|"uuid": "tiling-assistant@ubuntu.com"|' "$dir/metadata.json" glib-compile-schemas "$dir/schemas" 2>/dev/null else - warn "Couldn't download the dock (Dash to Dock 110); it stays off." + warn "Couldn't download Tiling Assistant; it stays off." fi - rm -f "$zip" + rm -f "$file" fi dir="$GNOME_USER_EXTENSIONS/steamify-vapor@steamify.github.io" mkdir -p "$dir" @@ -42,34 +61,33 @@ gnometheme_extensions_install() { patch_file steamify-gnome-shell.css > "$dir/stylesheet.css" } -gnometheme_settings_launchers() { - # GNOME Settings has no "Ubuntu Desktop" panel (that is Ubuntu's own patch): launchers - # for the preferences of the dock and of the desktop icons stand in for it. - local apps="${XDG_DATA_HOME:-$HOME/.local/share}/applications" id name uuid - mkdir -p "$apps" - for id in dock:"Dock Settings":dash-to-dock@micxgx.gmail.com icons:"Desktop Icons Settings":ding@rastersoft.com; do - IFS=: read -r id name uuid <<< "$id" - printf '%s\n' '[Desktop Entry]' 'Type=Application' "Name=$name" "Comment=Steamify GNOME theme: $name" \ - "Exec=gnome-extensions prefs $uuid" 'Icon=preferences-desktop' 'Categories=Settings;DesktopSettings;GTK;' \ - 'X-Steamify-Theme=true' > "$apps/steamify-$id-settings.desktop" - done +gnometheme_backgrounds() { + # The SteamOS wallpapers of cachyos-vapor in GNOME Settings' background list: its XML list in the user's folder. + local xml="${XDG_DATA_HOME:-$HOME/.local/share}/gnome-background-properties/steamify-steamos.xml" f name + mkdir -p "$(dirname "$xml")" + { + printf '%s\n' '' '' '' + for f in /usr/share/wallpapers/*.jpg; do + [[ -f "$f" ]] || continue + name="$(basename "$f" .jpg)" + printf ' \n SteamOS: %s\n %s\n %s\n zoom\n #24272c\n #24272c\n solid\n \n' "$name" "$f" "$f" + done + echo '' + } > "$xml" } gnometheme_shell() { # The top bar and dash colors (the Steamify Vapor extension), and the dock beside it. gnometheme_extensions_install - gnometheme_settings_launchers - # Like Ubuntu's dock: on the left, always there, in Vapor's panel color. Its shape (a + gnometheme_backgrounds + # Like Ubuntu's dock: on the left, always there; its look is Ubuntu's own, left as it is. Its shape (a # panel to the screen edge or floating) is left to the user: Dock Settings. local d=org.gnome.shell.extensions.dash-to-dock gset gnometheme $d dock-position "'LEFT'" || true gset gnometheme $d dock-fixed true || true - gset gnometheme $d transparency-mode "'FIXED'" || true - gset gnometheme $d custom-background-color true || true - gset gnometheme $d background-color "'#24272c'" || true - gset gnometheme $d background-opacity 0.95 || true gset gnometheme $d running-indicator-style "'DOTS'" || true - gset gnometheme $d custom-theme-shrink true || true + gset gnometheme $d click-action "'minimize-or-previews'" || true + gset gnometheme $d show-trash true || true local uuid enabled for uuid in "${GNOME_THEME_EXTENSIONS[@]}"; do enabled="$(gs get org.gnome.shell enabled-extensions 2>/dev/null)" || return 0 @@ -91,6 +109,8 @@ gnometheme_enable() { gset gnometheme org.gnome.desktop.interface color-scheme "'prefer-dark'" gset gnometheme org.gnome.desktop.interface accent-color "'blue'" || true gset gnometheme org.gnome.desktop.interface gtk-theme "'Vapor'" || true + # Windows with minimize and maximize buttons, like Ubuntu (GNOME shows only close by default). + gset gnometheme org.gnome.desktop.wm.preferences button-layout "'appmenu:minimize,maximize,close'" || true if [[ -f "$GNOME_THEME_WALLPAPER" ]]; then local uri="file://${GNOME_THEME_WALLPAPER// /%20}" gset gnometheme org.gnome.desktop.background picture-uri "'$uri'" @@ -110,8 +130,10 @@ gnometheme_enable() { gnometheme_disable() { info "Restoring GNOME's previous look..." grevert gnometheme - rm -f "${XDG_DATA_HOME:-$HOME/.local/share}"/applications/steamify-{dock,icons}-settings.desktop - rm -rf "$GNOME_USER_EXTENSIONS/steamify-vapor@steamify.github.io" "$GNOME_USER_EXTENSIONS/dash-to-dock@micxgx.gmail.com" + # (The Dock/Desktop Icons/Tiling Settings launchers of earlier prototypes.) + rm -f "${XDG_DATA_HOME:-$HOME/.local/share}"/applications/steamify-{dock,icons,tiling}-settings.desktop \ + "${XDG_DATA_HOME:-$HOME/.local/share}/gnome-background-properties/steamify-steamos.xml" + rm -rf "$GNOME_USER_EXTENSIONS/steamify-vapor@steamify.github.io" "$GNOME_USER_EXTENSIONS/ubuntu-dock@ubuntu.com" "$GNOME_USER_EXTENSIONS/tiling-assistant@ubuntu.com" if [[ -f "$STATE_DIR/gnometheme-gtk4.css" ]]; then mv -f "$STATE_DIR/gnometheme-gtk4.css" "$GNOME_THEME_CSS" else diff --git a/patches/steamify-gnome-shell.css b/patches/steamify-gnome-shell.css index 8f47b5f..f966c0d 100644 --- a/patches/steamify-gnome-shell.css +++ b/patches/steamify-gnome-shell.css @@ -17,8 +17,7 @@ color: #eff0f1; } -/* Dash in the overview, popups and the calendar. */ -#dash .dash-background { background-color: #24272c; } +/* Popups and the calendar (the dock keeps Ubuntu's own look). */ .popup-menu-content, .candidate-popup-content, .message-list-clear-button {