commit 1dae915b90315f383a5194825b4bc74009db7981 Author: Ja.KooLit Date: Thu Oct 26 11:04:37 2023 +0900 Add files via upload diff --git a/CHANGELOGS.md b/CHANGELOGS.md new file mode 100644 index 0000000..292c56c --- /dev/null +++ b/CHANGELOGS.md @@ -0,0 +1,18 @@ +## Changelogs + +## 30-Sep-2023 +- replaced missioncenter with gnome-system-monitor +- added some wallpaper + +## 27-Sep-2023 +- remove auto start of portal-hyprland-hyprland +- removal of Virtual-1 monitor in Monitors.conf + +## 25-Sep-2023 +- added grub function to add nvidia_drm.modeset=1 for nvidia-grub users + +## 14-Sep-2023 +- Bump to v4 +- Renamed repo to Hyprland-v4 + + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..fdddb29 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/README.md b/README.md new file mode 100644 index 0000000..a9542cf --- /dev/null +++ b/README.md @@ -0,0 +1,97 @@ +
+ +# 💌 ** JaKooLit's Arch Hyprland Install Script ** 💌 + +![GitHub Repo stars](https://img.shields.io/github/stars/JaKooLit/Hyprland-v4?style=for-the-badge&color=cba6f7) ![GitHub last commit](https://img.shields.io/github/last-commit/JaKooLit/Hyprland-v4?style=for-the-badge&color=b4befe) ![GitHub repo size](https://img.shields.io/github/repo-size/JaKooLit/Hyprland-v4?style=for-the-badge&color=cba6f7) + + +
+
+ +### A re-structured install script of my Hyprland-v3 [`Link`](https://github.com/JaKooLit/Hyprland-v3) + +![alt text](https://github.com/JaKooLit/Ja-Hyprland/blob/main/screenshots/Sample-Tokyo-waybar.png "Default") + +![alt text](https://github.com/JaKooLit/Ja-Hyprland/blob/main/screenshots/dual-panel-light-dark-switch.png "Default") + +### 📷 you can find more screenshots in the screenshots directory + +### 📽️ youtube video showcase: [`Youtube Link`](https://youtu.be/otda1nXJ5Dg?si=Wbb8eg-u3Y-tDnDQ) + + + +### ✨ A video walk through my dotfiles[`Link`](https://youtu.be/fO-RBHvVEcc?si=ijqxxnq_DLiyO8xb) + + +### 🆕 What's new compared to my V3 +- restructured Install script +- Can modify the packages easily. (install-scripts/00-hypr-pkgs.sh) edit as desired +- Added Tokyo-night-theme and TokyoNight-SE icons +- using dunst instead of mako +- Added Tokyo-Night SDDM Theme +- Use a wofi-power menu instead of wlogout +- Added the following: + - a. gnome-system-monitor - right click on cpu waybar module + - b. nvtop - right click on temperature waybar module + + +### 👀 NVidia GPU Owners. +- By default, nvidia-dkms will be installed. and only supports GTX 900 and newer. If required to install older driver, edit the nvidia.sh in scripts-folder + + +### ✨ to run +> clone this repo by using git. Change directory, make executable and run the script +```bash +git clone https://github.com/JaKooLit/Hyprland-v4.git +cd Hyprland-v4 +chmod +x install-v4.sh +./install-v4.sh +``` +### ✨ for ZSH and OH-MY-ZSH installation +> do this once installed and script completed; do the following to change the default shell zsh +```bash +chsh -s $(which zsh) +zsh +source ~/.zshrc +``` +- reboot or logout +- by default gnzh theme is installed. You can find more themes from this [`OH-MY-ZSH-THEMES`](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes) +- to change the theme, edit ~/.zshrc ZSH_THEME="desired theme" + +### 📒 Notes +- super h for launching a small help file +- super e to view / edit settings, monitor, keybinds, Environment Variables, etc +- go through the keybinds. There are alot of hidden features like dual panel, change waybar styles, change wallpaper, etc... its too long to put all in the readme!!! + +### 🛣️ Roadmap: +- [ ] Install zsh and oh-my-zsh without necessary steps above +- [ ] possibly adding gruvbox themes, cursors, icons +- [ ] adding vertical waybar +- [X] ~~Use kitty in favor of foot~~ - Dropped the idea of kitty. Kitty is using twice memory compared to foot. + +### ⚠️ some known issues +- reports from members of my discord, states that some users of nvidia are getting stuck on sddm login. credit to @Kenni Fix stated was +``` + while in sddm press ctrl+alt+F2 or F3 +log into your account +`lspci -nn`, find the id of your nvidia card +`ls /dev/dri/by-path` find the matching id +`ls -l /dev/dri/by-path` to check where the symlink points to +) +7. add "env = WLR_DRM_DEVICES,/dev/dri/cardX" to the ENVvariables config (.config/hypr/configs/ENVariables.conf) ; X being where the symlink of the gpu points to +``` +- more info from the hyprland wiki [`Hyprland Wiki Link`](https://wiki.hyprland.org/FAQ/#my-external-monitor-is-blank--doesnt-render--receives-no-signal-laptop) + + +### 👍👍👍 Thanks and Credits! +- shout out to CooSee from Gentoo forums for the nice rainbow borders + + +## 💖 Support +- a Star on my Github repos would be nice 🌟 + +- Subscribe to my Youtube Channel [YouTube](https://www.youtube.com/@Ja.KooLit) + +- You can also buy me Coffee Through ko-fi.com 🤩 + +Buy Me a Coffee at ko-fi.com \ No newline at end of file diff --git a/assets/hyprland.desktop b/assets/hyprland.desktop new file mode 100644 index 0000000..8bc9468 --- /dev/null +++ b/assets/hyprland.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Name=Hyprland +Comment=An intelligent dynamic tiling Wayland compositor +Exec=Hyprland +Type=Application diff --git a/assets/tokyo-themes/Tokyonight-Dark-B.zip b/assets/tokyo-themes/Tokyonight-Dark-B.zip new file mode 100644 index 0000000..f8b2a3d Binary files /dev/null and b/assets/tokyo-themes/Tokyonight-Dark-B.zip differ diff --git a/assets/tokyo-themes/Tokyonight-Light-B.zip b/assets/tokyo-themes/Tokyonight-Light-B.zip new file mode 100644 index 0000000..0ad8c2c Binary files /dev/null and b/assets/tokyo-themes/Tokyonight-Light-B.zip differ diff --git a/install-scripts/00-hypr-pkgs.sh b/install-scripts/00-hypr-pkgs.sh new file mode 100644 index 0000000..c70b42c --- /dev/null +++ b/install-scripts/00-hypr-pkgs.sh @@ -0,0 +1,122 @@ +#!/bin/bash + +# https://github.com/JaKooLit + +# edit your packages desired here. +# WARNING! If you remove packages here, dotfiles may not work properly. +# and also, ensure that packages are present in AUR and official Arch Repo + +# add packages wanted here +Extra=( + +) + +hypr_package=( +cliphist +dunst +foot +grim +gvfs +gvfs-mtp +jq +network-manager-applet +pamixer +pavucontrol +pipewire-alsa +playerctl +polkit-kde-agent +python-requests +qt5ct +slurp +swappy +swayidle +swaylock-effects +swww +waybar +wget +wl-clipboard +wofi +xdg-user-dirs +) + +# the following packages can be deleted. however, dotfiles may not work properly +hypr_package_2=( +brightnessctl +btop +cava +ffmpegthumbs +gnome-system-monitor +mousepad +mpv +nvtop +nwg-look-bin +swaybg +viewnior +vim +wlsunset +) + +fonts=( +adobe-source-code-pro-fonts +noto-fonts-emoji +otf-font-awesome +otf-font-awesome-4 +ttf-droid +ttf-fira-code +ttf-jetbrains-mono +ttf-jetbrains-mono-nerd +) + + +############## WARNING DO NOT EDIT BEYOND THIS LINE if you dont know what you are doing! ###################################### + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_hypr-pkgs.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + +# Installation of main components +printf "\n%s - Installing hyprland packages.... \n" "${NOTE}" + +for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${fonts[@]}" "${Extra[@]}"; do + install_package "$PKG1" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log" + exit 1 + fi +done + +clear \ No newline at end of file diff --git a/install-scripts/bluetooth.sh b/install-scripts/bluetooth.sh new file mode 100644 index 0000000..e7346dd --- /dev/null +++ b/install-scripts/bluetooth.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +blue=( +bluez +bluez-utils +blueman +) + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_bluetooth.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + +# Bluetooth + +printf "${NOTE} Installing Bluetooth Packages...\n" + for BLUE in "${blue[@]}"; do + install_package "$BLUE" 2>&1 | tee -a "$LOG" + [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $BLUE install had failed, please check the install.log"; exit 1; } + done + + printf " Activating Bluetooth Services...\n" + sudo systemctl enable --now bluetooth.service 2>&1 | tee -a "$LOG" + + clear \ No newline at end of file diff --git a/install-scripts/dotfiles.sh b/install-scripts/dotfiles.sh new file mode 100644 index 0000000..679cbcf --- /dev/null +++ b/install-scripts/dotfiles.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +'%d-%H%M%S')_dots.log" + +printf "${NOTE} Downloading Hyprland dots...\n" + +if git clone https://github.com/JaKooLit/Hyprland-Dots.git; then + cd Hyprland-Dots || exit 1 + chmod +x copy.sh + ./copy.sh 2>&1 | tee -a "$LOG" +else + echo -e "${ERROR} Cant download Hyprland-Dots" 2>&1 | tee -a "$LOG" +fi + diff --git a/install-scripts/gtk_themes.sh b/install-scripts/gtk_themes.sh new file mode 100644 index 0000000..c5a1c9b --- /dev/null +++ b/install-scripts/gtk_themes.sh @@ -0,0 +1,106 @@ +#!/bin/bash + +# Determine the directory where the script is located +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Change the working directory to the parent directory of the script +PARENT_DIR="$SCRIPT_DIR/.." +cd "$PARENT_DIR" || exit 1 + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_themes.log" + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_themes.log" + + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + + +# Themes and cursors +printf "\n${NOTE} INSTALLING GTK THEMES \n" + while true; do + read -rp "${CAT} Which GTK Theme and Cursors to install? Catppuccin or Tokyo Theme? Enter 'c' or 't': " choice + case "$choice" in + c|C) + printf "${NOTE} Installing Catpuccin Theme packages...\n" + for THEME1 in catppuccin-gtk-theme-mocha catppuccin-gtk-theme-latte catppuccin-cursors-mocha; do + install_package "$THEME1" 2>&1 | tee -a "$LOG" + [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $THEME1 install had failed, please check the install.log"; exit 1; } + done + # Shiny-Dark-Icons-themes + mkdir -p ~/.icons + cd assets + tar -xf Shiny-Dark-Icons.tar.gz -C ~/.icons + tar -xf Shiny-Light-Icons.tar.gz -C ~/.icons + cd .. + sed -i '9,12s/#//' config/hypr/scripts/DarkLight.sh + sed -i '9,12s/#//' config/hypr/scripts/DarkLight-swaybg.sh + sed -i '31s/#//' config/hypr/configs/Settings.conf + cp -f 'config/hypr/waybar/style/dark-styles/style-dark-cat.css' 'config/hypr/waybar/style/style-dark.css' + break + ;; + t|T) + printf "${NOTE} Installing Tokyo Theme packages...\n" + wget https://github.com/ljmill/tokyo-night-icons/releases/download/v0.2.0/TokyoNight-SE.tar.bz2 + mkdir -p ~/.icons + tar -xvjf TokyoNight-SE.tar.bz2 -C ~/.icons + mkdir -p ~/.themes + cp -r -f assets/tokyo-themes/* ~/.themes/ + sed -i '15,18s/#//' config/hypr/scripts/DarkLight.sh + sed -i '15,18s/#//' config/hypr/scripts/DarkLight-swaybg.sh + sed -i '32s/#//' config/hypr/configs/Settings.conf + cp -f 'config/hypr/waybar/style/dark-styles/style-dark-tokyo.css' 'config/hypr/waybar/style/style-dark.css' + break + ;; + *) + printf "%s - Invalid choice. Please enter 'c' or 't'\n" "${ERROR}" + continue + ;; + esac + done + + clear \ No newline at end of file diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh new file mode 100644 index 0000000..39c2f75 --- /dev/null +++ b/install-scripts/hyprland.sh @@ -0,0 +1,53 @@ +#!/bin/bash + +hypr=( +hyprland +) + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_hyprland.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + +# Hyprland + +printf "${NOTE} Installing Hyprland Packages...\n" + for HYPR in "${hypr[@]}"; do + install_package "$HYPR" 2>&1 | tee -a "$LOG" + [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $HYPR install had failed, please check the install.log"; exit 1; } + done + + clear \ No newline at end of file diff --git a/install-scripts/nvidia.sh b/install-scripts/nvidia.sh new file mode 100644 index 0000000..3c37074 --- /dev/null +++ b/install-scripts/nvidia.sh @@ -0,0 +1,141 @@ +#!/bin/bash + +nvidia_pkg=( + nvidia-dkms + nvidia-settings + nvidia-utils + libva + libva-nvidia-driver-git +) + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_nvidia.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry, I have tried :(" + exit 1 + fi + fi +} + +# nvidia stuff +printf "${YELLOW}Installing Nvidia Hyprland...${RESET}\n" +if pacman -Qs hyprland > /dev/null; then + read -n1 -rp "${CAT} Hyprland detected. Would you like to remove and install hyprland-nvidia instead? (y/n) " nvidia_hypr + echo + if [[ $nvidia_hypr =~ ^[Yy]$ ]]; then + for hyprnvi in hyprland hyprland-nvidia hyprland-nvidia-hidpi-git; do + sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true + done + fi +fi + +# install hyprland-nvidia-git +install_package "hyprland-nvidia-git" 2>&1 | tee -a "$LOG" + +# Install additional Nvidia packages +printf "${YELLOW} Installing Nvidia packages...\n" +for krnl in $(cat /usr/lib/modules/*/pkgbase); do + for NVIDIA in "${krnl}-headers" "${nvidia_pkg[@]}"; do + install_package "$NVIDIA" 2>&1 | tee -a "$LOG" + done +done + +# Check if the Nvidia modules are already added in mkinitcpio.conf and add if not +if grep -qE '^MODULES=.*nvidia. *nvidia_modeset.*nvidia_uvm.*nvidia_drm' /etc/mkinitcpio.conf; then + echo "Nvidia modules already included in /etc/mkinitcpio.conf" 2>&1 | tee -a "$LOG" +else + sudo sed -Ei 's/^(MODULES=\([^\)]*)\)/\1 nvidia nvidia_modeset nvidia_uvm nvidia_drm)/' /etc/mkinitcpio.conf 2>&1 | tee -a "$LOG" + echo "Nvidia modules added in /etc/mkinitcpio.conf" +fi + +sudo mkinitcpio -P 2>&1 | tee -a "$LOG" +printf "\n" +printf "\n" +printf "\n" + +# Preparing exec.conf to enable env = WLR_NO_HARDWARE_CURSORS,1 so it will be ready once config files copied +sed -i '21s/#//' config/hypr/configs/ENVariables.conf + +# Additional Nvidia steps +NVEA="/etc/modprobe.d/nvidia.conf" +if [ -f "$NVEA" ]; then + printf "${OK} Seems like nvidia-drm modeset=1 is already added in your system..moving on.\n" + printf "\n" +else + printf "\n" + printf "${YELLOW} Adding options to $NVEA..." + sudo echo -e "options nvidia-drm modeset=1" | sudo tee -a /etc/modprobe.d/nvidia.conf 2>&1 | tee -a "$LOG" + printf "\n" +fi + +# additional for GRUB users +# Check if /etc/default/grub exists +if [ -f /etc/default/grub ]; then + # Check if nvidia_drm.modeset=1 is already present + if ! sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub; then + # Add nvidia_drm.modeset=1 to GRUB_CMDLINE_LINUX_DEFAULT + sudo sed -i 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia-drm.modeset=1"/' /etc/default/grub + # Regenerate GRUB configuration + sudo grub-mkconfig -o /boot/grub/grub.cfg + echo "nvidia-drm.modeset=1 added to /etc/default/grub" + else + echo "nvidia-drm.modeset=1 is already present in /etc/default/grub" + fi +else + echo "/etc/default/grub does not exist" +fi + +# Blacklist nouveau +read -n1 -rep "${CAT} Would you like to blacklist nouveau? (y/n)" response +echo +if [[ $response =~ ^[Yy]$ ]]; then + NOUVEAU="/etc/modprobe.d/nouveau.conf" + if [ -f "$NOUVEAU" ]; then + printf "${OK} Seems like nouveau is already blacklisted..moving on.\n" + else + printf "\n" + echo "blacklist nouveau" | sudo tee -a "$NOUVEAU" 2>&1 | tee -a "$LOG" + printf "${NOTE} has been added to $NOUVEAU.\n" + printf "\n" + + # To completely blacklist nouveau (See wiki.archlinux.org/title/Kernel_module#Blacklisting 6.1) + if [ -f "/etc/modprobe.d/blacklist.conf" ]; then + echo "install nouveau /bin/true" | sudo tee -a "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG" + else + echo "install nouveau /bin/true" | sudo tee "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG" + fi + fi +else + printf "${NOTE} Skipping nouveau blacklisting.\n" +fi + +clear diff --git a/install-scripts/paru.sh b/install-scripts/paru.sh new file mode 100644 index 0000000..6f50f93 --- /dev/null +++ b/install-scripts/paru.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_paru.log" + +# Check for AUR helper and install if not found +ISAUR=$(command -v yay || command -v paru) + +if [ -n "$ISAUR" ]; then + printf "\n%s - AUR helper was located, moving on.\n" "${OK}" +else + printf "\n%s - AUR helper was NOT located\n" "$WARN" + printf "\n%s - Installing paru from AUR\n" "${NOTE}" + git clone https://aur.archlinux.org/paru-bin.git || { printf "%s - Failed to clone paru from AUR\n" "${ERROR}"; exit 1; } + cd paru-bin || { printf "%s - Failed to enter paru-bin directory\n" "${ERROR}"; exit 1; } + makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install paru from AUR\n" "${ERROR}"; exit 1; } +fi + +# Update system before proceeding +printf "\n%s - Performing a full system update to avoid issues.... \n" "${NOTE}" +ISAUR=$(command -v yay || command -v paru) + +$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; } + +clear \ No newline at end of file diff --git a/install-scripts/rog.sh b/install-scripts/rog.sh new file mode 100644 index 0000000..00c6778 --- /dev/null +++ b/install-scripts/rog.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# Determine the directory where the script is located +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Change the working directory to the parent directory of the script +PARENT_DIR="$SCRIPT_DIR/.." +cd "$PARENT_DIR" || exit 1 + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_rog.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + +### Install software for Asus ROG laptops ### + + printf " Installing ASUS ROG packages...\n" + for ASUS in asusctl supergfxctl rog-control-center; do + install_package "$ASUS" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $ASUS install had failed, please check the install.log" + exit 1 + fi + done + printf " Activating ROG services...\n" + sudo systemctl enable --now supergfxd 2>&1 | tee -a "$LOG" + sed -i '20s/#//' config/hypr/configs/Execs.conf + +clear \ No newline at end of file diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh new file mode 100644 index 0000000..144a179 --- /dev/null +++ b/install-scripts/sddm.sh @@ -0,0 +1,119 @@ +#!/bin/bash + +# Determine the directory where the script is located +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Change the working directory to the parent directory of the script +PARENT_DIR="$SCRIPT_DIR/.." +cd "$PARENT_DIR" || exit 1 + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_sddm.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + +# SDDM + + # Check if SDDM is already installed + if pacman -Qs sddm > /dev/null; then + # Prompt user to manually install sddm-git to remove SDDM + read -n1 -rep "SDDM is already installed. Would you like to manually install sddm-git to remove it? This requires manual intervention. (y/n)" manual_install_sddm + echo + if [[ $manual_install_sddm =~ ^[Yy]$ ]]; then + $ISAUR -S sddm-git 2>&1 | tee -a "$LOG" + fi + fi + + # Install SDDM and Catppuccin theme + printf "${NOTE} Installing SDDM-git........\n" + for package in sddm-git; do + install_package "$package" 2>&1 | tee -a "$LOG" + [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $package install has failed, please check the install.log"; exit 1; } + done + + # Check if other login managers installed and disabling its service before enabling sddm + for login_manager in lightdm gdm lxdm lxdm-gtk3; do + if pacman -Qs "$login_manager" > /dev/null; then + echo "disabling $login_manager..." + sudo systemctl disable "$login_manager.service" 2>&1 | tee -a "$LOG" + fi + done + + printf " Activating sddm service........\n" + sudo systemctl enable sddm + + # Set up SDDM + echo -e "${NOTE} Setting up the login screen." + sddm_conf_dir=/etc/sddm.conf.d + [ ! -d "$sddm_conf_dir" ] && { printf "$CAT - $sddm_conf_dir not found, creating...\n"; sudo mkdir "$sddm_conf_dir" 2>&1 | tee -a "$LOG"; } + + wayland_sessions_dir=/usr/share/wayland-sessions + [ ! -d "$wayland_sessions_dir" ] && { printf "$CAT - $wayland_sessions_dir not found, creating...\n"; sudo mkdir "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; } + sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG" + + # SDDM-themes + read -n1 -rep "${CAT} OPTIONAL - Would you like to install SDDM themes? (y/n)" install_sddm_theme + if [[ $install_sddm_theme =~ ^[Yy]$ ]]; then + while true; do + read -rp "${CAT} Which SDDM Theme you want to install? Catpuccin or Tokyo Night 'c' or 't': " choice + case "$choice" in + c|C) + printf "\n%s - Installing Catpuccin SDDM Theme\n" "${NOTE}" + for sddm_theme in sddm-catppuccin-git; do + install_package "$sddm_theme" 2>&1 | tee -a "$LOG" + [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $sddm_theme install has failed, please check the install.log"; } + done + echo -e "[Theme]\nCurrent=catppuccin" | sudo tee -a "$sddm_conf_dir/10-theme.conf" 2>&1 | tee -a "$LOG" + break + ;; + t|T) + printf "\n%s - Installing Tokyo SDDM Theme\n" "${NOTE}" + for sddm_theme in sddm-theme-tokyo-night; do + install_package "$sddm_theme" 2>&1 | tee -a "$LOG" + [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $sddm_theme install has failed, please check the install.log"; } + done + echo -e "[Theme]\nCurrent=tokyo-night-sddm" | sudo tee -a "$sddm_conf_dir/10-theme.conf" 2>&1 | tee -a "$LOG" + break + ;; + *) + printf "%s - Invalid choice. Please enter 'c' or 't'\n" "${ERROR}" + continue + ;; + esac + done + fi + + clear \ No newline at end of file diff --git a/install-scripts/thunar.sh b/install-scripts/thunar.sh new file mode 100644 index 0000000..3f63a4a --- /dev/null +++ b/install-scripts/thunar.sh @@ -0,0 +1,77 @@ +#!/bin/bash + +thunar=( +thunar +thunar-volman +tumbler +thunar-archive-plugin +) + + +# Determine the directory where the script is located +SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" + +# Change the working directory to the parent directory of the script +PARENT_DIR="$SCRIPT_DIR/.." +cd "$PARENT_DIR" || exit 1 + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_thunar.log" + + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + +# Bluetooth + +printf "${NOTE} Installing Thunar Packages...\n" + for THUNAR in "${thunar[@]}"; do + install_package "$THUNAR" 2>&1 | tee -a "$LOG" + [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $THUNAR install had failed, please check the install.log"; exit 1; } + done + + # Check for existing config folders and backup + for DIR1 in Thunar xfce4; do + DIRPATH=~/.config/$DIR1 + if [ -d "$DIRPATH" ]; then + echo -e "${NOTE} Config for $DIR1 found, backing up." + mv $DIRPATH $DIRPATH-back-up 2>&1 | tee -a "$LOG" + echo -e "${NOTE} Backed up $DIR1 to $DIRPATH-back-up." + fi + done + cp -r config/xfce4 ~/.config/ && { echo "Copy xfce4 completed!"; } || { echo "Error: Failed to copy xfce4 config files."; exit 1; } 2>&1 | tee -a "$LOG" + cp -r config/Thunar ~/.config/ && { echo "Copy Thunar completed!"; } || { echo "Error: Failed to copy Thunar config files."; exit 1; } 2>&1 | tee -a "$LOG" + + clear \ No newline at end of file diff --git a/install-scripts/xdph.sh b/install-scripts/xdph.sh new file mode 100644 index 0000000..221cf92 --- /dev/null +++ b/install-scripts/xdph.sh @@ -0,0 +1,79 @@ +#!/bin/bash + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_xdph.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} + +# XDG-DESKTOP-PORTAL-HYPRLAND + +for xdph in xdg-desktop-portal-hyprland; do + install_package "$xdph" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $xdph install had failed, please check the install.log" + exit 1 + fi +done + +printf "${NOTE} Checking for other XDG-Desktop-Portal-Implementations....\n" +sleep 1 +printf "\n" +printf "${NOTE} XDG-desktop-portal-KDE (if installed) should be manually disabled or removed! I can't remove it... sorry...\n" +read -n1 -rep "${CAT} Would you like me to try to remove other XDG-Desktop-Portal-Implementations? (y/n)" XDPH1 +sleep 1 +if [[ $XDPH1 =~ ^[Yy]$ ]]; then + # Clean out other portals + printf "${NOTE} Clearing any other xdg-desktop-portal implementations...\n" + # Check if packages are installed and uninstall if present + if pacman -Qs xdg-desktop-portal-gnome > /dev/null ; then + echo "Removing xdg-desktop-portal-gnome..." + sudo pacman -R --noconfirm xdg-desktop-portal-gnome 2>&1 | tee -a $LOG + fi + if pacman -Qs xdg-desktop-portal-gtk > /dev/null ; then + echo "Removing xdg-desktop-portal-gtk..." + sudo pacman -R --noconfirm xdg-desktop-portal-gtk 2>&1 | tee -a $LOG + fi + if pacman -Qs xdg-desktop-portal-wlr > /dev/null ; then + echo "Removing xdg-desktop-portal-wlr..." + sudo pacman -R --noconfirm xdg-desktop-portal-wlr 2>&1 | tee -a $LOG + fi + if pacman -Qs xdg-desktop-portal-lxqt > /dev/null ; then + echo "Removing xdg-desktop-portal-lxqt..." + sudo pacman -R --noconfirm xdg-desktop-portal-lxqt 2>&1 | tee -a $LOG + fi +fi + +clear \ No newline at end of file diff --git a/install-scripts/yay.sh b/install-scripts/yay.sh new file mode 100644 index 0000000..eb20f89 --- /dev/null +++ b/install-scripts/yay.sh @@ -0,0 +1,35 @@ +#!/bin/bash + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_yay.log" + +# Check for AUR helper and install if not found +ISAUR=$(command -v yay || command -v paru) + +if [ -n "$ISAUR" ]; then + printf "\n%s - AUR helper yay was located, moving on.\n" "${OK}" +else + printf "\n%s - AUR helper was NOT located\n" "$WARN" + printf "\n%s - Installing yay from AUR\n" "${NOTE}" + git clone https://aur.archlinux.org/yay-bin.git || { printf "%s - Failed to clone yay from AUR\n" "${ERROR}"; exit 1; } + cd yay-bin || { printf "%s - Failed to enter yay-bin directory\n" "${ERROR}"; exit 1; } + makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install yay from AUR\n" "${ERROR}"; exit 1; } +fi + +# Update system before proceeding +printf "\n%s - Performing a full system update to avoid issues.... \n" "${NOTE}" +ISAUR=$(command -v yay || command -v paru) + +$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; } + +clear \ No newline at end of file diff --git a/install-scripts/zsh.sh b/install-scripts/zsh.sh new file mode 100644 index 0000000..d27afaa --- /dev/null +++ b/install-scripts/zsh.sh @@ -0,0 +1,68 @@ +#!/bin/bash + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S)_zsh.log" + +ISAUR=$(command -v yay || command -v paru) + +# Set the script to exit on error +set -e + +# Function for installing packages +install_package() { + # Checking if package is already installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "${OK} $1 is already installed. Skipping..." + else + # Package not installed + echo -e "${NOTE} Installing $1 ..." + $ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" + # Making sure package is installed + if $ISAUR -Q "$1" &>> /dev/null ; then + echo -e "\e[1A\e[K${OK} $1 was installed." + else + # Something is missing, exiting to review log + echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" + exit 1 + fi + fi +} +# zsh and oh-my-zsh +printf "${WARN} #### IF YOU HAVE ALREADY ZSH AND OH MY ZSH, YOU SHOULD CHOOSE NO HERE #########\n" +printf "${WARN} ### --------------------------------------------------------------------########\n" +printf "${NOTE} ## CHECK OUT README FOR ADDITIONAL STEPS REQUIRED ONCE ZSH AND OH-MY-ZSH INSTALLED ##\n" +printf "\n" +printf "\n" +read -n1 -rep "${CAT} OPTIONAL - Would you like to install zsh and oh-my-zsh and use as default shell? (y/n)" zsh +echo + +if [[ $zsh =~ ^[Yy]$ ]]; then + for ZSH in zsh zsh-completions; do + install_package "$ZSH" 2>&1 | tee -a "$LOG" + if [ $? -ne 0 ]; then + echo -e "\e[1A\e[K${ERROR} - $ZSH install had failed, please check the install.log" + fi + done + + # Oh-my-zsh plus zsh-autosuggestions and zsh-syntax-highlighting + printf "${NOTE} Installing oh-my-zsh and plugins.\n" + sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended && \ + git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions && \ + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting && \ + cp -r 'assets/.zshrc' ~/ + print_success "ZSH and oh-my-zsh installed." +else + printf "${NOTE} ZSH wont be installed.\n" +fi + +clear \ No newline at end of file diff --git a/install.sh b/install.sh new file mode 100644 index 0000000..021b3f3 --- /dev/null +++ b/install.sh @@ -0,0 +1,204 @@ +#!/bin/bash + +clear + +# Welcome message +echo "$(tput setaf 6)Welcome to JaKooLit's Arch-Hyprland Install Script!$(tput sgr0)" +echo +echo "$(tput setaf 3)NOTE: You will be required to answer some questions during the installation! $(tput sgr0)" +echo + +read -p "$(tput setaf 6)Would you like to proceed? (y/n): $(tput sgr0)" proceed + +if [ "$proceed" != "y" ]; then + echo "Installation aborted." + exit 1 +fi + +# Check if running as root. If root, script will exit +if [[ $EUID -eq 0 ]]; then + echo "This script should not be executed as root! Exiting......." + exit 1 +fi + +# Set some colors for output messages +OK="$(tput setaf 2)[OK]$(tput sgr0)" +ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" +NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" +WARN="$(tput setaf 166)[WARN]$(tput sgr0)" +CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" +ORANGE=$(tput setaf 166) +YELLOW=$(tput setaf 3) +RESET=$(tput sgr0) + +# Function to colorize prompts +colorize_prompt() { + local color="$1" + local message="$2" + echo -n "${color}${message}$(tput sgr0)" +} + +# Set the name of the log file to include the current date and time +LOG="install-$(date +%d-%H%M%S).log" + +# Initialize variables to store user responses +aur_helper="" +bluetooth="" +dots="" +gtk_themes="" +nvidia="" +rog="" +sddm="" +thunar="" +xdph="" +zsh="" + +# Define the directory where your scripts are located +script_directory=install-scripts + +# Function to ask a yes/no question and set the response in a variable +ask_yes_no() { + while true; do + read -p "$(colorize_prompt "$CAT" "$1 (y/n): ")" choice + case "$choice" in + [Yy]* ) eval "$2='Y'"; return 0;; + [Nn]* ) eval "$2='N'"; return 1;; + * ) echo "Please answer with y or n.";; + esac + done +} + +# Function to ask a custom question with specific options and set the response in a variable +ask_custom_option() { + local prompt="$1" + local valid_options="$2" + local response_var="$3" + + while true; do + read -p "$(colorize_prompt "$CAT" "$prompt ($valid_options): ")" choice + if [[ " $valid_options " == *" $choice "* ]]; then + eval "$response_var='$choice'" + return 0 + else + echo "Please choose one of the provided options: $valid_options" + fi + done +} +# Function to execute a script if it exists and make it executable +execute_script() { + local script="$1" + local script_path="$script_directory/$script" + if [ -f "$script_path" ]; then + chmod +x "$script_path" + if [ -x "$script_path" ]; then + "$script_path" + else + echo "Failed to make script '$script' executable." + fi + else + echo "Script '$script' not found in '$script_directory'." + fi +} + +# Collect user responses to all questions +printf "\n" +ask_custom_option "Select AUR helper" "paru or yay" aur_helper +printf "\n" +ask_yes_no "Do you have nvidia gpu?" nvidia +printf "\n" +ask_yes_no "Do you want to install GTK themes?" gtk_themes +printf "\n" +ask_yes_no "Do you want to configure Bluetooth?" bluetooth +printf "\n" +ask_yes_no "Do you want to install Thunar file manager?" thunar +printf "\n" +ask_yes_no "Installing in Asus ROG Laptops?" rog +printf "\n" +ask_yes_no "Do you want to install and configure SDDM?" sddm +printf "\n" +ask_yes_no "Do you want to install XDG-DESKTOP-PORTAL-HYPRLAND?" xdph +printf "\n" +ask_yes_no "Do you want to install zsh and oh-my-zsh?" zsh +printf "\n" +ask_yes_no "Do you want to copy dotfiles?" dots +printf "\n" +# Ensuring all in the scripts folder are made executable +chmod +x install-scripts/* + +# Execute AUR helper script based on user choice +if [ "$aur_helper" == "paru" ]; then + execute_script "paru.sh" +elif [ "$aur_helper" == "yay" ]; then + execute_script "yay.sh" +fi + +# Install hyprland packages +execute_script "00-hypr-pkgs.sh" + +if [ "$nvidia" == "Y" ]; then + execute_script "nvidia.sh" +fi + +if [ "$nvidia" == "N" ]; then + execute_script "hyprland.sh" +fi + +if [ "$gtk_themes" == "Y" ]; then + execute_script "gtk_themes.sh" +fi + +if [ "$bluetooth" == "Y" ]; then + execute_script "bluetooth.sh" +fi + +if [ "$thunar" == "Y" ]; then + execute_script "thunar.sh" +fi + +if [ "$rog" == "Y" ]; then + execute_script "rog.sh" +fi + +if [ "$sddm" == "Y" ]; then + execute_script "sddm.sh" +fi + +if [ "$xdph" == "Y" ]; then + execute_script "xdph.sh" +fi + +if [ "$zsh" == "Y" ]; then + execute_script "zsh.sh" +fi + +if [ "$dots" == "Y" ]; then + execute_script "dotfiles.sh" "$(pwd)" + +fi + +clear + +printf "\n${OK} Yey! Installation Completed.\n" +printf "\n" +printf "\n${NOTE} NOTICE TO NVIDIA OWNERS! System will reboot your system!\n" +sleep 2 +printf "\n${NOTE} You can start Hyprland by typing Hyprland (IF SDDM is not installed) (note the capital H!).\n" +printf "\n" +printf "\n" +read -n1 -rep "${CAT} Would you like to start Hyprland now? (y,n)" HYP + +if [[ $HYP =~ ^[Yy]$ ]]; then + if [[ "$nvidia" == "Y" ]]; then + echo "${NOTE} NVIDIA GPU detected. Rebooting the system..." + systemctl reboot + elif command -v sddm >/dev/null; then + sudo systemctl start sddm 2>&1 | tee -a "$LOG" + else + if command -v Hyprland >/dev/null; then + exec Hyprland + else + echo "${ERROR} Hyprland not found. Please make sure Hyprland is installed by checking install logs" + fi + fi +fi + diff --git a/screenshots/Plasma-Style.png b/screenshots/Plasma-Style.png new file mode 100644 index 0000000..d9c9a59 Binary files /dev/null and b/screenshots/Plasma-Style.png differ diff --git a/screenshots/Sample-Tokyo-waybar.png b/screenshots/Sample-Tokyo-waybar.png new file mode 100644 index 0000000..2320730 Binary files /dev/null and b/screenshots/Sample-Tokyo-waybar.png differ diff --git a/screenshots/WofiEmoji.png b/screenshots/WofiEmoji.png new file mode 100644 index 0000000..e98a378 Binary files /dev/null and b/screenshots/WofiEmoji.png differ diff --git a/screenshots/btop-nvtop-mission-center.png b/screenshots/btop-nvtop-mission-center.png new file mode 100644 index 0000000..2cc3a71 Binary files /dev/null and b/screenshots/btop-nvtop-mission-center.png differ diff --git a/screenshots/dual-panel-dark_light-switch.png b/screenshots/dual-panel-dark_light-switch.png new file mode 100644 index 0000000..3e4baa0 Binary files /dev/null and b/screenshots/dual-panel-dark_light-switch.png differ diff --git a/screenshots/dual-panel-light-dark-switch.png b/screenshots/dual-panel-light-dark-switch.png new file mode 100644 index 0000000..9398a8b Binary files /dev/null and b/screenshots/dual-panel-light-dark-switch.png differ diff --git a/screenshots/gnome-style.png b/screenshots/gnome-style.png new file mode 100644 index 0000000..763a997 Binary files /dev/null and b/screenshots/gnome-style.png differ diff --git a/screenshots/install-script-initial-query.png b/screenshots/install-script-initial-query.png new file mode 100644 index 0000000..40c8039 Binary files /dev/null and b/screenshots/install-script-initial-query.png differ diff --git a/screenshots/pavuExample.jpg b/screenshots/pavuExample.jpg new file mode 100644 index 0000000..1b915e7 Binary files /dev/null and b/screenshots/pavuExample.jpg differ