81 lines
4 KiB
Cheetah
81 lines
4 KiB
Cheetah
{{- if (eq .host.distro.family "linux") -}}
|
|
#!/usr/bin/env bash
|
|
# @file Linux GNOME / KDE Theme
|
|
# @brief Installs the Sweet-based theme for GNOME / KDE.
|
|
# @description
|
|
# This script applies various themes to Linux systems that use GNOME or KDE.
|
|
|
|
{{ includeTemplate "universal/profile" }}
|
|
{{ includeTemplate "universal/logg" }}
|
|
|
|
### Ensure /usr/local/bin/squash-symlink is present
|
|
if [ ! -f /usr/local/bin/squash-symlink ] && [ -f "$HOME/.local/bin/squash-symlink" ]; then
|
|
logg info 'Copying ~/.local/bin/squash-symlink to /usr/local/bin/squash-symlink'
|
|
sudo cp -f "$HOME/.local/bin/squash-symlink" /usr/local/bin/squash-symlink
|
|
fi
|
|
|
|
### Clean up system theme settings
|
|
for ITEM_TO_BE_REMOVED in "/usr/share/backgrounds/images" "/usr/share/backgrounds/f32" "/usr/share/backgrounds/qubes" "/usr/share/wallpapers"; do
|
|
if [ -d "$ITEM_TO_BE_REMOVED" ] || [ -f "$ITEM_TO_BE_REMOVED" ]; then
|
|
sudo rm -rf "$ITEM_TO_BE_REMOVED"
|
|
logg success "Removed $ITEM_TO_BE_REMOVED"
|
|
fi
|
|
done
|
|
|
|
### Ensure /usr/local/share exists
|
|
if [ ! -d /usr/local/share ]; then
|
|
sudo mkdir -p /usr/local/share
|
|
logg success 'Created /usr/local/share'
|
|
fi
|
|
|
|
### Copy theme files over to /usr/local/share
|
|
if [ -d "$HOME/.local/src/{{ .theme | lower }}/share" ]; then
|
|
logg info 'Copying ~/.local/src/{{ .theme | lower }}/share to /usr/local/share'
|
|
sudo rsync --chown=root:root --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r -artvu --inplace "${XDG_DATA_HOME:-$HOME/.local/share}/betelgeuse/share/" "/usr/local/share/" > /dev/null
|
|
else
|
|
logg warn '~/.local/share/betelgeuse/share is missing'
|
|
fi
|
|
|
|
### Flatten GRUB theme files (i.e. convert symlinks to regular files)
|
|
if command -v squash-symlink > /dev/null; then
|
|
logg info 'Converting /usr/local/share/grub symlinks to equivalent regular files'
|
|
sudo find /usr/local/share/grub -type l -exec squash-symlink {} +
|
|
else
|
|
logg warn 'squash-symlink is not a script in the PATH'
|
|
fi
|
|
|
|
### Ensure /usr/share/backgrounds/default.png is deleted
|
|
if [ -f /usr/share/backgrounds/default.png ]; then
|
|
sudo rm -f /usr/share/backgrounds/default.png
|
|
fi
|
|
|
|
### Add the default image symlink based on the OS
|
|
if [ '{{ .host.distro.id }}' == 'archlinux' ]; then
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse-Archlinux/contents/source.png /usr/share/backgrounds/default.png
|
|
elif [ '{{ .host.distro.id }}' == 'centos' ]; then
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse-CentOS/contents/source.png /usr/share/backgrounds/default.png
|
|
elif [ '{{ .host.distro.id }}' == 'darwin' ]; then
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse-macOS/contents/source.png /usr/share/backgrounds/default.png
|
|
elif [ '{{ .host.distro.id }}' == 'debian' ]; then
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse-Debian/contents/source.png /usr/share/backgrounds/default.png
|
|
elif [ '{{ .host.distro.id }}' == 'fedora' ]; then
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse-Fedora/contents/source.png /usr/share/backgrounds/default.png
|
|
elif [ '{{ .host.distro.id }}' == 'ubuntu' ]; then
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse-Ubuntu/contents/source.png /usr/share/backgrounds/default.png
|
|
elif [ '{{ .host.distro.id }}' == 'windows' ]; then
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse-Windows/contents/source.png /usr/share/backgrounds/default.png
|
|
else
|
|
sudo ln -s /usr/local/share/wallpapers/Betelgeuse/contents/source.png /usr/share/backgrounds/default.png
|
|
fi
|
|
|
|
### Note: ubuntu-default-greyscale-wallpaper.png symlink to whiteish gray background
|
|
|
|
### Set appropriate platform-specific icon in plymouth theme
|
|
if [ -f '/usr/local/share/plymouth/themes/{{ .theme }}/icons/{{ .host.distro.id }}.png' ]; then
|
|
sudo cp -f '/usr/local/share/plymouth/themes/{{ .theme }}/icons/{{ .host.distro.id }}.png' '/usr/local/share/plymouth/themes/{{ .theme }}/icon.png'
|
|
logg success 'Added platform-specific icon to {{ .theme }} Plymouth theme'
|
|
else
|
|
logg warn 'The {{ .host.distro.id }}.png icon is not available in the icons folder insider the {{ .theme }} Plymouth theme'
|
|
fi
|
|
|
|
{{ end -}}
|