Compare commits
119 Commits
Arch-Hyprl
...
ddubs-ags-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43adf21548 | ||
|
|
7afaf65973 | ||
|
|
a9e33e5c58 | ||
|
|
93581957d4 | ||
|
|
6c86adfcdc | ||
|
|
0ab997e352 | ||
|
|
5b427072ae | ||
|
|
f6a7c27229 | ||
|
|
aa140acf69 | ||
|
|
d26c9e30bd | ||
|
|
78aa1dbcb2 | ||
|
|
47836c2fb9 | ||
|
|
3b2281568c | ||
|
|
f185af7389 | ||
|
|
deb545e3b1 | ||
|
|
5a3895682d | ||
|
|
2fbfecd07a | ||
|
|
2afc7293d5 | ||
|
|
e433e89754 | ||
|
|
b5f342f62c | ||
|
|
0803fb9c0f | ||
|
|
10d45b5d99 | ||
|
|
3fcfdc0bad | ||
|
|
5011f153be | ||
|
|
672a700695 | ||
|
|
78310220d4 | ||
|
|
409c612049 | ||
|
|
aab92dac45 | ||
|
|
165b06ea25 | ||
|
|
9ff63be4ac | ||
|
|
807ca99fc2 | ||
|
|
63330afe2f | ||
|
|
6b88c9cc58 | ||
|
|
ced0769af2 | ||
|
|
26ee47374d | ||
|
|
14711bacd3 | ||
|
|
ead1dc65a5 | ||
|
|
d29eee9b17 | ||
|
|
6cfb2ef41f | ||
|
|
7b759fd829 | ||
|
|
585357ca07 | ||
|
|
1f034b4f22 | ||
|
|
36e84ebc53 | ||
|
|
a4164ca612 | ||
|
|
ff2e5a02e3 | ||
|
|
eedc504ecd | ||
|
|
6820111709 | ||
|
|
ffee7f7b9a | ||
|
|
9b3df653a9 | ||
|
|
050fd2dcc4 | ||
|
|
2c54155221 | ||
|
|
1e1253d1e6 | ||
|
|
8c0de4d74f | ||
|
|
4212522647 | ||
|
|
9b41ac3eeb | ||
|
|
750d565ee1 | ||
|
|
79b725deb6 | ||
|
|
cde0a7c6f8 | ||
|
|
3e0c99b822 | ||
|
|
e2e2e47738 | ||
|
|
f4a2591cde | ||
|
|
817c1d9810 | ||
|
|
d158b95283 | ||
|
|
a5aab435fd | ||
|
|
3c65d6b5b6 | ||
|
|
e632e64fce | ||
|
|
9e144ad61a | ||
|
|
92b279e5a0 | ||
|
|
64040f0b34 | ||
|
|
c93101a99e | ||
|
|
bab65fd28d | ||
|
|
ccb1ceb29e | ||
|
|
5fb35a7d3e | ||
|
|
c20d0682d1 | ||
|
|
acc2238bf0 | ||
|
|
a74b17a97c | ||
|
|
068d55dd4b | ||
|
|
06187ec5e6 | ||
|
|
f0c32198fc | ||
|
|
ec1285d8d1 | ||
|
|
3486e33dde | ||
|
|
0bdef7305d | ||
|
|
f3d0b3ddfb | ||
|
|
96d3adc1ed | ||
|
|
e6b78f074a | ||
|
|
902464683c | ||
|
|
3010cc882d | ||
|
|
cd16826482 | ||
|
|
96c03b18a2 | ||
|
|
11a27c79b9 | ||
|
|
e565faf376 | ||
|
|
17494d5d9d | ||
|
|
971a4083ff | ||
|
|
432a2070cf | ||
|
|
450267e45b | ||
|
|
279536e69b | ||
|
|
ffaf189402 | ||
|
|
e31f518c36 | ||
|
|
3c6090925b | ||
|
|
d345c08e01 | ||
|
|
36b0732056 | ||
|
|
30fb2d1814 | ||
|
|
213e3757df | ||
|
|
e87f6c1beb | ||
|
|
16f1b2418d | ||
|
|
54ff099d51 | ||
|
|
79ce9a266e | ||
|
|
ab7063cadc | ||
|
|
eafb151d0d | ||
|
|
7976768137 | ||
|
|
59f9364309 | ||
|
|
185a7d2db7 | ||
|
|
07ab9e9147 | ||
|
|
f0186dec33 | ||
|
|
bf44e13dac | ||
|
|
aae594ecff | ||
|
|
c3c4d621ca | ||
|
|
58185e1dd3 | ||
|
|
cc3d20e664 |
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
1
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
@@ -1,5 +1,29 @@
|
|||||||
## CHANGELOGS
|
## CHANGELOGS
|
||||||
|
|
||||||
|
## 22 July 2025
|
||||||
|
- Updated sddm theme and script to work with the updated simple_sddm_2 theme
|
||||||
|
|
||||||
|
## 17 July 2025
|
||||||
|
- added quickshell script to replace ags for desktop overview
|
||||||
|
|
||||||
|
## 08 June 2025
|
||||||
|
- updated SDDM theme.
|
||||||
|
|
||||||
|
## 20 March 2025
|
||||||
|
- adjusted hyprland installation script. This is great for those who are using -git packages
|
||||||
|
- added findutils as dependencies
|
||||||
|
|
||||||
|
## 11 March 2025
|
||||||
|
- Added uninstall script
|
||||||
|
- forked AGS v1 into JakooLit repo. This is just incase Aylur decide to take down v1
|
||||||
|
|
||||||
|
## 10 March 2025
|
||||||
|
- Dropped pyprland in favor of hyprland built in tool for a drop down like terminal and Desktop magnifier
|
||||||
|
|
||||||
|
## 06 March 2025
|
||||||
|
- Switched to whiptail version for Y & N questions
|
||||||
|
- switched eza to lsd
|
||||||
|
|
||||||
## 23 Feb 2025
|
## 23 Feb 2025
|
||||||
- added Victor Mono Font for proper hyprlock font rendering for Dots v2.3.12
|
- added Victor Mono Font for proper hyprlock font rendering for Dots v2.3.12
|
||||||
- added Fantasque Sans Mono Nerd for Kitty
|
- added Fantasque Sans Mono Nerd for Kitty
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Contributing to Community Standards
|
# Contributing to KooL Hyprland Projects
|
||||||
|
|
||||||
Thank you for your interest in contributing to Community Standards! We welcome any contributions, including bug fixes, feature enhancements, documentation improvements, and other general improvements.
|
Thank you for your interest in contributing to KooL Hyprland Projects! We welcome any contributions, including bug fixes, feature enhancements, documentation improvements, and other general improvements.
|
||||||
|
|
||||||
## Getting Started
|
## Getting Started
|
||||||
|
|
||||||
@@ -55,10 +55,9 @@ Thank you for your interest in contributing to Community Standards! We welcome a
|
|||||||
- Make sure all tests pass or fully tested before submitting your changes.
|
- Make sure all tests pass or fully tested before submitting your changes.
|
||||||
- Keep your pull request focused and avoid including unrelated changes.
|
- Keep your pull request focused and avoid including unrelated changes.
|
||||||
- Remember to follow the following files before submitting your changes.
|
- Remember to follow the following files before submitting your changes.
|
||||||
- [bug_report.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/bug_report.md) - Use this template to create a report to help us improve.
|
- [bug.yml](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/bug.yml) - Use this template to create a report to help us improve.
|
||||||
- [feature_request.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/feature_request.md) - Use this template to suggest a feature for this project.
|
- [feature.yml](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/feature.yml) - Use this template to suggest a feature for this project.
|
||||||
- [documentation_update.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/documentation_update.md) - Use this template to propose a change to the documentation.
|
- [documentation-update.yml](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/documentation-update.yml) - Use this template to propose a change to the documentation.
|
||||||
- [custom.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/custom.md) - Use this template to submit a custom issue.
|
|
||||||
- [PULL_REQUEST_TEMPLATE.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md) - Use this template to submit a pull request.
|
- [PULL_REQUEST_TEMPLATE.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md) - Use this template to submit a pull request.
|
||||||
- [COMMIT_MESSAGE_GUIDELINES.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/COMMIT_MESSAGE_GUIDELINES.md) - Read this file to learn about the commit message guidelines.
|
- [COMMIT_MESSAGE_GUIDELINES.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/COMMIT_MESSAGE_GUIDELINES.md) - Read this file to learn about the commit message guidelines.
|
||||||
- [CONTRIBUTING.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/CONTRIBUTING.md) - Read this file to learn about the contributing guidelines.
|
- [CONTRIBUTING.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/CONTRIBUTING.md) - Read this file to learn about the contributing guidelines.
|
||||||
@@ -67,4 +66,4 @@ Thank you for your interest in contributing to Community Standards! We welcome a
|
|||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
|
|
||||||
If you have any questions, feel free to contact via [GitHub Discussions](https://github.com/JaKooLit/Arch-Hyprland/discussions) or [Through Discord Server](https://discord.gg/V2SJ92vbEN)
|
If you have any questions, feel free to contact via [GitHub Discussions](https://github.com/JaKooLit/Arch-Hyprland/discussions) or [Through Discord Server](https://discord.gg/kool-tech-world)
|
||||||
|
|||||||
BIN
Installer.png
BIN
Installer.png
Binary file not shown.
|
Before Width: | Height: | Size: 589 KiB |
139
README.md
139
README.md
@@ -6,8 +6,7 @@
|
|||||||
<img src="https://raw.githubusercontent.com/JaKooLit/Hyprland-Dots/main/assets/latte.png" width="400" />
|
<img src="https://raw.githubusercontent.com/JaKooLit/Hyprland-Dots/main/assets/latte.png" width="400" />
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
   <a href="https://discord.gg/9JEgZsfhex"> <img src="https://img.shields.io/discord/1151869464405606400?style=for-the-badge&logo=discord&color=cba6f7&link=https%3A%2F%2Fdiscord.gg%9JEgZsfhex"> </a>
|
   <a href="https://discord.gg/kool-tech-world"> <img src="https://img.shields.io/discord/1151869464405606400?style=for-the-badge&logo=discord&color=cba6f7&link=https%3A%2F%2Fdiscord.gg%kool-tech-world"> </a>
|
||||||
|
|
||||||
|
|
||||||
<br/>
|
<br/>
|
||||||
</div>
|
</div>
|
||||||
@@ -34,7 +33,7 @@
|
|||||||
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki"><kbd> <br> Wiki <br> </kbd></a>  
|
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki"><kbd> <br> Wiki <br> </kbd></a>  
|
||||||
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds"><kbd> <br> Keybinds <br> </kbd></a>  
|
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds"><kbd> <br> Keybinds <br> </kbd></a>  
|
||||||
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ"><kbd> <br> FAQ <br> </kbd></a>  
|
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ"><kbd> <br> FAQ <br> </kbd></a>  
|
||||||
<a href="https://discord.gg/9JEgZsfhex"><kbd> <br> Discord <br> </kbd></a>
|
<a href="https://discord.gg/kool-tech-world"><kbd> <br> Discord <br> </kbd></a>
|
||||||
</div><br>
|
</div><br>
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
@@ -54,49 +53,73 @@ https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
### Gallery and Videos
|
### Gallery and Videos
|
||||||
|
|
||||||
#### 🎥 Feb 2025 Video explanation of installation with preset
|
#### 🎥 Feb 2025 Video explanation of installation with preset
|
||||||
|
|
||||||
- [YOUTUBE-LINK](https://youtu.be/wQ70lo7P6vA?si=_QcbrNKh_Bg0L3wC)
|
- [YOUTUBE-LINK](https://youtu.be/wQ70lo7P6vA?si=_QcbrNKh_Bg0L3wC)
|
||||||
- [YOUTUBE-Hyprland-Playlist](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t)
|
- [YOUTUBE-Hyprland-Playlist](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t)
|
||||||
|
|
||||||
|
|
||||||
### 🪧🪧🪧 ANNOUNCEMENT 🪧🪧🪧
|
### 🪧🪧🪧 ANNOUNCEMENT 🪧🪧🪧
|
||||||
|
|
||||||
- This Repo does not contain Hyprland Dots or configs! Dotfiles can be checked here [`Hyprland-Dots`](https://github.com/JaKooLit/Hyprland-Dots) . During installation, if you opt to copy pre-configured dots, it will be downloaded from that centralized repo.
|
- This Repo does not contain Hyprland Dots or configs! Dotfiles can be checked here [`Hyprland-Dots`](https://github.com/JaKooLit/Hyprland-Dots) . During installation, if you opt to copy pre-configured dots, it will be downloaded from that centralized repo.
|
||||||
- Hyprland-Dots use are constantly evolving / improving. you can check CHANGELOGS here [`Hyprland-Dots-Changelogs`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Changelogs)
|
- Hyprland-Dots use are constantly evolving / improving. you can check CHANGELOGS here [`Hyprland-Dots-Changelogs`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Changelogs)
|
||||||
- Since the Hyprland-Dots are evolving, some of the screenshots maybe old
|
- Since the Hyprland-Dots are evolving, some of the screenshots maybe old
|
||||||
- the wallpaper offered to be downloaded towards the end is from this [`REPO`](https://github.com/JaKooLit/Wallpaper-Bank)
|
- the wallpaper offered to be downloaded towards the end is from this [`REPO`](https://github.com/JaKooLit/Wallpaper-Bank)
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> install a backup tool like `snapper` or `timeshift`. and Backup your system before installing hyprland using this script. This script does NOT include uninstallation of packages
|
> install a backup tool like `snapper` or `timeshift`. and Backup your system before installing hyprland using this script (HIGHLY RECOMMENDED)
|
||||||
|
|
||||||
> [!NOTE]
|
|
||||||
> Main reason why I have not included an uninstallation script is simple. Some packages maybe already installed on your system by default. If I create an uninstall script with packages that I have set to install, you may end up a unrecoverable system.
|
|
||||||
|
|
||||||
> [!CAUTION]
|
> [!CAUTION]
|
||||||
> Download this script on a directory where you have write permissions. ie. HOME. Or any directory within your home directory. Else script will fail
|
> Download this script on a directory where you have write permissions. ie. HOME. Or any directory within your home directory. Else script will fail
|
||||||
|
|
||||||
#### 🆕 Prerequisites
|
#### 🆕 Prerequisites
|
||||||
|
|
||||||
- This install script is intended for atleast Server type / Minimal Arch Linux installed.
|
- This install script is intended for atleast Server type / Minimal Arch Linux installed.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> 🔘 Pipewire and Pipewire audio
|
> 🔘 Pipewire and Pipewire audio
|
||||||
|
|
||||||
- This script will install pipewire and will also disable or will uninstall pulseaudio. If you dont want it, edit install.sh, about line 191 and comment the line `execute_script "pipewire.sh"` or you can simply just delete pipewire.sh in install-scripts directory before installing.
|
- This script will install pipewire and will also disable or will uninstall pulseaudio. If you dont want it, edit install.sh, about line 191 and comment the line `execute_script "pipewire.sh"` or you can simply just delete pipewire.sh in install-scripts directory before installing.
|
||||||
|
|
||||||
#### ✨ Customize the packages to be installed
|
#### ✨ Customize the packages to be installed
|
||||||
|
|
||||||
- inside the install-scripts directory, you can edit 00-hypr-pkgs.sh. Care though as the Hyprland Dots may not work properly!
|
- inside the install-scripts directory, you can edit 00-hypr-pkgs.sh. Care though as the Hyprland Dots may not work properly!
|
||||||
|
|
||||||
|
#### 🚩 Switching to SDDM assuming you have GDM installed and running
|
||||||
|
|
||||||
|
- if you really want switch to SDDM from GDM, you need to disable the gdm first.
|
||||||
|
- `sudo systemctl disable gdm.service` then reboot
|
||||||
|
- after reboot, need to ran the install script via tty. So suggest download the install script first. Then disable gdm. reboot and once logged in, cd into Distro-Hyprland then `./install.sh` and then choose SDDM and SDDM theme in the options.
|
||||||
|
- NOTE: Distro-Hyprland is Arch-Hyprland, or Fedora-Hyprland .. depends on which install scripts you downloaded.
|
||||||
|
|
||||||
#### 💫 SDDM and GTK Themes offered
|
#### 💫 SDDM and GTK Themes offered
|
||||||
- If you opted to install SDDM theme, here's the [`LINK`](https://codeberg.org/JaKooLit/sddm-sequoia) which is a fork of [`LINK`](https://codeberg.org/minMelody/sddm-sequoia)
|
|
||||||
|
- If you opted to install SDDM theme, here's the [`LINK`](https://github.com/JaKooLit/simple-sddm-2) which is a modified fork of [`LINK`](https://github.com/Keyitdev/sddm-astronaut-theme)
|
||||||
- If you opted to install GTK Themes, Icons, here's the [`LINK`](https://github.com/JaKooLit/GTK-themes-icons). This also includes Bibata Modern Ice cursor.
|
- If you opted to install GTK Themes, Icons, here's the [`LINK`](https://github.com/JaKooLit/GTK-themes-icons). This also includes Bibata Modern Ice cursor.
|
||||||
|
|
||||||
#### 👀 NVidia GPU Owners.
|
#### 👀 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 install-scripts directory
|
- 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 install-scripts directory
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> If you want to use nouveau driver, choose N when asked if you have nvidia gpu. This is because the nvidia installer part, it will blacklist nouveau. Hyprland will still be installed but it will skip blacklisting nouveau.
|
> If you want to use nouveau driver, dont choose nvidia in the option. This is because the nvidia installer part, it will blacklist nouveau. Hyprland will still be installed but it will skip blacklisting nouveau.
|
||||||
|
|
||||||
- After installation, check [`THIS`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users)
|
- After installation, check [`THIS`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users)
|
||||||
|
|
||||||
|
## ✨ Auto clone and install
|
||||||
|
|
||||||
|
> [!CAUTION]
|
||||||
|
> If you are using FISH SHELL, DO NOT use this function. Clone and ran install.sh instead
|
||||||
|
|
||||||
|
- you can use this command to automatically clone the installer and ran the script for you
|
||||||
|
- NOTE: `curl` package is required before running this command
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/auto-install.sh)
|
||||||
|
```
|
||||||
|
|
||||||
## ✨ to use this script
|
## ✨ to use this script
|
||||||
|
|
||||||
- clone this repo (latest commit only) to reduce file size download by using git. Change directory, make executable and run the script
|
- clone this repo (latest commit only) to reduce file size download by using git. Change directory, make executable and run the script
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
@@ -106,78 +129,93 @@ chmod +x install.sh
|
|||||||
./install.sh
|
./install.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
<p align="center">
|
### 💥 💥 UNINSTALL SCRIPT / Removal of Config Files
|
||||||
<img align="center" width="100%" src="https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/Installer.png" />
|
|
||||||
|
|
||||||
|
|
||||||
### 🤟 semi-unattended installation (new for Feb 2025)
|
|
||||||
- edit preset.sh to modify what packages you want. Make sure to change only with Y or N
|
|
||||||
- to use preset instead of usual `./install.sh` you can ran like this
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./install.sh --preset
|
|
||||||
```
|
|
||||||
|
|
||||||
- if you have nvidia you can add --nvidia argument
|
|
||||||
|
|
||||||
```bash
|
|
||||||
./install.sh --preset --nvidia
|
|
||||||
```
|
|
||||||
|
|
||||||
- its called semi-unattended it is because you still have to answer some questions when installing KooL's Hyprland Dots
|
|
||||||
|
|
||||||
|
- 11 March 2025, due to popular request, created a guided `uninstall.sh` script. USE this with caution as it may render your system unstable.
|
||||||
|
- I will not be responsible if your system breaks
|
||||||
|
- The best still to revert to previous state of your system is via `timeshift or snapper`
|
||||||
|
|
||||||
#### ✨ for ZSH and OH-MY-ZSH installation
|
#### ✨ for ZSH and OH-MY-ZSH installation
|
||||||
|
|
||||||
> installer should auto change your default shell to zsh. However, if it does not, do this
|
> installer should auto change your default shell to zsh. However, if it does not, do this
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
chsh -s $(which zsh)
|
chsh -s $(which zsh)
|
||||||
zsh
|
zsh
|
||||||
source ~/.zshrc
|
source ~/.zshrc
|
||||||
```
|
```
|
||||||
|
|
||||||
- reboot or logout
|
- reboot or logout
|
||||||
- by default `agnosterzak` theme is installed. Which is from external oh-my-zsh theme. You can find more themes from this [`OH-MY-ZSH-THEMES`](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
|
- by default `agnosterzak` theme is installed. Which is from external oh-my-zsh theme. You can find more themes from this [`OH-MY-ZSH-THEMES`](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
|
||||||
- to change the theme, `SUPER SHIFT O` , choose desired theme, and close and open terminal.
|
- to change the theme, `SUPER SHIFT O` , choose desired theme, and close and open terminal.
|
||||||
- or manually edit `~/.zshrc` . Look for ZSH_THEME="desired theme"
|
- or manually edit `~/.zshrc` . Look for ZSH_THEME="desired theme"
|
||||||
|
|
||||||
#### 🎞️ AGS Overview DEMO
|
#### 🎞️ AGS Overview DEMO
|
||||||
|
|
||||||
- in case you wonder, here is a short demo of AGS overview [Youtube LINK](https://youtu.be/zY5SLNPBJTs)
|
- in case you wonder, here is a short demo of AGS overview [Youtube LINK](https://youtu.be/zY5SLNPBJTs)
|
||||||
|
|
||||||
#### ✨ TO DO once installation done and dotfiles copied
|
#### ✨ TO DO once installation done and dotfiles copied
|
||||||
|
|
||||||
- SUPER H for HINT or click on the waybar HINT! Button
|
- SUPER H for HINT or click on the waybar HINT! Button
|
||||||
- Head over to [KooL Hyprland WIKI](https://github.com/JaKooLit/Hyprland-Dots/wiki)
|
- Head over to [KooL Hyprland WIKI](https://github.com/JaKooLit/Hyprland-Dots/wiki)
|
||||||
|
|
||||||
#### 🙋 Got a questions regarding the Hyprland Dots or configurations? 🙋
|
#### 🙋 Got a questions regarding the Hyprland Dots or configurations? 🙋
|
||||||
|
|
||||||
- Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
|
- Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
|
||||||
|
|
||||||
#### ⌨ Keybinds
|
#### ⌨ Keybinds
|
||||||
|
|
||||||
- Keybinds [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds)
|
- Keybinds [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds)
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> KooL Hyprland has a searchable keybind function via rofi. (SUPER SHIFT K) or right click the `HINTS` waybar button
|
> KooL Hyprland has a searchable keybind function via rofi. (SUPER SHIFT K) or right click the `HINTS` waybar button
|
||||||
|
|
||||||
|
|
||||||
#### 🔄 switching between Hyprland-git and none Hyprland-git
|
#### 🔄 switching between Hyprland-git and none Hyprland-git
|
||||||
|
|
||||||
- you can use my prepared script [`LINK`](https://github.com/JaKooLit/Arch-Hyprland/tree/main/assets/hyprland-install)
|
- you can use my prepared script [`LINK`](https://github.com/JaKooLit/Arch-Hyprland/tree/main/assets/hyprland-install)
|
||||||
- Readme is also there
|
- Readme is also there
|
||||||
|
|
||||||
|
|
||||||
#### 🙋 👋 Having issues or questions?
|
#### 🙋 👋 Having issues or questions?
|
||||||
|
|
||||||
- for the install part, kindly open issue on this repo
|
- for the install part, kindly open issue on this repo
|
||||||
- for the Pre-configured Hyprland dots / configuration, submit issue [`here`](https://github.com/JaKooLit/Hyprland-Dots/issues)
|
- for the Pre-configured Hyprland dots / configuration, submit issue [`here`](https://github.com/JaKooLit/Hyprland-Dots/issues)
|
||||||
|
|
||||||
#### 🔧 Proper way to re-installing a particular script from install-scripts directory
|
#### 🔧 Proper way to re-installing a particular script from install-scripts directory
|
||||||
|
|
||||||
- CD into Arch-Hyprland directory and then ran the below command.
|
- CD into Arch-Hyprland directory and then ran the below command.
|
||||||
- i.e. `./install-scripts/gtk-themes.sh` - For reinstall GTK Themes or
|
- i.e. `./install-scripts/gtk-themes.sh` - For reinstall GTK Themes or
|
||||||
- `./install-scripts/sddm.sh` - For reinstall sddm
|
- `./install-scripts/sddm.sh` - For reinstall sddm
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> DO NOT cd into install-scripts directory as script will most likely to fail
|
> DO NOT cd into install-scripts directory as script will most likely to fail
|
||||||
|
#### 🛠️ Optional system monitor scripts (cross-distro compatible)
|
||||||
|
- These installer helpers will set up user-level services and install required packages automatically.
|
||||||
|
- Works on Fedora, Arch, and other distributions using standard tools.
|
||||||
|
- Re-run any time from the repo root (do not `cd` into `install-scripts`).
|
||||||
|
|
||||||
|
- `./install-scripts/battery-monitor.sh`
|
||||||
|
- Installs: `acpi`, `libnotify`
|
||||||
|
- Creates: `~/.config/hypr/scripts/battery-monitor.sh` and user service `battery-monitor.service`
|
||||||
|
- Manage: `systemctl --user status|start|stop battery-monitor`
|
||||||
|
- `./install-scripts/disk-monitor.sh`
|
||||||
|
- Installs: `libnotify`
|
||||||
|
- Creates: `~/.config/hypr/scripts/disk-monitor.sh` and user service `disk-monitor.service`
|
||||||
|
- Manage: `systemctl --user status|start|stop disk-monitor`
|
||||||
|
- `./install-scripts/temp-monitor.sh`
|
||||||
|
- Installs: `lm_sensors`, `libnotify`
|
||||||
|
- Detects sensors (runs `sudo sensors-detect --auto` once)
|
||||||
|
- Creates: `~/.config/hypr/scripts/temp-monitor.sh` and user service `temp-monitor.service`
|
||||||
|
- Manage: `systemctl --user status|start|stop temp-monitor`
|
||||||
|
> Packages above are installed by the respective installer scripts; no manual action is required. If you prefer package pre-install via the main package list, ensure `acpi`, `lm_sensors`, and `libnotify` are present in your setup.
|
||||||
|
|
||||||
#### 🛣️ Roadmap:
|
#### 🛣️ Roadmap:
|
||||||
|
|
||||||
- [ ] show a progress bar in downloading and compiling part when installing outside AUR or official repo
|
- [ ] show a progress bar in downloading and compiling part when installing outside AUR or official repo
|
||||||
|
|
||||||
#### ❗ some known issues for nvidia
|
#### ❗ some known issues for nvidia
|
||||||
|
|
||||||
- reports from members of my discord, states that some users of nvidia are getting stuck on sddm login. credit to @Kenni Fix stated was
|
- 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
|
while in sddm press ctrl+alt+F2 or F3
|
||||||
log into your account
|
log into your account
|
||||||
@@ -186,61 +224,74 @@ log into your account
|
|||||||
`ls -l /dev/dri/by-path` to check where the symlink points to
|
`ls -l /dev/dri/by-path` to check where the symlink points to
|
||||||
)
|
)
|
||||||
```
|
```
|
||||||
|
|
||||||
- add "env = WLR_DRM_DEVICES,/dev/dri/cardX" to the ENVvariables config `~/.config/hypr/UserConfigs/ENVariables.conf` ; X being where the symlink of the gpu points to
|
- add "env = WLR_DRM_DEVICES,/dev/dri/cardX" to the ENVvariables config `~/.config/hypr/UserConfigs/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)
|
- 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)
|
||||||
|
|
||||||
|
|
||||||
- reports from a member of discord for Nvidia for additional env's
|
- reports from a member of discord for Nvidia for additional env's
|
||||||
- remove # from the following env's on
|
- remove # from the following env's on
|
||||||
|
|
||||||
```
|
```
|
||||||
env = GBM_BACKEND,nvidia-drm
|
env = GBM_BACKEND,nvidia-drm
|
||||||
env = WLR_RENDERER_ALLOW_SOFTWARE,1
|
env = WLR_RENDERER_ALLOW_SOFTWARE,1
|
||||||
```
|
```
|
||||||
|
|
||||||
#### ❗ other known issues
|
#### ❗ other known issues
|
||||||
|
|
||||||
- [ ] If you are using this script on an Arch-Based distros like Arco linux, or cachy OS or EOS or Manjaro, make sure to install pipewire, pipewire-pulse & pipewire-audio first. Arco Linux, on some of their ISO's still shipped with pulseaudio as audio backend. You will experience getting "stuck" on installation.
|
- [ ] If you are using this script on an Arch-Based distros like Arco linux, or cachy OS or EOS or Manjaro, make sure to install pipewire, pipewire-pulse & pipewire-audio first. Arco Linux, on some of their ISO's still shipped with pulseaudio as audio backend. You will experience getting "stuck" on installation.
|
||||||
- [ ] To install pipewire and its services , `sudo pacman -S pipewire wireplumber pipewire-audio pipewire-pulse` . When prompted, remove / replace pulseaudio. After that, you can ran `./install.sh`
|
- [ ] To install pipewire and its services , `sudo pacman -S pipewire wireplumber pipewire-audio pipewire-pulse` . When prompted, remove / replace pulseaudio. After that, you can ran `./install.sh`
|
||||||
- [ ] installing of cava-git on a newly installed Arch makes the install keep hanging. Switched back to cava. After booting and logged in, if cava dont work, replace it cava-git `yay -S cava-git` or `paru -S cava-git`
|
- [ ] installing of cava-git on a newly installed Arch makes the install keep hanging. Switched back to cava. After booting and logged in, if cava dont work, replace it cava-git `yay -S cava-git` or `paru -S cava-git`
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Auto start of Hyprland after login (no SDDM or GDM or any login managers)
|
> Auto start of Hyprland after login (no SDDM or GDM or any login managers)
|
||||||
- [ ] This was disabled a few days ago. (19 May 2024). This was because some users, after they used the Distro-Hyprland scripts with other DE (gnome-wayland or plasma-wayland), if they choose to login into gnome-wayland for example, Hyprland is starting.
|
- [ ] This was disabled a few days ago. (19 May 2024). This was because some users, after they used the Distro-Hyprland scripts with other DE (gnome-wayland or plasma-wayland), if they choose to login into gnome-wayland for example, Hyprland is starting.
|
||||||
- [ ] to avoid this, I disabled it. You can re-enable again by editing `~/.zprofile` . Remove all the # on the first lines
|
- [ ] to avoid this, I disabled it. You can re-enable again by editing `~/.zprofile` . Remove all the # on the first lines
|
||||||
- [ ] ROFI issues (scaling, unexplained scaling etc). This is most likely to experience if you are installing on a system where rofi is currently installed. To fix it uninstall rofi and install rofi-wayland . `sudo pacman -Rns rofi` . Install rofi-wayland with `sudo pacman -S rofi-wayland`. Rofi-wayland is compatible with x11 so no need to worry.
|
- [ ] ROFI issues (scaling, unexplained scaling etc). This is most likely to experience if you are installing on a system where rofi is currently installed. To fix it uninstall rofi and install rofi-wayland . `sudo pacman -Rns rofi` . Install rofi-wayland with `sudo pacman -S rofi-wayland`. Rofi-wayland is compatible with x11 so no need to worry.
|
||||||
|
|
||||||
|
|
||||||
#### 🫥 Improving performance for Older Nvidia Cards using driver 470
|
#### 🫥 Improving performance for Older Nvidia Cards using driver 470
|
||||||
- [`SEE HERE`](https://github.com/JaKooLit/Hyprland-Dots/discussions/123#discussion-6035205)
|
|
||||||
|
- [`SEE HERE`](https://github.com/JaKooLit/Hyprland-Dots/discussions/123#discussion-6035205)
|
||||||
|
|
||||||
#### 📒 Final Notes
|
#### 📒 Final Notes
|
||||||
- join my discord channel [`Discord`](https://discord.com/invite/9JEgZsfhex)
|
|
||||||
|
- join my discord channel [`Discord`](https://discord.com/invite/kool-tech-world)
|
||||||
- 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 :)
|
- 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 :)
|
||||||
|
|
||||||
|
#### ✍️ Contributing
|
||||||
|
|
||||||
|
|
||||||
#### ⏩ Contributing
|
|
||||||
- As stated above, these script does not contain actual config files. These are only the installer of packages
|
- As stated above, these script does not contain actual config files. These are only the installer of packages
|
||||||
- The development branch of this script is pulling the latest "stable" releases of the Hyprland-Dotfiles.
|
|
||||||
- If you want to contribute and/or test the Hyprland-Dotfiles (development branch), [`Hyprland-Dots-Development`](https://github.com/JaKooLit/Hyprland-Dots/tree/development)
|
- If you want to contribute and/or test the Hyprland-Dotfiles (development branch), [`Hyprland-Dots-Development`](https://github.com/JaKooLit/Hyprland-Dots/tree/development)
|
||||||
|
- Want to contribute on KooL-Hyprland-Dots Click [`HERE`](https://github.com/JaKooLit/Hyprland-Dots/blob/main/CONTRIBUTING.md) for a guide how to contribute
|
||||||
|
- Want to contribute on This Installer? Click [`HERE`](https://github.com/JaKooLit/Arch-Hyprland/blob/main/CONTRIBUTING.md) for a guide how to contribute
|
||||||
|
|
||||||
#### 👍👍👍 Thanks and Credits!
|
#### 👍👍👍 Thanks and Credits!
|
||||||
|
|
||||||
- [`Hyprland`](https://hyprland.org/) Of course to Hyprland and @vaxerski for this awesome Dynamic Tiling Manager.
|
- [`Hyprland`](https://hyprland.org/) Of course to Hyprland and @vaxerski for this awesome Dynamic Tiling Manager.
|
||||||
|
|
||||||
## 💖 Support
|
## 💖 Support
|
||||||
|
|
||||||
- a Star on my Github repos would be nice 🌟
|
- a Star on my Github repos would be nice 🌟
|
||||||
|
|
||||||
- Subscribe to my Youtube Channel [YouTube](https://www.youtube.com/@Ja.KooLit)
|
- Subscribe to my Youtube Channel [YouTube](https://www.youtube.com/@Ja.KooLit)
|
||||||
|
|
||||||
- You can also buy me Coffee Through ko-fi.com or Coffee.com 🤩
|
- you can also give support through coffee's or btc 😊
|
||||||
|
|
||||||
<a href='https://ko-fi.com/jakoolit' target='_blank'><img height='35' style='border:0px;height:46px;' src='https://az743702.vo.msecnd.net/cdn/kofi3.png?v=0' border='0' alt='Buy Me a Coffee at ko-fi.com' />
|
[](https://ko-fi.com/jakoolit)
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
[](https://www.buymeacoffee.com/JaKooLit)
|
[](https://www.buymeacoffee.com/JaKooLit)
|
||||||
|
|
||||||
|
Or you can donate cryto on my btc wallet :)
|
||||||
|
|
||||||
|
> 1N3MeV2dsX6gQB42HXU6MF2hAix1mqjo8i
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
#### 📹 Youtube videos (Click to view and watch the playlist) 📹
|
#### 📹 Youtube videos (Click to view and watch the playlist) 📹
|
||||||
|
|
||||||
[](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t)
|
[](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t)
|
||||||
|
|
||||||
|
|
||||||
## 🥰🥰 💖💖 👍👍👍
|
## 🥰🥰 💖💖 👍👍👍
|
||||||
|
|
||||||
[](https://starchart.cc/JaKooLit/Arch-Hyprland)
|
[](https://starchart.cc/JaKooLit/Arch-Hyprland)
|
||||||
|
|||||||
@@ -25,10 +25,12 @@ source $ZSH/oh-my-zsh.sh
|
|||||||
# fastfetch. Will be disabled if above colorscript was chosen to install
|
# fastfetch. Will be disabled if above colorscript was chosen to install
|
||||||
fastfetch -c $HOME/.config/fastfetch/config-compact.jsonc
|
fastfetch -c $HOME/.config/fastfetch/config-compact.jsonc
|
||||||
|
|
||||||
# Set-up icons for files/folders in terminal
|
# Set-up icons for files/directories in terminal using lsd
|
||||||
alias ls='eza -a --icons'
|
alias ls='lsd'
|
||||||
alias ll='eza -al --icons'
|
alias l='ls -l'
|
||||||
alias lt='eza -a --tree --level=1 --icons'
|
alias la='ls -a'
|
||||||
|
alias lla='ls -la'
|
||||||
|
alias lt='ls --tree'
|
||||||
|
|
||||||
# Set-up FZF key bindings (CTRL R for fuzzy history finder)
|
# Set-up FZF key bindings (CTRL R for fuzzy history finder)
|
||||||
source <(fzf --zsh)
|
source <(fzf --zsh)
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ packages=(
|
|||||||
"hypridle-git"
|
"hypridle-git"
|
||||||
"xdg-desktop-portal-hyprland-git"
|
"xdg-desktop-portal-hyprland-git"
|
||||||
"hyprpolkitagent-git"
|
"hyprpolkitagent-git"
|
||||||
"pyprland"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# rotating stars progress
|
# rotating stars progress
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ packages=(
|
|||||||
"hypridle"
|
"hypridle"
|
||||||
"xdg-desktop-portal-hyprland"
|
"xdg-desktop-portal-hyprland"
|
||||||
"hyprpolkitagent"
|
"hyprpolkitagent"
|
||||||
"pyprland"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# rotating stars progress
|
# rotating stars progress
|
||||||
|
|||||||
@@ -45,7 +45,6 @@ packages=(
|
|||||||
"xdg-desktop-portal-hyprland-git"
|
"xdg-desktop-portal-hyprland-git"
|
||||||
"hyprpolkitagent"
|
"hyprpolkitagent"
|
||||||
"hyprpolkitagent-git"
|
"hyprpolkitagent-git"
|
||||||
"pyprland"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Function for uninstall packages
|
# Function for uninstall packages
|
||||||
|
|||||||
BIN
assets/sddm.png
BIN
assets/sddm.png
Binary file not shown.
|
Before Width: | Height: | Size: 1007 KiB After Width: | Height: | Size: 1.5 MiB |
50
auto-install.sh
Normal file
50
auto-install.sh
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# https://github.com/JaKooLit
|
||||||
|
|
||||||
|
# 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)"
|
||||||
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
|
MAGENTA="$(tput setaf 5)"
|
||||||
|
ORANGE="$(tput setaf 214)"
|
||||||
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
GREEN="$(tput setaf 2)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
SKY_BLUE="$(tput setaf 6)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
Distro="Arch-Hyprland"
|
||||||
|
Github_URL="https://github.com/JaKooLit/$Distro.git"
|
||||||
|
Distro_DIR="$HOME/$Distro"
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
|
if ! command -v git &> /dev/null
|
||||||
|
then
|
||||||
|
echo "${INFO} Git not found! ${SKY_BLUE}Installing Git...${RESET}"
|
||||||
|
if ! sudo pacman -S git --noconfirm; then
|
||||||
|
echo "${ERROR} Failed to install Git. Exiting."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
|
if [ -d "$Distro_DIR" ]; then
|
||||||
|
echo "${YELLOW}$Distro_DIR exists. Updating the repository... ${RESET}"
|
||||||
|
cd "$Distro_DIR"
|
||||||
|
git stash && git pull
|
||||||
|
chmod +x install.sh
|
||||||
|
./install.sh
|
||||||
|
else
|
||||||
|
echo "${MAGENTA}$Distro_DIR does not exist. Cloning the repository...${RESET}"
|
||||||
|
git clone --depth=1 "$Github_URL" "$Distro_DIR"
|
||||||
|
cd "$Distro_DIR"
|
||||||
|
chmod +x install.sh
|
||||||
|
./install.sh
|
||||||
|
fi
|
||||||
@@ -1,23 +1,35 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# base devel + archlinux-keyring #
|
# base-devel + archlinux-keyring #
|
||||||
|
|
||||||
base=(
|
base=(
|
||||||
base-devel
|
base-devel
|
||||||
archlinux-keyring
|
archlinux-keyring
|
||||||
|
findutils
|
||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
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" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_base.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_base.log"
|
||||||
|
|
||||||
|
# Installation of main components with pacman
|
||||||
# Installation of main components
|
echo -e "\nInstalling ${SKY_BLUE}base-devel${RESET} and ${SKY_BLUE}archlinux-keyring${RESET}..."
|
||||||
printf "\n%s - Installing ${SKY_BLUE}base-devel${RESET} \n" "${NOTE}"
|
|
||||||
|
|
||||||
for PKG1 in "${base[@]}"; do
|
for PKG1 in "${base[@]}"; do
|
||||||
|
echo "Installing $PKG1 with pacman..."
|
||||||
install_package_pacman "$PKG1" "$LOG"
|
install_package_pacman "$PKG1" "$LOG"
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..1}
|
||||||
|
|||||||
@@ -25,18 +25,18 @@ hypr_package=(
|
|||||||
jq
|
jq
|
||||||
kitty
|
kitty
|
||||||
kvantum
|
kvantum
|
||||||
|
libspng
|
||||||
nano
|
nano
|
||||||
network-manager-applet
|
network-manager-applet
|
||||||
pamixer
|
pamixer
|
||||||
pavucontrol
|
pavucontrol
|
||||||
pipewire-alsa
|
|
||||||
playerctl
|
playerctl
|
||||||
python-requests
|
python-requests
|
||||||
python-pyquery
|
python-pyquery
|
||||||
qt5ct
|
qt5ct
|
||||||
qt6ct
|
qt6ct
|
||||||
qt6-svg
|
qt6-svg
|
||||||
rofi-wayland
|
rofi
|
||||||
slurp
|
slurp
|
||||||
swappy
|
swappy
|
||||||
swaync
|
swaync
|
||||||
@@ -68,7 +68,6 @@ hypr_package_2=(
|
|||||||
nwg-displays
|
nwg-displays
|
||||||
pacman-contrib
|
pacman-contrib
|
||||||
qalculate-gtk
|
qalculate-gtk
|
||||||
vim
|
|
||||||
yt-dlp
|
yt-dlp
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -76,8 +75,8 @@ hypr_package_2=(
|
|||||||
uninstall=(
|
uninstall=(
|
||||||
aylurs-gtk-shell
|
aylurs-gtk-shell
|
||||||
dunst
|
dunst
|
||||||
mako
|
|
||||||
cachyos-hyprland-settings
|
cachyos-hyprland-settings
|
||||||
|
mako
|
||||||
rofi
|
rofi
|
||||||
wallust-git
|
wallust-git
|
||||||
rofi-lbonn-wayland
|
rofi-lbonn-wayland
|
||||||
@@ -85,14 +84,19 @@ uninstall=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypr-pkgs.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypr-pkgs.log"
|
||||||
@@ -114,7 +118,7 @@ fi
|
|||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# Installation of main components
|
# Installation of main components
|
||||||
printf "\n%s - Installing ${SKY_BLUE}KooL's hyprland necessary packages${RESET} .... \n" "${NOTE}"
|
printf "\n%s - Installing ${SKY_BLUE}KooL's Hyprland necessary packages${RESET} .... \n" "${NOTE}"
|
||||||
|
|
||||||
for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do
|
for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do
|
||||||
install_package "$PKG1" "$LOG"
|
install_package "$PKG1" "$LOG"
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ packages=(
|
|||||||
hypridle
|
hypridle
|
||||||
hyprlock
|
hyprlock
|
||||||
hyprland
|
hyprland
|
||||||
pyprland
|
|
||||||
)
|
)
|
||||||
|
|
||||||
# Local packages that should be in /usr/local/bin/
|
# Local packages that should be in /usr/local/bin/
|
||||||
@@ -67,7 +66,7 @@ done
|
|||||||
|
|
||||||
# Log missing packages
|
# Log missing packages
|
||||||
if [ ${#missing[@]} -eq 0 ] && [ ${#local_missing[@]} -eq 0 ]; then
|
if [ ${#missing[@]} -eq 0 ] && [ ${#local_missing[@]} -eq 0 ]; then
|
||||||
echo "${OK} GREAT! It seems All ${YELLOW}essential packages${RESET} are installed." | tee -a "$LOG"
|
echo "${OK} GREAT! All ${YELLOW}essential packages${RESET} have been successfully installed." | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
if [ ${#missing[@]} -ne 0 ]; then
|
if [ ${#missing[@]} -ne 0 ]; then
|
||||||
echo "${WARN} The following packages are not installed and will be logged:"
|
echo "${WARN} The following packages are not installed and will be logged:"
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ install_package_pacman() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ISAUR=$(command -v yay || command -v paru)
|
ISAUR=$(command -v yay || command -v paru)
|
||||||
|
|
||||||
# Function to install packages with either yay or paru
|
# Function to install packages with either yay or paru
|
||||||
install_package() {
|
install_package() {
|
||||||
if $ISAUR -Q "$1" &>> /dev/null ; then
|
if $ISAUR -Q "$1" &>> /dev/null ; then
|
||||||
@@ -110,6 +109,7 @@ install_package_f() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# Function for removing packages
|
# Function for removing packages
|
||||||
uninstall_package() {
|
uninstall_package() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
|
|||||||
@@ -3,14 +3,19 @@
|
|||||||
# Adding users into input group #
|
# Adding users into input group #
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_input.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_input.log"
|
||||||
|
|||||||
@@ -26,14 +26,19 @@ ags=(
|
|||||||
ags_tag="v1.9.0"
|
ags_tag="v1.9.0"
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_ags.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_ags.log"
|
||||||
@@ -62,22 +67,62 @@ printf "\n%.0s" {1..1}
|
|||||||
# ags v1
|
# ags v1
|
||||||
printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n"
|
printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n"
|
||||||
|
|
||||||
# Check if folder exists and remove it
|
# Check if directory exists and remove it
|
||||||
if [ -d "ags" ]; then
|
if [ -d "ags_v1.9.0" ]; then
|
||||||
printf "${NOTE} Removing existing ags folder...\n"
|
printf "${NOTE} Removing existing ags directory...\n"
|
||||||
rm -rf "ags"
|
rm -rf "ags_v1.9.0"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
printf "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}...\n"
|
printf "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}...\n"
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
# Clone repository with the specified tag and capture git output into MLOG
|
# Clone repository with the specified tag and capture git output into MLOG
|
||||||
if git clone --recursive -b "$ags_tag" --depth 1 https://github.com/Aylur/ags.git; then
|
if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then
|
||||||
cd ags || exit 1
|
cd ags_v1.9.0 || exit 1
|
||||||
npm install
|
npm install
|
||||||
meson setup build
|
meson setup build
|
||||||
if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then
|
if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then
|
||||||
printf "\n${OK} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
printf "\n${OK} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
||||||
|
|
||||||
|
# Patch installed AGS launcher to ensure GI typelibs in /usr/local/lib are discoverable in GJS ESM
|
||||||
|
printf "${NOTE} Applying AGS launcher patch for GI typelibs search path...\n"
|
||||||
|
LAUNCHER="/usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags"
|
||||||
|
if sudo test -f "$LAUNCHER"; then
|
||||||
|
# 1) Switch from GIRepository ESM import to GLib and drop deprecated prepend_* calls
|
||||||
|
sudo sed -i \
|
||||||
|
-e 's|^import GIR from "gi://GIRepository?version=2.0";$|import GLib from "gi://GLib";|' \
|
||||||
|
-e '/GIR.Repository.prepend_search_path/d' \
|
||||||
|
-e '/GIR.Repository.prepend_library_path/d' \
|
||||||
|
"$LAUNCHER"
|
||||||
|
|
||||||
|
# 2) Inject GI_TYPELIB_PATH export right after the GLib import
|
||||||
|
sudo awk '{print} $0 ~ /^import GLib from "gi:\/\/GLib";$/ {print "const __old = GLib.getenv(\"GI_TYPELIB_PATH\");"; print "GLib.setenv(\"GI_TYPELIB_PATH\", \"/usr/local/lib\" + (__old ? \":\" + __old : \"\"), true);"}' "$LAUNCHER" | sudo tee "$LAUNCHER" >/dev/null
|
||||||
|
|
||||||
|
printf "${OK} AGS launcher patched.\n"
|
||||||
|
|
||||||
|
# Create an env-setting wrapper for AGS to ensure GI typelibs/libs are discoverable
|
||||||
|
printf "${NOTE} Creating env wrapper /usr/local/bin/ags...\n"
|
||||||
|
MAIN_JS="/usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags"
|
||||||
|
if ! sudo test -f "$MAIN_JS"; then
|
||||||
|
MAIN_JS="/usr/share/com.github.Aylur.ags/com.github.Aylur.ags"
|
||||||
|
fi
|
||||||
|
sudo tee /usr/local/bin/ags >/dev/null <<WRAP
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
cd "$HOME" 2>/dev/null || true
|
||||||
|
# Ensure GI typelibs and native libs are discoverable before gjs ESM loads
|
||||||
|
export GI_TYPELIB_PATH="/usr/local/lib64:/usr/local/lib:/usr/local/lib64/girepository-1.0:/usr/local/lib/girepository-1.0:/usr/lib64/girepository-1.0:/usr/lib/girepository-1.0:/usr/lib64/ags:/usr/lib/ags:${GI_TYPELIB_PATH-}"
|
||||||
|
export LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:${LD_LIBRARY_PATH-}"
|
||||||
|
exec /usr/bin/gjs -m "$MAIN_JS" -- "$@"
|
||||||
|
WRAP
|
||||||
|
sudo chmod 0755 /usr/local/bin/ags
|
||||||
|
# Ensure ESM entry is readable by gjs
|
||||||
|
sudo chmod 0644 /usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags 2>/dev/null || true
|
||||||
|
sudo chmod 0644 /usr/share/com.github.Aylur.ags/com.github.Aylur.ags 2>/dev/null || true
|
||||||
|
printf "${OK} AGS wrapper installed at /usr/local/bin/ags\n"
|
||||||
|
else
|
||||||
|
printf "${WARN} Launcher not found at $LAUNCHER, skipping patch.\n"
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG"
|
echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG"
|
||||||
fi
|
fi
|
||||||
|
|||||||
116
install-scripts/battery-monitor.sh
Normal file
116
install-scripts/battery-monitor.sh
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# Battery Monitor and Low Battery Notification #
|
||||||
|
|
||||||
|
battery=(
|
||||||
|
acpi
|
||||||
|
libnotify
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
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" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the name of the log file to include the current date and time
|
||||||
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_battery-monitor.log"
|
||||||
|
|
||||||
|
# Battery Monitor
|
||||||
|
printf "${NOTE} Installing ${SKY_BLUE}Battery Monitor${RESET} Packages...\n"
|
||||||
|
for BAT in "${battery[@]}"; do
|
||||||
|
install_package "$BAT" "$LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create battery monitoring script
|
||||||
|
printf "${NOTE} Creating ${YELLOW}battery monitoring${RESET} script...\n"
|
||||||
|
|
||||||
|
BATTERY_SCRIPT="$HOME/.config/hypr/scripts/battery-monitor.sh"
|
||||||
|
mkdir -p "$HOME/.config/hypr/scripts"
|
||||||
|
|
||||||
|
cat > "$BATTERY_SCRIPT" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# Low Battery Notification Script
|
||||||
|
# Monitors battery level and sends notifications
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
LOW_BATTERY_THRESHOLD=20
|
||||||
|
CRITICAL_BATTERY_THRESHOLD=10
|
||||||
|
CHECK_INTERVAL=60 # Check every 60 seconds
|
||||||
|
|
||||||
|
# Track notification state to avoid spam
|
||||||
|
NOTIFIED_LOW=false
|
||||||
|
NOTIFIED_CRITICAL=false
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
# Get battery percentage
|
||||||
|
BATTERY_LEVEL=$(acpi -b | grep -P -o '[0-9]+(?=%)')
|
||||||
|
BATTERY_STATUS=$(acpi -b | grep -o 'Discharging\|Charging\|Full')
|
||||||
|
|
||||||
|
# Only send notifications when discharging
|
||||||
|
if [ "$BATTERY_STATUS" = "Discharging" ]; then
|
||||||
|
if [ "$BATTERY_LEVEL" -le "$CRITICAL_BATTERY_THRESHOLD" ] && [ "$NOTIFIED_CRITICAL" = false ]; then
|
||||||
|
notify-send -u critical -i battery-caution "Critical Battery" "Battery level is at ${BATTERY_LEVEL}%! Please plug in your charger immediately."
|
||||||
|
NOTIFIED_CRITICAL=true
|
||||||
|
NOTIFIED_LOW=true
|
||||||
|
elif [ "$BATTERY_LEVEL" -le "$LOW_BATTERY_THRESHOLD" ] && [ "$NOTIFIED_LOW" = false ]; then
|
||||||
|
notify-send -u normal -i battery-low "Low Battery" "Battery level is at ${BATTERY_LEVEL}%. Consider plugging in your charger."
|
||||||
|
NOTIFIED_LOW=true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Reset notification flags when charging or full
|
||||||
|
NOTIFIED_LOW=false
|
||||||
|
NOTIFIED_CRITICAL=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep "$CHECK_INTERVAL"
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$BATTERY_SCRIPT"
|
||||||
|
|
||||||
|
printf "${OK} Battery monitoring script created at ${YELLOW}$BATTERY_SCRIPT${RESET}\n"
|
||||||
|
|
||||||
|
# Create systemd user service
|
||||||
|
printf "${NOTE} Creating ${YELLOW}systemd user service${RESET} for battery monitoring...\n"
|
||||||
|
|
||||||
|
SYSTEMD_DIR="$HOME/.config/systemd/user"
|
||||||
|
mkdir -p "$SYSTEMD_DIR"
|
||||||
|
|
||||||
|
cat > "$SYSTEMD_DIR/battery-monitor.service" << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Battery Level Monitor
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=$BATTERY_SCRIPT
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=10
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
printf "${OK} Systemd service created\n"
|
||||||
|
|
||||||
|
# Enable and start the service
|
||||||
|
printf "${NOTE} Enabling and starting ${YELLOW}battery-monitor${RESET} service...\n"
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user enable battery-monitor.service 2>&1 | tee -a "$LOG"
|
||||||
|
systemctl --user start battery-monitor.service 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
printf "${OK} Battery monitor service is now running!\n"
|
||||||
|
printf "${INFO} You can check status with: ${YELLOW}systemctl --user status battery-monitor${RESET}\n"
|
||||||
|
printf "${INFO} To stop: ${YELLOW}systemctl --user stop battery-monitor${RESET}\n"
|
||||||
|
printf "${INFO} To disable: ${YELLOW}systemctl --user disable battery-monitor${RESET}\n"
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
@@ -9,14 +9,19 @@ blue=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_bluetooth.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_bluetooth.log"
|
||||||
|
|||||||
126
install-scripts/disk-monitor.sh
Normal file
126
install-scripts/disk-monitor.sh
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# Disk Space Monitor #
|
||||||
|
|
||||||
|
disk=(
|
||||||
|
libnotify
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
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" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the name of the log file to include the current date and time
|
||||||
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_disk-monitor.log"
|
||||||
|
|
||||||
|
# Disk Monitor
|
||||||
|
printf "${NOTE} Installing ${SKY_BLUE}Disk Monitor${RESET} Packages...\n"
|
||||||
|
for DISK in "${disk[@]}"; do
|
||||||
|
install_package "$DISK" "$LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Create disk monitoring script
|
||||||
|
printf "${NOTE} Creating ${YELLOW}disk space monitoring${RESET} script...\n"
|
||||||
|
|
||||||
|
DISK_SCRIPT="$HOME/.config/hypr/scripts/disk-monitor.sh"
|
||||||
|
mkdir -p "$HOME/.config/hypr/scripts"
|
||||||
|
|
||||||
|
cat > "$DISK_SCRIPT" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# Disk Space Monitoring Script
|
||||||
|
# Monitors disk usage and sends notifications
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
DISK_WARNING_THRESHOLD=80
|
||||||
|
DISK_CRITICAL_THRESHOLD=90
|
||||||
|
CHECK_INTERVAL=300 # Check every 5 minutes
|
||||||
|
|
||||||
|
# Track notification state
|
||||||
|
declare -A NOTIFIED_WARNING
|
||||||
|
declare -A NOTIFIED_CRITICAL
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
# Get disk usage for all mounted filesystems
|
||||||
|
df -h | grep '^/dev/' | while read -r line; do
|
||||||
|
DEVICE=$(echo "$line" | awk '{print $1}')
|
||||||
|
MOUNT=$(echo "$line" | awk '{print $6}')
|
||||||
|
USAGE=$(echo "$line" | awk '{print $5}' | sed 's/%//')
|
||||||
|
|
||||||
|
# Skip if usage is not a number
|
||||||
|
if ! [[ "$USAGE" =~ ^[0-9]+$ ]]; then
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check disk usage
|
||||||
|
if [ "$USAGE" -ge "$DISK_CRITICAL_THRESHOLD" ]; then
|
||||||
|
if [ "${NOTIFIED_CRITICAL[$MOUNT]}" != "true" ]; then
|
||||||
|
notify-send -u critical -i drive-harddisk "Critical Disk Space" "Mount point $MOUNT is ${USAGE}% full!\nDevice: $DEVICE"
|
||||||
|
NOTIFIED_CRITICAL[$MOUNT]="true"
|
||||||
|
NOTIFIED_WARNING[$MOUNT]="true"
|
||||||
|
fi
|
||||||
|
elif [ "$USAGE" -ge "$DISK_WARNING_THRESHOLD" ]; then
|
||||||
|
if [ "${NOTIFIED_WARNING[$MOUNT]}" != "true" ]; then
|
||||||
|
notify-send -u normal -i drive-harddisk "Low Disk Space" "Mount point $MOUNT is ${USAGE}% full\nDevice: $DEVICE"
|
||||||
|
NOTIFIED_WARNING[$MOUNT]="true"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Reset notifications when usage drops
|
||||||
|
if [ "$USAGE" -lt $((DISK_WARNING_THRESHOLD - 5)) ]; then
|
||||||
|
NOTIFIED_WARNING[$MOUNT]="false"
|
||||||
|
NOTIFIED_CRITICAL[$MOUNT]="false"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
sleep "$CHECK_INTERVAL"
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$DISK_SCRIPT"
|
||||||
|
|
||||||
|
printf "${OK} Disk monitoring script created at ${YELLOW}$DISK_SCRIPT${RESET}\n"
|
||||||
|
|
||||||
|
# Create systemd user service
|
||||||
|
printf "${NOTE} Creating ${YELLOW}systemd user service${RESET} for disk monitoring...\n"
|
||||||
|
|
||||||
|
SYSTEMD_DIR="$HOME/.config/systemd/user"
|
||||||
|
mkdir -p "$SYSTEMD_DIR"
|
||||||
|
|
||||||
|
cat > "$SYSTEMD_DIR/disk-monitor.service" << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Disk Space Monitor
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=$DISK_SCRIPT
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=10
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
printf "${OK} Systemd service created\n"
|
||||||
|
|
||||||
|
# Enable and start the service
|
||||||
|
printf "${NOTE} Enabling and starting ${YELLOW}disk-monitor${RESET} service...\n"
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user enable disk-monitor.service 2>&1 | tee -a "$LOG"
|
||||||
|
systemctl --user start disk-monitor.service 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
printf "${OK} Disk monitor service is now running!\n"
|
||||||
|
printf "${INFO} You can check status with: ${YELLOW}systemctl --user status disk-monitor${RESET}\n"
|
||||||
|
printf "${INFO} View disk usage: ${YELLOW}df -h${RESET}\n"
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
@@ -2,22 +2,30 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# Hyprland-Dots to download from main #
|
# Hyprland-Dots to download from main #
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
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" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Check if Hyprland-Dots exists
|
# Check if Hyprland-Dots exists
|
||||||
printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots${RESET}....\n"
|
printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots${RESET}....\n"
|
||||||
|
|
||||||
if [ -d Hyprland-Dots ]; then
|
if [ -d Hyprland-Dots ]; then
|
||||||
cd Hyprland-Dots
|
cd Hyprland-Dots
|
||||||
git stash
|
git stash && git pull
|
||||||
git pull
|
|
||||||
git stash apply
|
|
||||||
chmod +x copy.sh
|
chmod +x copy.sh
|
||||||
./copy.sh
|
./copy.sh
|
||||||
else
|
else
|
||||||
if git clone --depth 1 https://github.com/JaKooLit/Hyprland-Dots; then
|
if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots; then
|
||||||
cd Hyprland-Dots || exit 1
|
cd Hyprland-Dots || exit 1
|
||||||
chmod +x copy.sh
|
chmod +x copy.sh
|
||||||
./copy.sh
|
./copy.sh
|
||||||
|
|||||||
@@ -16,18 +16,23 @@ fonts=(
|
|||||||
ttf-jetbrains-mono
|
ttf-jetbrains-mono
|
||||||
ttf-jetbrains-mono-nerd
|
ttf-jetbrains-mono-nerd
|
||||||
ttf-victor-mono
|
ttf-victor-mono
|
||||||
|
noto-fonts
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_fonts.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_fonts.log"
|
||||||
|
|||||||
@@ -8,15 +8,18 @@ engine=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_themes.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_themes.log"
|
||||||
@@ -29,17 +32,17 @@ done
|
|||||||
|
|
||||||
# Check if the directory exists and delete it if present
|
# Check if the directory exists and delete it if present
|
||||||
if [ -d "GTK-themes-icons" ]; then
|
if [ -d "GTK-themes-icons" ]; then
|
||||||
echo "$NOTE GTK themes and Icons folder exist..deleting..." 2>&1 | tee -a "$LOG"
|
echo "$NOTE GTK themes and Icons directory exist..deleting..." 2>&1 | tee -a "$LOG"
|
||||||
rm -rf "GTK-themes-icons" 2>&1 | tee -a "$LOG"
|
rm -rf "GTK-themes-icons" 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "$NOTE Cloning ${SKY_BLUE}GTK themes and Icons${RESET} repository..." 2>&1 | tee -a "$LOG"
|
echo "$NOTE Cloning ${SKY_BLUE}GTK themes and Icons${RESET} repository..." 2>&1 | tee -a "$LOG"
|
||||||
if git clone --depth 1 https://github.com/JaKooLit/GTK-themes-icons.git ; then
|
if git clone --depth=1 https://github.com/JaKooLit/GTK-themes-icons.git ; then
|
||||||
cd GTK-themes-icons
|
cd GTK-themes-icons
|
||||||
chmod +x auto-extract.sh
|
chmod +x auto-extract.sh
|
||||||
./auto-extract.sh
|
./auto-extract.sh
|
||||||
cd ..
|
cd ..
|
||||||
echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes folders" 2>&1 | tee -a "$LOG"
|
echo "$OK Extracted GTK Themes & Icons to ~/.icons & ~/.themes directories" 2>&1 | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG"
|
echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -2,41 +2,50 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# Main Hyprland Package #
|
# Main Hyprland Package #
|
||||||
|
|
||||||
hypr=(
|
hypr_eco=(
|
||||||
hyprland
|
|
||||||
hypridle
|
hypridle
|
||||||
hyprlock
|
hyprlock
|
||||||
pyprland
|
)
|
||||||
libspng
|
|
||||||
|
hypr=(
|
||||||
|
hyprland
|
||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
# 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
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log"
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
# Check if Hyprland is installed
|
||||||
|
if command -v Hyprland >/dev/null 2>&1; then
|
||||||
# Removing other Hyprland to avoid conflict
|
printf "$NOTE - ${YELLOW} Hyprland is already installed.${RESET} No action required.\n"
|
||||||
printf "${YELLOW} Checking for other hyprland packages and remove if any..${RESET}\n"
|
else
|
||||||
if pacman -Qs hyprland >/dev/null; then
|
printf "$INFO - Hyprland not found. ${SKY_BLUE} Installing Hyprland...${RESET}\n"
|
||||||
printf "${YELLOW} Hyprland detected. attempting to uninstall to install Hyprland from official repo...${RESET}\n"
|
for HYPRLAND in "${hypr[@]}"; do
|
||||||
for hyprnvi in hyprland-git hyprland-nvidia hyprland-nvidia-git hyprland-nvidia-hidpi-git; do
|
install_package "$HYPRLAND" "$LOG"
|
||||||
sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Hyprland
|
# Hyprland -eco packages
|
||||||
printf "${NOTE} Installing ${SKY_BLUE}Hyprland packages${RESET} .......\n"
|
printf "${NOTE} - Installing ${SKY_BLUE}other Hyprland-eco packages${RESET} .......\n"
|
||||||
for HYPR in "${hypr[@]}"; do
|
for HYPR in "${hypr_eco[@]}"; do
|
||||||
|
if ! command -v "$HYPR" >/dev/null 2>&1; then
|
||||||
|
printf "$INFO - ${YELLOW}$HYPR${RESET} not found. Installing ${YELLOW}$HYPR...${RESET}\n"
|
||||||
install_package "$HYPR" "$LOG"
|
install_package "$HYPR" "$LOG"
|
||||||
|
else
|
||||||
|
printf "$NOTE - ${YELLOW} $HYPR is already installed.${RESET} No action required.\n"
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
@@ -12,14 +12,19 @@ nvidia_pkg=(
|
|||||||
|
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log"
|
||||||
|
|||||||
@@ -3,14 +3,19 @@
|
|||||||
# Nvidia Blacklist #
|
# Nvidia Blacklist #
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log"
|
||||||
|
|||||||
@@ -3,7 +3,18 @@
|
|||||||
# pacman adding up extra-spices #
|
# pacman adding up extra-spices #
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
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" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_pacman.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_pacman.log"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ if [ -n "$ISAUR" ]; then
|
|||||||
else
|
else
|
||||||
printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
|
printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
|
||||||
|
|
||||||
# Check if folder exists and remove it
|
# Check if directory exists and remove it
|
||||||
if [ -d "$pkg" ]; then
|
if [ -d "$pkg" ]; then
|
||||||
rm -rf "$pkg"
|
rm -rf "$pkg"
|
||||||
fi
|
fi
|
||||||
@@ -45,7 +45,7 @@ fi
|
|||||||
cd $pkg || { printf "%s - Failed to enter $pkg directory\n" "${ERROR}"; exit 1; }
|
cd $pkg || { printf "%s - Failed to enter $pkg directory\n" "${ERROR}"; exit 1; }
|
||||||
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
||||||
|
|
||||||
# moving install logs in to Install-Logs folder
|
# moving install logs in to Install-Logs directory
|
||||||
mv install*.log ../Install-Logs/ || true
|
mv install*.log ../Install-Logs/ || true
|
||||||
cd ..
|
cd ..
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -18,14 +18,13 @@ pipewire_2=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
############## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##############
|
############## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##############
|
||||||
# Set some colors for output messages
|
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
|
|||||||
41
install-scripts/quickshell.sh
Executable file
41
install-scripts/quickshell.sh
Executable file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# quickshell - for desktop overview replacing AGS
|
||||||
|
|
||||||
|
if [[ $USE_PRESET = [Yy] ]]; then
|
||||||
|
source ./preset.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
quick=(
|
||||||
|
qt6-5compat
|
||||||
|
quickshell
|
||||||
|
)
|
||||||
|
|
||||||
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
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" || {
|
||||||
|
echo "${ERROR} Failed to change directory to $PARENT_DIR"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the name of the log file to include the current date and time
|
||||||
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_quick.log"
|
||||||
|
|
||||||
|
# Installation of main components
|
||||||
|
printf "\n%s - Installing ${SKY_BLUE}Quick Shell ${RESET} for Desktop Overview \n" "${NOTE}"
|
||||||
|
|
||||||
|
for PKG1 in "${quick[@]}"; do
|
||||||
|
install_package "$PKG1" "$LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
@@ -10,14 +10,19 @@ rog=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_rog.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_rog.log"
|
||||||
|
|||||||
@@ -3,9 +3,10 @@
|
|||||||
# SDDM Log-in Manager #
|
# SDDM Log-in Manager #
|
||||||
|
|
||||||
sddm=(
|
sddm=(
|
||||||
qt6-5compat
|
|
||||||
qt6-declarative
|
qt6-declarative
|
||||||
qt6-svg
|
qt6-svg
|
||||||
|
qt6-virtualkeyboard
|
||||||
|
qt6-multimedia-ffmpeg
|
||||||
sddm
|
sddm
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -19,14 +20,19 @@ login=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log"
|
||||||
|
|||||||
@@ -2,18 +2,22 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# SDDM themes #
|
# SDDM themes #
|
||||||
|
|
||||||
source_theme="https://codeberg.org/JaKooLit/sddm-sequoia"
|
source_theme="https://github.com/JaKooLit/simple-sddm-2.git"
|
||||||
theme_name="sequoia_2"
|
theme_name="simple_sddm_2"
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm_theme.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm_theme.log"
|
||||||
@@ -34,7 +38,7 @@ if [ -d "$theme_name" ]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Clone the repository
|
# Clone the repository
|
||||||
if git clone --depth 1 "$source_theme" "$theme_name"; then
|
if git clone --depth=1 "$source_theme" "$theme_name"; then
|
||||||
if [ ! -d "$theme_name" ]; then
|
if [ ! -d "$theme_name" ]; then
|
||||||
echo "${ERROR} Failed to clone the repository." | tee -a "$LOG"
|
echo "${ERROR} Failed to clone the repository." | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
@@ -48,59 +52,63 @@ if git clone --depth 1 "$source_theme" "$theme_name"; then
|
|||||||
# Move cloned theme to the themes directory
|
# Move cloned theme to the themes directory
|
||||||
sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG"
|
sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
|
||||||
# setting up SDDM theme
|
# setting up SDDM theme
|
||||||
sddm_conf_dir="/etc/sddm.conf.d"
|
sddm_conf="/etc/sddm.conf"
|
||||||
BACKUP_SUFFIX=".bak"
|
BACKUP_SUFFIX=".bak"
|
||||||
|
|
||||||
echo -e "${NOTE} Setting up the login screen." | tee -a "$LOG"
|
echo -e "${NOTE} Setting up the login screen." | tee -a "$LOG"
|
||||||
|
|
||||||
if [ -d "$sddm_conf_dir" ]; then
|
# Backup the sddm.conf file if it exists
|
||||||
echo "Backing up files in $sddm_conf_dir" | tee -a "$LOG"
|
if [ -f "$sddm_conf" ]; then
|
||||||
for file in "$sddm_conf_dir"/*; do
|
echo "Backing up $sddm_conf" | tee -a "$LOG"
|
||||||
if [ -f "$file" ]; then
|
sudo cp "$sddm_conf" "$sddm_conf$BACKUP_SUFFIX" 2>&1 | tee -a "$LOG"
|
||||||
if [[ "$file" == *$BACKUP_SUFFIX ]]; then
|
|
||||||
echo "Skipping backup file: $file" | tee -a "$LOG"
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
# Backup each original file
|
|
||||||
sudo cp "$file" "$file$BACKUP_SUFFIX" 2>&1 | tee -a "$LOG"
|
|
||||||
echo "Backup created for $file" | tee -a "$LOG"
|
|
||||||
|
|
||||||
# Edit existing "Current="
|
|
||||||
if grep -q '^[[:space:]]*Current=' "$file"; then
|
|
||||||
sudo sed -i "s/^[[:space:]]*Current=.*/Current=$theme_name/" "$file" 2>&1 | tee -a "$LOG"
|
|
||||||
echo "Updated theme in $file" | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
else
|
||||||
echo "$CAT - $sddm_conf_dir not found, creating..." | tee -a "$LOG"
|
echo "$sddm_conf does not exist, creating a new one." | tee -a "$LOG"
|
||||||
sudo mkdir -p "$sddm_conf_dir" 2>&1 | tee -a "$LOG"
|
sudo touch "$sddm_conf" 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "$sddm_conf_dir/theme.conf.user" ]; then
|
# Check if the [Theme] section exists
|
||||||
echo -e "[Theme]\nCurrent = $theme_name" | sudo tee "$sddm_conf_dir/theme.conf.user" > /dev/null
|
if grep -q '^\[Theme\]' "$sddm_conf"; then
|
||||||
|
# Update the Current= line under [Theme]
|
||||||
|
sudo sed -i "/^\[Theme\]/,/^\[/{s/^\s*Current=.*/Current=$theme_name/}" "$sddm_conf" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
if [ -f "$sddm_conf_dir/theme.conf.user" ]; then
|
# If no Current= line was found and replaced, append it after the [Theme] section
|
||||||
echo "Created and configured $sddm_conf_dir/theme.conf.user with theme $theme_name" | tee -a "$LOG"
|
if ! grep -q '^\s*Current=' "$sddm_conf"; then
|
||||||
|
sudo sed -i "/^\[Theme\]/a Current=$theme_name" "$sddm_conf" 2>&1 | tee -a "$LOG"
|
||||||
|
echo "Appended Current=$theme_name under [Theme] in $sddm_conf" | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
echo "Failed to create $sddm_conf_dir/theme.conf.user" | tee -a "$LOG"
|
echo "Updated Current=$theme_name in $sddm_conf" | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo "$sddm_conf_dir/theme.conf.user already exists, skipping creation." | tee -a "$LOG"
|
# Append the [Theme] section at the end if it doesn't exist
|
||||||
|
echo -e "\n[Theme]\nCurrent=$theme_name" | sudo tee -a "$sddm_conf" > /dev/null
|
||||||
|
echo "Added [Theme] section with Current=$theme_name in $sddm_conf" | tee -a "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add [General] section with InputMethod=qtvirtualkeyboard if it doesn't exist
|
||||||
|
if ! grep -q '^\[General\]' "$sddm_conf"; then
|
||||||
|
echo -e "\n[General]\nInputMethod=qtvirtualkeyboard" | sudo tee -a "$sddm_conf" > /dev/null
|
||||||
|
echo "Added [General] section with InputMethod=qtvirtualkeyboard in $sddm_conf" | tee -a "$LOG"
|
||||||
|
else
|
||||||
|
# Update InputMethod line if section exists
|
||||||
|
if grep -q '^\s*InputMethod=' "$sddm_conf"; then
|
||||||
|
sudo sed -i '/^\[General\]/,/^\[/{s/^\s*InputMethod=.*/InputMethod=qtvirtualkeyboard/}' "$sddm_conf" 2>&1 | tee -a "$LOG"
|
||||||
|
echo "Updated InputMethod to qtvirtualkeyboard in $sddm_conf" | tee -a "$LOG"
|
||||||
|
else
|
||||||
|
sudo sed -i '/^\[General\]/a InputMethod=qtvirtualkeyboard' "$sddm_conf" 2>&1 | tee -a "$LOG"
|
||||||
|
echo "Appended InputMethod=qtvirtualkeyboard under [General] in $sddm_conf" | tee -a "$LOG"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Replace current background from assets
|
# Replace current background from assets
|
||||||
sudo cp -r assets/sddm.png "/usr/share/sddm/themes/$theme_name/backgrounds/default" 2>&1 | tee -a "$LOG"
|
sudo cp -r assets/sddm.png "/usr/share/sddm/themes/$theme_name/Backgrounds/default" 2>&1 | tee -a "$LOG"
|
||||||
sudo sed -i 's|^wallpaper=".*"|wallpaper="backgrounds/default"|' "/usr/share/sddm/themes/$theme_name/theme.conf" 2>&1 | tee -a "$LOG"
|
sudo sed -i 's|^wallpaper=".*"|wallpaper="Backgrounds/default"|' "/usr/share/sddm/themes/$theme_name/theme.conf" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
echo "${OK} - ${MAGENTA}Additional SDDM Theme${RESET} successfully installed." | tee -a "$LOG"
|
echo "${OK} - ${MAGENTA}Additional ${YELLOW}$theme_name SDDM Theme${RESET} successfully installed." | tee -a "$LOG"
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
echo "${ERROR} - Failed to clone the sddm theme repository. Please check your internet connection." | tee -a "$LOG" >&2
|
echo "${ERROR} - Failed to clone the sddm theme repository. Please check your internet connection." | tee -a "$LOG" >&2
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
156
install-scripts/temp-monitor.sh
Normal file
156
install-scripts/temp-monitor.sh
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# Temperature Monitor - CPU/GPU Temperature Alerts #
|
||||||
|
|
||||||
|
temp=(
|
||||||
|
lm_sensors
|
||||||
|
libnotify
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
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" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the name of the log file to include the current date and time
|
||||||
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_temp-monitor.log"
|
||||||
|
|
||||||
|
# Temperature Monitor
|
||||||
|
printf "${NOTE} Installing ${SKY_BLUE}Temperature Monitor${RESET} Packages...\n"
|
||||||
|
for TEMP in "${temp[@]}"; do
|
||||||
|
install_package "$TEMP" "$LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
# Detect sensors
|
||||||
|
printf "${NOTE} Detecting ${YELLOW}hardware sensors${RESET}...\n"
|
||||||
|
sudo sensors-detect --auto 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
# Create temperature monitoring script
|
||||||
|
printf "${NOTE} Creating ${YELLOW}temperature monitoring${RESET} script...\n"
|
||||||
|
|
||||||
|
TEMP_SCRIPT="$HOME/.config/hypr/scripts/temp-monitor.sh"
|
||||||
|
mkdir -p "$HOME/.config/hypr/scripts"
|
||||||
|
|
||||||
|
cat > "$TEMP_SCRIPT" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
# Temperature Monitoring Script
|
||||||
|
# Monitors CPU and GPU temperatures and sends alerts
|
||||||
|
|
||||||
|
# Configuration
|
||||||
|
CPU_TEMP_WARNING=75
|
||||||
|
CPU_TEMP_CRITICAL=85
|
||||||
|
GPU_TEMP_WARNING=75
|
||||||
|
GPU_TEMP_CRITICAL=85
|
||||||
|
CHECK_INTERVAL=30 # Check every 30 seconds
|
||||||
|
|
||||||
|
# Track notification state
|
||||||
|
NOTIFIED_CPU_WARN=false
|
||||||
|
NOTIFIED_CPU_CRIT=false
|
||||||
|
NOTIFIED_GPU_WARN=false
|
||||||
|
NOTIFIED_GPU_CRIT=false
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
# Get CPU temperature (average of all cores)
|
||||||
|
CPU_TEMP=$(sensors | grep -i 'Package id 0:\|Tdie:' | awk '{print $4}' | sed 's/+//;s/°C//' | head -1)
|
||||||
|
|
||||||
|
# If Package id not found, try other methods
|
||||||
|
if [ -z "$CPU_TEMP" ]; then
|
||||||
|
CPU_TEMP=$(sensors | grep -i 'Core 0:' | awk '{print $3}' | sed 's/+//;s/°C//' | head -1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get GPU temperature (if available)
|
||||||
|
GPU_TEMP=$(sensors | grep -i 'edge:\|temp1:' | awk '{print $2}' | sed 's/+//;s/°C//' | head -1)
|
||||||
|
|
||||||
|
# Check CPU temperature
|
||||||
|
if [ -n "$CPU_TEMP" ]; then
|
||||||
|
CPU_TEMP_INT=${CPU_TEMP%.*}
|
||||||
|
|
||||||
|
if [ "$CPU_TEMP_INT" -ge "$CPU_TEMP_CRITICAL" ]; then
|
||||||
|
if [ "$NOTIFIED_CPU_CRIT" = false ]; then
|
||||||
|
notify-send -u critical -i temperature-high "Critical CPU Temperature" "CPU temperature is ${CPU_TEMP}°C! System may throttle or shutdown."
|
||||||
|
NOTIFIED_CPU_CRIT=true
|
||||||
|
NOTIFIED_CPU_WARN=true
|
||||||
|
fi
|
||||||
|
elif [ "$CPU_TEMP_INT" -ge "$CPU_TEMP_WARNING" ]; then
|
||||||
|
if [ "$NOTIFIED_CPU_WARN" = false ]; then
|
||||||
|
notify-send -u normal -i temperature-normal "High CPU Temperature" "CPU temperature is ${CPU_TEMP}°C"
|
||||||
|
NOTIFIED_CPU_WARN=true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
NOTIFIED_CPU_WARN=false
|
||||||
|
NOTIFIED_CPU_CRIT=false
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check GPU temperature
|
||||||
|
if [ -n "$GPU_TEMP" ]; then
|
||||||
|
GPU_TEMP_INT=${GPU_TEMP%.*}
|
||||||
|
|
||||||
|
if [ "$GPU_TEMP_INT" -ge "$GPU_TEMP_CRITICAL" ]; then
|
||||||
|
if [ "$NOTIFIED_GPU_CRIT" = false ]; then
|
||||||
|
notify-send -u critical -i temperature-high "Critical GPU Temperature" "GPU temperature is ${GPU_TEMP}°C!"
|
||||||
|
NOTIFIED_GPU_CRIT=true
|
||||||
|
NOTIFIED_GPU_WARN=true
|
||||||
|
fi
|
||||||
|
elif [ "$GPU_TEMP_INT" -ge "$GPU_TEMP_WARNING" ]; then
|
||||||
|
if [ "$NOTIFIED_GPU_WARN" = false ]; then
|
||||||
|
notify-send -u normal -i temperature-normal "High GPU Temperature" "GPU temperature is ${GPU_TEMP}°C"
|
||||||
|
NOTIFIED_GPU_WARN=true
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
NOTIFIED_GPU_WARN=false
|
||||||
|
NOTIFIED_GPU_CRIT=false
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep "$CHECK_INTERVAL"
|
||||||
|
done
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$TEMP_SCRIPT"
|
||||||
|
|
||||||
|
printf "${OK} Temperature monitoring script created at ${YELLOW}$TEMP_SCRIPT${RESET}\n"
|
||||||
|
|
||||||
|
# Create systemd user service
|
||||||
|
printf "${NOTE} Creating ${YELLOW}systemd user service${RESET} for temperature monitoring...\n"
|
||||||
|
|
||||||
|
SYSTEMD_DIR="$HOME/.config/systemd/user"
|
||||||
|
mkdir -p "$SYSTEMD_DIR"
|
||||||
|
|
||||||
|
cat > "$SYSTEMD_DIR/temp-monitor.service" << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=Temperature Monitor
|
||||||
|
After=graphical-session.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=$TEMP_SCRIPT
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=10
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
printf "${OK} Systemd service created\n"
|
||||||
|
|
||||||
|
# Enable and start the service
|
||||||
|
printf "${NOTE} Enabling and starting ${YELLOW}temp-monitor${RESET} service...\n"
|
||||||
|
systemctl --user daemon-reload
|
||||||
|
systemctl --user enable temp-monitor.service 2>&1 | tee -a "$LOG"
|
||||||
|
systemctl --user start temp-monitor.service 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
printf "${OK} Temperature monitor service is now running!\n"
|
||||||
|
printf "${INFO} You can check status with: ${YELLOW}systemctl --user status temp-monitor${RESET}\n"
|
||||||
|
printf "${INFO} View temperatures: ${YELLOW}sensors${RESET}\n"
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
@@ -12,15 +12,18 @@ thunar=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar.log"
|
||||||
|
|||||||
@@ -4,14 +4,19 @@
|
|||||||
|
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar-default.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar-default.log"
|
||||||
|
|||||||
@@ -9,15 +9,18 @@ xdg=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
|
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log"
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ if [ -n "$ISAUR" ]; then
|
|||||||
else
|
else
|
||||||
printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
|
printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
|
||||||
|
|
||||||
# Check if folder exists and remove it
|
# Check if directory exists and remove it
|
||||||
if [ -d "$pkg" ]; then
|
if [ -d "$pkg" ]; then
|
||||||
rm -rf "$pkg"
|
rm -rf "$pkg"
|
||||||
fi
|
fi
|
||||||
@@ -45,7 +45,7 @@ fi
|
|||||||
cd $pkg || { printf "%s - Failed to enter $pkg directory\n" "${ERROR}"; exit 1; }
|
cd $pkg || { printf "%s - Failed to enter $pkg directory\n" "${ERROR}"; exit 1; }
|
||||||
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
||||||
|
|
||||||
# moving install logs in to Install-Logs folder
|
# moving install logs in to Install-Logs directory
|
||||||
mv install*.log ../Install-Logs/ || true
|
mv install*.log ../Install-Logs/ || true
|
||||||
cd ..
|
cd ..
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
# zsh and oh my zsh#
|
# zsh and oh my zsh#
|
||||||
|
|
||||||
zsh_pkg=(
|
zsh_pkg=(
|
||||||
eza
|
lsd
|
||||||
mercurial
|
mercurial
|
||||||
zsh
|
zsh
|
||||||
zsh-completions
|
zsh-completions
|
||||||
@@ -14,14 +14,19 @@ zsh_pkg2=(
|
|||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh.log"
|
||||||
@@ -75,19 +80,22 @@ if command -v zsh >/dev/null; then
|
|||||||
cp -r 'assets/.zprofile' ~/
|
cp -r 'assets/.zprofile' ~/
|
||||||
|
|
||||||
# Check if the current shell is zsh
|
# Check if the current shell is zsh
|
||||||
if [[ "$SHELL" != *"zsh"* ]]; then
|
current_shell=$(basename "$SHELL")
|
||||||
|
if [ "$current_shell" != "zsh" ]; then
|
||||||
printf "${NOTE} Changing default shell to ${MAGENTA}zsh${RESET}..."
|
printf "${NOTE} Changing default shell to ${MAGENTA}zsh${RESET}..."
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
while ! chsh -s $(which zsh); do
|
# Loop to ensure the chsh command succeeds
|
||||||
|
while ! chsh -s "$(command -v zsh)"; do
|
||||||
echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG"
|
echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG"
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "${INFO} Shell changed successfully to ${MAGENTA}zsh${RESET}" 2>&1 | tee -a "$LOG"
|
printf "${INFO} Shell changed successfully to ${MAGENTA}zsh${RESET}" 2>&1 | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
echo "${NOTE}Your shell is already set to ${MAGENTA}zsh${RESET}."
|
echo "${NOTE} Your shell is already set to ${MAGENTA}zsh${RESET}."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Installing core zsh packages
|
# Installing core zsh packages
|
||||||
|
|||||||
@@ -3,14 +3,19 @@
|
|||||||
# pokemon-color-scripts#
|
# pokemon-color-scripts#
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
|
||||||
# Change the working directory to the parent directory of the script
|
# Change the working directory to the parent directory of the script
|
||||||
PARENT_DIR="$SCRIPT_DIR/.."
|
PARENT_DIR="$SCRIPT_DIR/.."
|
||||||
cd "$PARENT_DIR" || exit 1
|
cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
|
||||||
|
|
||||||
|
# Source the global functions script
|
||||||
|
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
|
||||||
|
echo "Failed to source Global_functions.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh_pokemon.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh_pokemon.log"
|
||||||
|
|||||||
558
install.sh
558
install.sh
@@ -19,29 +19,24 @@ BLUE="$(tput setaf 4)"
|
|||||||
SKY_BLUE="$(tput setaf 6)"
|
SKY_BLUE="$(tput setaf 6)"
|
||||||
RESET="$(tput sgr0)"
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
# Create Directory for Install Logs
|
||||||
|
if [ ! -d Install-Logs ]; then
|
||||||
|
mkdir Install-Logs
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the name of the log file to include the current date and time
|
||||||
|
LOG="Install-Logs/01-Hyprland-Install-Scripts-$(date +%d-%H%M%S).log"
|
||||||
|
|
||||||
# Check if running as root. If root, script will exit
|
# Check if running as root. If root, script will exit
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [[ $EUID -eq 0 ]]; then
|
||||||
echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......."
|
echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......." | tee -a "$LOG"
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if --preset argument is provided
|
|
||||||
if [[ "$1" == "--preset" ]]; then
|
|
||||||
|
|
||||||
# nvidia
|
|
||||||
if [[ "$2" == "--nvidia" ]]; then
|
|
||||||
sed -i 's/^nvidia=".*"/nvidia="Y"/' preset.sh
|
|
||||||
sed -i 's/^nouveau=".*"/nouveau="Y"/' preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if PulseAudio package is installed
|
# Check if PulseAudio package is installed
|
||||||
if pacman -Qq | grep -qw '^pulseaudio$'; then
|
if pacman -Qq | grep -qw '^pulseaudio$'; then
|
||||||
echo "$ERROR PulseAudio is detected as installed. Uninstall it first or edit install.sh on line 211 (execute_script 'pipewire.sh')."
|
echo "$ERROR PulseAudio is detected as installed. Uninstall it first or edit install.sh on line 211 (execute_script 'pipewire.sh')." | tee -a "$LOG"
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -53,115 +48,62 @@ else
|
|||||||
echo "$NOTE Install base-devel.........."
|
echo "$NOTE Install base-devel.........."
|
||||||
|
|
||||||
if sudo pacman -S --noconfirm base-devel; then
|
if sudo pacman -S --noconfirm base-devel; then
|
||||||
echo "$OK base-devel has been installed successfully."
|
echo "👌 ${OK} base-devel has been installed successfully." | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
echo "$ERROR base-devel not found nor cannot be installed."
|
echo "❌ $ERROR base-devel not found nor cannot be installed." | tee -a "$LOG"
|
||||||
echo "$ACTION Please install base-devel manually before running this script... Exiting"
|
echo "$ACTION Please install base-devel manually before running this script... Exiting" | tee -a "$LOG"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# install whiptails if detected not installed. Necessary for this version
|
||||||
|
if ! command -v whiptail >/dev/null; then
|
||||||
|
echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG"
|
||||||
|
sudo pacman -S --noconfirm libnewt
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
fi
|
||||||
|
|
||||||
clear
|
clear
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
echo -e "\e[35m
|
echo -e "\e[35m
|
||||||
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
|
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
|
||||||
╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ 2025
|
╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ 2025
|
||||||
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘
|
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Arch Linux
|
||||||
\e[0m"
|
\e[0m"
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# Welcome message
|
# Welcome message using whiptail (for displaying information)
|
||||||
echo "${SKY_BLUE}Welcome to JaKooLit's Arch-Hyprland (2025) Install Script!${RESET}"
|
whiptail --title "KooL Arch-Hyprland (2025) Install Script" \
|
||||||
echo
|
--msgbox "Welcome to KooL Arch-Hyprland (2025) Install Script!!!\n\n\
|
||||||
echo "${WARNING}ATTENTION: Run a full system update and Reboot first!! (Highly Recommended) ${RESET}"
|
ATTENTION: Run a full system update and Reboot first !!! (Highly Recommended)\n\n\
|
||||||
echo
|
NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland may NOT start!" \
|
||||||
echo "${YELLOW}NOTE: You will be required to answer some questions during the installation! ${RESET}"
|
15 80
|
||||||
echo
|
|
||||||
echo "${YELLOW}NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland wont start! ${RESET}"
|
|
||||||
echo
|
|
||||||
|
|
||||||
read -p "${SKY_BLUE}Would you like to proceed? (y/n): ${RESET}" proceed
|
# Ask if the user wants to proceed
|
||||||
|
if ! whiptail --title "Proceed with Installation?" \
|
||||||
if [ "$proceed" != "y" ]; then
|
--yesno "Would you like to proceed?" 7 50; then
|
||||||
printf "\n%.0s" {1..2}
|
echo -e "\n"
|
||||||
echo "${INFO} Installation aborted. ${SKY_BLUE}No changes in your system.${RESET} ${YELLOW}Goodbye!${RESET}"
|
echo "❌ ${INFO} You 🫵 chose ${YELLOW}NOT${RESET} to proceed. ${YELLOW}Exiting...${RESET}" | tee -a "$LOG"
|
||||||
printf "\n%.0s" {1..2}
|
echo -e "\n"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "👌 ${OK} 🇵🇭 ${MAGENTA}KooL..${RESET} ${SKY_BLUE}lets continue with the installation...${RESET}" | tee -a "$LOG"
|
||||||
|
|
||||||
|
sleep 1
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# install pciutils if detected not installed. Necessary for detecting GPU
|
# install pciutils if detected not installed. Necessary for detecting GPU
|
||||||
if ! pacman -Qs pciutils > /dev/null; then
|
if ! pacman -Qs pciutils > /dev/null; then
|
||||||
echo "pciutils is not installed. Installing..."
|
echo "${NOTE} - pciutils is not installed. Installing..." | tee -a "$LOG"
|
||||||
sudo pacman -S --noconfirm pciutils
|
sudo pacman -S --noconfirm pciutils
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Function to colorize prompts
|
# Path to the install-scripts directory
|
||||||
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"
|
|
||||||
|
|
||||||
|
|
||||||
# Create Directory for Install Logs
|
|
||||||
if [ ! -d Install-Logs ]; then
|
|
||||||
mkdir Install-Logs
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Define the directory where your scripts are located
|
|
||||||
script_directory=install-scripts
|
script_directory=install-scripts
|
||||||
|
|
||||||
# Function to ask a yes/no question and set the response in a variable
|
|
||||||
ask_yes_no() {
|
|
||||||
if [[ ! -z "${!2}" ]]; then
|
|
||||||
echo "$(colorize_prompt "$CAT" "$1 (Preset): ${!2}")"
|
|
||||||
if [[ "${!2}" = [Yy] ]]; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
eval "$2=''"
|
|
||||||
fi
|
|
||||||
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"
|
|
||||||
|
|
||||||
if [[ ! -z "${!3}" ]]; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
eval "$3=''"
|
|
||||||
fi
|
|
||||||
|
|
||||||
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
|
# Function to execute a script if it exists and make it executable
|
||||||
execute_script() {
|
execute_script() {
|
||||||
local script="$1"
|
local script="$1"
|
||||||
@@ -169,7 +111,7 @@ execute_script() {
|
|||||||
if [ -f "$script_path" ]; then
|
if [ -f "$script_path" ]; then
|
||||||
chmod +x "$script_path"
|
chmod +x "$script_path"
|
||||||
if [ -x "$script_path" ]; then
|
if [ -x "$script_path" ]; then
|
||||||
env USE_PRESET=$use_preset "$script_path"
|
env "$script_path"
|
||||||
else
|
else
|
||||||
echo "Failed to make script '$script' executable."
|
echo "Failed to make script '$script' executable."
|
||||||
fi
|
fi
|
||||||
@@ -178,181 +120,341 @@ execute_script() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Collect user responses to all questions
|
|
||||||
# Check if nvidia is present
|
## Default values for the options (will be overwritten by preset file if available)
|
||||||
if lspci | grep -i "nvidia" &> /dev/null; then
|
gtk_themes="OFF"
|
||||||
printf "\n"
|
bluetooth="OFF"
|
||||||
printf "${INFO} ${YELLOW}NVIDIA GPU${RESET} detected in your system \n"
|
thunar="OFF"
|
||||||
printf "${NOTE} Script will install ${YELLOW}nvidia-dkms nvidia-utils and nvidia-settings${RESET} \n"
|
quickshell="OFF"
|
||||||
ask_yes_no "-Do you want script to configure ${YELLOW}NVIDIA${RESET} for you?" nvidia
|
sddm="OFF"
|
||||||
|
sddm_theme="OFF"
|
||||||
|
xdph="OFF"
|
||||||
|
zsh="OFF"
|
||||||
|
pokemon="OFF"
|
||||||
|
rog="OFF"
|
||||||
|
dots="OFF"
|
||||||
|
input_group="OFF"
|
||||||
|
nvidia="OFF"
|
||||||
|
nouveau="OFF"
|
||||||
|
|
||||||
|
# Function to load preset file
|
||||||
|
load_preset() {
|
||||||
|
if [ -f "$1" ]; then
|
||||||
|
echo "✅ Loading preset: $1"
|
||||||
|
source "$1"
|
||||||
|
else
|
||||||
|
echo "⚠️ Preset file not found: $1. Using default values."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Check if --preset argument is passed
|
||||||
|
if [[ "$1" == "--preset" && -n "$2" ]]; then
|
||||||
|
load_preset "$2"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$nvidia" == "Y" ]]; then
|
# Check if yay or paru is installed
|
||||||
ask_yes_no "-Would you like to ${YELLOW}blacklist nouveau?${RESET}" nouveau
|
echo "${INFO} - Checking if yay or paru is installed"
|
||||||
fi
|
|
||||||
|
|
||||||
# AUR helper
|
|
||||||
if ! command -v yay &>/dev/null && ! command -v paru &>/dev/null; then
|
if ! command -v yay &>/dev/null && ! command -v paru &>/dev/null; then
|
||||||
printf "\n"
|
echo "${CAT} - Neither yay nor paru found. Asking 🗣️ USER to select..."
|
||||||
ask_custom_option "-Which ${YELLOW}AUR helper${RESET} would you like to use? (paru or yay): " "paru or yay" aur_helper
|
while true; do
|
||||||
fi
|
aur_helper=$(whiptail --title "Neither Yay nor Paru is installed" --checklist "Neither Yay nor Paru is installed. Choose one AUR.\n\nNOTE: Select only 1 AUR helper!\nINFO: spacebar to select" 12 60 2 \
|
||||||
|
"yay" "AUR Helper yay" "OFF" \
|
||||||
|
"paru" "AUR Helper paru" "OFF" \
|
||||||
|
3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
printf "\n"
|
if [ $? -ne 0 ]; then
|
||||||
ask_yes_no "-Install ${YELLOW}GTK themes${RESET} (required for Dark/Light function)?" gtk_themes
|
echo "❌ ${INFO} You cancelled the selection. ${YELLOW}Goodbye!${RESET}" | tee -a "$LOG"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
printf "\n"
|
if [ -z "$aur_helper" ]; then
|
||||||
ask_yes_no "-Do you want to configure ${YELLOW}Bluetooth${RESET}?" bluetooth
|
whiptail --title "Error" --msgbox "You must select at least one AUR helper to proceed." 10 60 2
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
printf "\n"
|
echo "${INFO} - You selected: $aur_helper as your AUR helper" | tee -a "$LOG"
|
||||||
ask_yes_no "-Do you want to install ${YELLOW}Thunar file manager${RESET}?" thunar
|
|
||||||
|
|
||||||
if [[ "$thunar" == "Y" ]]; then
|
aur_helper=$(echo "$aur_helper" | tr -d '"')
|
||||||
ask_yes_no "-Set ${YELLOW}Thunar${RESET} as the default file manager?" thunar_choice
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Input group
|
# Check if multiple helpers were selected
|
||||||
printf "\n"
|
if [[ $(echo "$aur_helper" | wc -w) -ne 1 ]]; then
|
||||||
if ! groups "$(whoami)" | grep -q '\binput\b'; then
|
whiptail --title "Error" --msgbox "You must select exactly one AUR helper." 10 60 2
|
||||||
printf "${NOTE} adding to ${YELLOW}input${RESET} group might be necessary for ${YELLOW}waybar keyboard-state functionality${RESET} \n"
|
continue
|
||||||
ask_yes_no "-Would you like to be added to the ${YELLOW}input${RESET} group?" input_group
|
else
|
||||||
fi
|
break
|
||||||
|
|
||||||
printf "\n"
|
|
||||||
printf "${NOTE} ${YELLOW}AGS Desktop Overview DEMO link${RESET} on README\n"
|
|
||||||
ask_yes_no "-Install ${YELLOW}AGS (aylur's GTK shell) v1${RESET} for Desktop-Like Overview?" ags
|
|
||||||
|
|
||||||
printf "\n"
|
|
||||||
ask_yes_no "-Install & configure ${YELLOW}SDDM${RESET} as login manager?" sddm
|
|
||||||
# check if any known login managers are active when users choose to install sddm
|
|
||||||
if [ "$sddm" == "y" ] || [ "$sddm" == "Y" ]; then
|
|
||||||
# List of services to check
|
|
||||||
services=("gdm.service" "gdm3.service" "lightdm.service" "lxdm.service")
|
|
||||||
|
|
||||||
# Loop through each service
|
|
||||||
for svc in "${services[@]}"; do
|
|
||||||
if systemctl is-active --quiet "$svc"; then
|
|
||||||
echo "${ERROR} ${MAGENTA}$svc${RESET} is active. stop or disable it first or ${YELLOW}DO NOT choose SDDM${RESET} to install."
|
|
||||||
echo "${NOTE} If you have GDM, no need to install SDDM. GDM will work fine as Login Manager for Hyprland."
|
|
||||||
printf "\n%.0s" {1..2}
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
else
|
||||||
if [[ "$sddm" == "Y" ]]; then
|
echo "${NOTE} - AUR helper is already installed. Skipping AUR helper selection."
|
||||||
ask_yes_no "-Download and Install ${YELLOW}SDDM Theme?${RESET} " sddm_theme
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "\n"
|
# List of services to check for active login managers
|
||||||
ask_yes_no "-Install ${YELLOW}XDG-DESKTOP-PORTAL-HYPRLAND?${RESET} (For proper Screen Share, e.g., OBS)" xdph
|
services=("gdm.service" "gdm3.service" "lightdm.service" "lxdm.service")
|
||||||
|
|
||||||
printf "\n"
|
# Function to check if any login services are active
|
||||||
ask_yes_no "-Install ${YELLOW}zsh${RESET} with ${YELLOW}oh-my-zsh?${RESET}" zsh
|
check_services_running() {
|
||||||
|
active_services=() # Array to store active services
|
||||||
|
for svc in "${services[@]}"; do
|
||||||
|
if systemctl is-active --quiet "$svc"; then
|
||||||
|
active_services+=("$svc")
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
if [[ "$zsh" == "Y" ]]; then
|
if [ ${#active_services[@]} -gt 0 ]; then
|
||||||
ask_yes_no "-Add ${YELLOW}Pokemon color scripts?${RESET} in your terminal?" pokemon_choice
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
if check_services_running; then
|
||||||
|
active_list=$(printf "%s\n" "${active_services[@]}")
|
||||||
|
|
||||||
|
# Display the active login manager(s) in the whiptail message box
|
||||||
|
whiptail --title "Active non-SDDM login manager(s) detected" \
|
||||||
|
--msgbox "The following login manager(s) are active:\n\n$active_list\n\nIf you want to install SDDM and SDDM theme, stop and disable the active services above, reboot before running this script\n\nYour option to install SDDM and SDDM theme has now been removed\n\n- Ja " 23 80
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "\n"
|
# Check if NVIDIA GPU is detected
|
||||||
ask_yes_no "-Installing on ${YELLOW}Asus ROG laptops?${RESET}" rog
|
nvidia_detected=false
|
||||||
|
if lspci | grep -i "nvidia" &> /dev/null; then
|
||||||
|
nvidia_detected=true
|
||||||
|
whiptail --title "NVIDIA GPU Detected" --msgbox "NVIDIA GPU detected in your system.\n\nNOTE: The script will install nvidia-dkms, nvidia-utils, and nvidia-settings if you chose to configure." 12 60
|
||||||
|
fi
|
||||||
|
|
||||||
printf "\n"
|
# Initialize the options array for whiptail checklist
|
||||||
ask_yes_no "-Do you want to add pre-configured ${YELLOW}KooL's Hyprland dotfiles?${RESET}" dots
|
options_command=(
|
||||||
|
whiptail --title "Select Options" --checklist "Choose options to install or configure\nNOTE: 'SPACEBAR' to select & 'TAB' key to change selection" 28 85 20
|
||||||
|
)
|
||||||
|
|
||||||
printf "\n"
|
# Add NVIDIA options if detected
|
||||||
|
if [ "$nvidia_detected" == "true" ]; then
|
||||||
|
options_command+=(
|
||||||
|
"nvidia" "Do you want script to configure NVIDIA GPU?" "OFF"
|
||||||
|
"nouveau" "Do you want Nouveau to be blacklisted?" "OFF"
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add 'input_group' option if user is not in input group
|
||||||
|
input_group_detected=false
|
||||||
|
if ! groups "$(whoami)" | grep -q '\binput\b'; then
|
||||||
|
input_group_detected=true
|
||||||
|
whiptail --title "Input Group" --msgbox "You are not currently in the input group.\n\nAdding you to the input group might be necessary for the Waybar keyboard-state functionality." 12 60
|
||||||
|
fi
|
||||||
|
|
||||||
# Ensuring all in the scripts folder are made executable
|
# Add 'input_group' option if necessary
|
||||||
chmod +x install-scripts/*
|
if [ "$input_group_detected" == "true" ]; then
|
||||||
|
options_command+=(
|
||||||
|
"input_group" "Add your USER to input group for some waybar functionality?" "OFF"
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Conditionally add SDDM and SDDM theme options if no active login manager is found
|
||||||
|
if ! check_services_running; then
|
||||||
|
options_command+=(
|
||||||
|
"sddm" "Install & configure SDDM login manager?" "OFF"
|
||||||
|
"sddm_theme" "Download & Install Additional SDDM theme?" "OFF"
|
||||||
|
)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add the remaining static options
|
||||||
|
options_command+=(
|
||||||
|
"gtk_themes" "Install GTK themes? (required for Dark/Light function)" "OFF"
|
||||||
|
"bluetooth" "Do you want script to configure Bluetooth?" "OFF"
|
||||||
|
"thunar" "Do you want Thunar file manager to be installed?" "OFF"
|
||||||
|
"quickshell" "Install quickshell for Desktop-Like Overview?" "OFF"
|
||||||
|
"xdph" "Install XDG-DESKTOP-PORTAL-HYPRLAND (for screen share)?" "OFF"
|
||||||
|
"zsh" "Install zsh shell with Oh-My-Zsh?" "OFF"
|
||||||
|
"pokemon" "Add Pokemon color scripts to your terminal?" "OFF"
|
||||||
|
"rog" "Are you installing on Asus ROG laptops?" "OFF"
|
||||||
|
"dots" "Download and install pre-configured KooL Hyprland dotfiles?" "OFF"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Capture the selected options before the while loop starts
|
||||||
|
while true; do
|
||||||
|
selected_options=$("${options_command[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
# Check if the user pressed Cancel (exit status 1)
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
echo -e "\n"
|
||||||
|
echo "❌ ${INFO} You 🫵 cancelled the selection. ${YELLOW}Goodbye!${RESET}" | tee -a "$LOG"
|
||||||
|
exit 0 # Exit the script if Cancel is pressed
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no option was selected, notify and restart the selection
|
||||||
|
if [ -z "$selected_options" ]; then
|
||||||
|
whiptail --title "Warning" --msgbox "No options were selected. Please select at least one option." 10 60
|
||||||
|
continue # Return to selection if no options selected
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Strip the quotes and trim spaces if necessary (sanitize the input)
|
||||||
|
selected_options=$(echo "$selected_options" | tr -d '"' | tr -s ' ')
|
||||||
|
|
||||||
|
# Convert selected options into an array (preserving spaces in values)
|
||||||
|
IFS=' ' read -r -a options <<< "$selected_options"
|
||||||
|
|
||||||
|
# Check if the "dots" option was selected
|
||||||
|
dots_selected="OFF"
|
||||||
|
for option in "${options[@]}"; do
|
||||||
|
if [[ "$option" == "dots" ]]; then
|
||||||
|
dots_selected="ON"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# If "dots" is not selected, show a note and ask the user to proceed or return to choices
|
||||||
|
if [[ "$dots_selected" == "OFF" ]]; then
|
||||||
|
# Show a note about not selecting the "dots" option
|
||||||
|
if ! whiptail --title "KooL Hyprland Dot Files" --yesno \
|
||||||
|
"You have not selected to install the pre-configured KooL Hyprland dotfiles.\n\nKindly NOTE that if you proceed without Dots, Hyprland will start with default vanilla Hyprland configuration and I won't be able to give you support.\n\nWould you like to continue install without KooL Hyprland Dots or return to choices/options?" \
|
||||||
|
--yes-button "Continue" --no-button "Return" 15 90; then
|
||||||
|
echo "🔙 Returning to options..." | tee -a "$LOG"
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
# User chose to continue
|
||||||
|
echo "${INFO} ⚠️ Continuing WITHOUT the dotfiles installation..." | tee -a "$LOG"
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prepare the confirmation message
|
||||||
|
confirm_message="You have selected the following options:\n\n"
|
||||||
|
for option in "${options[@]}"; do
|
||||||
|
confirm_message+=" - $option\n"
|
||||||
|
done
|
||||||
|
confirm_message+="\nAre you happy with these choices?"
|
||||||
|
|
||||||
|
# Confirmation prompt
|
||||||
|
if ! whiptail --title "Confirm Your Choices" --yesno "$(printf "%s" "$confirm_message")" 25 80; then
|
||||||
|
echo -e "\n"
|
||||||
|
echo "❌ ${SKY_BLUE}You're not 🫵 happy${RESET}. ${YELLOW}Returning to options...${RESET}" | tee -a "$LOG"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "👌 ${OK} You confirmed your choices. Proceeding with ${SKY_BLUE}KooL 🇵🇭 Hyprland Installation...${RESET}" | tee -a "$LOG"
|
||||||
|
break
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
sleep 1
|
|
||||||
# Ensuring base-devel is installed
|
# Ensuring base-devel is installed
|
||||||
execute_script "00-base.sh"
|
execute_script "00-base.sh"
|
||||||
sleep 1
|
sleep 1
|
||||||
execute_script "pacman.sh"
|
execute_script "pacman.sh"
|
||||||
sleep 1
|
sleep 1
|
||||||
# Execute AUR helper script based on user choice
|
|
||||||
|
# Execute AUR helper script after other installations if applicable
|
||||||
if [ "$aur_helper" == "paru" ]; then
|
if [ "$aur_helper" == "paru" ]; then
|
||||||
execute_script "paru.sh"
|
execute_script "paru.sh"
|
||||||
elif [ "$aur_helper" == "yay" ]; then
|
elif [ "$aur_helper" == "yay" ]; then
|
||||||
execute_script "yay.sh"
|
execute_script "yay.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install hyprland packages
|
sleep 1
|
||||||
|
|
||||||
|
# Run the Hyprland related scripts
|
||||||
|
echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland additional packages...${RESET}" | tee -a "$LOG"
|
||||||
|
sleep 1
|
||||||
execute_script "01-hypr-pkgs.sh"
|
execute_script "01-hypr-pkgs.sh"
|
||||||
|
|
||||||
# Install pipewire and pipewire-audio
|
echo "${INFO} Installing ${SKY_BLUE}pipewire and pipewire-audio...${RESET}" | tee -a "$LOG"
|
||||||
|
sleep 1
|
||||||
execute_script "pipewire.sh"
|
execute_script "pipewire.sh"
|
||||||
|
|
||||||
# Install necessary fonts
|
echo "${INFO} Installing ${SKY_BLUE}necessary fonts...${RESET}" | tee -a "$LOG"
|
||||||
|
sleep 1
|
||||||
execute_script "fonts.sh"
|
execute_script "fonts.sh"
|
||||||
|
|
||||||
# Install hyprland
|
echo "${INFO} Installing ${SKY_BLUE}Hyprland...${RESET}"
|
||||||
|
sleep 1
|
||||||
execute_script "hyprland.sh"
|
execute_script "hyprland.sh"
|
||||||
|
|
||||||
if [ "$nvidia" == "Y" ]; then
|
# Clean up the selected options (remove quotes and trim spaces)
|
||||||
execute_script "nvidia.sh"
|
selected_options=$(echo "$selected_options" | tr -d '"' | tr -s ' ')
|
||||||
fi
|
|
||||||
if [ "$nouveau" == "Y" ]; then
|
|
||||||
execute_script "nvidia_nouveau.sh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$gtk_themes" == "Y" ]; then
|
# Convert selected options into an array (splitting by spaces)
|
||||||
execute_script "gtk_themes.sh"
|
IFS=' ' read -r -a options <<< "$selected_options"
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$bluetooth" == "Y" ]; then
|
# Loop through selected options
|
||||||
execute_script "bluetooth.sh"
|
for option in "${options[@]}"; do
|
||||||
fi
|
case "$option" in
|
||||||
|
sddm)
|
||||||
if [ "$thunar" == "Y" ]; then
|
if check_services_running; then
|
||||||
execute_script "thunar.sh"
|
active_list=$(printf "%s\n" "${active_services[@]}")
|
||||||
fi
|
whiptail --title "Error" --msgbox "One of the following login services is running:\n$active_list\n\nPlease stop & disable it or DO not choose SDDM." 12 60
|
||||||
if [ "$thunar_choice" == "Y" ]; then
|
exec "$0"
|
||||||
execute_script "thunar_default.sh"
|
else
|
||||||
fi
|
echo "${INFO} Installing and configuring ${SKY_BLUE}SDDM...${RESET}" | tee -a "$LOG"
|
||||||
|
|
||||||
if [ "$ags" == "Y" ]; then
|
|
||||||
execute_script "ags.sh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ "$sddm" == "Y" ]; then
|
|
||||||
execute_script "sddm.sh"
|
execute_script "sddm.sh"
|
||||||
fi
|
fi
|
||||||
if [ "$sddm_theme" == "Y" ]; then
|
;;
|
||||||
execute_script "sddm_theme.sh"
|
nvidia)
|
||||||
fi
|
echo "${INFO} Configuring ${SKY_BLUE}nvidia stuff${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "nvidia.sh"
|
||||||
if [ "$xdph" == "Y" ]; then
|
;;
|
||||||
execute_script "xdph.sh"
|
nouveau)
|
||||||
fi
|
echo "${INFO} blacklisting ${SKY_BLUE}nouveau${RESET}"
|
||||||
|
execute_script "nvidia_nouveau.sh" | tee -a "$LOG"
|
||||||
if [ "$zsh" == "Y" ]; then
|
;;
|
||||||
execute_script "zsh.sh"
|
gtk_themes)
|
||||||
fi
|
echo "${INFO} Installing ${SKY_BLUE}GTK themes...${RESET}" | tee -a "$LOG"
|
||||||
if [ "$pokemon_choice" == "Y" ]; then
|
execute_script "gtk_themes.sh"
|
||||||
execute_script "zsh_pokemon.sh"
|
;;
|
||||||
fi
|
input_group)
|
||||||
|
echo "${INFO} Adding user into ${SKY_BLUE}input group...${RESET}" | tee -a "$LOG"
|
||||||
if [ "$input_group" == "Y" ]; then
|
|
||||||
execute_script "InputGroup.sh"
|
execute_script "InputGroup.sh"
|
||||||
fi
|
;;
|
||||||
|
quickshell)
|
||||||
if [ "$rog" == "Y" ]; then
|
echo "${INFO} Installing ${SKY_BLUE}quickshell for Desktop Overview...${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "quickshell.sh"
|
||||||
|
;;
|
||||||
|
xdph)
|
||||||
|
echo "${INFO} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland...${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "xdph.sh"
|
||||||
|
;;
|
||||||
|
bluetooth)
|
||||||
|
echo "${INFO} Configuring ${SKY_BLUE}Bluetooth...${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "bluetooth.sh"
|
||||||
|
;;
|
||||||
|
thunar)
|
||||||
|
echo "${INFO} Installing ${SKY_BLUE}Thunar file manager...${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "thunar.sh"
|
||||||
|
execute_script "thunar_default.sh"
|
||||||
|
;;
|
||||||
|
sddm_theme)
|
||||||
|
echo "${INFO} Downloading & Installing ${SKY_BLUE}Additional SDDM theme...${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "sddm_theme.sh"
|
||||||
|
;;
|
||||||
|
zsh)
|
||||||
|
echo "${INFO} Installing ${SKY_BLUE}zsh with Oh-My-Zsh...${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "zsh.sh"
|
||||||
|
;;
|
||||||
|
pokemon)
|
||||||
|
echo "${INFO} Adding ${SKY_BLUE}Pokemon color scripts to terminal...${RESET}" | tee -a "$LOG"
|
||||||
|
execute_script "zsh_pokemon.sh"
|
||||||
|
;;
|
||||||
|
rog)
|
||||||
|
echo "${INFO} Installing ${SKY_BLUE}ROG laptop packages...${RESET}" | tee -a "$LOG"
|
||||||
execute_script "rog.sh"
|
execute_script "rog.sh"
|
||||||
fi
|
;;
|
||||||
|
dots)
|
||||||
if [ "$dots" == "Y" ]; then
|
echo "${INFO} Installing pre-configured ${SKY_BLUE}KooL Hyprland dotfiles...${RESET}" | tee -a "$LOG"
|
||||||
execute_script "dotfiles-main.sh"
|
execute_script "dotfiles-main.sh"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown option: $option" | tee -a "$LOG"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
fi
|
sleep 1
|
||||||
|
|
||||||
clear
|
|
||||||
|
|
||||||
# copy fastfetch config if arch.png is not present
|
# copy fastfetch config if arch.png is not present
|
||||||
if [ ! -f "$HOME/.config/fastfetch/arch.png" ]; then
|
if [ ! -f "$HOME/.config/fastfetch/arch.png" ]; then
|
||||||
cp -r assets/fastfetch "$HOME/.config/"
|
cp -r assets/fastfetch "$HOME/.config/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
# final check essential packages if it is installed
|
# final check essential packages if it is installed
|
||||||
execute_script "02-Final-Check.sh"
|
execute_script "02-Final-Check.sh"
|
||||||
|
|
||||||
@@ -360,36 +462,39 @@ printf "\n%.0s" {1..1}
|
|||||||
|
|
||||||
# Check if hyprland or hyprland-git is installed
|
# Check if hyprland or hyprland-git is installed
|
||||||
if pacman -Q hyprland &> /dev/null || pacman -Q hyprland-git &> /dev/null; then
|
if pacman -Q hyprland &> /dev/null || pacman -Q hyprland-git &> /dev/null; then
|
||||||
printf "\n${OK} Hyprland is installed. However, some essential packages may not be installed. Please see above!"
|
printf "\n ${OK} 👌 Hyprland is installed. However, some essential packages may not be installed. Please see above!"
|
||||||
printf "\n${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n"
|
printf "\n${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n"
|
||||||
sleep 2
|
sleep 2
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
printf "${SKY_BLUE}Thank you${RESET} for using ${MAGENTA}KooL's Hyprland Dots${RESET}. ${YELLOW}Enjoy and Have a good day!${RESET}"
|
printf "${SKY_BLUE}Thank you${RESET} 🫰 for using 🇵🇭 ${MAGENTA}KooL's Hyprland Dots${RESET}. ${YELLOW}Enjoy and Have a good day!${RESET}"
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
printf "\n${NOTE} You can start Hyprland by typing ${SKY_BLUE}Hyprland${RESET} (IF SDDM is not installed) (note the capital H!).\n"
|
printf "\n${NOTE} You can start Hyprland by typing ${SKY_BLUE}Hyprland${RESET} (IF SDDM is not installed) (note the capital H!).\n"
|
||||||
printf "\n${NOTE} However, it is ${YELLOW}highly recommended to reboot${RESET} your system.\n\n"
|
printf "\n${NOTE} However, it is ${YELLOW}highly recommended to reboot${RESET} your system.\n\n"
|
||||||
|
|
||||||
read -rp "${CAT} Would you like to reboot now? (y/n): " HYP
|
while true; do
|
||||||
|
echo -n "${CAT} Would you like to reboot now? (y/n): "
|
||||||
|
read HYP
|
||||||
HYP=$(echo "$HYP" | tr '[:upper:]' '[:lower:]')
|
HYP=$(echo "$HYP" | tr '[:upper:]' '[:lower:]')
|
||||||
|
|
||||||
if [[ "$HYP" == "y" || "$HYP" == "yes" ]]; then
|
if [[ "$HYP" == "y" || "$HYP" == "yes" ]]; then
|
||||||
echo "${INFO} Rebooting now..."
|
echo "${INFO} Rebooting now..."
|
||||||
systemctl reboot
|
systemctl reboot
|
||||||
|
break
|
||||||
elif [[ "$HYP" == "n" || "$HYP" == "no" ]]; then
|
elif [[ "$HYP" == "n" || "$HYP" == "no" ]]; then
|
||||||
echo "${OK} You choose NOT to reboot"
|
echo "👌 ${OK} You chose NOT to reboot"
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
# Check if NVIDIA GPU is present
|
# Check if NVIDIA GPU is present
|
||||||
if lspci | grep -i "nvidia" &> /dev/null; then
|
if lspci | grep -i "nvidia" &> /dev/null; then
|
||||||
echo "${INFO} HOWEVER ${YELLOW}NVIDIA GPU${RESET} detected. Reminder that you must REBOOT your SYSTEM..."
|
echo "${INFO} HOWEVER ${YELLOW}NVIDIA GPU${RESET} detected. Reminder that you must REBOOT your SYSTEM..."
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
fi
|
fi
|
||||||
|
break
|
||||||
else
|
else
|
||||||
echo "${WARN} Invalid response. Please answer with 'y' or 'n'. Exiting."
|
echo "${WARN} Invalid response. Please answer with 'y' or 'n'."
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
|
done
|
||||||
else
|
else
|
||||||
# Print error message if neither package is installed
|
# Print error message if neither package is installed
|
||||||
printf "\n${WARN} Hyprland is NOT installed. Please check 00_CHECK-time_installed.log and other files in the Install-Logs/ directory..."
|
printf "\n${WARN} Hyprland is NOT installed. Please check 00_CHECK-time_installed.log and other files in the Install-Logs/ directory..."
|
||||||
@@ -397,4 +502,5 @@ else
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
55
preset.sh
55
preset.sh
@@ -1,55 +0,0 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
|
||||||
# CREDIT to: https://github.com/PostCyberPunk for this Preset function
|
|
||||||
|
|
||||||
## -- Make sure you use the right answer or install script will fail ###
|
|
||||||
# The rest Change to Y for Yes and N for No.
|
|
||||||
|
|
||||||
### Script will install nvidia-dkms nvidia-utils & nvidia-settings
|
|
||||||
###-Would you like script to Configure NVIDIA for you?
|
|
||||||
nvidia="N"
|
|
||||||
### Would you like to blacklist nouveau? (y/n)
|
|
||||||
nouveau="N"
|
|
||||||
|
|
||||||
### yay or paru
|
|
||||||
aur_helper="yay"
|
|
||||||
|
|
||||||
###-Install GTK themes (required for Dark/Light function)?
|
|
||||||
gtk_themes="Y"
|
|
||||||
|
|
||||||
###-Do you want to configure Bluetooth?
|
|
||||||
bluetooth="Y"
|
|
||||||
|
|
||||||
###-Do you want to install Thunar file manager?
|
|
||||||
thunar="Y"
|
|
||||||
### Do you want to set Thunar as the default file manager?
|
|
||||||
thunar_choice="Y"
|
|
||||||
|
|
||||||
|
|
||||||
### Adding user to the 'input' group might be necessary for waybar keyboard-state functionality
|
|
||||||
input_group="Y"
|
|
||||||
|
|
||||||
### Desktop overview Demo Link in README
|
|
||||||
### Desktop overview Demo Link in README
|
|
||||||
### Install AGS (aylur's GTK shell) v1 for Desktop-Like Overview?"
|
|
||||||
ags="Y"
|
|
||||||
|
|
||||||
###-Install & configure SDDM log-in Manager
|
|
||||||
sddm="Y"
|
|
||||||
### install and download SDDM themes
|
|
||||||
sddm_theme="Y"
|
|
||||||
|
|
||||||
###-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)
|
|
||||||
xdph="Y"
|
|
||||||
|
|
||||||
### Shell extension. Bash alternative
|
|
||||||
###-Install zsh, oh-my-zsh
|
|
||||||
zsh="Y"
|
|
||||||
### add Pokemon color scripts to terminal
|
|
||||||
pokemon_choice="Y"
|
|
||||||
|
|
||||||
### This will install ASUSCTL & SUPERGFXCTL
|
|
||||||
###-Installing on Asus ROG Laptops?
|
|
||||||
rog="N"
|
|
||||||
|
|
||||||
###-Download and Add pre-configured Hyprland dotfiles?
|
|
||||||
dots="Y"
|
|
||||||
257
uninstall.sh
Executable file
257
uninstall.sh
Executable file
@@ -0,0 +1,257 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# KooL Arch-Hyprland uninstall script #
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
|
# 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)"
|
||||||
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
|
MAGENTA="$(tput setaf 5)"
|
||||||
|
ORANGE="$(tput setaf 214)"
|
||||||
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
GREEN="$(tput setaf 2)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
SKY_BLUE="$(tput setaf 6)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
echo -e "\e[35m
|
||||||
|
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
|
||||||
|
╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ UNINSTALL
|
||||||
|
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Arch Linux
|
||||||
|
\e[0m"
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
|
# Show welcome message using whiptail with Yes/No options
|
||||||
|
whiptail --title "Arch-Hyprland KooL Dots Uninstall Script" --yesno \
|
||||||
|
"Hello! This script will uninstall KooL Hyprland packages and configs.
|
||||||
|
|
||||||
|
You can choose packages and directories you want to remove.
|
||||||
|
NOTE: This will remove configs from ~/.config
|
||||||
|
|
||||||
|
WARNING: After uninstallation, your system may become unstable.
|
||||||
|
|
||||||
|
Shall we Proceed?" 20 80
|
||||||
|
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
echo "$INFO uninstall process canceled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Function to remove selected packages
|
||||||
|
remove_packages() {
|
||||||
|
local selected_packages_file=$1
|
||||||
|
while read -r package; do
|
||||||
|
if pacman -Qi "$package" &> /dev/null; then
|
||||||
|
echo "Removing package: $package"
|
||||||
|
if ! sudo pacman -Rs --noconfirm "$package"; then
|
||||||
|
echo "$ERROR Failed to remove package: $package"
|
||||||
|
else
|
||||||
|
echo "$OK Successfully removed package: $package"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$INFO Package ${YELLOW}$package${RESET} not found. Skipping."
|
||||||
|
fi
|
||||||
|
done < "$selected_packages_file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to remove selected directories
|
||||||
|
remove_directories() {
|
||||||
|
local selected_dirs_file=$1
|
||||||
|
while read -r dir; do
|
||||||
|
pattern="$HOME/.config/$dir*"
|
||||||
|
# Loop through directories matching the pattern
|
||||||
|
for dir_to_remove in $pattern; do
|
||||||
|
if [ -d "$dir_to_remove" ]; then
|
||||||
|
echo "Removing directory: $dir_to_remove"
|
||||||
|
if ! rm -rf "$dir_to_remove"; then
|
||||||
|
echo "$ERROR Failed to remove directory: $dir_to_remove"
|
||||||
|
else
|
||||||
|
echo "$OK Successfully removed directory: $dir_to_remove"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$INFO Directory ${YELLOW}$dir_to_remove${RESET} not found. Skipping."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
done < "$selected_dirs_file"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Define the list of packages to choose from (with options_command tags)
|
||||||
|
packages=(
|
||||||
|
"btop" "resource monitor" "off"
|
||||||
|
"brightnessctl" "brightnessctl" "off"
|
||||||
|
"cava" "Cross-platform Audio Visualizer" "off"
|
||||||
|
"cliphist" "clipboard manager" "off"
|
||||||
|
"fastfetch" "fastfetch" "off"
|
||||||
|
"ffmpegthumbnailer" "FFmpeg Thumbnailer" "off"
|
||||||
|
"grim" "screenshot tool" "off"
|
||||||
|
"imagemagick" "Image manipulation tool" "off"
|
||||||
|
"kitty" "kitty-terminal" "off"
|
||||||
|
"kvantum" "QT apps theming" "off"
|
||||||
|
"mousepad" "simple text editor" "off"
|
||||||
|
"mpv" "multi-media player" "off"
|
||||||
|
"mpv-mpris" "mpv-plugin" "off"
|
||||||
|
"network-manager-applet" "network-manager-applet" "off"
|
||||||
|
"nvtop" "gpu resource monitor" "off"
|
||||||
|
"nwg-displays" "display monitor configuration app" "off"
|
||||||
|
"nwg-look" "gtk settings app" "off"
|
||||||
|
"pamixer" "pamixer" "off"
|
||||||
|
"pokemon-colorscripts-git" "terminal colorscripts" "off"
|
||||||
|
"pavucontrol" "pavucontrol" "off"
|
||||||
|
"playerctl" "playerctl" "off"
|
||||||
|
"pyprland" "pyprland" "off"
|
||||||
|
"qalculate-gtk" "calculator - QT" "off"
|
||||||
|
"qt5ct" "qt5ct" "off"
|
||||||
|
"qt6ct" "qt6ct" "off"
|
||||||
|
"quickshell" "quickshell" "off"
|
||||||
|
"rofi-wayland" "rofi-wayland" "off"
|
||||||
|
"slurp" "screenshot tool" "off"
|
||||||
|
"swappy" "screenshot tool" "off"
|
||||||
|
"swaync" "notification agent" "off"
|
||||||
|
"swww" "wallpaper engine" "off"
|
||||||
|
"thunar" "File Manager" "off"
|
||||||
|
"thunar-archive-plugin" "Archive Plugin" "off"
|
||||||
|
"thunar-volman" "Volume Management" "off"
|
||||||
|
"tumbler" "Thumbnail Service" "off"
|
||||||
|
"wallust" "color pallete generator" "off"
|
||||||
|
"waybar" "wayland bar" "off"
|
||||||
|
"wl-clipboard" "clipboard manager" "off"
|
||||||
|
"wlogout" "logout menu" "off"
|
||||||
|
"xdg-desktop-portal-hyprland" "hyprland file picker" "off"
|
||||||
|
"yad" "dialog box" "off"
|
||||||
|
"yt-dlp" "video downloader" "off"
|
||||||
|
"xarchiver" "Archive Manager" "off"
|
||||||
|
"hypridle" "hyprland idling agent" "off"
|
||||||
|
"hyprlock" "lockscreen" "off"
|
||||||
|
"hyprpolkitagent" "hyprland polkit agent" "off"
|
||||||
|
"hyprland" "hyprland main package" "off"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Define the list of directories to choose from (with options_command tags)
|
||||||
|
directories=(
|
||||||
|
"btop" "btop configuration" "off"
|
||||||
|
"cava" "cava configuration" "off"
|
||||||
|
"fastfetch" "fastfetch configuration" "off"
|
||||||
|
"hypr" "main hyprland configuration" "off"
|
||||||
|
"kitty" "kitty terminal configuration" "off"
|
||||||
|
"Kvantum" "Kvantum-manager configuration" "off"
|
||||||
|
"quickshell" "quickshell desktop overview configuration" "off"
|
||||||
|
"qt5ct" "qt5ct configuration" "off"
|
||||||
|
"qt6ct" "qt6ct configuration" "off"
|
||||||
|
"rofi" "rofi configuration" "off"
|
||||||
|
"swappy" "swappy (screenshot tool) configuration" "off"
|
||||||
|
"swaync" "swaync (notification agent) configuration" "off"
|
||||||
|
"Thunar" "Thunar file manager configuration" "off"
|
||||||
|
"wallust" "wallust (color pallete) configuration" "off"
|
||||||
|
"waybar" "waybar configuration" "off"
|
||||||
|
"wlogout" "wlogout (logout menu) configuration" "off"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Loop for package selection until user selects something or cancels
|
||||||
|
while true; do
|
||||||
|
package_choices=$(whiptail --title "Select Packages to Uninstall" --checklist \
|
||||||
|
"Select the packages you want to remove\nNOTE: 'SPACEBAR' to select & 'TAB' key to change selection" 35 90 25 \
|
||||||
|
"${packages[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
# Check if the user canceled the operation
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
echo "$INFO uninstall process canceled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no packages are selected, ask again
|
||||||
|
if [[ -z "$package_choices" ]]; then
|
||||||
|
echo "$NOTE No packages selected. Please select at least one package."
|
||||||
|
else
|
||||||
|
echo "$package_choices" | tr -d '"' | tr ' ' '\n' > /tmp/selected_packages.txt
|
||||||
|
echo "Packages to remove: $package_choices"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Loop for directory selection until user selects something or cancels
|
||||||
|
while true; do
|
||||||
|
dir_choices=$(whiptail --title "Select Directories to Remove" --checklist \
|
||||||
|
"Select the directories you want to remove\nNOTE: This will remove configs from ~/.config\n\nNOTE: 'SPACEBAR' to select & 'TAB' key to change selection" 28 90 18 \
|
||||||
|
"${directories[@]}" 3>&1 1>&2 2>&3)
|
||||||
|
|
||||||
|
# Check if the user canceled the operation
|
||||||
|
if [ $? -eq 1 ]; then
|
||||||
|
echo "$INFO uninstall process canceled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If no directories are selected, ask again
|
||||||
|
if [[ -z "$dir_choices" ]]; then
|
||||||
|
echo "$NOTE No directories selected. Please select at least one directory."
|
||||||
|
else
|
||||||
|
# Save each selected directory to a new line in the temporary file
|
||||||
|
echo "$dir_choices" | tr -d '"' | tr ' ' '\n' > /tmp/selected_directories.txt
|
||||||
|
echo "Directories to remove: $dir_choices"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# First confirmation - Warning about potential instability
|
||||||
|
if ! whiptail --title "Warning" --yesno \
|
||||||
|
"Warning: Removing these packages and directories may cause your system to become unstable and you may not be able to recover it.\n\nAre you sure you want to proceed?" \
|
||||||
|
10 80; then
|
||||||
|
echo "$INFO uninstall process canceled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Second confirmation - Final confirmation to proceed
|
||||||
|
if ! whiptail --title "Final Confirmation" --yesno \
|
||||||
|
"Are you absolutely sure you want to remove the selected packages and directories?\n\nWARNING! This action is irreversible." \
|
||||||
|
10 80; then
|
||||||
|
echo "$INFO uninstall process canceled."
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "\n%s${SKY_BLUE}Attempting to remove selected packages${RESET}\n" "${NOTE}"
|
||||||
|
MAX_ATTEMPTS=2
|
||||||
|
ATTEMPT=0
|
||||||
|
while [ $ATTEMPT -lt $MAX_ATTEMPTS ]; do
|
||||||
|
# Remove packages
|
||||||
|
remove_packages /tmp/selected_packages.txt
|
||||||
|
|
||||||
|
# Check if any packages still need to be removed, retry if needed
|
||||||
|
MISSING_PACKAGE_COUNT=0
|
||||||
|
while read -r package; do
|
||||||
|
if pacman -Qi "$package" &> /dev/null; then
|
||||||
|
MISSING_PACKAGE_COUNT=$((MISSING_PACKAGE_COUNT + 1))
|
||||||
|
fi
|
||||||
|
done < /tmp/selected_packages.txt
|
||||||
|
|
||||||
|
if [ $MISSING_PACKAGE_COUNT -gt 0 ]; then
|
||||||
|
ATTEMPT=$((ATTEMPT + 1))
|
||||||
|
echo "Attempt #$ATTEMPT failed, retrying..."
|
||||||
|
else
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "\n%s${SKY_BLUE}Attempting to remove locally installed packages${RESET}\n" "${NOTE}"
|
||||||
|
for file in ags pokemon-colorscripts; do
|
||||||
|
if [ -f "/usr/local/bin/$file" ]; then
|
||||||
|
sudo rm "/usr/local/bin/$file"
|
||||||
|
echo "$file removed."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "\n%s${SKY_BLUE}Attempting to remove selected directories${RESET}\n" "${NOTE}"
|
||||||
|
remove_directories /tmp/selected_directories.txt
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
echo -e "$MAGENTA Hyprland and related components have been uninstalled.$RESET"
|
||||||
|
echo -e "$YELLOW It is recommended to reboot your system now.$RESET"
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
Reference in New Issue
Block a user