From 75577906faa9fb0268d36da1e16f732287d43741 Mon Sep 17 00:00:00 2001 From: pik4li <67532734+pik4li@users.noreply.github.com> Date: Wed, 1 Jan 2025 01:56:56 +0100 Subject: [PATCH] changes. --- core/tabs/applications-setup/docker-setup.sh | 3 +- core/tabs/system-setup/arch/arch-hyprland.sh | 203 +++++++++++++++++++ 2 files changed, 205 insertions(+), 1 deletion(-) create mode 100644 core/tabs/system-setup/arch/arch-hyprland.sh diff --git a/core/tabs/applications-setup/docker-setup.sh b/core/tabs/applications-setup/docker-setup.sh index 0c8889b..4bf82e5 100755 --- a/core/tabs/applications-setup/docker-setup.sh +++ b/core/tabs/applications-setup/docker-setup.sh @@ -116,6 +116,7 @@ init_groups() { setup_autostart() { if command_exists systemctl; then + printf "%b\n" "${GREEN}Adding docker as a service to start automatically!${RC}" "$ESCALATION_TOOL" systemctl enable --now docker else printf "%b\n" "${RED}The command 'systemctl' does not exist!${RC}" @@ -126,4 +127,4 @@ checkEnv checkEscalationTool install_components init_groups - +setup_autostart diff --git a/core/tabs/system-setup/arch/arch-hyprland.sh b/core/tabs/system-setup/arch/arch-hyprland.sh new file mode 100644 index 0000000..66b367e --- /dev/null +++ b/core/tabs/system-setup/arch/arch-hyprland.sh @@ -0,0 +1,203 @@ +#!/bin/sh + +# ╭───────────────╮ +# │ 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 + +echo_error() { + printf "${BOLD}${RED}ERROR: ${NC}${RED}%s${NC}\n" "$1" >&2 +} + +echo_info() { + printf "${BOLD}${CYAN}INFO: ${NC}${CYAN}%s${NC}\n" "$1" +} + +echo_warning() { + printf "${BOLD}${YELLOW}WARNING: ${NC}${YELLOW}%s${NC}\n" "$1" +} + +echo_note() { + printf "${BOLD}${LIGHT_GREEN}NOTE: ${NC}${LIGHT_GREEN}%s${NC}\n" "$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() { + if [ -e /etc/os-release ]; then + echo_info "Detecting distribution..." + . /etc/os-release + + ID=$(printf "%s" "$ID" | tr '[:upper:]' '[:lower:]') + ID_LIKE=$(printf "%s" "$ID_LIKE" | tr '[:upper:]' '[:lower:]') + + case "$ID" in + ubuntu | pop) _install() { $_sudo apt-get install --assume-yes "$@"; } ;; + debian) _install() { $_sudo apt-get install --assume-yes "$@"; } ;; + fedora) _install() { $_sudo dnf install -y "$@"; } ;; + alpine) _install() { $_sudo apk add "$@"; } ;; + arch | manjaro | garuda | endeavour) _install() { $pkger -S --noconfirm "$@"; } ;; + opensuse*) _install() { $_sudo zypper in -y "$@"; } ;; + *) + if echo "$ID_LIKE" | grep -q "debian"; then + _install() { $_sudo apt-get install --assume-yes "$@"; } + elif echo "$ID_LIKE" | grep -q "ubuntu"; then + _install() { $_sudo apt-get install --assume-yes "$@"; } + elif echo "$ID_LIKE" | grep -q "arch"; then + _install() { $pkger -S --noconfirm "$@"; } + elif echo "$ID_LIKE" | grep -q "fedora"; then + _install() { $_sudo dnf install -y "$@"; } + elif echo "$ID_LIKE" | grep -q "suse"; then + _install() { $_sudo zypper in -y "$@"; } + else + echo_error "Unsupported distribution: $ID" + return 1 + fi + ;; + esac + else + echo_error "Unable to detect distribution. /etc/os-release not found." + return 1 + fi +} + +# ──────────────────────< Check if the given command exists silently >────────────────────── +command_exists() { + command -v "$@" >/dev/null 2>&1 +} + +check_aur() { + if ! command_exists yay; then + echo_error "Yay was not found.. looking for paru instead" + if ! command_exists paru; then + echo_error "No AUR helper found, please install before continuing!" + exit 1 + else + echo_info "Found paru, using it.." + pkger="paru" + fi + exit 1 + else + echo_info "Found yay, using it.." + pkger="yay" + fi +} + +check_deps() { + deps=" + hyprland + hyprpicker + hyprlang + hyprutils + hyprwayland-scanner + xdg-desktop-portal-hyprland + + $BarOfChoise + swww + rofi + wlogout + libnotify + " + for dependency in $deps; do + if ! command_exists "$dependency"; then + echo_note "Installing $dependency.." + _install "$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 + check_deps + ask_dotfiles +} + +if ! command_exists hyprland; then + main +else + echo_warning "Hyprland is already installed!" +fi