#!/bin/bash -e # ╭───────────────╮ # │ env functions │ # ╰───────────────╯ # ───────────────────────────────────< ANSI color codes >─────────────────────────────────── RED='\033[0;31m' CYAN='\033[0;36m' YELLOW='\033[0;33m' LIGHT_GREEN='\033[0;92m' BOLD='\033[1m' NC='\033[0m' # No Color # ERROR: -- Message echo_error() { printf "${BOLD}${RED}ERROR: ${NC}${RED}%s${NC}\n" "$1" >&2 } # INFO: -- Message echo_info() { printf "${BOLD}${CYAN}INFO: ${NC}${CYAN}%s${NC}\n" "$1" } # WARNING: -- Message echo_warning() { printf "${BOLD}${YELLOW}WARNING: ${NC}${YELLOW}%s${NC}\n" "$1" } # NOTE: -- Message echo_note() { printf "${BOLD}${LIGHT_GREEN}NOTE: ${NC}${LIGHT_GREEN}%s${NC}\n" "$1" } # ──────────────────────< Check if the given command exists silently >────────────────────── command_exists() { command -v "$@" >/dev/null 2>&1 } # ─────────────< Check if the user is root and set sudo variable if necessary >───────────── check_root() { if [[ "$(id -u)" -ne 0 ]]; then if command_exists sudo; then echo_info "User is not root. Using sudo for privileged operations." _sudo="sudo" else echo_error "No sudo found and you're not root! Can't install packages." return 1 fi else echo_info "Root access confirmed." _sudo="" fi } # ─< Distribution detection and installation >──────────────────────────────────────── get_packager() { $_sudo pacman -Sy if command_exists paru; then _install() { paru -S --noconfirm "$@"; } elif command_exists yay; then _install() { yay -S --noconfirm "$@"; } elif command_exists pacman; then _install() { "$_sudo" pacman -S --noconfirm "$@"; } fi } check_deps() { deps=( "hyprland" "hyprpicker" "hyprlang" "hyprutils" "hyprwayland-scanner" "xdg-desktop-portal-hyprland" "$BarOfChoise" "${MenuOfChoise[@]}" "swww" "wlogout" "libnotify" ) for dependency in "${deps[@]}"; do if ! command_exists "$dependency"; then echo_note "Installing $dependency.." _install "$dependency" || echo_error "Error installing $dependency!" else echo_info "$dependency is already installed" fi done } ask_bar() { echo_note "Which bar do you want to use?" echo_note "[g]Bar, [H]yprpanel, [W]aybar" read -r ask_bar ─────────────────────────────── main() { if check_root; then if check_aur; then get_packager fi else echo_error "Something went terribly wrong!" exit 1 fi ask_bar ask_menu check_deps ask_dotfiles } if ! command_exists hyprland; then main else echo_warning "Hyprland is already installed!" fi