146 Commits

Author SHA1 Message Date
Don Williams
4f8e544a9e Added UWSM in case someone logins in with UWSM by mistake
They won't end up with a black screen

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   01-hypr-pkgs.sh
2026-01-22 21:36:54 -05:00
Don Williams
715a43cffc Added Spanish Translations
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	new file:   CODE_OF_CONDUCT.es.md
	new file:   COMMIT_MESSAGE_GUIDELINES.es.md
	new file:   CONTRIBUTING.es.md
2026-01-11 20:23:53 -05:00
Donald Williams
7ebe599868 Merge branch 'main' into development 2025-12-11 11:54:34 -05:00
Don Williams
ae0c8b155c Updated CHANGELOG 2025-12-11 11:51:06 -05:00
Don Williams
3781f9c510 Adding qt5-quickcontrols2 to sddm.sh
A user reported in CachyOS this missing package prevented
Hyprland from starting via SDDM with simple_sddm_2 theme
Standard SDDM theme worked on.  Adding this pkg also resolved
issue

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   sddm.sh
2025-12-11 10:48:47 -05:00
Ahum Maitra
bbeaa681e0 docs : Fix Nvidia Spelling in README (#346) 2025-12-09 22:15:41 +09:00
Don Williams
47f4e4d7b6 Fixed AGS v1
It now does the following:
◦  Clone upstream AGS 1.9.0.
◦  Stub out PAM/GUtils via pam.ts.
◦  Build and install AGS.
◦  Install the known-good launcher from install-scripts/ags.launcher.com.github.Aylur.ags.
◦  Point /usr/local/bin/ags at that launcher.

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-14 02:09:16 -05:00
Don Williams
23f52b3f00 Saving working script before adding to AGS.SH
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	new file:   install-scripts/ags.launcher.com.github.Aylur.ags
2025-11-14 02:04:49 -05:00
Don Williams
956fb369b5 Fixing mesaon build errors 2025-11-14 01:17:20 -05:00
Don Williams
9cf06be539 Try again 2025-11-14 01:12:12 -05:00
Don Williams
1808001bdb Fixed syntax error 2025-11-14 01:07:36 -05:00
Don Williams
46728206a0 Patching tsconfig.json
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-14 01:03:18 -05:00
Don Williams
27b7ba5578 Fix attempt #2 GI_TYPELIB_PATH is read before set
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-14 00:43:53 -05:00
Don Williams
bcfade3e24 Checking for install triggered broken ags to start
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-14 00:31:38 -05:00
Don Williams
f231d77b5c Fixing ags script for overview launcher
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-14 00:27:51 -05:00
Don Williams
d1c0e89737 Fix to prevent 0byte ags file
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-13 23:26:25 -05:00
Don Williams
f1e2d27625 Fixed syntax error build failing still trying patch
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-13 23:04:28 -05:00
Don Williams
2789e1544c fixing AGS to install and not falsely report success
•  Added set -eo pipefail after sourcing Global_functions.sh so the script exits on failures and correctly fails when any command in a pipeline (like meson install | tee) fails.
◦  Added "ignoreDeprecations": "6.0" under compilerOptions to silence TS5107.
◦  Replaced moduleResolution "node10" with "node16" to be compatible with current TypeScript behavior.
•  The success message will now only be printed if meson actually succeeds

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-13 22:59:30 -05:00
Don Williams
a9e33e5c58 ags: fix GIRepository ESM import error by exporting GI_TYPELIB_PATH and dropping GIRepository prepend calls
Context:
- On systems where AGS v1 installs its typelibs to /usr/local/lib, gjs ESM imports like gi://GIRepository?version=2.0 fail with:
  "Typelib file for namespace 'GIRepository', version '2.0' not found"
  even though typelibs exist under /usr/lib{,64}/girepository-1.0.
- The upstream AGS launcher tries to call GIR.Repository.prepend_search_path()/prepend_library_path(),
  but in recent GI (1.86) these are not available from the ESM namespace.

Changes:
- Replace import GIR from "gi://GIRepository?version=2.0" with import GLib from "gi://GLib" in the installed launcher.
- Remove deprecated GIR.Repository.prepend_search_path and prepend_library_path calls.
- Immediately after the GLib import, export GI_TYPELIB_PATH in-process so gjs finds typelibs under /usr/local/lib:
    const __old = GLib.getenv('GI_TYPELIB_PATH');
    GLib.setenv('GI_TYPELIB_PATH', '/usr/local/lib' + (__old ? ':' + __old : ''), true);

Result:
- ags -t overview no longer errors on GIRepository; proceeds until a GTK display is required.
- Behavior is scoped to the AGS process; no user shell env changes required.

Notes:
- Verified by patching an installed launcher on a target host; GI errors resolved.
2025-11-03 12:28:29 -05:00
Donald Williams
93581957d4 Update 01-hypr-pkgs.sh
Rofi wayland now merged with rofi
2025-11-03 12:28:29 -05:00
mio-dokuhaki
6c86adfcdc Fixed README.md for formatting 2025-11-03 12:28:29 -05:00
mio-dokuhaki
0ab997e352 Add missing monitor scripts from Fedora-Hyprland PR #234 2025-11-03 12:28:29 -05:00
mio-dokuhaki
5b427072ae Manually added monitor script documentation from Fedora PR #234 2025-11-03 12:28:29 -05:00
Ja.KooLit
f6a7c27229 Update quickshell.sh 2025-11-03 12:28:25 -05:00
Don Williams
aa140acf69 Don't remove AGS when installing quickshell
Might need as backup when QS has issues.
The Hyprland DOTS now use a wrapper script to determine
which to use for overview

 On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   quickshell.sh
2025-11-02 23:04:57 -05:00
Donald Williams
560ecf3bb6 Merge pull request #325 from JaKooLit/dwilliam62-change-rofi-wayland-to-rofi
Update 01-hypr-pkgs.sh  rofii-waybar is now just rofi
2025-10-05 22:47:53 -04:00
Donald Williams
516f2e609c Update 01-hypr-pkgs.sh
Rofi wayland now merged with rofi
2025-10-05 19:31:36 -04:00
Donald Williams
66cebd2247 Merge pull request #324 from JaKooLit/yuni-fix-readme
Fixed README.md for formatting
2025-10-05 08:55:46 -04:00
mio-dokuhaki
c16b3bc2c0 Fixed README.md for formatting 2025-10-05 16:15:56 +09:00
Donald Williams
ead2235eba Merge pull request #323 from JaKooLit/yuni-fix-monitor-scripts
Fix missing monitor scripts from Fedora-Hyprland PR #234
2025-10-05 01:04:37 -04:00
mio-dokuhaki
729149b7cc Add missing monitor scripts from Fedora-Hyprland PR #234 2025-10-05 13:45:27 +09:00
Donald Williams
efba587fde Merge pull request #322 from JaKooLit/yuni-fedora234-port
Port Fedora-Hyprland PR #234 to Arch-Hyprland main
2025-10-05 00:34:54 -04:00
mio-dokuhaki
c2a30d5a08 Manually added monitor script documentation from Fedora PR #234 2025-10-05 13:06:18 +09:00
Ja.KooLit
ab31c829e2 Update quickshell.sh 2025-07-28 23:45:41 +09:00
Ja.KooLit
5b29ba38d8 Merge pull request #300 from JaKooLit/development
Development to main
2025-07-25 21:32:29 +09:00
JaKooLit
d26c9e30bd minor sddm theme update 2025-07-25 17:13:16 +09:00
JaKooLit
78aa1dbcb2 updated sddm_theme.sh 2025-07-25 01:22:20 +09:00
JaKooLit
47836c2fb9 Preparation for the new SDDM theme simple sddm updated version 2025-07-22 13:07:38 +09:00
JaKooLit
3b2281568c some code cleanup and test if the feed is working to Discord Server 2025-07-20 16:10:53 +09:00
JaKooLit
f185af7389 added cleaning up of ags 2025-07-19 16:48:07 +09:00
JaKooLit
deb545e3b1 updated quickshell script 2025-07-17 22:19:42 +09:00
JaKooLit
5a3895682d added to ran quickshell on qs script 2025-07-17 20:45:44 +09:00
JaKooLit
2fbfecd07a added quickshell script to replace ags for desktop overview 2025-07-17 19:29:16 +09:00
Ja.KooLit
8813180c2d Merge pull request #289 from JaKooLit/development
Updated for new SDDM theme
2025-06-09 08:41:10 +09:00
JaKooLit
2afc7293d5 updated for new SDDM theme 2025-06-09 08:31:03 +09:00
JaKooLit
e433e89754 new sddm theme 2025-06-09 05:31:01 +09:00
Ja.KooLit
b5f342f62c Merge pull request #287 from JaKooLit/main
main to development
2025-06-09 05:18:29 +09:00
Ja.KooLit
0803fb9c0f Update ags.sh 2025-04-12 19:54:05 -04:00
JaKooLit
10d45b5d99 install.sh updated to NOT exit if user choose N on the last part. Removed auto-clone instruction for Fish as it creates a big issue 2025-03-25 00:59:47 +09:00
JaKooLit
3fcfdc0bad cachy-hyprland-settings set to remove first before mako 2025-03-25 00:35:40 +09:00
JaKooLit
5011f153be minor zsh.sh update 2025-03-24 22:08:56 +09:00
JaKooLit
672a700695 adjusted to work with fishy shell 2025-03-24 16:59:35 +09:00
JaKooLit
78310220d4 Updated README re-contributing 2025-03-21 22:25:26 +09:00
JaKooLit
409c612049 updated contributing.md 2025-03-21 22:06:24 +09:00
JaKooLit
aab92dac45 added findutils as dependencies 2025-03-20 15:24:26 +09:00
Ja.KooLit
165b06ea25 Merge pull request #240 from JaKooLit/development
branches synchro
2025-03-20 12:17:54 +09:00
Ja.KooLit
9ff63be4ac Merge pull request #239 from JaKooLit/main
main to development
2025-03-20 12:17:04 +09:00
JaKooLit
807ca99fc2 final adjustment 2025-03-20 12:12:15 +09:00
JaKooLit
63330afe2f added some color codings 2025-03-20 12:09:14 +09:00
JaKooLit
6b88c9cc58 updated hyprland.sh script to check first if hyprland, hypridle and hyprlock is already installed and will skip it. 2025-03-20 11:58:25 +09:00
JaKooLit
ced0769af2 updated sddm background 2025-03-17 21:37:37 +09:00
JaKooLit
26ee47374d added noto-fonts 2025-03-17 19:52:41 +09:00
JaKooLit
14711bacd3 added noto-fonts 2025-03-17 19:16:26 +09:00
JaKooLit
ead1dc65a5 updated readdme. Reverterd to old one 2025-03-15 18:02:26 +09:00
JaKooLit
d29eee9b17 ok this 2025-03-15 17:35:41 +09:00
JaKooLit
6cfb2ef41f ok this should be ok 2025-03-15 17:34:33 +09:00
JaKooLit
7b759fd829 what about this 2025-03-15 17:33:27 +09:00
JaKooLit
585357ca07 testing 2025-03-15 17:32:36 +09:00
Ja.KooLit
1f034b4f22 Merge pull request #233 from JaKooLit/main
main to development
2025-03-15 17:28:32 +09:00
JaKooLit
36e84ebc53 replaced folders//folder with directories/directory 2025-03-13 23:16:04 +09:00
JaKooLit
a4164ca612 disabled blank issue template 2025-03-13 20:24:08 +09:00
JaKooLit
ff2e5a02e3 updated packages message if all essential packages are installed 2025-03-13 19:45:46 +09:00
JaKooLit
eedc504ecd updated discord links 2025-03-13 19:22:24 +09:00
JaKooLit
6820111709 updated install.sh re-active login managers 2025-03-13 00:24:16 +09:00
JaKooLit
ffee7f7b9a minor install.sh update 2025-03-12 23:01:38 +09:00
JaKooLit
9b3df653a9 updated changelogs 2025-03-12 19:48:58 +09:00
JaKooLit
050fd2dcc4 updated ags.sh 2025-03-12 19:45:09 +09:00
Ja.KooLit
2c54155221 Merge pull request #231 from JaKooLit/development
Development to main
2025-03-12 11:54:41 +09:00
JaKooLit
1e1253d1e6 updated readme 2025-03-12 10:55:11 +09:00
JaKooLit
8c0de4d74f updated README 2025-03-12 10:19:03 +09:00
JaKooLit
4212522647 updated uninstall.sh 2025-03-11 23:30:33 +09:00
JaKooLit
9b41ac3eeb updated uninstall.sh to have a wildcards for removing dirs from ~/.config. This will also remove the backups 2025-03-11 19:59:34 +09:00
JaKooLit
750d565ee1 remove unzip from list of packages to unintstall 2025-03-11 19:52:57 +09:00
JaKooLit
79b725deb6 updated uninstall.sh 2025-03-11 19:32:51 +09:00
JaKooLit
cde0a7c6f8 hyprland is brought to last package to remove 2025-03-11 18:30:01 +09:00
JaKooLit
3e0c99b822 updated install.sh 2025-03-11 18:27:08 +09:00
JaKooLit
e2e2e47738 stepped down to pacman -R 2025-03-11 18:19:41 +09:00
JaKooLit
f4a2591cde removed from uninstall.sh
gnome-system-monitor, loupe, xdg-portal-gtk. It seems that gnome is also being uninstalled by this
2025-03-11 18:12:58 +09:00
JaKooLit
817c1d9810 update readme for uninstall.sh script 2025-03-11 14:53:39 +09:00
JaKooLit
d158b95283 Added uninstall script 2025-03-11 14:47:24 +09:00
JaKooLit
a5aab435fd updated 2025-03-11 14:12:45 +09:00
JaKooLit
3c65d6b5b6 forgot to add hyprland :) 2025-03-11 13:57:21 +09:00
JaKooLit
e632e64fce final uninstall script adjustments? 2025-03-11 13:53:25 +09:00
JaKooLit
9e144ad61a switched to a tmp file to remove packages and directories 2025-03-11 13:42:29 +09:00
JaKooLit
92b279e5a0 updated uninstall.sh 2025-03-11 13:38:57 +09:00
JaKooLit
64040f0b34 minor uninstall.sh update 2025-03-11 13:34:18 +09:00
JaKooLit
c93101a99e updated uninstall.sh 2025-03-11 13:24:35 +09:00
JaKooLit
bab65fd28d updated 2025-03-11 13:18:47 +09:00
JaKooLit
ccb1ceb29e made it like a loop 2025-03-11 13:12:20 +09:00
JaKooLit
5fb35a7d3e minor adjustment 2025-03-11 13:07:19 +09:00
JaKooLit
c20d0682d1 updated uninstall.sh 2025-03-11 12:56:53 +09:00
JaKooLit
acc2238bf0 added uninstall.sh 2025-03-11 12:53:03 +09:00
JaKooLit
a74b17a97c update readme 2025-03-11 11:05:41 +09:00
JaKooLit
068d55dd4b dropped pyprland 2025-03-10 14:20:56 +09:00
Ja.KooLit
06187ec5e6 Merge pull request #230 from JaKooLit/main
main to development
2025-03-10 14:11:15 +09:00
installer
f0c32198fc updated readme 2025-03-10 11:59:19 +09:00
JaKooLit
ec1285d8d1 updated dotfiles.sh 2025-03-09 16:13:26 +09:00
Ja.KooLit
3486e33dde Update install.sh 2025-03-09 09:17:56 +09:00
JaKooLit
0bdef7305d changed all the depth 1 to depth=1 2025-03-08 23:16:05 +09:00
JaKooLit
f3d0b3ddfb removed vim in the packages to install 2025-03-08 22:55:20 +09:00
Ja.KooLit
96d3adc1ed Merge pull request #228 from JaKooLit/development
Development to main (whiptail edition)
2025-03-08 20:25:22 +09:00
JaKooLit
e6b78f074a updated confirmation message. Instead of exiting, returning to options 2025-03-08 00:04:14 +09:00
JaKooLit
902464683c updated readme 2025-03-07 19:58:21 +09:00
JaKooLit
3010cc882d updated 2025-03-07 19:23:48 +09:00
JaKooLit
cd16826482 updated install.sh 2025-03-07 19:16:11 +09:00
JaKooLit
96c03b18a2 updated Arch-Hyprland 2025-03-07 19:06:50 +09:00
JaKooLit
11a27c79b9 added some color coding 2025-03-07 18:48:53 +09:00
JaKooLit
e565faf376 dang you github 2025-03-07 16:23:21 +09:00
JaKooLit
17494d5d9d oops 2025-03-07 16:18:09 +09:00
JaKooLit
971a4083ff updated 2025-03-07 16:17:39 +09:00
JaKooLit
432a2070cf added auto clone and auto ran of install.sh 2025-03-07 16:09:47 +09:00
JaKooLit
450267e45b updated 2025-03-07 15:29:54 +09:00
JaKooLit
279536e69b update 2025-03-07 15:14:44 +09:00
JaKooLit
ffaf189402 changed temporarily to development 2025-03-07 15:10:32 +09:00
JaKooLit
e31f518c36 minor update 2025-03-07 15:08:17 +09:00
JaKooLit
3c6090925b adding auto download and install 2025-03-07 15:05:06 +09:00
Ja.KooLit
d345c08e01 Merge pull request #227 from JaKooLit/dev-whiptail
Dev whiptail to development
2025-03-07 14:05:38 +09:00
JaKooLit
36b0732056 some color coding added 2025-03-07 13:24:53 +09:00
JaKooLit
30fb2d1814 added some colors in messages 2025-03-07 11:05:06 +09:00
JaKooLit
213e3757df adjusted to disable sddm option if non-SDDM login managers are active 2025-03-07 10:12:24 +09:00
JaKooLit
e87f6c1beb switched to lsd from eza 2025-03-06 22:56:06 +09:00
JaKooLit
16f1b2418d adjusted install.sh 2025-03-02 13:21:02 +09:00
JaKooLit
54ff099d51 updated login manager warning 2025-03-02 02:17:41 +09:00
JaKooLit
79ce9a266e minor adjustment on dotfiles main script 2025-03-02 00:54:52 +09:00
JaKooLit
ab7063cadc minor install.sh update 2025-03-02 00:09:25 +09:00
JaKooLit
eafb151d0d updated install.sh 2025-03-01 18:42:12 +09:00
JaKooLit
7976768137 minor update install.sh 2025-03-01 18:35:48 +09:00
JaKooLit
59f9364309 updated location of installation of whiptail 2025-02-28 01:15:00 +09:00
JaKooLit
185a7d2db7 updated 2025-02-28 00:59:36 +09:00
JaKooLit
07ab9e9147 updated 2025-02-27 23:45:01 +09:00
JaKooLit
f0186dec33 updated some files 2025-02-27 20:53:19 +09:00
JaKooLit
bf44e13dac updated 2025-02-27 20:44:57 +09:00
JaKooLit
aae594ecff minor adjustment on the readme on how to utilize preset.sh 2025-02-27 16:53:55 +09:00
JaKooLit
c3c4d621ca adjusted to whiptail version 2025-02-27 16:52:27 +09:00
Ja.KooLit
58185e1dd3 Merge pull request #224 from JaKooLit/main
main to development
2025-02-27 16:39:25 +09:00
Ja.KooLit
cc3d20e664 Merge pull request #221 from JaKooLit/main
main to development
2025-02-24 00:55:23 +09:00
47 changed files with 2030 additions and 586 deletions

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1 @@
blank_issues_enabled: false

View File

@@ -1,206 +1,312 @@
## CHANGELOGS ## CHANGELOGS
## Dec 2025
Added:
- `qt5-quickcontrols2` to sddm.sh - User reported w/o this SDDM crashed on login
Fixed:
- AGS v1
- It now does the following:
- Clone upstream AGS 1.9.0.
- Stub out PAM/GUtils via pam.ts.
- Build and install AGS.
- Install the known-good launcher from install-scripts/ags.launcher.com.github.Aylur.ags.
- Points /usr/local/bin/ags at that launcher.
- AGS is no longer removed when you add quickshell.
- AGS overview is a backup if quickshell overview fails.
- meson build errors
- `rofi-wayland` package changed to 'rofi'
- Add missing monitor scripts from Fedora-Hyprland PR #234
## 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
## 22 Feb 2025 ## 22 Feb 2025
- replaced eog with loupe - replaced eog with loupe
- changed url for installing oh-my-zsh to get wider coverage. Some countries are blocking github raw url's - changed url for installing oh-my-zsh to get wider coverage. Some countries are blocking github raw url's
## 20 Feb 2025 ## 20 Feb 2025
- Added nwg-displays for the upcoming Kools dots v2.3.12 - Added nwg-displays for the upcoming Kools dots v2.3.12
## 18 Feb 2025 ## 18 Feb 2025
- Change default zsh theme to adnosterzak - Change default zsh theme to adnosterzak
- pokemon coloscript integrated with fastfetch when opted with pokemon to add some bling - pokemon coloscript integrated with fastfetch when opted with pokemon to add some bling
- additional external oh-my-zsh theme - additional external oh-my-zsh theme
## 06 Feb 2025 ## 06 Feb 2025
- added semi-unattended function. - added semi-unattended function.
- move all the initial questions at the beginning - move all the initial questions at the beginning
## 04 Feb 2025 ## 04 Feb 2025
- Re-coded for better visibility - Re-coded for better visibility
- Offered a new SDDM theme. - Offered a new SDDM theme.
- script will automatically detect if you have nvidia but script still offer if you want to set up for user - script will automatically detect if you have nvidia but script still offer if you want to set up for user
## 29 Jan 2025 ## 29 Jan 2025
- enhanced nvidia.sh to add additional systemd-bootloader entries for nvidia - enhanced nvidia.sh to add additional systemd-bootloader entries for nvidia
## 16 Jan 2025 ## 16 Jan 2025
- updated nvidia.sh to install non-git libva-nvidia-driver - updated nvidia.sh to install non-git libva-nvidia-driver
## 13 Jan 2025 ## 13 Jan 2025
- replaced polkit-gnome with hyprpolkitagent - replaced polkit-gnome with hyprpolkitagent
## 12 Jan 2025 ## 12 Jan 2025
- switch to final version of aylurs-gtk-shell-v1 - switch to final version of aylurs-gtk-shell-v1
## 11 Jan 2025 ## 11 Jan 2025
- added cachyos-hyprland-settings to uninstall - added cachyos-hyprland-settings to uninstall
## 06 Jan 2025 ## 06 Jan 2025
- added copying of modified fastfetch-compact for Arch - added copying of modified fastfetch-compact for Arch
- default theme for oh my zsh theme is now "funky" - default theme for oh my zsh theme is now "funky"
## 26 Dec 2024 ## 26 Dec 2024
- Removal of Bibata Ice cursor on assets since its integrated in the GTK Themes and Icons extract from a separate repo - Removal of Bibata Ice cursor on assets since its integrated in the GTK Themes and Icons extract from a separate repo
- integrated hyprcursor in Bibata Ice Cursor - integrated hyprcursor in Bibata Ice Cursor
## 15 Nov 2024 ## 15 Nov 2024
- revert Aylurs GTK Shell (AGS) to install older version - revert Aylurs GTK Shell (AGS) to install older version
- added aylurs-gtk-shell to uninstall - added aylurs-gtk-shell to uninstall
## 20 Sep 2024 ## 20 Sep 2024
- User will be ask if they want to set Thunar as default file manager if they decided to install it - User will be ask if they want to set Thunar as default file manager if they decided to install it
## 19 Sep 2024 ## 19 Sep 2024
- Added fastfetch on tty. However, will be disabled if user decided to install pokemon colorscripts - Added fastfetch on tty. However, will be disabled if user decided to install pokemon colorscripts
## 18 Sep 2024 ## 18 Sep 2024
- dotfiles will now be downloaded from main or master branch instead of from the releases version. - dotfiles will now be downloaded from main or master branch instead of from the releases version.
## 14 Sep 2024 ## 14 Sep 2024
- remove the final error checks instead, introduced a final check of essential packages to ran Hyprland - remove the final error checks instead, introduced a final check of essential packages to ran Hyprland
## 08 Sep 2024 ## 08 Sep 2024
- Added final error checks on install-logs - Added final error checks on install-logs
## 07 Sep 2024 ## 07 Sep 2024
- added pulseaudio check - added pulseaudio check
- added sof-firmware - added sof-firmware
## 29 Aug 2024 ## 29 Aug 2024
- switched over to non-git wallust package - switched over to non-git wallust package
- improved indentions on some install scripts - improved indentions on some install scripts
## 28 Aug 2024 ## 28 Aug 2024
- Added final check if hyprland is installed and will give an error to user - Added final check if hyprland is installed and will give an error to user
## 26 Aug 2024 ## 26 Aug 2024
- Set to uninstall rofi as conflicts with rofi-wayland - Set to uninstall rofi as conflicts with rofi-wayland
- added nvidia_drm.fbdev=1 for grub - added nvidia_drm.fbdev=1 for grub
## 14 Aug 2024 ## 14 Aug 2024
- added archlinux-keyring on base.sh - added archlinux-keyring on base.sh
## 08 Aug 2024 ## 08 Aug 2024
- Increased to 1 sec delay for installing base-devel [commit](https://github.com/JaKooLit/Arch-Hyprland/commit/7ebfa06c3b186f9bec0bcf268fae401ba67dfc2a) - Increased to 1 sec delay for installing base-devel [commit](https://github.com/JaKooLit/Arch-Hyprland/commit/7ebfa06c3b186f9bec0bcf268fae401ba67dfc2a)
## 07 Jul 2024 ## 07 Jul 2024
- added eza (ls replacement for tty). Note only on .zshrc - added eza (ls replacement for tty). Note only on .zshrc
## 25 Jun 2024 ## 25 Jun 2024
- added fbdev=1 for nvidia.sh on `/etc/modprobe.d/nvidia.conf`. see here `https://wiki.hyprland.org/Nvidia/#drm-kernel-mode-setting` - added fbdev=1 for nvidia.sh on `/etc/modprobe.d/nvidia.conf`. see here `https://wiki.hyprland.org/Nvidia/#drm-kernel-mode-setting`
## 26 May 2024 ## 26 May 2024
- Added fzf for zsh (CTRL R to invoke FZF history) - Added fzf for zsh (CTRL R to invoke FZF history)
## 23 May 2024 ## 23 May 2024
- added qalculate-gtk to work with rofi-calc. Default keybinds (SUPER ALT C) - added qalculate-gtk to work with rofi-calc. Default keybinds (SUPER ALT C)
- added power-profiles-daemon for ROG laptops. Note, I cant add to all since it conflicts with TLP, CPU-Auto-frequency etc. - added power-profiles-daemon for ROG laptops. Note, I cant add to all since it conflicts with TLP, CPU-Auto-frequency etc.
- added fastfetch - added fastfetch
## 22 May 2024 ## 22 May 2024
- nwg-look is now in extra repo so replaced with nwg-look from nwg-look-bin - nwg-look is now in extra repo so replaced with nwg-look from nwg-look-bin
- change the sddm theme destination to /etc/sddm.conf.d/10-theme.conf to theme.conf.user - change the sddm theme destination to /etc/sddm.conf.d/10-theme.conf to theme.conf.user
## 19 May 2024 ## 19 May 2024
- Disabled the auto-login in .zprofile as it causes auto-login to Hyprland if any wayland was chosen. Can enabled if only using hyprland - Disabled the auto-login in .zprofile as it causes auto-login to Hyprland if any wayland was chosen. Can enabled if only using hyprland
## 10 May 2024 ## 10 May 2024
- added wallust-git and remove python-pywal for migration to wallust on Hyprland-Dots v2.2.11 - added wallust-git and remove python-pywal for migration to wallust on Hyprland-Dots v2.2.11
## 08 May 2024 ## 08 May 2024
- Adjusted sddm.sh since it does not respect preset.sh - Adjusted sddm.sh since it does not respect preset.sh
- install.sh have been rearranged so it quits if user choose not to proceed - install.sh have been rearranged so it quits if user choose not to proceed
## 07 May 2024 ## 07 May 2024
- Minor typo change on nvidia.sh - Minor typo change on nvidia.sh
- switch back to cava since installing cava-git keep it hanging (see known-issue on readme) - switch back to cava since installing cava-git keep it hanging (see known-issue on readme)
## 05 May 2024 ## 05 May 2024
- switched to rofi-wayland Extra Repo - switched to rofi-wayland Extra Repo
## 04 May 2024 ## 04 May 2024
- separated fonts installation script for easy debugging - separated fonts installation script for easy debugging
## 03 May 2024 ## 03 May 2024
- added python3-pyquery for new weather-waybar python based on Hyprland-Dots - added python3-pyquery for new weather-waybar python based on Hyprland-Dots
## 02 May 2024 ## 02 May 2024
- Added pyprland (hyprland plugin) - Added pyprland (hyprland plugin)
## 26 Apr 2024 ## 26 Apr 2024
- Updated sddm.sh for Qt6 variant - Updated sddm.sh for Qt6 variant
## 23 Apr 2024 ## 23 Apr 2024
- Dropping swayidle and swaylock in favor of hypridle and hyprlock - Dropping swayidle and swaylock in favor of hypridle and hyprlock
## 20 Apr 2024 ## 20 Apr 2024
- Change default Oh-my-zsh theme to xiong-chiamiov-plus - Change default Oh-my-zsh theme to xiong-chiamiov-plus
## 16 Mar 2024 ## 16 Mar 2024
- added hyprcursor - added hyprcursor
## 1 Mar 2024 ## 1 Mar 2024
- replaced sddm-git with sddm - replaced sddm-git with sddm
## 11 Jan 2024 ## 11 Jan 2024
- dropped wlsunset - dropped wlsunset
## 05 Jan 2024 ## 05 Jan 2024
- Added a preset feature - Added a preset feature
- Added templates for contributing, and reporting, etc - Added templates for contributing, and reporting, etc
## 01 Jan 2024 ## 01 Jan 2024
- Re-coded complete and test - Re-coded complete and test
- Added to spice up pacman.conf including adding of ILoveCandy on it :) - Added to spice up pacman.conf including adding of ILoveCandy on it :)
## 30 Dec 2023 ## 30 Dec 2023
- Install scripts reconstructed - Install scripts reconstructed
## 29 December 2023 ## 29 December 2023
- Remove dunst in favor of swaync. NOTE: Part of the script is to also uninstall mako and dunst (if installed) as on my experience, dunst is sometimes taking over the notification even if it is not set to start - Remove dunst in favor of swaync. NOTE: Part of the script is to also uninstall mako and dunst (if installed) as on my experience, dunst is sometimes taking over the notification even if it is not set to start
## 16 Dec 2023 ## 16 Dec 2023
- zsh theme switched to `agnoster` theme by default - zsh theme switched to `agnoster` theme by default
- pywal tty color change disabled by default - pywal tty color change disabled by default
## 13 Dec 2023 ## 13 Dec 2023
- switched hyprland to Extra Repo hyprland (both nvidia and non-nvidia). Seeing they are updating all the time :) - switched hyprland to Extra Repo hyprland (both nvidia and non-nvidia). Seeing they are updating all the time :)
## 11 Dec 2023 ## 11 Dec 2023
- Changing over to zsh automatically if user opted - Changing over to zsh automatically if user opted
- If chose to install zsh and have no login manager, zsh auto login will auto start Hyprland - If chose to install zsh and have no login manager, zsh auto login will auto start Hyprland
- added as optional, with zsh, pokemon colorscripts - added as optional, with zsh, pokemon colorscripts
- improved zsh install scripts, so even the existing zsh users of can still opt for zsh and oh-my-zsh installation :) - improved zsh install scripts, so even the existing zsh users of can still opt for zsh and oh-my-zsh installation :)
## 03 Dec 2023 ## 03 Dec 2023
- Added kvantum for qt apps theming - Added kvantum for qt apps theming
- return of wlogout due to theming issues of rofi-power - return of wlogout due to theming issues of rofi-power
## 01 Dec 2023 ## 01 Dec 2023
- Added pipewire to install - Added pipewire to install
## 30 Nov 2023 ## 30 Nov 2023
- switched to swaylock-effects-git as non-git does not seem to work - switched to swaylock-effects-git as non-git does not seem to work
## 29 Nov 2023 ## 29 Nov 2023
- nvidia.sh edited to remove hyprland-nvidia-git as well - nvidia.sh edited to remove hyprland-nvidia-git as well
## 26 Nov 2023 ## 26 Nov 2023
- nvidia - Move to hyprland-git. see [`commit`](https://github.com/hyprwm/Hyprland/commit/cd96ceecc551c25631783499bd92c6662c5d3616) - nvidia - Move to hyprland-git. see [`commit`](https://github.com/hyprwm/Hyprland/commit/cd96ceecc551c25631783499bd92c6662c5d3616)
## 25 Nov 2023 ## 25 Nov 2023
- drop wlogout since Hyprland-Dots v2.1.9 uses rofi-power - drop wlogout since Hyprland-Dots v2.1.9 uses rofi-power
## 23-Nov-2023 ## 23-Nov-2023
- Added Bibata cursor to install if opted for GTK Themes. However, it is not pre-applied. Use nwg-look utility to apply - Added Bibata cursor to install if opted for GTK Themes. However, it is not pre-applied. Use nwg-look utility to apply
## 19-Nov-2023 ## 19-Nov-2023
- Adjust dotfiles script to download from releases instead of from upstream - Adjust dotfiles script to download from releases instead of from upstream

81
CODE_OF_CONDUCT.es.md Normal file
View File

@@ -0,0 +1,81 @@
# Código de Conducta del Pacto del Colaborador
[Ver versión en inglés](./CODE_OF_CONDUCT.md)
## Nuestro compromiso
Nosotros, como miembros, contribuyentes y líderes, nos comprometemos a hacer que la participación en nuestra comunidad sea una experiencia libre de acoso para todas las personas, sin distinción de edad, complexión, discapacidad visible o invisible, etnia, características sexuales, identidad y expresión de género, nivel de experiencia, educación, situación socioeconómica, nacionalidad, apariencia personal, raza, religión, orientación o identidad sexual.
Nos comprometemos a actuar e interactuar de maneras que contribuyan a una comunidad abierta, acogedora, diversa, inclusiva y saludable.
## Nuestros estándares
Ejemplos de comportamiento que contribuye a un entorno positivo para nuestra comunidad incluyen:
- Demostrar empatía y amabilidad hacia otras personas.
- Ser respetuoso con opiniones, puntos de vista y experiencias que difieran de las nuestras.
- Dar y aceptar con gracia retroalimentación constructiva.
- Asumir la responsabilidad y disculparse ante quienes se vean afectados por nuestros errores, y aprender de la experiencia.
- Centrarse en lo que es mejor no solo para nosotros como individuos, sino para la comunidad en su conjunto.
Ejemplos de comportamiento inaceptable incluyen:
- El uso de lenguaje o imágenes sexualizadas, y cualquier tipo de atención o insinuación sexual.
- Troleo, comentarios insultantes o despectivos, y ataques personales o políticos.
- Acoso público o privado.
- Publicación de información privada de otras personas, como direcciones físicas o de correo electrónico, sin su permiso explícito.
- Otra conducta que, razonablemente, pudiera considerarse inapropiada en un entorno profesional.
## Responsabilidades de cumplimiento
Los líderes de la comunidad son responsables de aclarar y hacer cumplir nuestros estándares de comportamiento aceptable y tomarán medidas correctivas apropiadas y justas en respuesta a cualquier comportamiento que consideren inapropiado, amenazante, ofensivo o dañino.
Los líderes de la comunidad tienen el derecho y la responsabilidad de eliminar, editar o rechazar comentarios, confirmaciones de cambios (commits), código, ediciones del wiki, incidencias y otras contribuciones que no estén alineadas con este Código de Conducta, y comunicarán los motivos de las decisiones de moderación cuando corresponda.
## Alcance
Este Código de Conducta se aplica a todos los espacios de la comunidad y también cuando una persona representa oficialmente a la comunidad en espacios públicos. Ejemplos de representar a nuestra comunidad incluyen usar una dirección de correo electrónico oficial, publicar a través de una cuenta oficial en redes sociales o actuar como representante designado en un evento en línea o presencial.
## Cumplimiento
Los casos de comportamiento abusivo, acosador o de otra forma inaceptable pueden ser reportados a los líderes de la comunidad responsables del cumplimiento en mail[at]ml4w.com. Todas las quejas serán revisadas e investigadas de manera rápida y justa.
Todos los líderes de la comunidad están obligados a respetar la privacidad y seguridad de quien reporte cualquier incidente.
## Guías de aplicación
Los líderes de la comunidad seguirán estas Guías de Impacto Comunitario para determinar las consecuencias por cualquier acción que consideren en violación de este Código de Conducta:
### 1. Corrección
Impacto comunitario: Uso de lenguaje inapropiado u otro comportamiento considerado no profesional o no bienvenido en la comunidad.
Consecuencia: Una advertencia privada y por escrito de parte de los líderes de la comunidad, brindando claridad sobre la naturaleza de la violación y una explicación de por qué el comportamiento fue inapropiado. Se puede solicitar una disculpa pública.
### 2. Advertencia
Impacto comunitario: Una violación por un incidente único o una serie de acciones.
Consecuencia: Una advertencia con consecuencias para comportamientos continuados. Ninguna interacción con las personas involucradas, incluida la interacción no solicitada con quienes hacen cumplir el Código de Conducta, por un período de tiempo especificado. Esto incluye evitar interacciones en espacios de la comunidad así como en canales externos como redes sociales. Violaciones a estos términos pueden llevar a una suspensión temporal o permanente.
### 3. Suspensión temporal
Impacto comunitario: Una violación grave de los estándares de la comunidad, incluido el comportamiento inapropiado sostenido.
Consecuencia: Una suspensión temporal de cualquier tipo de interacción o comunicación pública con la comunidad por un período de tiempo especificado. No se permite interacción pública o privada con las personas involucradas, incluida la interacción no solicitada con quienes hacen cumplir el Código de Conducta, durante este período. Violar estos términos puede llevar a una suspensión permanente.
### 4. Suspensión permanente
Impacto comunitario: Demostrar un patrón de violación de los estándares de la comunidad, incluido el comportamiento inapropiado sostenido, acoso a una persona o agresión o desprecio hacia clases de individuos.
Consecuencia: Suspensión permanente de cualquier tipo de interacción pública dentro de la comunidad.
## Atribución
Este Código de Conducta está adaptado del [Contributor Covenant][homepage], versión 2.0, disponible en https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Las Guías de Impacto Comunitario se inspiraron en la [escala de aplicación del código de conducta de Mozilla](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
Para respuestas a preguntas comunes sobre este código de conducta, vea las preguntas frecuentes en https://www.contributor-covenant.org/faq. Traducciones disponibles en https://www.contributor-covenant.org/translations.

View File

@@ -0,0 +1,148 @@
# Guía para Mensajes de Commit
[Ver versión en inglés](./COMMIT_MESSAGE_GUIDELINES.md)
Un buen mensaje de commit debe ser descriptivo y aportar contexto sobre los cambios realizados. Esto facilita entender y revisar los cambios en el futuro.
## Recomendaciones
- Empieza con un resumen breve de los cambios del commit.
- Usa el modo imperativo en el resumen, como si dieras una instrucción. Por ejemplo, "Add feature" en lugar de "Added feature".
- Proporciona detalles adicionales en el cuerpo del mensaje, si es necesario: motivo del cambio, impacto, dependencias añadidas o eliminadas, etc.
- Mantén cada línea en 72 caracteres o menos para que sea fácil de leer en la salida de `git log`.
### Ejemplos de buenos mensajes
- "Add authentication feature for user login"
- "Fix bug causing application to crash on startup"
- "Update documentation for API endpoints"
Recordatorio: escribir mensajes de commit descriptivos ahorra tiempo en el futuro y ayuda a otras personas a entender los cambios hechos al código.
## Tipos de commit
A continuación, una lista (ampliable) de tipos de commit que puedes usar:
`feat`: Añade una característica nueva al proyecto
```markdown
feat: Add multi-image upload support
```
`fix`: Corrige un error o problema en el proyecto
```markdown
fix: Fix bug causing application to crash on startup
```
`docs`: Cambios en documentación
```markdown
docs: Update documentation for API endpoints
```
`style`: Cambios cosméticos o de formato (colores, formateo de código, etc.)
```markdown
style: Update colors and formatting
```
`refactor`: Cambios internos que no alteran el comportamiento, pero mejoran calidad/mantenibilidad
```markdown
refactor: Remove unused code
```
`test`: Añadir o modificar tests
```markdown
test: Add tests for new feature
```
`chore`: Cambios que no encajan en otras categorías (actualizar dependencias, configurar build, etc.)
```markdown
chore: Update dependencies
```
`perf`: Mejoras de rendimiento
```markdown
perf: Improve performance of image processing
```
`security`: Aborda temas de seguridad
```markdown
security: Update dependencies to address security issues
```
`merge`: Fusiones de ramas
```markdown
merge: Merge branch 'feature/branch-name' into develop
```
`revert`: Revertir un commit previo
```markdown
revert: Revert "Add feature"
```
`build`: Cambios en el sistema de build o dependencias
```markdown
build: Update dependencies
```
`ci`: Cambios en la integración continua (CI)
```markdown
ci: Update CI configuration
```
`config`: Cambios en archivos de configuración
```markdown
config: Update configuration files
```
`deploy`: Cambios en el proceso de despliegue
```markdown
deploy: Update deployment scripts
```
`init`: Inicialización de repositorio o proyecto
```markdown
init: Initialize project
```
`move`: Mover archivos o directorios
```markdown
move: Move files to new directory
```
`rename`: Renombrar archivos o directorios
```markdown
rename: Rename files
```
`remove`: Eliminar archivos o directorios
```markdown
remove: Remove files
```
`update`: Actualización de código, dependencias u otros componentes
```markdown
update: Update code
```
Estos son solo ejemplos; puedes definir tipos personalizados si los usas de forma consistente y con mensajes claros y descriptivos.
**Importante:** Si planeas usar un tipo de commit personalizado que no esté en la lista, añádelo aquí para que otras personas lo entiendan también. Crea un pull request para incluirlo en este archivo.

58
CONTRIBUTING.es.md Normal file
View File

@@ -0,0 +1,58 @@
# Guía para Contribuir a KooL Hyprland Projects (Arch)
[Ver versión en inglés](./CONTRIBUTING.md)
¡Gracias por tu interés en contribuir! Aceptamos correcciones de errores, nuevas características, mejoras de documentación y otras mejoras generales.
## Primeros pasos
1. Haz un fork del repositorio (rama `development`) en tu cuenta de GitHub.
- Botón **Fork** o [enlace directo](https://github.com/JaKooLit/Arch-Hyprland/fork).
- Desmarca la opción de copiar solo la rama `main` para incluir `development` y otras ramas.
2. Clona tu fork en tu equipo:
```bash
git clone --depth=1 -b development https://github.com/JaKooLit/Arch-Hyprland.git
```
3. Crea una rama para tus cambios:
```bash
git checkout -b tu-rama
```
4. Realiza tus cambios y crea un commit con mensaje descriptivo (sigue la [guía de commits](./COMMIT_MESSAGE_GUIDELINES.md)):
```bash
git commit -m "feat: add a new feature"
```
5. Sube tu rama a tu fork:
```bash
git push origin tu-rama
```
6. Abre un **pull request** contra `development`.
- Usa la [plantilla de PR](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md) y añade etiquetas relevantes.
## Directrices
- Sigue el estilo de código del proyecto.
- Actualiza la documentación cuando sea necesario.
- Añade tests si aplica y verifica que pasen.
- Mantén el PR enfocado; evita cambios no relacionados.
- Revisa estos archivos útiles:
- [bug.yml](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/bug.yml)
- [feature.yml](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/feature.yml)
- [documentation-update.yml](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/ISSUE_TEMPLATE/documentation-update.yml)
- [PULL_REQUEST_TEMPLATE.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md)
- [COMMIT_MESSAGE_GUIDELINES.md](./COMMIT_MESSAGE_GUIDELINES.md)
- [CONTRIBUTING.md](./CONTRIBUTING.md)
- [LICENSE](https://github.com/JaKooLit/Arch-Hyprland/blob/main/LICENSE.md)
- [README.md](https://github.com/JaKooLit/Arch-Hyprland/blob/main/README.md)
## Contacto
Para preguntas, usa [GitHub Discussions](https://github.com/JaKooLit/Arch-Hyprland/discussions) o el [Servidor de Discord](https://discord.gg/kool-tech-world).

View File

@@ -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)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 589 KiB

141
README.md
View File

@@ -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>
![GitHub Repo stars](https://img.shields.io/github/stars/JaKooLit/Arch-Hyprland?style=for-the-badge&color=cba6f7) ![GitHub last commit](https://img.shields.io/github/last-commit/JaKooLit/Arch-Hyprland?style=for-the-badge&color=b4befe) ![GitHub repo size](https://img.shields.io/github/repo-size/JaKooLit/Arch-Hyprland?style=for-the-badge&color=cba6f7) <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> ![GitHub Repo stars](https://img.shields.io/github/stars/JaKooLit/Arch-Hyprland?style=for-the-badge&color=cba6f7) ![GitHub last commit](https://img.shields.io/github/last-commit/JaKooLit/Arch-Hyprland?style=for-the-badge&color=b4befe) ![GitHub repo size](https://img.shields.io/github/repo-size/JaKooLit/Arch-Hyprland?style=for-the-badge&color=cba6f7) <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>&ensp;&ensp; <a href="https://github.com/JaKooLit/Hyprland-Dots/wiki"><kbd><br>Wiki<br></kbd></a>&ensp;&ensp;
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds"><kbd><br>Keybinds<br></kbd></a>&ensp;&ensp; <a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds"><kbd><br>Keybinds<br></kbd></a>&ensp;&ensp;
<a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ"><kbd><br>FAQ<br></kbd></a>&ensp;&ensp; <a href="https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ"><kbd><br>FAQ<br></kbd></a>&ensp;&ensp;
<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' /> [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/jakoolit)
or
[!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/JaKooLit) [!["Buy Me A Coffee"](https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png)](https://www.buymeacoffee.com/JaKooLit)
Or you can donate cryto on my btc wallet :)
> 1N3MeV2dsX6gQB42HXU6MF2hAix1mqjo8i
![Bitcoin](https://github.com/user-attachments/assets/7ed32f8f-c499-46f0-a53c-3f6fbd343699)
#### 📹 Youtube videos (Click to view and watch the playlist) 📹 #### 📹 Youtube videos (Click to view and watch the playlist) 📹
[![Youtube Playlist Thumbnail](https://raw.githubusercontent.com/JaKooLit/screenshots/main/Youtube.png)](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t) [![Youtube Playlist Thumbnail](https://raw.githubusercontent.com/JaKooLit/screenshots/main/Youtube.png)](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t)
## 🥰🥰 💖💖 👍👍👍 ## 🥰🥰 💖💖 👍👍👍
[![Stargazers over time](https://starchart.cc/JaKooLit/Arch-Hyprland.svg?variant=adaptive)](https://starchart.cc/JaKooLit/Arch-Hyprland) [![Stargazers over time](https://starchart.cc/JaKooLit/Arch-Hyprland.svg?variant=adaptive)](https://starchart.cc/JaKooLit/Arch-Hyprland)

View File

@@ -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)

View File

@@ -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

View File

@@ -35,7 +35,6 @@ packages=(
"hypridle" "hypridle"
"xdg-desktop-portal-hyprland" "xdg-desktop-portal-hyprland"
"hyprpolkitagent" "hyprpolkitagent"
"pyprland"
) )
# rotating stars progress # rotating stars progress

View File

@@ -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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1007 KiB

After

Width:  |  Height:  |  Size: 1.5 MiB

50
auto-install.sh Normal file
View 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

View File

@@ -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}

View File

@@ -25,23 +25,24 @@ 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
swww swww
unzip # needed later unzip # needed later
uwsm # In case someone selects USWM login
wallust wallust
waybar waybar
wget wget
@@ -68,7 +69,6 @@ hypr_package_2=(
nwg-displays nwg-displays
pacman-contrib pacman-contrib
qalculate-gtk qalculate-gtk
vim
yt-dlp yt-dlp
) )
@@ -76,8 +76,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 +85,20 @@ 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 "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # 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)_hypr-pkgs.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypr-pkgs.log"
@@ -114,7 +120,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"

View File

@@ -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:"

View File

@@ -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"

View File

@@ -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"

View File

@@ -0,0 +1,18 @@
#!/usr/bin/gjs -m
import { exit, programArgs, programInvocationName } from "system";
import GLib from "gi://GLib";
// Ensure GI can see typelibs in /usr/local and the system girepository
GLib.setenv("GI_TYPELIB_PATH", "/usr/local/lib:/usr/lib/girepository-1.0", true);
imports.package.init({
name: "com.github.Aylur.ags",
version: "1.9.0",
prefix: "/usr/local",
libdir: "/usr/local/lib",
});
const module = await import("resource:///com/github/Aylur/ags/main.js");
const exitCode = await module.main([programInvocationName, ...programArgs]);
exit(exitCode);

View File

@@ -26,29 +26,28 @@ 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 "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # 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
# Fail early and make pipelines fail if any command fails
set -eo pipefail
# 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"
MLOG="install-$(date +%d-%H%M%S)_ags2.log" MLOG="install-$(date +%d-%H%M%S)_ags2.log"
# Check if AGS is installed # NOTE: We intentionally do NOT run `ags -v` here, because a broken AGS
if command -v ags &>/dev/null; then # installation (missing GUtils, etc.) would crash gjs and spam errors
AGS_VERSION=$(ags -v | awk '{print $NF}') # during install. We always (re)install v1.9.0 when this script is run.
if [[ "$AGS_VERSION" == "1.9.0" ]]; then
printf "${INFO} ${MAGENTA}Aylur's GTK Shell v1.9.0${RESET} is already installed. Skipping installation."
printf "\n%.0s" {1..2}
exit 0
fi
fi
# Installation of main components # Installation of main components
printf "\n%s - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies \n" "${NOTE}" printf "\n%s - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies \n" "${NOTE}"
@@ -62,25 +61,92 @@ 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 compile AGS
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
# Patch tsconfig to avoid TS5107 failure (moduleResolution=node10 deprecation)
if [ -f tsconfig.json ]; then
# 1) Ensure ignoreDeprecations is present
if ! grep -q '"ignoreDeprecations"[[:space:]]*:' tsconfig.json; then
sed -i 's/"compilerOptions":[[:space:]]*{/"compilerOptions": {\n "ignoreDeprecations": "6.0",/' tsconfig.json
fi
# 2) Bump moduleResolution from node10 to node16 if present
if grep -q '"moduleResolution"[[:space:]]*:[[:space:]]*"node10"' tsconfig.json; then
sed -i 's/"moduleResolution"[[:space:]]*:[[:space:]]*"node10"/"moduleResolution": "node16"/' tsconfig.json || true
fi
# 3) Fallback with Node to rewrite JSON if sed failed to catch patterns
if grep -q '"moduleResolution"[[:space:]]*:[[:space:]]*"node10"' tsconfig.json; then
if command -v node >/dev/null 2>&1; then
node -e '\n const fs = require("fs");\n const p = "tsconfig.json";\n const j = JSON.parse(fs.readFileSync(p, "utf8"));\n j.compilerOptions = j.compilerOptions || {};\n if (j.compilerOptions.moduleResolution === "node10") j.compilerOptions.moduleResolution = "node16";\n if (j.compilerOptions.ignoreDeprecations === undefined) j.compilerOptions.ignoreDeprecations = "6.0";\n fs.writeFileSync(p, JSON.stringify(j, null, 2));\n '
fi
fi
# Log what we ended up with for troubleshooting
echo "== tsconfig.json after patch ==" >> "$MLOG"
grep -n 'moduleResolution\|ignoreDeprecations' tsconfig.json >> "$MLOG" || true
fi
# Replace pam.ts with a stub that does NOT depend on GUtils at all.
# The desktop overview does not use PAM, and GUtils typelib support is
# inconsistent across distros, so we disable these helpers instead of
# crashing at startup when the typelib is missing.
if [ -f src/utils/pam.ts ]; then
printf "%s Replacing src/utils/pam.ts with PAM stub (no GUtils dependency)...\\n" "${NOTE}" | tee -a "$MLOG"
cat > src/utils/pam.ts <<'PAM_STUB'
// Stubbed PAM auth for AGS installed via Arch-Hyprland.
// The desktop overview does not use PAM, and GUtils typelib support
// is unreliable across distros, so we disable these helpers here.
export function authenticate(password: string): Promise<number> {
return Promise.reject(new Error("PAM authentication disabled on this system (no GUtils)"));
}
export function authenticateUser(username: string, password: string): Promise<number> {
return Promise.reject(new Error("PAM authentication disabled on this system (no GUtils)"));
}
PAM_STUB
fi
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"
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"
# Abort here on build/install failure so we do NOT install a broken launcher
# or report success when AGS binaries are missing.
mv "$MLOG" ../Install-Logs/ || true
cd ..
exit 1
fi fi
LAUNCHER_DIR="/usr/local/share/com.github.Aylur.ags"
LAUNCHER_PATH="$LAUNCHER_DIR/com.github.Aylur.ags"
sudo mkdir -p "$LAUNCHER_DIR"
# Install the known-good launcher we captured from a working system.
# This JS entry script uses GLib to set GI_TYPELIB_PATH and does not
# depend on GIRepository, which avoids missing-typelib crashes.
LAUNCHER_SRC="$SCRIPT_DIR/ags.launcher.com.github.Aylur.ags"
if [ -f "$LAUNCHER_SRC" ]; then
sudo install -m 755 "$LAUNCHER_SRC" "$LAUNCHER_PATH"
else
printf "${WARN} Saved launcher not found at %s; leaving Meson-installed launcher untouched.\\n" "$LAUNCHER_SRC" | tee -a "$MLOG"
fi
# Ensure /usr/local/bin/ags points to the JS entry script.
sudo mkdir -p /usr/local/bin
sudo ln -srf "$LAUNCHER_PATH" /usr/local/bin/ags
printf "${OK} AGS launcher installed.\\n"
# Move logs to Install-Logs directory # Move logs to Install-Logs directory
mv "$MLOG" ../Install-Logs/ || true mv "$MLOG" ../Install-Logs/ || true
cd .. cd ..

View 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}

View File

@@ -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"

View 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}

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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}

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -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
View 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}

View File

@@ -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"

View File

@@ -3,9 +3,11 @@
# 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
qt5-quickcontrols2
sddm sddm
) )
@@ -19,40 +21,45 @@ 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 "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # 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)_sddm.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log"
# Install SDDM and SDDM theme # Install SDDM and SDDM theme
printf "${NOTE} Installing sddm and dependencies........\n" printf "${NOTE} Installing sddm and dependencies........\n"
for package in "${sddm[@]}"; do for package in "${sddm[@]}"; do
install_package "$package" "$LOG" install_package "$package" "$LOG"
done done
printf "\n%.0s" {1..1} printf "\n%.0s" {1..1}
# Check if other login managers installed and disabling its service before enabling sddm # Check if other login managers installed and disabling its service before enabling sddm
for login_manager in "${login[@]}"; do for login_manager in "${login[@]}"; do
if pacman -Qs "$login_manager" > /dev/null 2>&1; then if pacman -Qs "$login_manager" >/dev/null 2>&1; then
sudo systemctl disable "$login_manager.service" >> "$LOG" 2>&1 sudo systemctl disable "$login_manager.service" >>"$LOG" 2>&1
echo "$login_manager disabled." >> "$LOG" 2>&1 echo "$login_manager disabled." >>"$LOG" 2>&1
fi fi
done done
# Double check with systemctl # Double check with systemctl
for manager in "${login[@]}"; do for manager in "${login[@]}"; do
if systemctl is-active --quiet "$manager" > /dev/null 2>&1; then if systemctl is-active --quiet "$manager" >/dev/null 2>&1; then
echo "$manager is active, disabling it..." >> "$LOG" 2>&1 echo "$manager is active, disabling it..." >>"$LOG" 2>&1
sudo systemctl disable "$manager" --now >> "$LOG" 2>&1 sudo systemctl disable "$manager" --now >>"$LOG" 2>&1
fi fi
done done
@@ -61,6 +68,10 @@ printf "${INFO} Activating sddm service........\n"
sudo systemctl enable sddm sudo systemctl enable sddm
wayland_sessions_dir=/usr/share/wayland-sessions wayland_sessions_dir=/usr/share/wayland-sessions
[ ! -d "$wayland_sessions_dir" ] && { printf "$CAT - $wayland_sessions_dir not found, creating...\n"; sudo mkdir "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; } [ ! -d "$wayland_sessions_dir" ] && {
printf "$CAT - $wayland_sessions_dir not found, creating...\n"
sudo mkdir "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"
}
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}

View File

@@ -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}

View 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}

View File

@@ -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"

View File

@@ -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"

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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}

View File

@@ -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
View 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}