433 Commits

Author SHA1 Message Date
Don Williams
43adf21548 Arch(dev): AGS wrapper hardening — cd $HOME, proper --, GI paths, ensure ESM perms
- Wrapper now cds to $HOME, forwards args via "--" to avoid gjs parsing, expands GI_TYPELIB_PATH (incl. /usr/lib64/ags:/usr/lib/ags), and sets LD_LIBRARY_PATH for /usr/local libs.
- Ensure ESM entry com.github.Aylur.ags is 0644 under /usr/local/share and /usr/share.

Aligns Arch installer with Fedora fix; resolves "unknown option" and read-permission issues for `ags -t overview`.
2025-11-03 22:58:08 -05:00
Don Williams
7afaf65973 Arch: robust AGS v1.9.0 fix — env wrapper + hardened launcher patching
Problem
- AGS v1 under GJS ESM ignores GIR Repository.prepend_*; typelibs in /usr/local aren’t discovered reliably.
- On Arch, users may install AGS into /usr/local while system typelibs can also live under /usr/lib64/ags or /usr/lib/ags.

Solution
- Keep the tolerant ESM patcher (no-op safe): remove deprecated GIR repo calls; ensure GLib import; inject GI_TYPELIB_PATH via GLib.setenv when editing the ESM main.
- Add a distro-agnostic wrapper at /usr/local/bin/ags that sets:
  - GI_TYPELIB_PATH=/usr/local/lib64/girepository-1.0:/usr/local/lib/girepository-1.0:/usr/lib64/girepository-1.0:/usr/lib/girepository-1.0:/usr/local/lib64:/usr/local/lib:/usr/lib64/ags:/usr/lib/ags:$GI_TYPELIB_PATH
  - LD_LIBRARY_PATH=/usr/local/lib64:/usr/local/lib:$LD_LIBRARY_PATH
  Then execs: /usr/bin/gjs -m "$MAIN_JS" (resolved under /usr/local/share or /usr/share).

Why
- Ensures AGS v1 runs reliably on Arch without depending solely on fragile in-place edits; mirrors the working Fedora fix.

File
- install-scripts/ags.sh
2025-11-03 17:08:58 -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
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
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
5a459d35e7 updated hyprland-git installer 2025-03-01 16:31:25 +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
JaKooLit
ea2125a467 updated pokomen.sh 2025-02-25 12:00:59 +09:00
JaKooLit
1182b17d0b updated zsh_pokemon.sh 2025-02-25 01:18:03 +09:00
Ja.KooLit
cc3d20e664 Merge pull request #221 from JaKooLit/main
main to development
2025-02-24 00:55:23 +09:00
JaKooLit
b16f579e86 applying of sddm theme fixed 2025-02-24 00:16:00 +09:00
JaKooLit
11f2b0c6fe it seems like installer is breaking pokemon 2025-02-23 20:43:18 +09:00
JaKooLit
2ee27f6959 updated pokemon 2025-02-23 16:35:54 +09:00
Ja.KooLit
6c5c4b22b8 Merge pull request #220 from JaKooLit/development
Development to main
2025-02-23 14:47:35 +09:00
Ja.KooLit
c1b872865a Merge branch 'main' into development 2025-02-23 14:47:24 +09:00
JaKooLit
8d92fdd1af added Fantasque Sans Mono Nerd for Kitty 2025-02-23 12:36:23 +09:00
JaKooLit
07f5053b2b added Victor Mono Font for proper hyprlock font rendering for Dots v2.3.12 2025-02-23 11:46:02 +09:00
JaKooLit
e4e488fc4c changed url for installing oh-my-zsh to get wider coverage. Some countries are blocking github raw url's 2025-02-22 13:01:24 +09:00
JaKooLit
1970cca375 testing so it will be more compatible for countries that block github raw 2025-02-22 12:04:06 +09:00
JaKooLit
2828811ad8 updated zsh.rc 2025-02-22 11:58:03 +09:00
JaKooLit
653ca995ae updated zsh_pokemon.sh 2025-02-22 11:07:18 +09:00
JaKooLit
f4fcd6deed minor update 2025-02-22 10:34:23 +09:00
JaKooLit
52531e7d1f replaced eog with loupe 2025-02-22 01:04:46 +09:00
Ja.KooLit
5db40aafa3 Merge pull request #219 from JaKooLit/main
fix zsh theme issue
2025-02-21 15:45:51 +09:00
JaKooLit
1d2126b7ff fix zsh theme issue 2025-02-21 15:03:15 +09:00
Ja.KooLit
622e09c781 Merge pull request #217 from JaKooLit/before-push
Main to development
2025-02-20 23:33:21 +09:00
Ja.KooLit
5baaec6f12 Merge branch 'development' into before-push 2025-02-20 23:33:06 +09:00
JaKooLit
941b24ed1d Added nwg-displays for the upcoming Kools dots v2.3.12 2025-02-20 22:37:49 +09:00
JaKooLit
cfab030ca2 added initial shell check first if zsh already inorder to skip changing to zsh 2025-02-19 20:23:33 +09:00
Ja.KooLit
8ea3dc390c Merge pull request #215 from brockar/main
[fix] add a line break to ask for password
2025-02-19 13:39:08 +09:00
brockar
6c1b941fa1 [fix] add a line break to ask for password 2025-02-19 00:58:26 -03:00
Ja.KooLit
3e7f5664e5 Update 01-hypr-pkgs.sh 2025-02-19 08:46:37 +09:00
JaKooLit
af4d191ee3 added mercurial for the new oh my zsh theme 2025-02-19 00:09:49 +09:00
JaKooLit
5fa3096724 Change default zsh theme to adnosterzak, pokemon coloscript integrated with fastfetch when opted with pokemon to add some bling, additional external oh-my-zsh theme 2025-02-18 11:59:47 +09:00
installer
d00addba58 updated Readme 2025-02-16 17:51:39 +09:00
JaKooLit
e28b5940cb updated sddm_theme.sh 2025-02-16 14:19:16 +09:00
JaKooLit
49f8cef0be updated sddm theme 2025-02-16 13:01:39 +09:00
JaKooLit
ac4ffc922a readme updated 2025-02-11 22:48:34 +09:00
JaKooLit
c93e1861d0 updated pokemon.sh 2025-02-10 18:18:39 +09:00
JaKooLit
4185638900 readme updated 2025-02-10 00:28:26 +09:00
JaKooLit
a4f16e24cb fixed sddm theme.sh 2025-02-09 10:35:55 +09:00
JaKooLit
d09e2dfd09 updated secondary check for disable other login managers 2025-02-09 09:40:32 +09:00
JaKooLit
9695a4c75b updated pipewire.sh and sddm.sh 2025-02-09 08:41:59 +09:00
JaKooLit
68af696789 updated pipewire.sh 2025-02-09 00:53:14 +09:00
JaKooLit
b2f43b18fd minor sddm.sh tweak 2025-02-09 00:32:33 +09:00
JaKooLit
f450ddd382 updated assets-hyprland install 2025-02-08 10:43:52 +09:00
JaKooLit
04c090a828 added 2025 2025-02-08 03:24:42 +09:00
Ja.KooLit
bb58ae9940 Merge pull request #204 from JaKooLit/development
Development to main
2025-02-07 21:38:20 +09:00
JaKooLit
39e515f9b0 updated since many conflicts 2025-02-07 21:35:56 +09:00
JaKooLit
8842d72a79 updated sddm and sddm theme 2025-02-07 21:27:54 +09:00
JaKooLit
573321fd5f updated sddm_theme.sh 2025-02-07 20:21:04 +09:00
JaKooLit
e766866207 updated install scripts for AUR 2025-02-07 19:57:20 +09:00
JaKooLit
fb9b3a8205 updated preset.sh 2025-02-07 19:18:17 +09:00
JaKooLit
3420522393 updated screenshot of install scripts 2025-02-07 01:29:31 +09:00
JaKooLit
409aadf655 RC1 2025-02-07 00:17:04 +09:00
JaKooLit
dcc282968e updated sddm_theme.sh 2025-02-06 23:04:38 +09:00
JaKooLit
a66845607d updated README .. will updated the Installation picture later 2025-02-06 22:36:28 +09:00
JaKooLit
f5e3ed99d2 minor update 2025-02-06 21:06:14 +09:00
JaKooLit
2d31448492 minor sddm_theme.sh change 2025-02-06 20:08:24 +09:00
JaKooLit
39d3f1a958 last tweak (hopefully) 2025-02-06 19:40:29 +09:00
JaKooLit
28c12f6df2 minor tweak 2025-02-06 19:22:54 +09:00
JaKooLit
79af4e7b7d updated and hopefully ready for release candidate :) 2025-02-06 19:14:58 +09:00
JaKooLit
8a60729680 tweaked 2025-02-06 19:00:39 +09:00
JaKooLit
fd1358d920 move all the initial questions at the beginning 2025-02-06 18:54:53 +09:00
JaKooLit
113fee6d7a another tweak for ags.sh 2025-02-06 13:06:02 +09:00
JaKooLit
87676210e2 tweaked ags.shv 2025-02-06 12:57:26 +09:00
JaKooLit
cf6cc1010e one more tweak 2025-02-06 12:46:45 +09:00
JaKooLit
52dfbe8593 oops found another thing :) 2025-02-06 12:28:45 +09:00
JaKooLit
e9c5d3d4a6 found it :) 2025-02-06 12:25:41 +09:00
JaKooLit
1e2704bc23 another tweak 2025-02-06 12:23:59 +09:00
JaKooLit
f049050b73 removed the --needed 2025-02-06 12:17:09 +09:00
JaKooLit
094ccb9b1f and yet I thought I already tweaked 2025-02-06 12:12:39 +09:00
JaKooLit
47791287f1 better 2025-02-06 12:07:00 +09:00
JaKooLit
4fba08d8d6 see.. and I thought it is almost ready ha ha 2025-02-06 12:03:13 +09:00
JaKooLit
a19b9b8a8d new logo :) 2025-02-06 11:58:26 +09:00
JaKooLit
5f20c04b05 updated 2025-02-06 10:47:00 +09:00
JaKooLit
9aa43ae531 hey. Dont mind me.. I am still tweaking :) 2025-02-06 10:01:45 +09:00
JaKooLit
bf67e6030c color coding & script tweaks 2025-02-06 01:33:58 +09:00
JaKooLit
9873283814 tweaked install.sh 2025-02-06 00:31:46 +09:00
JaKooLit
03aa990f35 package removal function enhanced 2025-02-05 23:38:49 +09:00
JaKooLit
2c4cdd3889 minor update 2025-02-05 22:14:28 +09:00
JaKooLit
eb486d7ef2 minor tweak 2025-02-05 13:31:43 +09:00
JaKooLit
262b6eb87c updated install.sh 2025-02-05 11:44:49 +09:00
JaKooLit
3233396b72 updated thunar.sh 2025-02-05 11:35:30 +09:00
JaKooLit
df48873278 minor update 2025-02-05 11:12:20 +09:00
JaKooLit
3af8762a88 tweakked for nvidia 2025-02-05 11:05:09 +09:00
JaKooLit
e35d66658c quite possibly ready for testing? 2025-02-05 08:45:49 +09:00
JaKooLit
e320af02c8 updated showcase readme 2025-02-04 22:24:07 +09:00
JaKooLit
6a67a21a33 updated showcase readme 2025-02-04 22:24:00 +09:00
JaKooLit
b6d982d168 updated Readme showcase 2025-02-04 21:08:36 +09:00
JaKooLit
2590e76bd2 updated Readme showcase 2025-02-04 21:08:28 +09:00
JaKooLit
bde3ef8433 minor update.sh 2025-02-04 19:31:08 +09:00
JaKooLit
6b3d3efbb5 minor update 2025-02-04 18:04:26 +09:00
JaKooLit
c4074aeffa removed the exit on individual install scripts since its already handled by Global functions 2025-02-04 16:21:58 +09:00
JaKooLit
f578249698 new sddm.png 2025-02-04 12:07:31 +09:00
JaKooLit
b43ace2f24 updated sddm.sh 2025-02-04 11:57:39 +09:00
JaKooLit
815438934a minor tweak sddm.sh 2025-02-04 10:51:02 +09:00
JaKooLit
5d5af21bea updated default sddm wallpaper 2025-02-04 01:11:43 +09:00
JaKooLit
e1d258503a updated zsh.sh 2025-02-03 22:29:04 +09:00
JaKooLit
fa9c2ae04f updated thunar.sh 2025-02-03 22:23:11 +09:00
JaKooLit
8a7f40c75a fixed sddm theme cloning 2025-02-03 19:41:44 +09:00
JaKooLit
d6a25e04e7 add argument to check if yay or paru is installed first before asking if want yay or paru 2025-02-03 19:40:33 +09:00
JaKooLit
61b61a980c good thing a cross check is done :) 2025-02-03 18:33:55 +09:00
JaKooLit
cc9ce2cb49 minor zsh update 2025-02-03 18:16:09 +09:00
JaKooLit
7278a45305 added support to make current wallpaper to SDDM (NOTE: need sequoia wallpaper) 2025-02-03 17:24:54 +09:00
JaKooLit
049c27ac22 offering a new SDDM theme 2025-02-03 15:54:42 +09:00
JaKooLit
90121d9172 moved the nvidia question on the beginning 2025-02-03 13:14:16 +09:00
JaKooLit
2b0528ca89 added pciutils and lspci will check if nvidia is present 2025-02-03 13:11:28 +09:00
JaKooLit
528551ea86 There are still some other things you see on final test :) BUT, Im quite ok with this 2025-02-03 12:25:10 +09:00
JaKooLit
8c71bdeee7 final tweak before merging to main... I think I am happy now with this 2025-02-03 12:05:06 +09:00
JaKooLit
63f2f45866 This is it..
I can feel it... danggit
2025-02-03 11:52:58 +09:00
JaKooLit
c1f67feb18 Final color coding tweak. If also thunar.sh not able to use preset.sh, then I dont know 2025-02-03 11:42:43 +09:00
JaKooLit
d215fbd786 Probably now fixed if preset.sh is used for thunar 2025-02-03 11:21:32 +09:00
JaKooLit
1d812d7357 updated the mini script to install non-git or git hyprland version 2025-02-03 11:02:58 +09:00
JaKooLit
083c20878e updated ags.sh to skip if v1.9.0 is already installed 2025-02-03 02:29:53 +09:00
JaKooLit
695081332b I think I found the fix on the Thunar making default when use preset.sh 2025-02-03 02:22:57 +09:00
JaKooLit
93d3a18b9a looks cooler :) 2025-02-03 02:08:17 +09:00
JaKooLit
29cc1c3f52 change progress bar to growing and shrinking dots 2025-02-03 02:05:01 +09:00
JaKooLit
bfbbbd2e52 change progress animation 2025-02-03 01:59:04 +09:00
JaKooLit
e2fe39222c getting tired 2025-02-03 01:41:40 +09:00
JaKooLit
872fd89261 argh still found something 2025-02-03 01:32:54 +09:00
JaKooLit
d3f0016158 Final tweak. I hope so :) 2025-02-03 01:28:27 +09:00
JaKooLit
8995c47902 heh!!!... still tweaking 2025-02-03 00:57:08 +09:00
JaKooLit
058859a07e minor tweak 2025-02-03 00:51:48 +09:00
JaKooLit
54363d5267 seems does not want color 2025-02-03 00:47:05 +09:00
JaKooLit
b2628c8126 update 2025-02-03 00:45:50 +09:00
JaKooLit
7ecb641731 hmmm 2025-02-03 00:43:42 +09:00
JaKooLit
497e71fdf5 color coding tweak 2025-02-03 00:41:15 +09:00
JaKooLit
35aa72e021 another color coding tweak 2025-02-03 00:34:27 +09:00
JaKooLit
9c1741e00d color coding tweak 2025-02-03 00:29:47 +09:00
JaKooLit
fcf18bede5 minor tweak 2025-02-03 00:27:04 +09:00
JaKooLit
6abc879468 some tweaking on install-scripts except the compiling part. It will not show progress for much cleaner work. 2025-02-02 22:54:58 +09:00
JaKooLit
38ce478f5c updated hyprland install script helper 2025-02-02 19:59:00 +09:00
Ja.KooLit
527a504e83 Delete assets/hyprland-install.tar.gz 2025-02-02 13:44:19 +09:00
JaKooLit
a44b376e79 added hyprland-install scripts 2025-02-02 13:42:37 +09:00
Ja.KooLit
2e62542a35 Add files via upload 2025-02-01 14:30:59 +09:00
JaKooLit
5343041805 updated some color coding.
Will probably tweak more later
2025-01-31 23:36:38 +09:00
JaKooLit
221870054e color coding update 2025-01-31 00:52:57 +09:00
JaKooLit
193977dcb6 color coding adjustments 2025-01-31 00:37:29 +09:00
JaKooLit
c18526390d remove ags on final check since it is now optional 2025-01-30 21:32:53 +09:00
JaKooLit
7b403cd72d updated link for AGS overview 2025-01-30 20:41:23 +09:00
Ja.KooLit
9a6fce78ab Update README.md 2025-01-30 20:23:24 +09:00
JaKooLit
0c8c829c57 added readme for AGS overview 2025-01-30 12:03:41 +09:00
JaKooLit
2ed79c491a updated Readme to add AGS overview demo 2025-01-30 11:07:17 +09:00
JaKooLit
c1c5450c9b updated installer. AGS overview is completely optional now 2025-01-30 10:21:52 +09:00
Ja.KooLit
7eea1d7659 Merge pull request #197 from JaKooLit/development
Development to Main
2025-01-29 23:11:24 +09:00
JaKooLit
dac6c373c9 updated changelogs 2025-01-29 23:10:46 +09:00
JaKooLit
b9b437cb23 updated nvidia.sh 2025-01-29 21:51:06 +09:00
JaKooLit
01a001f9a6 updated nvidia installation re bootloaders 2025-01-29 21:37:06 +09:00
JaKooLit
fc2df0f9a3 updated nvidia 2025-01-29 21:01:22 +09:00
JaKooLit
67d6c1524e enhance global function and added systemd boot entries 2025-01-29 20:59:22 +09:00
Ja.KooLit
e96da3ea4a Merge pull request #196 from JaKooLit/main
main to development
2025-01-29 20:57:24 +09:00
JaKooLit
b3a0055785 added libspng - required in hyprgraphics 2025-01-27 23:37:21 +09:00
JaKooLit
bd03f3eeeb updated xdph added umockdev 2025-01-27 17:59:51 +09:00
Ja.KooLit
68eef02324 Merge pull request #191 from JaKooLit/JaKooLit-patch-1
Update README.md - added latest installation video by ksk royal
2025-01-23 07:07:26 +08:00
Ja.KooLit
6ab203a6d4 Update README.md - added latest installation video by ksk royal 2025-01-23 07:06:27 +08:00
JaKooLit
2fc7acf538 updated readme 2025-01-18 10:58:37 +09:00
JaKooLit
7a70f63f3e updated nvidia.sh to install non-git libva-nvidia-driver 2025-01-17 00:21:08 +09:00
Ja.KooLit
7d056ae6e4 Merge pull request #189 from JaKooLit/main
main to development
2025-01-16 06:30:08 +09:00
JaKooLit
4c09bdfad1 replaced polkit-gnome with hyprpolkitagent 2025-01-13 11:08:30 +09:00
JaKooLit
94bc08c1a4 switch to final version of aylurs-gtk-shell-v1 2025-01-12 13:20:42 +09:00
JaKooLit
71cc8ef641 added cachyos-hyprland-settings to uninstallv 2025-01-11 23:18:51 +09:00
JaKooLit
5610bc9d30 readme updated 2025-01-07 21:59:31 +09:00
Ja.KooLit
e7fc2dc95a Merge pull request #185 from JaKooLit/main
main to development
2025-01-07 21:45:46 +09:00
JaKooLit
ced449539e updated readme 2025-01-07 21:05:52 +09:00
JaKooLit
79fbcc022b switched to xarchiver simply because file-roller sucks. gives me lots of issues 2025-01-07 11:51:02 +09:00
JaKooLit
2f4790f04e zsh theme to funky and added fastfetch config for distro specific 2025-01-07 11:09:28 +09:00
JaKooLit
ef7e427b7e fixed copying of fastfetch 2025-01-06 21:00:43 +09:00
JaKooLit
fbe4560a4a added copying of modified fastfetch-compact for Arch 2025-01-06 14:21:15 +09:00
JaKooLit
4d783a270b templates final 2025-01-03 22:48:04 +09:00
JaKooLit
e4c8763d6f updated issue and feature request template 2025-01-03 21:30:01 +09:00
JaKooLit
b253c9f764 installing paru-bin to address issue https://github.com/JaKooLit/Arch-Hyprland/issues/183 to not pull cargo/or rust nor rustup 2024-12-31 09:00:07 +09:00
JaKooLit
813b11dcab Global Function Tweak and Final Check 2024-12-29 01:35:45 +09:00
JaKooLit
09fb19d8a3 small tweak on Global Functions 2024-12-27 20:03:15 +09:00
JaKooLit
3cab113056 Removal of Bibata Ice cursor on assets since its integrated in the GTK Themes and Icons extract from a separate repo 2024-12-26 06:54:31 +09:00
Donald Williams
a31f6a4716 Merge pull request #180 from brockar/hyprland-qtutils
add hyprland-qtutils to install as a new dependency in Hyprland 0.46+  removes error msg on startup
2024-12-21 16:32:01 -05:00
brockar
3f2c9ac655 add hyprland-qtutils to install
now hyprland request this on a popup, so i added this to fix that error
2024-12-21 17:32:04 -03:00
Ja.KooLit
080c210d60 Update ags.sh 2024-11-22 07:04:13 +00:00
JaKooLit
70604dc0a5 added aylurs-gtk-shell to packages to uninstall 2024-11-16 09:28:59 +09:00
JaKooLit
ac22f4e161 revert ags to older version (compiling from source to have AGS overview) 2024-11-16 09:10:51 +09:00
Ja.KooLit
cbe3de92f5 Merge pull request #162 from SSYH/patch-1
simple spelling change
2024-10-13 13:56:47 +09:00
Sam Hahn
e5c54b9145 simple spelling change
costumize -> customize
2024-10-12 21:49:47 -07:00
Ja.KooLit
170e36518a Update README.md 2024-10-11 17:17:46 +04:00
JaKooLit
54b65e92b8 added qalculate-gtk 2024-10-08 23:52:28 +09:00
JaKooLit
84a413c615 added tip for searchable keybinds via rofi 2024-09-21 22:27:11 +09:00
JaKooLit
cea9183d2d User will be ask if they want to set Thunar as default file manager if they decided to install it 2024-09-20 20:05:50 +09:00
JaKooLit
8eef96db51 small tweak 2024-09-20 18:55:13 +09:00
JaKooLit
f99474f81f updated thunar and preset.sh 2024-09-20 18:51:13 +09:00
JaKooLit
10a1e9142d updaed preset.sh 2024-09-20 18:40:02 +09:00
JaKooLit
b4bfd935d9 updated zsh.sh 2024-09-20 17:43:10 +09:00
JaKooLit
17b836ee2f Added fastfetch on tty. However, will be disabled if user decided to install pokemon colorscripts 2024-09-19 17:05:05 +09:00
JaKooLit
54bc0d1499 updated install.sh 2024-09-18 23:35:44 +09:00
JaKooLit
0e876533c2 ask user if thunar wants to be default. some formatting changes 2024-09-18 17:13:17 +09:00
JaKooLit
f096714637 dotfiles will now be downloaded from main or master branch instead of from the releases version. 2024-09-18 14:32:20 +09:00
JaKooLit
38f24a43bb added dotfiles-main.sh to download from main instead of from releases 2024-09-18 01:21:47 +09:00
JaKooLit
0ed0894c38 switched over to non-bin yay or paru 2024-09-16 01:48:54 +09:00
JaKooLit
c0b198d562 Final tweaks of color variants for output messages 2024-09-14 17:08:00 +09:00
JaKooLit
99cc2c481b Some changes on numbers on install scripts 2024-09-14 13:12:01 +09:00
JaKooLit
b16dffda4d another update for uninstallation process 2024-09-14 11:40:36 +09:00
JaKooLit
04995241c4 updated uninstall functions 2024-09-14 11:32:32 +09:00
JaKooLit
44b58b3c65 just a bit tweak of final check script 2024-09-14 01:55:29 +09:00
JaKooLit
eb033d3220 final tweak of install scripts 2024-09-14 01:29:54 +09:00
JaKooLit
ba7dcc8523 updated Final-Check.sh 2024-09-14 01:28:27 +09:00
JaKooLit
bbc3094e3d update Install scripts 2024-09-14 01:16:32 +09:00
JaKooLit
8ad8784443 updated - added final check of install packages 2024-09-14 00:48:15 +09:00
JaKooLit
477545ac2e just color tweak 2024-09-08 14:55:13 +09:00
Ja.KooLit
5f59d96640 Merge pull request #147 from JaKooLit/development
Development to Main
2024-09-08 11:55:22 +09:00
JaKooLit
4f7ff52523 Added final error checks on install-logs 2024-09-08 11:40:30 +09:00
JaKooLit
16f3c44ec8 Added error checks 2024-09-08 11:25:42 +09:00
Ja.KooLit
fb2866eed1 Update install.sh 2024-09-08 11:08:51 +09:00
JaKooLit
b47a5f7a9a added a final error check 2024-09-08 11:02:58 +09:00
Ja.KooLit
8a452057cf Merge pull request #146 from JaKooLit/main
Main to development synchronization
2024-09-08 10:54:45 +09:00
JaKooLit
9241cbf2c6 added sof-firmware 2024-09-07 23:29:23 +09:00
JaKooLit
3318f33c31 adjusted to detect if pulseaudio is installed 2024-09-07 23:27:46 +09:00
Ja.KooLit
267eda6dc4 Merge pull request #143 from JaKooLit/main
Main to development
2024-09-05 17:07:30 +09:00
JaKooLit
48b57acbfd minor tweak 2024-09-03 23:45:14 +09:00
Ja.KooLit
e25cbba2c6 install.sh - Edited to WARN if hyprland failed to install 2024-09-01 15:31:45 +09:00
JaKooLit
38cb01047c switched over to non-git wallust package 2024-08-29 22:04:21 +09:00
JaKooLit
6fe4514341 move pyprland and other hyprland related packages in hyprland.sh 2024-08-29 10:35:36 +09:00
Ja.KooLit
43ce92bb86 Merge pull request #139 from JaKooLit/development
Synchronize Main and Development Branches
2024-08-28 18:42:28 +09:00
Ja.KooLit
8a5705156e Merge pull request #138 from JaKooLit/main
Main to Development
2024-08-28 18:41:35 +09:00
Ja.KooLit
3ed441614e Added final check if hyprland is installed and will give an error to user 2024-08-28 18:37:42 +09:00
Ja.KooLit
37f9b02292 updated install.sh to check if base-devel is install and Hyprland is installed and will exit and give an error message accordingly 2024-08-28 18:36:43 +09:00
Ja.KooLit
f8a0c925c3 Merge pull request #136 from JaKooLit/main
Main to Development synchronization
2024-08-26 23:11:08 +09:00
JaKooLit
d0605b5afe added nvidia_drm.fbdev=1 for grub 2024-08-26 23:09:29 +09:00
JaKooLit
39a97acf3b Set to uninstall rofi as conflicts with rofi-wayland 2024-08-26 20:32:19 +09:00
JaKooLit
a177ed254f Set to uninstall rofi as conflicts with rofi-wayland 2024-08-26 20:31:40 +09:00
JaKooLit
73938d8343 added base devel to install first 2024-08-26 15:40:42 +09:00
Ja.KooLit
f82fcf966c Merge pull request #130 from JaKooLit/main
Main to Dev
2024-08-14 21:03:14 +09:00
Ja.KooLit
f7bf5a4667 Update CHANGELOGS.md 2024-08-14 15:42:35 +09:00
Ja.KooLit
9ac06f2125 Update CHANGELOGS.md 2024-08-14 15:42:24 +09:00
Ja.KooLit
acce625ac7 Update 00-base.sh 2024-08-14 15:41:36 +09:00
Ja.KooLit
a09c819cb6 Add files via upload 2024-08-10 15:27:49 +00:00
Ja.KooLit
c891da45d5 Merge pull request #129 from JaKooLit/main
Main to Development
2024-08-08 15:48:27 +00:00
Ja.KooLit
0b1be97f7b Merge pull request #128 from JaKooLit/development
Development to main
2024-08-08 15:46:59 +00:00
Ja.KooLit
939444a27d Merge pull request #127 from JaKooLit/JaKooLit-patch-1
Update CHANGELOGS.md
2024-08-08 15:43:52 +00:00
Ja.KooLit
ae4bc4a855 Update CHANGELOGS.md 2024-08-08 15:43:31 +00:00
Ja.KooLit
7ebfa06c3b Update install.sh
Increased to 1 sec delay for installing base
2024-08-08 15:41:48 +00:00
Ja.KooLit
6655cc12e6 Merge pull request #106 from JaKooLit/main
synchronize Main to Development
2024-07-11 11:45:16 +09:00
JaKooLit
3502766cd7 updated readme re rofi 2024-07-11 11:40:40 +09:00
Ja.KooLit
60c62bd122 Merge pull request #105 from JaKooLit/main
synchronize Main to Development
2024-07-11 11:14:51 +09:00
JaKooLit
611d8ba612 updated readme 2024-07-11 11:12:35 +09:00
Ja.KooLit
56d3cbb19b Merge pull request #101 from JaKooLit/development
Development to Main
2024-07-07 22:49:50 +09:00
JaKooLit
69e938e33c move installation of eza on zsh.sh 2024-07-07 22:41:19 +09:00
Ja.KooLit
b0f2e59cd1 Merge pull request #100 from ElectroPerf/main
feat: Use eza to display file/folder icons in terminal
2024-07-07 22:26:32 +09:00
Kunmun
227ef1d75d feat: Use eza to display file/folder icons in terminal
Change-Id: I3807eef228a3799c652eea185384445de7c5c370
2024-07-07 17:42:34 +05:30
JaKooLit
165d8ff0bb added fbdev=1 on nvidia.sh 2024-06-25 22:00:36 +09:00
Ja.KooLit
0fdd31534f Update README.md 2024-06-23 17:04:05 +08:00
Ja.KooLit
2ae238ace1 Merge pull request #93 from JaKooLit/main
Main to Development
2024-06-22 15:12:43 +09:00
JaKooLit
1f822e3d5f updated Discord Link - Readme 2024-06-22 15:08:32 +09:00
JaKooLit
322ddee8e7 updated discord link 2024-06-21 04:26:25 +09:00
Ja.KooLit
9615baf63e updated readme regarding nvidia 2024-06-11 04:41:07 +09:00
JaKooLit
5add49ac89 updated base-devel installation 2024-06-10 00:13:52 +09:00
JaKooLit
86943a51b3 added inxi for better diagnostic info 2024-06-09 10:36:32 +09:00
Ja.KooLit
d24a9c4888 updated readme 2024-06-08 23:58:39 +09:00
Ja.KooLit
62e69cfd73 updated readme 2024-06-08 23:54:40 +09:00
JaKooLit
97992554b1 added keybinds link on readme 2024-06-05 13:25:15 +09:00
JaKooLit
6120faaea5 removed bookmarks from gtk-3.0 directory 2024-06-05 13:01:48 +09:00
Ja.KooLit
f45f41d14a Merge pull request #86 from JaKooLit/main
main to development
2024-06-04 03:04:45 +09:00
JaKooLit
f214cf3c8d updated Thunar.sh to include gtk-3.0 config if not present 2024-06-01 18:56:32 +09:00
JaKooLit
55f5819ae9 updated issue templates 2024-05-30 03:22:56 +09:00
Ja.KooLit
c15100db44 Merge pull request #85 from JaKooLit/main
Main to development
2024-05-27 05:21:38 +09:00
JaKooLit
c429266320 Added fzf for zsh, clean up readme 2024-05-27 05:18:22 +09:00
JaKooLit
3b6c7c3c73 updated GTK theme install script to avoid confusion 2024-05-25 18:06:44 +09:00
Ja.KooLit
4c56e4fbcc Update README.md 2024-05-25 17:35:26 +09:00
Ja.KooLit
e3c10a7661 Merge pull request #83 from JaKooLit/development
Development to Main for v2.2.12 Hyprland-Dots release
2024-05-24 21:23:34 +09:00
Ja.KooLit
5fc5342a67 Merge branch 'main' into development 2024-05-24 21:23:24 +09:00
JaKooLit
216008382e added fastfetch, power-profiles-daemon (only to ROG users), see changelogs notes 2024-05-24 00:08:09 +09:00
Ja.KooLit
51f4bcfa26 Update CHANGELOGS.md
For development. Not yet ready
2024-05-23 17:14:36 +09:00
Ja.KooLit
6f2128a27a Update 00-hypr-pkgs.sh
mistake.. should be in development first
2024-05-23 17:13:27 +09:00
Ja.KooLit
07824f1fab Merge pull request #81 from JaKooLit/main
Main to Development for new features
2024-05-23 17:09:36 +09:00
Ja.KooLit
1d100b2ca9 Merge branch 'development' into main 2024-05-23 17:09:15 +09:00
JaKooLit
8b01d91625 added qalculate-gtk for Hyprland-Dots v2.2.12 2024-05-23 13:26:47 +09:00
JaKooLit
bd162bffd3 changed the sddm theme destination to /etc/sddm.conf.d/10-theme.conf to theme.conf.user 2024-05-22 21:13:24 +09:00
JaKooLit
bc4a9b54f7 updated packages 2024-05-22 20:40:12 +09:00
JaKooLit
dc3dc39e12 updated readme regarding Hyprland Auto starting 2024-05-22 00:19:37 +09:00
JaKooLit
03ca2d6494 added file-roller in thunar 2024-05-21 21:44:23 +09:00
JaKooLit
eb62120deb updated readme 2024-05-20 11:40:20 +09:00
JaKooLit
340019c627 updated readme 2024-05-20 11:30:09 +09:00
Ja.KooLit
7a111e0284 Merge pull request #80 from JaKooLit/main
Main to development
2024-05-19 14:46:09 +09:00
JaKooLit
6252e96186 updated behaviour of .zprofile as causing auto-login to Hyprland 2024-05-19 12:27:05 +09:00
JaKooLit
92f595b6e4 updated readme 2024-05-18 23:23:50 +09:00
JaKooLit
37f09a8e7e updated readme 2024-05-18 18:39:12 +09:00
JaKooLit
ae859493b6 updated Readme 2024-05-18 00:53:25 +09:00
Ja.KooLit
ae720c7299 Merge pull request #78 from JaKooLit/main
Main to development
2024-05-14 00:39:41 +09:00
JaKooLit
84e32d5ea3 remove pywal colors for .zshrc 2024-05-14 00:27:22 +09:00
Ja.KooLit
b2195df659 Merge pull request #75 from JaKooLit/development
Releasing a new installer to work with Hyprland-Dots v2.2.11
2024-05-13 11:20:28 +09:00
Ja.KooLit
c5837fd525 Merge pull request #74 from JaKooLit/main
Merging Main to Development, prior release of new installer for Hyprland-Dots v2.2.11
2024-05-13 11:14:22 +09:00
JaKooLit
c3710b89aa edited install.sh to avoid confusion (hopefully) on use preset settings 2024-05-11 19:25:10 +09:00
JaKooLit
87dfa43733 updated readme to highlight pipewire 2024-05-11 11:37:24 +09:00
Ja.KooLit
faa76f335f Update README.md 2024-05-10 22:48:13 +09:00
Ja.KooLit
dc800878a6 Update README.md 2024-05-10 22:47:10 +09:00
JaKooLit
f7a20da6ea updated for wallust migration from pywal 2024-05-10 12:31:15 +09:00
Ja.KooLit
fdafa3d472 Merge pull request #72 from JaKooLit/main
Tweaked Script including sddm.sh
2024-05-08 11:11:49 +09:00
JaKooLit
9abf9a459d Tweaked Script including sddm.sh 2024-05-08 11:10:17 +09:00
JaKooLit
8ed397017c added ags for the upcoming hyprland-dots v2.2.11 with ags overview 2024-05-07 23:12:10 +09:00
Ja.KooLit
88629e5e07 Merge pull request #71 from JaKooLit/main
main to dev
2024-05-07 02:10:53 +09:00
JaKooLit
fdd442e74b updated arch. switched to cava as installation of cava-git keep the installation hang 2024-05-07 02:04:31 +09:00
Ja.KooLit
f1758c4a67 switched to rofi-wayland extra repo 2024-05-05 07:10:41 +09:00
Ja.KooLit
85eac029b8 Merge pull request #69 from JaKooLit/main
main to development update
2024-05-05 00:42:36 +09:00
Ja.KooLit
28a183f820 Merge pull request #68 from JaKooLit/development
Development to Main
2024-05-05 00:41:32 +09:00
JaKooLit
f57842bd36 Made a separate script for fonts installation for easy debugging purpose 2024-05-04 23:57:28 +09:00
Ja.KooLit
6247e2fa09 switched to cava-git version as cava have issues 2024-05-03 22:48:47 +09:00
JaKooLit
a6b1defa6c added pyquery for new weather python script for waybar on Hyprland-Dots v2.2.10 2024-05-03 17:59:52 +09:00
JaKooLit
d41ff66680 updated readme for some tips for nvidia-gpu users 2024-05-03 09:08:11 +09:00
JaKooLit
51bd4af82c Added pyprland (hyprland plugin) 2024-05-02 19:48:40 +09:00
Ja.KooLit
74ca2e4f90 Merge pull request #66 from JaKooLit/development
some error message grammar corrections
2024-05-02 00:04:17 +09:00
Ja.KooLit
0dec7b3ef2 some error message grammar corrections 2024-05-02 00:00:36 +09:00
Ja.KooLit
2c69ef4342 Merge pull request #65 from JaKooLit/main
synchronize main to development
2024-05-01 12:00:59 +09:00
Ja.KooLit
aeeb8b50d8 Merge pull request #64 from JaKooLit/development
updated install.sh
2024-05-01 12:00:10 +09:00
JaKooLit
8e97290429 updated install.sh 2024-05-01 11:56:21 +09:00
Ja.KooLit
1c49abbe54 Merge pull request #63 from JaKooLit/development
updated readme to add stargazers
2024-04-30 23:50:12 +09:00
JaKooLit
8cf857efc7 updated readme 2024-04-30 23:48:49 +09:00
Ja.KooLit
a265f12931 Merge pull request #62 from JaKooLit/development
Updated readme to download to user directory instead of somewhere else
2024-04-29 08:28:10 +09:00
Ja.KooLit
95cc453086 Merge pull request #61 from JaKooLit/main
main to development
2024-04-29 08:27:13 +09:00
JaKooLit
fbf8545540 Updated readme 2024-04-29 07:51:12 +09:00
JaKooLit
f1fd1d1170 updated readme 2024-04-26 09:39:59 +09:00
Ja.KooLit
2154eef613 Merge pull request #59 from JaKooLit/development
updated SDDM scripts. Regarding custom theme
2024-04-26 09:28:49 +09:00
JaKooLit
77192cd06e updated SDDM theme 2024-04-26 09:27:02 +09:00
Ja.KooLit
c73c155a79 Merge pull request #58 from JaKooLit/development
Dropping swayidle and swaylock in favor of hypridle and hyprlock
2024-04-25 22:49:48 +09:00
JaKooLit
45612f287a Dropping swayidle and swaylock in favor of hypridle and hyprlock 2024-04-23 01:47:12 +09:00
72 changed files with 5897 additions and 1180 deletions

83
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@@ -0,0 +1,83 @@
name: Bug Report
description: Something is not working right
title: "[Bug]: "
labels: ["bug"]
assignees:
- JaKooLit
body:
- type: checkboxes
attributes:
label: Already reported ? *
description: Before opening a new bug report, please take a moment to search through the current open and closed issues to check if it already exists.
options:
- label: I have searched the existing open and closed issues.
required: true
- type: dropdown
id: type
attributes:
label: Regression?
description: |
Regression means that something used to work but no longer does.
options:
- "Yes"
- "No"
- "Not sure"
validations:
required: true
- type: textarea
id: ver
attributes:
label: System Info and Version
description: |
Paste the output of `inxi --full` here.
install inxi if command not found.
value: "<details>
<summary>System/Version info</summary>
```
<Paste the output of the command here, without removing any formatting around this>
```
</details>"
validations:
required: true
- type: textarea
id: dots
attributes:
label: KooL's Dots version
description: |
Paste the output of `find ~/.config/hypr/ -type f -name 'v*' -exec basename {} \;`
This is just KooL's Hyprland Dots version.
validations:
required: true
- type: textarea
id: desc
attributes:
label: Description
description: "What went wrong? What exactly happened?"
validations:
required: true
- type: textarea
id: repro
attributes:
label: How to reproduce
description: "How can someone else reproduce the issue?"
validations:
required: true
- type: textarea
id: logs
attributes:
label: install logs, images or videos
description: |
Anything that can help. Please always ATTACH and not paste them.

View File

@@ -1,46 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: "[Bug]: Short description of the issue"
labels: "Something isn't working"
---
## Bug Report
### Description
[Provide a clear and concise description of the bug.]
### Steps to Reproduce
1. [First Step]
2. [Second Step]
3. [and so on...]
### Expected Behavior
[What did you expect to happen?]
### Actual Behavior
[What actually happened?]
### Screenshots
[If applicable, add screenshots to help explain your problem.]
### Environment
[Please add any other relevant information about the bug and remove the unnecessary lines.]
e.g.,
- Linux Distro: [e.g., ArchLinux, EndeavourOS, Arco, Manjaro]
- Linux Version, output of `uname -a`:
- Hyprland Version, output of `hyprctl version`:
- Installation Environment: [e.g., On The Main Hardware, On A Virtual Machine]
- Other info: [e.g., Display Resolution, Resolution, etc]
### Additional Information
[Add any other information about the problem here. For example, you might include the error message, any recent changes that you made to the project, or any other relevant details.]

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

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

View File

@@ -1,38 +0,0 @@
---
name: Custom template
about: Use this template to submit a custom issue
title: "[Custom]: Short description of the issue"
labels: "custom"
---
## Custom Template
### Description
[Provide a clear and concise description of the issue or request.]
### Steps to Reproduce (if applicable)
1. [First Step]
2. [Second Step]
3. [and so on...]
### Expected Behavior
[What did you expect to happen?]
### Actual Behavior
[What actually happened?]
### Screenshots (if applicable)
[If applicable, add screenshots to help explain your problem.]
### Proposed Solution (if applicable)
[If you have a specific solution in mind, describe it here. If not, you can skip this section.]
### Additional Information
[Add any other information about the issue or request here. For example, you might include links to similar features in other projects, or screenshots or diagrams to help explain your idea.]

View File

@@ -0,0 +1,30 @@
name: Documentation update
description: Propose a change to the project documentation wiki
title: "[Documentation update]: "
labels: ["documentation_update"]
assignees:
- JaKooLit
body:
- type: textarea
id: desc
attributes:
label: Description
description: "Provide a clear and concise description of the documentation update"
validations:
required: true
- type: textarea
id: repro
attributes:
label: Proposed Solution
description: "Provide a clear and concise description of the updated documentation that you'd like to see added"
validations:
required: true
- type: textarea
id: logs
attributes:
label: install links, images or videos
description: |
Add any other information about the documentation update here. For example, you might include links to similar documentation in other projects, or screenshots or diagrams to help explain your idea

View File

@@ -1,24 +0,0 @@
---
name: Documentation update
about: Propose a change to the project documentation
title: "[Docs]: Short description of the change"
labels: "documentation update"
---
## Documentation Update
### Description
[Provide a clear and concise description of the documentation update you'd like to see made.]
### Current Documentation
[Provide a link to the current documentation or describe where it can be found.]
### Proposed Documentation
[Provide a clear and concise description of the updated documentation that you'd like to see added.]
### Additional Information
[Add any other information about the documentation update here. For example, you might include links to similar documentation in other projects, or screenshots or diagrams to help explain your idea.]

38
.github/ISSUE_TEMPLATE/feature.yml vendored Normal file
View File

@@ -0,0 +1,38 @@
name: Feature Request
description: I'd like to propose some changes and enhancements
title: "[Enhancement]: "
labels: ["enhancement"]
assignees:
- JaKooLit
body:
- type: checkboxes
attributes:
label: Already reported ? *
description: Before opening a new feature request, please take a moment to search through the current open and closed issues / request to check if it already exists.
options:
- label: I have searched the existing open and closed request.
required: true
- type: textarea
id: desc
attributes:
label: Description
description: "Describe your idea?"
validations:
required: true
- type: textarea
id: repro
attributes:
label: Proposed Solution
description: "describe if you have a specific solution in mind"
validations:
required: true

View File

@@ -1,28 +0,0 @@
---
name: Feature request
about: Suggest a feature for this project
title: "[Feature Request]: Short description of the feature"
labels: "enhancement, needs triage, feature request"
---
## Feature Request
### Description
[Provide a clear and concise description of the feature you'd like to see added.]
### Use Case
[Describe how this feature would be useful to you or to other users of the project.]
### Proposed Solution
[If you have a specific solution in mind, describe it here. If not, you can skip this section.]
### Alternatives
[Are there any alternative solutions or workarounds that you've considered? If so, describe them here.]
### Additional Information
[Add any other information about the feature request here. For example, you might include links to similar features in other projects, or screenshots or diagrams to help explain your idea.]

View File

@@ -1,4 +1,166 @@
## Changelogs ## CHANGELOGS
## 22 July 2025
- Updated sddm theme and script to work with the updated simple_sddm_2 theme
## 17 July 2025
- added quickshell script to replace ags for desktop overview
## 08 June 2025
- updated SDDM theme.
## 20 March 2025
- adjusted hyprland installation script. This is great for those who are using -git packages
- added findutils as dependencies
## 11 March 2025
- Added uninstall script
- forked AGS v1 into JakooLit repo. This is just incase Aylur decide to take down v1
## 10 March 2025
- Dropped pyprland in favor of hyprland built in tool for a drop down like terminal and Desktop magnifier
## 06 March 2025
- Switched to whiptail version for Y & N questions
- switched eza to lsd
## 23 Feb 2025
- added Victor Mono Font for proper hyprlock font rendering for Dots v2.3.12
- added Fantasque Sans Mono Nerd for Kitty
## 22 Feb 2025
- replaced eog with loupe
- changed url for installing oh-my-zsh to get wider coverage. Some countries are blocking github raw url's
## 20 Feb 2025
- Added nwg-displays for the upcoming Kools dots v2.3.12
## 18 Feb 2025
- Change default zsh theme to adnosterzak
- pokemon coloscript integrated with fastfetch when opted with pokemon to add some bling
- additional external oh-my-zsh theme
## 06 Feb 2025
- added semi-unattended function.
- move all the initial questions at the beginning
## 04 Feb 2025
- Re-coded for better visibility
- 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
## 29 Jan 2025
- enhanced nvidia.sh to add additional systemd-bootloader entries for nvidia
## 16 Jan 2025
- updated nvidia.sh to install non-git libva-nvidia-driver
## 13 Jan 2025
- replaced polkit-gnome with hyprpolkitagent
## 12 Jan 2025
- switch to final version of aylurs-gtk-shell-v1
## 11 Jan 2025
- added cachyos-hyprland-settings to uninstall
## 06 Jan 2025
- added copying of modified fastfetch-compact for Arch
- default theme for oh my zsh theme is now "funky"
## 26 Dec 2024
- 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
## 15 Nov 2024
- revert Aylurs GTK Shell (AGS) to install older version
- added aylurs-gtk-shell to uninstall
## 20 Sep 2024
- User will be ask if they want to set Thunar as default file manager if they decided to install it
## 19 Sep 2024
- Added fastfetch on tty. However, will be disabled if user decided to install pokemon colorscripts
## 18 Sep 2024
- dotfiles will now be downloaded from main or master branch instead of from the releases version.
## 14 Sep 2024
- remove the final error checks instead, introduced a final check of essential packages to ran Hyprland
## 08 Sep 2024
- Added final error checks on install-logs
## 07 Sep 2024
- added pulseaudio check
- added sof-firmware
## 29 Aug 2024
- switched over to non-git wallust package
- improved indentions on some install scripts
## 28 Aug 2024
- Added final check if hyprland is installed and will give an error to user
## 26 Aug 2024
- Set to uninstall rofi as conflicts with rofi-wayland
- added nvidia_drm.fbdev=1 for grub
## 14 Aug 2024
- added archlinux-keyring on base.sh
## 08 Aug 2024
- Increased to 1 sec delay for installing base-devel [commit](https://github.com/JaKooLit/Arch-Hyprland/commit/7ebfa06c3b186f9bec0bcf268fae401ba67dfc2a)
## 07 Jul 2024
- added eza (ls replacement for tty). Note only on .zshrc
## 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`
## 26 May 2024
- Added fzf for zsh (CTRL R to invoke FZF history)
## 23 May 2024
- 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 fastfetch
## 22 May 2024
- 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
## 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
## 10 May 2024
- added wallust-git and remove python-pywal for migration to wallust on Hyprland-Dots v2.2.11
## 08 May 2024
- Adjusted sddm.sh since it does not respect preset.sh
- install.sh have been rearranged so it quits if user choose not to proceed
## 07 May 2024
- Minor typo change on nvidia.sh
- switch back to cava since installing cava-git keep it hanging (see known-issue on readme)
## 05 May 2024
- switched to rofi-wayland Extra Repo
## 04 May 2024
- separated fonts installation script for easy debugging
## 03 May 2024
- added python3-pyquery for new weather-waybar python based on Hyprland-Dots
## 02 May 2024
- Added pyprland (hyprland plugin)
## 26 Apr 2024
- Updated sddm.sh for Qt6 variant
## 23 Apr 2024
- 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

128
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,128 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, religion, or sexual identity
and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the
overall community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or
advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email
address, without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
mail[at]ml4w.com.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series
of actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or
permanent ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within
the community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
Community Impact Guidelines were inspired by [Mozilla's code of conduct
enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

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: 2.3 MiB

249
README.md
View File

@@ -1,112 +1,221 @@
<div align="center"> <div align="center">
## 💌 ** JaKooLit's Arch Hyprland Install Script ** 💌 # 💌 ** KooL's Arch - Hyprland Install Script ** 💌
![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) <p align="center">
<img src="https://raw.githubusercontent.com/JaKooLit/Hyprland-Dots/main/assets/latte.png" width="400" />
</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/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>
#### Hyprland-Dots-showcase <div align="center">
<p align="center"> <br>
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-ScreenShots/Arch-v2/Arch-Default-Layout.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/dark-theme.png" /> <a href="#-announcement-"><kbd><br>Read this First<br></kbd></a>&ensp;&ensp;
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/Light-theme.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-ScreenShots/Arch-v2/Another-Screenshot.png"" /> <a href="#-to-use-this-script"><kbd><br>How to use this script<br></kbd></a>&ensp;&ensp;
</p> <a href="#gallery-and-videos"><kbd><br>Gallery<br></kbd></a>&ensp;&ensp;
</div><br>
<p align="center"> <p align="center">
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/default-waybar.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/rofi.png" /> <img src="https://raw.githubusercontent.com/JaKooLit/Hyprland-Dots/main/assets/latte.png" width="200" />
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/wlogout-dark.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/showcase2.png"" />
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/waybar-layout.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/waybar-style.png"" />
</p> </p>
<div align="center">
👇 KOOL's Hyprland-Dots related Links 👇
<br/>
</div>
<div align="center">
<br>
<a href="https://github.com/JaKooLit/Hyprland-Dots"><kbd><br>Hyprland-Dots repo<br></kbd></a>&ensp;&ensp;
<a href="https://www.youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx"><kbd><br>Youtube<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/FAQ"><kbd><br>FAQ<br></kbd></a>&ensp;&ensp;
<a href="https://discord.gg/kool-tech-world"><kbd><br>Discord<br></kbd></a>
</div><br>
#### 📷 More Screenshots on v2 [`Link`](https://github.com/JaKooLit/screenshots/tree/main/Hyprland-Dots-Showcase) and [`Previous-Screenshots`](https://github.com/JaKooLit/screenshots/tree/main/Hyprland-ScreenShots/Arch-v2) and <p align="center">
<img src="https://raw.githubusercontent.com/JaKooLit/Hyprland-Dots/main/assets/latte.png" width="200" />
</p>
<h3 align="center">
<img src="https://github.com/JaKooLit/Telegram-Animated-Emojis/blob/main/Activity/Sparkles.webp" alt="Sparkles" width="38" height="38" />
KooL Hyprland-Dotfiles Showcase
<img src="https://github.com/JaKooLit/Telegram-Animated-Emojis/blob/main/Activity/Sparkles.webp" alt="Sparkles" width="38" height="38" />
</h3>
#### ✨ A video walk through my dotfiles[`Link`](https://youtu.be/fO-RBHvVEcc?si=ijqxxnq_DLiyO8xb) <div align="center">
#### ✨ A video walk on My Hyprland-Dots v2[`Link`](https://youtu.be/yaVurRoXc-s?si=iDnBC5S3thPBX3ZE)
#### 📽️ youtube video showcase: [`Link`](https://youtu.be/W2UFwkgdwNo) https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
</div>
### Gallery and Videos
#### 🎥 Feb 2025 Video explanation of installation with preset
- [YOUTUBE-LINK](https://youtu.be/wQ70lo7P6vA?si=_QcbrNKh_Bg0L3wC)
- [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 installation, 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] > [!CAUTION]
> 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. > 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.
#### 🔘 Pipewire and Pipewire audio > [!NOTE]
- This script will install pipewire and will also disable or will uninstall pulseaudio. If you dont want it, you can simply just delete pipewire.sh in install-scripts folder before installing. > 🔘 Pipewire and Pipewire audio
#### ✨ Costumize the packages to be installed - 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.
- inside the install-scripts folder, you can edit 00-hypr-pkgs.sh. Care though as the Hyprland Dots may not work properly!
- default GTK theme if agreed to be installed is Tokyo night GTK themes (dark and light) + Tokyo night SE icons #### ✨ 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!
#### 🚩 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://github.com/JaKooLit/simple-sddm)
- If you opted to install GTK Themes, Icons and Cursor offered are Tokyo Nights. [`LINK`](https://github.com/JaKooLit/GTK-themes-icons) & Bibata Cursor Modern Ice - 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.
#### 👀 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 scripts-folder
> [!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.
#### ✨ to run - 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
> clone this repo (latest commit only) to reduce file size download by using git. Change directory, make executable and run the script
> [!IMPORTANT]
> 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)
## ✨ 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 ```bash
git clone --depth=1 https://github.com/JaKooLit/Arch-Hyprland.git sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/auto-install.sh)
cd Arch-Hyprland ```
## ✨ 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
```bash
git clone --depth=1 https://github.com/JaKooLit/Arch-Hyprland.git ~/Arch-Hyprland
cd ~/Arch-Hyprland
chmod +x install.sh 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" />
- 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 agnoster theme is installed. 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, edit ~/.zshrc . Look for ZSH_THEME="desired theme" - 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"
#### 🎞️ AGS Overview DEMO
- 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
- ~~if you opted to install gtk themes, to apply the theme and icon, press the dark/light button (beside the padlock). To apply Bibata modern ice cursor, launch nwg-look (GTK Settings) through rofi.~~ Hyprland-Dots v2.1.18, initial boot file will attempt to apply GTK themes,cursor, and icons. You can tweak more using nwg-look (GTK-Settings) utility
- SUPER H for HINT or click on the waybar HINT! Button - SUPER H for HINT or click on the waybar HINT! Button
- Head over to [FAQ](https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ) and [TIPS](https://github.com/JaKooLit/Hyprland-Dots/wiki/TIPS) - Head over to [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 [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds)
> [!TIP]
> 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
- you can use my prepared script [`LINK`](https://github.com/JaKooLit/Arch-Hyprland/tree/main/assets/hyprland-install)
- 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 folder #### 🔧 Proper way to re-installing a particular script from install-scripts directory
- CD into Arch-Hyprland Folder and then ran the below command.
- i.e. `./install-scripts/gtk-themes` - For reinstall GTK Themes. - CD into Arch-Hyprland directory and then ran the below command.
- i.e. `./install-scripts/gtk-themes.sh` - For reinstall GTK Themes or
- `./install-scripts/sddm.sh` - For reinstall sddm
> [!IMPORTANT]
> 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:
- ~~[ ] Install zsh and oh-my-zsh without necessary steps above~~ DONE
- [ ] possibly adding gruvbox themes, cursors, icons
#### ⚠️ some known issues - [ ] show a progress bar in downloading and compiling part when installing outside AUR or official repo
#### ❗ 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
@@ -115,30 +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
- remove # from the following env's on
```
env = GBM_BACKEND,nvidia-drm
env = WLR_RENDERER_ALLOW_SOFTWARE,1
```
#### ❗ 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.
- [ ] 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`
> [!NOTE]
> 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.
- [ ] 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.
#### 🫥 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.gg/V2SJ92vbEN)
- 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
- As stated above, these script does not contain actual config files. These are only the installer of packages
- 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)

View File

@@ -1,3 +1,3 @@
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then #if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
Hyprland # Hyprland
fi #fi

View File

@@ -3,7 +3,7 @@
export ZSH="$HOME/.oh-my-zsh" export ZSH="$HOME/.oh-my-zsh"
ZSH_THEME="xiong-chiamiov-plus" ZSH_THEME="agnosterzak"
plugins=( plugins=(
git git
@@ -17,22 +17,25 @@ source $ZSH/oh-my-zsh.sh
# Check archlinux plugin commands here # Check archlinux plugin commands here
# https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/archlinux # https://github.com/ohmyzsh/ohmyzsh/tree/master/plugins/archlinux
# Display Pokemon-colorscripts # Display Pokemon-colorscripts
# Project page: https://gitlab.com/phoneybadger/pokemon-colorscripts#on-other-distros-and-macos # Project page: https://gitlab.com/phoneybadger/pokemon-colorscripts#on-other-distros-and-macos
#pokemon-colorscripts --no-title -s -r #pokemon-colorscripts --no-title -s -r #without fastfetch
#pokemon-colorscripts --no-title -s -r | fastfetch -c $HOME/.config/fastfetch/config-pokemon.jsonc --logo-type file-raw --logo-height 10 --logo-width 5 --logo -
# fastfetch. Will be disabled if above colorscript was chosen to install
fastfetch -c $HOME/.config/fastfetch/config-compact.jsonc
### From this line is for pywal-colors # Set-up icons for files/directories in terminal using lsd
# Import colorscheme from 'wal' asynchronously alias ls='lsd'
# & # Run the process in the background. alias l='ls -l'
# ( ) # Hide shell job control messages. alias la='ls -a'
# Not supported in the "fish" shell. alias lla='ls -la'
#(cat ~/.cache/wal/sequences &) alias lt='ls --tree'
# Alternative (blocks terminal for 0-3ms) # Set-up FZF key bindings (CTRL R for fuzzy history finder)
#cat ~/.cache/wal/sequences source <(fzf --zsh)
# To add support for TTYs this line can be optionally added.
#source ~/.cache/wal/colors-tty.sh
HISTFILE=~/.zsh_history
HISTSIZE=10000
SAVEHIST=10000
setopt appendhistory

Binary file not shown.

124
assets/Thunar/accels.scm Normal file
View File

@@ -0,0 +1,124 @@
; Thunar GtkAccelMap rc-file -*- scheme -*-
; this file is an automated accelerator map dump
;
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-type" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-last-modified" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/cut" "<Primary>x")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-size" "")
; (gtk_accel_path "<Actions>/ThunarWindow/file-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-tab" "<Primary>w")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size" "")
; (gtk_accel_path "<Actions>/ThunarWindow/new-window" "<Primary>n")
; (gtk_accel_path "<Actions>/ThunarWindow/clear-directory-specific-settings" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-window" "<Primary>q")
; (gtk_accel_path "<Actions>/ThunarWindow/open-parent" "<Alt>Up")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-menu" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-size-in-bytes" "")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-previous-tab" "<Primary>Page_Up")
; (gtk_accel_path "<Actions>/ThunarBookmarks/3925ac2f7e4055558c447a20c2e047ad" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open" "<Primary>o")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-ascending" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-split-view" "F3")
; (gtk_accel_path "<Actions>/ThunarActionManager/copy-2" "<Primary>Insert")
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete" "Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/open-recent" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-configure-toolbar" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/forward" "<Alt>Right")
; (gtk_accel_path "<Actions>/ThunarActionManager/restore" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/9f0d843e4074095bf657b996746ec75c" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location-alt" "<Alt>d")
; (gtk_accel_path "<Actions>/ThunarBookmarks/a16339451d60726d0755a887bd755af2" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out-alt" "<Primary>KP_Subtract")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-by-pattern" "<Primary>s")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-menu" "F10")
; (gtk_accel_path "<Actions>/ThunarWindow/contents" "F1")
; (gtk_accel_path "<Actions>/ThunarWindow/show-highlight" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/44e0e66b3d753576f90ed75c87917822" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-descending" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-name" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/select-all-files" "<Primary>a")
; (gtk_accel_path "<Actions>/ThunarActionManager/execute" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/properties" "<Alt>Return")
; (gtk_accel_path "<Actions>/ThunarActionManager/cut-2" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-dtime" "")
; (gtk_accel_path "<Actions>/ThunarWindow/switch-next-tab" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ThunarActionManager/paste-2" "<Shift>Insert")
; (gtk_accel_path "<Actions>/ThunarWindow/open-templates" "")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-filetype" "")
; (gtk_accel_path "<Actions>/ThunarWindow/close-all-windows" "<Primary><Shift>w")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-document" "")
; (gtk_accel_path "<Actions>/ThunarWindow/detach-tab" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/978d3e7a7225e42c977fe94183792d87" "")
; (gtk_accel_path "<Actions>/ThunarWindow/cancel-search" "Escape")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt2" "<Primary>equal")
; (gtk_accel_path "<Actions>/ThunarShortcutsPane/sendto-shortcuts" "<Primary>d")
; (gtk_accel_path "<Actions>/ThunarActionManager/undo" "<Primary>z")
; (gtk_accel_path "<Actions>/ThunarStandardView/toggle-sort-order" "")
; (gtk_accel_path "<Actions>/ThunarWindow/reload-alt" "F5")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-entry" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/paste" "<Primary>v")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in-alt1" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menubar" "<Primary>m")
; (gtk_accel_path "<Actions>/ThunarStandardView/back" "<Alt>Left")
; (gtk_accel_path "<Actions>/ThunarWindow/open-desktop" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-detailed-list" "<Primary>2")
; (gtk_accel_path "<Actions>/ThunarActionManager/restore-show" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-out" "<Primary>minus")
; (gtk_accel_path "<Actions>/ThunarStatusBar/toggle-display-name" "")
; (gtk_accel_path "<Actions>/ThunarWindow/sendto-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/go-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/remove-from-recent" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-with-other" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/invert-selection" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-shortcuts" "<Primary>b")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/edit-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/reload" "<Primary>r")
; (gtk_accel_path "<Actions>/ThunarActionManager/move-to-trash" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/copy" "<Primary>c")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-3" "<Shift>KP_Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-side-pane" "F9")
; (gtk_accel_path "<Actions>/ThunarStandardView/sort-by-mtime" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/a50db0a56a1e6c31df6bf18c55eb78cd" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/arrange-items-menu" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/unselect-all-files" "Escape")
; (gtk_accel_path "<Actions>/ThunarWindow/open-computer" "")
; (gtk_accel_path "<Actions>/ThunarWindow/bookmarks-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/toggle-image-preview" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-icons" "<Primary>1")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete-2" "<Shift>Delete")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-in" "<Primary>plus")
; (gtk_accel_path "<Actions>/ThunarStandardView/rename" "F2")
; (gtk_accel_path "<Actions>/ThunarWindow/open-location" "<Primary>l")
; (gtk_accel_path "<Actions>/ThunarWindow/view-as-compact-list" "<Primary>3")
; (gtk_accel_path "<Actions>/ThunarWindow/view-menu" "")
; (gtk_accel_path "<Actions>/ThunarWindow/search" "<Primary>f")
; (gtk_accel_path "<Actions>/ThunarWindow/new-tab" "<Primary>t")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset" "<Primary>0")
; (gtk_accel_path "<Actions>/ThunarWindow/contents/help-menu" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-tab" "<Primary><Shift>p")
; (gtk_accel_path "<Actions>/ThunarWindow/view-location-selector-buttons" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/redo" "<Primary><Shift>z")
; (gtk_accel_path "<Actions>/ThunarWindow/open-trash" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-in-new-window" "<Primary><Shift>o")
; (gtk_accel_path "<Actions>/ThunarWindow/view-statusbar" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/open-location" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/duplicate" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/c76f07a72d3c8ef5d4bf8e84c8981221" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/trash-delete-2" "KP_Delete")
; (gtk_accel_path "<Actions>/ThunarStandardView/create-folder" "<Primary><Shift>n")
; (gtk_accel_path "<Actions>/ThunarWindow/open-home" "<Alt>Home")
; (gtk_accel_path "<Actions>/ThunarWindow/show-hidden" "<Primary>h")
; (gtk_accel_path "<Actions>/ThunarStandardView/set-default-app" "")
; (gtk_accel_path "<Actions>/ThunarWindow/empty-trash" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/back-alt" "BackSpace")
; (gtk_accel_path "<Actions>/ThunarWindow/preferences" "")
; (gtk_accel_path "<Actions>/ThunarBookmarks/8ea92a0b35875a5a65ffafcf02698ce8" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/delete" "")
; (gtk_accel_path "<Actions>/ThunarWindow/view-side-pane-tree" "<Primary>e")
; (gtk_accel_path "<Actions>/ThunarWindow/open-file-system" "")
; (gtk_accel_path "<Actions>/ThunarWindow/open-network" "")
; (gtk_accel_path "<Actions>/ThunarActionManager/sendto-desktop" "")
; (gtk_accel_path "<Actions>/ThunarStandardView/make-link" "")
; (gtk_accel_path "<Actions>/ThunarWindow/zoom-reset-alt" "<Primary>KP_0")
; (gtk_accel_path "<Actions>/ThunarWindow/about" "")

View File

@@ -0,0 +1,370 @@
# vim:ft=zsh ts=2 sw=2 sts=2
#
# agnoster's Theme - https://gist.github.com/3712874
# A Powerline-inspired theme for ZSH
#
# # README
#
# In order for this theme to render correctly, you will need a
# [Powerline-patched font](https://gist.github.com/1595572).
#
# In addition, I recommend the
# [Solarized theme](https://github.com/altercation/solarized/) and, if you're
# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app -
# it has significantly better color fidelity.
#
# # Goals
#
# The aim of this theme is to only show you *relevant* information. Like most
# prompts, it will only show git information when in a git working directory.
# However, it goes a step further: everything from the current user and
# hostname to whether the last call exited with an error to whether background
# jobs are running in this shell will all be displayed automatically when
# appropriate.
### Segment drawing
# A few utility functions to make it easy and re-usable to draw segmented prompts
CURRENT_BG='NONE'
# Characters
SEGMENT_SEPARATOR="\ue0b0"
PLUSMINUS="\u00b1"
BRANCH="\ue0a0"
DETACHED="\u27a6"
CROSS="\u2718"
LIGHTNING="\u26a1"
GEAR="\u2699"
# Begin a segment
# Takes two arguments, background and foreground. Both can be omitted,
# rendering default background/foreground.
prompt_segment() {
local bg fg
[[ -n $1 ]] && bg="%K{$1}" || bg="%k"
[[ -n $2 ]] && fg="%F{$2}" || fg="%f"
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
print -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} "
else
print -n "%{$bg%}%{$fg%} "
fi
CURRENT_BG=$1
[[ -n $3 ]] && print -n $3
}
# End the prompt, closing any open segments
prompt_end() {
if [[ -n $CURRENT_BG ]]; then
print -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
else
print -n "%{%k%}"
fi
print -n "%{%f%}"
CURRENT_BG=''
}
### Prompt components
# Each component will draw itself, and hide itself if no information needs to be shown
# Context: user@hostname (who am I and where am I)
prompt_context() {
if [[ -n "$SSH_CLIENT" ]]; then
prompt_segment magenta white "%{$fg_bold[white]%(!.%{%F{white}%}.)%}$USER@%m%{$fg_no_bold[white]%}"
else
prompt_segment yellow magenta "%{$fg_bold[magenta]%(!.%{%F{magenta}%}.)%}@$USER%{$fg_no_bold[magenta]%}"
fi
}
# Battery Level
prompt_battery() {
HEART='♥ '
if [[ $(uname) == "Darwin" ]] ; then
function battery_is_charging() {
[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]
}
function battery_pct() {
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
typeset -F maxcapacity=$(echo $smart_battery_status | grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //')
typeset -F currentcapacity=$(echo $smart_battery_status | grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //')
integer i=$(((currentcapacity/maxcapacity) * 100))
echo $i
}
function battery_pct_remaining() {
if battery_is_charging ; then
battery_pct
else
echo "External Power"
fi
}
function battery_time_remaining() {
local smart_battery_status="$(ioreg -rc "AppleSmartBattery")"
if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //')
if [ $timeremaining -gt 720 ] ; then
echo "::"
else
echo "~$((timeremaining / 60)):$((timeremaining % 60))"
fi
fi
}
b=$(battery_pct_remaining)
if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then
if [ $b -gt 50 ] ; then
prompt_segment green white
elif [ $b -gt 20 ] ; then
prompt_segment yellow white
else
prompt_segment red white
fi
echo -n "%{$fg_bold[white]%}$HEART$(battery_pct_remaining)%%%{$fg_no_bold[white]%}"
fi
fi
if [[ $(uname) == "Linux" && -d /sys/module/battery ]] ; then
function battery_is_charging() {
! [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]]
}
function battery_pct() {
if (( $+commands[acpi] )) ; then
echo "$(acpi | cut -f2 -d ',' | tr -cd '[:digit:]')"
fi
}
function battery_pct_remaining() {
if [ ! $(battery_is_charging) ] ; then
battery_pct
else
echo "External Power"
fi
}
function battery_time_remaining() {
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
echo $(acpi | cut -f3 -d ',')
fi
}
b=$(battery_pct_remaining)
if [[ $(acpi 2&>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then
if [ $b -gt 40 ] ; then
prompt_segment green white
elif [ $b -gt 20 ] ; then
prompt_segment yellow white
else
prompt_segment red white
fi
echo -n "%{$fg_bold[white]%}$HEART$(battery_pct_remaining)%%%{$fg_no_bold[white]%}"
fi
fi
}
# Git: branch/detached head, dirty status
prompt_git() {
#«»±˖˗‑‐‒ ━ ✚‐↔←↑↓→↭⇎⇔⋆━◂▸◄►◆☀★☗☊✔✖❮❯⚑⚙
local PL_BRANCH_CHAR
() {
local LC_ALL="" LC_CTYPE="en_US.UTF-8"
PL_BRANCH_CHAR="$BRANCH"
}
local ref dirty mode repo_path clean has_upstream
local modified untracked added deleted tagged stashed
local ready_commit git_status bgclr fgclr
local commits_diff commits_ahead commits_behind has_diverged to_push to_pull
repo_path=$(git rev-parse --git-dir 2>/dev/null)
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
dirty=$(parse_git_dirty)
git_status=$(git status --porcelain 2> /dev/null)
ref=$(git symbolic-ref HEAD 2> /dev/null) || ref="➦ $(git rev-parse --short HEAD 2> /dev/null)"
if [[ -n $dirty ]]; then
clean=''
bgclr='yellow'
fgclr='magenta'
else
clean=' ✔'
bgclr='green'
fgclr='white'
fi
local upstream=$(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} 2> /dev/null)
if [[ -n "${upstream}" && "${upstream}" != "@{upstream}" ]]; then has_upstream=true; fi
local current_commit_hash=$(git rev-parse HEAD 2> /dev/null)
local number_of_untracked_files=$(\grep -c "^??" <<< "${git_status}")
# if [[ $number_of_untracked_files -gt 0 ]]; then untracked=" $number_of_untracked_files◆"; fi
if [[ $number_of_untracked_files -gt 0 ]]; then untracked=" $number_of_untracked_files☀"; fi
local number_added=$(\grep -c "^A" <<< "${git_status}")
if [[ $number_added -gt 0 ]]; then added=" $number_added✚"; fi
local number_modified=$(\grep -c "^.M" <<< "${git_status}")
if [[ $number_modified -gt 0 ]]; then
modified=" $number_modified●"
bgclr='red'
fgclr='white'
fi
local number_added_modified=$(\grep -c "^M" <<< "${git_status}")
local number_added_renamed=$(\grep -c "^R" <<< "${git_status}")
if [[ $number_modified -gt 0 && $number_added_modified -gt 0 ]]; then
modified="$modified$((number_added_modified+number_added_renamed))±"
elif [[ $number_added_modified -gt 0 ]]; then
modified=" ●$((number_added_modified+number_added_renamed))±"
fi
local number_deleted=$(\grep -c "^.D" <<< "${git_status}")
if [[ $number_deleted -gt 0 ]]; then
deleted=" $number_deleted"
bgclr='red'
fgclr='white'
fi
local number_added_deleted=$(\grep -c "^D" <<< "${git_status}")
if [[ $number_deleted -gt 0 && $number_added_deleted -gt 0 ]]; then
deleted="$deleted$number_added_deleted±"
elif [[ $number_added_deleted -gt 0 ]]; then
deleted=" $number_added_deleted±"
fi
local tag_at_current_commit=$(git describe --exact-match --tags $current_commit_hash 2> /dev/null)
if [[ -n $tag_at_current_commit ]]; then tagged=" ☗$tag_at_current_commit "; fi
local number_of_stashes="$(git stash list -n1 2> /dev/null | wc -l)"
if [[ $number_of_stashes -gt 0 ]]; then
stashed=" ${number_of_stashes##*( )}⚙"
bgclr='magenta'
fgclr='white'
fi
if [[ $number_added -gt 0 || $number_added_modified -gt 0 || $number_added_deleted -gt 0 ]]; then ready_commit=' ⚑'; fi
local upstream_prompt=''
if [[ $has_upstream == true ]]; then
commits_diff="$(git log --pretty=oneline --topo-order --left-right ${current_commit_hash}...${upstream} 2> /dev/null)"
commits_ahead=$(\grep -c "^<" <<< "$commits_diff")
commits_behind=$(\grep -c "^>" <<< "$commits_diff")
upstream_prompt="$(git rev-parse --symbolic-full-name --abbrev-ref @{upstream} 2> /dev/null)"
upstream_prompt=$(sed -e 's/\/.*$/ ☊ /g' <<< "$upstream_prompt")
fi
has_diverged=false
if [[ $commits_ahead -gt 0 && $commits_behind -gt 0 ]]; then has_diverged=true; fi
if [[ $has_diverged == false && $commits_ahead -gt 0 ]]; then
if [[ $bgclr == 'red' || $bgclr == 'magenta' ]] then
to_push=" $fg_bold[white]↑$commits_ahead$fg_bold[$fgclr]"
else
to_push=" $fg_bold[black]↑$commits_ahead$fg_bold[$fgclr]"
fi
fi
if [[ $has_diverged == false && $commits_behind -gt 0 ]]; then to_pull=" $fg_bold[magenta]↓$commits_behind$fg_bold[$fgclr]"; fi
if [[ -e "${repo_path}/BISECT_LOG" ]]; then
mode=" <B>"
elif [[ -e "${repo_path}/MERGE_HEAD" ]]; then
mode=" >M<"
elif [[ -e "${repo_path}/rebase" || -e "${repo_path}/rebase-apply" || -e "${repo_path}/rebase-merge" || -e "${repo_path}/../.dotest" ]]; then
mode=" >R>"
fi
prompt_segment $bgclr $fgclr
print -n "%{$fg_bold[$fgclr]%}${ref/refs\/heads\//$PL_BRANCH_CHAR $upstream_prompt}${mode}$to_push$to_pull$clean$tagged$stashed$untracked$modified$deleted$added$ready_commit%{$fg_no_bold[$fgclr]%}"
fi
}
prompt_hg() {
local rev status
if $(hg id >/dev/null 2>&1); then
if $(hg prompt >/dev/null 2>&1); then
if [[ $(hg prompt "{status|unknown}") = "?" ]]; then
# if files are not added
prompt_segment red white
st='±'
elif [[ -n $(hg prompt "{status|modified}") ]]; then
# if any modification
prompt_segment yellow black
st='±'
else
# if working copy is clean
prompt_segment green black
fi
print -n $(hg prompt "☿ {rev}@{branch}") $st
else
st=""
rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
branch=$(hg id -b 2>/dev/null)
if `hg st | grep -q "^\?"`; then
prompt_segment red black
st='±'
elif `hg st | grep -q "^[MA]"`; then
prompt_segment yellow black
st='±'
else
prompt_segment green black
fi
print -n "☿ $rev@$branch" $st
fi
fi
}
# Dir: current working directory
prompt_dir() {
prompt_segment cyan white "%{$fg_bold[white]%}%~%{$fg_no_bold[white]%}"
}
# Virtualenv: current working virtualenv
prompt_virtualenv() {
local virtualenv_path="$VIRTUAL_ENV"
if [[ -n $virtualenv_path && -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; then
prompt_segment blue black "(`basename $virtualenv_path`)"
fi
}
prompt_time() {
prompt_segment blue white "%{$fg_bold[white]%}%D{%a %e %b - %H:%M}%{$fg_no_bold[white]%}"
}
# Status:
# - was there an error
# - am I root
# - are there background jobs?
prompt_status() {
local symbols
symbols=()
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}$CROSS"
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}$LIGHTNING"
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$GEAR"
[[ -n "$symbols" ]] && prompt_segment black default "$symbols"
}
## Main prompt
build_prompt() {
RETVAL=$?
print -n "\n"
prompt_status
#prompt_battery
prompt_time
prompt_virtualenv
prompt_dir
prompt_git
prompt_hg
prompt_end
CURRENT_BG='NONE'
print -n "\n"
prompt_context
prompt_end
}
PROMPT='%{%f%b%k%}$(build_prompt) '

View File

@@ -0,0 +1,392 @@
###
### You can re-define the following variables in your .zshrc file
### in order to customize the appearance of the prompt
###
# The indentation of the rprompt
ZLE_RPROMPT_INDENT=${ZLE_RPROMPT_INDENT:-0}
# Whether to use oh-my-zsh's git-prompt plugin
# or the builtin logic written in this file
ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT=""
# Whether to gather additional details about the git status
# This option only applies when using the builtin logic
# Usefull when dealing with huge repositories to speed things up
ZSH_ANTARES_USE_LIGHT_GIT_MODE=""
# The colors to use for the various elements of the prompt
ZSH_ANTARES_FG_EXECTIME="#dd00ff"
ZSH_ANTARES_FG_ERRVAL="#c31a1a"
ZSH_ANTARES_FG_DECO="#ffffff"
ZSH_ANTARES_FG_PWD_OK="#ffffff"
ZSH_ANTARES_BG_PWD_OK="#0055ff"
ZSH_ANTARES_FG_PWD_ERR="#ffffff"
ZSH_ANTARES_BG_PWD_ERR="#c31a1a"
ZSH_ANTARES_FG_GIT_INIT="#000000"
ZSH_ANTARES_BG_GIT_INIT="#b5f3a1"
ZSH_ANTARES_FG_GIT_BARE="#000000"
ZSH_ANTARES_BG_GIT_BARE="#b07a4e"
ZSH_ANTARES_FG_GIT_BRANCH="#000000"
ZSH_ANTARES_BG_GIT_BRANCH="#47cc2b"
ZSH_ANTARES_FG_GIT_DETACH="#000000"
ZSH_ANTARES_BG_GIT_DETACH="#eeaa22"
ZSH_ANTARES_FG_GIT_CONFLICT="#000000"
ZSH_ANTARES_BG_GIT_CONFLICT="#c31a1a"
ZSH_ANTARES_FG_GIT_AHEAD="#cfcfcf"
ZSH_ANTARES_FG_GIT_BEHIND="#9f9f9f"
ZSH_ANTARES_FG_GIT_STAGED="#6cc6ee"
ZSH_ANTARES_FG_GIT_ADDED="#04c304"
ZSH_ANTARES_FG_GIT_DELETED="#e7165a"
ZSH_ANTARES_FG_GIT_CHANGED="#ee9931"
ZSH_ANTARES_FG_GIT_CONFLICTS="#ff0000"
ZSH_ANTARES_FG_GIT_UNTRACKED="#bbffff"
ZSH_ANTARES_FG_GIT_STASHED="#eaa0ff"
ZSH_ANTARES_FG_GIT_TAG="#ffffff"
ZSH_ANTARES_FG_JOBS="#9f9f9f"
ZSH_ANTARES_FG_PRIVILEDGES="#ffdd44"
# The characters (or strings, by will) to use for some of the elements
ZSH_ANTARES_STR_GIT_BARE="⛁"
ZSH_ANTARES_STR_GIT_AHEAD="↑"
ZSH_ANTARES_STR_GIT_BEHIND="↓"
ZSH_ANTARES_STR_GIT_STAGED="●"
ZSH_ANTARES_STR_GIT_ADDED="✚"
ZSH_ANTARES_STR_GIT_DELETED="━"
ZSH_ANTARES_STR_GIT_CHANGED="✱"
ZSH_ANTARES_STR_GIT_CONFLICTS="✖"
ZSH_ANTARES_STR_GIT_UNTRACKED="❍"
ZSH_ANTARES_STR_GIT_STASHED="⚑"
ZSH_ANTARES_STR_GIT_TAG="🏲"
ZSH_ANTARES_STR_JOBS="⚙"
ZSH_ANTARES_STR_ROOT="#"
ZSH_ANTARES_STR_USER="$"
# The path expansion to use to display the pwd
ZSH_ANTARES_PATHVAR='%~'
# The minimum amount of time (in seconds) a command shall take to complete
# in order to display the execution time in the prompt
ZSH_ANTARES_MIN_EXEC_TIME=0
# The control character used to insert a new line
# You shouldn't edit this variable, but if you really want to...
ZSH_ANTARES_LINEFEED=$'\n'
###
### End of the re-definable section
###
antares_update_git_status()
{
ZSH_ANTARES_GIT_STATUS=""
ZSH_ANTARES_GIT_IN_WORKING_TREE=0
ZSH_ANTARES_GIT_IS_INIT_REPO=0
ZSH_ANTARES_GIT_IS_BARE_REPO=0
ZSH_ANTARES_GIT_IS_DETACHED_HEAD=0
ZSH_ANTARES_GIT_HAS_CONFLICTS=0
ZSH_ANTARES_GIT_HAS_TAGS=0
ZSH_ANTARES_GIT_TAG=""
if ( $(git rev-parse --is-inside-work-tree 1>/dev/null 2>/dev/null) )
then
ZSH_ANTARES_GIT_IN_WORKING_TREE=1
private branch_name="$(git branch --show-current)"
if [ -n "$branch_name" ]
then
if [ -z "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
then
GIT_BRANCH="$branch_name"
fi
if ( ! $(git rev-parse --verify HEAD 1>/dev/null 2>/dev/null) )
then
ZSH_ANTARES_GIT_IS_INIT_REPO=1
fi
if [ $(git rev-parse --is-bare-repository) = "true" ]
then
ZSH_ANTARES_GIT_IS_BARE_REPO=1
GIT_BRANCH="$ZSH_ANTARES_STR_GIT_BARE"
fi
else
ZSH_ANTARES_GIT_IS_DETACHED_HEAD=1
if [ -z "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
then
GIT_BRANCH="$(git rev-parse --short HEAD)"
if [ -z "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ]
then
private git_tag="$(git tag --points-at=HEAD)"
if [ -n "$git_tag" ]
then
ZSH_ANTARES_GIT_HAS_TAGS=1
private n_tags="$(echo "$git_tag" | wc -l)"
if (( n_tags == 1 ))
then
ZSH_ANTARES_GIT_TAG=" $ZSH_ANTARES_STR_GIT_TAG $git_tag"
elif (( n_tags > 1 ))
then
ZSH_ANTARES_GIT_TAG=" $ZSH_ANTARES_STR_GIT_TAG $n_tags"
else
fi
fi
fi
fi
fi
else
antares_reset_git_info
return
fi
if (( ZSH_ANTARES_GIT_IS_BARE_REPO ))
then
antares_reset_git_counts
GIT_AHEAD=$(git rev-list --left-only HEAD..FETCH_HEAD --count)
GIT_BEHIND=$(git rev-list --right-only HEAD..FETCH_HEAD --count)
return
fi
if [ -n "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
then
GIT_ADDED=0
elif [ -n "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ]
then
antares_reset_git_counts
return
else
private git_status="$(git status -sb)"
if [ -n "$git_status" ]
then
GIT_STAGED=$(echo $git_status | grep '^[AMD]. ' | wc -l)
GIT_ADDED=$(echo $git_status | grep '^A ' | wc -l)
GIT_DELETED=$(echo $git_status | grep -E '^(D |.D) ' | wc -l)
GIT_CHANGED=$(echo $git_status | grep -E '^(M |.M) ' | wc -l)
GIT_CONFLICTS=$(echo $git_status | grep '^U. ' | wc -l)
GIT_UNTRACKED=$(echo $git_status | grep '^?? ' | wc -l)
GIT_STASHED=$(git stash list | wc -l)
if (( ZSH_ANTARES_GIT_IS_DETACHED_HEAD ))
then
GIT_AHEAD=0
GIT_BEHIND=0
elif (( ! ZSH_ANTARES_GIT_IS_INIT_REPO ))
then
private left_right=$(echo $git_status | grep '^## ' | cut -d" " -f2)
GIT_AHEAD=$(git rev-list --left-only $left_right --count)
GIT_BEHIND=$(git rev-list --right-only $left_right --count)
fi
fi
fi
ZSH_ANTARES_GIT_HAS_CONFLICTS=$(( GIT_CONFLICTS > 0 ))
}
antares_reset_git_info()
{
if [ -z "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
then
GIT_BRANCH=""
fi
antares_reset_git_counts
}
antares_reset_git_counts()
{
if [ -n "$ZSH_ANTARES_USE_OHMYZSH_GIT_PROMPT" ]
then
GIT_ADDED=0
else
GIT_AHEAD=0
GIT_BEHIND=0
GIT_STAGED=0
GIT_ADDED=0
GIT_DELETED=0
GIT_CHANGED=0
GIT_CONFLICTS=0
GIT_UNTRACKED=0
GIT_STASHED=0
fi
}
antares_update_prompt()
{
ZSH_ANTARES_RETURN=""
if [ -n "$ZSH_ANTARES_EXEC_FLAG" ]
then
if (( ZSH_ANTARES_MIN_EXEC_TIME >= 0 ))
then
private exec_time=$(( SECONDS - ZSH_ANTARES_EXEC_START ))
if (( exec_time >= ZSH_ANTARES_MIN_EXEC_TIME ))
then
ZSH_ANTARES_RETURN+="%F{$ZSH_ANTARES_FG_EXECTIME}%B⤷%b $exec_time%f"
fi
fi
if [[ "$ZSH_ANTARES_ERR_CODE" != "0" ]]
then
if [ -z "$ZSH_ANTARES_RETURN" ]
then
ZSH_ANTARES_RETURN+="%F{$ZSH_ANTARES_FG_ERRVAL}%B⤷%b%f"
fi
ZSH_ANTARES_RETURN+=" %F{$ZSH_ANTARES_FG_ERRVAL}✘%B${ZSH_ANTARES_ERR_CODE}%b%f"
fi
[ -n "$ZSH_ANTARES_RETURN" ] && ZSH_ANTARES_RETURN+="$ZSH_ANTARES_LINEFEED"
fi
ZSH_ANTARES_FILLER=""
private fillchar=" "
private width=$(( COLUMNS - ${ZLE_RPROMPT_INDENT:-1} ))
private decosize=7
private pwdsize=${#${(%):-$ZSH_ANTARES_PATHVAR}}
private pwdcut=""
private gitsize=${#${(%):-$GIT_BRANCH$ZSH_ANTARES_GIT_TAG}}
private gitcut=""
if (( pwdsize + gitsize + (decosize * 2) > width )); then
private half_width=$(( width / 2 ))
private pwd_over_half=$(( (pwdsize + decosize) > half_width ))
private git_over_half=$(( (gitsize + decosize) > half_width ))
if (( pwd_over_half > 0 )) && (( git_over_half > 0 ))
then
(( pwdcut = half_width - decosize ))
(( gitcut = half_width - decosize ))
elif (( pwd_over_half > 0 ))
then
(( pwdcut = width - gitsize - (decosize * 2) ))
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdcut - gitsize - (decosize * 2) ))::$fillchar:)}"
elif (( git_over_half > 0 ))
then
(( gitcut = width - pwdsize - (decosize * 2) ))
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdsize - gitcut - (decosize * 2) ))::$fillchar:)}"
else
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdsize - gitsize - (decosize * 2) ))::$fillchar:)}"
fi
else
ZSH_ANTARES_FILLER="\${(l:$(( width - pwdsize - gitsize - (decosize * 2) ))::$fillchar:)}"
fi
if [ -n "$ZSH_ANTARES_EXEC_FLAG" ]
then
private pwd_fg_color="%(?.${ZSH_ANTARES_FG_PWD_OK}.${ZSH_ANTARES_FG_PWD_ERR})"
private pwd_bg_color="%(?.${ZSH_ANTARES_BG_PWD_OK}.${ZSH_ANTARES_BG_PWD_ERR})"
else
private pwd_fg_color="$ZSH_ANTARES_FG_PWD_OK"
private pwd_bg_color="$ZSH_ANTARES_BG_PWD_OK"
fi
ZSH_ANTARES_PWD="%K{$pwd_bg_color}%F{$pwd_fg_color} %${pwdcut}<...<${ZSH_ANTARES_PATHVAR}%<< %f%k%F{$pwd_bg_color}▓▒░%f"
ZSH_ANTARES_GIT_BRANCH=""
if (( ZSH_ANTARES_GIT_IN_WORKING_TREE ))
then
if (( ZSH_ANTARES_GIT_HAS_CONFLICTS ))
then
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_CONFLICT}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_CONFLICT}%F{$ZSH_ANTARES_FG_GIT_CONFLICT}"
elif (( ZSH_ANTARES_GIT_IS_DETACHED_HEAD ))
then
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_DETACH}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_DETACH}%F{$ZSH_ANTARES_FG_GIT_DETACH}"
if (( ZSH_ANTARES_GIT_HAS_TAGS ))
then
GIT_BRANCH+="%F{$ZSH_ANTARES_FG_GIT_TAG}${ZSH_ANTARES_GIT_TAG}%f"
fi
elif (( ZSH_ANTARES_GIT_IS_BARE_REPO ))
then
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_BARE}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_BARE}%F{$ZSH_ANTARES_FG_GIT_BARE}"
elif (( ZSH_ANTARES_GIT_IS_INIT_REPO ))
then
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_INIT}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_INIT}%F{$ZSH_ANTARES_FG_GIT_INIT}"
else
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_BG_GIT_BRANCH}░▒▓%f%K{$ZSH_ANTARES_BG_GIT_BRANCH}%F{$ZSH_ANTARES_FG_GIT_BRANCH}"
fi
ZSH_ANTARES_GIT_BRANCH+=" %${gitcut}>...>$GIT_BRANCH%>> %f%k"
if [ -n "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ]
then
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_FG_DECO}├╼%f"
else
ZSH_ANTARES_GIT_BRANCH+="%F{$ZSH_ANTARES_FG_DECO}├╮%f"
fi
fi
ZSH_ANTARES_JOBS="%(1j.%F{$ZSH_ANTARES_FG_JOBS}${ZSH_ANTARES_STR_JOBS}%j%f .)"
ZSH_ANTARES_PRIVILEDGES="%F{$ZSH_ANTARES_FG_PRIVILEDGES}%B%(!.${ZSH_ANTARES_STR_ROOT}.${ZSH_ANTARES_STR_USER})%b%f"
}
antares_update_rprompt()
{
ZSH_ANTARES_GIT_STATUS=""
[ -n "$ZSH_ANTARES_USE_LIGHT_GIT_MODE" ] && return
(( ZSH_ANTARES_GIT_IN_WORKING_TREE )) || return
if (( GIT_CONFLICTS > 0 ))
then
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_CONFLICTS}${ZSH_ANTARES_STR_GIT_CONFLICTS}${GIT_CONFLICTS}%f"
fi
if (( GIT_STAGED > 0 ))
then
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_STAGED}${ZSH_ANTARES_STR_GIT_STAGED}${GIT_STAGED}%f"
fi
if (( GIT_DELETED > 0 ))
then
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_DELETED}${ZSH_ANTARES_STR_GIT_DELETED}${GIT_DELETED}%f"
fi
if (( GIT_CHANGED > 0 ))
then
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_CHANGED}${ZSH_ANTARES_STR_GIT_CHANGED}${GIT_CHANGED}%f"
fi
if (( GIT_ADDED > 0 ))
then
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_ADDED}${ZSH_ANTARES_STR_GIT_ADDED}${GIT_ADDED}%f"
fi
if (( GIT_UNTRACKED > 0 ))
then
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_UNTRACKED}${ZSH_ANTARES_STR_GIT_UNTRACKED}${GIT_UNTRACKED}%f"
fi
if (( GIT_STASHED > 0 ))
then
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_GIT_STASHED}${ZSH_ANTARES_STR_GIT_STASHED}${GIT_STASHED}%f"
fi
if (( ! ZSH_ANTARES_GIT_IS_DETACHED_HEAD ))
then
private ahead_behind=""
if (( GIT_AHEAD > 0 ))
then
ahead_behind+="%F{$ZSH_ANTARES_FG_GIT_AHEAD}${ZSH_ANTARES_STR_GIT_AHEAD}${GIT_AHEAD}%f"
fi
if (( GIT_BEHIND > 0 ))
then
ahead_behind+="%F{$ZSH_ANTARES_FG_GIT_BEHIND}${ZSH_ANTARES_STR_GIT_BEHIND}${GIT_BEHIND}%f"
fi
if [ -n "$ahead_behind" ]
then
ZSH_ANTARES_GIT_STATUS+=" $ahead_behind"
fi
fi
ZSH_ANTARES_GIT_STATUS+=" %F{$ZSH_ANTARES_FG_DECO}╾─╯%f"
}
antares_precmd()
{
ZSH_ANTARES_ERR_CODE="$?"
antares_update_git_status
antares_update_prompt
antares_update_rprompt
ZSH_ANTARES_EXEC_FLAG=""
}
antares_preexec()
{
ZSH_ANTARES_EXEC_FLAG="+"
ZSH_ANTARES_EXEC_START=$SECONDS
}
autoload -U add-zsh-hook
add-zsh-hook precmd antares_precmd
add-zsh-hook preexec antares_preexec
PROMPT='${ZSH_ANTARES_RETURN}\
%F{$ZSH_ANTARES_FG_DECO}╭┤%f${ZSH_ANTARES_PWD}${(e)ZSH_ANTARES_FILLER}${ZSH_ANTARES_GIT_BRANCH}
%F{$ZSH_ANTARES_FG_DECO}╰─╼%f ${ZSH_ANTARES_JOBS}${ZSH_ANTARES_PRIVILEDGES} '
RPROMPT='${ZSH_ANTARES_GIT_STATUS}'

View File

@@ -0,0 +1,696 @@
# README
#
# In order for this theme to render correctly, you will need a
# [Powerline-patched font](https://github.com/Lokaltog/powerline-fonts).
#
# In addition, I recommend the
# [Tomorrow Night theme](https://github.com/chriskempson/tomorrow-theme) and, if
# you're using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over
# Terminal.app - it has significantly better color fidelity.
# ------------------------------------------------------------------------------
# CONFIGURATION
# The default configuration, that can be overwrite in your .zshrc file
# ------------------------------------------------------------------------------
VIRTUAL_ENV_DISABLE_PROMPT=true
# Define order and content of prompt
if [ ! -n "${BULLETTRAIN_PROMPT_ORDER+1}" ]; then
BULLETTRAIN_PROMPT_ORDER=(
time
status
custom
context
dir
screen
perl
ruby
virtualenv
nvm
aws
go
rust
elixir
git
hg
cmd_exec_time
)
fi
# PROMPT
if [ ! -n "${BULLETTRAIN_PROMPT_CHAR+1}" ]; then
BULLETTRAIN_PROMPT_CHAR="\$"
fi
if [ ! -n "${BULLETTRAIN_PROMPT_ROOT+1}" ]; then
BULLETTRAIN_PROMPT_ROOT=true
fi
if [ ! -n "${BULLETTRAIN_PROMPT_SEPARATE_LINE+1}" ]; then
BULLETTRAIN_PROMPT_SEPARATE_LINE=true
fi
if [ ! -n "${BULLETTRAIN_PROMPT_ADD_NEWLINE+1}" ]; then
BULLETTRAIN_PROMPT_ADD_NEWLINE=true
fi
# STATUS
if [ ! -n "${BULLETTRAIN_STATUS_EXIT_SHOW+1}" ]; then
BULLETTRAIN_STATUS_EXIT_SHOW=false
fi
if [ ! -n "${BULLETTRAIN_STATUS_BG+1}" ]; then
BULLETTRAIN_STATUS_BG=green
fi
if [ ! -n "${BULLETTRAIN_STATUS_ERROR_BG+1}" ]; then
BULLETTRAIN_STATUS_ERROR_BG=red
fi
if [ ! -n "${BULLETTRAIN_STATUS_FG+1}" ]; then
BULLETTRAIN_STATUS_FG=white
fi
# TIME
if [ ! -n "${BULLETTRAIN_TIME_BG+1}" ]; then
BULLETTRAIN_TIME_BG=white
fi
if [ ! -n "${BULLETTRAIN_TIME_FG+1}" ]; then
BULLETTRAIN_TIME_FG=black
fi
# CUSTOM
if [ ! -n "${BULLETTRAIN_CUSTOM_MSG+1}" ]; then
BULLETTRAIN_CUSTOM_MSG=false
fi
if [ ! -n "${BULLETTRAIN_CUSTOM_BG+1}" ]; then
BULLETTRAIN_CUSTOM_BG=black
fi
if [ ! -n "${BULLETTRAIN_CUSTOM_FG+1}" ]; then
BULLETTRAIN_CUSTOM_FG=default
fi
# VIRTUALENV
if [ ! -n "${BULLETTRAIN_VIRTUALENV_BG+1}" ]; then
BULLETTRAIN_VIRTUALENV_BG=yellow
fi
if [ ! -n "${BULLETTRAIN_VIRTUALENV_FG+1}" ]; then
BULLETTRAIN_VIRTUALENV_FG=white
fi
if [ ! -n "${BULLETTRAIN_VIRTUALENV_PREFIX+1}" ]; then
BULLETTRAIN_VIRTUALENV_PREFIX=🐍
fi
# NVM
if [ ! -n "${BULLETTRAIN_NVM_BG+1}" ]; then
BULLETTRAIN_NVM_BG=green
fi
if [ ! -n "${BULLETTRAIN_NVM_FG+1}" ]; then
BULLETTRAIN_NVM_FG=white
fi
if [ ! -n "${BULLETTRAIN_NVM_PREFIX+1}" ]; then
BULLETTRAIN_NVM_PREFIX="⬡ "
fi
# AWS
if [ ! -n "${BULLETTRAIN_AWS_BG+1}" ]; then
BULLETTRAIN_AWS_BG=yellow
fi
if [ ! -n "${BULLETTRAIN_AWS_FG+1}" ]; then
BULLETTRAIN_AWS_FG=black
fi
if [ ! -n "${BULLETTRAIN_AWS_PREFIX+1}" ]; then
BULLETTRAIN_AWS_PREFIX="☁️"
fi
# RUBY
if [ ! -n "${BULLETTRAIN_RUBY_BG+1}" ]; then
BULLETTRAIN_RUBY_BG=red
fi
if [ ! -n "${BULLETTRAIN_RUBY_FG+1}" ]; then
BULLETTRAIN_RUBY_FG=white
fi
if [ ! -n "${BULLETTRAIN_RUBY_PREFIX+1}" ]; then
BULLETTRAIN_RUBY_PREFIX=♦️
fi
# Go
if [ ! -n "${BULLETTRAIN_GO_BG+1}" ]; then
BULLETTRAIN_GO_BG=cyan
fi
if [ ! -n "${BULLETTRAIN_GO_FG+1}" ]; then
BULLETTRAIN_GO_FG=white
fi
if [ ! -n "${BULLETTRAIN_GO_PREFIX+1}" ]; then
BULLETTRAIN_GO_PREFIX="go"
fi
# Rust
if [ ! -n "${BULLETTRAIN_RUST_BG+1}" ]; then
BULLETTRAIN_RUST_BG=black
fi
if [ ! -n "${BULLETTRAIN_RUST_FG+1}" ]; then
BULLETTRAIN_RUST_FG=white
fi
if [ ! -n "${BULLETTRAIN_RUST_PREFIX+1}" ]; then
BULLETTRAIN_RUST_PREFIX="🦀"
fi
# Kubernetes Context
if [ ! -n "${BULLETTRAIN_KCTX_BG+1}" ]; then
BULLETTRAIN_KCTX_BG=yellow
fi
if [ ! -n "${BULLETTRAIN_KCTX_FG+1}" ]; then
BULLETTRAIN_KCTX_FG=white
fi
if [ ! -n "${BULLETTRAIN_KCTX_PREFIX+1}" ]; then
BULLETTRAIN_KCTX_PREFIX="⎈"
fi
if [ ! -n "${BULLETTRAIN_KCTX_KCONFIG+1}" ]; then
BULLETTRAIN_KCTX_KCONFIG="${HOME}/.kube/config"
fi
if [ ! -n "${BULLETTRAIN_KCTX_KUBECTL+1}" ]; then
BULLETTRAIN_KCTX_KUBECTL="true"
fi
if [ ! -n "${BULLETTRAIN_KCTX_NAMESPACE+1}" ]; then
BULLETTRAIN_KCTX_NAMESPACE="true"
fi
# ELIXIR
if [ ! -n "${BULLETTRAIN_ELIXIR_BG+1}" ]; then
BULLETTRAIN_ELIXIR_BG=magenta
fi
if [ ! -n "${BULLETTRAIN_ELIXIR_FG+1}" ]; then
BULLETTRAIN_ELIXIR_FG=white
fi
if [ ! -n "${BULLETTRAIN_ELIXIR_PREFIX+1}" ]; then
BULLETTRAIN_ELIXIR_PREFIX="💧"
fi
# DIR
if [ ! -n "${BULLETTRAIN_DIR_BG+1}" ]; then
BULLETTRAIN_DIR_BG=blue
fi
if [ ! -n "${BULLETTRAIN_DIR_FG+1}" ]; then
BULLETTRAIN_DIR_FG=white
fi
if [ ! -n "${BULLETTRAIN_DIR_CONTEXT_SHOW+1}" ]; then
BULLETTRAIN_DIR_CONTEXT_SHOW=false
fi
if [ ! -n "${BULLETTRAIN_DIR_EXTENDED+1}" ]; then
BULLETTRAIN_DIR_EXTENDED=1
fi
# GIT
if [ ! -n "${BULLETTRAIN_GIT_COLORIZE_DIRTY+1}" ]; then
BULLETTRAIN_GIT_COLORIZE_DIRTY=false
fi
if [ ! -n "${BULLETTRAIN_GIT_COLORIZE_DIRTY_FG_COLOR+1}" ]; then
BULLETTRAIN_GIT_COLORIZE_DIRTY_FG_COLOR=black
fi
if [ ! -n "${BULLETTRAIN_GIT_COLORIZE_DIRTY_BG_COLOR+1}" ]; then
BULLETTRAIN_GIT_COLORIZE_DIRTY_BG_COLOR=yellow
fi
if [ ! -n "${BULLETTRAIN_GIT_BG+1}" ]; then
BULLETTRAIN_GIT_BG=white
fi
if [ ! -n "${BULLETTRAIN_GIT_FG+1}" ]; then
BULLETTRAIN_GIT_FG=black
fi
if [ ! -n "${BULLETTRAIN_GIT_EXTENDED+1}" ]; then
BULLETTRAIN_GIT_EXTENDED=true
fi
if [ ! -n "${BULLETTRAIN_GIT_PROMPT_CMD+1}" ]; then
BULLETTRAIN_GIT_PROMPT_CMD="\$(git_prompt_info)"
fi
# PERL
if [ ! -n "${BULLETTRAIN_PERL_BG+1}" ]; then
BULLETTRAIN_PERL_BG=yellow
fi
if [ ! -n "${BULLETTRAIN_PERL_FG+1}" ]; then
BULLETTRAIN_PERL_FG=black
fi
if [ ! -n "${BULLETTRAIN_PERL_PREFIX+1}" ]; then
BULLETTRAIN_PERL_PREFIX=🐪
fi
# CONTEXT
if [ ! -n "${BULLETTRAIN_CONTEXT_BG+1}" ]; then
BULLETTRAIN_CONTEXT_BG=black
fi
if [ ! -n "${BULLETTRAIN_CONTEXT_FG+1}" ]; then
BULLETTRAIN_CONTEXT_FG=default
fi
if [ ! -n "${BULLETTRAIN_CONTEXT_HOSTNAME+1}" ]; then
BULLETTRAIN_CONTEXT_HOSTNAME=%m
fi
# GIT PROMPT
if [ ! -n "${BULLETTRAIN_GIT_PREFIX+1}" ]; then
ZSH_THEME_GIT_PROMPT_PREFIX="\ue0a0 "
else
ZSH_THEME_GIT_PROMPT_PREFIX=$BULLETTRAIN_GIT_PREFIX
fi
if [ ! -n "${BULLETTRAIN_GIT_SUFFIX+1}" ]; then
ZSH_THEME_GIT_PROMPT_SUFFIX=""
else
ZSH_THEME_GIT_PROMPT_SUFFIX=$BULLETTRAIN_GIT_SUFFIX
fi
if [ ! -n "${BULLETTRAIN_GIT_DIRTY+1}" ]; then
ZSH_THEME_GIT_PROMPT_DIRTY=" %F{red}✘%F{black}"
else
ZSH_THEME_GIT_PROMPT_DIRTY=$BULLETTRAIN_GIT_DIRTY
fi
if [ ! -n "${BULLETTRAIN_GIT_CLEAN+1}" ]; then
ZSH_THEME_GIT_PROMPT_CLEAN=" %F{green}✔%F{black}"
else
ZSH_THEME_GIT_PROMPT_CLEAN=$BULLETTRAIN_GIT_CLEAN
fi
if [ ! -n "${BULLETTRAIN_GIT_ADDED+1}" ]; then
ZSH_THEME_GIT_PROMPT_ADDED=" %F{green}✚%F{black}"
else
ZSH_THEME_GIT_PROMPT_ADDED=$BULLETTRAIN_GIT_ADDED
fi
if [ ! -n "${BULLETTRAIN_GIT_MODIFIED+1}" ]; then
ZSH_THEME_GIT_PROMPT_MODIFIED=" %F{blue}✹%F{black}"
else
ZSH_THEME_GIT_PROMPT_MODIFIED=$BULLETTRAIN_GIT_MODIFIED
fi
if [ ! -n "${BULLETTRAIN_GIT_DELETED+1}" ]; then
ZSH_THEME_GIT_PROMPT_DELETED=" %F{red}✖%F{black}"
else
ZSH_THEME_GIT_PROMPT_DELETED=$BULLETTRAIN_GIT_DELETED
fi
if [ ! -n "${BULLETTRAIN_GIT_UNTRACKED+1}" ]; then
ZSH_THEME_GIT_PROMPT_UNTRACKED=" %F{yellow}✭%F{black}"
else
ZSH_THEME_GIT_PROMPT_UNTRACKED=$BULLETTRAIN_GIT_UNTRACKED
fi
if [ ! -n "${BULLETTRAIN_GIT_RENAMED+1}" ]; then
ZSH_THEME_GIT_PROMPT_RENAMED=" ➜"
else
ZSH_THEME_GIT_PROMPT_RENAMED=$BULLETTRAIN_GIT_RENAMED
fi
if [ ! -n "${BULLETTRAIN_GIT_UNMERGED+1}" ]; then
ZSH_THEME_GIT_PROMPT_UNMERGED=" ═"
else
ZSH_THEME_GIT_PROMPT_UNMERGED=$BULLETTRAIN_GIT_UNMERGED
fi
if [ ! -n "${BULLETTRAIN_GIT_AHEAD+1}" ]; then
ZSH_THEME_GIT_PROMPT_AHEAD=" ⬆"
else
ZSH_THEME_GIT_PROMPT_AHEAD=$BULLETTRAIN_GIT_AHEAD
fi
if [ ! -n "${BULLETTRAIN_GIT_BEHIND+1}" ]; then
ZSH_THEME_GIT_PROMPT_BEHIND=" ⬇"
else
ZSH_THEME_GIT_PROMPT_BEHIND=$BULLETTRAIN_GIT_BEHIND
fi
if [ ! -n "${BULLETTRAIN_GIT_DIVERGED+1}" ]; then
ZSH_THEME_GIT_PROMPT_DIVERGED=" ⬍"
else
ZSH_THEME_GIT_PROMPT_DIVERGED=$BULLETTRAIN_GIT_PROMPT_DIVERGED
fi
# SCREEN
if [ ! -n "${BULLETTRAIN_SCREEN_BG+1}" ]; then
BULLETTRAIN_SCREEN_BG=white
fi
if [ ! -n "${BULLETTRAIN_SCREEN_FG+1}" ]; then
BULLETTRAIN_SCREEN_FG=black
fi
if [ ! -n "${BULLETTRAIN_SCREEN_PREFIX+1}" ]; then
BULLETTRAIN_SCREEN_PREFIX="⬗"
fi
# COMMAND EXECUTION TIME
if [ ! -n "${BULLETTRAIN_EXEC_TIME_ELAPSED+1}" ]; then
BULLETTRAIN_EXEC_TIME_ELAPSED=5
fi
if [ ! -n "${BULLETTRAIN_EXEC_TIME_BG+1}" ]; then
BULLETTRAIN_EXEC_TIME_BG=yellow
fi
if [ ! -n "${BULLETTRAIN_EXEC_TIME_FG+1}" ]; then
BULLETTRAIN_EXEC_TIME_FG=black
fi
# ------------------------------------------------------------------------------
# SEGMENT DRAWING
# A few functions to make it easy and re-usable to draw segmented prompts
# ------------------------------------------------------------------------------
CURRENT_BG='NONE'
SEGMENT_SEPARATOR=''
# Begin a segment
# Takes three arguments, background, foreground and text. All of them can be omitted,
# rendering default background/foreground and no text.
prompt_segment() {
local bg fg
[[ -n $1 ]] && bg="%K{$1}" || bg="%k"
[[ -n $2 ]] && fg="%F{$2}" || fg="%f"
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
echo -n " %{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%} "
else
echo -n "%{$bg%}%{$fg%} "
fi
CURRENT_BG=$1
[[ -n $3 ]] && echo -n $3
}
# End the prompt, closing any open segments
prompt_end() {
if [[ -n $CURRENT_BG ]]; then
echo -n " %{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
else
echo -n "%{%k%}"
fi
echo -n "%{%f%}"
CURRENT_BG=''
}
# ------------------------------------------------------------------------------
# PROMPT COMPONENTS
# Each component will draw itself, and hide itself if no information needs
# to be shown
# ------------------------------------------------------------------------------
# Context: user@hostname (who am I and where am I)
context() {
local user="$(whoami)"
[[ "$user" != "$BULLETTRAIN_CONTEXT_DEFAULT_USER" || -n "$BULLETTRAIN_IS_SSH_CLIENT" ]] && echo -n "${user}@$BULLETTRAIN_CONTEXT_HOSTNAME"
}
prompt_context() {
local _context="$(context)"
[[ -n "$_context" ]] && prompt_segment $BULLETTRAIN_CONTEXT_BG $BULLETTRAIN_CONTEXT_FG "$_context"
}
# Based on http://stackoverflow.com/a/32164707/3859566
function displaytime {
local T=$1
local D=$((T/60/60/24))
local H=$((T/60/60%24))
local M=$((T/60%60))
local S=$((T%60))
[[ $D > 0 ]] && printf '%dd' $D
[[ $H > 0 ]] && printf '%dh' $H
[[ $M > 0 ]] && printf '%dm' $M
printf '%ds' $S
}
# Prompt previous command execution time
preexec() {
cmd_timestamp=`date +%s`
}
precmd() {
local stop=`date +%s`
local start=${cmd_timestamp:-$stop}
let BULLETTRAIN_last_exec_duration=$stop-$start
cmd_timestamp=''
}
prompt_cmd_exec_time() {
[ $BULLETTRAIN_last_exec_duration -gt $BULLETTRAIN_EXEC_TIME_ELAPSED ] && prompt_segment $BULLETTRAIN_EXEC_TIME_BG $BULLETTRAIN_EXEC_TIME_FG "$(displaytime $BULLETTRAIN_last_exec_duration)"
}
# Custom
prompt_custom() {
if [[ $BULLETTRAIN_CUSTOM_MSG == false ]]; then
return
fi
local custom_msg
eval custom_msg=$BULLETTRAIN_CUSTOM_MSG
[[ -n "${custom_msg}" ]] && prompt_segment $BULLETTRAIN_CUSTOM_BG $BULLETTRAIN_CUSTOM_FG "${custom_msg}"
}
# Git
prompt_git() {
if [[ "$(command git config --get oh-my-zsh.hide-status 2>/dev/null)" == "1" ]]; then
return
fi
local ref dirty mode repo_path git_prompt
repo_path=$(git rev-parse --git-dir 2>/dev/null)
if $(git rev-parse --is-inside-work-tree >/dev/null 2>&1); then
if [[ $BULLETTRAIN_GIT_COLORIZE_DIRTY == true && -n $(git status --porcelain --ignore-submodules) ]]; then
BULLETTRAIN_GIT_BG=$BULLETTRAIN_GIT_COLORIZE_DIRTY_BG_COLOR
BULLETTRAIN_GIT_FG=$BULLETTRAIN_GIT_COLORIZE_DIRTY_FG_COLOR
fi
prompt_segment $BULLETTRAIN_GIT_BG $BULLETTRAIN_GIT_FG
eval git_prompt=${BULLETTRAIN_GIT_PROMPT_CMD}
if [[ $BULLETTRAIN_GIT_EXTENDED == true ]]; then
echo -n ${git_prompt}$(git_prompt_status)
else
echo -n ${git_prompt}
fi
fi
}
prompt_hg() {
local rev status
if $(hg id >/dev/null 2>&1); then
if $(hg prompt >/dev/null 2>&1); then
if [[ $(hg prompt "{status|unknown}") = "?" ]]; then
# if files are not added
prompt_segment red white
st='±'
elif [[ -n $(hg prompt "{status|modified}") ]]; then
# if any modification
prompt_segment yellow black
st='±'
else
# if working copy is clean
prompt_segment green black
fi
echo -n $(hg prompt "☿ {rev}@{branch}") $st
else
st=""
rev=$(hg id -n 2>/dev/null | sed 's/[^-0-9]//g')
branch=$(hg id -b 2>/dev/null)
if $(hg st | grep -Eq "^\?"); then
prompt_segment red black
st='±'
elif $(hg st | grep -Eq "^(M|A)"); then
prompt_segment yellow black
st='±'
else
prompt_segment green black
fi
echo -n "☿ $rev@$branch" $st
fi
fi
}
# Dir: current working directory
prompt_dir() {
local dir=''
local _context="$(context)"
[[ $BULLETTRAIN_DIR_CONTEXT_SHOW == true && -n "$_context" ]] && dir="${dir}${_context}:"
if [[ $BULLETTRAIN_DIR_EXTENDED == 0 ]]; then
#short directories
dir="${dir}%1~"
elif [[ $BULLETTRAIN_DIR_EXTENDED == 2 ]]; then
#long directories
dir="${dir}%0~"
else
#medium directories (default case)
dir="${dir}%4(c:...:)%3c"
fi
prompt_segment $BULLETTRAIN_DIR_BG $BULLETTRAIN_DIR_FG $dir
}
# RUBY
# RVM: only shows RUBY info if on a gemset that is not the default one
# RBENV: shows current ruby version active in the shell; also with non-global gemsets if any is active
# CHRUBY: shows current ruby version active in the shell
prompt_ruby() {
if command -v rvm-prompt > /dev/null 2>&1; then
prompt_segment $BULLETTRAIN_RUBY_BG $BULLETTRAIN_RUBY_FG $BULLETTRAIN_RUBY_PREFIX" $(rvm-prompt i v g)"
elif command -v chruby > /dev/null 2>&1; then
prompt_segment $BULLETTRAIN_RUBY_BG $BULLETTRAIN_RUBY_FG $BULLETTRAIN_RUBY_PREFIX" $(chruby | sed -n -e 's/ \* //p')"
elif command -v rbenv > /dev/null 2>&1; then
current_gemset() {
echo "$(rbenv gemset active 2&>/dev/null | sed -e 's/ global$//')"
}
if [[ -n $(current_gemset) ]]; then
prompt_segment $BULLETTRAIN_RUBY_BG $BULLETTRAIN_RUBY_FG $BULLETTRAIN_RUBY_PREFIX" $(rbenv version | sed -e 's/ (set.*$//')"@"$(current_gemset)"
else
prompt_segment $BULLETTRAIN_RUBY_BG $BULLETTRAIN_RUBY_FG $BULLETTRAIN_RUBY_PREFIX" $(rbenv version | sed -e 's/ (set.*$//')"
fi
fi
}
# ELIXIR
prompt_elixir() {
if command -v elixir > /dev/null 2>&1; then
prompt_segment $BULLETTRAIN_ELIXIR_BG $BULLETTRAIN_ELIXIR_FG $BULLETTRAIN_ELIXIR_PREFIX" $(elixir -v | tail -n 1 | awk '{print $2}')"
fi
}
# PERL
# PLENV: shows current PERL version active in the shell
prompt_perl() {
if command -v plenv > /dev/null 2>&1; then
prompt_segment $BULLETTRAIN_PERL_BG $BULLETTRAIN_PERL_FG $BULLETTRAIN_PERL_PREFIX" $(plenv version | sed -e 's/ (set.*$//')"
fi
}
# Go
prompt_go() {
setopt extended_glob
if [[ (-f *.go(#qN) || -d Godeps || -f glide.yaml) ]]; then
if command -v go > /dev/null 2>&1; then
prompt_segment $BULLETTRAIN_GO_BG $BULLETTRAIN_GO_FG $BULLETTRAIN_GO_PREFIX" $(go version | grep --colour=never -oE '[[:digit:]].[[:digit:]]+')"
fi
fi
}
# Rust
prompt_rust() {
if [[ (-f Cargo.toml) ]]; then
if command -v rustc > /dev/null 2>&1; then
prompt_segment $BULLETTRAIN_RUST_BG $BULLETTRAIN_RUST_FG $BULLETTRAIN_RUST_PREFIX" $(rustc -V version | cut -d' ' -f2)"
fi
fi
}
# Kubernetes Context
prompt_kctx() {
if [[ "$BULLETTRAIN_KCTX_KUBECTL" == "true" ]] && command -v kubectl > /dev/null 2>&1; then
local jsonpath='{.current-context}'
if [[ "$BULLETTRAIN_KCTX_NAMESPACE" == "true" ]]; then
jsonpath="${jsonpath}{':'}{..namespace}"
fi
prompt_segment $BULLETTRAIN_KCTX_BG $BULLETTRAIN_KCTX_FG $BULLETTRAIN_KCTX_PREFIX" $(kubectl config view --minify --output "jsonpath=${jsonpath}" 2>/dev/null)"
elif [[ -f $BULLETTRAIN_KCTX_KCONFIG ]]; then
prompt_segment $BULLETTRAIN_KCTX_BG $BULLETTRAIN_KCTX_FG $BULLETTRAIN_KCTX_PREFIX" $(cat $BULLETTRAIN_KCTX_KCONFIG | grep current-context | awk '{print $2}')"
fi
}
# Virtualenv: current working virtualenv
prompt_virtualenv() {
local virtualenv_path="$VIRTUAL_ENV"
if [[ -n $virtualenv_path && -n $VIRTUAL_ENV_DISABLE_PROMPT ]]; then
prompt_segment $BULLETTRAIN_VIRTUALENV_BG $BULLETTRAIN_VIRTUALENV_FG $BULLETTRAIN_VIRTUALENV_PREFIX" $(basename $virtualenv_path)"
elif which pyenv &> /dev/null; then
if [[ "$(pyenv version | sed -e 's/ (set.*$//' | tr '\n' ' ' | sed 's/.$//')" != "system" ]]; then
prompt_segment $BULLETTRAIN_VIRTUALENV_BG $BULLETTRAIN_VIRTUALENV_FG $BULLETTRAIN_VIRTUALENV_PREFIX" $(pyenv version | sed -e 's/ (set.*$//' | tr '\n' ' ' | sed 's/.$//')"
fi
fi
}
# NVM: Node version manager
prompt_nvm() {
local nvm_prompt
if type nvm >/dev/null 2>&1; then
nvm_prompt=$(nvm current 2>/dev/null)
[[ "${nvm_prompt}x" == "x" || "${nvm_prompt}" == "system" ]] && return
elif type node >/dev/null 2>&1; then
nvm_prompt="$(node --version)"
else
return
fi
nvm_prompt=${nvm_prompt}
prompt_segment $BULLETTRAIN_NVM_BG $BULLETTRAIN_NVM_FG $BULLETTRAIN_NVM_PREFIX$nvm_prompt
}
#AWS Profile
prompt_aws() {
local spaces=" "
if [[ -n "$AWS_PROFILE" ]]; then
prompt_segment $BULLETTRAIN_AWS_BG $BULLETTRAIN_AWS_FG $BULLETTRAIN_AWS_PREFIX$spaces$AWS_PROFILE
fi
}
# SCREEN Session
prompt_screen() {
local session_name="$STY"
if [[ "$session_name" != "" ]]; then
prompt_segment $BULLETTRAIN_SCREEN_BG $BULLETTRAIN_SCREEN_FG $BULLETTRAIN_SCREEN_PREFIX" $session_name"
fi
}
prompt_time() {
if [[ $BULLETTRAIN_TIME_12HR == true ]]; then
prompt_segment $BULLETTRAIN_TIME_BG $BULLETTRAIN_TIME_FG %D{%r}
else
prompt_segment $BULLETTRAIN_TIME_BG $BULLETTRAIN_TIME_FG %D{%T}
fi
}
# Status:
# - was there an error
# - am I root
# - are there background jobs?
prompt_status() {
local symbols
symbols=()
[[ $RETVAL -ne 0 && $BULLETTRAIN_STATUS_EXIT_SHOW != true ]] && symbols+="✘"
[[ $RETVAL -ne 0 && $BULLETTRAIN_STATUS_EXIT_SHOW == true ]] && symbols+="✘ $RETVAL"
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}⚡%f"
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="⚙"
if [[ -n "$symbols" && $RETVAL -ne 0 ]]; then
prompt_segment $BULLETTRAIN_STATUS_ERROR_BG $BULLETTRAIN_STATUS_FG "$symbols"
elif [[ -n "$symbols" ]]; then
prompt_segment $BULLETTRAIN_STATUS_BG $BULLETTRAIN_STATUS_FG "$symbols"
fi
}
# Prompt Character
prompt_chars() {
local bt_prompt_chars="${BULLETTRAIN_PROMPT_CHAR}"
if [[ $BULLETTRAIN_PROMPT_ROOT == true ]]; then
bt_prompt_chars="%(!.%F{red}# .%F{green}${bt_prompt_chars}%f)"
fi
if [[ $BULLETTRAIN_PROMPT_SEPARATE_LINE == false ]]; then
bt_prompt_chars="${bt_prompt_chars}"
fi
echo -n "$bt_prompt_chars"
if [[ -n $BULLETTRAIN_PROMPT_CHAR ]]; then
echo -n " "
fi
}
# Prompt Line Separator
prompt_line_sep() {
if [[ $BULLETTRAIN_PROMPT_SEPARATE_LINE == true ]]; then
# newline wont print without a non newline character, so add a zero-width space
echo -e '\n%{\u200B%}'
fi
}
# ------------------------------------------------------------------------------
# MAIN
# Entry point
# ------------------------------------------------------------------------------
build_prompt() {
RETVAL=$?
for segment in $BULLETTRAIN_PROMPT_ORDER
do
prompt_$segment
done
prompt_end
}
NEWLINE='
'
PROMPT=''
[[ $BULLETTRAIN_PROMPT_ADD_NEWLINE == true ]] && PROMPT="$PROMPT$NEWLINE"
PROMPT="$PROMPT"'%{%f%b%k%}$(build_prompt)'
[[ $BULLETTRAIN_PROMPT_SEPARATE_LINE == true ]] && PROMPT="$PROMPT$NEWLINE"
PROMPT="$PROMPT"'%{${fg_bold[default]}%}'
[[ $BULLETTRAIN_PROMPT_SEPARATE_LINE == false ]] && PROMPT="$PROMPT "
PROMPT="$PROMPT"'$(prompt_chars)%{$reset_color%}'

View File

@@ -0,0 +1,38 @@
# Refer https://misc.flogisoft.com/bash/tip_colors_and_formatting for the ANSI/VT100 control sequences
local user_color=026
local dir_color=130
local git_branch_color=010
local input_color=220
# Uncomment the following line to hide the virtual environment name.
# export VIRTUAL_ENV_DISABLE_PROMPT=1
# User details in green, bold
local user='%B$FG[${user_color}]%}%n@%m%{$reset_color%}'
# Directory details in cyan, bold
local dir='%B$FG[${dir_color}]%~%{$reset_color%}'
# git branch details in green
local git_branch='$FG[${git_branch_color}]$(git_prompt_info)%{$reset_color%}'
# Error message on command returning non-zero exit code
error_msg="\e[0;31mCommand failed"
PROMPT="${user}:${dir}:${git_branch}
$ $FG[${input_color}]"
# Resetting color to default white.
preexec()
{
echo -ne "\e[0m"
}
# Printing error message if command failed.
precmd()
{
# Command failed
if [ $? -ne 0 ];
then
echo "${error_msg}"
fi
}

View File

@@ -0,0 +1,418 @@
##########################################
### Comfyline - theme for zsh ###
# Original Author: not pua ( imnotpua ) #
# email: atp@tutamail.com #
##########################################
# make prompt work without oh-my-zsh
setopt PROMPT_SUBST
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# default segment seperators
if [[ $COMFYLINE_SEGSEP == "" ]]; then
COMFYLINE_SEGSEP='\ue0b4'
fi
if [[ $COMFYLINE_SEGSEP_REVERSE == "" ]]; then
COMFYLINE_SEGSEP_REVERSE='\ue0b6'
fi
# date and time formats
if [[ $COMFYLINE_DATE_FORMAT == "" ]]; then
COMFYLINE_DATE_FORMAT="%A, %e %B %Y"
fi
if [[ $COMFYLINE_TIME_FORMAT == "" ]]; then
COMFYLINE_TIME_FORMAT="%l:%M %p"
fi
# default light theme
if [[ $RETVAL_RANK == "" ]]; then
RETVAL_RANK=1
fi
if [[ $HOST_RANK == "" ]]; then
HOST_RANK=2
fi
if [[ $USER_RANK == "" ]] then
USER_RANK=3
fi
if [[ $DIR_RANK == "" ]]; then
DIR_RANK=4
fi
if [[ $GIT_RANK == "" ]] then
GIT_RANK=5
fi
if [[ $VENV_RANK = "" ]]; then
VENV_RANK=6
fi
if [[ $BAT_RANK == "" ]] then
BAT_RANK=-3
fi
if [[ $DATE_RANK == "" ]]; then
DATE_RANK=-2
fi
if [[ $TIME_RANK == "" ]]; then
TIME_RANK=-1
fi
# default colors
if [[ $RETVAL_b == "" ]]; then
RETVAL_b="#8a8bd8"
fi
if [[ $RETVAL_f == "" ]]; then
RETVAL_f="#61355c"
fi
if [[ $HOST_b == "" ]]; then
HOST_b="#b3b5fb"
fi
if [[ $HOST_f == "" ]]; then
HOST_f="#4a4b87"
fi
if [[ $USER_b == "" ]]; then
USER_b="#f8bbe5"
fi
if [[ $USER_f == "" ]]; then
USER_f="#874c80"
fi
if [[ $GIT_b == "" ]]; then
GIT_b="#f6b3b3"
fi
if [[ $GIT_f == "" ]]; then
GIT_f="#d95353"
fi
if [[ $GIT_CLEAN_b == "" ]]; then
GIT_CLEAN_b="#b3f58c"
fi
if [[ $GIT_CLEAN_f == "" ]]; then
GIT_CLEAN_f="#568459"
fi
if [[ $DIR_b == "" ]]; then
DIR_b="#e1bff2"
fi
if [[ $DIR_f == "" ]]; then
DIR_f="#844189"
fi
if [[ $VENV_b == "" ]]; then
VENV_b="#a8ddf9"
fi
if [[ $VENV_f == "" ]]; then
VENV_f="#0066a4"
fi
if [[ $BAT_b == "" ]]; then
BAT_b="#b3b5fb"
fi
if [[ $BAT_f == "" ]]; then
BAT_f="#4a4b87"
fi
if [[ $DATE_b == "" ]]; then
DATE_b="#f8bbe5"
fi
if [[ $DATE_f == "" ]]; then
DATE_f="#874c80"
fi
if [[ $TIME_b == "" ]]; then
TIME_b="#e1bff2"
fi
if [[ $TIME_f == "" ]]; then
TIME_f="#844189"
fi
# basic functions
#function takes 4 arguments, background, foreground, text and rank (for edge cases)
function create_segment(){
if [[ $4 -lt $RIGHTMOST_RANK ]]; then
local segment="%F{$1}$COMFYLINE_SEGSEP_REVERSE"
echo -n "$segment%K{$1}%F{$2} $3 "
elif [[ $4 -gt $LEFTMOST_RANK ]]; then
local segment="%K{$1}$COMFYLINE_SEGSEP "
echo -n "$segment%F{$2}$3%F{$1} "
elif [[ $4 -eq $RIGHTMOST_RANK ]]; then
if [[ $COMFYLINE_NO_START -eq 1 ]]; then
local segment="%F{$1}$COMFYLINE_SEGSEP_REVERSE"
echo -n "$segment%K{$1}%F{$2} $3"
else
local segment="%F{$1}$COMFYLINE_SEGSEP_REVERSE"
echo -n "$segment%K{$1}%F{$2} $3 %k%F{$1}$COMFYLINE_SEGSEP"
fi
elif [[ $4 -eq $LEFTMOST_RANK ]]; then
if [[ $COMFYLINE_NO_START -eq 1 ]]; then
local segment="%K{$1} "
echo -n "$segment%F{$2}$3%F{$1} "
else
local segment="%F{$1}$COMFYLINE_SEGSEP_REVERSE%K{$1} "
echo -n "$segment%F{$2}$3%F{$1} "
fi
fi
}
### explanation: creates segment seperator with new bg but fg as old bg.
### then prints contents in new fg and prepares for next fg as current bg
# segment functions
function retval(){
if [[ $COMFYLINE_RETVAL_NUMBER -eq 2 ]]; then
symbol="%(?..✘ %?)"
elif [[ $COMFYLINE_RETVAL_NUMBER -eq 1 ]]; then
symbol="%?"
else
symbol="%(?..✘)"
fi
create_segment $RETVAL_b $RETVAL_f $symbol $RETVAL_RANK
}
function hostname(){
if [[ $COMFYLINE_FULL_HOSTNAME -eq 1 ]]; then
create_segment $HOST_b $HOST_f "%M" $HOST_RANK
else
create_segment $HOST_b $HOST_f "%m" $HOST_RANK
fi
}
function username(){
create_segment $USER_b $USER_f "%n" $USER_RANK
}
function dir(){
if [[ $COMFYLINE_FULL_DIR -eq 1 ]]; then
symbol="%d"
else
symbol="%~"
fi
create_segment $DIR_b $DIR_f $symbol $DIR_RANK
}
# variables to set git_prompt info and status
ZSH_THEME_GIT_PROMPT_PREFIX=" \ue0a0 "
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY=""
ZSH_THEME_GIT_PROMPT_CLEAN=""
ZSH_THEME_GIT_PROMPT_ADDED=" ✚"
ZSH_THEME_GIT_PROMPT_MODIFIED=" ±"
ZSH_THEME_GIT_PROMPT_DELETED=" \u2796"
ZSH_THEME_GIT_PROMPT_UNTRACKED=" !"
ZSH_THEME_GIT_PROMPT_RENAMED=" \u21b7"
ZSH_THEME_GIT_PROMPT_UNMERGED=" \u21e1"
ZSH_THEME_GIT_PROMPT_AHEAD=" \u21c5"
ZSH_THEME_GIT_PROMPT_BEHIND=" \u21b1"
ZSH_THEME_GIT_PROMPT_DIVERGED=" \u21b0"
function gitrepo(){
if [ "$(git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]; then
if [[ $(git status --porcelain) == "" ]]; then
if [[ $(command -v git_prompt_info 2> /dev/null) ]]; then
create_segment $GIT_CLEAN_b $GIT_CLEAN_f "$(git_prompt_info)$(git_prompt_status)" $GIT_RANK
else
create_segment $GIT_CLEAN_b $GIT_CLEAN_f "$ZSH_THEME_GIT_PROMPT_PREFIX$(git rev-parse --abbrev-ref HEAD)" $GIT_RANK
fi
else
if [[ $(command -v git_prompt_info 2> /dev/null) ]]; then
create_segment $GIT_b $GIT_f "$(git_prompt_info)$(git_prompt_status)" $GIT_RANK
else
create_segment $GIT_b $GIT_f "$ZSH_THEME_GIT_PROMPT_PREFIX$(git rev-parse --abbrev-ref HEAD)" $GIT_RANK
fi
fi
fi
}
function venv(){
if [ -n "$VIRTUAL_ENV" ]; then
create_segment $VENV_b $VENV_f ${VIRTUAL_ENV:t:gs/%/%%} $VENV_RANK
fi
}
# battery function
# variables
if [[ $COMFYLINE_BATTERY_LOW == "" ]]; then
COMFYLINE_BATTERY_LOW=15
fi
if [[ $COMFYLINE_BATTERY_HIGH == "" ]]; then
COMFYLINE_BATTERY_HIGH=90
fi
if [[ $COMFYLINE_CHARGING_ICON == "" ]]; then
COMFYLINE_CHARGING_ICON="⚡️"
fi
if [[ $COMFYLINE_HIGHCHARGE_ICON == "" ]]; then
COMFYLINE_HIGHCHARGE_ICON="󰁹"
fi
if [[ $COMFYLINE_MIDCHARGE_ICON == "" ]]; then
COMFYLINE_MIDCHARGE_ICON="󰁽"
fi
if [[ $COMFYLINE_LOWCHARGE_ICON == "" ]]; then
COMFYLINE_LOWCHARGE_ICON="󰂃"
fi
function calcbat(){
BAT=""
if [[ $(uname) == "Linux" ]]; then
number=$(ls /sys/class/power_supply/ | grep 'BAT' | wc -l )
if [[ $number -eq 0 ]]; then
return 0
fi
for ((i=0;i<$number;i++));do
capacity=$(cat /sys/class/power_supply/BAT${i}/capacity)
stats=$(cat /sys/class/power_supply/BAT${i}/status)
if [[ $stats == "Charging" ]]; then
stats="$COMFYLINE_CHARGING_ICON"
elif [[ $stats == "Discharging" ]]; then
if [ $capacity -gt $COMFYLINE_BATTERY_HIGH ]; then
stats="$COMFYLINE_HIGHCHARGE_ICON"
elif [ $capacity -lt $COMFYLINE_BATTERY_LOW ]; then
stats="$COMFYLINE_LOWCHARGE_ICON"
else
stats="$COMFYLINE_MIDCHARGE_ICON"
fi
elif [[ $stats == "Not charging" ]]; then
stats="$COMFYLINE_HIGHCHARGE_ICON"
fi
BAT="$BAT$capacity%% $stats "
done
elif [[ $(uname) == "Darwin" ]]; then
battery_details = $(pmset -g batt)
charged=$(echo "$battery_details" | grep -w 'charged')
charging=$(echo "$battery_details" | grep -w 'AC Power')
discharging=$(echo "$battery_details" | grep -w 'Battery Power')
capacity=$(echo "$battery_details" | grep -o "([0-9]*)"%)
if [ -n "$charging" ]; then
stats="$COMFYLINE_CHARGING_ICON"
elif [[ -n "$discharging" ]]; then
if [ $capacity -gt $COMFYLINE_BATTERY_HIGH ]; then
stats="$COMFYLINE_HIGHCHARGE_ICON"
elif [ $capacity -lt $COMFYLINE_BATTERY_LOW ]; then
stats="$COMFYLINE_LOWCHARGE_ICON"
else
stats="$COMFYLINE_MIDCHARGE_ICON"
fi
fi
BAT="$capacity%% $stats"
elif [[ $(uname) == "FreeBSD" || $(uname) == "OpenBSD" ]]; then
capacity=$(apm -l)
stats=$(apm -b)
if [ $stats -eq 3 ]; then
stats="$COMFYLINE_CHARGING_ICON"
else
if [[ $capacity -gt $COMFYLINE_BATTERY_HIGH ]]; then
stats="$COMFYLINE_HIGHCHARGE_ICON"
elif [[ $capacity -lt $COMFYLINE_BATTERY_LOW ]]; then
stats="$COMFYLINE_LOWCHARGE_ICON"
else
stats="$COMFYLINE_MIDCHARGE_ICON"
fi
fi
BAT="$capacity%% $stats"
fi
}
# function to call battery calculation
function currbat(){
if [[ $COMFYLINE_BATTERY_PLUGIN -eq 1 ]]; then
create_segment $BAT_b $BAT_f "$(battery_pct_prompt)" $BAT_RANK
else
calcbat
create_segment $BAT_b $BAT_f "$BAT" $BAT_RANK
fi
}
function currdate(){
info="%D{$COMFYLINE_DATE_FORMAT}"
create_segment $DATE_b $DATE_f $info $DATE_RANK
}
function currtime(){
info="%D{$COMFYLINE_TIME_FORMAT}"
create_segment $TIME_b $TIME_f $info $TIME_RANK
}
function endleft(){
echo -n "%k$COMFYLINE_SEGSEP%f"
}
# parse variables
segments=("retval" "hostname" "username" "dir" "gitrepo" "venv" "currbat" "currtime" "currdate")
segment_ranks=($RETVAL_RANK $HOST_RANK $USER_RANK $DIR_RANK $GIT_RANK $VENV_RANK $BAT_RANK $TIME_RANK $DATE_RANK)
# split into left and right
left_prompt=()
right_prompt=()
left_ranks=()
right_ranks=()
for ((i=1;i<=${#segments[@]};i++)); do
if [[ segment_ranks[$i] -gt 0 ]]; then
left_prompt+=(${segments[$i]})
left_ranks+=(${segment_ranks[$i]})
elif [[ segment_ranks[$i] -lt 0 ]]; then
right_prompt+=(${segments[$i]})
right_ranks+=(${segment_ranks[$i]#-})
fi
done
# sort the prompts according to ranks and find the leftmost and rightmost
# I use the traditional iterative method to find max/min and using count-sort for sorting
LEFTMOST_RANK=100
declare -A sorted_left
for ((i=1;i<=${#left_prompt[@]};i++)); do
if [[ $left_ranks[$i] -lt $LEFTMOST_RANK ]]; then LEFTMOST_RANK=$left_ranks[$i] fi
sorted_left[$left_ranks[$i]]="$left_prompt[$i]"
done
RIGHTMOST_RANK=100
declare -A sorted_right
for ((i=1;i<=${#right_prompt[@]};i++)); do
if [[ $right_ranks[$i] -lt $RIGHTMOST_RANK ]]; then RIGHTMOST_RANK=$right_ranks[$i] fi
sorted_right[$right_ranks[$i]]="$right_prompt[$i]"
done
((RIGHTMOST_RANK*=-1))
# finally make_prompt which makes prompts
make_left_prompt(){
for ((j = 1; j <= ${#left_prompt[@]}; j++)); do
type $sorted_left[$j] &>/dev/null && $sorted_left[$j]
done
}
make_right_prompt(){
for ((j = ${#right_prompt[@]}; j>0; j--)); do
type $sorted_right[$j] &>/dev/null && $sorted_right[$j]
done
}
export PROMPT='%{%f%b%k%}$(make_left_prompt)$(endleft) '
export RPROMPT=' %{%f%b%k%}$(make_right_prompt)' # spaces left so that hiding is triggered
if [[ $COMFYLINE_NEXT_LINE_CHAR == "" ]]; then
COMFYLINE_NEXT_LINE_CHAR='➟'
fi
if [[ $COMFYLINE_NEXT_LINE_CHAR_COLOR == "" ]]; then
COMFYLINE_NEXT_LINE_CHAR_COLOR="grey"
fi
next_line_maker(){
echo -n "%F{$COMFYLINE_NEXT_LINE_CHAR_COLOR}$COMFYLINE_NEXT_LINE_CHAR %f"
}
# setting up typing area
if [[ COMFYLINE_START_NEXT_LINE -eq 2 ]]; then
PROMPT=$PROMPT'
'$(next_line_maker)
elif [[ COMFYLINE_NO_GAP_LINE -eq 1 ]]; then
else
PROMPT='
'$PROMPT
fi

View File

@@ -0,0 +1,7 @@
PROMPT=" %(?:%{$fg_bold[green]%}➜:%{$fg_bold[red]%}➜)"
PROMPT+=' %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✏️ "
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%}) ✅"

View File

@@ -0,0 +1,60 @@
local username="%n"
local path_prefix="%{$fg[yellow]%}["
local path_string="%{$fg[blue]%}%~"
local path_postfix="%{$fg[yellow]%}]"
local prompt_string=" "
local local_time="%T"
local newline=$'\n'
local line_mode=$'\n'
# customize user settings
# prompt symbol
if [ ! -z "$FISHBONEPP_PROMPT" ]; then
prompt_string="$FISHBONEPP_PROMPT"
fi
# username
if [ ! -z "$FISHBONEPP_USER" ]; then
username="$FISHBONEPP_USER"
fi
# time mode
if [ "$FISHBONEPP_TIME" = "12HR" ]; then
local_time="%t"
elif [ "$FISHBONEPP_TIME" = "FULL" ]; then
local_time="%*"
else
local_time="%T"
fi
# new line on start
if [ "$FISHBONEPP_NEWLINE" = false ]; then
newline=''
fi
# line mode
if [ "$FISHBONEPP_LINE_MODE" = "singleline" ]; then
line_mode=''
fi
local host_name="%{$fg[blue]%}${username}"
local time_string="%{$fg[blue]%}${local_time}"
# Make prompt_string red if the previous command failed.
local return_status="%(?:%{$fg[cyan]%}$prompt_string:%{$fg[red]%}$prompt_string%}"
# set the git_prompt_info text
ZSH_THEME_GIT_PROMPT_PREFIX=" %{$fg[blue](%{$reset_color%}%{$fg[yellow]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%{$fg[blue])%}"
ZSH_THEME_GIT_PROMPT_DIRTY="⚡"
ZSH_THEME_GIT_PROMPT_CLEAN=""
PROMPT='${newline}\
${host_name}${hosr}%{$reset_color%}@${time_string} ${line_mode}\
${path_prefix}${path_string}${path_postfix}$(git_prompt_info)$(git_prompt_status) \
${return_status} %{$reset_color%}'
ZSH_THEME_GIT_PROMPT_ADDED=""
ZSH_THEME_GIT_PROMPT_MODIFIED="✒️ "
ZSH_THEME_GIT_PROMPT_DELETED=""
ZSH_THEME_GIT_PROMPT_RENAMED="⁉️ "
ZSH_THEME_GIT_PROMPT_UNMERGED="🥺"
ZSH_THEME_GIT_PROMPT_UNTRACKED="🚝"

BIN
assets/fastfetch/arch.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -0,0 +1,75 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "~/.config/fastfetch/arch.png",
"type": "kitty-direct",
"height": 10,
"width": 20,
"padding": {
"top": 1
}
},
"display": {
"separator": " -> "
},
"modules": [
"break",
{
"type": "title",
"keyWidth": 10,
"format": " {6}{7}{8}"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "kernel",
"key": " ",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " ",
"keyColor": "blue"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
},
{
"type": "uptime",
"key": "󰔛 ",
"keyColor": "green"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break",
]
}

View File

@@ -0,0 +1,73 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"height": 5,
"width": 10,
"padding": {
"top": 1
}
},
"display": {
"separator": " -> "
},
"modules": [
"break",
{
"type": "title",
"keyWidth": 10,
"format": " {6}{7}{8}"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "kernel",
"key": " ",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " ",
"keyColor": "blue"
},
{
"type": "shell",
"key": " ",
"keyColor": "yellow"
},
{
"type": "terminal",
"key": " ",
"keyColor": "blue"
},
/*
{
"type": "packages",
"key": "󰏖 ",
"keyColor": "yellow"
},
*/
{
"type": "memory",
"key": "󰍛 ",
"keyColor": "magenta",
// format: used / total
"format": "{1} / {2}"
},
{
"type": "uptime",
"key": "󰔛 ",
"keyColor": "green"
},
{
"type": "custom",
"format": " ─────────────────────────── "
},
{
"type": "custom",
"format": " \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[90m "
},
"break",
]
}

View File

@@ -0,0 +1,112 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
//"source": "~/.config/fastfetch/nixos.png",
//"type": "kitty-direct",
"height": 15,
"width": 30,
"padding": {
"top": 1
}
},
"display": {
"separator": " ➜ "
},
"modules": [
"break",
{
"type": "os",
"key": " DISTRO",
"keyColor": "31",
},
{
"type": "kernel",
"key": " ├  ",
"keyColor": "31",
},
{
"type": "packages",
"key": " ├ 󰏖 ",
"keyColor": "31",
},
{
"type": "shell",
"key": " └  ",
"keyColor": "31",
},
"break",
{
"type": "wm",
"key": " DE/WM",
"keyColor": "32",
},
{
"type": "wmtheme",
"key": " ├ 󰉼 ",
"keyColor": "32",
},
{
"type": "icons",
"key": " ├ 󰀻 ",
"keyColor": "32",
},
{
"type": "cursor",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminal",
"key": " ├  ",
"keyColor": "32",
},
{
"type": "terminalfont",
"key": " └  ",
"keyColor": "32",
},
"break",
{
"type": "host",
"format": "{2}",
"key": "󰌢 SYSTEM",
"keyColor": "33",
},
{
"type": "cpu",
"format": "{1} ({3}) @ {7} GHz",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "gpu",
"format": "{2}",
"key": " ├ 󰢮 ",
"keyColor": "33",
},
{
"type": "memory",
"key": " ├  ",
"keyColor": "33",
},
{
"type": "swap",
"key": " ├ 󰓡 ",
"keyColor": "33",
},
{
"type": "disk",
"key": " ├ 󰋊 ",
"keyColor": "33",
},
{
"type": "display",
"key": " └  ",
"compactType": "original-with-refresh-rate",
"keyColor": "33",
},
"break",
"break",
]
}

View File

@@ -0,0 +1,128 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"padding": {
"top": 1
}
},
"display": {
"separator": " 󰑃 "
},
"modules": [
"break",
{
"type": "os",
"key": " DISTRO",
"keyColor": "yellow"
},
{
"type": "kernel",
"key": "│ ├",
"keyColor": "yellow"
},
{
"type": "packages",
"key": "│ ├󰏖",
"keyColor": "yellow"
},
{
"type": "shell",
"key": "│ └",
"keyColor": "yellow"
},
{
"type": "wm",
"key": " DE/WM",
"keyColor": "blue"
},
{
"type": "wmtheme",
"key": "│ ├󰉼",
"keyColor": "blue"
},
{
"type": "icons",
"key": "│ ├󰀻",
"keyColor": "blue"
},
{
"type": "cursor",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminalfont",
"key": "│ ├",
"keyColor": "blue",
},
{
"type": "terminal",
"key": "│ └",
"keyColor": "blue"
},
{
"type": "host",
"key": "󰌢 SYSTEM",
"keyColor": "green"
},
{
"type": "cpu",
"key": "│ ├󰻠",
"keyColor": "green"
},
{
"type": "gpu",
"key": "│ ├󰻑",
"format": "{2}",
"keyColor": "green"
},
{
"type": "display",
"key": "│ ├󰍹",
"keyColor": "green",
"compactType": "original-with-refresh-rate"
},
{
"type": "memory",
"key": "│ ├󰾆",
"keyColor": "green"
},
{
"type": "swap",
"key": "│ ├󰓡",
"keyColor": "green"
},
{
"type": "uptime",
"key": "│ ├󰅐",
"keyColor": "green"
},
{
"type": "display",
"key": "│ └󰍹",
"keyColor": "green"
},
{
"type": "sound",
"key": " AUDIO",
"format": "{2}",
"keyColor": "magenta"
},
{
"type": "player",
"key": "│ ├󰥠",
"keyColor": "magenta"
},
{
"type": "media",
"key": "│ └󰝚",
"keyColor": "magenta"
},
{
"type": "custom",
"format": "\u001b[90m \u001b[31m \u001b[32m \u001b[33m \u001b[34m \u001b[35m \u001b[36m \u001b[37m \u001b[38m \u001b[39m \u001b[39m  \u001b[38m \u001b[37m \u001b[36m \u001b[35m \u001b[34m \u001b[33m \u001b[32m \u001b[31m \u001b[90m "
},
"break",
]
}

View File

@@ -0,0 +1,17 @@
[Settings]
gtk-theme-name=Andromeda-dark
gtk-icon-theme-name=Flat-Remix-Blue-Dark
gtk-font-name=Fira Code Semi-Bold 14
gtk-cursor-theme-name=Bibata-Modern-Ice
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_ICONS
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=1

View File

@@ -0,0 +1,7 @@
Arch-Hyprland - Sharing a scripts to install hyprland git or non-git versions
Basically created this script so I can easily switch to git and non-git version of hyprland on Arch Linux
chmod +x actions.sh
./actions.sh

View File

@@ -0,0 +1,63 @@
#!/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)
WARNING=$(tput setaf 1)
YELLOW=$(tput setaf 3)
BLUE=$(tput setaf 4)
RESET=$(tput sgr0)
# Make all scripts in the scripts directory executable
echo -e "${INFO} Making all files in the ${BLUE}scripts${RESET} directory executable..."
chmod +x ./scripts/*
printf "\n%.0s" {1..2}
while true; do
echo -e "${BLUE} Please choose an option:${RESET}"
echo -e "${YELLOW} -- 1 - Install non-git Hyprland version${RESET}"
echo -e "${YELLOW} -- 2 - Install git Hyprland version${RESET}"
echo -e "${YELLOW} -- 3 - Update Hyprland-git packages${RESET}"
echo -e "${MAGENTA} -- 4 - Quit${RESET}"
read -p "${CAT} Enter your choice [1, 2, or 3]: " choice
case $choice in
1)
printf "\n${OK} You chose ${BLUE}non-git version of Hyprland${RESET}....... executing...\n"
echo -e "${YELLOW} Uninstalling some hyprland packages first...${RESET}"
./scripts/uninstall.sh &&
./scripts/install-hyprland.sh
break
;;
2)
printf "\n${OK} You chose ${BLUE}git version of Hyprland${RESET}....... executing...\n"
echo -e "${YELLOW} Uninstalling some hyprland packages....${RESET}"
./scripts/uninstall.sh &&
./scripts/install-hyprland-git.sh
break
;;
3)
printf "\n${OK} You chose ${BLUE} to update Hyprland-git packages${RESET}....... executing...\n"
./scripts/install-hyprland-git.sh
break
;;
4)
echo -e "${MAGENTA} You have cancel it. Good Bye!!...${RESET}"
printf "\n%.0s" {1..2}
break
;;
*)
echo -e "\n${WARNING} There are only 4 Choices!!!! 1 2 3 or 4. Enter 1, 2, 3, or 4 only.${RESET}"
;;
esac
done

View File

@@ -0,0 +1,86 @@
#!/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)"
BLUE="$(tput setaf 4)"
RESET="$(tput sgr0)"
ISAUR=$(command -v yay || command -v paru)
printf "\n%.0s" {1..2}
# List of packages to install / update
packages=(
"hyprutils-git"
"hyprcursor-git"
"hyprwayland-scanner-git"
"aquamarine-git"
"hyprgraphics-git"
"hyprlang-git"
"hyprland-protocols-git"
"hyprland-qt-support-git"
"hyprland-qtutils-git"
"hyprland-git"
"hyprlock-git"
"hypridle-git"
"xdg-desktop-portal-hyprland-git"
"hyprpolkitagent-git"
)
# rotating stars progress
show_progress() {
spin='-'
while ps | grep $1 &> /dev/null; do
echo -ne "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! $spin"
sleep 0.3
case $spin in
'-') spin='\';;
'\') spin='|';;
'|') spin='/';;
'/') spin='-';;
esac
done
echo -en "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! .... Done!"
}
# Clearing cache
echo -n "${CAT} Recommend (choose y to all) to clear ${MAGENTA}pacman and aur helper${RESET} cache ..."
printf "\n%.0s" {1..1}
sudo pacman -Scc &&
$ISAUR -Scc
printf "\n%.0s" {1..1}
printf "${NOTE} Installing ${BLUE}git hyprland version${RESET}....."
printf "\n%.0s" {1..1}
# Installing packages
for package in "${packages[@]}"; do
$ISAUR -S --noconfirm "$package" &>/dev/null &
pid=$!
show_progress $pid $package
wait $pid
if [ $? -eq 0 ]; then
echo -e "\n${OK} ${ORANGE}$package${RESET} successfully installed."
printf "\n%.0s" {1..1}
else
echo -e "\n${ERROR} Failed to install ${MAGENTA}$package${RESET}"
printf "\n%.0s" {1..1}
fi
done
printf "\n%.0s" {1..1}
printf "${OK} Done!! Now you NEED to ${YELLOW}EXIT${RESET} Hyprland and Re-Login! Enjoy!!!!"
printf "\n%.0s" {1..2}

View File

@@ -0,0 +1,80 @@
#!/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)"
BLUE="$(tput setaf 4)"
RESET="$(tput sgr0)"
ISAUR=$(command -v yay || command -v paru)
printf "\n%.0s" {1..2}
# List of packages to install / update
packages=(
"aquamarine"
"hyprutils"
"hyprcursor"
"hyprwayland-scanner"
"hyprgraphics"
"hyprlang"
"hyprland-protocols"
"hyprland-qt-support"
"hyprland-qtutils"
"hyprland"
"hyprlock"
"hypridle"
"xdg-desktop-portal-hyprland"
"hyprpolkitagent"
)
# rotating stars progress
show_progress() {
spin='-'
while ps | grep $1 &> /dev/null; do
echo -ne "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! $spin"
sleep 0.3
case $spin in
'-') spin='\';;
'\') spin='|';;
'|') spin='/';;
'/') spin='-';;
esac
done
echo -en "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! .... Done!"
}
printf "\n%.0s" {1..1}
printf "${NOTE} Installing ${BLUE}non-git hyprland version${RESET}....."
printf "\n%.0s" {1..1}
# Installing packages
for package in "${packages[@]}"; do
$ISAUR -S --noconfirm "$package" &>/dev/null &
pid=$!
show_progress $pid $package
wait $pid
if [ $? -eq 0 ]; then
echo -e "\n${OK} ${ORANGE}$package${RESET} successfully installed."
printf "\n%.0s" {1..1}
else
echo -e "\n${ERROR} Failed to install ${MAGENTA}$package${RESET}"
printf "\n%.0s" {1..1}
fi
done
printf "\n%.0s" {1..1}
printf "${OK} Done!! Now you NEED to ${YELLOW}EXIT${RESET} Hyprland and Re-Login! Enjoy!!!!"
printf "\n%.0s" {1..2}

View File

@@ -0,0 +1,90 @@
#!/bin/bash
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
# uninstalling hyprland packages
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)"
WARNING="$(tput setaf 1)"
YELLOW="$(tput setaf 3)"
BLUE="$(tput setaf 4)"
RESET="$(tput sgr0)"
# List of packages to uninstall (including git versions)
packages=(
"aquamarine"
"aquamarine-git"
"hyprutils"
"hyprutils-git"
"hyprcursor"
"hyprcursor-git"
"hyprwayland-scanner"
"hyprwayland-scanner-git"
"hyprgraphics"
"hyprgraphics-git"
"hyprlang"
"hyprlang-git"
"hyprland-protocols"
"hyprland-protocols-git"
"hyprland-qt-support"
"hyprland-qt-support-git"
"hyprland-qtutils"
"hyprland-qtutils-git"
"hyprland"
"hyprland-git"
"hyprlock"
"hyprlock-git"
"hypridle"
"hypridle-git"
"xdg-desktop-portal-hyprland"
"xdg-desktop-portal-hyprland-git"
"hyprpolkitagent"
"hyprpolkitagent-git"
)
# Function for uninstall packages
uninstall_package() {
local pkg="$1"
if pacman -Qi "$pkg" &>> /dev/null ; then
echo -e "${NOTE} Uninstalling $pkg ..."
sudo pacman -Rnsdd --noconfirm "$pkg" | grep -v "error: target not found"
if ! pacman -Qi "$pkg" &>> /dev/null ; then
echo -e "\e[1A\e[K${OK} $pkg was uninstalled."
else
echo -e "\e[1A\e[K${ERROR} $pkg failed to uninstall"
return 1
fi
else
echo -e "${NOTE} $pkg is not installed, skipping uninstallation."
fi
return 0
}
printf "\n%s - Removing Hyprland Packages including -git versions \n" "${NOTE}"
# Track failures but continue with next packages
overall_failed=0
for PKG in "${packages[@]}"; do
uninstall_package "$PKG"
if [ $? -ne 0 ]; then
overall_failed=1
fi
done
# Remove specific configuration file since on my experience, it conflicts.
# Dont worry, it will be reinstalled by either xdph non-git or git version
sudo rm -rf "/usr/share/xdg-desktop-portal/hyprland-portals.conf"
if [ $overall_failed -eq 0 ]; then
echo -e "${OK} All specified hyprland packages have been uninstalled."
fi
printf "\n%.0s" {1..2}

View File

@@ -1,5 +0,0 @@
[Desktop Entry]
Name=Hyprland
Comment=An intelligent dynamic tiling Wayland compositor
Exec=Hyprland
Type=Application

BIN
assets/sddm.png Normal file

Binary file not shown.

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,22 +1,35 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# base devel # # base-devel + archlinux-keyring #
base=( base=(
base-devel base-devel
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 base-devel \n" "${NOTE}"
for PKG1 in "${base[@]}"; do for PKG1 in "${base[@]}"; do
install_package_pacman "$PKG1" | tee -a "$LOG" echo "Installing $PKG1 with pacman..."
install_package_pacman "$PKG1" "$LOG"
done done
clear printf "\n%.0s" {1..1}

View File

@@ -1,121 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hyprland Packages #
# edit your packages desired here.
# WARNING! If you remove packages here, dotfiles may not work properly.
# and also, ensure that packages are present in AUR and official Arch Repo
# add packages wanted here
Extra=(
)
hypr_package=(
cliphist
curl
grim
gvfs
gvfs-mtp
imagemagick
jq
kitty
kvantum
nano
network-manager-applet
pamixer
pavucontrol
pipewire-alsa
playerctl
polkit-gnome
python-requests
python-pywal
qt5ct
qt6ct
qt6-svg
rofi-lbonn-wayland-git
slurp
swappy
swayidle
swaylock-effects-git
swaync
swww
waybar
wget
wl-clipboard
wlogout
xdg-user-dirs
xdg-utils
yad
)
# the following packages can be deleted. however, dotfiles may not work properly
hypr_package_2=(
brightnessctl
btop
cava
eog
gnome-system-monitor
mousepad
mpv
mpv-mpris
nvtop
nwg-look-bin
pacman-contrib
vim
yt-dlp
)
fonts=(
adobe-source-code-pro-fonts
noto-fonts-emoji
otf-font-awesome
ttf-droid
ttf-fira-code
ttf-jetbrains-mono
ttf-jetbrains-mono-nerd
)
# List of packages to uninstall as it conflicts with swaync or causing swaync to not function properly
uninstall=(
dunst
mako
)
## 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 )"
# Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
# 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"
# Installation of main components
printf "\n%s - Installing hyprland packages.... \n" "${NOTE}"
for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${fonts[@]}" "${Extra[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the log"
exit 1
fi
done
# Checking if mako or dunst is installed
printf "\n%s - Checking if mako or dunst are installed and removing for swaync to work properly \n" "${NOTE}"
for PKG in "${uninstall[@]}"; do
uninstall_package "$PKG" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG uninstallation had failed, please check the log"
exit 1
fi
done
clear

127
install-scripts/01-hypr-pkgs.sh Executable file
View File

@@ -0,0 +1,127 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hyprland Packages #
# edit your packages desired here.
# WARNING! If you remove packages here, dotfiles may not work properly.
# and also, ensure that packages are present in AUR and official Arch Repo
# add packages wanted here
Extra=(
)
hypr_package=(
#aylurs-gtk-shell
bc
cliphist
curl
grim
gvfs
gvfs-mtp
hyprpolkitagent
imagemagick
inxi
jq
kitty
kvantum
libspng
nano
network-manager-applet
pamixer
pavucontrol
playerctl
python-requests
python-pyquery
qt5ct
qt6ct
qt6-svg
rofi
slurp
swappy
swaync
swww
unzip # needed later
wallust
waybar
wget
wl-clipboard
wlogout
xdg-user-dirs
xdg-utils
yad
)
# the following packages can be deleted. however, dotfiles may not work properly
hypr_package_2=(
brightnessctl
btop
cava
loupe
fastfetch
gnome-system-monitor
mousepad
mpv
mpv-mpris
nvtop
nwg-look
nwg-displays
pacman-contrib
qalculate-gtk
yt-dlp
)
# List of packages to uninstall as it conflicts some packages
uninstall=(
aylurs-gtk-shell
dunst
cachyos-hyprland-settings
mako
rofi
wallust-git
rofi-lbonn-wayland
rofi-lbonn-wayland-git
)
## 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)_hypr-pkgs.log"
# conflicting packages removal
overall_failed=0
printf "\n%s - ${SKY_BLUE}Removing some packages${RESET} as it conflicts with KooL's Hyprland Dots \n" "${NOTE}"
for PKG in "${uninstall[@]}"; do
uninstall_package "$PKG" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
overall_failed=1
fi
done
if [ $overall_failed -ne 0 ]; then
echo -e "${ERROR} Some packages failed to uninstall. Please check the log."
fi
printf "\n%.0s" {1..1}
# Installation of main components
printf "\n%s - Installing ${SKY_BLUE}KooL's Hyprland necessary packages${RESET} .... \n" "${NOTE}"
for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do
install_package "$PKG1" "$LOG"
done
printf "\n%.0s" {1..2}

View File

@@ -0,0 +1,89 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Final checking if packages are installed
# NOTE: These package check are only the essentials
packages=(
cliphist
kvantum
rofi-wayland
imagemagick
swaync
swww
wallust
waybar
wl-clipboard
wlogout
kitty
hypridle
hyprlock
hyprland
)
# Local packages that should be in /usr/local/bin/
local_pkgs_installed=(
)
## 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 )"
# 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
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
# Set the name of the log file to include the current date and time
LOG="Install-Logs/00_CHECK-$(date +%d-%H%M%S)_installed.log"
printf "\n%s - Final Check if all ${SKY_BLUE}Essential packages${RESET} were installed \n" "${NOTE}"
# Initialize an empty array to hold missing packages
missing=()
local_missing=()
# Function to check if a packages are installed using pacman
is_installed_pacman() {
pacman -Qi "$1" &>/dev/null
}
# Loop through each package
for pkg in "${packages[@]}"; do
# Check if the packages are installed
if ! is_installed_pacman "$pkg"; then
missing+=("$pkg")
fi
done
# Check for local packages
for pkg1 in "${local_pkgs_installed[@]}"; do
if ! [ -f "/usr/local/bin/$pkg1" ]; then
local_missing+=("$pkg1")
fi
done
# Log missing packages
if [ ${#missing[@]} -eq 0 ] && [ ${#local_missing[@]} -eq 0 ]; then
echo "${OK} GREAT! All ${YELLOW}essential packages${RESET} have been successfully installed." | tee -a "$LOG"
else
if [ ${#missing[@]} -ne 0 ]; then
echo "${WARN} The following packages are not installed and will be logged:"
for pkg in "${missing[@]}"; do
echo "${WARNING}$pkg${RESET}"
echo "$pkg" >> "$LOG"
done
fi
if [ ${#local_missing[@]} -ne 0 ]; then
echo "${WARN} The following local packages are missing from /usr/local/bin/ and will be logged:"
for pkg1 in "${local_missing[@]}"; do
echo "${WARNING}$pkg1${REST} is not installed. Can't find it in /usr/local/bin/"
echo "$pkg1" >> "$LOG"
done
fi
echo "${NOTE} Missing packages logged at $(date)" >> "$LOG"
fi

View File

@@ -8,75 +8,125 @@ set -e
OK="$(tput setaf 2)[OK]$(tput sgr0)" OK="$(tput setaf 2)[OK]$(tput sgr0)"
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
WARN="$(tput setaf 166)[WARN]$(tput sgr0)" INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
ORANGE=$(tput setaf 166) MAGENTA="$(tput setaf 5)"
YELLOW=$(tput setaf 3) ORANGE="$(tput setaf 214)"
RESET=$(tput sgr0) WARNING="$(tput setaf 1)"
YELLOW="$(tput setaf 3)"
GREEN="$(tput setaf 2)"
BLUE="$(tput setaf 4)"
SKY_BLUE="$(tput setaf 6)"
RESET="$(tput sgr0)"
# Create Directory for Install Logs # Create Directory for Install Logs
if [ ! -d Install-Logs ]; then if [ ! -d Install-Logs ]; then
mkdir Install-Logs mkdir Install-Logs
fi fi
# Function for installing packages # Show progress function
show_progress() {
local pid=$1
local package_name=$2
local spin_chars=("●○○○○○○○○○" "○●○○○○○○○○" "○○●○○○○○○○" "○○○●○○○○○○" "○○○○●○○○○" \
"○○○○○●○○○○" "○○○○○○●○○○" "○○○○○○○●○○" "○○○○○○○○●○" "○○○○○○○○○●")
local i=0
tput civis
printf "\r${NOTE} Installing ${YELLOW}%s${RESET} ..." "$package_name"
while ps -p $pid &> /dev/null; do
printf "\r${NOTE} Installing ${YELLOW}%s${RESET} %s" "$package_name" "${spin_chars[i]}"
i=$(( (i + 1) % 10 ))
sleep 0.3
done
printf "\r${NOTE} Installing ${YELLOW}%s${RESET} ... Done!%-20s \n" "$package_name" ""
tput cnorm
}
# Function to install packages with pacman
install_package_pacman() { install_package_pacman() {
# Checking if package is already installed # Check if package is already installed
if pacman -Q "$1" &>/dev/null ; then if pacman -Q "$1" &>/dev/null ; then
echo -e "${OK} $1 is already installed. Skipping..." echo -e "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..."
else else
# Package not installed # Run pacman and redirect all output to a log file
echo -e "${NOTE} Installing $1 ..." (
sudo pacman -S --noconfirm "$1" 2>&1 | tee -a "$LOG" stdbuf -oL sudo pacman -S --noconfirm "$1" 2>&1
# Making sure package is installed ) >> "$LOG" 2>&1 &
PID=$!
show_progress $PID "$1"
# Double check if package is installed
if pacman -Q "$1" &>/dev/null ; then if pacman -Q "$1" &>/dev/null ; then
echo -e "${OK} $1 was installed." echo -e "${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
else else
# Something is missing, exiting to review log echo -e "\n${ERROR} ${YELLOW}$1${RESET} failed to install. Please check the $LOG. You may need to install manually."
echo -e "${ERROR} $1 failed to install. Please check the $LOG. You may need to install manually."
exit 1
fi fi
fi fi
} }
ISAUR=$(command -v yay || command -v paru) ISAUR=$(command -v yay || command -v paru)
# Function to install packages with either yay or paru
# Function for installing packages
install_package() { install_package() {
# Checking if package is already installed
if $ISAUR -Q "$1" &>> /dev/null ; then if $ISAUR -Q "$1" &>> /dev/null ; then
echo -e "${OK} $1 is already installed. Skipping..." echo -e "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..."
else else
# Package not installed (
echo -e "${NOTE} Installing $1 ..." stdbuf -oL $ISAUR -S --noconfirm "$1" 2>&1
$ISAUR -S --noconfirm "$1" 2>&1 | tee -a "$LOG" ) >> "$LOG" 2>&1 &
# Making sure package is installed PID=$!
show_progress $PID "$1"
# Double check if package is installed
if $ISAUR -Q "$1" &>> /dev/null ; then if $ISAUR -Q "$1" &>> /dev/null ; then
echo -e "\e[1A\e[K${OK} $1 was installed." echo -e "${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
else else
# Something is missing, exiting to review log # Something is missing, exiting to review log
echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :(" echo -e "\n${ERROR} ${YELLOW}$1${RESET} failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :("
exit 1
fi fi
fi fi
} }
# Function for uninstalling packages # Function to just install packages with either yay or paru without checking if installed
uninstall_package() { install_package_f() {
# Checking if package is installed (
if pacman -Qi "$1" &>> /dev/null ; then stdbuf -oL $ISAUR -S --noconfirm "$1" 2>&1
# Package is installed ) >> "$LOG" 2>&1 &
echo -e "${NOTE} Uninstalling $1 ..." PID=$!
sudo pacman -Rns --noconfirm "$1" 2>&1 | tee -a "$LOG" show_progress $PID "$1"
# Making sure package is uninstalled
if ! pacman -Qi "$1" &>> /dev/null ; then # Double check if package is installed
echo -e "\e[1A\e[K${OK} $1 was uninstalled." if $ISAUR -Q "$1" &>> /dev/null ; then
echo -e "${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
else else
# Something went wrong, exiting to review log # Something is missing, exiting to review log
echo -e "\e[1A\e[K${ERROR} $1 failed to uninstall. Please check the log." echo -e "\n${ERROR} ${YELLOW}$1${RESET} failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :("
exit 1
fi
fi fi
} }
# Function for removing packages
uninstall_package() {
local pkg="$1"
# Checking if package is installed
if pacman -Qi "$pkg" &>/dev/null; then
echo -e "${NOTE} removing $pkg ..."
sudo pacman -R --noconfirm "$pkg" 2>&1 | tee -a "$LOG" | grep -v "error: target not found"
if ! pacman -Qi "$pkg" &>/dev/null; then
echo -e "\e[1A\e[K${OK} $pkg removed."
else
echo -e "\e[1A\e[K${ERROR} $pkg Removal failed. No actions required."
return 1
fi
else
echo -e "${INFO} Package $pkg not installed, skipping."
fi
return 0
}

View File

@@ -2,56 +2,35 @@
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Adding users into input group # # Adding users into input group #
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh
fi
## 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"
while true; do
echo "${WARN} This script will add your user to the 'input' group."
echo "${NOTE} Please note that adding yourself to the 'input' group might be necessary for waybar keyboard-state functionality."
if [[ -z $input_group_choid ]]; then
read -p "${YELLOW}Do you want to proceed? (y/n): ${RESET}" input_group_choid
fi
if [[ $input_group_choid == "y" || $input_group_choid == "Y" ]]; then
# Check if the 'input' group exists # Check if the 'input' group exists
if grep -q '^input:' /etc/group; then if grep -q '^input:' /etc/group; then
echo "${OK} 'input' group exists." echo "${OK} ${MAGENTA}input${RESET} group exists."
else else
echo "${NOTE} 'input' group doesn't exist. Creating 'input' group..." echo "${NOTE} ${MAGENTA}input${RESET} group doesn't exist. Creating ${MAGENTA}input${RESET} group..."
sudo groupadd input sudo groupadd input
echo "${MAGENTA}input${RESET} group created" >> "$LOG"
# Log the creation of the 'input' group
echo "'input' group created" >> "$LOG"
fi fi
# Add the user to the input group # Add the user to the 'input' group
sudo usermod -aG input "$(whoami)" sudo usermod -aG input "$(whoami)"
echo "${OK} User added to the 'input' group. Changes will take effect after you log out and log back in." echo "${OK} ${YELLOW}user${RESET} added to the ${MAGENTA}input${RESET} group. Changes will take effect after you log out and log back in." >> "$LOG"
# Log the addition of the user to the 'input' group printf "\n%.0s" {1..2}
echo "User added to 'input' group" >> "$LOG"
break # Break out of the loop if 'yes' is chosen
elif [[ $input_group_choid == "n" || $input_group_choid == "N" ]]; then
echo "${NOTE} No changes made. Exiting the script."
break # Break out of the loop if 'no' is chosen
else
echo "${ERROR} Invalid choice. Please enter 'y' for yes or 'n' for no."
fi
done
clear

138
install-scripts/ags.sh Executable file
View File

@@ -0,0 +1,138 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Aylur's GTK Shell v 1.9.0 #
# for desktop overview
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh
fi
ags=(
typescript
npm
meson
glib2-devel
gjs
gtk3
gtk-layer-shell
upower
networkmanager
gobject-introspection
libdbusmenu-gtk3
libsoup3
)
# specific tags to download
ags_tag="v1.9.0"
## 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)_ags.log"
MLOG="install-$(date +%d-%H%M%S)_ags2.log"
# Check if AGS is installed
if command -v ags &>/dev/null; then
AGS_VERSION=$(ags -v | awk '{print $NF}')
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
printf "\n%s - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies \n" "${NOTE}"
# Installing ags Dependencies
for PKG1 in "${ags[@]}"; do
install_package "$PKG1" "$LOG"
done
printf "\n%.0s" {1..1}
# ags v1
printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n"
# Check if directory exists and remove it
if [ -d "ags_v1.9.0" ]; then
printf "${NOTE} Removing existing ags directory...\n"
rm -rf "ags_v1.9.0"
fi
printf "\n%.0s" {1..1}
printf "${INFO} Kindly Standby...cloning and compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}...\n"
printf "\n%.0s" {1..1}
# Clone repository with the specified tag and capture git output into MLOG
if git clone --depth=1 https://github.com/JaKooLit/ags_v1.9.0.git; then
cd ags_v1.9.0 || exit 1
npm install
meson setup build
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"
# Patch installed AGS launcher to ensure GI typelibs in /usr/local/lib are discoverable in GJS ESM
printf "${NOTE} Applying AGS launcher patch for GI typelibs search path...\n"
LAUNCHER="/usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags"
if sudo test -f "$LAUNCHER"; then
# 1) Switch from GIRepository ESM import to GLib and drop deprecated prepend_* calls
sudo sed -i \
-e 's|^import GIR from "gi://GIRepository?version=2.0";$|import GLib from "gi://GLib";|' \
-e '/GIR.Repository.prepend_search_path/d' \
-e '/GIR.Repository.prepend_library_path/d' \
"$LAUNCHER"
# 2) Inject GI_TYPELIB_PATH export right after the GLib import
sudo awk '{print} $0 ~ /^import GLib from "gi:\/\/GLib";$/ {print "const __old = GLib.getenv(\"GI_TYPELIB_PATH\");"; print "GLib.setenv(\"GI_TYPELIB_PATH\", \"/usr/local/lib\" + (__old ? \":\" + __old : \"\"), true);"}' "$LAUNCHER" | sudo tee "$LAUNCHER" >/dev/null
printf "${OK} AGS launcher patched.\n"
# Create an env-setting wrapper for AGS to ensure GI typelibs/libs are discoverable
printf "${NOTE} Creating env wrapper /usr/local/bin/ags...\n"
MAIN_JS="/usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags"
if ! sudo test -f "$MAIN_JS"; then
MAIN_JS="/usr/share/com.github.Aylur.ags/com.github.Aylur.ags"
fi
sudo tee /usr/local/bin/ags >/dev/null <<WRAP
#!/usr/bin/env bash
set -euo pipefail
cd "$HOME" 2>/dev/null || true
# Ensure GI typelibs and native libs are discoverable before gjs ESM loads
export GI_TYPELIB_PATH="/usr/local/lib64:/usr/local/lib:/usr/local/lib64/girepository-1.0:/usr/local/lib/girepository-1.0:/usr/lib64/girepository-1.0:/usr/lib/girepository-1.0:/usr/lib64/ags:/usr/lib/ags:${GI_TYPELIB_PATH-}"
export LD_LIBRARY_PATH="/usr/local/lib64:/usr/local/lib:${LD_LIBRARY_PATH-}"
exec /usr/bin/gjs -m "$MAIN_JS" -- "$@"
WRAP
sudo chmod 0755 /usr/local/bin/ags
# Ensure ESM entry is readable by gjs
sudo chmod 0644 /usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags 2>/dev/null || true
sudo chmod 0644 /usr/share/com.github.Aylur.ags/com.github.Aylur.ags 2>/dev/null || true
printf "${OK} AGS wrapper installed at /usr/local/bin/ags\n"
else
printf "${WARN} Launcher not found at $LAUNCHER, skipping patch.\n"
fi
else
echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG"
fi
# Move logs to Install-Logs directory
mv "$MLOG" ../Install-Logs/ || true
cd ..
else
echo -e "\n${ERROR} Failed to download ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Please check your connection\n" 2>&1 | tee -a "$LOG"
mv "$MLOG" ../Install-Logs/ || true
exit 1
fi
printf "\n%.0s" {1..2}

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,26 +9,30 @@ blueman
) )
## 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"
# Bluetooth # Bluetooth
printf "${NOTE} Installing Bluetooth Packages...\n" printf "${NOTE} Installing ${SKY_BLUE}Bluetooth${RESET} Packages...\n"
for BLUE in "${blue[@]}"; do for BLUE in "${blue[@]}"; do
install_package "$BLUE" 2>&1 | tee -a "$LOG" install_package "$BLUE" "$LOG"
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $BLUE install had failed, please check the install.log"; exit 1; }
done done
printf " Activating Bluetooth Services...\n" printf " Activating ${YELLOW}Bluetooth${RESET} Services...\n"
sudo systemctl enable --now bluetooth.service 2>&1 | tee -a "$LOG" sudo systemctl enable --now bluetooth.service 2>&1 | tee -a "$LOG"
clear printf "\n%.0s" {1..2}

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

@@ -0,0 +1,37 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hyprland-Dots to download from main #
## 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
printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots${RESET}....\n"
if [ -d Hyprland-Dots ]; then
cd Hyprland-Dots
git stash && git pull
chmod +x copy.sh
./copy.sh
else
if git clone --depth=1 https://github.com/JaKooLit/Hyprland-Dots; then
cd Hyprland-Dots || exit 1
chmod +x copy.sh
./copy.sh
else
echo -e "$ERROR Can't download ${YELLOW}KooL's Hyprland-Dots${RESET} . Check your internet connection"
fi
fi
printf "\n%.0s" {1..2}

View File

@@ -1,100 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hyprland-Dots to download from Releases #
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh
fi
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
printf "${NOTE} Downloading / Checking for existing Hyprland-Dots.tar.gz...\n"
# Check if Hyprland-Dots.tar.gz exists
if [ -f Hyprland-Dots.tar.gz ]; then
printf "${NOTE} Hyprland-Dots.tar.gz found.\n"
# Get the version from the existing tarball filename
existing_version=$(echo Hyprland-Dots.tar.gz | grep -oP 'v\d+\.\d+\.\d+' | sed 's/v//')
# Fetch the tag_name for the latest release using the GitHub API
latest_version=$(curl -s https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/latest | grep "tag_name" | cut -d '"' -f 4 | sed 's/v//')
# Check if versions match
if [ "$existing_version" = "$latest_version" ]; then
echo -e "${OK} Hyprland-Dots.tar.gz is up-to-date with the latest release ($latest_version)."
# Sleep for 10 seconds before exiting
printf "${NOTE} No update found. Sleeping for 10 seconds...\n"
sleep 10
exit 0
else
echo -e "${WARN} Hyprland-Dots.tar.gz is outdated (Existing version: $existing_version, Latest version: $latest_version)."
if [[ -z $upgrade_choice ]]; then
read -p "Do you want to upgrade to the latest version? (y/n): " upgrade_choice
fi
if [ "$upgrade_choice" = "y" ]; then
echo -e "${NOTE} Proceeding to download the latest release." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
# Delete existing directories starting with JaKooLit-Hyprland-Dots
find . -type d -name 'JaKooLit-Hyprland-Dots*' -exec rm -rf {} +
rm -f Hyprland-Dots.tar.gz
printf "${WARN} Removed existing Hyprland-Dots.tar.gz.\n"
else
echo -e "${NOTE} User chose not to upgrade. Exiting..." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
exit 0
fi
fi
fi
printf "${NOTE} Downloading the latest Hyprland source code release...\n"
# Fetch the tag name for the latest release using the GitHub API
latest_tag=$(curl -s https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/latest | grep "tag_name" | cut -d '"' -f 4)
# Check if the tag is obtained successfully
if [ -z "$latest_tag" ]; then
echo -e "${ERROR} Unable to fetch the latest tag information." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
exit 1
fi
# Fetch the tarball URL for the latest release using the GitHub API
latest_tarball_url=$(curl -s https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/latest | grep "tarball_url" | cut -d '"' -f 4)
# Check if the URL is obtained successfully
if [ -z "$latest_tarball_url" ]; then
echo -e "${ERROR} Unable to fetch the tarball URL for the latest release." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
exit 1
fi
# Get the filename from the URL and include the tag name in the file name
file_name="Hyprland-Dots-${latest_tag}.tar.gz"
# Download the latest release source code tarball to the current directory
if curl -L "$latest_tarball_url" -o "$file_name"; then
# Extract the contents of the tarball
tar -xzf "$file_name" || exit 1
# delete existing Hyprland-Dots
rm -rf JaKooLit-Hyprland-Dots
# Identify the extracted directory
extracted_directory=$(tar -tf "$file_name" | grep -o '^[^/]\+' | uniq)
# Rename the extracted directory to JaKooLit-Hyprland-Dots
mv "$extracted_directory" JaKooLit-Hyprland-Dots || exit 1
cd "JaKooLit-Hyprland-Dots" || exit 1
# Set execute permission for copy.sh and execute it
chmod +x copy.sh
./copy.sh
echo -e "${OK} Latest Dotfiles release downloaded, extracted, and processed successfully. Check JaKooLit-Hyprland-Dots folder for more detailed install logs" 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
else
echo -e "${ERROR} Failed to download the latest Dotfiles release." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
exit 1
fi
clear

48
install-scripts/fonts.sh Executable file
View File

@@ -0,0 +1,48 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Fonts #
# These fonts are minimun required for pre-configured dots to work. You can add here as required
# WARNING! If you remove packages here, dotfiles may not work properly.
# and also, ensure that packages are present in AUR and official Arch Repo
fonts=(
adobe-source-code-pro-fonts
noto-fonts-emoji
otf-font-awesome
ttf-droid
ttf-fira-code
ttf-fantasque-nerd
ttf-jetbrains-mono
ttf-jetbrains-mono-nerd
ttf-victor-mono
noto-fonts
)
## 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)_fonts.log"
# Installation of main components
printf "\n%s - Installing necessary ${SKY_BLUE}fonts${RESET}.... \n" "${NOTE}"
for PKG1 in "${fonts[@]}"; do
install_package "$PKG1" "$LOG"
done
printf "\n%.0s" {1..2}

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"
@@ -24,31 +27,24 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_themes.log"
# installing engine needed for gtk themes # installing engine needed for gtk themes
for PKG1 in "${engine[@]}"; do for PKG1 in "${engine[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG" install_package "$PKG1" "$LOG"
if [ $? -ne 0 ]; then
echo -e "\033[1A\033[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1
fi
done 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 Tokyo Theme 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 Tokyo Theme GTK themes and Icons 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 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 Tokyo Theme 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
tar -xf "assets/Bibata-Modern-Ice.tar.xz" -C ~/.icons 2>&1 | tee -a "$LOG" printf "\n%.0s" {1..2}
echo "$OK Extracted Bibata-Modern-Ice.tar.xz to ~/.icons folder." 2>&1 | tee -a "$LOG"
clear

View File

@@ -2,39 +2,50 @@
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Main Hyprland Package # # Main Hyprland Package #
hypr_eco=(
hypridle
hyprlock
)
hypr=( hypr=(
hyprland hyprland
hyprcursor
) )
## 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
# 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. uninstalling to install Hyprland-git...${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 Hyprland .......\n" printf "${NOTE} - Installing ${SKY_BLUE}other Hyprland-eco packages${RESET} .......\n"
for HYPR in "${hypr[@]}"; do for HYPR in "${hypr_eco[@]}"; do
install_package "$HYPR" 2>&1 | tee -a "$LOG" if ! command -v "$HYPR" >/dev/null 2>&1; then
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $HYPR install had failed, please check the install.log"; exit 1; } printf "$INFO - ${YELLOW}$HYPR${RESET} not found. Installing ${YELLOW}$HYPR...${RESET}\n"
install_package "$HYPR" "$LOG"
else
printf "$NOTE - ${YELLOW} $HYPR is already installed.${RESET} No action required.\n"
fi
done done
clear printf "\n%.0s" {1..2}

View File

@@ -1,32 +1,30 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Nvidia Stuffs # # Nvidia Stuffs #
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh
fi
nvidia_pkg=( nvidia_pkg=(
nvidia-dkms nvidia-dkms
nvidia-settings nvidia-settings
nvidia-utils nvidia-utils
libva libva
libva-nvidia-driver-git libva-nvidia-driver
) )
hypr=(
hyprland
hyprcursor
)
## 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"
@@ -35,24 +33,17 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log"
# nvidia stuff # nvidia stuff
printf "${YELLOW} Checking for other hyprland packages and remove if any..${RESET}\n" printf "${YELLOW} Checking for other hyprland packages and remove if any..${RESET}\n"
if pacman -Qs hyprland > /dev/null; then if pacman -Qs hyprland > /dev/null; then
printf "${YELLOW} Hyprland detected. uninstalling to install Hyprland-git...${RESET}\n" printf "${YELLOW} Hyprland detected. removing to install Hyprland from official repo...${RESET}\n"
for hyprnvi in hyprland-git hyprland-nvidia hyprland-nvidia-git hyprland-nvidia-hidpi-git; do for hyprnvi in hyprland-git hyprland-nvidia hyprland-nvidia-git hyprland-nvidia-hidpi-git; do
sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true
done done
fi fi
# Hyprland
printf "${NOTE} Installing Hyprland......\n"
for HYPR in "${hypr[@]}"; do
install_package "$HYPR" 2>&1 | tee -a "$LOG"
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $HYPR install had failed, please check the install.log"; exit 1; }
done
# Install additional Nvidia packages # Install additional Nvidia packages
printf "${YELLOW} Installing addition Nvidia packages...\n" printf "${YELLOW} Installing ${SKY_BLUE}Nvidia Packages and Linux headers${RESET}...\n"
for krnl in $(cat /usr/lib/modules/*/pkgbase); do for krnl in $(cat /usr/lib/modules/*/pkgbase); do
for NVIDIA in "${krnl}-headers" "${nvidia_pkg[@]}"; do for NVIDIA in "${krnl}-headers" "${nvidia_pkg[@]}"; do
install_package "$NVIDIA" 2>&1 | tee -a "$LOG" install_package "$NVIDIA" "$LOG"
done done
done done
@@ -61,65 +52,74 @@ if grep -qE '^MODULES=.*nvidia. *nvidia_modeset.*nvidia_uvm.*nvidia_drm' /etc/mk
echo "Nvidia modules already included in /etc/mkinitcpio.conf" 2>&1 | tee -a "$LOG" echo "Nvidia modules already included in /etc/mkinitcpio.conf" 2>&1 | tee -a "$LOG"
else else
sudo sed -Ei 's/^(MODULES=\([^\)]*)\)/\1 nvidia nvidia_modeset nvidia_uvm nvidia_drm)/' /etc/mkinitcpio.conf 2>&1 | tee -a "$LOG" sudo sed -Ei 's/^(MODULES=\([^\)]*)\)/\1 nvidia nvidia_modeset nvidia_uvm nvidia_drm)/' /etc/mkinitcpio.conf 2>&1 | tee -a "$LOG"
echo "Nvidia modules added in /etc/mkinitcpio.conf" echo "${OK} Nvidia modules added in /etc/mkinitcpio.conf"
fi fi
printf "\n%.0s" {1..1}
printf "${INFO} Rebuilding ${YELLOW}Initramfs${RESET}...\n" 2>&1 | tee -a "$LOG"
sudo mkinitcpio -P 2>&1 | tee -a "$LOG" sudo mkinitcpio -P 2>&1 | tee -a "$LOG"
printf "\n\n\n"
printf "\n%.0s" {1..1}
# Additional Nvidia steps # Additional Nvidia steps
NVEA="/etc/modprobe.d/nvidia.conf" NVEA="/etc/modprobe.d/nvidia.conf"
if [ -f "$NVEA" ]; then if [ -f "$NVEA" ]; then
printf "${OK} Seems like nvidia-drm modeset=1 is already added in your system..moving on.\n" printf "${INFO} Seems like ${YELLOW}nvidia_drm modeset=1 fbdev=1${RESET} is already added in your system..moving on."
printf "\n" printf "\n"
else else
printf "\n" printf "\n"
printf "${YELLOW} Adding options to $NVEA..." printf "${YELLOW} Adding options to $NVEA..."
sudo echo -e "options nvidia-drm modeset=1" | sudo tee -a /etc/modprobe.d/nvidia.conf 2>&1 | tee -a "$LOG" sudo echo -e "options nvidia_drm modeset=1 fbdev=1" | sudo tee -a /etc/modprobe.d/nvidia.conf 2>&1 | tee -a "$LOG"
printf "\n" printf "\n"
fi fi
# additional for GRUB users # Additional for GRUB users
# Check if /etc/default/grub exists
if [ -f /etc/default/grub ]; then if [ -f /etc/default/grub ]; then
# Check if nvidia_drm.modeset=1 is already present printf "${INFO} ${YELLOW}GRUB${RESET} bootloader detected\n" 2>&1 | tee -a "$LOG"
# Check if nvidia-drm.modeset=1 is present
if ! sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub; then if ! sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub; then
# Add nvidia_drm.modeset=1 to GRUB_CMDLINE_LINUX_DEFAULT sudo sed -i -e 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia-drm.modeset=1"/' /etc/default/grub
sudo sed -i 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia-drm.modeset=1"/' /etc/default/grub printf "${OK} nvidia-drm.modeset=1 added to /etc/default/grub\n" 2>&1 | tee -a "$LOG"
fi
# Check if nvidia_drm.fbdev=1 is present
if ! sudo grep -q "nvidia_drm.fbdev=1" /etc/default/grub; then
sudo sed -i -e 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia_drm.fbdev=1"/' /etc/default/grub
printf "${OK} nvidia_drm.fbdev=1 added to /etc/default/grub\n" 2>&1 | tee -a "$LOG"
fi
# Regenerate GRUB configuration # Regenerate GRUB configuration
if sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub || sudo grep -q "nvidia_drm.fbdev=1" /etc/default/grub; then
sudo grub-mkconfig -o /boot/grub/grub.cfg sudo grub-mkconfig -o /boot/grub/grub.cfg
echo "nvidia-drm.modeset=1 added to /etc/default/grub" 2>&1 | tee -a "$LOG" printf "${INFO} ${YELLOW}GRUB${RESET} configuration regenerated\n" 2>&1 | tee -a "$LOG"
else
echo "nvidia-drm.modeset=1 is already present in /etc/default/grub" 2>&1 | tee -a "$LOG"
fi
else
echo "/etc/default/grub does not exist"
fi fi
# Blacklist nouveau printf "${OK} Additional steps for ${YELLOW}GRUB${RESET} completed\n" 2>&1 | tee -a "$LOG"
if [[ -z $blacklist_nouveau ]]; then
read -n1 -rep "${CAT} Would you like to blacklist nouveau? (y/n)" blacklist_nouveau
fi
echo
if [[ $blacklist_nouveau =~ ^[Yy]$ ]]; then
NOUVEAU="/etc/modprobe.d/nouveau.conf"
if [ -f "$NOUVEAU" ]; then
printf "${OK} Seems like nouveau is already blacklisted..moving on.\n"
else
printf "\n"
echo "blacklist nouveau" | sudo tee -a "$NOUVEAU" 2>&1 | tee -a "$LOG"
printf "${NOTE} has been added to $NOUVEAU.\n"
printf "\n"
# To completely blacklist nouveau (See wiki.archlinux.org/title/Kernel_module#Blacklisting 6.1)
if [ -f "/etc/modprobe.d/blacklist.conf" ]; then
echo "install nouveau /bin/true" | sudo tee -a "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
else
echo "install nouveau /bin/true" | sudo tee "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
fi
fi
else
printf "${NOTE} Skipping nouveau blacklisting.\n" 2>&1 | tee -a "$LOG"
fi fi
clear # Additional for systemd-boot users
if [ -f /boot/loader/loader.conf ]; then
printf "${INFO} ${YELLOW}systemd-boot${RESET} bootloader detected\n" 2>&1 | tee -a "$LOG"
backup_count=$(find /boot/loader/entries/ -type f -name "*.conf.bak" | wc -l)
conf_count=$(find /boot/loader/entries/ -type f -name "*.conf" | wc -l)
if [ "$backup_count" -ne "$conf_count" ]; then
find /boot/loader/entries/ -type f -name "*.conf" | while read imgconf; do
# Backup conf
sudo cp "$imgconf" "$imgconf.bak"
printf "${INFO} Backup created for systemd-boot loader: %s\n" "$imgconf" 2>&1 | tee -a "$LOG"
# Clean up options and update with NVIDIA settings
sdopt=$(grep -w "^options" "$imgconf" | sed 's/\b nvidia-drm.modeset=[^ ]*\b//g' | sed 's/\b nvidia_drm.fbdev=[^ ]*\b//g')
sudo sed -i "/^options/c${sdopt} nvidia-drm.modeset=1 nvidia_drm.fbdev=1" "$imgconf" 2>&1 | tee -a "$LOG"
done
printf "${OK} Additional steps for ${YELLOW}systemd-boot${RESET} completed\n" 2>&1 | tee -a "$LOG"
else
printf "${NOTE} ${YELLOW}systemd-boot${RESET} is already configured...\n" 2>&1 | tee -a "$LOG"
fi
fi
printf "\n%.0s" {1..2}

View File

@@ -0,0 +1,39 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Nvidia Blacklist #
## 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)_nvidia.log"
printf "${INFO} ${SKY_BLUE}blacklist nouveau${RESET}...\n"
# Blacklist nouveau
NOUVEAU="/etc/modprobe.d/nouveau.conf"
if [ -f "$NOUVEAU" ]; then
printf "${OK} Seems like ${YELLOW}nouveau${RESET} is already blacklisted..moving on.\n"
else
echo "blacklist nouveau" | sudo tee -a "$NOUVEAU" 2>&1 | tee -a "$LOG"
# To completely blacklist nouveau (See wiki.archlinux.org/title/Kernel_module#Blacklisting 6.1)
if [ -f "/etc/modprobe.d/blacklist.conf" ]; then
echo "install nouveau /bin/true" | sudo tee -a "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
else
echo "install nouveau /bin/true" | sudo tee "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
fi
fi
printf "\n%.0s" {1..2}

View File

@@ -3,12 +3,23 @@
# 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"
echo -e "${NOTE} Adding Extra Spice in pacman.conf ... ${RESET}" 2>&1 | tee -a "$LOG" echo -e "${NOTE} Adding ${MAGENTA}Extra Spice${RESET} in pacman.conf ... ${RESET}" 2>&1 | tee -a "$LOG"
pacman_conf="/etc/pacman.conf" pacman_conf="/etc/pacman.conf"
# Remove comments '#' from specific lines # Remove comments '#' from specific lines
@@ -32,14 +43,16 @@ done
# Add "ILoveCandy" below ParallelDownloads if it doesn't exist # Add "ILoveCandy" below ParallelDownloads if it doesn't exist
if grep -q "^ParallelDownloads" "$pacman_conf" && ! grep -q "^ILoveCandy" "$pacman_conf"; then if grep -q "^ParallelDownloads" "$pacman_conf" && ! grep -q "^ILoveCandy" "$pacman_conf"; then
sudo sed -i "/^ParallelDownloads/a ILoveCandy" "$pacman_conf" sudo sed -i "/^ParallelDownloads/a ILoveCandy" "$pacman_conf"
echo -e "${CAT} Added ILoveCandy below ParallelDownloads. ${RESET}" 2>&1 | tee -a "$LOG" echo -e "${CAT} Added ${MAGENTA}ILoveCandy${RESET} after ${MAGENTA}ParallelDownloads${RESET}. ${RESET}" 2>&1 | tee -a "$LOG"
else else
echo -e "${CAT} ILoveCandy already exists ${RESET}" 2>&1 | tee -a "$LOG" echo -e "${CAT} It seems ${YELLOW}ILoveCandy${RESET} already exists ${RESET} moving on.." 2>&1 | tee -a "$LOG"
fi fi
echo -e "${CAT} Pacman.conf spicing up completed ${RESET}" 2>&1 | tee -a "$LOG" echo -e "${CAT} ${MAGENTA}Pacman.conf${RESET} spicing up completed ${RESET}" 2>&1 | tee -a "$LOG"
# updating pacman.conf # updating pacman.conf
printf "\n%s - ${SKY_BLUE}Synchronizing Pacman Repo${RESET}\n" "${INFO}"
sudo pacman -Sy sudo pacman -Sy
clear printf "\n%.0s" {1..2}

View File

@@ -3,45 +3,49 @@
# Paru AUR Helper # # Paru AUR Helper #
# NOTE: If yay is already installed, paru will not be installed # # NOTE: If yay is already installed, paru will not be installed #
pkg="paru-bin"
## 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 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-$(date +%d-%H%M%S)_paru.log" LOG="install-$(date +%d-%H%M%S)_yay.log"
# Set some colors for output messages # Set some colors for output messages
OK="$(tput setaf 2)[OK]$(tput sgr0)" OK="$(tput setaf 2)[OK]$(tput sgr0)"
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
WARN="$(tput setaf 166)[WARN]$(tput sgr0)" INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
ORANGE=$(tput setaf 166) MAGENTA="$(tput setaf 5)"
YELLOW=$(tput setaf 3) ORANGE="$(tput setaf 214)"
RESET=$(tput sgr0) WARNING="$(tput setaf 1)"
YELLOW="$(tput setaf 3)"
GREEN="$(tput setaf 2)"
BLUE="$(tput setaf 4)"
SKY_BLUE="$(tput setaf 6)"
RESET="$(tput sgr0)"
# Create Directory for Install Logs # Create Directory for Install Logs
if [ ! -d Install-Logs ]; then if [ ! -d Install-Logs ]; then
mkdir Install-Logs mkdir Install-Logs
fi fi
# checking if paru-bin exist and removing if it is
if [ -d paru-bin ]; then
rm -rf paru-bin 2>&1 | tee -a "$LOG"
fi
# Check for AUR helper and install if not found # Check for AUR helper and install if not found
ISAUR=$(command -v yay || command -v paru) ISAUR=$(command -v yay || command -v paru)
if [ -n "$ISAUR" ]; then if [ -n "$ISAUR" ]; then
printf "\n%s - AUR helper already installed, moving on..\n" "${OK}" printf "\n%s - ${SKY_BLUE}AUR helper${RESET} already installed, moving on.\n" "${OK}"
else else
printf "\n%s - AUR helper was NOT located\n" "$WARN" printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
printf "\n%s - Installing paru from AUR\n" "${NOTE}"
git clone https://aur.archlinux.org/paru-bin.git || { printf "%s - Failed to clone paru from AUR\n" "${ERROR}"; exit 1; }
cd paru-bin || { printf "%s - Failed to enter paru-bin directory\n" "${ERROR}"; exit 1; }
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install paru from AUR\n" "${ERROR}"; exit 1; }
# moving install logs in to Install-Logs folder # Check if directory exists and remove it
if [ -d "$pkg" ]; then
rm -rf "$pkg"
fi
git clone https://aur.archlinux.org/$pkg.git || { printf "%s - Failed to clone ${YELLOW}$pkg${RESET} from AUR\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; }
# moving install logs in to Install-Logs directory
mv install*.log ../Install-Logs/ || true mv install*.log ../Install-Logs/ || true
cd .. cd ..
fi fi
@@ -52,4 +56,4 @@ ISAUR=$(command -v yay || command -v paru)
$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; } $ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; }
clear printf "\n%.0s" {1..2}

View File

@@ -8,43 +8,47 @@ pipewire=(
pipewire-audio pipewire-audio
pipewire-alsa pipewire-alsa
pipewire-pulse pipewire-pulse
sof-firmware
)
# added this as some reports script didnt install this.
# basically force reinstall
pipewire_2=(
pipewire-pulse
) )
############## 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
LOG="Install-Logs/install-$(date +%d-%H%M%S)_pipewire.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_pipewire.log"
ISAUR=$(command -v yay || command -v paru) # Disabling pulseaudio to avoid conflicts and logging output
echo -e "${NOTE} Disabling pulseaudio to avoid conflicts..."
# Removal of pulseaudio systemctl --user disable --now pulseaudio.socket pulseaudio.service >> "$LOG" 2>&1 || true
printf "${YELLOW}Removing pulseaudio stuff...${RESET}\n"
for pulseaudio in pulseaudio pulseaudio-alsa pulseaudio-bluetooth; do
sudo pacman -R --noconfirm "$pulseaudio" 2>/dev/null | tee -a "$LOG" || true
done
# Disabling pulseaudio to avoid conflicts
systemctl --user disable --now pulseaudio.socket pulseaudio.service 2>/dev/null && tee -a "$LOG"
# Pipewire # Pipewire
printf "${NOTE} Installing Pipewire Packages...\n" echo -e "${NOTE} Installing ${SKY_BLUE}Pipewire${RESET} Packages..."
for PIPEWIRE in "${pipewire[@]}"; do for PIPEWIRE in "${pipewire[@]}"; do
install_package "$PIPEWIRE" 2>&1 | tee -a "$LOG" install_package "$PIPEWIRE" "$LOG"
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $PIPEWIRE install had failed. Please check the install.log"; exit 1; }
done done
printf "Activating Pipewire Services...\n" for PIPEWIRE2 in "${pipewire_2[@]}"; do
install_package_pacman "$PIPEWIRE" "$LOG"
done
echo -e "${NOTE} Activating Pipewire Services..."
# Redirect systemctl output to log file
systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service 2>&1 | tee -a "$LOG" systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service 2>&1 | tee -a "$LOG"
systemctl --user enable --now pipewire.service 2>&1 | tee -a "$LOG" systemctl --user enable --now pipewire.service 2>&1 | tee -a "$LOG"
echo -e "\n${OK} Pipewire Installation and services setup complete!" 2>&1 | tee -a "$LOG"
clear printf "\n%.0s" {1..2}

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

@@ -2,32 +2,42 @@
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Asus ROG Laptops # # Asus ROG Laptops #
rog=(
power-profiles-daemon
asusctl
supergfxctl
rog-control-center
)
## 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"
### Install software for Asus ROG laptops ### ### Install software for Asus ROG laptops ###
printf " Installing ASUS ROG packages...\n" printf " Installing ${SKY_BLUE}ASUS ROG packages${RESET}...\n"
for ASUS in asusctl supergfxctl rog-control-center; do for ASUS in "${rog[@]}"; do
install_package "$ASUS" 2>&1 | tee -a "$LOG" install_package "$ASUS" "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $ASUS install had failed, please check the install.log"
exit 1
fi
done done
printf " Activating ROG services...\n" printf " Activating ROG services...\n"
sudo systemctl enable --now supergfxd 2>&1 | tee -a "$LOG" sudo systemctl enable supergfxd 2>&1 | tee -a "$LOG"
clear printf " enabling power-profiles-daemon...\n"
sudo systemctl enable power-profiles-daemon 2>&1 | tee -a "$LOG"
printf "\n%.0s" {1..2}

View File

@@ -1,27 +1,38 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# SDDM Log-in Manager # # SDDM Log-in Manager #
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh
fi
sddm=( sddm=(
qt5-graphicaleffects qt6-declarative
qt5-quickcontrols2 qt6-svg
qt5-svg qt6-virtualkeyboard
qt6-multimedia-ffmpeg
sddm sddm
) )
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## # login managers to attempt to disable
login=(
lightdm
gdm3
gdm
lxdm
lxdm-gtk3
)
# Determine the directory where the script is located ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
# Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log"
@@ -30,74 +41,32 @@ 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" 2>&1 | tee -a "$LOG" install_package "$package" "$LOG"
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $package install has failed, please check the install.log"; exit 1; }
done done
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 lightdm gdm lxdm lxdm-gtk3; do for login_manager in "${login[@]}"; do
if pacman -Qs "$login_manager" > /dev/null; then if pacman -Qs "$login_manager" > /dev/null 2>&1; then
echo "disabling $login_manager..." sudo systemctl disable "$login_manager.service" >> "$LOG" 2>&1
sudo systemctl disable "$login_manager.service" 2>&1 | tee -a "$LOG" echo "$login_manager disabled." >> "$LOG" 2>&1
fi fi
done done
printf " Activating sddm service........\n" # Double check with systemctl
sudo systemctl enable sddm for manager in "${login[@]}"; do
if systemctl is-active --quiet "$manager" > /dev/null 2>&1; then
echo "$manager is active, disabling it..." >> "$LOG" 2>&1
sudo systemctl disable "$manager" --now >> "$LOG" 2>&1
fi
done
# Set up SDDM printf "\n%.0s" {1..1}
echo -e "${NOTE} Setting up the login screen." printf "${INFO} Activating sddm service........\n"
sddm_conf_dir=/etc/sddm.conf.d sudo systemctl enable sddm
[ ! -d "$sddm_conf_dir" ] && { printf "$CAT - $sddm_conf_dir not found, creating...\n"; sudo mkdir "$sddm_conf_dir" 2>&1 | tee -a "$LOG"; }
wayland_sessions_dir=/usr/share/wayland-sessions 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"; }
sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG"
# SDDM-themes printf "\n%.0s" {1..2}
valid_input=false
while [ "$valid_input" != true ]; do
if [[ -z $install_sddm_theme ]]; then
read -n 1 -r -p "${CAT} OPTIONAL - Would you like to install SDDM themes? (y/n)" install_sddm_theme
fi
if [[ $install_sddm_theme =~ ^[Yy]$ ]]; then
printf "\n%s - Installing Simple SDDM Theme\n" "${NOTE}"
# Check if /usr/share/sddm/themes/simple-sddm exists and remove if it does
if [ -d "/usr/share/sddm/themes/simple-sddm" ]; then
sudo rm -rf "/usr/share/sddm/themes/simple-sddm"
echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory." 2>&1 | tee -a "$LOG"
fi
# Check if simple-sddm directory exists in the current directory and remove if it does
if [ -d "simple-sddm" ]; then
rm -rf "simple-sddm"
echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory from the current location." 2>&1 | tee -a "$LOG"
fi
if git clone https://github.com/JaKooLit/simple-sddm.git; then
while [ ! -d "simple-sddm" ]; do
sleep 1
done
if [ ! -d "/usr/share/sddm/themes" ]; then
sudo mkdir -p /usr/share/sddm/themes
echo -e "\e[1A\e[K${OK} - Directory '/usr/share/sddm/themes' created." 2>&1 | tee -a "$LOG"
fi
sudo mv simple-sddm /usr/share/sddm/themes/
echo -e "[Theme]\nCurrent=simple-sddm" | sudo tee "$sddm_conf_dir/10-theme.conf" &>> "$LOG"
else
echo -e "\e[1A\e[K${ERROR} - Failed to clone the theme repository. Please check your internet connection" | tee -a "$LOG" >&2
fi
valid_input=true
elif [[ $install_sddm_theme =~ ^[Nn]$ ]]; then
printf "\n%s - No SDDM themes will be installed.\n" "${NOTE}" 2>&1 | tee -a "$LOG"
valid_input=true
else
printf "\n%s - Invalid input. Please enter 'y' for Yes or 'n' for No.\n" "${ERROR}" 2>&1 | tee -a "$LOG"
install_sddm_theme=""
fi
done
clear

114
install-scripts/sddm_theme.sh Executable file
View File

@@ -0,0 +1,114 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# SDDM themes #
source_theme="https://github.com/JaKooLit/simple-sddm-2.git"
theme_name="simple_sddm_2"
## 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)_sddm_theme.log"
# SDDM-themes
printf "${INFO} Installing ${SKY_BLUE}Additional SDDM Theme${RESET}\n"
# Check if /usr/share/sddm/themes/$theme_name exists and remove if it does
if [ -d "/usr/share/sddm/themes/$theme_name" ]; then
sudo rm -rf "/usr/share/sddm/themes/$theme_name"
echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory." 2>&1 | tee -a "$LOG"
fi
# Check if $theme_name directory exists in the current directory and remove if it does
if [ -d "$theme_name" ]; then
rm -rf "$theme_name"
echo -e "\e[1A\e[K${OK} - Removed existing $theme_name directory from the current location." 2>&1 | tee -a "$LOG"
fi
# Clone the repository
if git clone --depth=1 "$source_theme" "$theme_name"; then
if [ ! -d "$theme_name" ]; then
echo "${ERROR} Failed to clone the repository." | tee -a "$LOG"
fi
# Create themes directory if it doesn't exist
if [ ! -d "/usr/share/sddm/themes" ]; then
sudo mkdir -p /usr/share/sddm/themes
echo "${OK} - Directory '/usr/share/sddm/themes' created." | tee -a "$LOG"
fi
# Move cloned theme to the themes directory
sudo mv "$theme_name" "/usr/share/sddm/themes/$theme_name" 2>&1 | tee -a "$LOG"
# setting up SDDM theme
sddm_conf="/etc/sddm.conf"
BACKUP_SUFFIX=".bak"
echo -e "${NOTE} Setting up the login screen." | tee -a "$LOG"
# Backup the sddm.conf file if it exists
if [ -f "$sddm_conf" ]; then
echo "Backing up $sddm_conf" | tee -a "$LOG"
sudo cp "$sddm_conf" "$sddm_conf$BACKUP_SUFFIX" 2>&1 | tee -a "$LOG"
else
echo "$sddm_conf does not exist, creating a new one." | tee -a "$LOG"
sudo touch "$sddm_conf" 2>&1 | tee -a "$LOG"
fi
# Check if the [Theme] section exists
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 no Current= line was found and replaced, append it after the [Theme] section
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
echo "Updated Current=$theme_name in $sddm_conf" | tee -a "$LOG"
fi
else
# 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
# 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 sed -i 's|^wallpaper=".*"|wallpaper="Backgrounds/default"|' "/usr/share/sddm/themes/$theme_name/theme.conf" 2>&1 | tee -a "$LOG"
echo "${OK} - ${MAGENTA}Additional ${YELLOW}$theme_name SDDM Theme${RESET} successfully installed." | tee -a "$LOG"
else
echo "${ERROR} - Failed to clone the sddm theme repository. Please check your internet connection." | tee -a "$LOG" >&2
fi
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

@@ -8,40 +8,43 @@ thunar-volman
tumbler tumbler
ffmpegthumbnailer ffmpegthumbnailer
thunar-archive-plugin thunar-archive-plugin
xarchiver
) )
## 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"
# Thunar # Thunar
printf "${NOTE} Installing Thunar Packages...\n" printf "${INFO} Installing ${SKY_BLUE}Thunar${RESET} Packages...\n"
for THUNAR in "${thunar[@]}"; do for THUNAR in "${thunar[@]}"; do
install_package "$THUNAR" 2>&1 | tee -a "$LOG" install_package "$THUNAR" "$LOG"
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $THUNAR install had failed, please check the install.log"; exit 1; }
done done
printf "\n%.0s" {1..1}
# Check for existing configs and copy if does not exist # Check for existing configs and copy if does not exist
for DIR1 in Thunar xfce4; do for DIR1 in gtk-3.0 Thunar xfce4; do
DIRPATH=~/.config/$DIR1 DIRPATH=~/.config/$DIR1
if [ -d "$DIRPATH" ]; then if [ -d "$DIRPATH" ]; then
echo -e "${NOTE} Config for $DIR1 found, no need to copy." 2>&1 | tee -a "$LOG" echo -e "${NOTE} Config for ${MAGENTA}$DIR1${RESET} found, no need to copy." 2>&1 | tee -a "$LOG"
else else
echo -e "${NOTE} Config for $DIR1 not found, copying from assets." 2>&1 | tee -a "$LOG" echo -e "${NOTE} Config for ${YELLOW}$DIR1${RESET} not found, copying from assets." 2>&1 | tee -a "$LOG"
cp -r assets/$DIR1 ~/.config/ && echo "Copy $DIR1 completed!" || echo "Error: Failed to copy $DIR1 config files." 2>&1 | tee -a "$LOG" cp -r assets/$DIR1 ~/.config/ && echo "${OK} Copy $DIR1 completed!" || echo "${ERROR} Failed to copy $DIR1 config files." 2>&1 | tee -a "$LOG"
fi fi
done done
clear printf "\n%.0s" {1..2}

View File

@@ -0,0 +1,30 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Thunar-default #
## 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)_thunar-default.log"
printf "${INFO} Setting ${SKY_BLUE}Thunar${RESET} as default file manager...\n"
xdg-mime default thunar.desktop inode/directory
xdg-mime default thunar.desktop application/x-wayland-gnome-saved-search
echo "${OK} ${MAGENTA}Thunar${RESET} is now set as the default file manager." | tee -a "$LOG"
printf "\n%.0s" {1..2}

View File

@@ -1,74 +1,34 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# XDG-Desktop-Portals # # XDG-Desktop-Portals hyprland #
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh
fi
xdg=( xdg=(
xdg-desktop-portal-hyprland xdg-desktop-portal-hyprland
xdg-desktop-portal-gtk xdg-desktop-portal-gtk
umockdev
) )
## 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"
# XDG-DESKTOP-PORTAL-HYPRLAND # XDG-DESKTOP-PORTAL-HYPRLAND
printf "${NOTE} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland${RESET}\n"
for xdgs in "${xdg[@]}"; do for xdgs in "${xdg[@]}"; do
install_package "$xdgs" 2>&1 | tee -a "$LOG" install_package "$xdgs" "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $xdph install had failed, please check the install.log"
exit 1
fi
done done
printf "\n" printf "\n%.0s" {1..2}
printf "${NOTE} Checking for other XDG-Desktop-Portal-Implementations....\n"
sleep 1
printf "\n"
printf "${NOTE} XDG-desktop-portal-KDE & GNOME (if installed) should be manually disabled or removed! I can't remove it... sorry...\n"
while true; do
if [[ -z $XDPH1 ]]; then
read -rp "${CAT} Would you like to try to remove other XDG-Desktop-Portal-Implementations? (y/n) " XDPH1
fi
echo
sleep 1
case $XDPH1 in
[Yy])
# Clean out other portals
printf "${NOTE} Clearing any other xdg-desktop-portal implementations...\n"
# Check if packages are installed and uninstall if present
if pacman -Qs xdg-desktop-portal-wlr > /dev/null ; then
echo "Removing xdg-desktop-portal-wlr..."
sudo pacman -R --noconfirm xdg-desktop-portal-wlr 2>&1 | tee -a "$LOG"
fi
if pacman -Qs xdg-desktop-portal-lxqt > /dev/null ; then
echo "Removing xdg-desktop-portal-lxqt..."
sudo pacman -R --noconfirm xdg-desktop-portal-lxqt 2>&1 | tee -a "$LOG"
fi
break
;;
[Nn])
echo "no other XDG-implementations will be removed." >> "$LOG"
break
;;
*)
echo "Invalid input. Please enter 'y' for yes or 'n' for no."
;;
esac
done
clear

View File

@@ -3,6 +3,7 @@
# Yay AUR Helper # # Yay AUR Helper #
# NOTE: If paru is already installed, yay will not be installed # # NOTE: If paru is already installed, yay will not be installed #
pkg="yay-bin"
## 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 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
@@ -12,34 +13,39 @@ LOG="install-$(date +%d-%H%M%S)_yay.log"
OK="$(tput setaf 2)[OK]$(tput sgr0)" OK="$(tput setaf 2)[OK]$(tput sgr0)"
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
WARN="$(tput setaf 166)[WARN]$(tput sgr0)" INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
ORANGE=$(tput setaf 166) MAGENTA="$(tput setaf 5)"
YELLOW=$(tput setaf 3) ORANGE="$(tput setaf 214)"
RESET=$(tput sgr0) WARNING="$(tput setaf 1)"
YELLOW="$(tput setaf 3)"
GREEN="$(tput setaf 2)"
BLUE="$(tput setaf 4)"
SKY_BLUE="$(tput setaf 6)"
RESET="$(tput sgr0)"
# Create Directory for Install Logs # Create Directory for Install Logs
if [ ! -d Install-Logs ]; then if [ ! -d Install-Logs ]; then
mkdir Install-Logs mkdir Install-Logs
fi fi
# Check Existing yay-bin
if [ -d yay-bin ]; then
rm -rf yay-bin 2>&1 | tee -a "$LOG"
fi
# Check for AUR helper and install if not found # Check for AUR helper and install if not found
ISAUR=$(command -v yay || command -v paru) ISAUR=$(command -v yay || command -v paru)
if [ -n "$ISAUR" ]; then if [ -n "$ISAUR" ]; then
printf "\n%s - AUR helper already installed, moving on.\n" "${OK}" printf "\n%s - ${SKY_BLUE}AUR helper${RESET} already installed, moving on.\n" "${OK}"
else else
printf "\n%s - AUR helper was NOT located\n" "$WARN" printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
printf "\n%s - Installing yay from AUR\n" "${NOTE}"
git clone https://aur.archlinux.org/yay-bin.git || { printf "%s - Failed to clone yay from AUR\n" "${ERROR}"; exit 1; }
cd yay-bin || { printf "%s - Failed to enter yay-bin directory\n" "${ERROR}"; exit 1; }
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install yay from AUR\n" "${ERROR}"; exit 1; }
# moving install logs in to Install-Logs folder # Check if directory exists and remove it
if [ -d "$pkg" ]; then
rm -rf "$pkg"
fi
git clone https://aur.archlinux.org/$pkg.git || { printf "%s - Failed to clone ${YELLOW}$pkg${RESET} from AUR\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; }
# moving install logs in to Install-Logs directory
mv install*.log ../Install-Logs/ || true mv install*.log ../Install-Logs/ || true
cd .. cd ..
fi fi
@@ -50,4 +56,4 @@ ISAUR=$(command -v yay || command -v paru)
$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; } $ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; }
clear printf "\n%.0s" {1..2}

View File

@@ -1,79 +1,69 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# zsh and oh my zsh including pokemon-color-scripts# # zsh and oh my zsh#
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh
fi
zsh=( zsh_pkg=(
lsd
mercurial
zsh zsh
zsh-completions zsh-completions
) )
zsh_pkg2=(
fzf
)
## 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"
## Optional Pokemon color scripts # Installing core zsh packages
while true; do printf "\n%s - Installing ${SKY_BLUE}zsh packages${RESET} .... \n" "${NOTE}"
if [[ -z $pokemon_choice ]]; then for ZSH in "${zsh_pkg[@]}"; do
read -p "${CAT} OPTIONAL - Do you want to add Pokemon color scripts? (y/n): " pokemon_choice install_package "$ZSH" "$LOG"
fi
case "$pokemon_choice" in
[Yy]*)
zsh+=('pokemon-colorscripts-git')
sed -i '/#pokemon-colorscripts --no-title -s -r/s/^#//' assets/.zshrc
break
;;
[Nn]*)
echo "${NOTE}Skipping Pokemon color scripts installation.${RESET}" 2>&1 | tee -a "$LOG"
break
;;
*)
echo "${WARN}Please enter 'y' for yes or 'n' for no.${RESET}"
;;
esac
done done
# Installing zsh packages
printf "${NOTE} Installing core zsh packages...${RESET}\n"
for ZSH in "${zsh[@]}"; do
install_package "$ZSH" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $ZSH install had failed, please check the install.log"
fi
done
# Check if the zsh-completions directory exists
if [ -d "zsh-completions" ]; then
rm -rf zsh-completions
fi
# Install Oh My Zsh, plugins, and set zsh as default shell # Install Oh My Zsh, plugins, and set zsh as default shell
if command -v zsh >/dev/null; then if command -v zsh >/dev/null; then
printf "${NOTE} Installing Oh My Zsh and plugins...\n" printf "${NOTE} Installing ${SKY_BLUE}Oh My Zsh and plugins${RESET} ...\n"
if [ ! -d "$HOME/.oh-my-zsh" ]; then if [ ! -d "$HOME/.oh-my-zsh" ]; then
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended || true sh -c "$(curl -fsSL https://install.ohmyz.sh)" "" --unattended
else else
echo "Directory .oh-my-zsh already exists. Skipping re-installation." 2>&1 | tee -a "$LOG" echo "${INFO} Directory .oh-my-zsh already exists. Skipping re-installation." 2>&1 | tee -a "$LOG"
fi fi
# Check if the directories exist before cloning the repositories # Check if the directories exist before cloning the repositories
if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions || true git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
else else
echo "Directory zsh-autosuggestions already exists. Skipping cloning." 2>&1 | tee -a "$LOG" echo "${INFO} Directory zsh-autosuggestions already exists. Cloning Skipped." 2>&1 | tee -a "$LOG"
fi fi
if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting || true git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
else else
echo "Directory zsh-syntax-highlighting already exists. Skipping cloning." 2>&1 | tee -a "$LOG" echo "${INFO} Directory zsh-syntax-highlighting already exists. Cloning Skipped." 2>&1 | tee -a "$LOG"
fi fi
# Check if ~/.zshrc and .zprofile exists, create a backup, and copy the new configuration # Check if ~/.zshrc and .zprofile exists, create a backup, and copy the new configuration
@@ -89,14 +79,34 @@ if command -v zsh >/dev/null; then
cp -r 'assets/.zshrc' ~/ cp -r 'assets/.zshrc' ~/
cp -r 'assets/.zprofile' ~/ cp -r 'assets/.zprofile' ~/
printf "${NOTE} Changing default shell to zsh...\n" # Check if the current shell is zsh
current_shell=$(basename "$SHELL")
if [ "$current_shell" != "zsh" ]; then
printf "${NOTE} Changing default shell to ${MAGENTA}zsh${RESET}..."
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 "${NOTE} Shell changed successfully to zsh.\n" 2>&1 | tee -a "$LOG"
printf "${INFO} Shell changed successfully to ${MAGENTA}zsh${RESET}" 2>&1 | tee -a "$LOG"
else
echo "${NOTE} Your shell is already set to ${MAGENTA}zsh${RESET}."
fi
fi fi
clear # Installing core zsh packages
printf "\n%s - Installing ${SKY_BLUE}fzf${RESET} .... \n" "${NOTE}"
for ZSH2 in "${zsh_pkg2[@]}"; do
install_package "$ZSH2" "$LOG"
done
# copy additional oh-my-zsh themes from assets
if [ -d "$HOME/.oh-my-zsh/themes" ]; then
cp -r assets/add_zsh_theme/* ~/.oh-my-zsh/themes >> "$LOG" 2>&1
fi
printf "\n%.0s" {1..2}

40
install-scripts/zsh_pokemon.sh Executable file
View File

@@ -0,0 +1,40 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# pokemon-color-scripts#
## 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)_zsh_pokemon.log"
printf "${NOTE} Removing any traces of ${SKY_BLUE}Pokemon Color Scripts${RESET}\n"
# Install Pokemon Color Scripts
printf "${NOTE} Installing ${SKY_BLUE}Pokemon Color Scripts${RESET}\n"
for pok in "pokemon-colorscripts-git"; do
install_package_f "$pok" "$LOG"
done
printf "\n%.0s" {1..1}
# Check if ~/.zshrc exists
if [ -f "$HOME/.zshrc" ]; then
sed -i 's|^#pokemon-colorscripts --no-title -s -r \| fastfetch -c \$HOME/.config/fastfetch/config-pokemon.jsonc --logo-type file-raw --logo-height 10 --logo-width 5 --logo -|pokemon-colorscripts --no-title -s -r \| fastfetch -c \$HOME/.config/fastfetch/config-pokemon.jsonc --logo-type file-raw --logo-height 10 --logo-width 5 --logo -|' "$HOME/.zshrc" >> "$LOG" 2>&1
sed -i "s|^fastfetch -c \$HOME/.config/fastfetch/config-compact.jsonc|#fastfetch -c \$HOME/.config/fastfetch/config-compact.jsonc|" "$HOME/.zshrc" >> "$LOG" 2>&1
else
echo "$HOME/.zshrc not found. Cant enable ${YELLOW}Pokemon color scripts${RESET}" >> "$LOG" 2>&1
fi
printf "\n%.0s" {1..2}

View File

@@ -1,134 +1,109 @@
#!/bin/bash #!/bin/bash
# https://github.com/JaKooLit # https://github.com/JaKooLit
# Check if running as root. If root, script will exit
if [[ $EUID -eq 0 ]]; then
echo "This script should not be executed as root! Exiting......."
exit 1
fi
clear clear
printf "\n%.0s" {1..3} # Set some colors for output messages
echo " | _. |/ _ _ | o _|_ " OK="$(tput setaf 2)[OK]$(tput sgr0)"
echo " \_| (_| o |\ (_) (_) |_ | |_ " ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
printf "\n%.0s" {1..2} NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
# Welcome message WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
echo "$(tput setaf 6)Welcome to JaKooLit's Arch-Hyprland Install Script!$(tput sgr0)" CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
echo MAGENTA="$(tput setaf 5)"
echo "$(tput setaf 166)ATTENTION: Run a full system update and Reboot first!! (Highly Recommended) $(tput sgr0)" ORANGE="$(tput setaf 214)"
echo WARNING="$(tput setaf 1)"
echo "$(tput setaf 3)NOTE: You will be required to answer some questions during the installation! $(tput sgr0)" YELLOW="$(tput setaf 3)"
echo GREEN="$(tput setaf 2)"
echo "$(tput setaf 3)NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland wont start! $(tput sgr0)" BLUE="$(tput setaf 4)"
echo SKY_BLUE="$(tput setaf 6)"
RESET="$(tput sgr0)"
read -p "$(tput setaf 6)Would you like to proceed? (y/n): $(tput sgr0)" proceed
printf "\n%.0s" {1..2}
echo "$(tput bold)$(tput setaf 7)Choose Y to use preset ONLY once you reviewed, updated or updated the preset.sh $(tput sgr0)"
echo "$(tput bold)$(tput setaf 7)If you are not sure what to do, choose N in the "Use Preset Settings" question $(tput sgr0)"
printf "\n%.0s" {1..1}
read -p "$(tput setaf 6)Would you like to Use Preset Settings? (y/n): $(tput sgr0)" use_preset
printf "\n%.0s" {1..3}
if [ "$proceed" != "y" ]; then
echo "Installation aborted."
exit 1
fi
# Create Directory for Install Logs # Create Directory for Install Logs
if [ ! -d Install-Logs ]; then if [ ! -d Install-Logs ]; then
mkdir Install-Logs mkdir Install-Logs
fi fi
# Use of Preset Settings # Set the name of the log file to include the current date and time
if [[ $use_preset = [Yy] ]]; then LOG="Install-Logs/01-Hyprland-Install-Scripts-$(date +%d-%H%M%S).log"
source ./preset.sh
# Check if running as root. If root, script will exit
if [[ $EUID -eq 0 ]]; then
echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......." | tee -a "$LOG"
printf "\n%.0s" {1..2}
exit 1
fi fi
# Set some colors for output messages # Check if PulseAudio package is installed
OK="$(tput setaf 2)[OK]$(tput sgr0)" if pacman -Qq | grep -qw '^pulseaudio$'; then
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)" echo "$ERROR PulseAudio is detected as installed. Uninstall it first or edit install.sh on line 211 (execute_script 'pipewire.sh')." | tee -a "$LOG"
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)" printf "\n%.0s" {1..2}
WARN="$(tput setaf 166)[WARN]$(tput sgr0)" exit 1
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)" fi
ORANGE=$(tput setaf 166)
YELLOW=$(tput setaf 3)
RESET=$(tput sgr0)
# Check if base-devel is installed
if pacman -Q base-devel &> /dev/null; then
echo "base-devel is already installed."
else
echo "$NOTE Install base-devel.........."
# Function to colorize prompts if sudo pacman -S --noconfirm base-devel; then
colorize_prompt() { echo "👌 ${OK} base-devel has been installed successfully." | tee -a "$LOG"
local color="$1" else
local message="$2" echo "$ERROR base-devel not found nor cannot be installed." | tee -a "$LOG"
echo -n "${color}${message}$(tput sgr0)" echo "$ACTION Please install base-devel manually before running this script... Exiting" | tee -a "$LOG"
} exit 1
fi
fi
# Set the name of the log file to include the current date and time # install whiptails if detected not installed. Necessary for this version
LOG="install-$(date +%d-%H%M%S).log" 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
# Initialize variables to store user responses clear
# aur_helper=""
# bluetooth=""
# dots=""
# gtk_themes=""
# nvidia=""
# rog=""
# sddm=""
# thunar=""
# xdph=""
# zsh=""
# Define the directory where your scripts are located printf "\n%.0s" {1..2}
echo -e "\e[35m
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ 2025
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Arch Linux
\e[0m"
printf "\n%.0s" {1..1}
# Welcome message using whiptail (for displaying information)
whiptail --title "KooL Arch-Hyprland (2025) Install Script" \
--msgbox "Welcome to KooL Arch-Hyprland (2025) Install Script!!!\n\n\
ATTENTION: Run a full system update and Reboot first !!! (Highly Recommended)\n\n\
NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland may NOT start!" \
15 80
# Ask if the user wants to proceed
if ! whiptail --title "Proceed with Installation?" \
--yesno "Would you like to proceed?" 7 50; then
echo -e "\n"
echo "${INFO} You 🫵 chose ${YELLOW}NOT${RESET} to proceed. ${YELLOW}Exiting...${RESET}" | tee -a "$LOG"
echo -e "\n"
exit 1
fi
echo "👌 ${OK} 🇵🇭 ${MAGENTA}KooL..${RESET} ${SKY_BLUE}lets continue with the installation...${RESET}" | tee -a "$LOG"
sleep 1
printf "\n%.0s" {1..1}
# install pciutils if detected not installed. Necessary for detecting GPU
if ! pacman -Qs pciutils > /dev/null; then
echo "${NOTE} - pciutils is not installed. Installing..." | tee -a "$LOG"
sudo pacman -S --noconfirm pciutils
printf "\n%.0s" {1..1}
fi
# Path to the install-scripts directory
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"
@@ -136,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
@@ -145,108 +120,387 @@ execute_script() {
fi fi
} }
# Collect user responses to all questions
printf "\n"
ask_custom_option "-Type AUR helper" "paru or yay" aur_helper
printf "\n"
ask_yes_no "-Do you have any nvidia gpu in your system?" nvidia
printf "\n"
ask_yes_no "-Install GTK themes (required for Dark/Light function)?" gtk_themes
printf "\n"
ask_yes_no "-Do you want to configure Bluetooth?" bluetooth
printf "\n"
ask_yes_no "-Do you want to install Thunar file manager?" thunar
printf "\n"
ask_yes_no "-Install & configure SDDM log-in Manager plus (OPTIONAL) SDDM Theme?" sddm
printf "\n"
ask_yes_no "-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)" xdph
printf "\n"
ask_yes_no "-Install zsh, oh-my-zsh & (Optional) pokemon-colorscripts?" zsh
printf "\n"
ask_yes_no "-Installing in a Asus ROG Laptops?" rog
printf "\n"
ask_yes_no "-Do you want to download pre-configured Hyprland dotfiles?" dots
printf "\n"
# Ensuring all in the scripts folder are made executable ## Default values for the options (will be overwritten by preset file if available)
chmod +x install-scripts/* gtk_themes="OFF"
sleep 0.5 bluetooth="OFF"
thunar="OFF"
quickshell="OFF"
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
# Check if yay or paru is installed
echo "${INFO} - Checking if yay or paru is installed"
if ! command -v yay &>/dev/null && ! command -v paru &>/dev/null; then
echo "${CAT} - Neither yay nor paru found. Asking 🗣️ USER to select..."
while true; do
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)
if [ $? -ne 0 ]; then
echo "${INFO} You cancelled the selection. ${YELLOW}Goodbye!${RESET}" | tee -a "$LOG"
exit 0
fi
if [ -z "$aur_helper" ]; then
whiptail --title "Error" --msgbox "You must select at least one AUR helper to proceed." 10 60 2
continue
fi
echo "${INFO} - You selected: $aur_helper as your AUR helper" | tee -a "$LOG"
aur_helper=$(echo "$aur_helper" | tr -d '"')
# Check if multiple helpers were selected
if [[ $(echo "$aur_helper" | wc -w) -ne 1 ]]; then
whiptail --title "Error" --msgbox "You must select exactly one AUR helper." 10 60 2
continue
else
break
fi
done
else
echo "${NOTE} - AUR helper is already installed. Skipping AUR helper selection."
fi
# List of services to check for active login managers
services=("gdm.service" "gdm3.service" "lightdm.service" "lxdm.service")
# Function to check if any login services are active
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 [ ${#active_services[@]} -gt 0 ]; then
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
# Check if NVIDIA GPU is detected
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
# Initialize the options array for whiptail checklist
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
)
# 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
# Add 'input_group' option if necessary
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}
# Ensuring base-devel is installed # Ensuring base-devel is installed
execute_script "00-base.sh" execute_script "00-base.sh"
sleep 0.5 sleep 1
execute_script "pacman.sh" execute_script "pacman.sh"
# Execute AUR helper script based on user choice sleep 1
# 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
execute_script "00-hypr-pkgs.sh"
# Install pipewire and pipewire-audio # 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"
echo "${INFO} Installing ${SKY_BLUE}pipewire and pipewire-audio...${RESET}" | tee -a "$LOG"
sleep 1
execute_script "pipewire.sh" execute_script "pipewire.sh"
if [ "$nvidia" == "Y" ]; then echo "${INFO} Installing ${SKY_BLUE}necessary fonts...${RESET}" | tee -a "$LOG"
execute_script "nvidia.sh" sleep 1
fi execute_script "fonts.sh"
if [ "$nvidia" == "N" ]; then echo "${INFO} Installing ${SKY_BLUE}Hyprland...${RESET}"
sleep 1
execute_script "hyprland.sh" execute_script "hyprland.sh"
fi
if [ "$gtk_themes" == "Y" ]; then # Clean up the selected options (remove quotes and trim spaces)
execute_script "gtk_themes.sh" selected_options=$(echo "$selected_options" | tr -d '"' | tr -s ' ')
fi
if [ "$bluetooth" == "Y" ]; then # Convert selected options into an array (splitting by spaces)
execute_script "bluetooth.sh" IFS=' ' read -r -a options <<< "$selected_options"
fi
if [ "$thunar" == "Y" ]; then # Loop through selected options
execute_script "thunar.sh" for option in "${options[@]}"; do
fi case "$option" in
sddm)
if [ "$sddm" == "Y" ]; then if check_services_running; then
active_list=$(printf "%s\n" "${active_services[@]}")
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
exec "$0"
else
echo "${INFO} Installing and configuring ${SKY_BLUE}SDDM...${RESET}" | tee -a "$LOG"
execute_script "sddm.sh" execute_script "sddm.sh"
fi fi
;;
if [ "$xdph" == "Y" ]; then nvidia)
execute_script "xdph.sh" echo "${INFO} Configuring ${SKY_BLUE}nvidia stuff${RESET}" | tee -a "$LOG"
fi execute_script "nvidia.sh"
;;
if [ "$zsh" == "Y" ]; then nouveau)
execute_script "zsh.sh" echo "${INFO} blacklisting ${SKY_BLUE}nouveau${RESET}"
fi execute_script "nvidia_nouveau.sh" | tee -a "$LOG"
;;
gtk_themes)
echo "${INFO} Installing ${SKY_BLUE}GTK themes...${RESET}" | tee -a "$LOG"
execute_script "gtk_themes.sh"
;;
input_group)
echo "${INFO} Adding user into ${SKY_BLUE}input group...${RESET}" | tee -a "$LOG"
execute_script "InputGroup.sh" execute_script "InputGroup.sh"
;;
if [ "$rog" == "Y" ]; then quickshell)
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"
;;
dots)
echo "${INFO} Installing pre-configured ${SKY_BLUE}KooL Hyprland dotfiles...${RESET}" | tee -a "$LOG"
execute_script "dotfiles-main.sh"
;;
*)
echo "Unknown option: $option" | tee -a "$LOG"
;;
esac
done
sleep 1
# copy fastfetch config if arch.png is not present
if [ ! -f "$HOME/.config/fastfetch/arch.png" ]; then
cp -r assets/fastfetch "$HOME/.config/"
fi fi
if [ "$dots" == "Y" ]; then clear
execute_script "dotfiles.sh"
fi # final check essential packages if it is installed
execute_script "02-Final-Check.sh"
printf "\n%.0s" {1..1}
printf "\n${OK} Yey! Installation Completed.\n" # Check if hyprland or hyprland-git is installed
printf "\n" 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${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n"
sleep 2 sleep 2
printf "\n${NOTE} You can start Hyprland by typing Hyprland (IF SDDM is not installed) (note the capital H!).\n" printf "\n%.0s" {1..2}
printf "\n"
printf "\n${NOTE} It is highly recommended to reboot your system.\n\n"
read -rp "${CAT} Would you like to reboot now? (y/n): " HYP 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}
if [[ "$HYP" =~ ^[Yy]$ ]]; then printf "\n${NOTE} You can start Hyprland by typing ${SKY_BLUE}Hyprland${RESET} (IF SDDM is not installed) (note the capital H!).\n"
if [[ "$nvidia" == "Y" ]]; then printf "\n${NOTE} However, it is ${YELLOW}highly recommended to reboot${RESET} your system.\n\n"
echo "${NOTE} NVIDIA GPU detected. Rebooting the system..."
while true; do
echo -n "${CAT} Would you like to reboot now? (y/n): "
read HYP
HYP=$(echo "$HYP" | tr '[:upper:]' '[:lower:]')
if [[ "$HYP" == "y" || "$HYP" == "yes" ]]; then
echo "${INFO} Rebooting now..."
systemctl reboot systemctl reboot
break
elif [[ "$HYP" == "n" || "$HYP" == "no" ]]; then
echo "👌 ${OK} You chose NOT to reboot"
printf "\n%.0s" {1..1}
# Check if NVIDIA GPU is present
if lspci | grep -i "nvidia" &> /dev/null; then
echo "${INFO} HOWEVER ${YELLOW}NVIDIA GPU${RESET} detected. Reminder that you must REBOOT your SYSTEM..."
printf "\n%.0s" {1..1}
fi
break
else else
systemctl reboot echo "${WARN} Invalid response. Please answer with 'y' or 'n'."
fi fi
done
else
# 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%.0s" {1..3}
exit 1
fi fi
printf "\n%.0s" {1..2}

View File

@@ -1,48 +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 ###
# Make sure proper AUR Helper is use NO Upperscript. Either paru or yay only is accepted
# The rest Change to Y for Yes and N for No.
### -Type AUR helper
### yay or paru
aur_helper="yay"
############ use : "Y" or "N"
###-Do you have any nvidia gpu in your system?
nvidia="Y"
###-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"
###-Install & configure SDDM log-in Manager plus (OPTIONAL) SDDM Theme?
sddm="Y"
###-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)
xdph="Y"
###-Install zsh, oh-my-zsh & (Optional) pokemon-colorscripts?
zsh="Y"
###-Installing in a Asus ROG Laptops?
rog="N"
###-Do you want to download pre-configured Hyprland dotfiles?
dots="Y"
### These are the sub-questions of the above choices
### Would you like to blacklist nouveau? (y/n)
blacklist_nouveau="Y"
### XDG-desktop-portal-KDE & GNOME (if installed) should be manually disabled or removed! Script cant remove nor disable it.
### Would you like to try to remove other XDG-Desktop-Portal-Implementations? (y/n)
XDPH1="Y"
### SDDM is already installed. Would you like to manually install sddm-git to remove it? This requires manual intervention. (y/n)
manual_install_sddm="N"
### OPTIONAL - Would you like to install SDDM themes? (y/n)
install_sddm_theme="Y"
### " This script will add your user to the 'input' group."
### " Please note that adding yourself to the 'input' group might be necessary for waybar keyboard-state functionality."
input_group_choid="Y"
### OPTIONAL - Do you want to add Pokemon color scripts? (y/n):
pokemon_choice="Y"
### Do you want to upgrade to the latest version? (y/n) - This is for the dotfiles
upgrade_choice="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}