Compare commits

..
Author SHA1 Message Date
theupriser 34babe8d47 Merge pull request #93 from theupriser/feature/desktop-icons-top-right
Sync git.upriser.nl mirror / sync (push) Skipped
Single-file build / bundle (push) Successful in 15s
GNOME theme: desktop icons from the top right
2026-10-15 21:15:15 +02:00
theupriser b67c15b992 Merge release/2.13.0 into feature/desktop-icons-top-right
Sync git.upriser.nl mirror / sync (push) Skipped
2026-10-15 21:14:42 +02:00
theupriser dbc0532f64 Merge pull request #92 from theupriser/feature/dock-bottom
Sync git.upriser.nl mirror / sync (push) Skipped
Single-file build / bundle (push) Successful in 28s
GNOME theme: the dock at the bottom by default
2026-10-15 21:14:16 +02:00
theupriser 18d3659d36 GNOME theme: desktop icons from the top right, Steamify's launchers placed from there 2026-10-15 21:13:41 +02:00
theupriser 916c3b67d5 GNOME theme: the dock at the bottom by default 2026-10-15 21:11:14 +02:00
theupriser 0151b66144 Merge pull request #91 from theupriser/bugfix/gnome-extras-ownership
Sync git.upriser.nl mirror / sync (push) Skipped
Single-file build / bundle (push) Successful in 16s
Turning everything off gives GNOME back the desktop and tray icon extensions Steamify added
2026-10-15 21:08:31 +02:00
theupriser 200c15b257 Merge pull request #90 from theupriser/bugfix/gnome-theme-leftovers
Sync git.upriser.nl mirror / sync (push) Skipped
Single-file build / bundle (push) Successful in 16s
GNOME theme off: remove the dock's and tiling's settings schemas
2026-10-15 21:08:18 +02:00
theupriser 063b5a8032 Turning everything off gives GNOME back the desktop and tray icon extensions Steamify added 2026-10-15 21:07:15 +02:00
5 changed files with 81 additions and 3 deletions

No files matched your search

+3
View File
@@ -19,6 +19,9 @@ one per merged pull request.
- **feat: a run that only needs a new GNOME login (the theme, no reboot) ends with a countdown on the done screen ("Restarting GNOME in 10 s", with Restart GNOME now and Cancel) and then logs in again by itself, the counterpart of KDE restarting plasmashell (GNOME Shell on Wayland is the compositor too and can't restart in place). A run that needs a reboot keeps "Restart now" (it loads GNOME fresh): before, the Restart GNOME button was hidden then, and nothing started by itself**
- **fix: Restart GNOME logs in to GNOME: after the SteamOS conversion the account's session is gaming mode, and the relogin went there (a restart that took a minute: Steam starting in gaming mode). `steamify-gdm-relogin` takes the session to log in to (the one the app runs in) for this login only and puts the account's session, the one the next boot goes to, back once the new session is up**
- **fix: turning the GNOME theme off also removes the dock's and tiling's settings schemas that were copied to `~/.local/share/glib-2.0/schemas` for GNOME Settings' panel (they stayed behind, for extensions that were gone). Desktop Icons NG and AppIndicator stay: they belong to the SteamOS conversion (the desktop shortcut and Steam's tray icon)**
- **fix: turning everything off gives GNOME back what Steamify added for the desktop and tray icons: Desktop Icons NG and AppIndicator (and Extension Manager), which the SteamOS conversion and now the GNOME theme both need. When the last of the two is turned off, the two extensions leave the user's list of enabled extensions and the packages Steamify installed (noted in `gnomeextras.list` before installing, so packages the user had stay) are removed; while the other one is still on they stay, and are enabled again (the theme's undo puts back the list it found). Before, nothing removed them. The theme installs them itself too**
- **feat: the GNOME theme puts the dock at the bottom of the screen (Ubuntu's own default is the left); it can still be moved in GNOME Settings > GNOME Desktop (the Dock panel)**
- **feat: the GNOME theme puts the desktop icons at the top right (Desktop Icons NG's start corner, like Ubuntu and macOS) and clears the saved positions of Steamify's own launchers (Return to Gaming Mode, Steamify, Steam) so they are placed from there, in name order; the user's own files keep theirs. Turning the theme off puts the start corner back**
## 2.12.0 - 2026-10-13
+45
View File
@@ -141,3 +141,48 @@ gnome_extensions_enable() {
gsettings set org.gnome.shell enabled-extensions "$enabled"
done
}
# The packages behind them. Needed by the SteamOS conversion (the desktop shortcut's icon, Steam's tray icon) and by the
# GNOME theme (its desktop and tray icons); a PC that has neither any more gets back what Steamify added.
GNOME_EXTRA_PKGS=(gnome-shell-extension-desktop-icons-ng gnome-shell-extension-appindicator extension-manager)
gnome_extras_note_missing() {
# Before they are installed: which of them Steamify brings itself (the others were the user's: they stay), one name per
# line in a file of its own, not a state value: kwriteconfig6 (kconfig) is one of the packages installed in that step.
# Already noted ones stay noted (they are installed by then, so they aren't "missing" again).
local p list="$STATE_DIR/gnomeextras.list"
mkdir -p "$STATE_DIR"
for p in "${GNOME_EXTRA_PKGS[@]}"; do
pacman -Q "$p" >/dev/null 2>&1 || grep -qxF "$p" "$list" 2>/dev/null || echo "$p" >> "$list"
done
}
gnome_extensions_disable() {
# The two out of the user's list of enabled extensions again.
user_session && command -v gsettings >/dev/null || return 0
local uuid enabled
for uuid in "${GNOME_EXTENSIONS[@]}"; do
enabled="$(gsettings get org.gnome.shell enabled-extensions 2>/dev/null)" || return 0
[[ "$enabled" == *"$uuid"* ]] || continue
enabled="$(sed -e "s/'$uuid', //; s/, '$uuid'//; s/'$uuid'//" <<<"$enabled")"
[[ "$enabled" == "[]" ]] && enabled="@as []"
gsettings set org.gnome.shell enabled-extensions "$enabled"
done
}
gnome_extras_release() {
# Called when the SteamOS conversion or the GNOME theme was turned off, after its own undoing. While the other one is
# still on, the extensions stay (and are enabled again: the theme's undo puts back the list it found). When neither is:
# they are disabled, and the packages Steamify installed are removed (a failed removal, because something else needs a
# package, keeps it).
[[ "$(desktop_kind)" == gnome ]] || return 0
if gaming_status || gnometheme_status; then gnome_extensions_enable; return 0; fi
gnome_extensions_disable
local p list="$STATE_DIR/gnomeextras.list"
for p in "${GNOME_EXTRA_PKGS[@]}"; do
grep -qxF "$p" "$list" 2>/dev/null || continue
pacman -Q "$p" >/dev/null 2>&1 || continue
sudo pacman -R --noconfirm "$p" >/dev/null 2>&1 || info "Keeping $p installed (another package needs it)."
done
rm -f "$list"
}
+30 -3
View File
@@ -91,16 +91,20 @@ gnometheme_shell() {
# The top bar and dash colors (the Steamify Vapor extension), and the dock beside it.
gnometheme_extensions_install
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.
# Ubuntu's dock, always there, at the bottom (Ubuntu puts it on the left; on a wide screen the bottom is where the eye
# and the pointer are); 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-position "'BOTTOM'" || true
gset gnometheme $d dock-fixed true || true
gset gnometheme $d running-indicator-style "'DOTS'" || true
gset gnometheme $d click-action "'minimize-or-previews'" || true
# Trash is in the dock, not on the desktop (Ubuntu does the same).
gset gnometheme org.gnome.shell.extensions.ding show-trash false || true
gset gnometheme $d show-trash true || true
# Desktop icons from the top right, like Ubuntu's and macOS's desktops (Desktop Icons NG fills from the corner it starts at).
gset gnometheme org.gnome.shell.extensions.ding start-corner "'top-right'" || true
gnometheme_desktop_icons_reset
local uuid enabled
for uuid in "${GNOME_THEME_EXTENSIONS[@]}"; do
enabled="$(gs get org.gnome.shell enabled-extensions 2>/dev/null)" || return 0
@@ -111,6 +115,26 @@ gnometheme_shell() {
done
}
gnometheme_desktop_icons_reset() {
# Steamify's own launchers on the desktop were placed (and their spot saved) from the left corner: without a saved
# position Desktop Icons NG puts them where its start corner says, by name. Only these, never the user's files.
local dir f
dir="$(xdg-user-dir DESKTOP 2>/dev/null || echo "$HOME/Desktop")"
for f in "$dir/Return to Gaming Mode.desktop" "$dir/io.github.theupriser.Steamify.desktop" "$dir/steam.desktop"; do
[[ -e "$f" ]] && gio set -t unset "$f" metadata::nautilus-icon-position 2>/dev/null
done
return 0
}
gnometheme_extras_install() {
# The desktop icons and the tray icons of the Ubuntu-style look: Desktop Icons NG and AppIndicator (and Extension Manager
# for them), the same the SteamOS conversion needs (lib/desktop-shortcut.sh). Not fatal: the theme works without them.
gnome_extras_note_missing
sudo pacman -S --needed --noconfirm "${GNOME_EXTRA_PKGS[@]}" >/dev/null 2>&1 ||
{ warn "Couldn't install Desktop Icons NG and AppIndicator: the desktop and the tray show no icons."; return 0; }
gnome_extensions_enable
}
gnometheme_relogin_needed() {
# A GNOME session is running and this run changed the theme: GNOME Shell on Wayland can't be restarted in place, so
# the new extensions, the dock and the Settings panel show after the user logs in again.
@@ -186,6 +210,7 @@ gnometheme_enable() {
fi
{ echo "$GNOME_THEME_MARK"; patch_file steamify-gnome-gtk4.css; } > "$GNOME_THEME_CSS"
gnometheme_shell
gnometheme_extras_install
gnometheme_settings_install
ok "SteamOS theme for GNOME on (apps pick up the colors when they start again)."
# (GNOME Shell on Wayland can't restart in place: the app offers "Restart GNOME", which is this.)
@@ -227,5 +252,7 @@ gnometheme_disable() {
info "Keeping GNOME Settings with the Desktop panel (the stock one couldn't be installed)."
fi
state_clear gnometheme
# (After the state is cleared and the stylesheet is gone: the theme itself is off for gnome_extras_release's check.)
gnome_extras_release
ok "Previous GNOME look restored."
}
+1
View File
@@ -153,6 +153,7 @@ gaming_disable() {
os_name_disable
# NVIDIA with single user mode still on: nothing else logs in by itself any more.
nvidia_present && single_status && single_login_enable
gnome_extras_release
ok "The PC boots to the normal login screen again (from the next boot)."
}
+2
View File
@@ -92,6 +92,8 @@ install_required_packages() {
if [[ ${#MISSING[@]} -gt 0 ]]; then
python_hid_shim_ensure || return 1
# (What the GNOME extensions need is noted first: turning everything off removes what Steamify installed.)
[[ "$(desktop_kind)" == gnome ]] && gnome_extras_note_missing
info "Installing missing packages: ${MISSING[*]}"
sudo pacman -S --needed --noconfirm "${MISSING[@]}" || { err "Package installation failed."; return 1; }
else