fix(desktop-environments): missing EWW build dep + non-idempotent clone
Found via a fresh-install test in a QEMU VM using the repo's answerfile
system (hyprlua, tablet/touch eww bar variant).
1. hyprlua.sh/hyprland.sh/niri.sh all compile EWW (GTK3) from source but
never installed gtk-layer-shell — only gtk4-layer-shell, which is a
separate package for astal-menu's GTK4 surface. Every fresh install
failed at the gtk-layer-shell-sys build script with a pkg-config
error ("gtk-layer-shell-0 ... was not found").
2. The EWW `git clone` isn't idempotent: a leftover ~/install-tmp/eww
from an earlier interrupted/retried install (e.g. the failure above)
makes the next clone abort with "already exists and is not an empty
directory", killing the whole script under set -e. `rm -rf eww`
before cloning fixes retries.
Both reproduced and fixed directly in the test VM before being applied
here: installing gtk-layer-shell and clearing the stale checkout let
the same run complete successfully.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TLz6HWsXCwzQ97LrLt2em6
main
parent
682e3769f6
commit
3e51579564
|
|
@ -141,6 +141,11 @@ HYPRLAND_PACKAGES=(
|
|||
playerctl # MPRIS media player controller (play/pause CLI)
|
||||
wf-recorder # screen recorder for wlroots compositors
|
||||
sound-theme-freedesktop # standard freedesktop sound event library
|
||||
|
||||
# EWW (compiled from source below) is GTK3, and its gtk-layer-shell-sys
|
||||
# crate links against this library at build time — without it, `cargo
|
||||
# build` fails at that build script with a pkg-config error.
|
||||
gtk-layer-shell
|
||||
)
|
||||
sudo pacman -Syu --noconfirm --needed -- "${HYPRLAND_PACKAGES[@]}"
|
||||
|
||||
|
|
@ -244,6 +249,9 @@ log "Compiling EWW..."
|
|||
# ~/install-tmp is a staging area for source trees fetched during installation.
|
||||
mkdir -p ~/install-tmp
|
||||
cd ~/install-tmp
|
||||
# A leftover checkout from an earlier interrupted/retried install would make
|
||||
# a plain `git clone` fail with "already exists and is not an empty directory".
|
||||
rm -rf eww
|
||||
git clone https://github.com/elkowar/eww
|
||||
cd eww
|
||||
# --release → optimised binary (significantly faster than debug)
|
||||
|
|
|
|||
|
|
@ -79,6 +79,12 @@ HYPRLUA_PACKAGES=(
|
|||
gtk4 # GTK4 toolkit (the menu's frontend)
|
||||
gtk4-layer-shell # wlr-layer-shell for GTK4 (the popup surface)
|
||||
libshumate # GTK4 OpenStreetMap widget (Location quad)
|
||||
# EWW itself (compiled from source below) is GTK3, and its
|
||||
# gtk-layer-shell-sys crate links against the GTK3 build of this library —
|
||||
# a separate package from gtk4-layer-shell above. Without it, `cargo build`
|
||||
# fails at the gtk-layer-shell-sys build script with a pkg-config error
|
||||
# ("gtk-layer-shell-0 ... was not found").
|
||||
gtk-layer-shell # wlr-layer-shell for GTK3 (EWW's build dependency)
|
||||
networkmanager # nmcli backend for the Network quad (adapters/routes/vlan/dns)
|
||||
bluez-utils # bluetoothctl + bluez CLI (Bluetooth quad fallbacks)
|
||||
iproute2 curl jq # ip/ss, HTTP fetches, JSON (Network/Weather backends)
|
||||
|
|
@ -257,6 +263,9 @@ log "Compiling EWW..."
|
|||
# ~/install-tmp is the staging directory for source trees fetched during install.
|
||||
mkdir -p ~/install-tmp
|
||||
cd ~/install-tmp
|
||||
# A leftover checkout from an earlier interrupted/retried install would make
|
||||
# a plain `git clone` fail with "already exists and is not an empty directory".
|
||||
rm -rf eww
|
||||
git clone https://github.com/elkowar/eww
|
||||
cd eww
|
||||
# --release → produce an optimised binary (noticeably faster UI)
|
||||
|
|
|
|||
|
|
@ -27,7 +27,10 @@ sudo pacman -Syu --noconfirm --needed \
|
|||
thunar tumbler thunar-archive-plugin thunar-shares-plugin thunar-volman \
|
||||
pcmanfm-qt udisks2 ly kew \
|
||||
pavucontrol playerctl wf-recorder sound-theme-freedesktop \
|
||||
xinput jq python-opencv v4l-utils
|
||||
xinput jq python-opencv v4l-utils \
|
||||
gtk-layer-shell # GTK3 wlr-layer-shell library EWW's gtk-layer-shell-sys
|
||||
# crate links against; without it `cargo build` below
|
||||
# fails at that build script with a pkg-config error.
|
||||
|
||||
# 3. Enable essential services
|
||||
log "Enabling essential services..."
|
||||
|
|
@ -72,6 +75,9 @@ esac
|
|||
log "Compiling EWW..."
|
||||
mkdir -p ~/install-tmp
|
||||
cd ~/install-tmp
|
||||
# A leftover checkout from an earlier interrupted/retried install would make
|
||||
# a plain `git clone` fail with "already exists and is not an empty directory".
|
||||
rm -rf eww
|
||||
git clone https://github.com/elkowar/eww
|
||||
cd eww
|
||||
cargo build --release --no-default-features --features=wayland
|
||||
|
|
|
|||
Loading…
Reference in New Issue