Dotfiles/setup/modules/Desktop-Enviroments/hyprland-new.sh

136 lines
5.3 KiB
Bash
Executable File

#!/bin/bash
set -e
echo "=== Hyprland Environment Installer ==="
# 1. Update system and install Flatpak
echo "Updating system and installing Flatpak..."
sudo pacman -Syu --noconfirm --needed flatpak
# 2. Install required packages
echo "Installing required packages..."
sudo pacman -Syu --noconfirm --needed \
hyprland hyprcursor wl-clipboard hyprpaper hyprlock wofi kitty dunst \
nwg-dock-hyprland nwg-drawer nwg-menu nwg-look \
python cmake meson cpio pkgconf ruby-pkg-config \
hyprsunset hypridle ksshaskpass \
nm-connection-editor network-manager-applet blueman bluez \
pipewire alsa-utils firefox greetd-tuigreet \
grim slurp gst-plugin-pipewire imagemagick \
nerd-fonts otf-font-awesome \
pipewire-alsa pipewire-jack pipewire-pulse \
qt5-wayland qt6-wayland swww ttf-jetbrains-mono wireplumber \
qt6ct xdg-desktop-portal-hyprland xdg-utils \
xorg-server xorg-xinit papirus-icon-theme \
cool-retro-term qalculate-gtk iwd dbus \
thunar tumbler thunar-archive-plugin thunar-shares-plugin thunar-volman \
hyprpicker pcmanfm-qt udisks2 ly \
hyprpolkitagent pavucontrol playerctl wf-recorder sound-theme-freedesktop
# 3. Enable essential services
echo "Enabling essential services..."
sudo systemctl enable NetworkManager.service
sudo systemctl disable getty@tty1.service || true
sudo systemctl enable ly@tty1.service
sudo systemctl enable udisks2.service
# 4. Install AUR packages
echo "Installing AUR packages..."
rustup default stable
yay -Syu --answerdiff None --answerclean All --noconfirm \
hyprland-workspaces vicinae-bin bluetuith wvkbd kew iwmenu \
walker-bin ulauncher bzmenu pinta localsend udiskie \
wofi-calc bri chamel
# 5. EWW bar selection and compilation
echo "Setting up EWW bar..."
rm -rf ~/.config/eww
read -n1 -p "Install eww bar for PC, Notebook or Tablet [P/N/T]: " doit
echo
case $doit in
n|N) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww/ ~/.config/ ;;
p|P) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-nobattery/ ~/.config/eww ;;
t|T) cp -rf ~/Dotfiles/desktopenvs/hyprland/eww-touch/ ~/.config/eww ;;
*) echo "No valid choice — skipping EWW copy. Run manually later." ;;
esac
echo "Compiling EWW..."
mkdir -p ~/install-tmp
cd ~/install-tmp
git clone https://github.com/elkowar/eww
cd eww
cargo build --release --no-default-features --features=wayland
chmod +x target/release/eww
sudo cp target/release/eww /usr/bin/
cd ~
# 6. Theme and icon setup
sudo cp -r ~/Dotfiles/gtk-themes/cyberqueer /usr/share/themes
sudo cp ~/Dotfiles/desktopenvs/hyprland/btop/themes/cyberqueer.theme /usr/share/btop/themes
sudo cp -f ~/Dotfiles/etc-ly-config.ini /etc/ly/config.ini
sudo ln -sf /usr/bin/kitty /usr/bin/xdg-terminal-exec
sudo ln -sf /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass
# 7. Cursor setup
mkdir -p ~/.icons
wget -O ~/install-tmp/Nordzy-cursors-lefthand.tar.gz \
https://github.com/guillaumeboehm/Nordzy-cursors/releases/download/v2.3.0/Nordzy-cursors-lefthand.tar.gz
tar -zxf ~/install-tmp/Nordzy-cursors-lefthand.tar.gz -C ~/.icons/
# 8. Enable Bluetooth and wireless services
sudo systemctl enable bluez
sudo systemctl enable bluetooth.service
sudo systemctl enable iwd.service
# 9. Hyprland plugins — must be run from inside a live Hyprland session
# Run manually after first login:
# hyprpm update
# hyprpm add https://github.com/hyprwm/hyprland-plugins
# 10. Copy configs
echo "Copying configs..."
CONFIGS=(kitty mimeapps.list vicinae walker ulauncher hypr xfce4 wofi dunst alacritty nwg-dock-hyprland nwg-drawer nwg-panel scripts btop gtk-3.0)
for cfg in "${CONFIGS[@]}"; do
rm -rf ~/.config/"$cfg"
cp -r ~/Dotfiles/desktopenvs/hyprland/"$cfg" ~/.config/
done
cp ~/Dotfiles/desktopenvs/hyprland/hypr-usr/* ~/.config/
# 11. Wallpaper and resources
mkdir -p ~/Pictures
cp ~/Dotfiles/resources/fflogo.svg ~/Pictures/fflogo.svg
wget "https://cloud.abdelbaki.eu/apps/theming/image/background?v=15" -O ~/Pictures/background.jpg
# 12. Python venv for scripts
python -m venv ~/.config/python-script
~/.config/python-script/bin/pip install speedtest-cli requests pint simpleeval parsedatetime
# 13. Udiskie icon fix
echo "Applying Udiskie icon fix..."
PAPIRUS_DIR="/usr/share/icons/Papirus-Dark/status"
HICOLOR_DIR="/usr/share/icons/hicolor/scalable/status"
if [ -d "$PAPIRUS_DIR" ]; then
sudo ln -sf "$PAPIRUS_DIR/checkbox-checked.svg" "$HICOLOR_DIR/udiskie-checkbox-checked.svg"
sudo ln -sf "$PAPIRUS_DIR/checkbox-unchecked.svg" "$HICOLOR_DIR/udiskie-checkbox-unchecked.svg"
sudo gtk-update-icon-cache -f -t /usr/share/icons/hicolor
else
echo "Papirus-Dark not found — skipping udiskie icon fix."
fi
# 14. Enable udiskie
sudo systemctl enable udiskie.service
sudo systemctl start udiskie.service
# 15. Install config updater
mkdir -p ~/.config/config-updater
ln -sf ~/Dotfiles/desktopenvs/hyprland/config-updater/updater.conf ~/.config/config-updater/updater.conf
ln -sf ~/Dotfiles/desktopenvs/hyprland/config-updater/update-configs.sh ~/update-configs.sh
# 16. WallRizz (run manually after login — requires a running desktop session)
# curl -sL "$(curl -s https://api.github.com/repos/5hubham5ingh/WallRizz/releases/latest \
# | grep -Po '"browser_download_url": "\K[^"]+' | grep WallRizz)" | tar -xz \
# && sudo mv WallRizz /usr/bin/
echo "=== Hyprland installation complete. Reboot to start. ==="