Compare commits

..

463 Commits

Author SHA1 Message Date
Donald Williams
7613ab90e7
Merge pull request #229 from JaKooLit/development
Development to main,  Updated HL to 0.52.2
2025-12-11 12:15:51 -05:00
Donald Williams
5a51d35ec0
Merge branch 'main' into development 2025-12-11 12:15:18 -05:00
Don Williams
cb1250ce8d Fixed package name for libdisplay-info2 failed to install
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   CHANGELOGS.md
	modified:   install-scripts/00-dependencies.sh
2025-12-10 16:55:30 -05:00
Don Williams
9281ac4295 Updated CHANGELOG 2025-12-10 13:19:58 -05:00
Don Williams
24fb2b0dc5 Fixed pkg name qt-style-kavantum-themes not qt5
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/01-hypr-pkgs.sh
2025-12-10 13:17:36 -05:00
Don Williams
b98e468d56 Updated version is the individual files
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hyprland-protocols.sh
	modified:   install-scripts/hyprland.sh
	modified:   install-scripts/hyprlang.sh
	modified:   install-scripts/hyprutils.sh
2025-12-10 13:08:48 -05:00
Don Williams
cb46365d8c Updated dev to match sdeglers changes
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   hypr-tags.env
	modified:   install-scripts/00-dependencies.sh
	modified:   install-scripts/aquamarine.sh
	renamed:    install-scripts/hyprland-qtutils.sh -> install-scripts/hyprland-guiutils.sh
	new file:   install-scripts/hyprtoolkit.sh
	modified:   install.sh
	modified:   update-hyprland.sh
2025-12-10 12:47:00 -05:00
Don Williams
42cbae3c1c Pushing sdegler's changes to dev
On branch development
 Your branch is up to date with 'origin/development'.

 Changes to be committed:
	modified:   install-scripts/aquamarine.sh
	new file:   install-scripts/xkbcommon.sh
2025-12-10 12:35:43 -05:00
Don Williams
0ec2169efd Updated CHANGELOG 2025-12-10 12:24:49 -05:00
Don Williams
7707ec2c4e Updated CHANGELOG 2025-12-10 12:22:41 -05:00
Donald Williams
525ec5eb5a
Merge pull request #223 from JaKooLit/debian-ags-fix
Ported AGS fix from ubuntu to debian
2025-11-04 15:50:03 -05:00
Don Williams
df9f093dbb Ported AGS fix from ubuntu to debian
On branch debian-ags-fix
 Changes to be committed:
	modified:   install-scripts/ags.sh
2025-11-04 15:40:51 -05:00
Donald Williams
d20782004b
Merge pull request #222 from JaKooLit/ddubs-swww-upd
Upd swww_tag to v0.11.2 made tag chk use variable fixes numerous issues, like vertical monitors
2025-10-31 19:33:30 -04:00
Don Williams
de7dea585c Upd swww_tag to v0.11.2 made tag chk use variable
It was hard coded to 0.9.3 before. Now it checks again the swww_tag

 On branch ddubs-swww-upd
 Changes to be committed:
	modified:   install-scripts/swww.sh
2025-10-31 19:05:14 -04:00
Don Williams
b83b3e80ba Fixed script not pulling current Hyprland dotfiles
On branch main
 Your branch is up to date with 'origin/main'.

 Changes to be committed:
	modified:   install-scripts/dotfiles-branch.sh
2025-10-25 06:13:32 -04:00
Donald Williams
8048ec1908
Merge pull request #217 from brockar/brockar-readme
fix: improve formatting and clarity in README.md
2025-10-10 22:08:00 -04:00
brockar
84aa9ea163
fix: update debian versions on readme 2025-10-10 22:48:57 -03:00
brockar
503f31bf68
fix: improve formatting and clarity in README.md 2025-10-10 21:01:37 -03:00
Donald Williams
859ccae389
Merge pull request #216 from JaKooLit/hl-051
Update Hyprland to 0.51.1  Using tags newer versions can be  built
2025-10-10 18:13:16 -04:00
Don Williams
5928c27dca Updated README 2025-10-10 13:30:27 -04:00
Don Williams
a1a4bb4622 Updated CHANGELOG and README
Committer: Don Williams <dwilliams@explorer.homelab.net>

 On branch hl-051
 Your branch is up to date with 'origin/hl-051'

 Changes to be committed:
	modified:   CHANGELOGS.md
	modified:   README.md
2025-10-10 13:22:29 -04:00
Don Williams
307a0c641f Fixed syntax error
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install.sh
2025-10-09 21:46:02 -04:00
Don Williams
d298480443 feat: Hyprland 0.51.x upgrade tooling, central tags, docs update
Introduce focused Hyprland stack upgrade tooling and improve install
ordering for 0.51.x, with centralized version management and detailed
documentation for upgrading from 0.49/0.50.x to 0.51.1.

New scripts and modules
- update-hyprland.sh: Manage the Hyprland stack with:
  - --install / --dry-run build modes
  - --only and --skip for selective components
  - --with-deps to (re)install build deps
  - --set {KEY=TAG} and --restore tag backup support
  - --fetch-latest to pull latest GitHub release tags
  - --via-helper to delegate summary-only dry-runs
- dry-run-build.sh: Compile-only helper with summary output
- install-scripts/wayland-protocols-src.sh: Build wayland-protocols from
  source (>= 1.45) to satisfy Hyprland 0.51.x requirements

Core features
- Centralized tag management via hypr-tags.env; tags exported to all
  modules. Environment overrides remain first priority.
- Automatic dependency ordering for Hyprland 0.51.x:
  wayland-protocols-src → hyprland-protocols → hyprutils → hyprlang →
  aquamarine → hyprland
- Optional auto-fetch of latest tags on install runs that include
  hyprland (can be disabled via --no-fetch)
- Selective updates for targeted components and skip lists
- Dry-run mode to validate builds without installing

Installer integration
- install.sh reads hypr-tags.env and optionally refreshes tags.
- Ensures wayland-protocols-src is built before Hyprland.
- Maintains robust sequencing for the Hyprland stack.

Docs
- Debian-Hyprland-Install-Upgrade.md and .es.md:
  - Add explicit section: Upgrade 0.49/0.50.x → 0.51.1
  - Recommend: `./update-hyprland.sh --install --only hyprland`
  - Provide optional `--with-deps` and `--dry-run` flows
  - Add quick link anchor under Upgrade Workflows
- Clarify that full install via install.sh is not required for this
  upgrade unless optional modules need refresh or recovering from a
  partial/failed setup

Usage highlights
- Pin and upgrade to 0.51.1:
  ./update-hyprland.sh --set HYPRLAND=v0.51.1
  ./update-hyprland.sh --install --only hyprland
- Optional:
  ./update-hyprland.sh --with-deps --install --only hyprland
  ./update-hyprland.sh --dry-run --only hyprland

Notes
- Target OS remains Debian Trixie/SID; run as sudo-capable user (not
  root); ensure deb-src entries are enabled.
2025-10-09 16:51:11 -04:00
Don Williams
5a156b1b91 Adjusting compiler to use clang
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
2025-10-09 10:54:15 -04:00
Don Williams
6f97a5c359 Still trying to fix hl build
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   hypr-tags.env
	modified:   install-scripts/hyprland.sh
2025-10-08 20:40:44 -04:00
Don Williams
704d4b3c28 Fixing rc/sc errors building hyprland
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install-scripts/hyprlang.sh
	modified:   install-scripts/hyprutils.sh
2025-10-08 20:07:01 -04:00
Don Williams
64754089d4 Enabling subprojects to get hyprland to compile
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
2025-10-08 19:51:07 -04:00
Don Williams
f776563d3e Setting tags to properly install hyprlang/utils
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   hypr-tags.env
	modified:   install.sh
2025-10-08 19:33:25 -04:00
Don Williams
95708df841 Setting install to 0.51.1
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install.sh
	modified:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh
2025-10-08 18:47:22 -04:00
Don Williams
98c7c31635 Fixing HL install script
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install-scripts/hyprland.sh
2025-10-08 15:47:40 -04:00
Don Williams
becb1af622 Fixing scripts to fetch last core and build order
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install.sh
	new file:   refresh-hypr-tags.sh
	modified:   update-hyprland.sh
2025-10-08 15:19:02 -04:00
Don Williams
82367a41ae Fixing install order
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprland.sh
	modified:   update-hyprland.sh
2025-10-08 15:08:37 -04:00
Don Williams
ce70cf5c63 [Docs] Created how install/upgrade Hyprland
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	new file:   Debian-Hyprland-Install-Upgrade.es.md
	new file:   Debian-Hyprland-Install-Upgrade.md
2025-10-08 12:22:29 -04:00
Don Williams
b61d659a48 Fix "mv:" errors hyprutils,hyprlang build b4 HL
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   auto-install.sh
	modified:   dry-run-build.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hyprland-protocols.sh
	modified:   install-scripts/hyprland-qt-support.sh
	modified:   install-scripts/hyprland-qtutils.sh
	modified:   install-scripts/hyprland.sh
	modified:   install-scripts/hyprlang.sh
	modified:   install-scripts/hyprutils.sh
	modified:   install-scripts/hyprwayland-scanner.sh
	modified:   install.sh
    modified:   preset.sh
	modified:   update-hyprland.sh
2025-10-08 02:10:34 -04:00
Don Williams
47b260d877 wrong branch for wlr-protocols
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   hypr-tags.env
	modified:   install-scripts/wayland-protocols-src.sh
	modified:   update-hyprland.sh
2025-10-08 01:45:18 -04:00
Don Williams
0d1ca1a7c8 Fixing wl protocol build error
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   dry-run-build.sh
	modified:   hypr-tags.env
	new file:   install-scripts/wayland-protocols-src.sh
    modified:   update-hyprland.sh
2025-10-08 01:40:59 -04:00
Don Williams
5a34836119 upd AQ to 0.9.3 built first
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	modified:   dry-run-build.sh
	modified:   hypr-tags.env
	modified:   update-hyprland.sh
2025-10-08 01:37:33 -04:00
Don Williams
0593df837e Added upgrade script, tag env variables
On branch hl-051
 Your branch is up to date with 'origin/hl-051'.

 Changes to be committed:
	new file:   hypr-tags.env
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hyprland-protocols.sh
	modified:   install-scripts/hyprland-qt-support.sh
	modified:   install-scripts/hyprland-qtutils.sh
	modified:   install-scripts/hyprland.sh
	modified:   install-scripts/hyprlang.sh
	modified:   install-scripts/hyprutils.sh
	modified:   install-scripts/hyprwayland-scanner.sh
	new file:   update-hyprland.sh
2025-10-08 01:24:01 -04:00
Don Williams
bc8b456e3b Modified script for dry-run and helper script
On branch hl-051
 Changes to be committed:
	new file:   dry-run-build.sh
	modified:   install-scripts/aquamarine.sh
	modified:   install-scripts/hyprgraphics.sh
	modified:   install-scripts/hyprland-protocols.sh
	modified:   install-scripts/hyprland-qt-support.sh
	modified:   install-scripts/hyprland-qtutils.sh
    modified:   install-scripts/hyprland.sh
	modified:   install-scripts/hyprlang.sh
	modified:   install-scripts/hyprutils.sh
	modified:   install-scripts/hyprwayland-scanner.sh
2025-10-08 01:08:10 -04:00
Ja.KooLit
e21452b70d
Merge pull request #214 from qianqiangliu/main
updated the version of hyprland to v0.50.1
2025-08-26 09:46:26 +09:00
Qianqiang Liu
5d47307fb8 updated the version of hyprland to v0.50.1
Signed-off-by: Qianqiang Liu <qianqiang.liu@163.com>
2025-08-25 17:06:47 +08:00
Qianqiang Liu
66d7563034 updated the version of packages
Signed-off-by: Qianqiang Liu <qianqiang.liu@163.com>
2025-08-25 16:59:21 +08:00
JaKooLit
e55dad3ad5 updated install.sh 2025-07-29 23:20:59 +09:00
JaKooLit
020750d38b updated 2025-07-26 08:54:07 +09:00
Ja.KooLit
80562b269b
Merge pull request #208 from JaKooLit/development
Merge pull request #207 from JaKooLit/main
2025-07-26 08:42:19 +09:00
Ja.KooLit
af4db05a74
Merge pull request #207 from JaKooLit/main
Main to development
2025-07-26 08:41:49 +09:00
Ja.KooLit
4d9ae2d849
Merge branch 'development' into main 2025-07-26 08:41:43 +09:00
Ja.KooLit
f8fc8edb12
Merge pull request #206 from JaKooLit/Manual-Build
Manual build to Main
2025-07-26 08:38:08 +09:00
JaKooLit
d0eb93ef01 updated Debian-Hyprland Manual, making ready for 2025-07-26 08:37:24 +09:00
JaKooLit
18b519194a updated sddm.sh 2025-07-25 17:21:17 +09:00
JaKooLit
d8e8cf053a minor sddm theme update 2025-07-25 17:13:29 +09:00
JaKooLit
4d7bd53ffb updated sddm_theme.sh 2025-07-25 01:24:30 +09:00
JaKooLit
3a045e774b updated install.sh 2025-07-22 15:42:00 +09:00
JaKooLit
7a0260da91 Preparation for the new SDDM theme simple sddm updated version 2025-07-22 13:07:26 +09:00
JaKooLit
b7eb23b768 updated some dependencies 2025-07-20 17:37:59 +09:00
JaKooLit
e4737a709e updated, clean up codes / scripts 2025-07-20 16:49:14 +09:00
JaKooLit
2a364e0730 updated install.sh 2025-07-20 01:42:19 +09:00
JaKooLit
3a3ee81726 updated xdph 2025-07-20 01:39:04 +09:00
JaKooLit
e149238243 updated dependencies 2025-07-20 01:30:32 +09:00
JaKooLit
1c2301ef9a added dependencies 2025-07-20 01:15:33 +09:00
JaKooLit
805821e85a some updates on dependencies 2025-07-20 01:03:34 +09:00
Ja.KooLit
102aefb774
Update install.sh 2025-07-20 00:28:47 +09:00
JaKooLit
6029b017b7 removal of hyprland.desktop from assets 2025-07-19 20:38:01 +09:00
JaKooLit
e789518612 fixed for hyprutils 2025-07-19 20:25:44 +09:00
JaKooLit
6d7cbb5e92 updated to download from specific dots branch 2025-07-19 17:27:59 +09:00
JaKooLit
110e2a1453 added removal cleanup for the hyprland packages installed from Debian Official. Updated rofi-wayland to latest package. updated hyprlock.sh 2025-07-19 16:51:22 +09:00
JaKooLit
1603c8be35 updated dependencies and hyprlock 2025-07-19 11:27:22 +09:00
JaKooLit
849677a93b another update 2025-07-19 11:21:18 +09:00
JaKooLit
ed40d04fc0 updated 2025-07-19 11:08:55 +09:00
JaKooLit
e1c65a06db clean up hyprland dependencies 2025-07-19 11:01:39 +09:00
JaKooLit
7a31cd755c another attempt 2025-07-19 10:57:13 +09:00
JaKooLit
aad716cbb3 forgot to add hyprwayland scanner in the install.sh 2025-07-19 01:35:53 +09:00
JaKooLit
7a5c0cb54e added hyprwayland scanner 2025-07-19 01:33:57 +09:00
JaKooLit
9e2ea0c998 added hyprcursor and hyprutils 2025-07-19 01:29:48 +09:00
JaKooLit
8d4a214fac initial pushed. Just copied from my old script 2025-07-19 01:17:36 +09:00
JaKooLit
d6ff910df5 very limited support 2025-06-22 00:57:59 +09:00
Ja.KooLit
949a18a7d5
Merge pull request #199 from JaKooLit/development
Updated for new SDDM theme
2025-06-09 08:37:06 +09:00
JaKooLit
153721005b updated for new SDDM theme 2025-06-09 08:31:10 +09:00
Ja.KooLit
0e795cfdc5
Merge pull request #198 from JaKooLit/main
main to development
2025-06-09 08:07:49 +09:00
JaKooLit
e9727461b0 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:58:25 +09:00
JaKooLit
9024eefdcf adjusted zsh.sh so it will work even on a non-posix compliant shell like fish 2025-03-24 17:11:52 +09:00
JaKooLit
79b63dde32 Updated README re-contributing 2025-03-21 22:25:23 +09:00
JaKooLit
78d3225cbc updated contributing.md 2025-03-21 22:06:12 +09:00
JaKooLit
dbd7b2538c added findutils as dependencies 2025-03-20 15:24:52 +09:00
Ja.KooLit
cdc59f42f2
Merge pull request #192 from JaKooLit/development
branches synchro
2025-03-20 12:21:51 +09:00
Ja.KooLit
fbae2784ac
Merge pull request #191 from JaKooLit/main
updated sddm background
2025-03-20 12:21:29 +09:00
JaKooLit
cf923cc905 updated sddm background 2025-03-17 21:37:32 +09:00
Ja.KooLit
aa48b824d2
Merge pull request #190 from JaKooLit/main
main to development
2025-03-15 17:29:32 +09:00
JaKooLit
9c6de8da54 replaced folders//folder with directories/directory 2025-03-13 23:16:53 +09:00
JaKooLit
ba82a14139 disabled blank issue template 2025-03-13 20:24:10 +09:00
JaKooLit
62d0b9ac96 updated packages message if all essential packages are installed 2025-03-13 19:45:49 +09:00
JaKooLit
fa5de35c7b updated discord links 2025-03-13 19:22:25 +09:00
JaKooLit
1252bea27b updated install.sh re-active login managers 2025-03-13 00:24:21 +09:00
JaKooLit
897bdb1fe7 added unzip as needed for fonts installation 2025-03-12 23:08:39 +09:00
JaKooLit
0eeb107c4a copied Ubuntu 24.10 (almost) installation of hyprland. See if this helps with installation of hypridle 2025-03-12 23:01:18 +09:00
JaKooLit
7f3fc195b5 updated changelogs 2025-03-12 19:48:51 +09:00
JaKooLit
bed570666d updated ags.sh 2025-03-12 19:44:52 +09:00
JaKooLit
6cdf38afb4 updated debian dependencies 2025-03-12 18:54:55 +09:00
JaKooLit
bbcb3b94da updated hypridle.sh 2025-03-12 18:35:27 +09:00
Ja.KooLit
304cda4306
Merge pull request #189 from JaKooLit/development
Development to main
2025-03-12 11:54:04 +09:00
JaKooLit
606fdb86bf updated readme 2025-03-12 10:54:59 +09:00
JaKooLit
d26a11dd3f updated readme 2025-03-12 10:51:36 +09:00
JaKooLit
63bb7f38be updated README 2025-03-12 10:26:38 +09:00
Ja.KooLit
f06584a692
Merge pull request #188 from JaKooLit/main
main to development
2025-03-12 01:27:40 +09:00
JaKooLit
c93c498454 added manual building of hyprlang which ultimately fixes building of hypridle 2025-03-12 00:07:17 +09:00
JaKooLit
f023d5e9b8 updated uninstall.sh 2025-03-11 23:30:41 +09:00
JaKooLit
ea038dee51 updated uninstall.sh to have a wildcards for removing dirs from ~/.config. This will also remove the backups 2025-03-11 19:59:45 +09:00
JaKooLit
b55e2be928 remove unzip from list of packages to unintstall 2025-03-11 19:53:06 +09:00
JaKooLit
2fbe7d0065 updated uninstall.sh 2025-03-11 19:47:43 +09:00
JaKooLit
f66cbbf3ca updated uninstall.sh 2025-03-11 19:33:18 +09:00
JaKooLit
9ce8e591fe 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:13:05 +09:00
JaKooLit
4139c60b42 remove gnome-system-monitor as it cause gnome to be removed 2025-03-11 17:53:41 +09:00
JaKooLit
a15c816159 updated uninstall.sh 2025-03-11 17:36:15 +09:00
JaKooLit
ee04881461 some changes 2025-03-11 17:25:41 +09:00
JaKooLit
dfe4bb2f81 minor sddm.sh update 2025-03-11 17:19:44 +09:00
JaKooLit
0e5c3be377 updated sddm.sh 2025-03-11 17:17:26 +09:00
JaKooLit
1555d2a367 updated install.sh 2025-03-11 17:13:34 +09:00
JaKooLit
de221f3376 update readme for uninstall.sh script 2025-03-11 14:54:03 +09:00
JaKooLit
776c2d8745 updated README and install.sh on switching to SDDM 2025-03-11 12:06:04 +09:00
JaKooLit
5afafd3baa updated global function 2025-03-11 11:50:33 +09:00
JaKooLit
55318aaf47 see if this helps 2025-03-11 11:27:35 +09:00
JaKooLit
547454d9c8 updated 2025-03-11 11:15:31 +09:00
JaKooLit
1430357aa5 update readme 2025-03-11 11:05:25 +09:00
JaKooLit
69333f366e woops 2025-03-11 01:43:08 +09:00
JaKooLit
9dc1f17046 dropped pyprland 2025-03-10 14:21:05 +09:00
Ja.KooLit
63f9086268
Merge pull request #186 from JaKooLit/main
main to development
2025-03-10 14:11:35 +09:00
installer
40bbd3710e updated readme 2025-03-10 11:59:17 +09:00
JaKooLit
30e4c5ee9a updated install.sh to highlight deb-src importance 2025-03-10 01:15:31 +09:00
JaKooLit
4284de2b90 updated dotfiles.sh 2025-03-09 16:13:38 +09:00
JaKooLit
7fe3d55f43 C0E7-4B50 2025-03-08 23:17:13 +09:00
JaKooLit
06e22ad0b3 removed vim in the packages to install 2025-03-08 22:55:32 +09:00
Ja.KooLit
8d5f696e7e
Merge pull request #185 from JaKooLit/development
Development to main (whiptail edition)
2025-03-08 20:24:47 +09:00
JaKooLit
0c7acc2bdf minor update 2025-03-07 23:58:34 +09:00
JaKooLit
543c6fc478 some cleanup 2025-03-07 23:51:26 +09:00
JaKooLit
e262c26807 updated readme 2025-03-07 19:58:26 +09:00
JaKooLit
9f50b85b56 added some color coding 2025-03-07 18:49:13 +09:00
JaKooLit
9a671a4033 added auto clone and auto ran of install.sh 2025-03-07 16:09:56 +09:00
Ja.KooLit
d9441caa7f
Merge pull request #184 from JaKooLit/dev-whiptail
Dev whiptail to development
2025-03-07 14:06:46 +09:00
JaKooLit
1ddec825bb updated 2025-03-07 13:44:14 +09:00
JaKooLit
752204861d updated position of hypridle and hyprlock installation 2025-03-07 13:33:19 +09:00
JaKooLit
ddcda91ef2 some color coding added 2025-03-07 13:25:18 +09:00
JaKooLit
30ae2a9bb7 adjusted to disable sddm option if non-SDDM login managers are active 2025-03-07 10:12:34 +09:00
JaKooLit
6dca0e6212 switched to lsd from eza 2025-03-06 22:56:15 +09:00
JaKooLit
df725aa048 adjusted install.sh 2025-03-02 13:21:04 +09:00
JaKooLit
f2081836d3 updated wallust.sh 2025-03-02 02:38:10 +09:00
JaKooLit
f97c37b7b7 updated login manager warning 2025-03-02 02:17:41 +09:00
JaKooLit
56253c8ab9 woops additional s 2025-03-02 01:10:05 +09:00
JaKooLit
62a48059c4 removed nouveau option 2025-03-02 00:41:48 +09:00
JaKooLit
10066aa0ce Initial Push Debian-Whiptail version 2025-03-02 00:09:43 +09:00
Ja.KooLit
6b5175c2a3
Merge pull request #183 from JaKooLit/main
main to development
2025-03-01 21:39:05 +09:00
JaKooLit
2983d3836f switched hypridle and hyprlock dependencies to force install 2025-02-27 17:48:22 +09:00
JaKooLit
370641659f updated pokomen.sh 2025-02-25 12:01:30 +09:00
Ja.KooLit
8077f10d5c
Update .zshrc 2025-02-25 08:05:00 +09:00
JaKooLit
21ba7d2a81 updated zsh_pokemon.sh 2025-02-25 01:20:03 +09:00
JaKooLit
6ff6a028a3 updated readme re- Debian and Ubuntu 2025-02-24 01:10:54 +09:00
Ja.KooLit
e0ff97bb33
Merge pull request #181 from JaKooLit/main
main to development
2025-02-24 00:55:46 +09:00
JaKooLit
45a8cbf224 applying of sddm theme fixed 2025-02-24 00:15:57 +09:00
JaKooLit
dadfea04ba added nwg-displays 2025-02-23 20:01:35 +09:00
JaKooLit
c487bc20fb dang forgot to update debian .zshrc 2025-02-23 19:59:23 +09:00
JaKooLit
d7a51fd27f updated zsh installation 2025-02-23 19:52:29 +09:00
Ja.KooLit
2d0db8dd5f
Merge pull request #180 from JaKooLit/development
Development to Main
2025-02-23 14:33:39 +09:00
JaKooLit
8faff7a9a2 added Fantasque Sans Mono Nerd for Kitty 2025-02-23 12:37:16 +09:00
JaKooLit
4988fccf53 added Victor Mono Font for proper hyprlock font rendering for Dots v2.3.12 2025-02-23 11:46:07 +09:00
JaKooLit
c103b2d2ef changed url for installing oh-my-zsh to get wider coverage. Some countries are blocking github raw url's 2025-02-22 13:02:01 +09:00
JaKooLit
4af40ca413 replaced eog with loupe 2025-02-22 01:03:37 +09:00
Ja.KooLit
60dae034ee
Merge pull request #179 from JaKooLit/main
fix zsh theme issue
2025-02-21 15:47:32 +09:00
JaKooLit
033953f961 fix zsh theme issue 2025-02-21 15:03:14 +09:00
Ja.KooLit
8692d72565
Merge pull request #178 from JaKooLit/main
main to development
2025-02-20 23:35:12 +09:00
JaKooLit
ccc33181e2 added initial shell check first if zsh already inorder to skip changing to zsh 2025-02-19 20:23:36 +09:00
Ja.KooLit
700a74e42e
Update 00-dependencies.sh 2025-02-19 08:48:10 +09:00
JaKooLit
9c1f748c7e added mercurial for the new oh my zsh theme 2025-02-19 00:09:43 +09:00
JaKooLit
49434ac11b Change default zsh theme to adnosterzak, pokemon coloscript integrated with fastfetch when opted with pokemon to add some bling, additional external oh-my-zsh themev 2025-02-18 12:00:48 +09:00
JaKooLit
74f1b6ea84 updated sddm_theme.sh 2025-02-16 14:19:15 +09:00
JaKooLit
8e972b6c13 fixed sddm theme applying 2025-02-16 13:13:21 +09:00
JaKooLit
69d5c19d16 readme updated 2025-02-11 22:47:50 +09:00
JaKooLit
bd0d515641 updated pokemon.sh 2025-02-10 18:19:01 +09:00
JaKooLit
0d8f48a7fe readme updated 2025-02-10 00:28:13 +09:00
JaKooLit
d096c34be3 more robust approach in installing sddm to avoid newbie move 2025-02-09 10:35:34 +09:00
JaKooLit
174149c11b updated install.sh re-nvidia cause it shouldnt be there :) 2025-02-09 09:53:45 +09:00
JaKooLit
20194ad4e1 updated secondary check for disable other login managers 2025-02-09 09:40:39 +09:00
JaKooLit
fce608265f updated sddm.sh 2025-02-09 08:42:48 +09:00
JaKooLit
c7900e5ff7 update 2025-02-09 00:38:14 +09:00
JaKooLit
73c7809ee9 minor sddm..sh tweak 2025-02-09 00:36:07 +09:00
Ja.KooLit
0ec4c95c84
Merge pull request #176 from JaKooLit/main
main to development
2025-02-07 21:41:05 +09:00
Ja.KooLit
cc67ce6132
Merge pull request #175 from JaKooLit/development
Development to main
2025-02-07 21:40:14 +09:00
JaKooLit
ef8d00c1a1 updated sddm and sddm theme 2025-02-07 21:27:59 +09:00
JaKooLit
78c4b89397 updated sddm_theme.sh 2025-02-07 20:21:49 +09:00
JaKooLit
ca34691998 updated preset.sh 2025-02-07 19:18:06 +09:00
JaKooLit
a22f72676c updated screenshot of install scripts 2025-02-07 01:29:30 +09:00
JaKooLit
178b1a7528 RC1 2025-02-07 00:18:01 +09:00
JaKooLit
62dd1a27cf another tweak for ags.sh 2025-02-06 13:06:11 +09:00
JaKooLit
d79e8bfdf4 tweaked ags.sh 2025-02-06 12:57:27 +09:00
JaKooLit
8b63f2287e modified Inputgroupp.sh to only proceed if User is not in Input group yet 2025-02-06 12:51:14 +09:00
JaKooLit
e11c134b59 another tweak 2025-02-06 12:24:00 +09:00
JaKooLit
d74929e095 knew it 2025-02-06 12:08:23 +09:00
JaKooLit
994ada90ac new logo :) 2025-02-06 11:58:25 +09:00
JaKooLit
fc62a8b6b3 hey. Dont mind me.. I am still tweaking :) 2025-02-06 10:01:47 +09:00
JaKooLit
8e97337cca replaced all apt-get to apt only 2025-02-06 09:15:19 +09:00
JaKooLit
cfc3bbd4b6 color coding & script tweaks 2025-02-06 01:33:59 +09:00
JaKooLit
ecee40435a tweaked 2025-02-06 01:11:29 +09:00
JaKooLit
558916b8f5 updated 2025-02-06 01:00:24 +09:00
JaKooLit
1a4c8dd1eb minor tweak 2025-02-06 00:51:02 +09:00
JaKooLit
d4d72ad88c tweaked install.sh 2025-02-06 00:31:32 +09:00
JaKooLit
586107bf98 package removal function enhanced 2025-02-05 23:38:28 +09:00
JaKooLit
eaebe94940 new package removal function 2025-02-05 23:27:32 +09:00
JaKooLit
0bdd2fb29e minor update 2025-02-05 23:22:17 +09:00
JaKooLit
228426def4 minor update 2025-02-05 22:12:55 +09:00
JaKooLit
6bd54ee3c7 switch from apt-get to apt 2025-02-05 22:03:13 +09:00
JaKooLit
9536a98b73 minor update 2025-02-05 20:52:09 +09:00
JaKooLit
9334691f76 updated sddm.sh 2025-02-05 13:42:58 +09:00
JaKooLit
790bfb8447 minor tweak 2025-02-05 13:31:42 +09:00
JaKooLit
e096334e2e added ohcount as rofi-wayland dependencies 2025-02-05 13:27:42 +09:00
JaKooLit
046aaaa39c updated install.sh 2025-02-05 11:44:48 +09:00
JaKooLit
1843c09220 updated thunar.sh 2025-02-05 11:35:29 +09:00
JaKooLit
f4c78ce0c8 minor update 2025-02-05 11:12:21 +09:00
JaKooLit
2460ffc7bd OK 2025-02-05 09:56:00 +09:00
JaKooLit
214fe3997f added build-dep 2025-02-05 09:53:30 +09:00
JaKooLit
eef6cdd5a5 updatedquite possibly ready for testing? 2025-02-05 08:45:50 +09:00
JaKooLit
4baa3780d6 updated sddm.sh 2025-02-05 01:01:05 +09:00
JaKooLit
36331c9cb2 updated install.sh 2025-02-05 00:55:08 +09:00
JaKooLit
0705d4b911 updated 2025-02-05 00:47:05 +09:00
JaKooLit
6b3b868037 im always surprised I missed something :) 2025-02-05 00:19:21 +09:00
JaKooLit
80a1bf59b3 updated 2025-02-05 00:06:44 +09:00
JaKooLit
73df7cd572 updated dependencies and rofi-wayland.sh 2025-02-04 23:48:12 +09:00
JaKooLit
a729ff87cc rofi wayland update 2025-02-04 23:25:26 +09:00
JaKooLit
292180195c minor update 2025-02-04 23:21:16 +09:00
JaKooLit
04c632ca9e another update 2025-02-04 23:17:20 +09:00
JaKooLit
c447605701 updated 2025-02-04 23:09:50 +09:00
JaKooLit
37aef30bbd update 2025-02-04 22:55:31 +09:00
JaKooLit
50343fe1c6 minor adjustment 2025-02-04 22:53:35 +09:00
JaKooLit
2656e277ba updated showcase readme 2025-02-04 22:24:06 +09:00
JaKooLit
d428f8957c updated showcase readme 2025-02-04 22:23:58 +09:00
JaKooLit
a4fb50b39e Initial changes to a better installer 2025-02-04 22:08:52 +09:00
JaKooLit
cc394baec7 updated Readme showcase 2025-02-04 21:08:38 +09:00
JaKooLit
e577bf8bf4 updated Readme showcase 2025-02-04 21:08:33 +09:00
JaKooLit
195970bcbc AGS to install only if not installed with v1.9.0 2025-02-03 17:39:52 +09:00
Ja.KooLit
0b0058ed6d
Merge pull request #174 from JaKooLit/development
Development to main
2025-02-03 17:26:32 +09:00
Ja.KooLit
706479e512
Merge pull request #173 from JaKooLit/main
Main to Development
2025-02-03 17:25:59 +09:00
JaKooLit
c81ad11044 updated some color coding.
Will probably tweak more laterv
2025-01-31 23:36:39 +09:00
JaKooLit
80880126e9 color coding update 2025-01-31 00:52:58 +09:00
JaKooLit
da44b430bc color coding adjustments 2025-01-31 00:37:30 +09:00
JaKooLit
ca987ada96 remove ags on final check since it is now optional 2025-01-30 21:32:54 +09:00
JaKooLit
9677771335 updated link for AGS overview 2025-01-30 20:40:47 +09:00
JaKooLit
d681e22344 updated readme 2025-01-30 13:54:22 +09:00
JaKooLit
14f31e7a06 added readme for AGS overview 2025-01-30 12:03:41 +09:00
JaKooLit
049225f2f4 AGS (aylur's GTK shell) v1 for desktop overview is now optional 2025-01-30 10:33:26 +09:00
JaKooLit
d6eb5230e6 updated readme 2025-01-28 22:46:27 +09:00
JaKooLit
bccd6e138f updated readme 2025-01-18 10:58:39 +09:00
Ja.KooLit
302022e4ee
Merge pull request #172 from JaKooLit/main
main to development
2025-01-16 06:50:52 +09:00
JaKooLit
67fc04e5a9 switch to final version of aylurs-gtk-shell-v1 2025-01-12 13:20:43 +09:00
JaKooLit
70de2f5188 readme updated 2025-01-07 21:59:30 +09:00
Ja.KooLit
cd4539edeb
Merge pull request #170 from JaKooLit/main
main to development
2025-01-07 21:47:31 +09:00
JaKooLit
a3f8a5c496 another update for Readme 2025-01-07 21:23:45 +09:00
JaKooLit
baa8908cfc updated readme 2025-01-07 21:22:23 +09:00
JaKooLit
0fd699589c updated readme 2025-01-07 21:13:41 +09:00
JaKooLit
2a3cc1be68 switched to xarchiver simply because file-roller sucks. gives me lots of issues 2025-01-07 11:51:19 +09:00
JaKooLit
6b551b2fb3 zsh theme to funky and added fastfetch config for distro specific 2025-01-07 11:10:44 +09:00
JaKooLit
22a6cd30c2 templates final 2025-01-03 22:48:07 +09:00
JaKooLit
68b82511d7 updated issue and feature request template 2025-01-03 21:29:57 +09:00
JaKooLit
5e2329dfba Switched to download dots from KooL's Hyprland dots specific branch 2025-01-01 22:01:56 +09:00
JaKooLit
bfb1b599d9 Global Function Tweak 2024-12-29 01:35:43 +09:00
JaKooLit
d9bf08945c small tweak on Global Functions 2024-12-27 20:03:13 +09:00
JaKooLit
07a49f61e9 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:22 +09:00
JaKooLit
5c175b37b6 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:53:40 +09:00
Ja.KooLit
198a798056
Update swww.sh 2024-12-18 20:38:27 +00:00
Ja.KooLit
e6afbfd67c
Update swww.sh - changed git address to LGFae 2024-12-16 17:52:38 -04:00
JaKooLit
43290a3fc2 updated swww.sh to download from version v0.9.5 2024-12-05 07:46:50 +09:00
Ja.KooLit
eafd37ead2
Update install.sh - edited the Ubuntu warning part 2024-11-30 16:40:32 -03:00
JaKooLit
51d031f1aa added wget 2024-11-25 05:07:29 +09:00
JaKooLit
d4c11f8d51 switched to download rofi-wayland from releases instead from upstream 2024-11-25 05:02:49 +09:00
JaKooLit
0a2dc7604c minor update 2024-10-11 22:24:49 +09:00
JaKooLit
b59c743a0b updated for Updating dots on Debian and Ubuntu 2024-09-21 11:58:56 +09:00
JaKooLit
1ca4762d1c 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:46 +09:00
JaKooLit
013fcb35ad updated zsh.sh 2024-09-20 17:43:11 +09:00
JaKooLit
d300545f86 updated / corrected some issues 2024-09-20 17:07:45 +09:00
JaKooLit
39a076eb56 Added fastfetch on tty. However, will be disabled if user decided to install pokemon colorscripts 2024-09-19 17:04:01 +09:00
JaKooLit
a659885466 updated xdph installation since it is now in Debian Repo 2024-09-19 11:46:16 +09:00
JaKooLit
0e67ddcd9f ask user if thunar wants to be default. some formatting changes 2024-09-18 17:13:21 +09:00
installer
2e45ba4fd7 nwg-look is now in Debian Repo 2024-09-14 21:32:00 +09:00
JaKooLit
f1fdca216f Final tweaks of color variants for output messages 2024-09-14 17:08:04 +09:00
JaKooLit
23e553f7fd updated final-check.sh 2024-09-14 16:37:42 +09:00
JaKooLit
f499ab4303 Added Essential Packages final check in lieu of errors from Install log files in Install-Logs directory 2024-09-14 16:10:24 +09:00
JaKooLit
1662f6a810 added yad in assets. Downloaded from SIR to install in testing 2024-09-14 11:53:08 +09:00
JaKooLit
9d7ffc1c78 updated login-manager service checks 2024-09-10 13:00:34 +09:00
JaKooLit
0be860cbab added background check of known login managers if they are active if user chose to install sddm 2024-09-10 12:51:56 +09:00
installer
62cde7c8f6 added force reinstall for some packages.
remove cargo
2024-09-09 23:35:25 +09:00
JaKooLit
1baeede9a2 just color tweak 2024-09-08 14:55:19 +09:00
Ja.KooLit
a742997159
Merge pull request #156 from JaKooLit/main
Main to Dev Added final error checks on install-logs
2024-09-08 11:57:20 +09:00
JaKooLit
d900fe4174 Added final error checks on install-logs 2024-09-08 11:45:36 +09:00
JaKooLit
17a6868038 added imagemagick on rofi-wayland since it has history of imagemagick not installing before 2024-09-07 23:07:59 +09:00
JaKooLit
2f8f619b96 disabled imagemagick compilation from source & dotfiles adjusted so it will be compatible for imagemagick v6 2024-09-07 22:45:55 +09:00
installer
7737b07f92 Fix installation issue on hyprlock and xdph 2024-09-07 21:53:03 +09:00
Ja.KooLit
a15ea4ab9b
Merge pull request #154 from JaKooLit/main
Main to development
2024-09-05 17:09:18 +09:00
JaKooLit
a8617b8b52 added a funnction check for Ubuntu based 2024-09-04 11:51:43 +09:00
Ja.KooLit
61f7e74a80 install.sh - Edited to WARN if hyprland failed to install 2024-09-01 15:31:15 +09:00
JaKooLit
65ee22c04d updated wallust and swww and iinstall.sh 2024-08-31 12:59:37 +09:00
Ja.KooLit
cc573fe286
Update README.md 2024-08-29 10:04:24 +09:00
Ja.KooLit
6ea822660e
Update README.md 2024-08-29 10:03:44 +09:00
Ja.KooLit
78dcfa8748
Merge pull request #153 from JaKooLit/development
Synchronize Main and Development Branches
2024-08-28 18:45:14 +09:00
Ja.KooLit
96745ebb8b
Merge pull request #152 from JaKooLit/main
Synchronize Main and Development Branches
2024-08-28 18:44:46 +09:00
Ja.KooLit
f873acae35 Added final check if hyprland is installed and will give an error to user 2024-08-28 18:36:11 +09:00
Ja.KooLit
35ca471c92 updated install.sh to check if Hyprland is installed and will give an error message 2024-08-28 18:34:33 +09:00
Ja.KooLit
f2f758eba8
Merge pull request #151 from JaKooLit/main
Main to Development synchronization
2024-08-26 23:14:20 +09:00
JaKooLit
7faa5256a3 updated hyprland.sh. removed the hyprland-devel and force reinstall hyprland 2024-08-25 10:37:08 +09:00
JaKooLit
325aa90e13 updated imagemagick.sh to not reinstall again if imagemagick is already installed 2024-08-25 10:19:17 +09:00
Ja.KooLit
750017a157
Merge pull request #150 from JaKooLit/development
Updated Readme
2024-08-24 23:52:20 +09:00
JaKooLit
6b55a283b3 Updated Readme 2024-08-24 23:51:34 +09:00
Ja.KooLit
720a15e9b4
Merge pull request #149 from JaKooLit/development
Development to Main
2024-08-24 23:43:33 +09:00
JaKooLit
5a4cc65d7b updated dotfiles 2024-08-24 23:42:42 +09:00
Ja.KooLit
49ced9ee76
Merge pull request #148 from JaKooLit/main
Main to Development
2024-08-24 23:04:30 +09:00
Ja.KooLit
480d8d6bc3
Merge pull request #147 from JaKooLit/development
Dev to Main
2024-08-24 23:03:57 +09:00
JaKooLit
275f05ee17 updated xdph.sh 2024-08-24 22:42:45 +09:00
Ja.KooLit
769025325b
Update CHANGELOGS.md 2024-08-24 11:29:06 +09:00
Ja.KooLit
037f493fd4
Merge pull request #146 from JaKooLit/development
Development to Main
2024-08-24 11:28:08 +09:00
JaKooLit
9b6bee4176 updated to download a newer but not latest dotfiles 2024-08-24 11:26:53 +09:00
JaKooLit
aff95490c2 Updated Readme and Changelogs - Remove Ubuntu Links 2024-08-24 00:14:40 +09:00
Ja.KooLit
4ca3bffc86
Merge pull request #144 from JaKooLit/development
Development to Main - Refactor of Debian-Hyprland Script
2024-08-23 20:45:25 +09:00
JaKooLit
1972158bf4 updated depencies for hyprlock and hypridle as during test it failed to install 2024-08-23 20:40:08 +09:00
Ja.KooLit
75005d4923
Update 01-pre-cleanup.sh 2024-08-22 22:47:10 +09:00
Ja.KooLit
deb284687d
updating Loggings - Building from source 2024-08-22 22:42:52 +09:00
Ja.KooLit
86ec0f97a0
Update wallust.sh
MLOG
2024-08-22 22:32:22 +09:00
Ja.KooLit
c85b153013
Update 01-pre-cleanup.sh 2024-08-22 22:21:23 +09:00
JaKooLit
32b5b47fb2 updated cleanup.sh 2024-08-22 21:33:48 +09:00
JaKooLit
69bfa9328f added waybar on pre-cleanup.sh 2024-08-22 21:31:19 +09:00
JaKooLit
e3f5cade66 added fastfetch 2024-08-22 20:59:09 +09:00
JaKooLit
e5a9d3c01f updated rofi-wayland script (added dependencies) 2024-08-22 20:58:01 +09:00
JaKooLit
58cc87957d Refactor - Debian-Hyprland as it is in official repo already 2024-08-22 20:07:06 +09:00
Ja.KooLit
edabada64b
Merge pull request #141 from JaKooLit/main
main to dev
2024-08-14 21:02:10 +09:00
Ja.KooLit
031e02479b
Add files via upload 2024-08-10 15:27:27 +00:00
Ja.KooLit
73a9cc5616
updated readme 2024-08-10 13:59:10 +00:00
JaKooLit
f0354e3f8f updated hyprland.sh to add Hyprland.desktop on wayland sessions folder. Readme updated 2024-07-23 23:22:11 +09:00
JaKooLit
63d179710d updated readme regarding nvidia 2024-07-23 22:48:21 +09:00
Ja.KooLit
9ef14fc5f2
Update xdph.sh regarding security
https://github.com/hyprwm/xdg-desktop-portal-hyprland/releases/tag/v1.3.3
2024-07-22 21:51:14 +06:00
Ja.KooLit
5d74646f84
Update hyprland.sh
Updated to download specific branch
2024-07-21 15:47:34 +05:00
Ja.KooLit
45ac627f6a
Merge pull request #129 from JaKooLit/main
synchronize Main to Development
2024-07-11 11:46:16 +09:00
JaKooLit
232287c84b updated readme re rofi 2024-07-11 11:40:42 +09:00
Ja.KooLit
6459f1f677
Merge pull request #127 from JaKooLit/main
synchronize Main to Development
2024-07-11 11:17:06 +09:00
JaKooLit
0b75513f33 updated readme 2024-07-11 11:12:09 +09:00
JaKooLit
49a01b84c3 move hyprutils to install first before hyprlock 2024-07-10 00:03:15 +09:00
Ja.KooLit
e304844cff
Merge pull request #123 from JaKooLit/development
added eza for tty ls
2024-07-07 22:51:43 +09:00
JaKooLit
ebd9f5f391 added eza for tty ls 2024-07-07 22:47:20 +09:00
JaKooLit
75d76bfeba updated for latest dotfiles 2024-07-07 13:29:58 +09:00
JaKooLit
c5dc230a42 updated for Hyprlandd-ts release to v2.3.1 2024-07-07 07:33:58 +09:00
JaKooLit
f6bd600e02 removal of xdph specific tag 2024-07-07 06:15:37 +09:00
JaKooLit
07eff75c87 updated swappy since swappy is now in official repo 2024-07-07 06:02:20 +09:00
Ja.KooLit
ad403e0617
Merge pull request #121 from JaKooLit/development
Version bumps for Hyprland v0.41.2
2024-07-06 16:35:11 +09:00
Ja.KooLit
b225d92935
Merge branch 'main' into development 2024-07-06 16:35:03 +09:00
JaKooLit
54a30f20f2 Version bumps for Hyprland v0.41.2 2024-07-06 16:31:54 +09:00
JaKooLit
293886ce82 added fbdev=1 in /etc/modprobe.d/nvidia.conf 2024-07-05 11:00:58 +09:00
Ja.KooLit
9fcdcbc5ee
Update README.md 2024-06-23 17:02:01 +08:00
JaKooLit
2af7fb5f6c updated Discord Link - Readme 2024-06-22 15:08:31 +09:00
JaKooLit
db3aca0099 updated discord link 2024-06-21 04:26:07 +09:00
Ja.KooLit
dc931f06de updated readme regarding nvidia 2024-06-11 04:40:37 +09:00
Ja.KooLit
74c65605c6 updated for dotfiles v2.2.14 2024-06-11 04:14:53 +09:00
Ja.KooLit
82d0bef4ee
Update rofi-wayland.sh 2024-06-10 10:55:41 +09:00
JaKooLit
8945ba58d1 updated rofi-wayland.sh To redownload a new rofi-wayland from repo instead of pulling changes. (It proves giving issue) 2024-06-10 00:30:59 +09:00
JaKooLit
69773038d1 added inxi for better diagnostic info 2024-06-09 10:36:00 +09:00
Ja.KooLit
dedc99095f updated readme 2024-06-09 00:00:10 +09:00
Ja.KooLit
e80440b7a2 updated readme 2024-06-08 23:58:43 +09:00
Ja.KooLit
6fad61e138 updated readme 2024-06-08 23:54:36 +09:00
Ja.KooLit
e10bc8effc
Update hyprlock.sh 2024-06-08 10:28:40 +09:00
Ja.KooLit
8a1d15803a
Update rofi-wayland.sh 2024-06-08 10:23:03 +09:00
JaKooLit
5339de714d updated hyprwayland-scanner install script 2024-06-08 06:08:18 +09:00
Ja.KooLit
290e306ab7
Update wallust.sh 2024-06-06 06:08:40 +09:00
Ja.KooLit
3b29b8769a
Update wallust.sh 2024-06-06 05:31:30 +09:00
Ja.KooLit
7abc9daee2
Merge pull request #103 from JaKooLit/development
Development to main
2024-06-05 19:46:03 +09:00
Ja.KooLit
bb2e2a4955
Merge pull request #102 from JaKooLit/main
main to dev
2024-06-05 19:45:23 +09:00
JaKooLit
bee66795f1 added keybinds link on readme 2024-06-05 13:25:14 +09:00
JaKooLit
60f3b7259d removed bookmarks from gtk-3.0 directory 2024-06-05 13:01:49 +09:00
Ja.KooLit
03e6050dfd
Merge pull request #97 from JaKooLit/main
main to development
2024-06-04 03:03:22 +09:00
JaKooLit
bc2d656582 - switched over to source install for imagemagick
- removal of fzf for Debian and Ubuntu (headache)
2024-06-04 02:00:41 +09:00
JaKooLit
873b625deb removed fzf (headache) 2024-06-04 01:12:20 +09:00
JaKooLit
7c9725385f updated Thunar.sh to include gtk-3.0 config if not present 2024-06-01 18:56:13 +09:00
JaKooLit
a0f05de29d updated install script to install binary only 2024-06-01 17:24:46 +09:00
JaKooLit
df4ff30d4a modified zsh.sh for fzf installation 2024-06-01 03:07:51 +09:00
JaKooLit
f6af9f8631 updated issue templates 2024-05-30 03:22:57 +09:00
Ja.KooLit
15a7121518
Merge pull request #94 from JaKooLit/main
Main to development
2024-05-27 05:23:23 +09:00
JaKooLit
e8abd18ac4 Added fzf for zsh, clean up readme 2024-05-27 05:18:20 +09:00
JaKooLit
c84c10924d updated GTK theme install script to avoid confusion 2024-05-25 18:06:45 +09:00
JaKooLit
dcb5a19170 updated readme 2024-05-25 17:46:30 +09:00
Ja.KooLit
54d6857cf5
Merge pull request #88 from JaKooLit/development
Development to Main for v2.2.12 Hyprland-Dots release
2024-05-24 21:24:33 +09:00
Ja.KooLit
42f606f22c
Merge pull request #86 from JaKooLit/main
Debian - Main to Development
2024-05-24 01:10:13 +09:00
JaKooLit
02e54ab794 to resolve conflict 2024-05-24 01:09:39 +09:00
JaKooLit
5e995fc9ed power-profiles-daemon (only to ROG users), see changelogs notes 2024-05-24 00:08:07 +09:00
JaKooLit
3c53b9d2a0 added qalculate-gtk for Hyprland-Dots v2.2.12 2024-05-23 13:22:44 +09:00
JaKooLit
ebb3493afb changed the sddm theme destination to /etc/sddm.conf.d/10-theme.conf to theme.conf.user 2024-05-22 21:13:18 +09:00
JaKooLit
4fb609e72a updated readme regarding Hyprland Auto starting 2024-05-22 00:19:31 +09:00
JaKooLit
4c3aa4321c Updated installer and Readme 2024-05-20 13:27:23 +09:00
JaKooLit
c5ba0a8f24 updated readme 2024-05-20 11:40:22 +09:00
JaKooLit
dee70d9442 updated readme 2024-05-20 11:30:02 +09:00
JaKooLit
93110a6482 updated readme 2024-05-20 11:24:35 +09:00
JaKooLit
cc676464fb updated readme 2024-05-20 11:22:19 +09:00
Ja.KooLit
fea3ee81f3
Merge pull request #81 from JaKooLit/main
Main to development
2024-05-19 14:45:01 +09:00
JaKooLit
08c6dd8ee9 updated behaviour of .zprofile as causing auto-login to Hyprland 2024-05-19 12:27:08 +09:00
JaKooLit
f57d17f9b6 updated readme 2024-05-18 23:26:54 +09:00
JaKooLit
97d655de40 updated Readme 2024-05-18 00:53:28 +09:00
JaKooLit
9f12c5a0de updated wayland-scanner to latest 2024-05-17 11:03:31 +09:00
Ja.KooLit
3b00461fc7
Merge pull request #80 from JaKooLit/main
Main to Dev
2024-05-17 11:01:36 +09:00
JaKooLit
31edd15e62 updated readme 2024-05-17 00:44:13 +09:00
Ja.KooLit
6f63e32a92
Merge pull request #79 from JaKooLit/development
Hyprland to install backed down to v0.39.1 as v0.40.0 is failing to install
2024-05-15 11:16:44 +09:00
JaKooLit
c9b27e6b39 backing down to Hyprland v0.39.1 as v0.40.0 is failing to build 2024-05-15 11:13:13 +09:00
JaKooLit
32bf4316ef updated readme 2024-05-14 12:40:41 +09:00
Ja.KooLit
2a51006600
Merge pull request #77 from JaKooLit/main
Main to development
2024-05-14 00:41:03 +09:00
JaKooLit
d3d203c949 remove pywal colors for .zshrc 2024-05-14 00:27:23 +09:00
Ja.KooLit
952b083ef7
Update README.md 2024-05-13 13:44:46 +09:00
Ja.KooLit
1d1b0c486f
Merge pull request #74 from JaKooLit/development
Releasing a new installer to work with Hyprland-Dots v2.2.11
2024-05-13 11:20:37 +09:00
JaKooLit
0ff6be1894 Updated version for hyprwayland-scanner 2024-05-13 10:58:04 +09:00
JaKooLit
9738c51dbf added zplug on zsh.sh 2024-05-12 22:45:37 +09:00
Ja.KooLit
20bc3b7dc8
Merge pull request #73 from JaKooLit/main
Main (debian) to development before merging for final next release
2024-05-12 18:11:04 +09:00
JaKooLit
006d5147c5 resolving conflict 2024-05-12 18:10:30 +09:00
JaKooLit
a366acbfc5 added libnvidia-egl-wayland1. see https://github.com/JaKooLit/Debian-Hyprland/issues/71 2024-05-12 18:01:53 +09:00
JaKooLit
da26ff2a24 added libnvidia-egl-wayland1. see https://github.com/JaKooLit/Debian-Hyprland/issues/71 2024-05-12 18:01:03 +09:00
Ja.KooLit
adb2b26abf
Update README.md
added new video
2024-05-10 22:38:55 +09:00
Ja.KooLit
2282b24472
Update ags.sh 2024-05-10 15:53:58 +09:00
JaKooLit
f040f39c05 added ags.sh 2024-05-10 15:40:29 +09:00
Ja.KooLit
25790ebf26
Update wallust.sh 2024-05-10 14:40:03 +09:00
Ja.KooLit
a079dd6f57
Update wallust.sh 2024-05-10 14:33:50 +09:00
Ja.KooLit
7f01b1bed4
Update wallust.sh 2024-05-10 14:32:42 +09:00
Ja.KooLit
f4448e4fd4
Update hypr-eco.sh 2024-05-10 14:31:55 +09:00
Ja.KooLit
240e2e5f74
Update hypr-eco.sh 2024-05-10 14:30:48 +09:00
Ja.KooLit
ec4f653665
Merge pull request #69 from JaKooLit/05-2024
Moving the 05-2024 to Development
2024-05-10 12:41:00 +09:00
JaKooLit
a105abc5f6 updated ags.sh 2024-05-10 12:40:40 +09:00
JaKooLit
06f963a0c3 updated ags 2024-05-10 12:35:29 +09:00
JaKooLit
88756279e0 updated for wallust migration from pywal, updated hyprland-scanner 2024-05-10 12:31:18 +09:00
JaKooLit
ee272e9417 updated hyprland-scanner 2024-05-10 10:56:22 +09:00
JaKooLit
08fd8b235b added gawk 2024-05-09 14:18:31 +09:00
JaKooLit
2ba67d5849 added ags for the upcoming hyprland-dots v2.2.11 with ags overview 2024-05-07 23:12:12 +09:00
JaKooLit
b60ecd5a29 added ags 2024-05-07 16:08:38 +09:00
JaKooLit
ccbcc44cb9 updated readme 2024-05-05 19:54:12 +09:00
JaKooLit
e2e272aea5 updated readme 2024-05-05 19:52:37 +09:00
JaKooLit
36d4c599f5 Updated Readme 2024-05-05 19:51:24 +09:00
Ja.KooLit
f8aad9496f
Merge pull request #68 from JaKooLit/development
updated readme
2024-05-05 19:08:13 +09:00
JaKooLit
06d739ff99 updated readme 2024-05-05 18:56:40 +09:00
Ja.KooLit
6f1787706c
Merge pull request #67 from JaKooLit/development
Preliminary readme for Ubuntu  24.04 LTS
2024-05-05 18:31:04 +09:00
JaKooLit
17b8a807a8 Prelimenary readme for Ubuntu 24.04 LTS 2024-05-05 18:16:45 +09:00
JaKooLit
544ea59ae2 updated for Hyprland-v0.40.0 and waybar building from source to fix workspace missing 2024-05-05 06:41:19 +09:00
Ja.KooLit
2b9b32d514
Merge pull request #65 from JaKooLit/development
Development to main
2024-05-05 00:41:27 +09:00
JaKooLit
932f0e95ec added pyquery for new weather python script for waybar on Hyprland-Dots v2.2.10 2024-05-03 17:59:49 +09:00
JaKooLit
bef3e68956 updated swww with latest release 2024-05-03 09:54:15 +09:00
JaKooLit
bdc8d25b09 updated readme for some tips for nvidia-gpu users 2024-05-03 09:08:12 +09:00
JaKooLit
d947af09ec updated readme and adjusted pyprland installation 2024-05-02 23:02:42 +09:00
JaKooLit
8253189f6e updated hypr-eco.sh 2024-05-02 20:00:23 +09:00
JaKooLit
8880277827 Added pyprland (hyprland plugin) 2024-05-02 19:48:45 +09:00
Ja.KooLit
8d2e2864e7
Merge pull request #64 from JaKooLit/development
some error message grammar corrections
2024-05-02 00:03:49 +09:00
Ja.KooLit
7163fcfdc1 some error message grammar corrections 2024-05-02 00:00:37 +09:00
Ja.KooLit
5ebaed9545
Merge pull request #63 from JaKooLit/main
synchronize main to development
2024-05-01 12:00:53 +09:00
Ja.KooLit
1814aaf513
Merge pull request #62 from JaKooLit/development
updated nwg-look.sh
2024-05-01 11:50:27 +09:00
JaKooLit
d0c3cec6a3 updated nwg-look.sh 2024-05-01 11:48:13 +09:00
Ja.KooLit
4642e11212
Merge pull request #61 from JaKooLit/development
specific version download of  hyprcursor
2024-05-01 11:16:43 +09:00
JaKooLit
cdc6e19818 updated cursor.sh 2024-05-01 11:15:49 +09:00
Ja.KooLit
ff46cbeb8e
Merge pull request #60 from JaKooLit/main
main to development
2024-05-01 11:13:24 +09:00
Ja.KooLit
6f20ac894b
Merge pull request #59 from JaKooLit/development
Updated scripts to download only specific versions of packages
2024-05-01 11:12:49 +09:00
JaKooLit
e70bc6fb84 updated install scripts to download only specific versions of hypr eco system packages, swww and nwg look 2024-05-01 11:02:53 +09:00
JaKooLit
ea72a8424e updated hyprlock.sh specific version 2024-05-01 10:35:57 +09:00
JaKooLit
18ac07bad5 updated hypr eco system packages to download only specific versions 2024-05-01 10:31:58 +09:00
Ja.KooLit
bbc41535ec
Update README.md 2024-05-01 02:13:17 +09:00
Ja.KooLit
34ad2efa10
Merge pull request #58 from JaKooLit/main
synchronize main to development
2024-05-01 01:59:21 +09:00
Ja.KooLit
478a862d0c
Merge pull request #57 from JaKooLit/development
Updated to install.sh to integrate hyprland installer even for nvidia
2024-05-01 01:56:11 +09:00
JaKooLit
121a869335 updated readme 2024-05-01 01:54:06 +09:00
JaKooLit
94e935cbe6 updated install.sh and nvidia.sh 2024-05-01 01:33:55 +09:00
JaKooLit
12e120db96 updated readme 2024-05-01 01:09:23 +09:00
JaKooLit
f6f751d9a1 small update on install.sh 2024-05-01 00:57:43 +09:00
JaKooLit
ae098ed284 updated readme 2024-04-30 23:43:52 +09:00
91 changed files with 8330 additions and 1460 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., Debian 13, SID , Ubuntu 23.10, etc]
- 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,66 +1,348 @@
## Changelogs ## CHANGELOGS
## 10 December 2025
- Updated:
- Hyprland Build to v0.52.2
- Thanks entirely to @sdegler
- Fixed:
- `qt5-style-kvantum-themes` failed to install
- Wrong package name it's `qt-style-kvantume-themes`
- `libdisplay-info2` failed to install
- New package name: `libdisplay-info3`
## 10 October 2025
### Hyprland 0.51.x install support
- Hyprland builds 0.51.x from source
- Added documentation for upgrading from 0.49/0.50.x to 0.51.1.
### New scripts and modules
- update-hyprland.sh: Manage the Hyprland stack with:
- --install / --dry-run build modes
- --only and --skip for selective components
- --with-deps to (re)install build deps
- --set {KEY=TAG} and --restore tag backup support
- --fetch-latest to pull latest GitHub release tags
- --via-helper to delegate summary-only dry-runs
- dry-run-build.sh: Compile-only helper with summary output
- install-scripts/wayland-protocols-src.sh: Build wayland-protocols from
source (>= 1.45) to satisfy Hyprland 0.51.x requirements
### Core features
- Centralized tag management via hypr-tags.env; tags exported to all
modules. Environment overrides remain first priority.
- Automatic dependency ordering for Hyprland 0.51.x:
wayland-protocols-src → hyprland-protocols → hyprutils → hyprlang →
aquamarine → hyprland
- Optional auto-fetch of latest tags on install runs that include
hyprland (can be disabled via --no-fetch)
- Selective updates for targeted components and skip lists
- Dry-run mode to validate builds without installing
### Installer integration
- install.sh reads hypr-tags.env and optionally refreshes tags.
- Ensures wayland-protocols-src is built before Hyprland.
- Maintains proper sequencing for the Hyprland dependencies.
### Docs
- Debian-Hyprland-Install-Upgrade.md and .es.md:
- Add explicit section: Upgrade 0.49/0.50.x → 0.51.1
- Recommend: `./update-hyprland.sh --install --only hyprland`
- Provide optional `--with-deps` and `--dry-run` flows
- Full install via install.sh is not required for this
upgrade unless optional modules need refresh
### Usage highlights
- Pin and upgrade to 0.51.1:
./update-hyprland.sh --set HYPRLAND=v0.51.1
./update-hyprland.sh --install --only hyprland
- Optional:
./update-hyprland.sh --with-deps --install --only hyprland
./update-hyprland.sh --dry-run --only hyprland
### Notes
- Target OS remains Debian Trixie/Testing/SID
- Run as sudo-capable user (not root)
- Ensure deb-src entries are enabled.
## 22 July 2025
- Updated sddm theme and script to work with the updated simple_sddm_2 theme
- Manual building process
## 21 June 2025
- Added a warning message that support is now very limited
## 08 June 2025
- updated SDDM theme.
## 20 March 2025
- 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
## 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
## 30 Jan 2025
- AGS (aylur's GTK shell) v1 for desktop overview is now optional
## 12 Jan 2025
- switch to final version of aylurs-gtk-shell-v1
## 01 Jan 2025
- Switched to download dots from KooL's Hyprland dots specific branch
## 26 Dec 2024
- Removal of Bibata Ice cursor on assets since its integrated in the GTK Themes and Icons extract from a separate repo
## 10 Dec 2024
- updated swww.sh to download from version v0.9.5
## 24 Nov 2024
- switched to download rofi-wayland from releases instead from upstream
## 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
- updated xdph installation since it is now in Debian Repo
- Added fastfetch on tty. However, will be disabled if user decided to install pokemon colorscripts
## 14 Sep 2024
- Added Essential Packages final check in lieu of errors from Install log files in Install-Logs directory
- nwg-look is now in Debian Repo
## 10 Sep 2024
- added background check of known login managers if they are active if user chose to install sddm
## 08 Sep 2024
- Added final error checks on install-logs
## 07 Sep 2024
- Fix installation issue on hyprlock and xdph
- disabled imagemagick compilation from source
- dotfiles adjusted so it will be compatible for imagemagick v6
## 04 Sep 2024
- added a function to check if it is Ubuntu or Based on Ubuntu and script will exit
## 28 Aug 2024
- Added final check if hyprland is installed and will give an error to user
## 24 Aug 2024
- Created a newer and compatible Hyprland-Dots repo
-
## 23 Aug 2024
- Moved Ubuntu-Hyprland on a separate Github Repo
## 22 Aug 2024
- refactor Debian-Hyprland script. As Hyprland is now in official repo
## 07 Jul 2024
- added eza (ls replacement for tty). Note only on .zshrc
## 06 July 2024
- Version bumps for Debian (Hyprland v0.41.2)
## 11 June 2024
- adjusted script to install only Hyprland-Dots v2.2.14
## 10 June 2024
- changed behaviour of rofi-wayland.sh. To redownload a new rofi-wayland from repo instead of pulling changes. (It proves giving issue)
## 04 June 2024
- switched over to source install for imagemagick
- removal of fzf for Debian and Ubuntu (headache)
## 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.
- Note: Fastfetch configs will be added from Hyprland-Dots v2.2.12. However, you need to install from Fastfetch github page
## 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
## 15 May 2025
- Backed down hyprland version to install as v0.40.0 is failing to install
- removed from waybar-git to install. Instead to install from official repo
- cliphist install script is removed as it is now on Debian repo
- dependencies cleaned up and added
## 10 May 2024
- added wallust-git and remove python-pywal for migration to wallust on Hyprland-Dots v2.2.11
## 07 May 2024
- added ags.sh for upcoming ags overview for next Hyprland-Dots release. Will be installed form source
- added manual installation of waybar since Debian is very slow in updating their packages
## 03 May 2024
- Bump swww to v0.9.5
- added python3-pyquery for new weather-waybar python based on Hyprland-Dots
## 02 May 2024
- Added pyprland (hyprland plugin) - warning, I cant make it to properly run. Drop Down terminal not working, zoom is hit and miss
## 30 Apr 2024 ## 30 Apr 2024
- Updated hyprland.sh to install v0.39.1 Hyprland - Updated hyprland.sh to install v0.39.1 Hyprland
- adding hypridle and hyprlock - adding hypridle and hyprlock
- dropping swaylock-effects and swayidle - dropping swaylock-effects and swayidle
- adjusted to work with current Hyprland-Dots - adjusted to work with current Hyprland-Dots
## 22 Apr 2024 ## 22 Apr 2024
- Change dotfiles to specific version only as Debian and Ubuntu cant keep up with Hyprland development - Change dotfiles to specific version only as Debian and Ubuntu cant keep up with Hyprland development
## 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
## 11 Jan 2024 ## 11 Jan 2024
- dropped wlsunset - dropped wlsunset
- added hyprlang build and install - added hyprlang build and install
## 02 Jan 2024 ## 02 Jan 2024
- Readme updated for cliphist instruction for ubuntu 23.10 users - Readme updated for cliphist instruction for ubuntu 23.10 users
- Created cliphist.sh for ubuntu 23.10 users (disabled by default and needs to be enabled on install.sh if desired) - Created cliphist.sh for ubuntu 23.10 users (disabled by default and needs to be enabled on install.sh if desired)
## 30 December 2023 ## 30 December 2023
- Code Cleaned up. - Code Cleaned up.
- Pokemon Color Scripts now offered as optional - Pokemon Color Scripts now offered as optional
## 29 December 2023 ## 29 December 2023
- Remove dunst in favor of swaync. NOTE: Part of the script is to also uninstall mako and dunst (if installed) as on my experience, dunst is sometimes taking over the notification even if it is not set to start - Remove dunst in favor of swaync. NOTE: Part of the script is to also uninstall mako and dunst (if installed) as on my experience, dunst is sometimes taking over the notification even if it is not set to start
## 16 Dec 2023 ## 16 Dec 2023
- zsh theme switched to `agnoster` theme by default - zsh theme switched to `agnoster` theme by default
- pywal tty color change disabled by default - pywal tty color change disabled by default
## 13 Dec 2023 ## 13 Dec 2023
- Added a script / function to force install packages. Some users reported that it is not installed. - Added a script / function to force install packages. Some users reported that it is not installed.
## 11 Dec 2023 ## 11 Dec 2023
- Changing over to zsh automatically if user opted - Changing over to zsh automatically if user opted
- If chose to install zsh and have no login manager, zsh auto login will auto start Hyprland - If chose to install zsh and have no login manager, zsh auto login will auto start Hyprland
- added as optional, with zsh, pokemon colorscripts - added as optional, with zsh, pokemon colorscripts
- improved zsh install scripts, so even the existing zsh users of can still opt for zsh and oh-my-zsh installation :) - improved zsh install scripts, so even the existing zsh users of can still opt for zsh and oh-my-zsh installation :)
## 03 Dec 2023 ## 03 Dec 2023
- Added kvantum for qt apps theming - Added kvantum for qt apps theming
- return of wlogout due to theming issues of rofi-power - return of wlogout due to theming issues of rofi-power
## 1 Dec 2023 ## 1 Dec 2023
- replace the Hyprland to specific branch/version as newest needed some new libraries and debian dont have those yet - replace the Hyprland to specific branch/version as newest needed some new libraries and debian dont have those yet
## 26 Nov 2023 ## 26 Nov 2023
- nvidia - Move to normal hyprland package as nvidia patches are doing nothing see [`commit`](https://github.com/hyprwm/Hyprland/commit/cd96ceecc551c25631783499bd92c6662c5d3616) - nvidia - Move to normal hyprland package as nvidia patches are doing nothing see [`commit`](https://github.com/hyprwm/Hyprland/commit/cd96ceecc551c25631783499bd92c6662c5d3616)
## 25 Nov 2023 ## 25 Nov 2023
- drop wlogout since Hyprland-Dots v2.1.9 uses rofi-power - drop wlogout since Hyprland-Dots v2.1.9 uses rofi-power
## 23-Nov-2023 ## 23-Nov-2023
- Added Bibata cursor to install if opted for GTK Themes. However, it is not pre-applied. Use nwg-look utility to apply - Added Bibata cursor to install if opted for GTK Themes. However, it is not pre-applied. Use nwg-look utility to apply
## 19-Nov-2023 ## 19-Nov-2023
- Adjust dotfiles script to download from releases instead of from upstream - Adjust dotfiles script to download from releases instead of from upstream
## 14-Oct-2023 ## 14-Oct-2023
- initial release. Added swappy for screenshots - initial release. Added swappy for screenshots
## 12-Oct-2023 ## 12-Oct-2023
- BETA release - BETA release

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/Debian-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/Debian-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/Debian-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/Debian-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/Debian-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/Debian-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/Debian-Hyprland/blob/main/.github/ISSUE_TEMPLATE/custom.md) - Use this template to submit a custom issue.
- [PULL_REQUEST_TEMPLATE.md](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md) - Use this template to submit a pull request. - [PULL_REQUEST_TEMPLATE.md](https://github.com/JaKooLit/Debian-Hyprland/blob/main/.github/PULL_REQUEST_TEMPLATE.md) - Use this template to submit a pull request.
- [COMMIT_MESSAGE_GUIDELINES.md](https://github.com/JaKooLit/Debian-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/Debian-Hyprland/blob/main/COMMIT_MESSAGE_GUIDELINES.md) - Read this file to learn about the commit message guidelines.
- [CONTRIBUTING.md](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CONTRIBUTING.md) - Read this file to learn about the contributing guidelines. - [CONTRIBUTING.md](https://github.com/JaKooLit/Debian-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/Debian-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/Debian-Hyprland/discussions) or [Through Discord Server](https://discord.gg/kool-tech-world)

View File

@ -0,0 +1,423 @@
# Guía de Instalación y Actualización de Debian-Hyprland
Esta guía cubre los flujos de instalación y actualización mejorados para el proyecto Debian-Hyprland de KooL, incluyendo nuevas funciones de automatización, gestión centralizada de versiones y capacidades de dry-run.
## Tabla de Contenidos
1. [Resumen](#resumen)
2. [Nuevas Funciones](#nuevas-funciones)
3. [Gestión Central de Versiones](#gestión-central-de-versiones)
4. [Métodos de Instalación](#métodos-de-instalación)
5. [Flujos de Actualización](#flujos-de-actualización)
6. [Pruebas con Dry-Run](#pruebas-con-dry-run)
7. [Gestión de Logs](#gestión-de-logs)
8. [Uso Avanzado](#uso-avanzado)
9. [Solución de Problemas](#solución-de-problemas)
## Resumen
El proyecto Debian-Hyprland ahora incluye herramientas de automatización y gestión mejoradas, manteniendo la compatibilidad con el script original install.sh. Las principales adiciones son:
- **Gestión centralizada de versiones** mediante `hypr-tags.env`
- **Orden automático de dependencias** para los requisitos de Hyprland 0.51.x
- **Pruebas de compilación con dry-run** sin modificar el sistema
- **Actualizaciones selectivas de componentes** con `update-hyprland.sh`
- **Obtención automática de últimas versiones** desde GitHub
## Nuevas Funciones
### install.sh mejorado
El script original ahora:
- **Unifica versiones**: Lee `hypr-tags.env` y exporta variables de versión a todos los módulos
- **wayland-protocols automático**: Instala wayland-protocols desde el código fuente (≥1.45) antes de Hyprland
- **Orden robusto de dependencias**: Garantiza la secuencia correcta de requisitos
### Nuevos Scripts
#### update-hyprland.sh
Herramienta enfocada para gestionar y compilar solo el stack de Hyprland:
```bash
chmod +x ./update-hyprland.sh
./update-hyprland.sh --help # Ver todas las opciones
```
#### dry-run-build.sh
Herramienta de pruebas que compila componentes sin instalarlos:
```bash
chmod +x ./dry-run-build.sh
./dry-run-build.sh --help # Ver todas las opciones
```
#### wayland-protocols-src.sh
Módulo que compila wayland-protocols desde el origen para satisfacer los requisitos de Hyprland 0.51.x.
## Gestión Central de Versiones
### hypr-tags.env
Archivo con etiquetas de versión para todos los componentes de Hyprland:
```bash
# Versiones actuales (ejemplo)
HYPRLAND_TAG=v0.51.1
AQUAMARINE_TAG=v0.9.3
HYPRUTILS_TAG=v0.8.2
HYPRLANG_TAG=v0.6.4
HYPRGRAPHICS_TAG=v0.1.5
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.4
WAYLAND_PROTOCOLS_TAG=1.45
```
### Prioridad de Sobrescritura de Versiones
1. Variables de entorno (exportadas)
2. Valores en el archivo `hypr-tags.env`
3. Valores por defecto en cada módulo
## Métodos de Instalación
### Método 1: Instalación Completa Original
```bash
# Instalación estándar con todos los componentes
chmod +x install.sh
./install.sh
```
Ahora, este método automáticamente:
- Carga versiones desde `hypr-tags.env`
- Instala wayland-protocols desde el origen antes de Hyprland
- Mantiene el orden correcto de dependencias
### Método 2: Solo el Stack de Hyprland
```bash
# Instala solo Hyprland y componentes esenciales
./update-hyprland.sh --install
```
### Método 3: Instalación Nueva con Últimas Versiones
```bash
# Obtiene últimas versiones de GitHub e instala
./update-hyprland.sh --fetch-latest --install
```
### Método 4: Instalación con Preset
```bash
# Usa un preset para elecciones automáticas
./install.sh --preset ./preset.sh
```
## Flujos de Actualización
Enlace rápido: [Actualización 0.49/0.50.x → 0.51.1](#actualización-049050x--0511)
### Actualizar a la Última Versión de Hyprland
#### Opción A: Descubrimiento Automático
```bash
# Obtiene las últimas etiquetas e instala
./update-hyprland.sh --fetch-latest --install
```
#### Opción B: Versión Específica
```bash
# Establece una versión específica de Hyprland
./update-hyprland.sh --set HYPRLAND=v0.51.1 --install
```
#### Opción C: Probar Antes de Instalar
```bash
# Prueba la compilación primero, luego instala si es exitoso
./update-hyprland.sh --fetch-latest --dry-run
# Si es exitoso:
./update-hyprland.sh --install
```
### Actualizar Componentes Individuales
```bash
# Actualiza solo librerías núcleo (a menudo necesario para nuevas versiones de Hyprland)
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
# Actualiza aquamarine específicamente
./update-hyprland.sh --set AQUAMARINE=v0.9.3 --install --only aquamarine
```
### Actualizaciones Selectivas
```bash
# Instalar todo excepto los componentes Qt
./update-hyprland.sh --install --skip hyprland-qt-support,hyprland-qtutils
# Instalar solo componentes específicos
./update-hyprland.sh --install --only hyprland,aquamarine
```
### Actualización: 0.49/0.50.x ➜ 0.51.1
Si actualmente estás en Hyprland 0.49 o 0.50.x, puedes actualizar directamente a 0.51.1 sin una reinstalación completa.
Ruta recomendada:
```bash
# Asegura que hypr-tags.env apunte a la versión objetivo (omitir si ya es v0.51.1)
./update-hyprland.sh --set HYPRLAND=v0.51.1
# Actualiza Hyprland (los prerrequisitos se incluyen y ordenan automáticamente)
./update-hyprland.sh --install --only hyprland
```
Notas:
- El comando garantiza y ejecuta, según sea necesario: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine y luego hyprland.
- No es necesario usar install.sh para esta actualización, a menos que también quieras instalar/actualizar módulos opcionales (p. ej., SDDM, Bluetooth, Thunar, AGS, dotfiles) o estés recuperándote de una instalación fallida/parcial.
- Opcional: agrega --with-deps para reinstalar dependencias primero:
```bash
./update-hyprland.sh --with-deps --install --only hyprland
```
- Puedes hacer un dry-run primero para validar:
```bash
./update-hyprland.sh --dry-run --only hyprland
```
## Pruebas con Dry-Run
### ¿Por qué usar Dry-Run?
- Probar compatibilidad de compilación antes de instalar
- Validar combinaciones de versiones
- Depurar problemas de compilación sin cambios en el sistema
- Integración en CI/CD
### Uso Básico de Dry-Run
```bash
# Probar la configuración actual de versiones
./update-hyprland.sh --dry-run
# Probar con últimas versiones de GitHub
./update-hyprland.sh --fetch-latest --dry-run
# Probar una versión específica
./update-hyprland.sh --set HYPRLAND=v0.51.1 --dry-run
```
### Pruebas Avanzadas con Dry-Run
```bash
# Formato alternativo de resumen
./update-hyprland.sh --via-helper
# Probar con instalación de dependencias
./dry-run-build.sh --with-deps
# Probar solo componentes específicos
./dry-run-build.sh --only hyprland,aquamarine
```
### Limitaciones de Dry-Run
- **Las dependencias se instalan**: apt se ejecuta para asegurar la compilación
- **Requisitos de pkg-config**: Algunos componentes necesitan requisitos instalados en el sistema
- **Sin cambios en el sistema**: No instala archivos en /usr/local o /usr
## Gestión de Logs
### Ubicación de Logs
Todas las actividades de construcción generan logs con sello de tiempo en:
```
Install-Logs/
├── 01-Hyprland-Install-Scripts-YYYY-MM-DD-HHMMSS.log # Log principal de instalación
├── install-DD-HHMMSS_module-name.log # Logs por módulo
├── build-dry-run-YYYY-MM-DD-HHMMSS.log # Resumen de dry-run
└── update-hypr-YYYY-MM-DD-HHMMSS.log # Resumen de actualización
```
### Análisis de Logs
```bash
# Ver el log de instalación más reciente
ls -t Install-Logs/*.log | head -1 | xargs less
# Buscar errores en un módulo específico
grep -i error Install-Logs/install-*hyprland*.log
# Ver resumen de dry-run
cat Install-Logs/build-dry-run-*.log
```
### Retención de Logs
- Los logs se acumulan con el tiempo para referencia histórica
- Se recomienda limpieza manual periódica:
```bash
# Mantener solo logs de los últimos 30 días
find Install-Logs/ -name "*.log" -mtime +30 -delete
```
## Uso Avanzado
### Gestión de Versiones
#### Copia de Seguridad y Restauración
```bash
# Las etiquetas se respaldan automáticamente cuando cambian
# Restaurar la copia más reciente
./update-hyprland.sh --restore --dry-run
```
#### Múltiples Conjuntos de Versiones
```bash
# Guardar configuración actual
cp hypr-tags.env hypr-tags-stable.env
# Probar versiones experimentales
./update-hyprland.sh --fetch-latest --dry-run
# Restaurar estable si es necesario
cp hypr-tags-stable.env hypr-tags.env
```
### Integración con el Entorno
#### PKG_CONFIG_PATH personalizado
```bash
# Asegurar que /usr/local tenga prioridad
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}"
./update-hyprland.sh --install
```
#### Compilaciones en Paralelo
```bash
# Controlar el paralelismo (por defecto: todos los núcleos)
export MAKEFLAGS="-j4"
./update-hyprland.sh --install
```
### Flujo de Trabajo de Desarrollo
#### Probar Nuevos Lanzamientos
```bash
# 1. Crear entorno de pruebas
cp hypr-tags.env hypr-tags.backup
# 2. Probar nueva versión
./update-hyprland.sh --set HYPRLAND=v0.52.0 --dry-run
# 3. Instalar si es exitoso
./update-hyprland.sh --install
# 4. Revertir si hay problemas
./update-hyprland.sh --restore --install
```
#### Desarrollo de Componentes
```bash
# Solo instalar dependencias
./update-hyprland.sh --with-deps --dry-run
# Pruebas manuales de módulo
DRY_RUN=1 ./install-scripts/hyprland.sh
# Ver logs de un módulo específico
tail -f Install-Logs/install-*hyprland*.log
```
## Solución de Problemas
### Problemas Comunes
#### Falla de Configuración con CMake
**Síntomas**: "Package dependency requirement not satisfied"
**Soluciones**:
```bash
# Instalar requisitos faltantes
./update-hyprland.sh --install --only wayland-protocols-src,hyprutils,hyprlang
# Limpiar caché de compilación
rm -rf hyprland aquamarine hyprutils hyprlang
# Reintentar instalación
./update-hyprland.sh --install --only hyprland
```
#### Errores de Compilación
**Síntomas**: "too many errors emitted"
**Soluciones**:
```bash
# Actualizar dependencias núcleo primero
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
# Revisar incompatibilidades de API en logs
grep -A5 -B5 "error:" Install-Logs/install-*hyprland*.log
```
#### Etiqueta No Encontrada
**Síntomas**: "Remote branch X not found"
**Soluciones**:
```bash
# Ver etiquetas disponibles
git ls-remote --tags https://github.com/hyprwm/Hyprland
# Usar etiqueta confirmada
./update-hyprland.sh --set HYPRLAND=v0.50.1 --install
```
### Pasos de Depuración
1. **Verificar compatibilidad del sistema**:
```bash
# Verificar versión de Debian
cat /etc/os-release
# Asegurar deb-src habilitado
grep -E "^deb-src" /etc/apt/sources.list
```
2. **Verificar entorno**:
```bash
# Ver etiquetas actuales
cat hypr-tags.env
# Probar dry-run primero
./update-hyprland.sh --dry-run --only hyprland
```
3. **Analizar logs**:
```bash
# Errores más recientes
grep -i "error\|fail" Install-Logs/*.log | tail -20
# Problemas por módulo
ls -la Install-Logs/install-*[component]*.log
```
### Obtener Ayuda
1. **Revisar logs**: Consulte siempre Install-Logs/ para detalles
2. **Probar dry-run**: Valide antes de instalar
3. **Soporte de la comunidad**: Envíe issues con extractos de logs
4. **Documentación**: Consulte README.md del proyecto para requisitos base
## Migración desde Versiones Previas
### Instalaciones Existentes
Las nuevas herramientas funcionan junto a instalaciones existentes:
```bash
# Actualizar instalación existente
./update-hyprland.sh --install
# Probar sin afectar el sistema actual
./update-hyprland.sh --dry-run
```
### Convertir a Gestión por Etiquetas
```bash
# Las versiones actuales se guardan en hypr-tags.env automáticamente
# Verificar con:
cat hypr-tags.env
# Modificar versiones según necesidad:
./update-hyprland.sh --set HYPRLAND=v0.51.1
```
El flujo mejorado ofrece mayor control, capacidad de prueba y automatización, manteniendo la compatibilidad total con el proceso de instalación original.

View File

@ -0,0 +1,423 @@
# Debian-Hyprland Install & Upgrade Guide
This guide covers the enhanced installation and upgrade workflows for KooL's Debian-Hyprland project, including new automation features, centralized version management, and dry-run capabilities.
## Table of Contents
1. [Overview](#overview)
2. [New Features](#new-features)
3. [Central Version Management](#central-version-management)
4. [Installation Methods](#installation-methods)
5. [Upgrade Workflows](#upgrade-workflows)
6. [Dry-Run Testing](#dry-run-testing)
7. [Log Management](#log-management)
8. [Advanced Usage](#advanced-usage)
9. [Troubleshooting](#troubleshooting)
## Overview
The Debian-Hyprland project now includes enhanced automation and management tools while maintaining backward compatibility with the original install.sh script. The key additions are:
- **Centralized version management** via `hypr-tags.env`
- **Automated dependency ordering** for Hyprland 0.51.x requirements
- **Dry-run compilation testing** without system modifications
- **Selective component updates** via `update-hyprland.sh`
- **GitHub latest tag fetching** for automatic version discovery
## New Features
### Enhanced install.sh
The original install.sh script now includes:
- **Tag consistency**: Reads `hypr-tags.env` and exports version variables to all modules
- **Automatic wayland-protocols**: Installs wayland-protocols from source (≥1.45) before Hyprland
- **Robust dependency ordering**: Ensures prerequisites are built in the correct sequence
### New Scripts
#### update-hyprland.sh
A focused tool for managing and building just the Hyprland stack:
```bash
chmod +x ./update-hyprland.sh
./update-hyprland.sh --help # View all options
```
#### dry-run-build.sh
A testing tool that compiles components without installing:
```bash
chmod +x ./dry-run-build.sh
./dry-run-build.sh --help # View all options
```
#### wayland-protocols-src.sh
A new module that builds wayland-protocols from source to satisfy Hyprland 0.51.x requirements.
## Central Version Management
### hypr-tags.env
This file contains version tags for all Hyprland components:
```bash
# Current versions (example)
HYPRLAND_TAG=v0.51.1
AQUAMARINE_TAG=v0.9.3
HYPRUTILS_TAG=v0.8.2
HYPRLANG_TAG=v0.6.4
HYPRGRAPHICS_TAG=v0.1.5
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.4
WAYLAND_PROTOCOLS_TAG=1.45
```
### Version Override Priority
1. Environment variables (exported)
2. hypr-tags.env file values
3. Default hardcoded values in each module
## Installation Methods
### Method 1: Original Full Installation
```bash
# Standard installation with all components
chmod +x install.sh
./install.sh
```
This method now automatically:
- Loads versions from `hypr-tags.env`
- Installs wayland-protocols from source before Hyprland
- Maintains proper dependency ordering
### Method 2: Hyprland Stack Only
```bash
# Install only Hyprland and essential components
./update-hyprland.sh --install
```
### Method 3: Fresh Installation with Latest Versions
```bash
# Fetch latest GitHub releases and install
./update-hyprland.sh --fetch-latest --install
```
### Method 4: Preset-Based Installation
```bash
# Use preset file for automated choices
./install.sh --preset ./preset.sh
```
## Upgrade Workflows
Quick link: [Upgrade 0.49/0.50.x → 0.51.1](#upgrade-049050x--0511)
### Upgrading to Latest Hyprland Release
#### Option A: Automatic Discovery
```bash
# Fetch latest tags and install
./update-hyprland.sh --fetch-latest --install
```
#### Option B: Specific Version
```bash
# Set specific Hyprland version
./update-hyprland.sh --set HYPRLAND=v0.51.1 --install
```
#### Option C: Test Before Installing
```bash
# Test compilation first, then install if successful
./update-hyprland.sh --fetch-latest --dry-run
# If successful:
./update-hyprland.sh --install
```
### Upgrading Individual Components
```bash
# Update only core libraries (often needed for new Hyprland versions)
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
# Update aquamarine specifically
./update-hyprland.sh --set AQUAMARINE=v0.9.3 --install --only aquamarine
```
### Selective Updates
```bash
# Install everything except Qt components
./update-hyprland.sh --install --skip hyprland-qt-support,hyprland-qtutils
# Install only specific components
./update-hyprland.sh --install --only hyprland,aquamarine
```
### Upgrade: 0.49/0.50.x ➜ 0.51.1
If youre currently on Hyprland 0.49 or 0.50.x, you can upgrade directly to 0.51.1 without a full reinstall.
Recommended path:
```bash
# Ensure hypr-tags.env pins the target version (skip if already v0.51.1)
./update-hyprland.sh --set HYPRLAND=v0.51.1
# Upgrade Hyprland (prerequisites are auto-included and ordered)
./update-hyprland.sh --install --only hyprland
```
Notes:
- The command will automatically ensure and run, as needed: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine, then hyprland.
- Full install via install.sh is not required for this upgrade unless you also want to install/refresh optional modules (e.g., SDDM, Bluetooth, Thunar, AGS, dotfiles) or youre recovering from a failed/partial setup.
- Optional: add --with-deps to re-run dependency installation first:
```bash
./update-hyprland.sh --with-deps --install --only hyprland
```
- You can dry-run first to validate:
```bash
./update-hyprland.sh --dry-run --only hyprland
```
## Dry-Run Testing
### Why Use Dry-Run?
- Test compilation compatibility before installing
- Validate version combinations
- Debug build issues without system changes
- CI/CD pipeline integration
### Basic Dry-Run Usage
```bash
# Test current tag configuration
./update-hyprland.sh --dry-run
# Test with latest GitHub releases
./update-hyprland.sh --fetch-latest --dry-run
# Test specific version
./update-hyprland.sh --set HYPRLAND=v0.51.1 --dry-run
```
### Advanced Dry-Run Testing
```bash
# Use alternative summary format
./update-hyprland.sh --via-helper
# Test with dependencies installation
./dry-run-build.sh --with-deps
# Test only specific components
./dry-run-build.sh --only hyprland,aquamarine
```
### Dry-Run Limitations
- **Dependencies still install**: apt operations run to ensure compilation succeeds
- **pkg-config requirements**: Some components need system-installed prerequisites
- **No system changes**: No files installed to /usr/local or /usr
## Log Management
### Log Location
All build activities generate timestamped logs in:
```
Install-Logs/
├── 01-Hyprland-Install-Scripts-YYYY-MM-DD-HHMMSS.log # Main install log
├── install-DD-HHMMSS_module-name.log # Per-module logs
├── build-dry-run-YYYY-MM-DD-HHMMSS.log # Dry-run summary
└── update-hypr-YYYY-MM-DD-HHMMSS.log # Update tool summary
```
### Log Analysis
```bash
# View most recent install log
ls -t Install-Logs/*.log | head -1 | xargs less
# Check for errors in specific module
grep -i error Install-Logs/install-*hyprland*.log
# View dry-run summary
cat Install-Logs/build-dry-run-*.log
```
### Log Retention
- Logs accumulate over time for historical reference
- Manual cleanup recommended periodically:
```bash
# Keep only logs from last 30 days
find Install-Logs/ -name "*.log" -mtime +30 -delete
```
## Advanced Usage
### Tag Management
#### Backup and Restore
```bash
# Tags are automatically backed up on changes
# Restore most recent backup
./update-hyprland.sh --restore --dry-run
```
#### Multiple Version Sets
```bash
# Save current configuration
cp hypr-tags.env hypr-tags-stable.env
# Try experimental versions
./update-hyprland.sh --fetch-latest --dry-run
# Restore stable if needed
cp hypr-tags-stable.env hypr-tags.env
```
### Environment Integration
#### Custom PKG_CONFIG_PATH
```bash
# Ensure /usr/local takes precedence
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}"
./update-hyprland.sh --install
```
#### Parallel Builds
```bash
# Control build parallelism (default: all cores)
export MAKEFLAGS="-j4"
./update-hyprland.sh --install
```
### Development Workflow
#### Testing New Releases
```bash
# 1. Create test environment
cp hypr-tags.env hypr-tags.backup
# 2. Test new version
./update-hyprland.sh --set HYPRLAND=v0.52.0 --dry-run
# 3. Install if successful
./update-hyprland.sh --install
# 4. Rollback if issues
./update-hyprland.sh --restore --install
```
#### Component Development
```bash
# Install dependencies only
./update-hyprland.sh --with-deps --dry-run
# Manual module testing
DRY_RUN=1 ./install-scripts/hyprland.sh
# Check logs for specific module
tail -f Install-Logs/install-*hyprland*.log
```
## Troubleshooting
### Common Issues
#### CMake Configuration Fails
**Symptoms**: "Package dependency requirement not satisfied"
**Solutions**:
```bash
# Install missing prerequisites
./update-hyprland.sh --install --only wayland-protocols-src,hyprutils,hyprlang
# Clear build cache
rm -rf hyprland aquamarine hyprutils hyprlang
# Retry installation
./update-hyprland.sh --install --only hyprland
```
#### Compilation Errors
**Symptoms**: "too many errors emitted"
**Solutions**:
```bash
# Update core dependencies first
./update-hyprland.sh --fetch-latest --install --only hyprutils,hyprlang
# Check for API mismatches in logs
grep -A5 -B5 "error:" Install-Logs/install-*hyprland*.log
```
#### Tag Not Found
**Symptoms**: "Remote branch X not found"
**Solutions**:
```bash
# Check available tags
git ls-remote --tags https://github.com/hyprwm/Hyprland
# Use confirmed existing tag
./update-hyprland.sh --set HYPRLAND=v0.50.1 --install
```
### Debug Steps
1. **Check system compatibility**:
```bash
# Verify Debian version
cat /etc/os-release
# Ensure deb-src enabled
grep -E "^deb-src" /etc/apt/sources.list
```
2. **Verify environment**:
```bash
# Check current tags
cat hypr-tags.env
# Test dry-run first
./update-hyprland.sh --dry-run --only hyprland
```
3. **Analyze logs**:
```bash
# Most recent errors
grep -i "error\|fail" Install-Logs/*.log | tail -20
# Module-specific issues
ls -la Install-Logs/install-*[component]*.log
```
### Getting Help
1. **Check logs**: Always review Install-Logs/ for detailed error information
2. **Test dry-run**: Use --dry-run to validate before installing
3. **Community support**: Submit issues with relevant log excerpts
4. **Documentation**: Refer to main project README.md for base requirements
## Migration from Previous Versions
### Existing Installations
The new tools work alongside existing installations:
```bash
# Update existing installation
./update-hyprland.sh --install
# Test without affecting current system
./update-hyprland.sh --dry-run
```
### Converting to Tag Management
```bash
# Current versions are saved to hypr-tags.env automatically
# Verify with:
cat hypr-tags.env
# Modify versions as needed:
./update-hyprland.sh --set HYPRLAND=v0.51.1
```
The enhanced workflow provides better control, testing capabilities, and automation while maintaining full compatibility with the original installation process.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 MiB

346
README.md
View File

@ -1,192 +1,225 @@
<div align="center"> <div align="center">
## 💌 JaKooLit's Debian/Ubuntu Hyprland Install Script 💌 # 💌 KooL's Debian-Hyprland Install Script 💌
#### For Debian 13 Trixie and SID and Ubuntu 24.04 Noble Numbat
![GitHub Repo stars](https://img.shields.io/github/stars/JaKooLit/Debian-Hyprland?style=for-the-badge&color=cba6f7) ![GitHub last commit](https://img.shields.io/github/last-commit/JaKooLit/Debian-Hyprland?style=for-the-badge&color=b4befe) ![GitHub repo size](https://img.shields.io/github/repo-size/JaKooLit/Debian-Hyprland?style=for-the-badge&color=cba6f7) #### For Debian 13 (Trixie) and above (testing, SID)
<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/Debian-Hyprland?style=for-the-badge&color=cba6f7) ![GitHub last commit](https://img.shields.io/github/last-commit/JaKooLit/Debian-Hyprland?style=for-the-badge&color=b4befe) ![GitHub repo size](https://img.shields.io/github/repo-size/JaKooLit/Debian-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>
### ♨️♨️♨️ ATTENTION ♨️♨️♨️ 30 Apr 2024 <div align="center">
- This script will not work on older build of Ubuntu like Ubuntu 23.10 and older. Due to depencies. If you want to install on Ubuntu 23.10, you can download the version v2.2.3 from the releases <br>
<a href="#-announcement-"><kbd><br>Read this First<br></kbd></a>&ensp;&ensp;
<a href="#-to-use-this-script"><kbd><br>Installation<br></kbd></a>&ensp;&ensp;
<a href="#gallery-and-videos"><kbd><br>Gallery<br></kbd></a>&ensp;&ensp;
</div><br>
<p align="center">
<img src="https://raw.githubusercontent.com/JaKooLit/Hyprland-Dots/main/assets/latte.png" width="200" />
</p>
<div align="center">
👇 KOOL's Hyprland-Dots related Links 👇
<br/>
</div>
<div align="center">
<br>
<a href="https://github.com/JaKooLit/Hyprland-Dots/tree/Debian-Dots"><kbd><br>Hyprland-Dots Debian 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>
<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>
<div align="center">
<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)
- [AGS overview DEMO](https://youtu.be/zY5SLNPBJTs)
> [!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.
> [!WARNING]
> Download this script on a directory where you have write permissions. ie. HOME. Or any directory within your home directory. Else script will fail > Download this script on a directory where you have write permissions. ie. HOME. Or any directory within your home directory. Else script will fail
#### ⚠️ Pre-requisites and VERY Important! ### #### ⚠️ Pre-requisites and VERY Important
- Do not run this installer as sudo or as root - Do not run this installer as sudo or as root
- This Installer requires a user with a priviledge to install packages - This Installer requires a user with a priviledge to install packages
- Needs a Debian 13 Testing (Trixie) Branch as it needs a newer wayland packages! I have tried on Stable Debian 12 Bookworm in which, Hyprland wont build. - Needs a Debian 13 Trixie or greater. As it needs a newer wayland packages!
- In theory, it should also work on Debian SID (unstable) but I have not tested yet. - edit your `/etc/apt/sources.list` and **remove** `#` on lines with `deb-src` to enable source packaging else will not install properly especially Hyprland
- edit your /etc/apt/sources.list and remove # on lines with deb-src to enable source packaging else will not install properly especially Hyprland
```bash ```bash
sudo nano /etc/apt/sources.list sudo nano /etc/apt/sources.list
``` ```
- delete # on the lines with 'deb-src' - delete # on the lines with 'deb-src'
- ensure to allow to install non-free drivers especially for users with NVIDIA gpus. You can also install non-free drivers if required. Edit install-scripts/nvidia.sh and change the nvidia stuff's if required - ensure to allow to install non-free drivers especially for users with NVIDIA gpus. You can also install non-free drivers if required. Edit install-scripts/nvidia.sh and change the nvidia stuff's if required
- If you have login Manager already like GDM (gnome login manager), I highly advice not to install SDDM. But if you decide to install SDDM, see here [`Issue 2 - SDDM`](https://github.com/JaKooLit/Debian-Hyprland/issues/2)
> [!NOTE]
> For Ubuntu 24.04 LTS, no need to edit the /etc/apt/sources.list
> [!IMPORTANT]
> UBUNTU USERS: Will only work on Ubuntu 24.04. See above!
> If you are using Gnome already, DO NOT install the SDDM. The GDM works file as well. For some reason, during installation, you will be asked which login manager you wanted to use. But during my test, nothing happened.
> [!CAUTION]
> For Ubuntu with NVIDIA GPU's, make sure to edit the install-scripts/nvidia.sh . Delete all packages in nvidia_pkg except libva-wayland2 and nvidia-vaapi-driver and uncomment/remove # before sudo ubuntu-drivers install. You also need to delete or simply just add # in the lines 37 and 38 echo "echo "## for nvidia" | sudo tee -a... and echo "deb http://deb.debian.org/debian........
> [!WARNING]
> If you have GDM already as log-in manager, DO NOT install SDDM
> You will encounter issues. See [`Issue 2 - SDDM`](https://github.com/JaKooLit/Debian-Hyprland/issues/2)
#### 📷 Gallery
<p align="center">
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Distro-Hyprland/Debian/debian.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Distro-Hyprland/Debian/debian2.png" />
</p>
<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/Distro-Hyprland/Debian/debian4.png" />
<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/Distro-Hyprland/Debian/hyprlock.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>
#### ❕ Installed on Kali Linux 😈
![alt text](https://github.com/JaKooLit/screenshots/blob/main/Hyprland-ScreenShots/Debian/Kali-Linux1.png)
#### ❕ Installed on Ubuntu 24.04 😷
![alt text](https://github.com/JaKooLit/screenshots/blob/main/Distro-Hyprland/Ubuntu/Ubuntu-24-04.png)
#### 📷 More updated Screenshots Here [`Link`](https://github.com/JaKooLit/screenshots/tree/main/Hyprland-Dots-Showcase)
#### 📷 Older Screenshots: v1[`Link`](https://github.com/JaKooLit/screenshots/tree/main/Hyprland-ScreenShots/Debian) & v2[`Link`](https://github.com/JaKooLit/screenshots/tree/main/Hyprland-ScreenShots/Debian-v2)
#### ✨ Youtube presentation [`V1`](https://youtu.be/hGEWOif5D4Y?si=WQ-PrPwEhM5Og76Q)
#### ✨ Youtube presentation [`V2`](https://youtu.be/Qc4VP9JFh2Y)
#### ✨ A video walk through my dotfiles[`Link`](https://youtu.be/fO-RBHvVEcc?si=ijqxxnq_DLiyO8xb)
#### ✨ A video walk through of My Hyprland-Dots v2[`Link`](https://youtu.be/yaVurRoXc-s?si=iDnBC5S3thPBX3ZE)
#### 💯💯 Check out Installation Video coverage by KSK royal (Ubuntu 23.10 + nvidia)
- [`Link`](https://youtu.be/PMQf9gAt8FE?si=eCBqwXaej-1XXIh_)
#### 💯💯 Check out Installation Video coverage by KSK royal (Kali Linux xfce + nvidia). He have details regarding installing timeshift and switching to sddm from lightdm. He also covers removal of nouveau in favor of proprietary nvidia drivers
- [`Link`](https://youtu.be/NtpRtSBjz3I?si=YGkS75u_7cW5D_zu)
### 🪧🪧🪧 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.
- Hyprland-Dots use are constantly evolving / improving. you can check CHANGELOGS here [`Hyprland-Dots-Changelogs`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Changelogs) [Debian-Hyprland Changelogs](https://github.com/JaKooLit/Debian-Hyprland/blob/main/CHANGELOGS.md)
- 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) - 10 October 2025 Update!
- Hyprland-Debian nows builds 0.51.1 from source!
- The installer now can be used to install newer releases later
- If you are currently running 0.49, or 0.50, you can upgrade to 0.51.1
- You do not have to re-install everything, but re-running `install.sh` works also
- Instructions are available in English and Spanish
#### ✨ Some notes on this installer / Prerequisites #### ✨ Some notes on this installer / Prerequisites
- This script is meant to install in Debian Testing (Trixie).
- If However, decided to try, recommend to install SDDM. Apart from GDM and SDDM, any other Login Manager may not work nor launch Hyprland. However, hyprland can be launched through tty by type Hyprland
- 🕯️ network-manager-gnome (nm-applet) has been removed from the packages to install. This is because it is known to restart the networkmanager causing issues in the installation process. After you boot up, inorder to get the network-manager applet, install network-manager-gnome. `sudo apt install network-manager-gnome` See below if your network or wifi became unmanaged after installation
- If you have nvidia, and wanted to use proprietary drivers, uninstall nouveau first (if installed). This script will be installing proprietary nvidia drivers and will not deal with removal of nouveau.
#### ⚠️ WARNING! nwg-look takes long time to install. - Recommend to install SDDM. Apart from GDM and SDDM, any other Login Manager may not work nor launch Hyprland. However, hyprland can be launched through tty by type Hyprland
- nwg-look is a utility to costumize your GTK theme. It's a LXAppearance like. Its a good tool though but this package is entirely optional - 🕯️ network-manager-gnome (nm-applet) *has been removed* from the packages to install. This is because it is known to restart the networkmanager causing issues in the installation process. After you boot up, inorder to get the network-manager applet, install network-manager-gnome. `sudo apt install network-manager-gnome` See below if your network or wifi became unmanaged after installation
#### ✨ Costumize the packages to be installed ### 🚩 changing login manager to SDDM
- inside the install-scripts folder, you can edit 00-hypr-pkgs.sh. Do not edit 00-dependencies.sh unless you know what you are doing. 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 - if you really want to change login manager, there are couple of things you need to carry out before running this install script
- first install sddm. the no-install-recommends is suggested else it will pull lots of plasma depencies.
```bash
sudo apt install --no-install-recommends -y sddm
```
- then ran `sudo dpkg-reconfigure sddm` choose sddm and then reboot.
- once reboot done, you can ran the script and choose sddm & sddm theme
- [LINK](https://www.simplified.guide/ubuntu/switch-to-gdm) for some guide
#### 💫 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.
#### 🔔 NOTICE TO NVIDIA OWNERS ### #### 🔔 NOTICE TO NVIDIA OWNERS ###
- by default it is installing the latest and newest nvidia drivers. If you have an older nvidia-gpu (GTX 800 series and older), check out nvidia-debian website [`LINK`](https://wiki.debian.org/NvidiaGraphicsDrivers) and edit nvidia.sh in install-scripts folder to install proper gpu driver
> [!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 or Use this script - By default it is installing the latest and newest nvidia drivers. If you have an older nvidia-gpu (GTX 800 series and older), check out nvidia-debian website [LINK](https://wiki.debian.org/NvidiaGraphicsDrivers) and edit nvidia.sh in install-scripts directory to install proper gpu driver
> clone this repo (latest commit only) by using git. Change directory, make executable and run the script - If you have nvidia, and wanted to use proprietary drivers, uninstall nouveau first (if installed). This script will be installing proprietary nvidia drivers and will not deal with removal of nouveau.
- NVIDIA users / owners, after installation, check [`THIS`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users)
> [!IMPORTANT]
> If you wish to use the nouveau driver (installed by default in Debian), be sure to not select "Nvidia" in the installation options.
> If you select this option, the NVIDIA installer part will attempt to blacklist nouveau; while Hyprland will still be installed, it will skip blacklisting nouveau if you don't select the NVIDIA option.
## ✨ Auto clone and install
>
> [!CAUTION]
> If you are using FISH SHELL, DO NOT use this function. Clone and run install.sh instead
- you can use this command to automatically clone the installer and ran the script for you
- NOTE: `curl` package is required before running this command
```bash
sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Debian-Hyprland/main/auto-install.sh)
```
## ✨ to use this script
clone this repo, change directory, make executable and run the script:
```bash ```bash
git clone --depth=1 https://github.com/JaKooLit/Debian-Hyprland.git ~/Debian-Hyprland git clone --depth=1 https://github.com/JaKooLit/Debian-Hyprland.git ~/Debian-Hyprland
cd ~/Debian-Hyprland cd ~/Debian-Hyprland
chmod +x install.sh chmod +x install.sh
./install.sh ./install.sh
``` ```
<p align="center">
<img align="center" width="100%" src="https://raw.githubusercontent.com/JaKooLit/Debian-Hyprland/main/Debian-Installer.png" />
#### ✨ for ZSH and OH-MY-ZSH installation
> installer should auto change your default shell to zsh. However, if it does not, do this
```bash
chsh -s $(which zsh)
zsh
source ~/.zshrc
```
- reboot or logout
- by default `xiong-chiamiov-plus` theme is installed. You can find more themes from this [`OH-MY-ZSH-THEMES`](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
- to change the theme, edit ~/.zshrc ZSH_THEME="desired theme"
#### ✨ TO DO once installation done and dotfiles copied #### ✨ TO DO once installation done and dotfiles copied
- 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)
- 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)
- if you installed in your laptop and Brightness and Keyboard brightness does not work you can execute this command `sudo chmod +s $(which brightnessctl)` - if you installed in your laptop and Brightness and Keyboard brightness does not work you can execute this command `sudo chmod +s $(which brightnessctl)`
#### ✨ Packages that are manually downloaded and build. These packages will not be updated by apt and have to be manually updated #### ✨ Packages that are manually downloaded and build. These packages will not be updated by apt and have to be manually updated
- Hyprland [`LINK`](https://github.com/hyprwm/Hyprland)
- nwg-look [`LINK`](https://github.com/nwg-piotr/nwg-look)
- Asus ROG asusctl [`LINK`](https://gitlab.com/asus-linux/asusctl) and superfxctl [`LINK`](https://gitlab.com/asus-linux/supergfxctl) - Asus ROG asusctl [`LINK`](https://gitlab.com/asus-linux/asusctl) and superfxctl [`LINK`](https://gitlab.com/asus-linux/supergfxctl)
- swww [`LINK`](https://github.com/Horus645/swww) - swww [`LINK`](https://github.com/Horus645/swww)
- hyprlock [`LINK`](https://github.com/hyprwm/hyprlock) - hyprlock [`LINK`](https://github.com/hyprwm/hyprlock) #22 Aug 2024 - still not on repo
- hypridle [`LINK`](https://github.com/hyprwm/hypridle) - hypridle [`LINK`](https://github.com/hyprwm/hypridle) #22 Aug 2024 - still not on repo
- hyprlang [`LINK`](https://github.com/hyprwm/hyprlang)
- hyprcursor [`LINK`](https://github.com/hyprwm/hyprcursor)
- swappy [`LINK`](https://github.com/jtheoof/swappy)
- xdg-desktop-portal-hyprland [`LINK`](https://github.com/hyprwm/xdg-desktop-portal-hyprland)
- rofi-wayland [`LINK`](https://github.com/lbonn/rofi) - rofi-wayland [`LINK`](https://github.com/lbonn/rofi)
- wallust [`LINK`](https://codeberg.org/explosion-mental/wallust)
> [!TIP] > [!TIP]
> To update to latest packages, re-running this script will auto update all. Script is configured to pull latest packages build for you. > To update to latest packages, re-running this script will auto update all. Script is configured to pull latest packages build for you.
### 💥 UNINSTALL SCRIPT / Removal of Config Files
- 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**
#### 🤬 FAQ #### 🤬 FAQ
#### Most common question I got is, Hey Ja, Why the heck it is taking long time to install? Other distro like Arch its only a minute or two. Why here takes like forever?!?!?!
- Well, most of the core packages are downloaded and Build and compiled from SOURCE. There are no pre-built binary (yet) for Debian and Ubuntu. Unlike Other distros, they already have prepacked binary that can just download and install. **Most common question I got is, Hey Ja, Why the heck it is taking long time to install? Other distro like Arch its only a minute or two. Why here takes like forever?!?!?**
- Well, most of the core packages are downloaded and Build and compiled from *SOURCE*. Unlike Other distros, they already have prepacked binary that can just download and install.
## 🛎 ***DEBIAN Hyprland Dots UPDATING NOTES***
- With this new update to Debian-Hyprland the current Hyprland-Dots are now compatible with Debian. This applies only to Debian, not ubuntu.
> [!NOTE] > [!NOTE]
> This script does not setup audio. Kindly set up. If you have not, I recommend pipewire. `sudo apt install -y pipewire` > This script does not setup audio. Kindly set up. If you have not, I recommend pipewire. `sudo apt install -y pipewire`
#### ❗ some known issues on this Installer #### 🙋 Got a questions regarding the Hyprland Dots or configurations? 🙋
- some users reported that they have to install some packages. It is in the install-scripts/force-install.sh
- At this time the packages force to install are the following `imagemagick`
#### 🫥 Improving performance for Older Nvidia Cards using driver 470 Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
- [`SEE HERE`](https://github.com/JaKooLit/Hyprland-Dots/discussions/123#discussion-6035205)
#### 🙋 Got a questions regarding the Hyprland Dots configurations? 🙋 #### ⌨ Keybinds
- Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
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
#### 🙋 👋 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 Debian-Hyprland Folder and then ran the below command.
- i.e. `./install-scripts/gtk-themes` - For reinstall GTK Themes. - CD into Debian-Hyprland directory and then ran the below command.
- i.e. `./install-scripts/gtk-themes.sh` - to reinstall GTK Themes or
- `./install-scripts/sddm.sh` - to reinstall sddm
> [!IMPORTANT]
> DO NOT CD into install-scripts directory as script as it will fail. Scripts are designed to ran outside install-scripts directory for installation logging purposes.
#### 🛣️ Roadmap
#### 🛣️ Roadmap:
- [ ] possibly adding gruvbox themes, cursors, icons - [ ] possibly adding gruvbox themes, cursors, icons
#### ❗ some known issues for nvidia #### ❗ some known issues for nvidia
- reports from members of my discord, states that some users of nvidia are getting stuck on sddm login. credit to @Kenni Fix stated was - reports from members of my discord, states that some users of nvidia are getting stuck on sddm login. credit to @Kenni Fix stated was
``` ```
while in sddm press ctrl+alt+F2 or F3 while in sddm press ctrl+alt+F2 or F3
log into your account log into your account
@ -195,39 +228,84 @@ 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
- [ ] Does not work in Ubuntu 23.10 and older ```
env = GBM_BACKEND,nvidia-drm
env = WLR_RENDERER_ALLOW_SOFTWARE,1
```
#### 🫥 Improving performance for Older Nvidia Cards using driver 470
- [`SEE HERE`](https://github.com/JaKooLit/Hyprland-Dots/discussions/123#discussion-6035205)
#### ❗ other known issues
> [!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 apt autoremove rofi` .
- Install rofi-wayland with
```bash
cd ~/Debian-Hyprland
./install-scripts/rofi-wayland.sh
```
- [ ] Rofi-wayland is compatible with x11 so no need to worry.
- [ ] Does not work in Debian Bookworm
- [ ] sddm blackscreen when log-out - [ ] sddm blackscreen when log-out
- [ ] Installing SDDM if or any other Login Manager installed. See [`Issue 2 - SDDM`](https://github.com/JaKooLit/Debian-Hyprland/issues/2) - [ ] Installing SDDM if or any other Login Manager installed. See [`Issue 2 - SDDM`](https://github.com/JaKooLit/Debian-Hyprland/issues/2)
- [ ] network is down or become unmanaged [`This`](https://askubuntu.com/questions/71159/network-manager-says-device-not-managed) might help - [ ] network is down or become unmanaged [`This`](https://askubuntu.com/questions/71159/network-manager-says-device-not-managed) might help
#### 📒 Final Notes #### 📒 Final Notes
- join my discord channel [`Discord`](https://discord.gg/V2SJ92vbEN)
- 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/Debian-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.
#### 💌 Some screenshots shared to me via discord
- Discord user : thunderlake.
![alt text](https://github.com/JaKooLit/Users-screenshots/blob/main/discord/%40thunderlake.png "Discord-user")
### 💖 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/Debian-Hyprland.svg?variant=adaptive)](https://starchart.cc/JaKooLit/Debian-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
@ -16,19 +16,16 @@ source $ZSH/oh-my-zsh.sh
# 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)
#cat ~/.cache/wal/sequences
# To add support for TTYs this line can be optionally added.
#source ~/.cache/wal/colors-tty.sh

View File

@ -0,0 +1,26 @@
diff --git a/hyprctl/main.cpp b/hyprctl/main.cpp
index daf8d4a8..62ab8578 100644
--- a/hyprctl/main.cpp
+++ b/hyprctl/main.cpp
@@ -268,7 +268,7 @@ int requestIPC(std::string_view filename, std::string_view arg) {
sockaddr_un serverAddress = {0};
serverAddress.sun_family = AF_UNIX;
- std::string socketPath = getRuntimeDir() + "/" + instanceSignature + "/" + filename;
+ std::string socketPath = getRuntimeDir() + "/" + std::string(instanceSignature) + "/" + std::string(filename);
strncpy(serverAddress.sun_path, socketPath.c_str(), sizeof(serverAddress.sun_path) - 1);
diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp
index 4e5c4080..1944f22e 100644
--- a/src/helpers/Monitor.cpp
+++ b/src/helpers/Monitor.cpp
@@ -549,7 +549,7 @@ bool CMonitor::applyMonitorRule(SMonitorRule* pMonitorRule, bool force) {
std::ranges::sort(sortedModes, sortFunc);
if (sortedModes.size() > 3)
sortedModes.erase(sortedModes.begin() + 3, sortedModes.end());
- requestedModes.insert_range(requestedModes.end(), sortedModes | std::views::reverse);
+ requestedModes.insert(requestedModes.end(), sortedModes.rbegin(), sortedModes.rend());
};
// last fallback is always preferred mode

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="🚝"

View File

@ -0,0 +1,75 @@
{
"$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json",
"logo": {
"source": "~/.config/fastfetch/debian.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",
]
}

BIN
assets/fastfetch/debian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

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

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

Binary file not shown.

BIN
assets/sddm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

50
auto-install.sh Executable 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="Debian-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 apt install -y git; 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

151
dry-run-build.sh Executable file
View File

@ -0,0 +1,151 @@
#!/usr/bin/env bash
# Dry-run orchestrator for Hyprland and companion modules
# - Compiles components but skips installation (uses DRY_RUN=1)
# - Summarizes PASS/FAIL per module to Install-Logs/
#
# Usage:
# chmod +x ./dry-run-build.sh
# ./dry-run-build.sh # run full stack dry-run
# ./dry-run-build.sh --with-deps # install dependencies first, then dry-run build
# ./dry-run-build.sh --only hyprland # run a subset (comma-separated allowed)
# ./dry-run-build.sh --skip qtutils # skip one or more (comma-separated)
#
# Notes:
# - Run from the repository root. Do not cd into install-scripts/.
# - You can also call modules directly, e.g., DRY_RUN=1 ./install-scripts/hyprland.sh
set -u
set -o pipefail
REPO_ROOT=$(pwd)
LOG_DIR="$REPO_ROOT/Install-Logs"
mkdir -p "$LOG_DIR"
TS=$(date +%F-%H%M%S)
SUMMARY_LOG="$LOG_DIR/build-dry-run-$TS.log"
# Default module order (core first, then Hyprland)
DEFAULT_MODULES=(
hyprutils
hyprlang
wayland-protocols-src
aquamarine
hyprgraphics
hyprwayland-scanner
hyprland-protocols
hyprland-qt-support
hyprland-qtutils
hyprland
)
WITH_DEPS=0
ONLY_LIST=""
SKIP_LIST=""
usage() {
grep '^# ' "$0" | sed 's/^# \{0,1\}//'
}
# Parse args
while [[ $# -gt 0 ]]; do
case "$1" in
-h|--help)
usage
exit 0
;;
--with-deps)
WITH_DEPS=1
shift
;;
--only)
ONLY_LIST=${2:-}
shift 2
;;
--skip)
SKIP_LIST=${2:-}
shift 2
;;
*)
echo "Unknown argument: $1" >&2
exit 2
;;
esac
done
# Build module list based on --only/--skip
MODULES=()
if [[ -n "$ONLY_LIST" ]]; then
IFS=',' read -r -a MODULES <<< "$ONLY_LIST"
else
MODULES=("${DEFAULT_MODULES[@]}")
fi
if [[ -n "$SKIP_LIST" ]]; then
IFS=',' read -r -a _SKIPS <<< "$SKIP_LIST"
FILTERED=()
for m in "${MODULES[@]}"; do
skip_it=0
for s in "${_SKIPS[@]}"; do
if [[ "$m" == "$s" ]]; then
skip_it=1
break
fi
done
if [[ $skip_it -eq 0 ]]; then
FILTERED+=("$m")
fi
done
MODULES=("${FILTERED[@]}")
fi
# Optionally install dependencies (not a dry-run)
if [[ $WITH_DEPS -eq 1 ]]; then
echo "[INFO] Installing dependencies via 00-dependencies.sh" | tee -a "$SUMMARY_LOG"
if ! "$REPO_ROOT/install-scripts/00-dependencies.sh"; then
echo "[ERROR] Dependencies installation failed. See logs under Install-Logs/." | tee -a "$SUMMARY_LOG"
exit 1
fi
fi
# Run each module with DRY_RUN=1 and capture exit codes
declare -A RESULTS
echo "[INFO] Starting dry-run build at $TS" | tee -a "$SUMMARY_LOG"
for mod in "${MODULES[@]}"; do
script_path="$REPO_ROOT/install-scripts/$mod.sh"
echo "\n=== $mod (DRY RUN) ===" | tee -a "$SUMMARY_LOG"
if [[ ! -x "$script_path" ]]; then
# Try to make executable if it exists
if [[ -f "$script_path" ]]; then
chmod +x "$script_path" || true
fi
fi
if [[ ! -f "$script_path" ]]; then
echo "[WARN] Missing script: $script_path" | tee -a "$SUMMARY_LOG"
RESULTS[$mod]="MISSING"
continue
fi
if DRY_RUN=1 "$script_path"; then
RESULTS[$mod]="PASS"
else
RESULTS[$mod]="FAIL"
fi
done
# Summary
{
echo "\nSummary (dry-run):"
for mod in "${MODULES[@]}"; do
printf "%-24s %s\n" "$mod" "${RESULTS[$mod]:-SKIPPED}"
done
echo "\nLogs: individual module logs are under Install-Logs/. This summary: $SUMMARY_LOG"
} | tee -a "$SUMMARY_LOG"
# Exit non-zero if any FAIL occurred
failed=0
for mod in "${MODULES[@]}"; do
if [[ "${RESULTS[$mod]:-}" == "FAIL" ]]; then
failed=1
fi
done
exit $failed

15
hypr-tags.env Normal file
View File

@ -0,0 +1,15 @@
# Central tag overrides for the Hyprland stack
# You can edit these values or let update-hyprland.sh manage them.
# Each module script reads its TAG from these environment variables if set.
HYPRLAND_TAG=v0.52.2
AQUAMARINE_TAG=v0.10.0
HYPRUTILS_TAG=v0.10.4
HYPRLANG_TAG=v0.6.7
HYPRGRAPHICS_TAG=v0.4.0
HYPRTOOLKIT_TAG=v0.4.1
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.7.0
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_GUIUTILS_TAG=v0.2.0
WAYLAND_PROTOCOLS_TAG=1.46

View File

@ -1,6 +1,7 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# main dependencies # # main dependencies #
# 22 Aug 2024 - NOTE will trim this more down
# packages neeeded # packages neeeded
dependencies=( dependencies=(
@ -8,6 +9,8 @@ dependencies=(
cmake cmake
cmake-extras cmake-extras
curl curl
findutils
gawk
gettext gettext
gir1.2-graphene-1.0 gir1.2-graphene-1.0
git git
@ -23,6 +26,7 @@ dependencies=(
libdeflate-dev libdeflate-dev
libdisplay-info-dev libdisplay-info-dev
libdrm-dev libdrm-dev
libegl-dev
libegl1-mesa-dev libegl1-mesa-dev
libgbm-dev libgbm-dev
libgdk-pixbuf-2.0-dev libgdk-pixbuf-2.0-dev
@ -32,9 +36,10 @@ dependencies=(
libgraphene-1.0-0 libgraphene-1.0-0
libgraphene-1.0-dev libgraphene-1.0-dev
libgtk-3-dev libgtk-3-dev
libgulkan-0.15-0 libgulkan-0.15-0t64
libgulkan-dev libgulkan-dev
libinih-dev libinih-dev
libiniparser-dev
libinput-dev libinput-dev
libjbig-dev libjbig-dev
libjpeg-dev libjpeg-dev
@ -47,6 +52,7 @@ dependencies=(
libpango1.0-dev libpango1.0-dev
libpipewire-0.3-dev libpipewire-0.3-dev
libqt6svg6 libqt6svg6
libsdbus-c++-dev
libseat-dev libseat-dev
libstartup-notification0-dev libstartup-notification0-dev
libswresample-dev libswresample-dev
@ -84,48 +90,81 @@ dependencies=(
python3-mako python3-mako
python3-markdown python3-markdown
python3-markupsafe python3-markupsafe
python3-pyquery
python3-yaml python3-yaml
qt6-base-dev qt6-base-dev
scdoc scdoc
seatd seatd
spirv-tools spirv-tools
unzip
vulkan-utility-libraries-dev
vulkan-validationlayers vulkan-validationlayers
vulkan-validationlayers-dev
wayland-protocols wayland-protocols
xdg-desktop-portal xdg-desktop-portal
xwayland xwayland
) )
# hyprland dependencies
hyprland_dep=(
bc
binutils
libc6
libcairo2-dev
libdisplay-info3
libdrm2
libjpeg-dev
libjxl-dev
libmagic-dev
libpixman-1-dev
libpugixml-dev
libre2-dev
librsvg2-dev
libspng-dev
libtomlplusplus-dev
libwebp-dev
libzip-dev
libpam0g-dev
libxcursor-dev
qt6-declarative-dev
qt6-base-private-dev
qt6-wayland-dev
qt6-wayland-private-dev
)
build_dep=(
wlroots
)
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || {
echo "${ERROR} Failed to change directory to $PARENT_DIR"
exit 1
}
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_dependencies.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_dependencies.log"
# Installation of main dependencies # Installation of main dependencies
printf "\n%s - Installing main dependencies.... \n" "${NOTE}" printf "\n%s - Installing ${SKY_BLUE}main dependencies....${RESET} \n" "${NOTE}"
for PKG1 in "${dependencies[@]}"; do for PKG1 in "${dependencies[@]}" "${hyprland_dep[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG" install_package "$PKG1" "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1
fi
done done
# Install dependencies for wlroots printf "\n%.0s" {1..1}
sudo apt build-dep wlroots
export PATH=$PATH:/usr/local/go/bin
# Install Rust for PKG1 in "${build_dep[@]}"; do
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y build_dep "$PKG1" "$LOG"
source $HOME/.cargo/env done
clear printf "\n%.0s" {1..2}

View File

@ -1,105 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hyprland-Dots 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 Debian Official Repo
# add packages wanted here
Extra=(
)
# packages neeeded
hypr_package=(
cliphist
grim
gvfs
gvfs-backends
imagemagick
kitty
nano
pavucontrol
playerctl
polkit-kde-agent-1
python3-requests
python3-pip
qt5ct
qt5-style-kvantum
qt5-style-kvantum-themes
qt6ct
slurp
sway-notification-center
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
pamixer
vim
)
# 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[@]}" "${Extra[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1
fi
done
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
## making brightnessctl work
sudo chmod +s $(which brightnessctl) 2>&1 | tee -a "$LOG" || true
## Installing pywal colors
printf "\n%s - Installing Pywal.... \n" "${NOTE}"
sudo pip3 install pywal --break-system-packages 2>&1 | tee -a "$LOG"
clear

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

@ -0,0 +1,147 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hyprland-Dots 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 Debian Official Repo
# add packages wanted here
Extra=(
)
# packages needed
hypr_package=(
cliphist
grim
gvfs
gvfs-backends
inxi
imagemagick
kitty
nano
pavucontrol
playerctl
polkit-kde-agent-1
python3-requests
python3-pip
qt5ct
qt5-style-kvantum
qt-style-kvantum-themes
qt6ct
slurp
swappy
sway-notification-center
unzip
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
fastfetch
loupe
gnome-system-monitor
mousepad
mpv
mpv-mpris
nwg-look
nwg-displays
nvtop
pamixer
qalculate-gtk
)
# packages to force reinstall
force=(
imagemagick
wayland-protocols
)
# List of packages to uninstall as it conflicts with swaync or causing swaync to not function properly
uninstall=(
dunst
mako
rofi
cargo
)
## 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..1}
for PKG2 in "${force[@]}"; do
re_install_package "$PKG2" "$LOG"
done
printf "\n%.0s" {1..1}
# install YAD from assets. NOTE This is downloaded from SID repo and sometimes
# Trixie is removing YAD for some strange reasons
# Check if yad is installed
if ! command -v yad &>/dev/null; then
echo "${INFO} Installing ${YELLOW}YAD from assets${RESET} ..."
sudo dpkg -i assets/yad_0.40.0-1+b2_amd64.deb
sudo apt install -f -y
echo "${INFO} ${YELLOW}YAD from assets${RESET} succesfully installed ..."
fi
printf "\n%.0s" {1..2}
# Install up-to-date Rust
echo "${INFO} Installing most ${YELLOW}up to date Rust compiler${RESET} ..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y 2>&1 | tee -a "$LOG"
source "$HOME/.cargo/env"
## making brightnessctl work
sudo chmod +s $(which brightnessctl) 2>&1 | tee -a "$LOG" || true
printf "\n%.0s" {1..2}

View File

@ -0,0 +1,79 @@
#!/bin/bash
# This script is cleaning up previous manual installation files / directories
# 22 Aug 2024
# Files to be removed from /usr/local/bin
TARGET_DIR="/usr/local/bin"
# Define packages to manually remove (was manually installed previously)
PACKAGES=(
cliphist
pypr
swappy
waybar
magick
)
# List of packages installed from Debian-Hyprland repo
uninstall=(
hyprland
xdg-desktop-portal-hyprland
libhhyprland-dev
libhyprutils-dev
libhyprutils0
hyprwayland-scanner
hyprland-protocols
hyprctl
hyprpm
Hyprland
)
## 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)_pre-clean-up.log"
# Loop through the list of packages
for PKG_NAME in "${PACKAGES[@]}"; do
# Construct the full path to the file
FILE_PATH="$TARGET_DIR/$PKG_NAME"
# Check if the file exists
if [[ -f "$FILE_PATH" ]]; then
# Delete the file
sudo rm "$FILE_PATH"
echo "Deleted: $FILE_PATH" 2>&1 | tee -a "$LOG"
else
echo "File not found: $FILE_PATH" 2>&1 | tee -a "$LOG"
fi
done
# packages removal installed from Debian-Hyprland repo
overall_failed=0
printf "\n%s - ${SKY_BLUE}Removing some packages${RESET} installed from Debian Hyprland official repo \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}

108
install-scripts/03-Final-Check.sh Executable file
View File

@ -0,0 +1,108 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Final checking if packages are installed
# NOTE: These package checks are only the essentials
packages=(
imagemagick
sway-notification-center
waybar
wl-clipboard
cliphist
wlogout
kitty
)
# Local packages that should be in /usr/local/bin/
local_pkgs_installed=(
hyprland
rofi
hypridle
hyprlock
wallust
)
local_pkgs_installed_2=(
swww
)
## 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/00_CHECK-$(date +%d-%H%M%S)_installed.log"
printf "\n%s - Final Check if Essential packages were installed \n" "${NOTE}"
# Initialize an empty array to hold missing packages
missing=()
local_missing=()
local_missing_2=()
# Function to check if a package is installed using dpkg
is_installed_dpkg() {
dpkg -l | grep -q "^ii $1 "
}
# Loop through each package
for pkg in "${packages[@]}"; do
# Check if the package is installed via dpkg
if ! is_installed_dpkg "$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
# Check for local packages in /usr/bin
for pkg2 in "${local_pkgs_installed_2[@]}"; do
if ! [ -f "/usr/bin/$pkg2" ]; then
local_missing_2+=("$pkg2")
fi
done
# Log missing packages
if [ ${#missing[@]} -eq 0 ] && [ ${#local_missing[@]} -eq 0 ] && [ ${#local_missing_2[@]} -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 "$pkg"
echo "$pkg" >> "$LOG" # Log the missing package to the file
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 "$pkg1 is not installed. can't find it in /usr/local/bin/"
echo "$pkg1" >> "$LOG" # Log the missing local package to the file
done
fi
if [ ${#local_missing_2[@]} -ne 0 ]; then
echo "${WARN} The following local packages are missing from /usr/bin/ and will be logged:"
for pkg2 in "${local_missing_2[@]}"; do
echo "$pkg2 is not installed. can't find it in /usr/bin/"
echo "$pkg2" >> "$LOG" # Log the missing local package to the file
done
fi
# Add a timestamp when the missing packages were logged
echo "${NOTE} Missing packages logged at $(date)" >> "$LOG"
fi

View File

@ -2,59 +2,125 @@
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Global Functions for Scripts # # Global Functions for Scripts #
# Create Directory for Install Logs
if [ ! -d Install-Logs ]; then
mkdir Install-Logs
fi
set -e set -e
# 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
if [ ! -d Install-Logs ]; then
mkdir Install-Logs
fi
# Show progress function
show_progress() {
local pid=$1
local package_name=$2
local spin_chars=("●○○○○○○○○○" "○●○○○○○○○○" "○○●○○○○○○○" "○○○●○○○○○○" "○○○○●○○○○" \
"○○○○○●○○○○" "○○○○○○●○○○" "○○○○○○○●○○" "○○○○○○○○●○" "○○○○○○○○○●")
local i=0
tput civis
printf "\r${INFO} Installing ${YELLOW}%s${RESET} ..." "$package_name"
while ps -p $pid &> /dev/null; do
printf "\r${INFO} Installing ${YELLOW}%s${RESET} %s" "$package_name" "${spin_chars[i]}"
i=$(( (i + 1) % 10 ))
sleep 0.3
done
printf "\r${INFO} Installing ${YELLOW}%s${RESET} ... Done!%-20s \n\n" "$package_name" ""
tput cnorm
}
# Function for installing packages # Function for installing packages with a progress bar
install_package() { install_package() {
# Checking if package is already installed if dpkg -l | grep -q -w "$1" ; then
if sudo dpkg -l | grep -q -w "$1" ; then echo -e "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..."
echo -e "${OK} $1 is already installed. Skipping..."
else else
# Package not installed (
echo -e "${NOTE} Installing $1 ..." stdbuf -oL sudo apt install -y "$1" 2>&1
sudo apt-get install -y "$1" 2>&1 | tee -a "$LOG" ) >> "$LOG" 2>&1 &
# Making sure the package is installed PID=$!
if sudo dpkg -l | grep -q -w "$1" ; then show_progress $PID "$1"
echo -e "\e[1A\e[K${OK} $1 was installed."
# Double check if the package successfully installed
if dpkg -l | grep -q -w "$1"; then
echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
else else
# Something is missing, exiting to review the log echo -e "\e[1A\e[K${ERROR} ${YELLOW}$1${RESET} failed to install. Please check the install.log. You may need to install it manually. Sorry, I have tried :("
echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry, I have tried :("
exit 1
fi fi
fi fi
} }
# Function for build depencies with a progress bar
build_dep() {
echo -e "${INFO} building dependencies for ${MAGENTA}$1${RESET} "
(
stdbuf -oL sudo apt build-dep -y "$1" 2>&1
) >> "$LOG" 2>&1 &
PID=$!
show_progress $PID "$1"
}
# Function for cargo install with a progress bar
cargo_install() {
echo -e "${INFO} installing ${MAGENTA}$1${RESET} using cargo..."
(
stdbuf -oL cargo install "$1" 2>&1
) >> "$LOG" 2>&1 &
PID=$!
show_progress $PID "$1"
}
# Function for re-installing packages with a progress bar
re_install_package() {
(
stdbuf -oL sudo apt install --reinstall -y "$1" 2>&1
) >> "$LOG" 2>&1 &
PID=$!
show_progress $PID "$1"
if dpkg -l | grep -q -w "$1"; then
echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully re-installed!"
else
# Package not found, reinstallation failed
echo -e "${ERROR} ${YELLOW}$1${RESET} failed to re-install. Please check the install.log. You may need to install it manually. Sorry, I have tried :("
fi
}
# Function for removing packages
uninstall_package() { uninstall_package() {
# Check if package is installed local pkg="$1"
# Checking if package is installed
if sudo dpkg -l | grep -q -w "^ii $1" ; then if sudo dpkg -l | grep -q -w "^ii $1" ; then
# Package is installed, attempt to uninstall echo -e "${NOTE} removing $pkg ..."
echo -e "${NOTE} Uninstalling $1 ..." sudo apt autoremove -y "$1" >> "$LOG" 2>&1 | grep -v "error: target not found"
# Attempt to uninstall the package and its configuration files
sudo apt-get autoremove -y "$1" >> "$LOG" 2>&1
# Check if the package is still installed after removal attempt
if ! dpkg -l | grep -q -w "^ii $1" ; then if ! dpkg -l | grep -q -w "^ii $1" ; then
echo -e "\e[1A\e[K${OK} $1 was uninstalled." echo -e "\e[1A\e[K${OK} ${MAGENTA}$1${RESET} removed."
else else
echo -e "\e[1A\e[K${ERROR} $1 failed to uninstall. Please check the uninstall.log." echo -e "\e[1A\e[K${ERROR} $pkg Removal failed. No actions required."
exit 1 return 1
fi fi
else
echo -e "${INFO} Package $pkg not installed, skipping."
fi fi
return 0
} }

View File

@ -1,52 +1,34 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Adding user in input group for waybar keyboard state module # # Adding users into input group #
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_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."
read -p "${YELLOW}Do you want to proceed? (y/n): ${RESET}" choice
if [[ $choice == "y" || $choice == "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." 2>&1 | tee -a "$LOG" echo "${OK} ${MAGENTA}input${RESET} group exists."
else else
echo "${NOTE} 'input' group doesn't exist. Creating 'input' group..." 2>&1 | tee -a "$LOG" 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 "${NOTE} 'input' group created" 2>&1 | tee -a "$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." 2>&1 | tee -a "$LOG" 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 "${NOTE} - User added to 'input' group" 2>&1 | tee -a "$LOG"
break # Break out of the loop if 'yes' is chosen
elif [[ $choice == "n" || $choice == "N" ]]; then
echo "${NOTE} No changes made. Exiting the script." 2>&1 | tee -a "$LOG"
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

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

@ -0,0 +1,214 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Aylur's GTK Shell #
ags=(
node-typescript
npm
meson
libgjs-dev
gjs
gobject-introspection
libgirepository1.0-dev
gir1.2-gtk-4.0
gir1.2-gtklayershell-0.1
libgtk-layer-shell-dev
libgtk-3-dev
libadwaita-1-dev
libpam0g-dev
libpulse-dev
libdbusmenu-gtk3-dev
libsoup-3.0-dev
ninja-build
build-essential
pkg-config
)
f_ags=(
npm
)
build_dep=(
pam
)
# 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.\n"
read -r -p "Reinstall v1.9.0 anyway? [y/N]: " REPLY
case "$REPLY" in
[yY]|[yY][eE][sS])
printf "${NOTE} Reinstalling Aylur's GTK Shell v1.9.0...\n"
;;
*)
printf "Skipping reinstallation.\n"
printf "\n%.0s" {1..2}
exit 0
;;
esac
fi
fi
# Installation of main components
printf "\n%s - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies \n" "${INFO}"
# Installing ags Dependencies
for PKG1 in "${ags[@]}"; do
install_package "$PKG1" "$LOG"
done
for force_ags in "${f_ags[@]}"; do
re_install_package "$force_ags" 2>&1 | tee -a "$LOG"
done
printf "\n%.0s" {1..1}
for PKG1 in "${build_dep[@]}"; do
build_dep "$PKG1" "$LOG"
done
#install typescript by npm
sudo npm install --global typescript 2>&1 | tee -a "$LOG"
# ags v1
printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n"
# Remove previous sources (both legacy "ags" and tagged "ags_v1.9.0")
for SRC_DIR in "ags" "ags_v1.9.0"; do
if [ -d "$SRC_DIR" ]; then
printf "${NOTE} Removing existing %s directory...\\n" "$SRC_DIR"
rm -rf "$SRC_DIR"
fi
done
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 launchers 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"
patch_ags_launcher() {
local target="$1"
if ! sudo test -f "$target"; then
return 1
fi
# 1) Remove deprecated GIR Repository path tweaks and GIRepository import (harmless if absent)
sudo sed -i \
-e '/Repository\.prepend_search_path/d' \
-e '/Repository\.prepend_library_path/d' \
-e '/gi:\/\/GIRepository/d' \
"$target"
# 2) Ensure GLib import exists (insert after first import line, or at top if none)
if ! sudo grep -q '^import GLib from "gi://GLib";' "$target"; then
TMPF=$(sudo mktemp)
sudo awk 'BEGIN{added=0} {
if (!added && $0 ~ /^import /) { print; print "import GLib from \"gi://GLib\";"; added=1; next }
print
} END { if (!added) print "import GLib from \"gi://GLib\";" }' "$target" | sudo tee "$TMPF" >/dev/null
sudo mv "$TMPF" "$target"
fi
# 3) Inject GI_TYPELIB_PATH export right after the GLib import (once)
if ! sudo grep -q 'GLib.setenv("GI_TYPELIB_PATH"' "$target"; then
TMPF=$(sudo mktemp)
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/x86_64-linux-gnu:/usr/local/lib64:/usr/local/lib:/usr/local/lib64/girepository-1.0:/usr/local/lib/girepository-1.0:/usr/local/lib/x86_64-linux-gnu/girepository-1.0:/usr/lib/x86_64-linux-gnu/girepository-1.0:/usr/lib/girepository-1.0:/usr/lib/ags:/usr/local/lib/ags:/usr/lib64/ags\" + (__old ? \":\" + __old : \"\"), true);"; print "const __oldld = GLib.getenv(\"LD_LIBRARY_PATH\");"; print "GLib.setenv(\"LD_LIBRARY_PATH\", \"/usr/local/lib/x86_64-linux-gnu:/usr/local/lib64:/usr/local/lib\" + (__oldld ? \":\" + __oldld : \"\"), true);"}' "$target" | sudo tee "$TMPF" >/dev/null
sudo mv "$TMPF" "$target"
fi
# 4) Ensure LD_LIBRARY_PATH export exists even if GI_TYPELIB_PATH was already present
if ! sudo grep -q 'GLib.setenv("LD_LIBRARY_PATH"' "$target"; then
TMPF=$(sudo mktemp)
sudo awk '{print} $0 ~ /^import GLib from "gi:\/\/GLib";$/ {print "const __oldld = GLib.getenv(\"LD_LIBRARY_PATH\");"; print "GLib.setenv(\"LD_LIBRARY_PATH\", \"/usr/local/lib64:/usr/local/lib\" + (__oldld ? \":\" + __oldld : \"\"), true);"}' "$target" | sudo tee "$TMPF" >/dev/null
sudo mv "$TMPF" "$target"
fi
# Restore executable bit for bin wrappers (mv from mktemp resets mode to 0600)
case "$target" in
*/bin/ags)
sudo chmod 0755 "$target" || true
;;
esac
printf "${OK} Patched: %s\n" "$target"
return 0
}
# Try common locations
for CAND in \
"/usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags" \
"/usr/share/com.github.Aylur.ags/com.github.Aylur.ags" \
"/usr/local/bin/ags" \
"/usr/bin/ags"; do
patch_ags_launcher "$CAND" || true
done
# Create an env-setting wrapper for AGS to ensure GI typelibs/libs are discoverable
printf "${NOTE} Creating env wrapper /usr/local/bin/ags...\n"
sudo tee /usr/local/bin/ags >/dev/null <<'WRAP'
#!/usr/bin/env bash
set -euo pipefail
cd "$HOME" 2>/dev/null || true
# Locate AGS ESM entry
MAIN_JS="/usr/local/share/com.github.Aylur.ags/com.github.Aylur.ags"
if [ ! -f "$MAIN_JS" ]; then
MAIN_JS="/usr/share/com.github.Aylur.ags/com.github.Aylur.ags"
fi
if [ ! -f "$MAIN_JS" ]; then
echo "Unable to find AGS entry script (com.github.Aylur.ags) in /usr/local/share or /usr/share" >&2
exit 1
fi
# Ensure GI typelibs and native libs are discoverable before gjs ESM loads
export GI_TYPELIB_PATH="/usr/local/lib/x86_64-linux-gnu:/usr/local/lib64:/usr/local/lib:/usr/local/lib64/girepository-1.0:/usr/local/lib/girepository-1.0:/usr/local/lib/x86_64-linux-gnu/girepository-1.0:/usr/lib/x86_64-linux-gnu/girepository-1.0:/usr/lib/girepository-1.0:/usr/lib64/girepository-1.0:/usr/lib/ags:/usr/local/lib/ags:/usr/lib64/ags:${GI_TYPELIB_PATH-}"
export LD_LIBRARY_PATH="/usr/local/lib/x86_64-linux-gnu:/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
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}

66
install-scripts/aquamarine.sh Executable file
View File

@ -0,0 +1,66 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# aquamarine #
#specific branch or release
tag="v0.10.0"
# Allow environment override
if [ -n "${AQUAMARINE_TAG:-}" ]; then tag="$AQUAMARINE_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_aquamarine.log"
MLOG="install-$(date +%d-%H%M%S)_aquamarine.log"
# Installation of dependencies
printf "\n%s - Installing ${YELLOW}aquamarine dependencies${RESET} .... \n" "${INFO}"
# Check if aquamarinedirectory exists and remove it
if [ -d "aquamarine" ]; then
rm -rf "aquamarine"
fi
# Clone and build
printf "${INFO} Installing ${YELLOW}aquamarine $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/aquamarine.git; then
cd aquamarine || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}aquamarine $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of aquamarine $tag."
fi
#moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for ${YELLOW}aquamarine $tag${RESET}" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -8,26 +8,28 @@ 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 "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_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

@ -1,29 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Cliphist install using go #
## This is to be be use for Ubuntu 23.10 only
# it is disabled by default. Enable it on install.sh #execute_script "cliphist.sh"
## 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)_cliphist.log"
# Install cliphist using go (for UBUNTU 23.10 users)
printf "\n%s - Installing cliphist using go.... \n" "${NOTE}"
export PATH=$PATH:/usr/local/bin
go install go.senan.xyz/cliphist@latest 2>&1 | tee -a "$LOG"
# copy cliphist into /usr/local/bin for some reason it is installing in ~/go/bin
sudo cp -r "$HOME/go/bin/cliphist" "/usr/local/bin/" 2>&1 | tee -a "$LOG"
clear

View File

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

View File

@ -1,86 +1,52 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Hyprland-Dots to download from Releases # # Hyprland-Dots to download a specific release #
if [[ $USE_PRESET = [Yy] ]]; then
source ./preset.sh # Define the specific release version to download
fi specific_version="v2.3.16"
#specific_version="v2.3.3-Deb-Untu-Hyprland-0.41.2"
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
printf "${NOTE} Downloading / Checking for existing Hyprland-Dots.tar.gz...\n" printf "${NOTE} Downloading / Checking for existing Hyprland-Dots-${specific_version}.tar.gz...\n"
# Check if Hyprland-Dots.tar.gz exists # Check if the specific release tarball exists
if [ -f Hyprland-Dots.tar.gz ]; then if [ -f "Hyprland-Dots-${specific_version}.tar.gz" ]; then
printf "${NOTE} Hyprland-Dots.tar.gz found.\n" printf "${NOTE} Hyprland-Dots-${specific_version}.tar.gz found.\n"
echo -e "${OK} Hyprland-Dots-${specific_version}.tar.gz is already downloaded."
# 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 exit 0
fi fi
fi
fi
printf "${NOTE} Downloading the latest Hyprland source code release...\n" printf "${NOTE} Downloading the Hyprland-Dots-${specific_version} source code release...\n"
# Fetch the tag name for the latest release using the GitHub API # Fetch the tag name for the specific 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) release_info=$(curl -s "https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/tags/${specific_version}")
if [ -z "$release_info" ]; then
# Check if the tag is obtained successfully echo -e "${ERROR} Unable to fetch information for release ${specific_version}." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
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 exit 1
fi fi
# Fetch the tarball URL for the latest release using the GitHub API # Get the tarball URL for the specific release
latest_tarball_url=$(curl -s https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/latest | grep "tarball_url" | cut -d '"' -f 4) tarball_url=$(echo "$release_info" | grep "tarball_url" | cut -d '"' -f 4)
# Check if the URL is obtained successfully # Check if the URL is obtained successfully
if [ -z "$latest_tarball_url" ]; then if [ -z "$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" echo -e "${ERROR} Unable to fetch the tarball URL for release ${specific_version}." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
exit 1 exit 1
fi fi
# Get the filename from the URL and include the tag name in the file name # Download the specific release source code tarball to the current directory
file_name="Hyprland-Dots-${latest_tag}.tar.gz" if curl -L "$tarball_url" -o "Hyprland-Dots-${specific_version}.tar.gz"; then
# 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 # Extract the contents of the tarball
tar -xzf "$file_name" || exit 1 tar -xzf "Hyprland-Dots-${specific_version}.tar.gz" || exit 1
# delete existing Hyprland-Dots # Delete existing Hyprland-Dots
rm -rf JaKooLit-Hyprland-Dots rm -rf JaKooLit-Hyprland-Dots
# Identify the extracted directory # Identify the extracted directory
extracted_directory=$(tar -tf "$file_name" | grep -o '^[^/]\+' | uniq) extracted_directory=$(tar -tf "Hyprland-Dots-${specific_version}.tar.gz" | grep -o '^[^/]\+' | uniq)
# Rename the extracted directory to JaKooLit-Hyprland-Dots # Rename the extracted directory to JaKooLit-Hyprland-Dots
mv "$extracted_directory" JaKooLit-Hyprland-Dots || exit 1 mv "$extracted_directory" JaKooLit-Hyprland-Dots || exit 1
@ -91,9 +57,9 @@ if curl -L "$latest_tarball_url" -o "$file_name"; then
chmod +x copy.sh chmod +x copy.sh
./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" echo -e "${OK} Hyprland-Dots-${specific_version} release downloaded, extracted, and processed successfully. Check JaKooLit-Hyprland-Dots directory for more detailed install logs" 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
else 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" echo -e "${ERROR} Failed to download Hyprland-Dots-${specific_version} release." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
exit 1 exit 1
fi fi

View File

@ -11,51 +11,70 @@ fonts-noto-color-emoji
) )
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_fonts.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_fonts.log"
# Installation of main components # Installation of main components
printf "\n%s - Installing fonts.... \n" "${NOTE}" printf "\n%s - Installing necessary ${SKY_BLUE}fonts${RESET}.... \n" "${NOTE}"
for PKG1 in "${fonts[@]}"; do for PKG1 in "${fonts[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG" install_package "$PKG1" "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1
fi
done done
printf "\n%.0s" {1..2}
# jetbrains nerd font. Necessary for waybar # jetbrains nerd font. Necessary for waybar
printf "\n%s - Downloading and Extracting Jetbrains Mono Nerd Font.... \n" "${NOTE}"
DOWNLOAD_URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz" DOWNLOAD_URL="https://github.com/ryanoasis/nerd-fonts/releases/latest/download/JetBrainsMono.tar.xz"
# Maximum number of download attempts # Maximum number of download attempts
MAX_ATTEMPTS=3 MAX_ATTEMPTS=2
for ((ATTEMPT = 1; ATTEMPT <= MAX_ATTEMPTS; ATTEMPT++)); do for ((ATTEMPT = 1; ATTEMPT <= MAX_ATTEMPTS; ATTEMPT++)); do
curl -OL "$DOWNLOAD_URL" 2>&1 | tee -a "$LOG" && break curl -OL "$DOWNLOAD_URL" 2>&1 | tee -a "$LOG" && break
echo "Download attempt $ATTEMPT failed. Retrying in 2 seconds..." 2>&1 | tee -a "$LOG" echo "Download ${YELLOW}DOWNLOAD_URL${RESET} attempt $ATTEMPT failed. Retrying in 2 seconds..." 2>&1 | tee -a "$LOG"
sleep 2 sleep 2
done done
# Check if the JetBrainsMono folder exists and delete it if it does # Check if the JetBrainsMono directory exists and delete it if it does
if [ -d ~/.local/share/fonts/JetBrainsMonoNerd ]; then if [ -d ~/.local/share/fonts/JetBrainsMonoNerd ]; then
rm -rf ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" rm -rf ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG"
fi fi
mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd mkdir -p ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG"
# Extract the new files into the JetBrainsMono directory and log the output
# Extract the new files into the JetBrainsMono folder and log the output
tar -xJkf JetBrainsMono.tar.xz -C ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG" tar -xJkf JetBrainsMono.tar.xz -C ~/.local/share/fonts/JetBrainsMonoNerd 2>&1 | tee -a "$LOG"
# Fantasque Mono Nerd Font
if wget -q https://github.com/ryanoasis/nerd-fonts/releases/download/v3.3.0/FantasqueSansMono.zip; then
mkdir -p "$HOME/.local/share/fonts/FantasqueSansMonoNerd" && unzip -o -q "FantasqueSansMono.zip" -d "$HOME/.local/share/fonts/FantasqueSansMono" && echo "FantasqueSansMono installed successfully" | tee -a "$LOG"
else
echo -e "\n${ERROR} Failed to download ${YELLOW}Fantasque Sans Mono Nerd Font${RESET} Please check your connection\n" | tee -a "$LOG"
fi
# Victor Mono-Font
if wget -q https://rubjo.github.io/victor-mono/VictorMonoAll.zip; then
mkdir -p "$HOME/.local/share/fonts/VictorMono" && unzip -o -q "VictorMonoAll.zip" -d "$HOME/.local/share/fonts/VictorMono" && echo "Victor Font installed successfully" | tee -a "$LOG"
else
echo -e "\n${ERROR} Failed to download ${YELLOW}Victor Mono Font${RESET} Please check your connection\n" | tee -a "$LOG"
fi
# Update font cache and log the output # Update font cache and log the output
fc-cache -v 2>&1 | tee -a "$LOG" fc-cache -v 2>&1 | tee -a "$LOG"
clear # clean up
if [ -d "JetBrainsMono.tar.xz" ]; then
rm -r JetBrainsMono.tar.xz 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -1,29 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# force reinstall packages cause it says its already installed but still not
# some users report that they need to install this packages
force=(
imagemagick
)
## 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)_force.log"
printf "${NOTE} Force installing packages...\n"
for FORCE in "${force[@]}"; do
sudo apt-get --reinstall install -y "$FORCE" 2>&1 | tee -a "$LOG"
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $FORCE install had failed, please check the install.log"; exit 1; }
done
clear

View File

@ -8,14 +8,17 @@ 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 "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_themes.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_themes.log"
@ -23,31 +26,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

@ -1,5 +1,6 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hyprcursor # # hyprcursor #
cursor=( cursor=(
@ -7,15 +8,21 @@ libzip-dev
librsvg2-dev librsvg2-dev
) )
#specific branch or release
tag="v0.1.13"
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprcursor.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprcursor.log"
@ -27,7 +34,7 @@ printf "\n%s - Installing hyprcursor dependencies.... \n" "${NOTE}"
for PKG1 in "${cursor[@]}"; do for PKG1 in "${cursor[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG" install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log" echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1 exit 1
fi fi
done done
@ -40,7 +47,7 @@ fi
# Clone and build # Clone and build
printf "${NOTE} Installing hyprcursor...\n" printf "${NOTE} Installing hyprcursor...\n"
if git clone https://github.com/hyprwm/hyprcursor.git; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprcursor.git; then
cd hyprcursor || exit 1 cd hyprcursor || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
@ -56,6 +63,6 @@ else
echo -e "${ERROR} Download failed for hyprcursor." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for hyprcursor." 2>&1 | tee -a "$LOG"
fi fi
clear printf "\n%.0s" {1..2}

78
install-scripts/hyprgraphics.sh Executable file
View File

@ -0,0 +1,78 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hyprgraphics #
hyprgraphics=(
libmagic
)
#specific branch or release
tag="v0.4.0"
# Allow environment override
if [ -n "${HYPRGRAPHICS_TAG:-}" ]; then tag="$HYPRGRAPHICS_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_hyprgraphics.log"
MLOG="install-$(date +%d-%H%M%S)_hyprgraphics2.log"
# Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprgraphics dependencies${RESET} .... \n" "${INFO}"
for PKG1 in "${hyprgraphics[@]}"; do
re_install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1
fi
done
printf "\n%.0s" {1..1}
# Check if hyprgraphics directory exists and remove it
if [ -d "hyprgraphics" ]; then
rm -rf "hyprgraphics"
fi
# Clone and build
printf "${INFO} Installing ${YELLOW}hyprgraphics $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprgraphics.git; then
cd hyprgraphics || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target hyprgraphics -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}hyprgraphics $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprgraphics $tag."
fi
#moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for ${YELLOW}hyprgraphics $graphics${RESET}" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -6,55 +6,58 @@ idle=(
libsdbus-c++-dev libsdbus-c++-dev
) )
#specific branch or release
tag="v0.1.6"
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypridle.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypridle.log"
MLOG="install-$(date +%d-%H%M%S)_hypridle.log" MLOG="install-$(date +%d-%H%M%S)_hypridle2.log"
# Installation of dependencies # Installation of dependencies
printf "\n%s - Installing hypridle dependencies.... \n" "${NOTE}" printf "\n%s - Installing ${YELLOW}hypridle dependencies${RESET} .... \n" "${INFO}"
for PKG1 in "${idle[@]}"; do for PKG1 in "${idle[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG" re_install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log" echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs"
exit 1 exit 1
fi fi
done done
# Check if hypridle folder exists and remove it # Check if hypridle directory exists and remove it
if [ -d "hypridle" ]; then if [ -d "hypridle" ]; then
printf "${NOTE} Removing existing hypridle folder...\n"
rm -rf "hypridle" rm -rf "hypridle"
fi fi
# Clone and build # Clone and build
printf "${NOTE} Installing hypridle...\n" printf "${INFO} Installing ${YELLOW}hypridle $tag${RESET} ...\n"
if git clone https://github.com/hyprwm/hypridle.git; then if git clone --recursive -b $tag https://github.com/hyprwm/hypridle.git; then
cd hypridle || exit 1 cd hypridle || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
cmake --build ./build --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` cmake --build ./build --config Release --target hypridle -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} hypridle installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} ${MAGENTA}hypridle $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hypridle." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG ../Install-Logs/ || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hypridle." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hypridle $tag${RESET}" 2>&1 | tee -a "$LOG"
fi fi
clear printf "\n%.0s" {1..2}

View File

@ -0,0 +1,88 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hypland-guiutils #
guiutils=(
libqt6core5compat6
qt6-base-dev
qt6-wayland-dev
qt6-wayland
qt6-declarative-dev
qml6-module-qtcore
qt6-3d-dev
qt6-5compat-dev
libqt6waylandclient6
qml6-module-qtwayland-client-texturesharing
)
#specific branch or release
tag="v0.2.0"
# Allow environment override
if [ -n "${HYPRLAND_GUIUTILS_TAG:-}" ]; then tag="$HYPRLAND_GUIUTILS_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_hyprland-guiutils.log"
MLOG="install-$(date +%d-%H%M%S)_hyprland-guiutils2.log"
# Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprland-guiutils dependencies${RESET} .... \n" "${INFO}"
for PKG1 in "${guiutils[@]}"; do
re_install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs"
exit 1
fi
done
printf "\n%.0s" {1..1}
# Check if hyprland-guiutils directory exists and remove it
if [ -d "hyprland-guiutils" ]; then
rm -rf "hyprland-guiutils"
fi
# Clone and build
printf "${INFO} Installing ${YELLOW}hyprland-guiutils $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-guiutils.git; then
cd hyprland-guiutils || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}hyprland-guiutils $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprland-guiutils $tag."
fi
#moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-guiutils $tag${RESET}" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -0,0 +1,65 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hypland-protocols #
#specific branch or release
tag="v0.7.0"
# Allow environment override
if [ -n "${HYPRLAND_PROTOCOLS_TAG:-}" ]; then tag="$HYPRLAND_PROTOCOLS_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_protocols.log"
MLOG="install-$(date +%d-%H%M%S)_protocols2.log"
# Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprland-protocols dependencies${RESET} .... \n" "${INFO}"
# Check if hyprland-protocols directory exists and remove it
if [ -d "hyprland-protocols" ]; then
rm -rf "hyprland-protocols"
fi
# Clone and build
printf "${INFO} Installing ${YELLOW}hyprland-protocols $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-protocols.git; then
cd hyprland-protocols || exit 1
meson setup build
if [ $DO_INSTALL -eq 1 ]; then
if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}hyprland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprland-protocols $tag."
fi
#moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-protocols tag${RESET}" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -0,0 +1,86 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hypland-qt-support #
qt_support=(
qt6-base-dev
qt6-wayland
qt6-declarative-dev
qml6-module-qtcore
qml6-module-qtquick-layouts
qt6-tools-dev
qt6-tools-dev-tools
qt6-charts-dev
)
#specific branch or release
tag="v0.1.0"
# Allow environment override
if [ -n "${HYPRLAND_QT_SUPPORT_TAG:-}" ]; then tag="$HYPRLAND_QT_SUPPORT_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_hyprland-qt-support.log"
MLOG="install-$(date +%d-%H%M%S)_hyprland-qt-support2.log"
# Installation of dependencies
printf "\n%s - Installing ${YELLOW}hyprland-qt-support dependencies${RESET} .... \n" "${INFO}"
for PKG1 in "${qt_support[@]}"; do
re_install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - ${YELLOW}$PKG1${RESET} Package installation failed, Please check the installation logs"
exit 1
fi
done
printf "\n%.0s" {1..1}
# Check if hyprland-qt-support directory exists and remove it
if [ -d "hyprland-qt-support" ]; then
rm -rf "hyprland-qt-support"
fi
# Clone and build
printf "${INFO} Installing ${YELLOW}hyprland-qt-support $tag${RESET} ...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprland-qt-support.git; then
cd hyprland-qt-support || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}hyprland-qt-support $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprland-qt-support $tag."
fi
#moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for ${YELLOW}hyprland-qt-support $tag${RESET}" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -2,6 +2,28 @@
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# Main Hyprland Package# # Main Hyprland Package#
#specific branch or release
tag="v0.52.2"
# Allow environment override
if [ -n "${HYPRLAND_TAG:-}" ]; then tag="$HYPRLAND_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
hyprland=(
clang
llvm
libxcb-errors-dev
libre2-dev
libglaze-dev
libudis86-dev
libinotify-ocaml-dev
)
## 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 # Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
@ -16,8 +38,35 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprland.log"
MLOG="install-$(date +%d-%H%M%S)_hyprland2.log" MLOG="install-$(date +%d-%H%M%S)_hyprland2.log"
# Installation of dependencies
printf "\n%s - Installing hyprland additional dependencies.... \n" "${NOTE}"
for PKG1 in "${hyprland[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1
fi
done
printf "\n%.0s" {1..1}
# Installation of dependencies (glaze)
printf "\n%s - Installing Hyprland additional dependencies (glaze).... \n" "${NOTE}"
# Check if /usr/include/glaze exists
if [ ! -d /usr/include/glaze ]; then
echo "${INFO} ${YELLOW}Glaze${RESET} is not installed. Installing ${YELLOW}glaze from assets${RESET} ..."
sudo dpkg -i assets/libglaze-dev_4.4.3-1_all.deb 2>&1 | tee -a "$LOG"
sudo apt-get install -f -y 2>&1 | tee -a "$LOG"
echo "${INFO} ${YELLOW}libglaze-dev from assets${RESET} installed."
fi
printf "\n%.0s" {1..1}
# Clone, build, and install Hyprland using Cmake # Clone, build, and install Hyprland using Cmake
printf "${NOTE} Cloning Hyprland...\n" printf "${NOTE} Cloning and Installing ${YELLOW}Hyprland $tag${RESET} ...\n"
# Check if Hyprland folder exists and remove it # Check if Hyprland folder exists and remove it
if [ -d "Hyprland" ]; then if [ -d "Hyprland" ]; then
@ -25,19 +74,60 @@ if [ -d "Hyprland" ]; then
rm -rf "Hyprland" 2>&1 | tee -a "$LOG" rm -rf "Hyprland" 2>&1 | tee -a "$LOG"
fi fi
if git clone --recursive -b v0.39.1 "https://github.com/hyprwm/Hyprland"; then if git clone --recursive -b $tag "https://github.com/hyprwm/Hyprland"; then
cd "Hyprland" || exit 1 cd "Hyprland" || exit 1
make all # Apply patch only if it applies cleanly; otherwise skip
if sudo make install 2>&1 | tee -a "$MLOG"; then if [ -f ../assets/0001-fix-hyprland-compile-issue.patch ]; then
printf "${OK} Hyprland installed successfully.\n" 2>&1 | tee -a "$MLOG" if patch -p1 --dry-run < ../assets/0001-fix-hyprland-compile-issue.patch >/dev/null 2>&1; then
patch -p1 < ../assets/0001-fix-hyprland-compile-issue.patch
else else
echo -e "${ERROR} Installation failed for Hyprland." 2>&1 | tee -a "$MLOG" echo "${NOTE} Hyprland compile patch does not apply on $tag; skipping."
fi fi
mv $MLOG ../Install-Logs/ || true fi
# By default, build Hyprland with bundled hyprutils/hyprlang to avoid version mismatches
# You can force system libs by exporting USE_SYSTEM_HYPRLIBS=1 before running this script.
USE_SYSTEM=${USE_SYSTEM_HYPRLIBS:-1}
if [ "$USE_SYSTEM" = "1" ]; then
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig:${PKG_CONFIG_PATH:-}"
export CMAKE_PREFIX_PATH="/usr/local:${CMAKE_PREFIX_PATH:-}"
SYSTEM_FLAGS=("-DUSE_SYSTEM_HYPRUTILS=ON" "-DUSE_SYSTEM_HYPRLANG=ON")
else
# Ensure we do not accidentally pick up mismatched system headers
unset PKG_CONFIG_PATH || true
SYSTEM_FLAGS=("-DUSE_SYSTEM_HYPRUTILS=OFF" "-DUSE_SYSTEM_HYPRLANG=OFF")
fi
# Make sure submodules are present when building bundled deps
git submodule update --init --recursive || true
# Force Clang toolchain to support required language features and flags
export CC="${CC:-clang}"
export CXX="${CXX:-clang++}"
CONFIG_FLAGS=(
-DCMAKE_BUILD_TYPE=Release
-DCMAKE_C_COMPILER="${CC}"
-DCMAKE_CXX_COMPILER="${CXX}"
-DCMAKE_CXX_STANDARD=26
-DCMAKE_CXX_STANDARD_REQUIRED=ON
-DCMAKE_CXX_EXTENSIONS=ON
"${SYSTEM_FLAGS[@]}"
)
cmake -S . -B build "${CONFIG_FLAGS[@]}"
cmake --build build -j "$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
printf "${OK} ${MAGENTA}Hyprland tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of Hyprland $tag."
fi
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for Hyprland." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}Hyprland $tag${RESET}" 2>&1 | tee -a "$LOG"
fi fi
clear printf "\n%.0s" {1..2}

View File

@ -1,48 +1,66 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# hyprlang - hyprland and xdg-desktop-portal- dependencies # # Hypr Ecosystem #
# hyplang #
#specific branch or release
tag="v0.6.7"
# Allow environment override
if [ -n "${HYPRLANG_TAG:-}" ]; then tag="$HYPRLANG_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
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 "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlang.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlang.log"
MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log" MLOG="install-$(date +%d-%H%M%S)_hyprlang2.log"
## # Installation of dependencies
printf "${NOTE} Installing hyprlang...\n" printf "\n%s - Installing ${YELLOW}hyprlang dependencies${RESET} .... \n" "${INFO}"
# Check if hyprlang folder exists and remove it # Check if hyprlang directory exists and remove it
if [ -d "hyprlang" ]; then if [ -d "hyprlang" ]; then
printf "${NOTE} Removing existing hyprlang folder...\n"
rm -rf "hyprlang" rm -rf "hyprlang"
fi fi
# Clone and build hyprlang # Clone and build
printf "${NOTE} Installing hyprlang...\n" printf "${INFO} Installing ${YELLOW}hyprlang $tag${RESET} ...\n"
if git clone https://github.com/hyprwm/hyprlang.git; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprlang.git; then
cd hyprlang || exit 1 cd hyprlang || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
cmake --build ./build --config Release --target hyprlang -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` cmake --build ./build --config Release --target hyprlang -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} hyprlang installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} ${MAGENTA}hyprlang tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprlang." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprlang $tag."
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG ../Install-Logs/ || true [ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprlang." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprlang $tag${RESET}" 2>&1 | tee -a "$LOG"
fi fi
printf "\n%.0s" {1..2}
clear

View File

@ -3,57 +3,70 @@
# hyprlock # # hyprlock #
lock=( lock=(
libpam0g-dev
libgbm-dev
libdrm-dev
libmagic-dev libmagic-dev
libaudit-dev
libsdbus-c++-dev
) )
build_dep=(
pam
)
#specific branch or release
tag="v0.9.1"
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlock.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_hyprlock.log"
MLOG="install-$(date +%d-%H%M%S)_hyprlock.log" MLOG="install-$(date +%d-%H%M%S)_hyprlock2.log"
# Installation of dependencies # Installation of dependencies
printf "\n%s - Installing hyprlock dependencies.... \n" "${NOTE}" printf "\n%s - Installing ${YELLOW}hyprlock dependencies${RESET} .... \n" "${INFO}"
for PKG1 in "${lock[@]}"; do for PKG1 in "${lock[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG" re_install_package "$PKG1" "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1
fi
done done
# Check if hyprlidle folder exists and remove it for PKG1 in "${build_dep[@]}"; do
build_dep "$PKG1" "$LOG"
done
# Check if hyprlock directory exists and remove it
if [ -d "hyprlock" ]; then if [ -d "hyprlock" ]; then
printf "${NOTE} Removing existing hyprlock folder...\n"
rm -rf "hyprlock" rm -rf "hyprlock"
fi fi
# Clone and build hyprlock # Clone and build hyprlock
printf "${NOTE} Installing hyprlock...\n" printf "${INFO} Installing ${YELLOW}hyprlock $tag${RESET} ...\n"
if git clone https://github.com/hyprwm/hyprlock.git; then if git clone --recursive -b $tag https://github.com/hyprwm/hyprlock.git; then
cd hyprlock || exit 1 cd hyprlock || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build
cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF` cmake --build ./build --config Release --target hyprlock -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} hyprlock installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} ${YELLOW}hyprlock $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for hyprlock." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory #moving the addional logs to Install-Logs directory
mv $MLOG ../Install-Logs/ || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for hyprlock." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}hyprlock $tag${RESET}" 2>&1 | tee -a "$LOG"
fi fi
clear printf "\n%.0s" {1..2}

View File

@ -0,0 +1,72 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hyprpolkitagent #
polkitagent=(
libpolkit-agent-1-dev
libpolkit-qt6-1-dev
qml6-module-qtquick-layouts
qt6-tools-dev
qt6-tools-dev-tools
qt6-charts-dev
)
#specific branch or release
tag="v0.1.3"
## 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)_hyprpolkitagent.log"
MLOG="install-$(date +%d-%H%M%S)_hyprpolkitagent.log"
# Installation of dependencies
printf "\n%s - Installing hyprpolkitagent dependencies.... \n" "${NOTE}"
for PKG1 in "${polkitagent[@]}"; do
re_install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1
fi
done
# Check if hyprpolkitagent folder exists and remove it
if [ -d "hyprpolkitagent" ]; then
printf "${NOTE} Removing existing hyprpolkitagent folder...\n"
rm -rf "hyprpolkitagent"
fi
# Clone and build
printf "${NOTE} Installing hyprpolkitagent...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprpolkitagent.git; then
cd hyprpolkitagent || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
if sudo cmake --install ./build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} hyprpolkitagent installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for hyprpolkitagent." 2>&1 | tee -a "$MLOG"
fi
#moving the addional logs to Install-Logs directory
mv $MLOG ../Install-Logs/ || true
cd ..
else
echo -e "${ERROR} Download failed for hyprpolkitagent." 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

65
install-scripts/hyprtoolkit.sh Executable file
View File

@ -0,0 +1,65 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hyprtoolkit #
#specific branch or release
tag="v0.4.1"
# Allow environment override
if [ -n "${HYPRTOOLKIT_TAG:-}" ]; then tag="$HYPRTOOLKIT_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_hyprtoolkit.log"
MLOG="install-$(date +%d-%H%M%S)_hyprtoolkit2.log"
# Clone, build, and install using Cmake
printf "${NOTE} Cloning hyprtoolkit...\n"
# Check if hyprtoolkit folder exists and remove it
if [ -d "hyprtoolkit" ]; then
printf "${NOTE} Removing existing hyprtoolkit folder...\n"
rm -rf "hyprtoolkit" 2>&1 | tee -a "$LOG"
fi
if git clone -b $tag "https://github.com/hyprwm/hyprtoolkit.git"; then
cd "hyprtoolkit" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
printf "${OK} hyprtoolkit installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for hyprtoolkit." 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprtoolkit $tag."
fi
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for hyprtoolkit" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

65
install-scripts/hyprutils.sh Executable file
View File

@ -0,0 +1,65 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hyprutils #
#specific branch or release
tag="v0.10.4"
# Allow environment override
if [ -n "${HYPRUTILS_TAG:-}" ]; then tag="$HYPRUTILS_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_hyprutils.log"
MLOG="install-$(date +%d-%H%M%S)_hyprutils2.log"
# Clone, build, and install using Cmake
printf "${NOTE} Cloning hyprutils...\n"
# Check if hyprutils folder exists and remove it
if [ -d "hyprutils" ]; then
printf "${NOTE} Removing existing hyprutils folder...\n"
rm -rf "hyprutils" 2>&1 | tee -a "$LOG"
fi
if git clone -b $tag "https://github.com/hyprwm/hyprutils.git"; then
cd "hyprutils" || exit 1
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DCMAKE_INSTALL_PREFIX:PATH=/usr/local -S . -B ./build
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
printf "${OK} hyprutils installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for hyprutils." 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprutils $tag."
fi
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for hyprutils" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -0,0 +1,82 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# hyprwayland-scanner #
scan_depend=(
libpugixml-dev
)
#specific branch or release
tag="v0.4.5"
# Allow environment override
if [ -n "${HYPRWAYLAND_SCANNER_TAG:-}" ]; then tag="$HYPRWAYLAND_SCANNER_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_hyprwayland-scanner.log"
MLOG="install-$(date +%d-%H%M%S)_hyprwayland-scanner2.log"
##
# Installation of dependencies
printf "\n%s - Installing hyprwayland-scanner dependencies.... \n" "${NOTE}"
for PKG1 in "${scan_depend[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1
fi
done
printf "${NOTE} Installing hyprwayland-scanner...\n"
# Check if hyprwayland-scanner folder exists and remove it
if [ -d "hyprwayland-scanner" ]; then
printf "${NOTE} Removing existing hyprwayland-scanner folder...\n"
rm -rf "hyprwayland-scanner"
fi
# Clone and build hyprlang
printf "${NOTE} Installing hyprwayland-scanner...\n"
if git clone --recursive -b $tag https://github.com/hyprwm/hyprwayland-scanner.git; then
cd hyprwayland-scanner || exit 1
cmake -DCMAKE_INSTALL_PREFIX=/usr -B build
cmake --build build -j `nproc`
if [ $DO_INSTALL -eq 1 ]; then
if sudo cmake --install build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} hyprwayland-scanner installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for hyprwayland-scanner." 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of hyprwayland-scanner $tag."
fi
#moving the addional logs to Install-Logs directory
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/
cd ..
else
echo -e "${ERROR} Download failed for hyprwayland-scanner. Please check log." 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -8,22 +8,24 @@ nvidia_pkg=(
firmware-misc-nonfree firmware-misc-nonfree
nvidia-kernel-dkms nvidia-kernel-dkms
linux-headers-$(uname -r) linux-headers-$(uname -r)
libnvidia-egl-wayland1
libva-wayland2 libva-wayland2
libnvidia-egl-wayland1
nvidia-vaapi-driver nvidia-vaapi-driver
) )
# for ubuntu-nvidia owners! just delete #
# sudo ubuntu-drivers install
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log"
@ -54,38 +56,14 @@ add_to_file() {
fi fi
} }
# Clone, build, and install Hyprland using Cmake
printf "${NOTE} Cloning Hyprland...\n"
# Check if Hyprland folder exists and remove it
if [ -d "Hyprland" ]; then
printf "${NOTE} Removing existing Hyprland folder...\n"
rm -rf "Hyprland" 2>&1 | tee -a "$LOG"
fi
if git clone --recursive -b v0.32.3 "https://github.com/hyprwm/Hyprland"; then
cd "Hyprland" || exit 1
make all
if sudo make install 2>&1 | tee -a "$MLOG"; then
printf "${OK} Hyprland installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for Hyprland." 2>&1 | tee -a "$MLOG"
fi
mv $MLOG ../Install-Logs/ || true
cd ..
else
echo -e "${ERROR} Download failed for Hyprland." 2>&1 | tee -a "$LOG"
fi
# Install additional Nvidia packages # Install additional Nvidia packages
printf "${YELLOW} Installing Nvidia packages...\n" printf "${YELLOW} Installing ${SKY_BLUE}Nvidia packages${RESET} ...\n"
for NVIDIA in "${nvidia_pkg[@]}"; do for NVIDIA in "${nvidia_pkg[@]}"; do
install_package "$NVIDIA" 2>&1 | tee -a "$LOG" install_package "$NVIDIA" "$LOG"
done done
# adding additional nvidia-stuff
printf "${YELLOW} nvidia-stuff to /etc/default/grub..." printf "${YELLOW} adding ${SKY_BLUE}nvidia-stuff${RESET} to /etc/default/grub..."
# Additional options to add to GRUB_CMDLINE_LINUX # Additional options to add to GRUB_CMDLINE_LINUX
additional_options="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 rcutree.rcu_idle_gp_delay=1" additional_options="rd.driver.blacklist=nouveau modprobe.blacklist=nouveau nvidia-drm.modeset=1 rcutree.rcu_idle_gp_delay=1"
@ -105,7 +83,7 @@ printf "${YELLOW} nvidia-stuff to /etc/default/grub..."
# Define the configuration file and the line to add # Define the configuration file and the line to add
config_file="/etc/modprobe.d/nvidia.conf" config_file="/etc/modprobe.d/nvidia.conf"
line_to_add=""" line_to_add="""
options nvidia-drm modeset=1 options nvidia-drm modeset=1 fbdev=1
options nvidia NVreg_PreserveVideoMemoryAllocations=1 options nvidia NVreg_PreserveVideoMemoryAllocations=1
""" """
@ -128,4 +106,4 @@ printf "${YELLOW} nvidia-stuff to /etc/default/grub..."
echo "Modules file ($modules_file) not found." 2>&1 | tee -a "$LOG" echo "Modules file ($modules_file) not found." 2>&1 | tee -a "$LOG"
fi fi
clear printf "\n%.0s" {1..2}

View File

@ -1,65 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# nwg-look ) #
nwg_look=(
golang
libgtk-3-dev
libcairo2-dev
libglib2.0-bin
)
## 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')_nwg-look.log"
MLOG="install-$(date +'%d-%H%M%S')_nwg-look2.log"
# Installing NWG-Look Dependencies
for PKG1 in "${nwg_look[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\033[1A\033[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1
fi
done
printf "${NOTE} Installing nwg-look\n"
# Check if nwg-look directory exists
if [ -d "nwg-look" ]; then
printf "${INFO} nwg-look directory already exists. Updating...\n"
cd nwg-look || exit 1
git stash
git pull
else
# Clone nwg-look repository if directory doesn't exist
if git clone https://github.com/nwg-piotr/nwg-look.git; then
cd nwg-look || exit 1
else
echo -e "${ERROR} Download failed for nwg-look." 2>&1 | tee -a "$LOG"
mv "$MLOG" ../Install-Logs/ || true
exit 1
fi
fi
# Build nwg-look
make build
if sudo make install 2>&1 | tee -a "$MLOG"; then
printf "${OK} nwg-look installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for nwg-look" 2>&1 | tee -a "$MLOG"
fi
# Move logs to Install-Logs directory
mv "$MLOG" ../Install-Logs/ || true
cd ..
clear

View File

@ -1,32 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Pywal Colors) #
pywal=(
imagemagick
python3-pip
)
## 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')_pywal.log"
# Installing Pywal dependencies
for package in "${pywal[@]}"; do
install_package "$package" || exit 1
done
## Installing pywal colors
printf "\n%s - Installing Pywal.... \n" "${NOTE}"
sudo pip3 install pywal --break-system-packages 2>&1 | tee -a "$LOG"
clear

View File

@ -5,78 +5,101 @@
rofi=( rofi=(
bison bison
flex flex
pandoc
doxygen
cppcheck
imagemagick
libmpdclient-dev
libnl-3-dev
libasound2-dev
libstartup-notification0-dev
libwayland-client++1
libwayland-dev
libcairo-5c-dev
libcairo2-dev
libpango1.0-dev
libgdk-pixbuf-2.0-dev
libxcb-keysyms1-dev
libwayland-client0
libxcb-ewmh-dev
libxcb-cursor-dev
libxcb-icccm4-dev
libxcb-randr0-dev
libxcb-render-util0-dev
libxcb-util-dev
libxcb-xkb-dev
libxcb-xinerama0-dev
libxkbcommon-dev
libxkbcommon-x11-dev
ohcount
wget
) )
# variables
rofi_tag="1.7.9+wayland1"
release_url="https://github.com/lbonn/rofi/releases/download/1.7.9%2Bwayland1/rofi-1.7.9+wayland1.tar.gz"
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_rofi_wayland.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_rofi_wayland.log"
MLOG="install-$(date +%d-%H%M%S)_rofi_wayland2.log" MLOG="install-$(date +%d-%H%M%S)_rofi_wayland2.log"
# uninstall other rofi
for PKG in "rofi" "bison"; 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
sleep 1
printf "\n"
# Installation of main components # Installation of main components
printf "\n%s - Installing rofi-wayland dependencies.... \n" "${NOTE}" printf "\n%s - Re-installing ${SKY_BLUE}rofi-wayland dependencies${RESET}.... \n" "${INFO}"
printf "${NOTE} Force installing packages...\n"
for FORCE in "${rofi[@]}"; do for FORCE in "${rofi[@]}"; do
sudo apt-get --reinstall install -y "$FORCE" 2>&1 | tee -a "$LOG" re_install_package "$FORCE" "$LOG"
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $FORCE install had failed, please check the install.log"; exit 1; }
done done
printf "\n\n" printf "\n%.0s" {1..2}
# Clone and build rofi - wayland # Clone and build rofi - wayland
printf "${NOTE} Installing rofi-wayland...\n" printf "${NOTE} Building and Installing ${SKY_BLUE}rofi-wayland${RESET} $rofi_tag ...\n"
printf "${NOTE} Installing rofi-wayland\n" # Check if rofi directory exists
if [ -d "rofi-$rofi_tag" ]; then
rm -rf "rofi-$rofi_tag"
fi
# Check if rofi folder exists # cloning rofi-wayland
if [ -d "rofi" ]; then printf "${NOTE} Downloading ${YELLOW}rofi-wayland $rofi_tag${RESET} from releases...\n"
printf "${NOTE} rofi folder exists. Pulling latest changes...\n" wget $release_url
cd rofi || exit 1
git pull origin master 2>&1 | tee -a "$MLOG" if [ -f "rofi-$rofi_tag.tar.gz" ]; then
else printf "${OK} ${YELLOW}rofi-wayland $rofi_tag${RESET} downloaded successfully.\n" 2>&1 | tee -a "$LOG"
printf "${NOTE} Cloning rofi repository...\n" tar xf rofi-$rofi_tag.tar.gz
if git clone https://github.com/lbonn/rofi.git; then
cd rofi || exit 1
else
echo -e "${ERROR} Download failed for rofi-wayland." 2>&1 | tee -a "$LOG"
exit 1
fi
fi fi
cd rofi-$rofi_tag || exit 1
# Proceed with the installation steps # Proceed with the installation steps
if meson setup build && ninja -C build ; then if meson setup build && ninja -C build ; then
if sudo ninja -C build install 2>&1 | tee -a "$MLOG"; then if sudo ninja -C build install 2>&1 | tee -a "$MLOG"; then
printf "${OK} rofi-wayland installed successfully.\n" 2>&1 | tee -a "$MLOG" printf "${OK} rofi-wayland installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for rofi-wayland." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
else else
echo -e "${ERROR} Meson setup or ninja build failed for rofi-wayland." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Meson setup or ninja build failed for ${YELLOW}rofi-wayland $rofi_tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
# Move logs to Install-Logs directory # Move logs to Install-Logs directory
mv "$MLOG" ../Install-Logs/ || true mv "$MLOG" ../Install-Logs/ || true
cd .. || exit 1 cd .. || exit 1
clear # clean up
rm -rf rofi-$rofi_tag.tar.gz
printf "\n%.0s" {1..2}

View File

@ -2,19 +2,38 @@
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# ASUS ROG ) # # ASUS ROG ) #
asus=(
power-profiles-daemon
)
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="install-$(date +%d-%H%M%S)_rog.log" LOG="install-$(date +%d-%H%M%S)_rog.log"
# Installing enhancemet
for PKG1 in "${asus[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\033[1A\033[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1
fi
done
printf " enabling power-profiles-daemon...\n"
sudo systemctl enable power-profiles-daemon 2>&1 | tee -a "$LOG"
# Function to handle the installation and log messages # Function to handle the installation and log messages
install_and_log() { install_and_log() {
local project_name="$1" local project_name="$1"
@ -52,4 +71,4 @@ install_and_log "asusctl" "https://gitlab.com/asus-linux/asusctl.git"
# Download and build supergfxctl # Download and build supergfxctl
install_and_log "supergfxctl" "https://gitlab.com/asus-linux/supergfxctl.git" install_and_log "supergfxctl" "https://gitlab.com/asus-linux/supergfxctl.git"
clear printf "\n%.0s" {1..2}

View File

@ -8,109 +8,77 @@ sddm1=(
) )
sddm2=( sddm2=(
qml-module-qtgraphicaleffects libqt6svg6
qml-module-qtquick-controls qt6-declarative-dev
qml-module-qtquick-controls2 qt6-svg-dev
qml-module-qtquick-extras qt6-virtualkeyboard-plugin
qml-module-qtquick-layouts libqt6multimedia6
qml6-module-qtquick-controls
qml6-module-qtquick-effects
)
# login managers to attempt to disable
login=(
lightdm
gdm3
gdm
lxdm
lxdm-gtk3
) )
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log"
# Install SDDM (no-recommends) # Install SDDM (no-recommends)
printf "\n%s - Installing sddm.... \n" "${NOTE}" printf "\n%s - Installing ${SKY_BLUE}SDDM and dependencies${RESET} .... \n" "${NOTE}"
for PKG1 in "${sddm1[@]}" ; do for PKG1 in "${sddm1[@]}" ; do
sudo apt-get install --no-install-recommends -y "$PKG1" 2>&1 | tee -a "$LOG" sudo apt install --no-install-recommends -y "$PKG1" | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1
fi
done done
# Installation of additional sddm stuff # Installation of additional sddm stuff
printf "\n%s - Installing sddm additional stuff.... \n" "${NOTE}"
for PKG2 in "${sddm2[@]}"; do for PKG2 in "${sddm2[@]}"; do
install_package "$PKG2" 2>&1 | tee -a "$LOG" install_package "$PKG2" "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG2 install had failed, please check the install.log"
exit 1
fi
done done
# Check if other login managers are installed and disabling their service before enabling sddm # Check if other login managers are installed and disable their service before enabling SDDM
for login_manager in lightdm gdm lxdm lxdm-gtk3; do for login_manager in "${login[@]}"; do
if sudo apt-get list installed "$login_manager" &>> /dev/null; then if dpkg -l | grep -q "^ii $login_manager"; then
echo "Disabling $login_manager..." echo "Disabling $login_manager..."
sudo systemctl disable "$login_manager" 2>&1 | tee -a "$LOG" sudo systemctl disable "$login_manager.service" >> "$LOG" 2>&1 || echo "Failed to disable $login_manager" >> "$LOG"
echo "$login_manager disabled."
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.service" > /dev/null 2>&1; then
echo "$manager.service is active, disabling it..." >> "$LOG" 2>&1
sudo systemctl disable "$manager.service" --now >> "$LOG" 2>&1 || echo "Failed to disable $manager.service" >> "$LOG"
else
echo "$manager.service is not active" >> "$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 set-default graphical.target 2>&1 | tee -a "$LOG"
[ ! -d "$sddm_conf_dir" ] && { printf "$CAT - $sddm_conf_dir not found, creating...\n"; sudo mkdir -p "$sddm_conf_dir" 2>&1 | tee -a "$LOG"; } sudo systemctl enable sddm.service 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 -p "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; } [ ! -d "$wayland_sessions_dir" ] && { printf "$CAT - $wayland_sessions_dir not found, creating...\n"; sudo mkdir -p "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; }
sudo cp assets/hyprland.desktop "$wayland_sessions_dir/" 2>&1 | tee -a "$LOG"
# SDDM-themes printf "\n%.0s" {1..2}
valid_input=false
while [ "$valid_input" != true ]; do
read -n 1 -r -p "${CAT} OPTIONAL - Would you like to install SDDM themes? (y/n)" install_sddm_theme
if [[ $install_sddm_theme =~ ^[Yy]$ ]]; then
printf "\n%s - Installing Simple SDDM Theme\n" "${NOTE}"
# Check if /usr/share/sddm/themes/simple-sddm exists and remove if it does
if [ -d "/usr/share/sddm/themes/simple-sddm" ]; then
sudo rm -rf "/usr/share/sddm/themes/simple-sddm"
echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory." 2>&1 | tee -a "$LOG"
fi
# Check if simple-sddm directory exists in the current directory and remove if it does
if [ -d "simple-sddm" ]; then
rm -rf "simple-sddm"
echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm' directory from the current location." 2>&1 | tee -a "$LOG"
fi
if git clone https://github.com/JaKooLit/simple-sddm.git; then
while [ ! -d "simple-sddm" ]; do
sleep 1
done
if [ ! -d "/usr/share/sddm/themes" ]; then
sudo mkdir -p /usr/share/sddm/themes
echo -e "\e[1A\e[K${OK} - Directory '/usr/share/sddm/themes' created." 2>&1 | tee -a "$LOG"
fi
sudo mv simple-sddm /usr/share/sddm/themes/
echo -e "[Theme]\nCurrent=simple-sddm" | sudo tee "$sddm_conf_dir/10-theme.conf" &>> "$LOG"
else
echo -e "\e[1A\e[K${ERROR} - Failed to clone the theme repository. Please check your internet connection or repository availability." | tee -a "$LOG" >&2
fi
valid_input=true
elif [[ $install_sddm_theme =~ ^[Nn]$ ]]; then
printf "\n%s - No SDDM themes will be installed.\n" "${NOTE}" 2>&1 | tee -a "$LOG"
valid_input=true
else
printf "\n%s - Invalid input. Please enter 'y' for Yes or 'n' for No.\n" "${ERROR}" 2>&1 | tee -a "$LOG"
install_sddm_theme=""
fi
done
clear

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

@ -0,0 +1,132 @@
#!/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"
printf "\n%.0s" {1..1}
printf "${NOTE} copying ${YELLOW}JetBrains Mono Nerd Font${RESET} to ${YELLOW}/usr/local/share/fonts${RESET} .......\n"
printf "${NOTE} necessary for the new SDDM theme to work properly........\n"
sudo mkdir -p /usr/local/share/fonts/JetBrainsMonoNerd && \
sudo cp -r "$HOME/.local/share/fonts/JetBrainsMonoNerd" /usr/local/share/fonts/JetBrainsMonoNerd
if [ $? -eq 0 ]; then
echo "Fonts copied successfully."
else
echo "Failed to copy fonts."
fi
# Update font cache and log the output
fc-cache -v -f 2>&1 | tee -a "$LOG"
printf "\n%.0s" {1..1}
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

@ -1,45 +0,0 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# swappy - for screenshot) #
## 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)_swappy2.log"
MLOG="install-$(date +%d-%H%M%S)_swappy.log"
printf "${NOTE} Installing swappy..\n"
# Check if swappy folder exists
if [ -d "swappy" ]; then
printf "${NOTE} swappy folder exists. Pulling latest changes...\n"
cd swappy || exit 1
git pull origin master 2>&1 | tee -a "$MLOG"
else
printf "${NOTE} Cloning swappy repository...\n"
if git clone https://github.com/jtheoof/swappy.git; then
cd swappy || exit 1
else
echo -e "${ERROR} Download failed for swappy" 2>&1 | tee -a "$LOG"
exit 1
fi
fi
# Proceed with the installation steps
meson build
ninja -C build
sudo ninja -C build install 2>&1 | tee -a "$MLOG"
# Moving logs into main Install-Logs
mv "$MLOG" ../Install-Logs/ || true
cd - || exit 1
clear

View File

@ -2,61 +2,66 @@
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# SWWW - Wallpaper Utility # # SWWW - Wallpaper Utility #
# specific branch or release
swww_tag="v0.11.2"
# Check if 'swww' is installed
if command -v swww &>/dev/null; then
SWWW_VERSION=$(swww -V | awk '{print $NF}')
if [[ "$SWWW_VERSION" == "$swww_tag" ]]; then
echo -e "${OK} ${MAGENTA}swww ${swww_tag}${RESET} is already installed. Skipping installation."
exit 0
fi
else
echo -e "${NOTE} ${MAGENTA}swww${RESET} is not installed. Proceeding with installation."
fi
swww=( swww=(
cargo
liblz4-dev liblz4-dev
) )
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || {
echo "${ERROR} Failed to change directory to $PARENT_DIR"
exit 1
}
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
# Set the name of the log file to include the current date and time echo "Failed to source Global_functions.sh"
LOG="Install-Logs/install-$(date +%d-%H%M%S)_swww2.log"
MLOG="install-$(date +%d-%H%M%S)_swww.log"
# Installation of swww compilation needed
printf "\n%s - Installing swww dependencies.... \n" "${NOTE}"
for PKG1 in "${swww[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 install had failed, please check the install.log"
exit 1 exit 1
fi fi
# Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_swww.log"
MLOG="install-$(date +%d-%H%M%S)_swww2.log"
# Installation of swww compilation needed
printf "\n%s - Installing ${SKY_BLUE}swww $swww_tag and dependencies${RESET} .... \n" "${NOTE}"
for PKG1 in "${swww[@]}"; do
install_package "$PKG1" "$LOG"
done done
printf "${NOTE} Installing swww\n" printf "\n%.0s" {1..2}
# Check if swww folder exists # Check if swww directory exists
if [ -d "swww" ]; then if [ -d "swww" ]; then
printf "${NOTE} swww folder exists. Pulling latest changes...\n"
cd swww || exit 1 cd swww || exit 1
git pull origin main 2>&1 | tee -a "$MLOG" git pull origin main 2>&1 | tee -a "$MLOG"
else else
printf "${NOTE} Cloning swww repository...\n" if git clone --recursive -b $swww_tag https://github.com/LGFae/swww.git; then
if git clone https://github.com/Horus645/swww.git; then
cd swww || exit 1 cd swww || exit 1
else else
echo -e "${ERROR} Download failed for swww" 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}swww $swww_tag${RESET}" 2>&1 | tee -a "$LOG"
exit 1 exit 1
fi fi
fi fi
# install new rust
# Define environment variables for non-interactive installation
export RUSTUP_INIT_SKIP_PATH_CHECK=yes
export RUSTUP_INIT_SKIP_CONFIRMATION=yes
# Download and execute the Rust installer script, automatically answering "yes" to all prompts
curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh -s -- -y --no-modify-path 2>&1 | tee -a "$LOG" || true
# Proceed with the rest of the installation steps # Proceed with the rest of the installation steps
source "$HOME/.cargo/env" || true source "$HOME/.cargo/env" || true
@ -92,4 +97,4 @@ sudo cp -r completions/_swww /usr/share/zsh/site-functions/_swww 2>&1 | tee -a "
mv "$MLOG" ../Install-Logs/ || true mv "$MLOG" ../Install-Logs/ || true
cd - || exit 1 cd - || exit 1
clear printf "\n%.0s" {1..2}

View File

@ -4,7 +4,6 @@
thunar=( thunar=(
ffmpegthumbnailer ffmpegthumbnailer
file-roller
thunar thunar
thunar-volman thunar-volman
tumbler tumbler
@ -13,33 +12,38 @@ 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 "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar.log"
printf "${NOTE} Installing Thunar Packages...\n" # Thunar
printf "${NOTE} Installing ${SKY_BLUE}Thunar${RESET} Packages...\n\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,28 @@
#!/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}

63
install-scripts/wallust.sh Executable file
View File

@ -0,0 +1,63 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# wallust - pywal colors replacement #
wallust=(
wallust
)
## 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)_wallust.log"
# Create log directory if it doesn't exist
mkdir -p "$(dirname "$LOG")"
# Install up-to-date Rust
echo "${INFO} Installing most ${YELLOW}up to date Rust compiler${RESET} ..."
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y 2>&1 | tee -a "$LOG"
source "$HOME/.cargo/env"
printf "\n%.0s" {1..2}
# Remove any existing Wallust binary
if [[ -f "/usr/local/bin/wallust" ]]; then
echo "Removing existing Wallust binary..." 2>&1 | tee -a "$LOG"
sudo rm "/usr/local/bin/wallust"
fi
printf "\n%.0s" {1..2}
# Install Wallust using Cargo
for WALL in "${wallust[@]}"; do
cargo_install "$WALL" "$LOG"
if [ $? -eq 0 ]; then
echo "${OK} ${MAGENTA}Wallust${RESET} installed successfully." | tee -a "$LOG"
else
echo "${ERROR} Installation of ${MAGENTA}$WALL${RESET} failed. Check the log file $LOG for details." | tee -a "$LOG"
exit 1
fi
done
printf "\n%.0s" {1..1}
# Move the newly compiled binary to /usr/local/bin
echo "Moving Wallust binary to /usr/local/bin..." | tee -a "$LOG"
if sudo mv "$HOME/.cargo/bin/wallust" /usr/local/bin 2>&1 | tee -a "$LOG"; then
echo "${OK} Wallust binary moved successfully to /usr/local/bin." | tee -a "$LOG"
else
echo "${ERROR} Failed to move Wallust binary. Check the log file $LOG for details." | tee -a "$LOG"
exit 1
fi
printf "\n%.0s" {1..2}

View File

@ -0,0 +1,83 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Build and install wayland-protocols from source
# Provides a newer wayland-protocols.pc for pkg-config when distro version is too old
#specific tag or release (e.g., 1.45, 1.46)
tag="1.45"
# Allow environment override
if [ -n "${WAYLAND_PROTOCOLS_TAG:-}" ]; then tag="$WAYLAND_PROTOCOLS_TAG"; fi
# Dry-run support
DO_INSTALL=1
if [ "$1" = "--dry-run" ] || [ "${DRY_RUN}" = "1" ] || [ "${DRY_RUN}" = "true" ]; then
DO_INSTALL=0
echo "${NOTE} DRY RUN: install step will be skipped."
fi
## 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)_wayland-protocols.log"
MLOG="install-$(date +%d-%H%M%S)_wayland-protocols2.log"
printf "\n%s - Installing ${YELLOW}wayland-protocols (from source)${RESET} .... \n" "${INFO}"
# Clean previous clone
if [ -d "wayland-protocols" ]; then
rm -rf "wayland-protocols"
fi
# Clone and build (meson)
# Upstream: https://gitlab.freedesktop.org/wayland/wayland-protocols.git
printf "${INFO} Installing ${YELLOW}wayland-protocols $tag${RESET} ...\n"
repo_url="https://gitlab.freedesktop.org/wayland/wayland-protocols.git"
if git clone --depth=1 --filter=blob:none "$repo_url" wayland-protocols; then
cd wayland-protocols || exit 1
# Fetch tags and attempt to checkout the requested tag, trying both raw and v-prefixed
git fetch --tags --depth=1 >/dev/null 2>&1 || true
checked_out=0
for candidate in "$tag" "v$tag"; do
if git rev-parse -q --verify "refs/tags/$candidate" >/dev/null; then
git checkout -q "refs/tags/$candidate"
checked_out=1
break
fi
done
if [ "$checked_out" -ne 1 ]; then
echo "${ERROR} Tag $tag not found in $repo_url" | tee -a "$LOG"
echo "${NOTE} Available tags (truncated):" | tee -a "$LOG"
git tag --list | tail -n 20 | tee -a "$LOG" || true
exit 1
fi
# Install to /usr/local so pkg-config can prefer it over distro /usr
meson setup build --prefix=/usr/local
meson compile -C build -j"$(nproc 2>/dev/null || getconf _NPROCESSORS_CONF)"
if [ $DO_INSTALL -eq 1 ]; then
if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} ${MAGENTA}wayland-protocols $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi
else
echo "${NOTE} DRY RUN: Skipping installation of wayland-protocols $tag."
fi
# Move additional logs to Install-Logs directory if they exist
[ -f "$MLOG" ] && mv "$MLOG" ../Install-Logs/ || true
cd ..
else
echo -e "${ERROR} Download failed for ${YELLOW}wayland-protocols $tag${RESET}" 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -1,91 +1,71 @@
#!/bin/bash #!/bin/bash
# 💫 https://github.com/JaKooLit 💫 # # 💫 https://github.com/JaKooLit 💫 #
# XDG-Desktop-Portals # # XDG-Desktop-Portals for hyprland #
xdg=( xdg=(
libdrm-dev
libpipewire-0.3-dev
libspa-0.2-dev
libsdbus-c++-dev
libwayland-client0
wayland-protocols
xdg-desktop-portal-gtk xdg-desktop-portal-gtk
) )
#specific branch or release
tag="v1.3.10"
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log"
MLOG="install-$(date +%d-%H%M%S)_xdph2.log"
## # Check if the file exists and remove it
printf "${NOTE} Installing xdg-desktop-portal-gtk...\n" [[ -f "/usr/lib/xdg-desktop-portal-hyprland" ]] && sudo rm "/usr/lib/xdg-desktop-portal-hyprland"
for portal in "${xdg[@]}"; do
install_package "$portal" 2>&1 | tee -a "$LOG" # XDG-DESKTOP-PORTAL-HYPRLAND
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $portal install had failed, please check the install.log"; exit 1; } printf "${NOTE} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland dependencies${RESET}\n\n"
for PKG1 in "${xdg[@]}"; do
re_install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1
fi
done done
# Clone, build, and install XDPH
printf "${NOTE} Cloning and Installing ${YELLOW}XDG Desktop Portal Hyprland $tag${RESET} ...\n"
# Check if xdg-desktop-portal-hyprland folder exists and remove it # Check if xdg-desktop-portal-hyprland folder exists and remove it
if [ -d "xdg-desktop-portal-hyprland" ]; then if [ -d "xdg-desktop-portal-hyprland" ]; then
printf "${NOTE} Removing existing xdg-desktop-portal-hyprland folder...\n" printf "${NOTE} Removing existing xdg-desktop-portal-hyprland folder...\n"
rm -rf "xdg-desktop-portal-hyprland" rm -rf "xdg-desktop-portal-hyprland" 2>&1 | tee -a "$LOG"
fi fi
# Clone and build xdg-desktop-portal-hyprland if git clone --recursive -b $tag "https://github.com/hyprwm/xdg-desktop-portal-hyprland.git"; then
printf "${NOTE} Installing xdg-desktop-portal-hyprland...\n" cd "xdg-desktop-portal-hyprland" || exit 1
if git clone --branch v1.3.0 --recursive https://github.com/hyprwm/xdg-desktop-portal-hyprland; then cmake -DCMAKE_INSTALL_LIBEXECDIR=/usr/lib -DCMAKE_INSTALL_PREFIX=/usr -B build
cd xdg-desktop-portal-hyprland || exit 1 cmake --build build
make all if sudo cmake --install build 2>&1 | tee -a "$MLOG"; then
if sudo make install 2>&1 | tee -a "$MLOG" ; then printf "${OK} ${MAGENTA}xdph $tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
printf "${OK} xdg-desktop-portal-hyprland installed successfully.\n" 2>&1 | tee -a "$MLOG"
else else
echo -e "${ERROR} Installation failed for xdg-desktop-portal-hyprland." 2>&1 | tee -a "$MLOG" echo -e "${ERROR} Installation failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$MLOG"
fi fi
#moving the addional logs to Install-Logs directory
mv $MLOG ../Install-Logs/ || true mv $MLOG ../Install-Logs/ || true
cd .. cd ..
else else
echo -e "${ERROR} Download failed for xdg-desktop-portal-hyprland." 2>&1 | tee -a "$LOG" echo -e "${ERROR} Download failed for ${YELLOW}xdph $tag${RESET}" 2>&1 | tee -a "$LOG"
fi fi
printf "\n\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
read -rp "${CAT} Would you like to try to remove other XDG-Desktop-Portal-Implementations? (y/n) " XDPH1
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 sudo apt-get list installed xdg-desktop-portal-wlr &>> /dev/null; then
echo "Removing xdg-desktop-portal-wlr..."
sudo apt-get remove -y xdg-desktop-portal-wlr 2>&1 | tee -a "$LOG"
fi
if sudo apt-get list installed xdg-desktop-portal-lxqt &>> /dev/null; then
echo "Removing xdg-desktop-portal-lxqt..."
sudo apt-get remove -y xdg-desktop-portal-lxqt 2>&1 | tee -a "$LOG"
fi
break
;;
[Nn])
echo "no other XDG-implementations will be removed." 2>&1 | tee -a "$LOG"
break
;;
*)
echo "Invalid input. Please enter 'y' for yes or 'n' for no."
;;
esac
done
clear

69
install-scripts/xkbcommon.sh Executable file
View File

@ -0,0 +1,69 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# Hypr Ecosystem #
# xkbcommon #
xkbcommon=(
bison
libzip-dev
librsvg2-dev
)
#specific branch or release
tag="xkbcommon-1.13.1"
## 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)_xkbcommon.log"
MLOG="install-$(date +%d-%H%M%S)_xkbcommon.log"
# Installation of dependencies
printf "\n%s - Installing xkbcommon dependencies.... \n" "${NOTE}"
for PKG1 in "${xkbcommon[@]}"; do
install_package "$PKG1" 2>&1 | tee -a "$LOG"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $PKG1 Package installation failed, Please check the installation logs"
exit 1
fi
done
# Check if xkbcommon folder exists and remove it
if [ -d "libxkbcommon" ]; then
printf "${NOTE} Removing existing libxkbcommon folder...\n"
rm -rf "libxkbcommon"
fi
# Clone and build
printf "${NOTE} Installing xkbcommon...\n"
if git clone --recursive -b $tag https://github.com/xkbcommon/libxkbcommon.git; then
cd libxkbcommon || exit 1
meson setup build --libdir=/usr/local/lib
meson compile -C build
if sudo meson install -C build 2>&1 | tee -a "$MLOG" ; then
printf "${OK} xkbcommon installed successfully.\n" 2>&1 | tee -a "$MLOG"
else
echo -e "${ERROR} Installation failed for xkbcommon." 2>&1 | tee -a "$MLOG"
fi
#moving the addional logs to Install-Logs directory
mv $MLOG ../Install-Logs/ || true
cd ..
else
echo -e "${ERROR} Download failed for xkbcommon." 2>&1 | tee -a "$LOG"
fi
printf "\n%.0s" {1..2}

View File

@ -3,18 +3,24 @@
# Zsh and Oh my Zsh + Optional Pokemon ColorScripts# # Zsh and Oh my Zsh + Optional Pokemon ColorScripts#
zsh=( zsh=(
lsd
zsh zsh
mercurial
zplug
) )
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ## ## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
# Determine the directory where the script is located
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
# Change the working directory to the parent directory of the script # Change the working directory to the parent directory of the script
PARENT_DIR="$SCRIPT_DIR/.." PARENT_DIR="$SCRIPT_DIR/.."
cd "$PARENT_DIR" || exit 1 cd "$PARENT_DIR" || { echo "${ERROR} Failed to change directory to $PARENT_DIR"; exit 1; }
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh" # Source the global functions script
if ! source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"; then
echo "Failed to source Global_functions.sh"
exit 1
fi
# Set the name of the log file to include the current date and time # Set the name of the log file to include the current date and time
LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh.log" LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh.log"
@ -29,60 +35,31 @@ done
# Installing zsh packages # Installing zsh packages
printf "${NOTE} Installing core zsh packages...${RESET}\n" printf "${NOTE} Installing core zsh packages...${RESET}\n"
for ZSHP in "${zsh[@]}"; do for ZSHP in "${zsh[@]}"; do
install_package "$ZSHP" 2>&1 | tee -a "$LOG" install_package "$ZSHP"
if [ $? -ne 0 ]; then
echo -e "\e[1A\e[K${ERROR} - $ZSHP install had failed, please check the install.log"
fi
done done
printf "\n" printf "\n%.0s" {1..1}
## Optional Pokemon color scripts
while true; do
read -p "${CAT} Do you want to install Pokemon color scripts? (y/n): " choice
case "$choice" in
[Yy]*)
if [ -d "pokemon-colorscripts" ]; then
cd pokemon-colorscripts && git pull && sudo ./install.sh && cd ..
else
git clone https://gitlab.com/phoneybadger/pokemon-colorscripts.git &&
cd pokemon-colorscripts && sudo ./install.sh && cd ..
fi
sed -i '/#pokemon-colorscripts --no-title -s -r/s/^#//' assets/.zshrc >> "$LOG" 2>&1
echo "${NOTE} Pokemon Installation process completed" 2>&1 | tee -a "$LOG"
break
;;
[Nn]*)
echo "${ORANGE} You chose not to install Pokemon Color Scripts." 2>&1 | tee -a "$LOG"
break
;;
*)
echo "Please enter 'y' for yes or 'n' for no." 2>&1 | tee -a "$LOG"
;;
esac
done
printf "\n"
# 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
@ -94,18 +71,32 @@ if command -v zsh >/dev/null; then
cp -b "$HOME/.zprofile" "$HOME/.zprofile-backup" || true cp -b "$HOME/.zprofile" "$HOME/.zprofile-backup" || true
fi fi
# Copying the preconfigured zsh themes and profile
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
echo "${ERROR} Authentication failed. Please enter the correct password." while ! chsh -s "$(command -v zsh)"; do
echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG"
sleep 1 sleep 1
done done
printf "\n"
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 # 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}

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

@ -0,0 +1,38 @@
#!/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 "${INFO} Installing ${SKY_BLUE}Pokemon color scripts${RESET} ..."
if [ -d "pokemon-colorscripts" ]; then
cd pokemon-colorscripts && git pull && sudo ./install.sh && cd ..
else
git clone --depth=1 https://gitlab.com/phoneybadger/pokemon-colorscripts.git &&
cd pokemon-colorscripts && sudo ./install.sh && cd ..
fi
# 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,115 +1,152 @@
#!/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)"
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)"
# Function to print colorful text
print_color() {
printf "%b%s%b\n" "$1" "$2" "$RESET"
}
# Warning: End of Life Support
printf "\n%.0s" {1..2}
print_color $YELLOW "
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
KooL's Debian - Hyprland October 2025 Update
Most Hyprland packages are built from Source
NOTICE
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
All Hyprland and associated packages set to install using this script are downloaded and built from source (github)
However, do note that it is downloaded from each individual releases. You can set versions by editing the scripts
located install-scripts directory.
These packages are NOT updated automatically.
See the HOWTO documentation on how to get next release of Hyprland installed
BE WARNED!!!!! Installation will take longer!!
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
NOTE:
Hyprland and Dependencies versions
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
Thank you!
"
printf "\n%.0s" {1..2} printf "\n%.0s" {1..2}
# Welcome message # Prompt user to continue or exit
echo "$(tput setaf 6)Welcome to JaKooLit's Debian / Ubuntu Hyprland Install Script!$(tput sgr0)" read -rp "Do you want to continue with the installation? [y/N]: " confirm
echo case "$confirm" in
echo "$(tput setaf 166)ATTENTION: Run a full system update and Reboot first!! (Highly Recommended) $(tput sgr0)" [yY][eE][sS] | [yY])
echo echo -e "${OK} Continuing with installation..."
echo "$(tput setaf 3)NOTE: You will be required to answer some questions during the installation! $(tput sgr0)" ;;
echo *)
echo "$(tput setaf 3)NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland wont start! $(tput sgr0)" echo -e "${NOTE} You chose not to continue. Exiting..."
echo
read -p "$(tput setaf 6)Would you like to proceed? (y/n): $(tput sgr0)" proceed
if [ "$proceed" != "y" ]; then
echo "Installation aborted."
exit 1 exit 1
fi ;;
esac
read -p "$(tput setaf 6)Have you edited your /etc/apt/sources.list? (y/n): $(tput sgr0)" proceed2
if [ "$proceed2" != "y" ]; then
echo "Installation aborted Kindly edit your sources.list first. Refer to readme."
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
# Set some colors for output messages # Set the name of the log file to include the current date and time
OK="$(tput setaf 2)[OK]$(tput sgr0)" LOG="Install-Logs/01-Hyprland-Install-Scripts-$(date +%d-%H%M%S).log"
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
WARN="$(tput setaf 166)[WARN]$(tput sgr0)"
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
ORANGE=$(tput setaf 166)
YELLOW=$(tput setaf 3)
RESET=$(tput sgr0)
# Function to colorize prompts # Check if running as root. If root, script will exit
colorize_prompt() { if [[ $EUID -eq 0 ]]; then
local color="$1" echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......." | tee -a "$LOG"
local message="$2" printf "\n%.0s" {1..2}
echo -n "${color}${message}$(tput sgr0)" exit 1
fi
# Function to check if the system is Ubuntu
is_ubuntu() {
# Check for 'Ubuntu' in /etc/os-release
if grep -q 'Ubuntu' /etc/os-release; then
return 0
fi
return 1
} }
# Set the name of the log file to include the current date and time # Check if the system is Ubuntu
LOG="install-$(date +%d-%H%M%S).log" if is_ubuntu; then
echo "${WARN}This script is ${WARNING}NOT intended for Ubuntu / Ubuntu Based${RESET}. Refer to ${YELLOW}README for the correct link for Ubuntu-Hyprland project${RESET}" | tee -a "$LOG"
exit 1
fi
# Initialize variables to store user responses # install whiptails if detected not installed. Necessary for this version
bluetooth="" if ! command -v whiptail >/dev/null; then
dots="" echo "${NOTE} - whiptail is not installed. Installing..." | tee -a "$LOG"
gtk_themes="" sudo apt install -y whiptail
nvidia="" printf "\n%.0s" {1..1}
nwg="" fi
rog=""
sddm=""
thunar=""
xdph=""
zsh=""
# Export PKG_CONFIG_PATH for libinput printf "\n%.0s" {1..2}
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig echo -e "\e[35m
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ July 2025
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Debian Trixie / SiD
\e[0m"
printf "\n%.0s" {1..1}
# Define the directory where your scripts are located # Welcome message using whiptail (for displaying information)
whiptail --title "KooL Debian-Hyprland Trixie+ (2025) Install Script" \
--msgbox "Welcome to KooL Debian-Hyprland Trixie+ (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 otherwise Hyprland may NOT start!" \
15 80
# Ask if the user wants to proceed
if ! whiptail --title "Proceed with Installation?" \
--yesno "VERY IMPORTANT!!!\n\nYou must be able to install from source by uncommenting deb-src on /etc/apt/sources.list else script may fail to install Hyprland.\n\n\nShall we proceed?" 15 60; 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 ! dpkg -l | grep -w pciutils >/dev/null; then
echo "pciutils is not installed. Installing..." | tee -a "$LOG"
sudo apt install -y 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() {
while true; do
read -p "$(colorize_prompt "$CAT" "$1 (y/n): ")" choice
case "$choice" in
[Yy]* ) eval "$2='Y'"; return 0;;
[Nn]* ) eval "$2='N'"; return 1;;
* ) echo "Please answer with y or n.";;
esac
done
}
# Function to ask a custom question with specific options and set the response in a variable
ask_custom_option() {
local prompt="$1"
local valid_options="$2"
local response_var="$3"
while true; do
read -p "$(colorize_prompt "$CAT" "$prompt ($valid_options): ")" choice
if [[ " $valid_options " == *" $choice "* ]]; then
eval "$response_var='$choice'"
return 0
else
echo "Please choose one of the provided options: $valid_options"
fi
done
}
# Function to execute a script if it exists and make it executable # Function to execute a script if it exists and make it executable
execute_script() { execute_script() {
local script="$1" local script="$1"
@ -117,129 +154,419 @@ 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
"$script_path" env "$script_path"
else else
echo "Failed to make script '$script' executable." echo "Failed to make script '$script' executable." | tee -a "$LOG"
fi fi
else else
echo "Script '$script' not found in '$script_directory'." echo "Script '$script' not found in '$script_directory'." | tee -a "$LOG"
fi fi
} }
# Collect user responses to all questions # Load centralized Hyprland stack tags if present and export for child scripts
printf "\n" if [ -f "./hypr-tags.env" ]; then
ask_yes_no "-Do you have any nvidia gpu in your system?" nvidia # shellcheck disable=SC1091
printf "\n" source "./hypr-tags.env"
ask_yes_no "-Install GTK themes (required for Dark/Light function)?" gtk_themes # If core tags are set to auto/latest, refresh to resolve concrete versions
printf "\n" if [ "${HYPRUTILS_TAG:-}" = "auto" ] || [ "${HYPRUTILS_TAG:-}" = "latest" ] || [ -z "${HYPRUTILS_TAG:-}" ] ||
ask_yes_no "-Do you want to configure Bluetooth?" bluetooth [ "${HYPRLANG_TAG:-}" = "auto" ] || [ "${HYPRLANG_TAG:-}" = "latest" ] || [ -z "${HYPRLANG_TAG:-}" ]; then
printf "\n" if [ -f ./refresh-hypr-tags.sh ]; then
ask_yes_no "-Do you want to install Thunar file manager?" thunar chmod +x ./refresh-hypr-tags.sh || true
printf "\n" ./refresh-hypr-tags.sh
ask_yes_no "-Install & configure SDDM log-in Manager plus (OPTIONAL) SDDM Theme?" sddm # reload after refresh
printf "\n" # shellcheck disable=SC1091
ask_yes_no "-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)" xdph source "./hypr-tags.env"
printf "\n" fi
ask_yes_no "-Install zsh & oh-my-zsh plus (OPTIONAL) pokemon-colorscripts for tty?" zsh fi
printf "\n" export HYPRLAND_TAG AQUAMARINE_TAG HYPRUTILS_TAG HYPRLANG_TAG HYPRGRAPHICS_TAG HYPRWAYLAND_SCANNER_TAG HYPRLAND_PROTOCOLS_TAG HYPRLAND_QT_SUPPORT_TAG HYPRLAND_QTUTILS_TAG WAYLAND_PROTOCOLS_TAG
ask_yes_no "-Install nwg-look? (a GTK Theming app - lxappearance-like) WARN! This Package Takes long time to build!" nwg fi
printf "\n"
ask_yes_no "-Installing on Asus ROG Laptops?" rog
printf "\n"
ask_yes_no "-Do you want to download and install pre-configured Hyprland-dotfiles?" dots
printf "\n"
# Ensuring all in the scripts folder are made executable #################
chmod +x install-scripts/* ## Default values for the options (will be overwritten by preset file if available)
gtk_themes="OFF"
bluetooth="OFF"
thunar="OFF"
ags="OFF"
sddm="OFF"
sddm_theme="OFF"
xdph="OFF"
zsh="OFF"
pokemon="OFF"
rog="OFF"
dots="OFF"
input_group="OFF"
nvidia="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
# 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 first the active services above, and reboot before running this script\nRefer to README on switching to SDDM if you really want SDDM\n\nNOTE: Your option to install SDDM and SDDM theme has now been removed\n\n- Ja " 28 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 choose 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"
)
fi
# Check if user is already in the '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 user is not in input group
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"
"ags" "Install AGS v1 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}
echo "${INFO} Running a ${SKY_BLUE}full system update...${RESET}" | tee -a "$LOG"
sudo apt update sudo apt update
# Install hyprland packages sleep 1
# execute pre clean up
execute_script "02-pre-cleanup.sh"
echo "${INFO} Installing ${SKY_BLUE}necessary dependencies...${RESET}" | tee -a "$LOG"
sleep 1
execute_script "00-dependencies.sh" execute_script "00-dependencies.sh"
execute_script "00-hypr-pkgs.sh"
echo "${INFO} Installing ${SKY_BLUE}necessary fonts...${RESET}" | tee -a "$LOG"
sleep 1
execute_script "fonts.sh" execute_script "fonts.sh"
execute_script "swappy.sh"
execute_script "swww.sh" # Optional: refresh tags before building the Hyprland stack
execute_script "rofi-wayland.sh" # Set FETCH_LATEST=1 to opt-in (default is no-refresh to honor pinned tags)
execute_script "pywal.sh" if [ "${FETCH_LATEST:-0}" = "1" ] && [ -f ./refresh-hypr-tags.sh ]; then
execute_script "force-install.sh" chmod +x ./refresh-hypr-tags.sh || true
./refresh-hypr-tags.sh
fi
echo "${INFO} Installing ${SKY_BLUE}KooL Hyprland packages...${RESET}" | tee -a "$LOG"
sleep 1
execute_script "01-hypr-pkgs.sh"
sleep 1
execute_script "hyprutils.sh"
sleep 1
execute_script "hyprlang.sh" execute_script "hyprlang.sh"
execute_script "hyprlock.sh" sleep 1
execute_script "hyprcursor.sh" execute_script "hyprcursor.sh"
sleep 1
execute_script "hyprwayland-scanner.sh"
sleep 1
execute_script "hyprgraphics.sh"
sleep 1
execute_script "aquamarine.sh"
sleep 1
execute_script "hyprland-qt-support.sh"
sleep 1
execute_script "hyprtoolkit.sh"
sleep 1
execute_script "hyprland-guiutils.sh"
sleep 1
execute_script "hyprland-protocols.sh"
sleep 1
# Ensure wayland-protocols (from source) is installed to satisfy Hyprland's >= 1.45 requirement
execute_script "wayland-protocols-src.sh"
sleep 1
execute_script "xkbcommon.sh"
sleep 1
execute_script "hyprland.sh"
sleep 1
execute_script "hyprpolkitagent.sh"
sleep 1
execute_script "wallust.sh"
sleep 1
execute_script "swww.sh"
sleep 1
execute_script "rofi-wayland.sh"
sleep 1
execute_script "hyprlock.sh"
sleep 1
execute_script "hypridle.sh" execute_script "hypridle.sh"
#execute_script "cliphist.sh" #execute_script "imagemagick.sh" #this is for compiling from source. 07 Sep 2024
# execute_script "waybar-git.sh" only if waybar on repo is old
if [ "$nvidia" == "Y" ]; then sleep 1
execute_script "nvidia.sh" # Clean up the selected options (remove quotes and trim spaces)
fi selected_options=$(echo "$selected_options" | tr -d '"' | tr -s ' ')
if [ "$nvidia" == "N" ]; then # Convert selected options into an array (splitting by spaces)
execute_script "hyprland.sh" IFS=' ' read -r -a options <<<"$selected_options"
fi
if [ "$gtk_themes" == "Y" ]; then # Loop through selected options
execute_script "gtk_themes.sh" for option in "${options[@]}"; do
fi case "$option" in
sddm)
if [ "$bluetooth" == "Y" ]; then if check_services_running; then
execute_script "bluetooth.sh" active_list=$(printf "%s\n" "${active_services[@]}")
fi whiptail --title "Error" --msgbox "One of the following login services is running:\n$active_list\n\nPlease stop & disable it or DO not choose SDDM." 12 60
exec "$0"
if [ "$thunar" == "Y" ]; then else
execute_script "thunar.sh" echo "${INFO} Installing and configuring ${SKY_BLUE}SDDM...${RESET}" | tee -a "$LOG"
fi
if [ "$sddm" == "Y" ]; then
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 gtk_themes)
execute_script "zsh.sh" echo "${INFO} Installing ${SKY_BLUE}GTK themes...${RESET}" | tee -a "$LOG"
fi execute_script "gtk_themes.sh"
;;
if [ "$nwg" == "Y" ]; then input_group)
execute_script "nwg-look.sh" echo "${INFO} Adding user into ${SKY_BLUE}input group...${RESET}" | tee -a "$LOG"
fi
if [ "$rog" == "Y" ]; then
execute_script "rog.sh"
fi
execute_script "InputGroup.sh" execute_script "InputGroup.sh"
;;
ags)
echo "${INFO} Installing ${SKY_BLUE}AGS v1 for Desktop Overview...${RESET}" | tee -a "$LOG"
execute_script "ags.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"
;;
dots)
echo "${INFO} Installing pre-configured ${SKY_BLUE}KooL Hyprland dotfiles...${RESET}" | tee -a "$LOG"
execute_script "dotfiles-branch.sh"
;;
*)
echo "Unknown option: $option" | tee -a "$LOG"
;;
esac
done
if [ "$dots" == "Y" ]; then # Perform cleanup
execute_script "dotfiles.sh" printf "\n${OK} Performing some clean up.\n"
fi files_to_delete=("JetBrainsMono.tar.xz" "VictorMonoAll.zip" "FantasqueSansMono.zip")
for file in "${files_to_delete[@]}"; do
# Clean up if [ -e "$file" ]; then
printf "\n${OK} performing some clean up.\n" echo "$file found. Deleting..." | tee -a "$LOG"
if [ -e "JetBrainsMono.tar.xz" ]; then rm "$file"
echo "JetBrainsMono.tar.xz found. Deleting..." echo "$file deleted successfully." | tee -a "$LOG"
rm JetBrainsMono.tar.xz
echo "JetBrainsMono.tar.xz deleted successfully."
fi fi
done
clear clear
printf "\n${OK} Yey! Installation Completed.\n" # copy fastfetch config if debian is not present
printf "\n" if [ ! -f "$HOME/.config/fastfetch/debian.png" ]; then
cp -r assets/fastfetch "$HOME/.config/"
fi
printf "\n%.0s" {1..2}
# final check essential packages if it is installed
execute_script "03-Final-Check.sh"
printf "\n%.0s" {1..1}
# Check if either hyprland or Hyprland files exist in /usr/local/bin/
if [ -e /usr/local/bin/hyprland ] || [ -f /usr/local/bin/Hyprland ]; 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}

46
preset.sh Executable file
View File

@ -0,0 +1,46 @@
# 💫 https://github.com/JaKooLit 💫 #
# Define the options you want to preselect (either ON or OFF)
# IMPORTANT: answer should be inside ""
### Script will install nvidia-dkms nvidia-utils & nvidia-settings
###-Would you like script to Configure NVIDIA for you?
nvidia="OFF"
###-Install GTK themes (required for Dark/Light function)?
gtk_themes="ON"
###-Do you want to configure Bluetooth?
bluetooth="ON"
###-Do you want to install Thunar file manager?
thunar="ON"
### Adding user to the 'input' group might be necessary for waybar keyboard-state functionality
input_group="ON"
### Desktop overview Demo Link in README
### Desktop overview Demo Link in README
### Install AGS (aylur's GTK shell) v1 for Desktop-Like Overview?"
ags="ON"
###-Install & configure SDDM log-in Manager
sddm="ON"
### install and download SDDM themes
sddm_theme="ON"
###-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)
xdph="ON"
### Shell extension. Bash alternative
###-Install zsh, oh-my-zsh
zsh="ON"
### add Pokemon color scripts to terminal
pokemon="ON"
### This will install ASUSCTL & SUPERGFXCTL
###-Installing on Asus ROG Laptops?
rog="OFF"
###-Download and Add pre-configured Hyprland dotfiles?
dots="ON"

92
refresh-hypr-tags.sh Normal file
View File

@ -0,0 +1,92 @@
#!/usr/bin/env bash
# Refresh hypr-tags.env with latest release tags from upstream
# Safe to run multiple times; creates timestamped backups
set -euo pipefail
REPO_ROOT=$(pwd)
TAGS_FILE="$REPO_ROOT/hypr-tags.env"
LOG_DIR="$REPO_ROOT/Install-Logs"
mkdir -p "$LOG_DIR"
TS=$(date +%F-%H%M%S)
SUMMARY_LOG="$LOG_DIR/refresh-tags-$TS.log"
# Ensure tags file exists
if [[ ! -f "$TAGS_FILE" ]]; then
cat > "$TAGS_FILE" <<'EOF'
HYPRLAND_TAG=v0.51.1
AQUAMARINE_TAG=v0.9.3
HYPRUTILS_TAG=v0.8.2
HYPRLANG_TAG=v0.6.4
HYPRGRAPHICS_TAG=v0.1.5
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.4
WAYLAND_PROTOCOLS_TAG=1.45
EOF
fi
# Backup
cp "$TAGS_FILE" "$TAGS_FILE.bak-$TS"
echo "[INFO] Backed up $TAGS_FILE to $TAGS_FILE.bak-$TS" | tee -a "$SUMMARY_LOG"
if ! command -v curl >/dev/null 2>&1; then
echo "[ERROR] curl is required to refresh tags" | tee -a "$SUMMARY_LOG"
exit 1
fi
# Map of env var -> repo
declare -A repos=(
[HYPRLAND_TAG]="hyprwm/Hyprland"
[AQUAMARINE_TAG]="hyprwm/aquamarine"
[HYPRUTILS_TAG]="hyprwm/hyprutils"
[HYPRLANG_TAG]="hyprwm/hyprlang"
[HYPRGRAPHICS_TAG]="hyprwm/hyprgraphics"
[HYPRWAYLAND_SCANNER_TAG]="hyprwm/hyprwayland-scanner"
[HYPRLAND_PROTOCOLS_TAG]="hyprwm/hyprland-protocols"
[HYPRLAND_QT_SUPPORT_TAG]="hyprwm/hyprland-qt-support"
[HYPRLAND_QTUTILS_TAG]="hyprwm/hyprland-qtutils"
)
# Read existing
declare -A cur
while IFS='=' read -r k v; do
[[ -z "${k:-}" || "$k" =~ ^# ]] && continue
cur[$k]="$v"
edone < "$TAGS_FILE"
# Fetch latest, but only update keys set to 'auto' or 'latest' unless forced
FORCE=${FORCE:-0}
for key in "${!repos[@]}"; do
repo="${repos[$key]}"
url="https://api.github.com/repos/$repo/releases/latest"
echo "[INFO] Checking latest tag for $repo" | tee -a "$SUMMARY_LOG"
body=$(curl -fsSL "$url" || true)
[[ -z "$body" ]] && { echo "[WARN] Empty response for $repo" | tee -a "$SUMMARY_LOG"; continue; }
if command -v jq >/dev/null 2>&1; then
tag=$(printf '%s' "$body" | jq -r '.tag_name // empty')
else
tag=$(printf '%s' "$body" | grep -m1 '"tag_name"' | sed -E 's/.*"tag_name"\s*:\s*"([^"]+)".*/\1/')
fi
if [[ -z "$tag" ]]; then
echo "[WARN] Could not parse tag for $repo" | tee -a "$SUMMARY_LOG"
continue
fi
existing="${cur[$key]:-}"
if [[ $FORCE -eq 1 ]] || [[ "$existing" =~ ^(auto|latest)$ ]] || [[ -z "$existing" ]]; then
cur[$key]="$tag"
echo "[OK] $key := $tag" | tee -a "$SUMMARY_LOG"
else
echo "[SKIP] $key pinned ($existing), not overriding" | tee -a "$SUMMARY_LOG"
fi
done
# Write back
{
for k in "${!cur[@]}"; do
echo "$k=${cur[$k]}"
done | sort
} > "$TAGS_FILE"
echo "[OK] Refreshed tags written to $TAGS_FILE" | tee -a "$SUMMARY_LOG"

255
uninstall.sh Executable file
View File

@ -0,0 +1,255 @@
#!/bin/bash
# 💫 https://github.com/JaKooLit 💫 #
# KooL Debian-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
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘ Debian
\e[0m"
printf "\n%.0s" {1..1}
# Show welcome message using whiptail with Yes/No options
whiptail --title "Debian-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 on Debian/Ubuntu
remove_packages() {
local selected_packages_file=$1
while read -r package; do
# Check if the package is installed using dpkg (apt's underlying tool)
if dpkg -l | grep -q "^ii $package "; then
echo "Removing package: $package"
if ! sudo apt remove -y "$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"
"polkit-kde-agent-1" "polkit agent" "off"
"imagemagick" "Image manipulation tool" "off"
"kitty" "kitty-terminal" "off"
"qt5-style-kvantum" "QT apps theming" "off"
"qt5-style-kvantum-themes" "QT apps theming" "off"
"mousepad" "simple text editor" "off"
"mpv" "multi-media player" "off"
"mpv-mpris" "mpv-plugin" "off"
"nvtop" "gpu resource monitor" "off"
"nwg-displays" "display monitor configuration app" "off"
"nwg-look" "gtk settings app" "off"
"pamixer" "pamixer" "off"
"pavucontrol" "pavucontrol" "off"
"playerctl" "playerctl" "off"
"qalculate-gtk" "calculater - QT" "off"
"qt5ct" "qt5ct" "off"
"qt6-svg" "qt6-svg" "off"
"qt6ct" "qt6ct" "off"
"slurp" "screenshot tool" "off"
"swappy" "screenshot tool" "off"
"sway-notification-center" "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"
"hyprland" "hyprland main package" "off"
)
# Define the list of directories to choose from (with options_command tags)
directories=(
"ags" "AGS desktop overview configuration" "off"
"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"
"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 dpkg -l | grep -q "^ii $package "; 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 hypridle hyprlock rofi wallust; 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}

522
update-hyprland.sh Executable file
View File

@ -0,0 +1,522 @@
#!/usr/bin/env bash
# update-hyprland.sh
# Manage and build just the Hyprland stack (Hyprland + companion apps/libs)
# - Maintains a central tag file (hypr-tags.env) with versions
# - Can fetch latest release tags from GitHub and update hypr-tags.env
# - Can restore tags from a backup
# - Can run a dry-run build (compile only) or install build of the stack
#
# Usage examples:
# chmod +x ./update-hyprland.sh
# ./update-hyprland.sh --dry-run # compile-only using current tags
# ./update-hyprland.sh --install # compile + install using current tags
# ./update-hyprland.sh --fetch-latest --dry-run # refresh tags to latest, then dry-run
# ./update-hyprland.sh --set HYPRLAND=v0.51.1 --dry-run # set one or more tags
# ./update-hyprland.sh --restore --dry-run # restore most recent backup of tags and dry-run
# ./update-hyprland.sh --only hyprland,hyprutils --dry-run
# ./update-hyprland.sh --skip aquamarine --install
# ./update-hyprland.sh --with-deps --dry-run
# ./update-hyprland.sh --fetch-latest --via-helper # use dry-run-build.sh for a summary-only run
#
# Notes:
# - Requires curl; for --fetch-latest, jq is recommended (installed by 00-dependencies.sh)
# - Works from repo root; do not cd into install-scripts/
set -euo pipefail
REPO_ROOT=$(pwd)
TAGS_FILE="$REPO_ROOT/hypr-tags.env"
LOG_DIR="$REPO_ROOT/Install-Logs"
mkdir -p "$LOG_DIR"
TS=$(date +%F-%H%M%S)
SUMMARY_LOG="$LOG_DIR/update-hypr-$TS.log"
# Default module order (core first, then Hyprland)
DEFAULT_MODULES=(
xkbcommon
hyprutils
hyprlang
hyprtoolkit
wayland-protocols-src
aquamarine
hyprgraphics
hyprwayland-scanner
hyprland-protocols
hyprland-qt-support
hyprland-guiutils
hyprland
)
WITH_DEPS=0
DO_INSTALL=0
DO_DRY_RUN=0
FETCH_LATEST=0
RESTORE=0
VIA_HELPER=0
NO_FETCH=0
ONLY_LIST=""
SKIP_LIST=""
SET_ARGS=()
usage() {
sed -n '2,120p' "$0" | sed -n '/^# /p' | sed 's/^# \{0,1\}//'
}
ensure_tags_file() {
if [[ ! -f "$TAGS_FILE" ]]; then
echo "[INFO] Creating default tags file: $TAGS_FILE" | tee -a "$SUMMARY_LOG"
cat >"$TAGS_FILE" <<'EOF'
HYPRLAND_TAG=v0.50.1
AQUAMARINE_TAG=v0.9.2
HYPRUTILS_TAG=v0.8.2
HYPRLANG_TAG=v0.6.4
HYPRGRAPHICS_TAG=v0.1.5
HYPRWAYLAND_SCANNER_TAG=v0.4.5
HYPRLAND_PROTOCOLS_TAG=v0.6.4
HYPRLAND_QT_SUPPORT_TAG=v0.1.0
HYPRLAND_QTUTILS_TAG=v0.1.4
EOF
fi
}
backup_tags() {
ensure_tags_file
cp "$TAGS_FILE" "$TAGS_FILE.bak-$TS"
echo "[INFO] Backed up $TAGS_FILE to $TAGS_FILE.bak-$TS" | tee -a "$SUMMARY_LOG"
}
restore_tags() {
latest_bak=$(ls -1t "$TAGS_FILE".bak-* 2>/dev/null | head -n1 || true)
if [[ -z "$latest_bak" ]]; then
echo "[ERROR] No backup tags file found." | tee -a "$SUMMARY_LOG"
exit 1
fi
cp "$latest_bak" "$TAGS_FILE"
echo "[INFO] Restored tags from $latest_bak" | tee -a "$SUMMARY_LOG"
}
set_tags_from_args() {
ensure_tags_file
backup_tags
# load existing into assoc map
declare -A map
while IFS='=' read -r k v; do
[[ -z "$k" || "$k" =~ ^# ]] && continue
map[$k]="$v"
done <"$TAGS_FILE"
for kv in "${SET_ARGS[@]}"; do
key="${kv%%=*}"
val="${kv#*=}"
case "$key" in
HYPRLAND | hyprland) key=HYPRLAND_TAG ;;
AQUAMARINE | aquamarine) key=AQUAMARINE_TAG ;;
HYPRUTILS | hyprutils) key=HYPRUTILS_TAG ;;
HYPRLANG | hyprlang) key=HYPRLANG_TAG ;;
HYPRGRAPHICS | hyprgraphics) key=HYPRGRAPHICS_TAG ;;
HYPRWAYLAND_SCANNER | hyprwayland-scanner | hyprwayland_scanner) key=HYPRWAYLAND_SCANNER_TAG ;;
HYPRLAND_PROTOCOLS | hyprland-protocols | hyprland_protocols) key=HYPRLAND_PROTOCOLS_TAG ;;
HYPRLAND_QT_SUPPORT | hyprland-qt-support | hyprland_qt_support) key=HYPRLAND_QT_SUPPORT_TAG ;;
HYPRLAND_QTUTILS | hyprland-qtutils | hyprland_qtutils) key=HYPRLAND_QTUTILS_TAG ;;
esac
map[$key]="$val"
done
{
for k in "${!map[@]}"; do
echo "$k=${map[$k]}"
done | sort
} >"$TAGS_FILE"
echo "[INFO] Updated $TAGS_FILE with provided tags" | tee -a "$SUMMARY_LOG"
}
# Fetch latest release tags from GitHub for the stack
fetch_latest_tags() {
ensure_tags_file
backup_tags
# Require curl; jq is preferred. Fallback to grep/sed if jq is missing.
if ! command -v curl >/dev/null 2>&1; then
echo "[ERROR] curl is required." | tee -a "$SUMMARY_LOG"
exit 1
fi
# Read existing to respect pinned values (only update keys set to 'auto' or 'latest')
declare -A existing
while IFS='=' read -r k v; do
[[ -z "$k" || "$k" =~ ^# ]] && continue
existing[$k]="$v"
done <"$TAGS_FILE"
declare -A repos=(
[HYPRLAND_TAG]="hyprwm/Hyprland"
[AQUAMARINE_TAG]="hyprwm/aquamarine"
[HYPRUTILS_TAG]="hyprwm/hyprutils"
[HYPRLANG_TAG]="hyprwm/hyprlang"
[HYPRGRAPHICS_TAG]="hyprwm/hyprgraphics"
[HYPRWAYLAND_SCANNER_TAG]="hyprwm/hyprwayland-scanner"
[HYPRLAND_PROTOCOLS_TAG]="hyprwm/hyprland-protocols"
[HYPRLAND_QT_SUPPORT_TAG]="hyprwm/hyprland-qt-support"
[HYPRLAND_QTUTILS_TAG]="hyprwm/hyprland-qtutils"
)
declare -A tags
for key in "${!repos[@]}"; do
repo="${repos[$key]}"
url="https://api.github.com/repos/$repo/releases/latest"
echo "[INFO] Fetching latest tag for $repo" | tee -a "$SUMMARY_LOG"
body=$(curl -fsSL "$url" || true)
if [[ -z "$body" ]]; then
echo "[WARN] Empty response for $repo; leaving $key unchanged" | tee -a "$SUMMARY_LOG"
continue
fi
if command -v jq >/dev/null 2>&1; then
tag=$(printf '%s' "$body" | jq -r '.tag_name // empty')
else
tag=$(printf '%s' "$body" | grep -m1 '"tag_name"' | sed -E 's/.*"tag_name"\s*:\s*"([^"]+)".*/\1/')
fi
if [[ -n "$tag" ]]; then
tags[$key]="$tag"
else
echo "[WARN] Could not parse tag for $repo; leaving $key unchanged" | tee -a "$SUMMARY_LOG"
fi
done
# Merge into existing file
declare -A map
while IFS='=' read -r k v; do
[[ -z "$k" || "$k" =~ ^# ]] && continue
map[$k]="$v"
done <"$TAGS_FILE"
for k in "${!tags[@]}"; do
# Only override if pinned value is 'auto' or 'latest'
if [[ "${existing[$k]:-}" =~ ^(auto|latest)$ ]] || [[ -z "${existing[$k]:-}" ]]; then
map[$k]="${tags[$k]}"
fi
done
{
for k in "${!map[@]}"; do
echo "$k=${map[$k]}"
done | sort
} >"$TAGS_FILE"
echo "[INFO] Refreshed tags written to $TAGS_FILE" | tee -a "$SUMMARY_LOG"
}
# Build runner using module scripts. Uses env vars from TAGS_FILE.
run_stack() {
# shellcheck disable=SC1090
source "$TAGS_FILE"
# Export tags so child scripts inherit them
export HYPRLAND_TAG AQUAMARINE_TAG HYPRUTILS_TAG HYPRLANG_TAG HYPRGRAPHICS_TAG HYPRWAYLAND_SCANNER_TAG HYPRLAND_PROTOCOLS_TAG HYPRLAND_QT_SUPPORT_TAG HYPRLAND_QTUTILS_TAG WAYLAND_PROTOCOLS_TAG
# Optionally install dependencies (not dry-run)
if [[ $WITH_DEPS -eq 1 ]]; then
echo "[INFO] Installing dependencies via 00-dependencies.sh" | tee -a "$SUMMARY_LOG"
if ! "$REPO_ROOT/install-scripts/00-dependencies.sh"; then
echo "[ERROR] Dependencies installation failed." | tee -a "$SUMMARY_LOG"
exit 1
fi
fi
# Build module list based on --only/--skip
local modules
if [[ -n "$ONLY_LIST" ]]; then
IFS=',' read -r -a modules <<<"$ONLY_LIST"
else
modules=("${DEFAULT_MODULES[@]}")
fi
if [[ -n "$SKIP_LIST" ]]; then
IFS=',' read -r -a _skips <<<"$SKIP_LIST"
local filtered=()
for m in "${modules[@]}"; do
local skip_it=0
for s in "${_skips[@]}"; do
[[ "$m" == "$s" ]] && {
skip_it=1
break
}
done
[[ $skip_it -eq 0 ]] && filtered+=("$m")
done
modules=("${filtered[@]}")
fi
# Ensure core prerequisites are installed before hyprland on install runs
# Order: wayland-protocols-src, hyprland-protocols, hyprutils, hyprlang, aquamarine, hyprland
if [[ $DO_INSTALL -eq 1 ]]; then
# Auto-fetch latest tags for Hyprland stack unless disabled
if [[ $NO_FETCH -eq 0 ]]; then
# Detect whether hyprland is part of the run
need_fetch=0
for m in "${modules[@]}"; do
[[ "$m" == "hyprland" ]] && need_fetch=1
done
if [[ $need_fetch -eq 1 ]]; then
echo "[INFO] Auto-fetching latest tags for Hyprland stack" | tee -a "$SUMMARY_LOG"
fetch_latest_tags
fi
fi
local has_hl=0 has_aqua=0 has_wp=0 has_utils=0 has_lang=0 has_hlprot=0
for m in "${modules[@]}"; do
[[ "$m" == "hyprland" ]] && has_hl=1
[[ "$m" == "aquamarine" ]] && has_aqua=1
[[ "$m" == "wayland-protocols-src" ]] && has_wp=1
[[ "$m" == "hyprland-protocols" ]] && has_hlprot=1
[[ "$m" == "hyprutils" ]] && has_utils=1
[[ "$m" == "hyprlang" ]] && has_lang=1
done
if [[ $has_hl -eq 1 ]]; then
# ensure each prerequisite is present
[[ $has_wp -eq 0 ]] && modules=("wayland-protocols-src" "${modules[@]}")
[[ $has_hlprot -eq 0 ]] && modules=("hyprland-protocols" "${modules[@]}")
[[ $has_utils -eq 0 ]] && modules=("hyprutils" "${modules[@]}")
[[ $has_lang -eq 0 ]] && modules=("hyprlang" "${modules[@]}")
[[ $has_aqua -eq 0 ]] && modules=("aquamarine" "${modules[@]}")
# Reorder to exact sequence before hyprland
# Remove existing occurrences and rebuild in correct order
local tmp=()
local inserted_wp=0 inserted_hlprot=0 inserted_utils=0 inserted_lang=0 inserted_aqua=0
for m in "${modules[@]}"; do
if [[ "$m" == "wayland-protocols-src" ]]; then
if [[ $inserted_wp -eq 0 ]]; then
tmp+=("wayland-protocols-src")
inserted_wp=1
fi
elif [[ "$m" == "hyprland-protocols" ]]; then
if [[ $inserted_hlprot -eq 0 ]]; then
# ensure wayland-protocols-src before hyprland-protocols
if [[ $inserted_wp -eq 0 ]]; then
tmp+=("wayland-protocols-src")
inserted_wp=1
fi
tmp+=("hyprland-protocols")
inserted_hlprot=1
fi
elif [[ "$m" == "hyprutils" ]]; then
if [[ $inserted_utils -eq 0 ]]; then
# ensure protocols before utils
if [[ $inserted_wp -eq 0 ]]; then
tmp+=("wayland-protocols-src")
inserted_wp=1
fi
if [[ $inserted_hlprot -eq 0 ]]; then
tmp+=("hyprland-protocols")
inserted_hlprot=1
fi
tmp+=("hyprutils")
inserted_utils=1
fi
elif [[ "$m" == "hyprlang" ]]; then
if [[ $inserted_lang -eq 0 ]]; then
# ensure utils before lang
if [[ $inserted_utils -eq 0 ]]; then
if [[ $inserted_wp -eq 0 ]]; then
tmp+=("wayland-protocols-src")
inserted_wp=1
fi
if [[ $inserted_hlprot -eq 0 ]]; then
tmp+=("hyprland-protocols")
inserted_hlprot=1
fi
tmp+=("hyprutils")
inserted_utils=1
fi
tmp+=("hyprlang")
inserted_lang=1
fi
elif [[ "$m" == "aquamarine" ]]; then
if [[ $inserted_aqua -eq 0 ]]; then
# ensure lang before aquamarine
if [[ $inserted_lang -eq 0 ]]; then
if [[ $inserted_utils -eq 0 ]]; then
if [[ $inserted_wp -eq 0 ]]; then
tmp+=("wayland-protocols-src")
inserted_wp=1
fi
if [[ $inserted_hlprot -eq 0 ]]; then
tmp+=("hyprland-protocols")
inserted_hlprot=1
fi
tmp+=("hyprutils")
inserted_utils=1
fi
tmp+=("hyprlang")
inserted_lang=1
fi
tmp+=("aquamarine")
inserted_aqua=1
fi
elif [[ "$m" == "hyprland" ]]; then
# ensure all prerequisites already present
if [[ $inserted_wp -eq 0 ]]; then
tmp+=("wayland-protocols-src")
inserted_wp=1
fi
if [[ $inserted_hlprot -eq 0 ]]; then
tmp+=("hyprland-protocols")
inserted_hlprot=1
fi
if [[ $inserted_utils -eq 0 ]]; then
tmp+=("hyprutils")
inserted_utils=1
fi
if [[ $inserted_lang -eq 0 ]]; then
tmp+=("hyprlang")
inserted_lang=1
fi
if [[ $inserted_aqua -eq 0 ]]; then
tmp+=("aquamarine")
inserted_aqua=1
fi
tmp+=("hyprland")
else
tmp+=("$m")
fi
done
modules=("${tmp[@]}")
fi
fi
declare -A results
for mod in "${modules[@]}"; do
local script="$REPO_ROOT/install-scripts/$mod.sh"
echo "\n=== $mod ===" | tee -a "$SUMMARY_LOG"
[[ -f "$script" ]] || {
echo "[WARN] Missing $script" | tee -a "$SUMMARY_LOG"
results[$mod]="MISSING"
continue
}
chmod +x "$script" || true
if [[ $DO_DRY_RUN -eq 1 ]]; then
if DRY_RUN=1 "$script"; then results[$mod]="PASS"; else results[$mod]="FAIL"; fi
else
if "$script"; then results[$mod]="INSTALLED"; else results[$mod]="FAIL"; fi
fi
done
{
echo "\nSummary:"
for mod in "${modules[@]}"; do
printf "%-24s %s\n" "$mod" "${results[$mod]:-SKIPPED}"
done
echo "\nLogs under: $LOG_DIR. This run: $SUMMARY_LOG"
} | tee -a "$SUMMARY_LOG"
# Non-zero on any FAILs
local failed=0
for mod in "${modules[@]}"; do
[[ "${results[$mod]:-}" == FAIL ]] && failed=1
done
return $failed
}
# Parse args
while [[ $# -gt 0 ]]; do
case "$1" in
-h | --help)
usage
exit 0
;;
--with-deps)
WITH_DEPS=1
shift
;;
--dry-run)
DO_DRY_RUN=1
shift
;;
--install)
DO_INSTALL=1
shift
;;
--fetch-latest)
FETCH_LATEST=1
shift
;;
--restore)
RESTORE=1
shift
;;
--via-helper)
VIA_HELPER=1
shift
;;
--no-fetch)
NO_FETCH=1
shift
;;
--only)
ONLY_LIST=${2:-}
shift 2
;;
--skip)
SKIP_LIST=${2:-}
shift 2
;;
--set)
shift
while [[ $# -gt 0 && "$1" != --* ]]; do
SET_ARGS+=("$1")
shift
done
;;
*)
echo "Unknown argument: $1"
exit 2
;;
esac
done
# Validate options
if [[ $DO_INSTALL -eq 1 && $DO_DRY_RUN -eq 1 ]]; then
echo "[ERROR] Use either --dry-run or --install, not both." | tee -a "$SUMMARY_LOG"
exit 2
fi
ensure_tags_file
# Apply tag operations
if [[ $RESTORE -eq 1 ]]; then
restore_tags
fi
if [[ ${#SET_ARGS[@]} -gt 0 ]]; then
set_tags_from_args
fi
if [[ $FETCH_LATEST -eq 1 ]]; then
fetch_latest_tags
fi
# Run the stack
if [[ $DO_DRY_RUN -eq 0 && $DO_INSTALL -eq 0 ]]; then
echo "[INFO] No build option specified. Defaulting to --dry-run." | tee -a "$SUMMARY_LOG"
DO_DRY_RUN=1
fi
# If using helper, delegate to dry-run-build.sh for summary-only output
if [[ $VIA_HELPER -eq 1 ]]; then
if [[ $DO_INSTALL -eq 1 ]]; then
echo "[ERROR] --via-helper cannot be combined with --install (helper is dry-run only)." | tee -a "$SUMMARY_LOG"
exit 2
fi
# shellcheck disable=SC1090
source "$TAGS_FILE"
export HYPRLAND_TAG AQUAMARINE_TAG HYPRUTILS_TAG HYPRLANG_TAG HYPRGRAPHICS_TAG HYPRWAYLAND_SCANNER_TAG HYPRLAND_PROTOCOLS_TAG HYPRLAND_QT_SUPPORT_TAG HYPRLAND_QTUTILS_TAG WAYLAND_PROTOCOLS_TAG
helper="$REPO_ROOT/dry-run-build.sh"
if [[ ! -x "$helper" ]]; then
echo "[ERROR] dry-run-build.sh not found or not executable at $helper" | tee -a "$SUMMARY_LOG"
exit 1
fi
args=()
[[ $WITH_DEPS -eq 1 ]] && args+=("--with-deps")
[[ -n "$ONLY_LIST" ]] && args+=("--only" "$ONLY_LIST")
[[ -n "$SKIP_LIST" ]] && args+=("--skip" "$SKIP_LIST")
echo "[INFO] Delegating to dry-run-build.sh ${args[*]}" | tee -a "$SUMMARY_LOG"
"$helper" "${args[@]}"
exit $?
fi
run_stack