Install the desktop this repository already describes
The shell named a font, a pointer theme and a wallpaper that no package list installed and no stage placed. It went unnoticed because this machine collected all three under sunhat and never lost them; a fresh Fedora box would have come up with tofu for every shell glyph, the default pointer, and no wallpaper -- while Wallpaper.qml called that missing file `shippedPath`. The dependency contract reported PASS throughout, because it reads commands that scripts invoke and none of these are one. The new assets contract covers what it structurally cannot: fonts and pointer themes named in configs and gsettings, a shipped wallpaper that must exist, commands launched from QML, and directories nothing puts into service. Written against the broken tree first, where it found ten faults. Four of those were packages nobody had noticed were missing -- gnome-calendar, podman, pipewire-utils and flatpak -- alongside gnome-control-center, which backs fifteen rows of Panama's own Settings and is commented so it is not mistaken for GNOME-session residue later. Fonts turned out to need no install stage at all. Terra, which install-packages already enables, packages every Nerd Font, so sunhat's wget-and-unzip is replaced by five lines in a package list. The pointer theme had no such luck: it is packaged nowhere, so it is vendored rather than downloaded from a URL that can rot. espanso stays undeclared. It is in no enabled repository, and building it from source is the install method this repository is trying to stop using. Claude-Session: https://claude.ai/code/session_01Q84axqUE5inJhf5Jz9CFy1
This commit is contained in:
@@ -243,6 +243,51 @@ for icon_file in "$PANAMA_ICON_DIR"/*.svg; do
|
||||
done
|
||||
gtk-update-icon-cache -f -t "$HOME/.local/share/icons/hicolor" 2>/dev/null || true
|
||||
|
||||
# The pointer theme. oreo_blue_cursors is packaged by no Fedora repository -- it
|
||||
# is a GitHub project -- so rather than download it at install time and depend on
|
||||
# a URL that can rot, the theme is vendored into this repository and exposed the
|
||||
# same way Panama's application icons are. Without it, every gsettings value,
|
||||
# GTK settings.ini and XCURSOR_THEME naming it resolves to nothing and the
|
||||
# session falls back to the default pointer.
|
||||
PANAMA_CURSOR_DIR="$PANAMA_PATH/config/local/share/icons"
|
||||
USER_CURSOR_DIR="$HOME/.local/share/icons"
|
||||
mkdir -p "$USER_CURSOR_DIR"
|
||||
for cursor_src in "$PANAMA_CURSOR_DIR"/*_cursors; do
|
||||
[ -d "$cursor_src" ] || continue
|
||||
cursor_name="$(basename "$cursor_src")"
|
||||
cursor_dst="$USER_CURSOR_DIR/$cursor_name"
|
||||
if [ -L "$cursor_dst" ]; then
|
||||
rm "$cursor_dst"
|
||||
elif [ -e "$cursor_dst" ]; then
|
||||
log "Keeping existing cursor theme at $cursor_dst"
|
||||
continue
|
||||
fi
|
||||
ln -s "$cursor_src" "$cursor_dst"
|
||||
log "Linked cursor theme → $cursor_dst"
|
||||
done
|
||||
|
||||
# The wallpaper the desktop already believes it ships. Wallpaper.qml calls this
|
||||
# path `shippedPath` and substitutes it whenever wallpaperPath is unset, which is
|
||||
# its default; panama-lock falls back to the same file, and hyprpaper.conf names
|
||||
# it directly. Copied rather than symlinked, because ~/Pictures/Wallpapers is a
|
||||
# directory the user owns and adds their own images to -- a symlink there would
|
||||
# be a repository file masquerading as one of their own.
|
||||
PANAMA_WALLPAPER_DIR="$PANAMA_PATH/config/wallpapers"
|
||||
USER_WALLPAPER_DIR="$HOME/Pictures/Wallpapers"
|
||||
if [ -d "$PANAMA_WALLPAPER_DIR" ]; then
|
||||
mkdir -p "$USER_WALLPAPER_DIR"
|
||||
for wallpaper_src in "$PANAMA_WALLPAPER_DIR"/*; do
|
||||
[ -f "$wallpaper_src" ] || continue
|
||||
wallpaper_dst="$USER_WALLPAPER_DIR/$(basename "$wallpaper_src")"
|
||||
if [ -e "$wallpaper_dst" ]; then
|
||||
log "Keeping existing wallpaper at $wallpaper_dst"
|
||||
else
|
||||
cp "$wallpaper_src" "$wallpaper_dst"
|
||||
log "Copied wallpaper → $wallpaper_dst"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
PANAMA_APPLICATION_DIR="$PANAMA_PATH/config/local/share/applications"
|
||||
USER_APPLICATION_DIR="$HOME/.local/share/applications"
|
||||
mkdir -p "$USER_APPLICATION_DIR"
|
||||
|
||||
Reference in New Issue
Block a user