Install the maintained pywal fork and skip packages already present
This commit is contained in:
@@ -37,6 +37,11 @@ else
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if ! command -v wal >/dev/null 2>&1; then
|
||||||
|
echo "Error: 'wal' is not installed. Install it with: yay -S python-pywal16"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
echo "Extracting colors using Pywal..."
|
echo "Extracting colors using Pywal..."
|
||||||
wal -i "$IMAGE_PATH" -n -q 2> >(grep -v "deprecated in IMv7" >&2)
|
wal -i "$IMAGE_PATH" -n -q 2> >(grep -v "deprecated in IMv7" >&2)
|
||||||
|
|
||||||
|
|||||||
+10
-3
@@ -74,8 +74,15 @@ packages/blob-aur.packages 10 packages with no official equivalent
|
|||||||
```
|
```
|
||||||
|
|
||||||
Only missing packages are touched, through `pacman -S --needed` and
|
Only missing packages are touched, through `pacman -S --needed` and
|
||||||
`yay -S --needed`. `./install.sh --check` lists what it would install without
|
`yay -S --needed`. An entry is treated as already installed, and skipped, when a
|
||||||
installing anything, and `--skip-packages` does the directories and config only.
|
package of that name is installed, when an installed package provides that name,
|
||||||
|
or when the name is a group whose members are all installed - so `base-devel` and
|
||||||
|
packages pulled in under a different name no longer come back on every run. AUR
|
||||||
|
packages are built one at a time, so a build that fails is reported at the end
|
||||||
|
instead of stopping the install.
|
||||||
|
|
||||||
|
`./install.sh --check` lists what it would install without installing anything,
|
||||||
|
and `--skip-packages` does the directories and config only.
|
||||||
|
|
||||||
### Validating the lists
|
### Validating the lists
|
||||||
|
|
||||||
@@ -111,7 +118,7 @@ Omarchy's own package list, because they were installed by hand on this machine:
|
|||||||
|
|
||||||
| Package | Needed by |
|
| Package | Needed by |
|
||||||
| --- | --- |
|
| --- | --- |
|
||||||
| `python-pywal` | `blob-wallpaper-set`, palette extraction |
|
| `python-pywal16` | `blob-wallpaper-set`, palette extraction |
|
||||||
| `awww` | the wallpaper daemon `blob-wallpaper-set` and `blob-theme-menu` drive |
|
| `awww` | the wallpaper daemon `blob-wallpaper-set` and `blob-theme-menu` drive |
|
||||||
| `playerctl` | the quick settings media row |
|
| `playerctl` | the quick settings media row |
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,21 @@ read_package_list() {
|
|||||||
grep -vE '^[[:space:]]*#|^[[:space:]]*$' "$1"
|
grep -vE '^[[:space:]]*#|^[[:space:]]*$' "$1"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
package_installed() {
|
||||||
|
local name="$1" member
|
||||||
|
|
||||||
|
pacman -Q "$name" &>/dev/null && return 0
|
||||||
|
pacman -T "$name" &>/dev/null && return 0
|
||||||
|
|
||||||
|
local -a members=()
|
||||||
|
mapfile -t members < <(pacman -Sg "$name" 2>/dev/null | awk '{print $2}')
|
||||||
|
(( ${#members[@]} )) || return 1
|
||||||
|
|
||||||
|
for member in "${members[@]}"; do
|
||||||
|
pacman -Q "$member" &>/dev/null || return 1
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# A list entry may be "wanted|already-fine", which asks for the first name but
|
# A list entry may be "wanted|already-fine", which asks for the first name but
|
||||||
# treats either as satisfying the requirement. That is how the AUR replacement
|
# treats either as satisfying the requirement. That is how the AUR replacement
|
||||||
# for a package still shipped by another repository avoids a file conflict.
|
# for a package still shipped by another repository avoids a file conflict.
|
||||||
@@ -11,8 +26,8 @@ missing_packages() {
|
|||||||
for entry in $(read_package_list "$1"); do
|
for entry in $(read_package_list "$1"); do
|
||||||
wanted=${entry%%|*}
|
wanted=${entry%%|*}
|
||||||
alternative=${entry#*|}
|
alternative=${entry#*|}
|
||||||
pacman -Q "$wanted" &>/dev/null && continue
|
package_installed "$wanted" && continue
|
||||||
[[ $alternative != "$entry" ]] && pacman -Q "$alternative" &>/dev/null && continue
|
[[ $alternative != "$entry" ]] && package_installed "$alternative" && continue
|
||||||
printf '%s\n' "$wanted"
|
printf '%s\n' "$wanted"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
@@ -52,10 +67,24 @@ install_packages() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
say "install ${#aur_missing[@]} AUR package(s)"
|
say "install ${#aur_missing[@]} AUR package(s)"
|
||||||
yay -S --needed --noconfirm "${aur_missing[@]}"
|
install_aur_packages "${aur_missing[@]}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
install_aur_packages() {
|
||||||
|
local package
|
||||||
|
local -a failed=()
|
||||||
|
|
||||||
|
for package in "$@"; do
|
||||||
|
yay -S --needed --noconfirm "$package" || failed+=("$package")
|
||||||
|
done
|
||||||
|
|
||||||
|
(( ${#failed[@]} == 0 )) && return 0
|
||||||
|
|
||||||
|
say "WARN ${#failed[@]} AUR package(s) failed to build: ${failed[*]}"
|
||||||
|
say "WARN the install continued; retry them with 'yay -S <name>'"
|
||||||
|
}
|
||||||
|
|
||||||
# A fresh Arch install has no AUR helper, and yay is not in the official
|
# A fresh Arch install has no AUR helper, and yay is not in the official
|
||||||
# repositories, so it is built from the AUR once with makepkg. Everything after
|
# repositories, so it is built from the AUR once with makepkg. Everything after
|
||||||
# this point can then use yay normally.
|
# this point can then use yay normally.
|
||||||
|
|||||||
@@ -3,8 +3,8 @@
|
|||||||
#
|
#
|
||||||
# These have no official-repo equivalent. See docs/packages.md.
|
# These have no official-repo equivalent. See docs/packages.md.
|
||||||
|
|
||||||
# Palette extraction behind blob-wallpaper-set
|
# Palette extraction behind blob-wallpaper-set; pywal16 is the maintained fork
|
||||||
python-pywal
|
python-pywal16|python-pywal
|
||||||
|
|
||||||
# Terminal dispatch; every TUI launcher's Exec= line calls it
|
# Terminal dispatch; every TUI launcher's Exec= line calls it
|
||||||
xdg-terminal-exec
|
xdg-terminal-exec
|
||||||
|
|||||||
Reference in New Issue
Block a user