-
-
-
+
-
-
-
+
+
+
+
+
+#### ✨ for ZSH and OH-MY-ZSH installation
+> installer should auto change your default shell to zsh. However, if it does not, do this
```bash
chsh -s $(which zsh)
zsh
source ~/.zshrc
```
- reboot or logout
-- by default mikeh theme is installed. You can find more themes from this [`OH-MY-ZSH-THEMES`](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
+- by default agnoster 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"
-### ✨ TO DO once installation done and dotfiles copied
-- if you opted to install gtk themes, to apply the theme and icon, press the dark/light button (beside the padlock). To apply Bibata modern ice cursor, launch nwg-look (GTK Settings) through rofi.
+#### ✨ TO DO once installation done and dotfiles copied
+- ~~if you opted to install gtk themes, to apply the theme and icon, press the dark/light button (beside the padlock). To apply Bibata modern ice cursor, launch nwg-look (GTK Settings) through rofi.~~ Hyprland-Dots v2.1.18, initial boot file will attempt to apply GTK themes,cursor, and icons. You can tweak more using nwg-look (GTK-Settings) utility
+
- SUPER H for HINT or click on the waybar HINT! Button
-- Head over to [FAQ](https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ) and [TIPS](https://github.com/JaKooLit/Hyprland-Dots/wiki/TIPS)
+- Head over to [FAQ](https://github.com/JaKooLit/Hyprland-Dots/wiki/4.-FAQ) and [TIPS](https://github.com/JaKooLit/Hyprland-Dots/wiki/5.-TIPS)
- if you installed in your laptop and Brightness and Keyboard brightness does not work you can execute this command `sudo chmod +s $(which brightnessctl)`
-### ✨ Packages that are manually downloaded and build. These packages will not be updated by apt and have to be manually updated
+#### ✨ Packages that are manually downloaded and build. These packages will not be updated by apt and have to be manually updated
- Hyprland [`LINK`](https://github.com/hyprwm/Hyprland)
- nwg-look [`LINK`](https://github.com/nwg-piotr/nwg-look)
- Asus ROG asusctl [`LINK`](https://gitlab.com/asus-linux/asusctl) and superfxctl [`LINK`](https://gitlab.com/asus-linux/supergfxctl)
@@ -118,15 +133,16 @@ source ~/.zshrc
- swaylock-effects [`LINK`](https://github.com/mortie/swaylock-effects)
- swappy [`LINK`](https://github.com/jtheoof/swappy)
- xdg-desktop-portal-hyprland [`LINK`](https://github.com/hyprwm/xdg-desktop-portal-hyprland)
+- rofi-wayland [`LINK`](https://github.com/lbonn/rofi)
-- a.) to update these package, in your installation folder, you can move these folders, `Hyprland` `nwg-look` `swaylock-effects` `swappy` `swww` `asusctl` `supergfxctl`, as appropriate or download manually, cd into it, update/install
+- a.) to update these package, in your installation folder, you can move these folders, `Hyprland` `nwg-look` `swaylock-effects` `swappy` `swww` `rofi` `asusctl` `supergfxctl`, as appropriate or download manually, cd into it, update/install
-- b.) to update Hyprland and xdg-desktop-portal-hyprland
-``` bash
-git pull
-make all
-sudo make install
-```
+~~- b.) to update Hyprland and xdg-desktop-portal-hyprland~~
+~~``` bash~~
+~~git pull~~
+~~make all~~
+~~sudo make install~~
+~~```~~
- c.) for nwg-look, asusctl, supergfxtctl, to update ran
``` bash
git pull
@@ -144,12 +160,31 @@ meson build
ninja -C build
sudo ninja -C build install
```
+- e.) for rofi-wayland
+``` bash
+git pull
+meson setup build
+ninja -C build
+sudo ninja -C build install
+```
-### 🛣️ Roadmap:
-- [ ] Install zsh and oh-my-zsh without necessary steps above
+#### 🤬 FAQ
+#### Most common question I got is, Hey Ja, Why the heck it is taking long time to install? Other distro like Arch its only a minute or two. Why here takes like forever?!?!?!
+- Well, most of the core packages are downloaded and Build and compiled from SOURCE. There are no pre-built binary (yet) for Debian and Ubuntu. Unlike Other distros, they already have prepacked binary that can just download and install.
+
+#### ❗ some known issues on this Installer
+- some users reported that they have to install some packages. It is in the install-scripts/force-install.sh
+- At this time the packages force to install are the following `imagemagick`
+
+#### 🙋 Got a questions regarding the Hyprland Dots configurations? 🙋
+- Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
+
+
+#### 🛣️ Roadmap:
+- ~~[ ] Install zsh and oh-my-zsh without necessary steps above~~ DONE
- [ ] possibly adding gruvbox themes, cursors, icons
-### ❗ some known issues
+#### ❗ 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
@@ -168,24 +203,28 @@ log into your account
- [ ] network is down or become unmanaged [`This`](https://askubuntu.com/questions/71159/network-manager-says-device-not-managed) might help
-### 📒 Final Notes
+#### 📒 Final Notes
- join my discord channel [`Discord`](https://discord.gg/V2SJ92vbEN)
- Feel free to copy, re-distribute, and use this script however you want. Would appreciate if you give me some loves by crediting my work :)
-### 👍👍👍 Thanks and Credits!
+#### 👍👍👍 Thanks and Credits!
- [`Hyprland`](https://hyprland.org/) Of course to Hyprland and @vaxerski for this awesome Dynamic Tiling Manager.
-- shout out to CooSee from Gentoo forums for the nice rainbow borders
-### 💌 Some screenshots shared to me via discord
+#### 💌 Some screenshots shared to me via discord
- Discord user : thunderlake.

-## 💖 Support
+### 💖 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 🤩
+- You can also buy me Coffee Through ko-fi.com or Coffee.com 🤩
+
+[](https://www.buymeacoffee.com/JaKooLit)
+
+#### 📹 Youtube videos (Click to view and watch the playlist) 📹
+[](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t)
\ No newline at end of file
diff --git a/assets/.zprofile b/assets/.zprofile
new file mode 100644
index 0000000..d0161af
--- /dev/null
+++ b/assets/.zprofile
@@ -0,0 +1,3 @@
+if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
+ Hyprland
+fi
diff --git a/assets/.zshrc b/assets/.zshrc
index 8842782..84489f4 100644
--- a/assets/.zshrc
+++ b/assets/.zshrc
@@ -3,7 +3,7 @@
export ZSH="$HOME/.oh-my-zsh"
-ZSH_THEME="mikeh"
+ZSH_THEME="agnoster"
plugins=(
git
@@ -13,15 +13,20 @@ plugins=(
source $ZSH/oh-my-zsh.sh
+
+# Display Pokemon-colorscripts
+# Project page: https://gitlab.com/phoneybadger/pokemon-colorscripts#on-other-distros-and-macos
+pokemon-colorscripts --no-title -s -r
+
# Import colorscheme from 'wal' asynchronously
# & # Run the process in the background.
# ( ) # Hide shell job control messages.
# Not supported in the "fish" shell.
-(cat ~/.cache/wal/sequences &)
+#(cat ~/.cache/wal/sequences &)
# Alternative (blocks terminal for 0-3ms)
-cat ~/.cache/wal/sequences
+#cat ~/.cache/wal/sequences
# To add support for TTYs this line can be optionally added.
-source ~/.cache/wal/colors-tty.sh
+#source ~/.cache/wal/colors-tty.sh
diff --git a/install-scripts/00-dependencies.sh b/install-scripts/00-dependencies.sh
index 565229e..0a62875 100644
--- a/install-scripts/00-dependencies.sh
+++ b/install-scripts/00-dependencies.sh
@@ -48,7 +48,9 @@ dependencies=(
libpam0g-dev
libpango1.0-dev
libpipewire-0.3-dev
+ libqt6svg6
libseat-dev
+ libstartup-notification0-dev
libswresample-dev
libsystemd-dev
libtiff-dev
@@ -60,12 +62,15 @@ dependencies=(
libwayland-dev
libwebp-dev
libxcb-composite0-dev
+ libxcb-cursor-dev
libxcb-dri3-dev
libxcb-ewmh-dev
libxcb-icccm4-dev
libxcb-present-dev
libxcb-render-util0-dev
libxcb-res0-dev
+ libxcb-util-dev
+ libxcb-xinerama0-dev
libxcb-xinput-dev
libxcb-xkb-dev
libxkbcommon-dev
diff --git a/install-scripts/00-hypr-pkgs.sh b/install-scripts/00-hypr-pkgs.sh
index a30d05e..40cbd97 100644
--- a/install-scripts/00-hypr-pkgs.sh
+++ b/install-scripts/00-hypr-pkgs.sh
@@ -21,18 +21,20 @@ hypr_package=(
imagemagick
kitty
nano
- network-manager-gnome
pavucontrol
playerctl
polkit-kde-agent-1
python3-requests
python3-pip
qt5ct
- rofi
+ qt5-style-kvantum
+ qt5-style-kvantum-themes
+ qt6ct
slurp
waybar
wget
wl-clipboard
+ wlogout
xdg-user-dirs
yad
)
@@ -46,6 +48,7 @@ hypr_package_2=(
gnome-system-monitor
mousepad
mpv
+ mpv-mpris
nvtop
pamixer
swayidle
@@ -108,6 +111,19 @@ for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do
fi
done
+
+# Install cliphist using go
+printf "\n%s - Installing cliphist using go.... \n" "${NOTE}"
+export PATH=$PATH:/usr/local/bin
+go install go.senan.xyz/cliphist@latest 2>&1 | tee -a "$LOG"
+
+# copy cliphist into /usr/local/bin for some reason it is installing in ~/go/bin
+sudo cp -r "$HOME/go/bin/cliphist" "/usr/local/bin/" 2>&1 | tee -a "$LOG"
+
+## making brightnessctl work
+sudo chmod +s $(which brightnessctl) 2>&1 | tee -a "$LOG" || true
+
+
## Installing pywal colors
printf "\n%s - Installing Pywal.... \n" "${NOTE}"
diff --git a/install-scripts/InputGroup.sh b/install-scripts/InputGroup.sh
new file mode 100644
index 0000000..e82e37b
--- /dev/null
+++ b/install-scripts/InputGroup.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+############## WARNING DO NOT EDIT BEYOND THIS LINE if you dont know what you are doing! ######################################
+# 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)_input.log"
+
+while true; do
+ echo "${WARN} This script will add or remove your user from the 'input' group."
+ echo "${NOTE} Please note that adding yourself to the 'input' group might be necessary for waybar keyboard-state functionality."
+
+ read -p "${YELLOW}Do you want to proceed? (y/n): ${RESET}" choice
+
+ if [[ $choice == "y" || $choice == "Y" ]]; then
+ # Check if the 'input' group exists
+ if grep -q '^input:' /etc/group; then
+ echo "${OK} 'input' group exists."
+ else
+ echo "${NOTE} 'input' group doesn't exist. Creating 'input' group..."
+ sudo groupadd input
+
+ # Log the creation of the 'input' group
+ echo "$(date '+%Y-%m-%d %H:%M:%S') - 'input' group created" >> "$LOG"
+ fi
+
+ # Add the user to the input group
+ sudo usermod -aG input "$(whoami)"
+ echo "${OK} User added to the 'input' group. Changes will take effect after you log out and log back in."
+
+ # Log the addition of the user to the 'input' group
+ echo "$(date '+%Y-%m-%d %H:%M:%S') - User added to 'input' group" >> "$LOG"
+ break # Break out of the loop if 'yes' is chosen
+ elif [[ $choice == "n" || $choice == "N" ]]; then
+ echo "${NOTE} No changes made. Exiting the script."
+ break # Break out of the loop if 'no' is chosen
+ else
+ echo "${ERROR} Invalid choice. Please enter 'y' for yes or 'n' for no."
+ fi
+done
diff --git a/install-scripts/force-install.sh b/install-scripts/force-install.sh
new file mode 100644
index 0000000..77cd9ed
--- /dev/null
+++ b/install-scripts/force-install.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+
+force=(
+ imagemagick
+)
+
+############## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU'RE DOING! ##############
+
+# 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')_force.log"
+
+
+printf "${NOTE} Force installing packages...\n"
+ for FORCE in "${force[@]}"; do
+ sudo apt-get --reinstall install -y "$FORCE" 2>&1 | tee -a "$LOG"
+ [ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $CLIP install had failed, please check the install.log"; exit 1; }
+ done
+
+
+clear
\ No newline at end of file
diff --git a/install-scripts/gtk_themes.sh b/install-scripts/gtk_themes.sh
index c6a9c9a..c957aad 100644
--- a/install-scripts/gtk_themes.sh
+++ b/install-scripts/gtk_themes.sh
@@ -1,5 +1,9 @@
#!/bin/bash
+engine=(
+ gtk2-engines-murrine
+)
+
############## WARNING DO NOT EDIT BEYOND THIS LINE if you dont know what you are doing! ######################################
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
@@ -43,26 +47,33 @@ install_package() {
fi
}
-# installing unzip package to unzip theme packages
-for PKG1 in unzip; do
- install_package "$PKG1" 2>&1 | tee -a "$LOG"
- if [ $? -ne 0 ]; then
- echo -e "\033[1A\033[K${ERROR} - $PKG1 install had failed, please check the install.log"
- exit 1
- fi
+# installing engine needed for gtk themes
+for PKG1 in "${engine[@]}"; do
+ install_package "$PKG1" 2>&1 | tee -a "$LOG"
+ if [ $? -ne 0 ]; then
+ echo -e "\033[1A\033[K${ERROR} - $PKG1 install had failed, please check the install.log"
+ exit 1
+ fi
done
-printf "${NOTE} Installing Tokyo Theme GTK packages...\n"
-if wget https://github.com/ljmill/tokyo-night-icons/releases/download/v0.2.0/TokyoNight-SE.tar.bz2; then
- mkdir -p ~/.icons
- tar -xvjf TokyoNight-SE.tar.bz2 -C ~/.icons
- mkdir -p ~/.themes
- unzip -q "assets/tokyo-themes/Tokyonight-Dark-B.zip" -d ~/.themes || true
- unzip -q "assets/tokyo-themes/Tokyonight-Light-B.zip" -d ~/.themes || true
+# Check if the directory exists and delete it if present
+if [ -d "GTK-themes-icons" ]; then
+ echo "$NOTE Tokyo Theme GTK themes and Icons folder exist..deleting..." 2>&1 | tee -a "$LOG"
+ rm -rf "GTK-themes-icons" 2>&1 | tee -a "$LOG"
+fi
+
+echo "$NOTE Cloning Tokyo Theme GTK themes and Icons repository..." 2>&1 | tee -a "$LOG"
+if git clone https://github.com/JaKooLit/GTK-themes-icons.git 2>&1 | tee -a "$LOG"; then
+ cd GTK-themes-icons
+ chmod +x auto-extract.sh
+ ./auto-extract.sh 2>&1 | tee -a "$LOG"
+ cd ..
+ echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes folders" 2>&1 | tee -a "$LOG"
else
- echo -e "${ERROR} Download failed for Tokyo Theme GTK packages."
+ echo "$ERROR Download failed for Tokyo Theme GTK themes and Icons.." 2>&1 | tee -a "$LOG"
fi
tar -xf "assets/Bibata-Modern-Ice.tar.xz" -C ~/.icons 2>&1 | tee -a "$LOG"
+echo "$OK Extracted Bibata-Modern-Ice.tar.xz to ~/.icons folder." 2>&1 | tee -a "$LOG"
clear
diff --git a/install-scripts/hyprland.sh b/install-scripts/hyprland.sh
index f0d312f..3012af7 100644
--- a/install-scripts/hyprland.sh
+++ b/install-scripts/hyprland.sh
@@ -15,18 +15,25 @@ LOG="install-$(date +%d-%H%M%S)_hyprland.log"
# Clone, build, and install Hyprland using Cmake
printf "${NOTE} Cloning Hyprland...\n"
-if git clone --recursive https://github.com/hyprwm/Hyprland 2>&1 | tee -a "$LOG"; then
- cd Hyprland || exit 1
+
+# Check if Hyprland folder exists and remove it
+if [ -d "Hyprland" ]; then
+ printf "${NOTE} Removing existing Hyprland folder...\n"
+ rm -rf "Hyprland" 2>&1 | tee -a "$LOG"
+fi
+
+if git clone --recursive -b v0.32.3 "https://github.com/hyprwm/Hyprland" 2>&1 | tee -a "$LOG"; then
+ cd "Hyprland" || exit 1
make all 2>&1 | tee -a "$LOG"
if sudo make install 2>&1 | tee -a "$LOG"; then
printf "${OK} Hyprland installed successfully.\n"
else
echo -e "${ERROR} Installation failed for Hyprland."
fi
- # Return to the previous directory
cd ..
else
echo -e "${ERROR} Download failed for Hyprland."
fi
clear
+
diff --git a/install-scripts/nvidia.sh b/install-scripts/nvidia.sh
index 77f072e..689497b 100644
--- a/install-scripts/nvidia.sh
+++ b/install-scripts/nvidia.sh
@@ -39,6 +39,7 @@ set -e
# Create a backup of the sources.list file
sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup 2>&1 | tee -a "$LOG"
+## UBUNTU - NVIDIA (comment this two by adding # you dont need this!)
# Add the comment and repository entry to sources.list
echo "## for nvidia" | sudo tee -a /etc/apt/sources.list 2>&1 | tee -a "$LOG"
echo "deb http://deb.debian.org/debian/ trixie main contrib non-free non-free-firmware" | sudo tee -a /etc/apt/sources.list 2>&1 | tee -a "$LOG"
@@ -81,10 +82,15 @@ add_to_file() {
# Clone, build, and install nvidia-Hyprland using Cmake
printf "${NOTE} Installing nvidia-Hyprland...\n"
-if git clone --recursive https://github.com/hyprwm/Hyprland 2>&1 | tee -a "$LOG"; then
+
+# Check if Hyprland folder exists and remove it
+if [ -d "Hyprland" ]; then
+ printf "${NOTE} Removing existing Hyprland folder...\n"
+ rm -rf "Hyprland" 2>&1 | tee -a "$LOG"
+fi
+
+if git clone --recursive -b v0.32.3 "https://github.com/hyprwm/Hyprland" 2>&1 | tee -a "$LOG"; then
cd Hyprland || exit 1
- # additional for hyprland-nvidia
- sed 's/glFlush();/glFinish();/g' -i subprojects/wlroots/render/gles2/renderer.c
make all
if sudo make install 2>&1 | tee -a "$LOG"; then
printf "${OK} Nvidia-Hyprland installed successfully.\n"
diff --git a/install-scripts/nwg-look.sh b/install-scripts/nwg-look.sh
index 424380b..6b3635f 100644
--- a/install-scripts/nwg-look.sh
+++ b/install-scripts/nwg-look.sh
@@ -53,6 +53,13 @@ for package in "${nwg_look[@]}"; do
install_package "$package" || exit 1
done
+
+# Check if nwg-look folder exists and remove it
+if [ -d "nwg-look" ]; then
+ printf "${NOTE} Removing existing nwg-look folder...\n"
+ rm -rf "nwg-look" 2>&1 | tee -a "$LOG"
+fi
+
printf "${NOTE} Installing nwg-look\n"
if git clone https://github.com/nwg-piotr/nwg-look.git; then
cd nwg-look || exit 1
diff --git a/install-scripts/pywal.sh b/install-scripts/pywal.sh
new file mode 100644
index 0000000..e82822d
--- /dev/null
+++ b/install-scripts/pywal.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+
+pywal=(
+ imagemagick
+ python3-pip
+)
+
+############## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU'RE DOING! ##############
+
+# 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')_pywal.log"
+
+# Function for installing packages
+install_package() {
+ # Checking if package is already installed
+ if sudo dpkg -l | grep -q -w "$1" ; then
+ echo -e "${OK} $1 is already installed. Skipping..."
+ else
+ # Package not installed
+ echo -e "${NOTE} Installing $1 ..."
+ sudo apt-get install -y "$1" 2>&1 | tee -a "$LOG"
+ # Making sure the package is installed
+ if sudo dpkg -l | grep -q -w "$1" ; then
+ echo -e "\e[1A\e[K${OK} $1 was installed."
+ else
+ # Something is missing, exiting to review the 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
+}
+
+for package in "${pywal[@]}"; do
+ install_package "$package" || exit 1
+done
+
+## Installing pywal colors
+printf "\n%s - Installing Pywal.... \n" "${NOTE}"
+
+sudo pip3 install pywal --break-system-packages 2>&1 | tee -a "$LOG"
+
+clear
diff --git a/install-scripts/rofi-wayland.sh b/install-scripts/rofi-wayland.sh
new file mode 100644
index 0000000..c42e998
--- /dev/null
+++ b/install-scripts/rofi-wayland.sh
@@ -0,0 +1,99 @@
+#!/bin/bash
+
+rofi=(
+ bison
+ flex
+)
+
+############## WARNING DO NOT EDIT BEYOND THIS LINE if you dont know what you are doing! ######################################
+# 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)_rofi_wayland.log"
+
+# uninstall other rofi
+printf "${YELLOW} Checking for other rofi packages and remove if any..${RESET}\n"
+if sudo dpkg -l | grep -q -w "rofi"; then
+ printf "${YELLOW} rofi detected.. uninstalling...${RESET}\n"
+ for rofi in rofi; do
+ sudo apt-get autoremove -y "rofi" 2>/dev/null | tee -a "$LOG" || true
+ done
+fi
+
+set -e
+
+# Function for installing packages
+install_package() {
+ # Checking if package is already installed
+ if sudo dpkg -l | grep -q -w "$1" ; then
+ echo -e "${OK} $1 is already installed. Skipping..."
+ else
+ # Package not installed
+ echo -e "${NOTE} Installing $1 ..."
+ sudo apt-get install -y "$1" 2>&1 | tee -a "$LOG"
+ # Making sure the package is installed
+ if sudo dpkg -l | grep -q -w "$1" ; then
+ echo -e "\e[1A\e[K${OK} $1 was installed."
+ else
+ # Something is missing, exiting to review the 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 rofi-wayland dependencies.... \n" "${NOTE}"
+
+for PKG1 in "${rofi[@]}"; 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
+
+printf "\n\n\n"
+
+# Clone and build rofi - wayland
+printf "${NOTE} Installing rofi-wayland...\n"
+
+# Check if rofi folder exists and remove it
+if [ -d "rofi" ]; then
+ printf "${NOTE} Removing existing rofi folder...\n"
+ rm -rf "rofi" 2>&1 | tee -a "$LOG"
+fi
+
+if git clone https://github.com/lbonn/rofi.git 2>&1 | tee -a "$LOG"; then
+ cd "rofi" || exit 1
+ if meson setup build && ninja -C build; then
+ if sudo ninja -C build install 2>&1 | tee -a "$LOG"; then
+ printf "${OK} rofi-wayland installed successfully.\n"
+ # Return to the previous directory
+ cd ..
+ else
+ echo -e "${ERROR} Installation failed for rofi-wayland."
+ fi
+ else
+ echo -e "${ERROR} Meson setup or ninja build failed for rofi-wayland."
+ fi
+else
+ echo -e "${ERROR} Download failed for rofi-wayland."
+fi
+
+clear
\ No newline at end of file
diff --git a/install-scripts/sddm.sh b/install-scripts/sddm.sh
index a18618a..1d8ddf9 100644
--- a/install-scripts/sddm.sh
+++ b/install-scripts/sddm.sh
@@ -98,11 +98,47 @@ wayland_sessions_dir=/usr/share/wayland-sessions
[ ! -d "$wayland_sessions_dir" ] && { printf "$CAT - $wayland_sessions_dir not found, creating...\n"; sudo mkdir -p "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; }
sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG"
-# Tokyo-night SDDM-themes
-printf "\n%s - Installing Tokyo-Night SDDM Theme\n" "${NOTE}"
-git clone https://github.com/rototrash/tokyo-night-sddm.git 2>&1 | tee -a "$LOG"
-sudo mkdir -p /usr/share/sddm/themes
-sudo mv tokyo-night-sddm /usr/share/sddm/themes/
-echo -e "[Theme]\nCurrent=tokyo-night-sddm" | sudo tee -a "$sddm_conf_dir/10-theme.conf" 2>&1 | tee -a "$LOG"
+# SDDM-themes
+valid_input=false
+while [ "$valid_input" != true ]; do
+ read -n 1 -r -p "${CAT} OPTIONAL - Would you like to install SDDM themes? (y/n)" install_sddm_theme
+ if [[ $install_sddm_theme =~ ^[Yy]$ ]]; then
+ printf "\n%s - Installing Simple SDDM Theme\n" "${NOTE}"
+
+ # Check if /usr/share/sddm/themes/simple-sddm exists and remove if it does
+ if [ -d "/usr/share/sddm/themes/simple-sddm" ]; then
+ sudo rm -rf "/usr/share/sddm/themes/simple-sddm"
+ echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory." 2>&1 | tee -a "$LOG"
+ fi
+
+ # Check if simple-sddm directory exists in the current directory and remove if it does
+ if [ -d "simple-sddm" ]; then
+ rm -rf "simple-sddm"
+ echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory from the current location." 2>&1 | tee -a "$LOG"
+ fi
+
+ if git clone https://github.com/JaKooLit/simple-sddm.git 2>&1 | tee -a "$LOG"; then
+ while [ ! -d "simple-sddm" ]; do
+ sleep 1
+ done
+
+ if [ ! -d "/usr/share/sddm/themes" ]; then
+ sudo mkdir -p /usr/share/sddm/themes
+ echo -e "\e[1A\e[K${OK} - Directory '/usr/share/sddm/themes' created." 2>&1 | tee -a "$LOG"
+ fi
+
+ sudo mv simple-sddm /usr/share/sddm/themes/
+ echo -e "[Theme]\nCurrent=simple-sddm" | sudo tee "$sddm_conf_dir/10-theme.conf" &>> "$LOG"
+ else
+ echo -e "\e[1A\e[K${ERROR} - Failed to clone the theme repository. Please check your internet connection or repository availability." | tee -a "$LOG" >&2
+ fi
+ valid_input=true
+ elif [[ $install_sddm_theme =~ ^[Nn]$ ]]; then
+ printf "\n%s - No SDDM themes will be installed.\n" "${NOTE}" 2>&1 | tee -a "$LOG"
+ valid_input=true
+ else
+ printf "\n%s - Invalid input. Please enter 'y' for Yes or 'n' for No.\n" "${ERROR}" 2>&1 | tee -a "$LOG"
+ fi
+done
clear
\ No newline at end of file
diff --git a/install-scripts/swappy.sh b/install-scripts/swappy.sh
index 6be7bb5..d93f858 100644
--- a/install-scripts/swappy.sh
+++ b/install-scripts/swappy.sh
@@ -24,6 +24,12 @@ LOG="install-$(date +'%d-%H%M%S')_swappy.log"
printf "${NOTE} Installing swappy..\n"
+# Check if Hyprland folder exists and remove it
+if [ -d "swappy" ]; then
+ printf "${NOTE} Removing existing swappy folder...\n"
+ rm -rf "swappy" 2>&1 | tee -a "$LOG"
+fi
+
if git clone https://github.com/jtheoof/swappy.git; then
cd swappy || exit 1
meson build
diff --git a/install-scripts/swaylock-effects.sh b/install-scripts/swaylock-effects.sh
index 18b863d..c623037 100644
--- a/install-scripts/swaylock-effects.sh
+++ b/install-scripts/swaylock-effects.sh
@@ -24,6 +24,12 @@ LOG="install-$(date +'%d-%H%M%S')_swaylock-effects.log"
printf "${NOTE} Installing swaylock-effects\n"
+# Check if swaylock-effects folder exists and remove it
+if [ -d "swaylock-effects" ]; then
+ printf "${NOTE} Removing existing swaylock-effects folder...\n"
+ rm -rf "swaylock-effects" 2>&1 | tee -a "$LOG"
+fi
+
if git clone https://github.com/mortie/swaylock-effects.git; then
cd swaylock-effects || exit 1
meson build
diff --git a/install-scripts/swww.sh b/install-scripts/swww.sh
index 4f8aa78..4a69d49 100644
--- a/install-scripts/swww.sh
+++ b/install-scripts/swww.sh
@@ -24,6 +24,12 @@ LOG="install-$(date +'%d-%H%M%S')_swww.log"
printf "${NOTE} Installing swww\n"
+# Check if swww folder exists and remove it
+if [ -d "swww" ]; then
+ printf "${NOTE} Removing existing swww folder...\n"
+ rm -rf "swww" 2>&1 | tee -a "$LOG"
+fi
+
if git clone https://github.com/Horus645/swww.git 2>&1 | tee -a "$LOG"; then
cd swww || exit 1
source "$HOME/.cargo/env"
diff --git a/install-scripts/thunar.sh b/install-scripts/thunar.sh
index 432b757..877c8b3 100644
--- a/install-scripts/thunar.sh
+++ b/install-scripts/thunar.sh
@@ -67,7 +67,9 @@ printf "${NOTE} Installing Thunar Packages...\n"
echo -e "${NOTE} Backed up $DIR1 to $DIRPATH-back-up."
fi
done
- cp -r assets/xfce4 ~/.config/ && { echo "Copy xfce4 completed!"; } || { echo "Error: Failed to copy xfce4 config files."; exit 1; } 2>&1 | tee -a "$LOG"
- cp -r assets/Thunar ~/.config/ && { echo "Copy Thunar completed!"; } || { echo "Error: Failed to copy Thunar config files."; exit 1; } 2>&1 | tee -a "$LOG"
+
+# copying from assets
+cp -r assets/xfce4 ~/.config/ && echo "Copy xfce4 completed!" || echo "Error: Failed to copy xfce4 config files." 2>&1 | tee -a "$LOG"
+cp -r assets/Thunar ~/.config/ && echo "Copy Thunar completed!" || echo "Error: Failed to copy Thunar config files." 2>&1 | tee -a "$LOG"
clear
diff --git a/install-scripts/xdph.sh b/install-scripts/xdph.sh
index 9600447..8216b7e 100644
--- a/install-scripts/xdph.sh
+++ b/install-scripts/xdph.sh
@@ -22,6 +22,13 @@ 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"
+
+# Check if xdg-desktop-portal-hyprland folder exists and remove it
+if [ -d "xdg-desktop-portal-hyprland" ]; then
+ printf "${NOTE} Removing existing xdg-desktop-portal-hyprland folder...\n"
+ rm -rf "xdg-desktop-portal-hyprland" 2>&1 | tee -a "$LOG"
+fi
+
# Clone and build xdg-desktop-portal-hyprland
printf "${NOTE} Installing xdg-desktop-portal-hyprland...\n"
if git clone --recursive https://github.com/hyprwm/xdg-desktop-portal-hyprland 2>&1 | tee -a "$LOG"; then
@@ -38,9 +45,8 @@ else
echo -e "${ERROR} Download failed for xdg-desktop-portal-hyprland."
fi
-printf "\n"
-printf "\n"
-printf "\n"
+printf "\n\n\n"
+
# Clean out other portals
printf "${NOTE} Clearing any other xdg-desktop-portal implementations...\n"
# Check if packages are installed and uninstall if present
diff --git a/install-scripts/zsh.sh b/install-scripts/zsh.sh
index d462d4a..14f87e5 100644
--- a/install-scripts/zsh.sh
+++ b/install-scripts/zsh.sh
@@ -44,31 +44,74 @@ install_package() {
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
+# Check if the oh-my-zsh directory exists
+if [ -d "$HOME/.oh-my-zsh" ]; then
+ printf "${NOTE} Oh My Zsh found. Creating a backup before uninstalling...${RESET}\n"
+ # Perform backup using cp -r and create a backup directory with -backup suffix
+ cp -r "$HOME/.oh-my-zsh" "$HOME/.oh-my-zsh-backup" || true
+ mv "$HOME/.zshrc" "$HOME/.zshrc-backup" || true
-if [[ $zsh =~ ^[Yy]$ ]]; then
- for ZSH in zsh ; 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' ~/
-else
- printf "${NOTE} ZSH wont be installed.\n"
+ printf "${NOTE} Backup created....${RESET}\n"
fi
+
+# Installing zsh packages
+printf "${NOTE} Installing core zsh packages...${RESET}\n"
+for ZSH in zsh; 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
+
+# Install Oh My Zsh, plugins, and set zsh as default shell
+if command -v zsh >/dev/null; then
+ printf "${NOTE} Installing Oh My Zsh and plugins...\n"
+ if [ ! -d "$HOME/.oh-my-zsh" ]; then
+ sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended || true
+ else
+ echo "Directory .oh-my-zsh already exists. Skipping re-installation."
+ fi
+ # Check if the directories exist before cloning the repositories
+ if [ ! -d "$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" ]; then
+ git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions || true
+ else
+ echo "Directory zsh-autosuggestions already exists. Skipping cloning."
+ fi
+
+ if [ ! -d "$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" ]; then
+ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting || true
+ else
+ echo "Directory zsh-syntax-highlighting already exists. Skipping cloning."
+ fi
+
+ cp -r 'assets/.zshrc' ~/
+ cp -r 'assets/.zprofile' ~/
+
+ printf "${NOTE} Changing default shell to zsh...\n"
+
+ while ! chsh -s $(which zsh); do
+ echo "${ERROR} Authentication failed. Please enter the correct password."
+ sleep 1
+ done
+ printf "${NOTE} Shell changed successfully to zsh.\n" 2>&1 | tee -a "$LOG"
+
+fi
+ printf "\n\n\n\n"
+
+# Pokemon Colorscripts
+printf "${NOTE} Installing Pokemon-Colorscripts.\n"
+
+# Check if directory 'pokemon-colorscripts' exists
+if [ -d "pokemon-colorscripts" ]; then
+ echo "${OK} Directory 'pokemon-colorscripts' exists. Pulling changes..." 2>&1 | tee -a "$LOG"
+ cd pokemon-colorscripts && git pull 2>&1 | tee -a "$LOG"
+ sudo ./install.sh 2>&1 | tee -a "$LOG"
+else
+ git clone https://gitlab.com/phoneybadger/pokemon-colorscripts.git 2>&1 | tee -a "$LOG"
+ cd pokemon-colorscripts && sudo ./install.sh 2>&1 | tee -a "$LOG"
+fi
+
+cd ..
+
clear
diff --git a/install.sh b/install.sh
index be15559..16a4b71 100644
--- a/install.sh
+++ b/install.sh
@@ -10,17 +10,10 @@ fi
clear
-echo "
-
- ██╗ █████╗ ██╗ ██╗ ██████╗ ██████╗ ██╗ ██╗████████╗
- ██║██╔══██╗ ██║ ██╔╝██╔═══██╗██╔═══██╗██║ ██║╚══██╔══╝
- ██║███████║ █████╔╝ ██║ ██║██║ ██║██║ ██║ ██║
-██ ██║██╔══██║ ██╔═██╗ ██║ ██║██║ ██║██║ ██║ ██║
-╚█████╔╝██║ ██║██╗██║ ██╗╚██████╔╝╚██████╔╝███████╗██║ ██║
- ╚════╝ ╚═╝ ╚═╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝
-
-
-"
+printf "\n%.0s" {1..3}
+echo " | _. |/ _ _ | o _|_ "
+echo " \_| (_| o |\ (_) (_) |_ | |_ "
+printf "\n%.0s" {1..2}
# Welcome message
echo "$(tput setaf 6)Welcome to JaKooLit's Debian / Ubuntu Hyprland Install Script!$(tput sgr0)"
@@ -29,6 +22,16 @@ echo "$(tput setaf 166)ATTENTION: Run a full system update and Reboot first!! (H
echo
echo "$(tput setaf 3)NOTE: You will be required to answer some questions during the installation! $(tput sgr0)"
echo
+echo "$(tput setaf 3)NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland wont start! $(tput sgr0)"
+echo
+
+printf "\n%.0s" {1..5}
+echo "$(tput bold)$(tput setaf 3)ATTENTION!!!! VERY IMPORTANT NOTICE!!!! $(tput sgr0)"
+echo "$(tput bold)$(tput setaf 7)Recent Hyprland release v0.33.0 needed a newer libdrm $(tput sgr0)"
+echo "$(tput bold)$(tput setaf 7)Debian doesn't have the newer libdrm yet on their repo. $(tput sgr0)"
+echo "$(tput bold)$(tput setaf 7)For now, the Hyprland version to be installed with this script will be v0.32.3$(tput sgr0)"
+printf "\n%.0s" {1..3}
+
read -p "$(tput setaf 6)Would you like to proceed? (y/n): $(tput sgr0)" proceed
@@ -140,7 +143,7 @@ ask_yes_no "-Install and configure SDDM log-in Manager?" sddm
printf "\n"
ask_yes_no "-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)" xdph
printf "\n"
-ask_yes_no "-Do you want to install zsh and oh-my-zsh?" zsh
+ask_yes_no "-Install zsh, oh-my-zsh & pokemon-colorscripts?" zsh
printf "\n"
ask_yes_no "-Install swaylock-effects? (recommended - for screen locks)" swaylock
printf "\n"
@@ -159,6 +162,10 @@ execute_script "00-hypr-pkgs.sh"
execute_script "fonts.sh"
execute_script "swappy.sh"
execute_script "swww.sh"
+execute_script "rofi-wayland.sh"
+execute_script "pywal.sh"
+execute_script "force-install.sh"
+
if [ "$nvidia" == "Y" ]; then
execute_script "nvidia.sh"
@@ -204,6 +211,8 @@ if [ "$nwg" == "Y" ]; then
execute_script "nwg-look.sh"
fi
+execute_script "InputGroup.sh"
+
if [ "$dots" == "Y" ]; then
execute_script "dotfiles.sh"
@@ -213,20 +222,18 @@ clear
printf "\n${OK} Yey! Installation Completed.\n"
printf "\n"
-printf "\n${NOTE} NOTICE TO NVIDIA OWNERS! IT's a MUST for your to 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${NOTE} It is highly recommended to reboot your system.\n\n"
-read -n1 -rep "${CAT} Would you like to reboot now? (y,n)" HYP
-if [[ $HYP =~ ^[Yy]$ ]]; then
+read -rp "${CAT} Would you like to reboot now? (y/n): " HYP
+
+if [[ "$HYP" =~ ^[Yy]$ ]]; then
if [[ "$nvidia" == "Y" ]]; then
echo "${NOTE} NVIDIA GPU detected. Rebooting the system..."
systemctl reboot
else
systemctl reboot
-
fi
fi
-