Compare commits
138 Commits
Arch-Hyprl
...
Arch-Hyprl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5a459d35e7 | ||
|
|
ea2125a467 | ||
|
|
1182b17d0b | ||
|
|
b16f579e86 | ||
|
|
11f2b0c6fe | ||
|
|
2ee27f6959 | ||
|
|
6c5c4b22b8 | ||
|
|
c1b872865a | ||
|
|
8d92fdd1af | ||
|
|
07f5053b2b | ||
|
|
e4e488fc4c | ||
|
|
1970cca375 | ||
|
|
2828811ad8 | ||
|
|
653ca995ae | ||
|
|
f4fcd6deed | ||
|
|
52531e7d1f | ||
|
|
5db40aafa3 | ||
|
|
1d2126b7ff | ||
|
|
622e09c781 | ||
|
|
5baaec6f12 | ||
|
|
941b24ed1d | ||
|
|
cfab030ca2 | ||
|
|
8ea3dc390c | ||
|
|
6c1b941fa1 | ||
|
|
3e7f5664e5 | ||
|
|
af4d191ee3 | ||
|
|
5fa3096724 | ||
|
|
d00addba58 | ||
|
|
e28b5940cb | ||
|
|
49f8cef0be | ||
|
|
ac4ffc922a | ||
|
|
c93e1861d0 | ||
|
|
4185638900 | ||
|
|
a4f16e24cb | ||
|
|
d09e2dfd09 | ||
|
|
9695a4c75b | ||
|
|
68af696789 | ||
|
|
b2f43b18fd | ||
|
|
f450ddd382 | ||
|
|
04c090a828 | ||
|
|
bb58ae9940 | ||
|
|
39e515f9b0 | ||
|
|
8842d72a79 | ||
|
|
573321fd5f | ||
|
|
e766866207 | ||
|
|
fb9b3a8205 | ||
|
|
3420522393 | ||
|
|
409aadf655 | ||
|
|
dcc282968e | ||
|
|
a66845607d | ||
|
|
f5e3ed99d2 | ||
|
|
2d31448492 | ||
|
|
39d3f1a958 | ||
|
|
28c12f6df2 | ||
|
|
79af4e7b7d | ||
|
|
8a60729680 | ||
|
|
fd1358d920 | ||
|
|
113fee6d7a | ||
|
|
87676210e2 | ||
|
|
cf6cc1010e | ||
|
|
52dfbe8593 | ||
|
|
e9c5d3d4a6 | ||
|
|
1e2704bc23 | ||
|
|
f049050b73 | ||
|
|
094ccb9b1f | ||
|
|
47791287f1 | ||
|
|
4fba08d8d6 | ||
|
|
a19b9b8a8d | ||
|
|
5f20c04b05 | ||
|
|
9aa43ae531 | ||
|
|
bf67e6030c | ||
|
|
9873283814 | ||
|
|
03aa990f35 | ||
|
|
2c4cdd3889 | ||
|
|
eb486d7ef2 | ||
|
|
262b6eb87c | ||
|
|
3233396b72 | ||
|
|
df48873278 | ||
|
|
3af8762a88 | ||
|
|
e35d66658c | ||
|
|
e320af02c8 | ||
|
|
6a67a21a33 | ||
|
|
b6d982d168 | ||
|
|
2590e76bd2 | ||
|
|
bde3ef8433 | ||
|
|
6b3d3efbb5 | ||
|
|
c4074aeffa | ||
|
|
f578249698 | ||
|
|
b43ace2f24 | ||
|
|
815438934a | ||
|
|
5d5af21bea | ||
|
|
e1d258503a | ||
|
|
fa9c2ae04f | ||
|
|
8a7f40c75a | ||
|
|
d6a25e04e7 | ||
|
|
61b61a980c | ||
|
|
cc9ce2cb49 | ||
|
|
7278a45305 | ||
|
|
049c27ac22 | ||
|
|
90121d9172 | ||
|
|
2b0528ca89 | ||
|
|
528551ea86 | ||
|
|
8c71bdeee7 | ||
|
|
63f2f45866 | ||
|
|
c1f67feb18 | ||
|
|
d215fbd786 | ||
|
|
1d812d7357 | ||
|
|
083c20878e | ||
|
|
695081332b | ||
|
|
93d3a18b9a | ||
|
|
29cc1c3f52 | ||
|
|
bfbbbd2e52 | ||
|
|
e2fe39222c | ||
|
|
872fd89261 | ||
|
|
d3f0016158 | ||
|
|
8995c47902 | ||
|
|
058859a07e | ||
|
|
54363d5267 | ||
|
|
b2628c8126 | ||
|
|
7ecb641731 | ||
|
|
497e71fdf5 | ||
|
|
35aa72e021 | ||
|
|
9c1741e00d | ||
|
|
fcf18bede5 | ||
|
|
6abc879468 | ||
|
|
38ce478f5c | ||
|
|
527a504e83 | ||
|
|
a44b376e79 | ||
|
|
2e62542a35 | ||
|
|
5343041805 | ||
|
|
221870054e | ||
|
|
193977dcb6 | ||
|
|
c18526390d | ||
|
|
7b403cd72d | ||
|
|
9a6fce78ab | ||
|
|
0c8c829c57 | ||
|
|
2ed79c491a | ||
|
|
c1c5450c9b |
@@ -1,4 +1,29 @@
|
|||||||
## Changelogs
|
## CHANGELOGS
|
||||||
|
|
||||||
|
## 23 Feb 2025
|
||||||
|
- added Victor Mono Font for proper hyprlock font rendering for Dots v2.3.12
|
||||||
|
- added Fantasque Sans Mono Nerd for Kitty
|
||||||
|
|
||||||
|
## 22 Feb 2025
|
||||||
|
- replaced eog with loupe
|
||||||
|
- changed url for installing oh-my-zsh to get wider coverage. Some countries are blocking github raw url's
|
||||||
|
|
||||||
|
## 20 Feb 2025
|
||||||
|
- Added nwg-displays for the upcoming Kools dots v2.3.12
|
||||||
|
|
||||||
|
## 18 Feb 2025
|
||||||
|
- Change default zsh theme to adnosterzak
|
||||||
|
- pokemon coloscript integrated with fastfetch when opted with pokemon to add some bling
|
||||||
|
- additional external oh-my-zsh theme
|
||||||
|
|
||||||
|
## 06 Feb 2025
|
||||||
|
- added semi-unattended function.
|
||||||
|
- move all the initial questions at the beginning
|
||||||
|
|
||||||
|
## 04 Feb 2025
|
||||||
|
- Re-coded for better visibility
|
||||||
|
- Offered a new SDDM theme.
|
||||||
|
- script will automatically detect if you have nvidia but script still offer if you want to set up for user
|
||||||
|
|
||||||
## 29 Jan 2025
|
## 29 Jan 2025
|
||||||
- enhanced nvidia.sh to add additional systemd-bootloader entries for nvidia
|
- enhanced nvidia.sh to add additional systemd-bootloader entries for nvidia
|
||||||
|
|||||||
BIN
Installer.png
BIN
Installer.png
Binary file not shown.
|
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 589 KiB |
84
README.md
84
README.md
@@ -49,39 +49,15 @@
|
|||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
https://github.com/JaKooLit/Hyprland-Dots/assets/85185940/50d53755-0f11-45d6-9913-76039e84a2cd
|
https://github.com/user-attachments/assets/49bc12b2-abaf-45de-a21c-67aacd9bb872
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
### Gallery and Videos
|
### Gallery and Videos
|
||||||
|
#### 🎥 Feb 2025 Video explanation of installation with preset
|
||||||
|
- [YOUTUBE-LINK](https://youtu.be/wQ70lo7P6vA?si=_QcbrNKh_Bg0L3wC)
|
||||||
|
- [YOUTUBE-Hyprland-Playlist](https://youtube.com/playlist?list=PLDtGd5Fw5_GjXCznR0BzCJJDIQSZJRbxx&si=iaNjLulFdsZ6AV-t)
|
||||||
|
|
||||||
- latest Ksk royal's [youtube video](https://youtu.be/lR7EtbVYWuc?si=eNHVSbStKS1eNVly) installation
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>
|
|
||||||
📷 Screenshots
|
|
||||||
</summary>
|
|
||||||
<p align="center">
|
|
||||||
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-ScreenShots/Arch-v2/Arch-Default-Layout.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/dark-theme.png" />
|
|
||||||
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/Light-theme.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-ScreenShots/Arch-v2/Another-Screenshot.png"" />
|
|
||||||
</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/Hyprland-Dots-Showcase/rofi.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/Hyprland-Dots-Showcase/showcase2.png"" />
|
|
||||||
<img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/waybar-layout.png" /> <img align="center" width="49%" src="https://raw.githubusercontent.com/JaKooLit/screenshots/main/Hyprland-Dots-Showcase/waybar-style.png"" />
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
||||||
#### 📷 More Screenshots on v2 [`Link`](https://github.com/JaKooLit/screenshots/tree/main/Hyprland-Dots-Showcase) and [`Previous-Screenshots`](https://github.com/JaKooLit/screenshots/tree/main/Hyprland-ScreenShots/Arch-v2) and
|
|
||||||
|
|
||||||
|
|
||||||
#### ✨ A video walk through my dotfiles[`Link`](https://youtu.be/fO-RBHvVEcc?si=ijqxxnq_DLiyO8xb)
|
|
||||||
#### ✨ A video walk on My Hyprland-Dots v2[`Link`](https://youtu.be/yaVurRoXc-s?si=iDnBC5S3thPBX3ZE)
|
|
||||||
|
|
||||||
#### 📽️ youtube video showcase: [`Link`](https://youtu.be/W2UFwkgdwNo)
|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
### 🪧🪧🪧 ANNOUNCEMENT 🪧🪧🪧
|
### 🪧🪧🪧 ANNOUNCEMENT 🪧🪧🪧
|
||||||
- This Repo does not contain Hyprland Dots or configs! Dotfiles can be checked here [`Hyprland-Dots`](https://github.com/JaKooLit/Hyprland-Dots) . During installation, if you opt to copy pre-configured dots, it will be downloaded from that centralized repo.
|
- This Repo does not contain Hyprland Dots or configs! Dotfiles can be checked here [`Hyprland-Dots`](https://github.com/JaKooLit/Hyprland-Dots) . During installation, if you opt to copy pre-configured dots, it will be downloaded from that centralized repo.
|
||||||
@@ -109,22 +85,19 @@ https://github.com/JaKooLit/Hyprland-Dots/assets/85185940/50d53755-0f11-45d6-991
|
|||||||
- inside the install-scripts directory, you can edit 00-hypr-pkgs.sh. Care though as the Hyprland Dots may not work properly!
|
- inside the install-scripts directory, you can edit 00-hypr-pkgs.sh. Care though as the Hyprland Dots may not work properly!
|
||||||
|
|
||||||
#### 💫 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-2)
|
- If you opted to install SDDM theme, here's the [`LINK`](https://codeberg.org/JaKooLit/sddm-sequoia) which is a fork of [`LINK`](https://codeberg.org/minMelody/sddm-sequoia)
|
||||||
- If you opted to install GTK Themes, Icons, here's the [`LINK`](https://github.com/JaKooLit/GTK-themes-icons). This also includes Bibata Modern Ice cursor.
|
- If you opted to install GTK Themes, Icons, here's the [`LINK`](https://github.com/JaKooLit/GTK-themes-icons). This also includes Bibata Modern Ice cursor.
|
||||||
|
|
||||||
#### 👀 NVidia GPU Owners.
|
#### 👀 NVidia GPU Owners.
|
||||||
- By default, nvidia-dkms will be installed. and only supports GTX 900 and newer. If required to install older driver, edit the nvidia.sh in install-scripts directory
|
- By default, nvidia-dkms will be installed. and only supports GTX 900 and newer. If required to install older driver, edit the nvidia.sh in install-scripts directory
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> If you want to use nouveau driver, choose N when asked if you have nvidia gpu. This is because the nvidia installer part, it will blacklist nouveau. Hyprland will still be installed but it will skip blacklisting nouveau.
|
> If you want to use nouveau driver, 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.
|
||||||
|
|
||||||
- After installation, check [`THIS`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users)
|
- After installation, check [`THIS`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Notes_to_remember#--for-nvidia-gpu-users)
|
||||||
|
|
||||||
## ✨ to use this script
|
## ✨ to use this script
|
||||||
> clone this repo (latest commit only) to reduce file size download by using git. Change directory, make executable and run the script
|
- clone this repo (latest commit only) to reduce file size download by using git. Change directory, make executable and run the script
|
||||||
|
|
||||||
>[!IMPORTANT]
|
|
||||||
> Make sure you have base-devel installed
|
|
||||||
|
|
||||||
- Without base-devel installed, script will fail
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
git clone --depth=1 https://github.com/JaKooLit/Arch-Hyprland.git ~/Arch-Hyprland
|
git clone --depth=1 https://github.com/JaKooLit/Arch-Hyprland.git ~/Arch-Hyprland
|
||||||
@@ -136,6 +109,24 @@ chmod +x install.sh
|
|||||||
<p align="center">
|
<p align="center">
|
||||||
<img align="center" width="100%" src="https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/Installer.png" />
|
<img align="center" width="100%" src="https://raw.githubusercontent.com/JaKooLit/Arch-Hyprland/main/Installer.png" />
|
||||||
|
|
||||||
|
|
||||||
|
### 🤟 semi-unattended installation (new for Feb 2025)
|
||||||
|
- edit preset.sh to modify what packages you want. Make sure to change only with Y or N
|
||||||
|
- to use preset instead of usual `./install.sh` you can ran like this
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./install.sh --preset
|
||||||
|
```
|
||||||
|
|
||||||
|
- if you have nvidia you can add --nvidia argument
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./install.sh --preset --nvidia
|
||||||
|
```
|
||||||
|
|
||||||
|
- its called semi-unattended it is because you still have to answer some questions when installing KooL's Hyprland Dots
|
||||||
|
|
||||||
|
|
||||||
#### ✨ for ZSH and OH-MY-ZSH installation
|
#### ✨ for ZSH and OH-MY-ZSH installation
|
||||||
> installer should auto change your default shell to zsh. However, if it does not, do this
|
> installer should auto change your default shell to zsh. However, if it does not, do this
|
||||||
```bash
|
```bash
|
||||||
@@ -144,24 +135,31 @@ zsh
|
|||||||
source ~/.zshrc
|
source ~/.zshrc
|
||||||
```
|
```
|
||||||
- reboot or logout
|
- reboot or logout
|
||||||
- by default `funky` theme is installed. You can find more themes from this [`OH-MY-ZSH-THEMES`](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
|
- by default `agnosterzak` theme is installed. Which is from external oh-my-zsh theme. You can find more themes from this [`OH-MY-ZSH-THEMES`](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)
|
||||||
- to change the theme, `SUPER SHIFT O` , choose desired theme, and close and open terminal.
|
- to change the theme, `SUPER SHIFT O` , choose desired theme, and close and open terminal.
|
||||||
- or manually edit `~/.zshrc` . Look for ZSH_THEME="desired theme"
|
- or manually edit `~/.zshrc` . Look for ZSH_THEME="desired theme"
|
||||||
|
|
||||||
|
#### 🎞️ AGS Overview DEMO
|
||||||
|
- in case you wonder, here is a short demo of AGS overview [Youtube LINK](https://youtu.be/zY5SLNPBJTs)
|
||||||
|
|
||||||
#### ✨ TO DO once installation done and dotfiles copied
|
#### ✨ TO DO once installation done and dotfiles copied
|
||||||
- ~~if you opted to install gtk themes, to apply the theme and icon, press the dark/light button (beside the padlock). To apply Bibata modern ice cursor, launch nwg-look (GTK Settings) through rofi.~~ Hyprland-Dots v2.1.18, initial boot file will attempt to apply GTK themes,cursor, and icons. You can tweak more using nwg-look (GTK-Settings) utility
|
|
||||||
|
|
||||||
- SUPER H for HINT or click on the waybar HINT! Button
|
- SUPER H for HINT or click on the waybar HINT! Button
|
||||||
- Head over to [FAQ](https://github.com/JaKooLit/Hyprland-Dots/wiki/FAQ) and [TIPS](https://github.com/JaKooLit/Hyprland-Dots/wiki/TIPS)
|
- Head over to [KooL Hyprland WIKI](https://github.com/JaKooLit/Hyprland-Dots/wiki)
|
||||||
|
|
||||||
|
|
||||||
#### 🙋 Got a questions regarding the Hyprland Dots or configurations? 🙋
|
#### 🙋 Got a questions regarding the Hyprland Dots or configurations? 🙋
|
||||||
- Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
|
- Head over to wiki Link [`WIKI`](https://github.com/JaKooLit/Hyprland-Dots/wiki)
|
||||||
|
|
||||||
#### ⌨ Keybinds
|
#### ⌨ Keybinds
|
||||||
- Keybinds [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds)
|
- Keybinds [`CLICK`](https://github.com/JaKooLit/Hyprland-Dots/wiki/Keybinds)
|
||||||
|
|
||||||
> [!TIP]
|
> [!TIP]
|
||||||
> KooL's Dots v2.3.7 has a searchable keybind function via rofi. (SUPER SHIFT K) or right click the `HINTS` waybar button
|
> KooL Hyprland has a searchable keybind function via rofi. (SUPER SHIFT K) or right click the `HINTS` waybar button
|
||||||
|
|
||||||
|
|
||||||
|
#### 🔄 switching between Hyprland-git and none Hyprland-git
|
||||||
|
- you can use my prepared script [`LINK`](https://github.com/JaKooLit/Arch-Hyprland/tree/main/assets/hyprland-install)
|
||||||
|
- Readme is also there
|
||||||
|
|
||||||
|
|
||||||
#### 🙋 👋 Having issues or questions?
|
#### 🙋 👋 Having issues or questions?
|
||||||
- for the install part, kindly open issue on this repo
|
- for the install part, kindly open issue on this repo
|
||||||
@@ -171,12 +169,12 @@ source ~/.zshrc
|
|||||||
- CD into Arch-Hyprland directory and then ran the below command.
|
- CD into Arch-Hyprland directory and then ran the below command.
|
||||||
- i.e. `./install-scripts/gtk-themes.sh` - For reinstall GTK Themes or
|
- i.e. `./install-scripts/gtk-themes.sh` - For reinstall GTK Themes or
|
||||||
- `./install-scripts/sddm.sh` - For reinstall sddm
|
- `./install-scripts/sddm.sh` - For reinstall sddm
|
||||||
|
|
||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
> DO NOT cd into install-scripts directory as script will most likely to fail
|
> DO NOT cd into install-scripts directory as script will most likely to fail
|
||||||
|
|
||||||
#### 🛣️ Roadmap:
|
#### 🛣️ Roadmap:
|
||||||
- ~~[ ] Install zsh and oh-my-zsh without necessary steps above~~ DONE
|
- [ ] show a progress bar in downloading and compiling part when installing outside AUR or official repo
|
||||||
- [ ] 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
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
export ZSH="$HOME/.oh-my-zsh"
|
export ZSH="$HOME/.oh-my-zsh"
|
||||||
|
|
||||||
ZSH_THEME="funky"
|
ZSH_THEME="agnosterzak"
|
||||||
|
|
||||||
plugins=(
|
plugins=(
|
||||||
git
|
git
|
||||||
@@ -19,7 +19,8 @@ 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. Will be disabled if above colorscript was chosen to install
|
||||||
fastfetch -c $HOME/.config/fastfetch/config-compact.jsonc
|
fastfetch -c $HOME/.config/fastfetch/config-compact.jsonc
|
||||||
|
|||||||
370
assets/add_zsh_theme/agnosterzak.zsh-theme
Normal file
370
assets/add_zsh_theme/agnosterzak.zsh-theme
Normal 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) '
|
||||||
392
assets/add_zsh_theme/antares.zsh-theme
Normal file
392
assets/add_zsh_theme/antares.zsh-theme
Normal 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}'
|
||||||
|
|
||||||
696
assets/add_zsh_theme/bullet-train.zsh-theme
Normal file
696
assets/add_zsh_theme/bullet-train.zsh-theme
Normal 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%}'
|
||||||
38
assets/add_zsh_theme/color-input.zsh-theme
Normal file
38
assets/add_zsh_theme/color-input.zsh-theme
Normal 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
|
||||||
|
}
|
||||||
418
assets/add_zsh_theme/comfyline.zsh-theme
Normal file
418
assets/add_zsh_theme/comfyline.zsh-theme
Normal 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
|
||||||
7
assets/add_zsh_theme/emoji.zsh-theme
Normal file
7
assets/add_zsh_theme/emoji.zsh-theme
Normal 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]%}) ✅"
|
||||||
60
assets/add_zsh_theme/fishbone++.zsh-theme
Normal file
60
assets/add_zsh_theme/fishbone++.zsh-theme
Normal 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="🚝"
|
||||||
73
assets/fastfetch/config-pokemon.jsonc
Normal file
73
assets/fastfetch/config-pokemon.jsonc
Normal 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",
|
||||||
|
]
|
||||||
|
}
|
||||||
7
assets/hyprland-install/README
Normal file
7
assets/hyprland-install/README
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Arch-Hyprland - Sharing a scripts to install hyprland git or non-git versions
|
||||||
|
|
||||||
|
Basically created this script so I can easily switch to git and non-git version of hyprland on Arch Linux
|
||||||
|
|
||||||
|
|
||||||
|
chmod +x actions.sh
|
||||||
|
./actions.sh
|
||||||
63
assets/hyprland-install/actions.sh
Executable file
63
assets/hyprland-install/actions.sh
Executable file
@@ -0,0 +1,63 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
|
||||||
|
|
||||||
|
# Set some colors for output messages
|
||||||
|
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
||||||
|
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
||||||
|
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
||||||
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
|
MAGENTA=$(tput setaf 5)
|
||||||
|
WARNING=$(tput setaf 1)
|
||||||
|
YELLOW=$(tput setaf 3)
|
||||||
|
BLUE=$(tput setaf 4)
|
||||||
|
RESET=$(tput sgr0)
|
||||||
|
|
||||||
|
|
||||||
|
# Make all scripts in the scripts directory executable
|
||||||
|
echo -e "${INFO} Making all files in the ${BLUE}scripts${RESET} directory executable..."
|
||||||
|
chmod +x ./scripts/*
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
echo -e "${BLUE} Please choose an option:${RESET}"
|
||||||
|
echo -e "${YELLOW} -- 1 - Install non-git Hyprland version${RESET}"
|
||||||
|
echo -e "${YELLOW} -- 2 - Install git Hyprland version${RESET}"
|
||||||
|
echo -e "${YELLOW} -- 3 - Update Hyprland-git packages${RESET}"
|
||||||
|
echo -e "${MAGENTA} -- 4 - Quit${RESET}"
|
||||||
|
|
||||||
|
read -p "${CAT} Enter your choice [1, 2, or 3]: " choice
|
||||||
|
|
||||||
|
case $choice in
|
||||||
|
1)
|
||||||
|
printf "\n${OK} You chose ${BLUE}non-git version of Hyprland${RESET}....... executing...\n"
|
||||||
|
echo -e "${YELLOW} Uninstalling some hyprland packages first...${RESET}"
|
||||||
|
./scripts/uninstall.sh &&
|
||||||
|
./scripts/install-hyprland.sh
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
2)
|
||||||
|
printf "\n${OK} You chose ${BLUE}git version of Hyprland${RESET}....... executing...\n"
|
||||||
|
echo -e "${YELLOW} Uninstalling some hyprland packages....${RESET}"
|
||||||
|
./scripts/uninstall.sh &&
|
||||||
|
./scripts/install-hyprland-git.sh
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
3)
|
||||||
|
printf "\n${OK} You chose ${BLUE} to update Hyprland-git packages${RESET}....... executing...\n"
|
||||||
|
./scripts/install-hyprland-git.sh
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
4)
|
||||||
|
echo -e "${MAGENTA} You have cancel it. Good Bye!!...${RESET}"
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "\n${WARNING} There are only 4 Choices!!!! 1 2 3 or 4. Enter 1, 2, 3, or 4 only.${RESET}"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
done
|
||||||
87
assets/hyprland-install/scripts/install-hyprland-git.sh
Executable file
87
assets/hyprland-install/scripts/install-hyprland-git.sh
Executable file
@@ -0,0 +1,87 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
|
||||||
|
|
||||||
|
# Set some colors for output messages
|
||||||
|
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
||||||
|
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
||||||
|
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
||||||
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
|
MAGENTA="$(tput setaf 5)"
|
||||||
|
ORANGE="$(tput setaf 214)"
|
||||||
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
ISAUR=$(command -v yay || command -v paru)
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
|
# List of packages to install / update
|
||||||
|
packages=(
|
||||||
|
"hyprutils-git"
|
||||||
|
"hyprcursor-git"
|
||||||
|
"hyprwayland-scanner-git"
|
||||||
|
"aquamarine-git"
|
||||||
|
"hyprgraphics-git"
|
||||||
|
"hyprlang-git"
|
||||||
|
"hyprland-protocols-git"
|
||||||
|
"hyprland-qt-support-git"
|
||||||
|
"hyprland-qtutils-git"
|
||||||
|
"hyprland-git"
|
||||||
|
"hyprlock-git"
|
||||||
|
"hypridle-git"
|
||||||
|
"xdg-desktop-portal-hyprland-git"
|
||||||
|
"hyprpolkitagent-git"
|
||||||
|
"pyprland"
|
||||||
|
)
|
||||||
|
|
||||||
|
# rotating stars progress
|
||||||
|
show_progress() {
|
||||||
|
spin='-'
|
||||||
|
while ps | grep $1 &> /dev/null; do
|
||||||
|
echo -ne "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! $spin"
|
||||||
|
sleep 0.3
|
||||||
|
case $spin in
|
||||||
|
'-') spin='\';;
|
||||||
|
'\') spin='|';;
|
||||||
|
'|') spin='/';;
|
||||||
|
'/') spin='-';;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo -en "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! .... Done!"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Clearing cache
|
||||||
|
echo -n "${CAT} Recommend (choose y to all) to clear ${MAGENTA}pacman and aur helper${RESET} cache ..."
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
sudo pacman -Scc &&
|
||||||
|
$ISAUR -Scc
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "${NOTE} Installing ${BLUE}git hyprland version${RESET}....."
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
|
# Installing packages
|
||||||
|
for package in "${packages[@]}"; do
|
||||||
|
$ISAUR -S --noconfirm "$package" &>/dev/null &
|
||||||
|
pid=$!
|
||||||
|
|
||||||
|
show_progress $pid $package
|
||||||
|
|
||||||
|
wait $pid
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "\n${OK} ${ORANGE}$package${RESET} successfully installed."
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
else
|
||||||
|
echo -e "\n${ERROR} Failed to install ${MAGENTA}$package${RESET}"
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "${OK} Done!! Now you NEED to ${YELLOW}EXIT${RESET} Hyprland and Re-Login! Enjoy!!!!"
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
81
assets/hyprland-install/scripts/install-hyprland.sh
Executable file
81
assets/hyprland-install/scripts/install-hyprland.sh
Executable file
@@ -0,0 +1,81 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
|
||||||
|
|
||||||
|
# Set some colors for output messages
|
||||||
|
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
||||||
|
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
||||||
|
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
||||||
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
|
MAGENTA="$(tput setaf 5)"
|
||||||
|
ORANGE="$(tput setaf 214)"
|
||||||
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
ISAUR=$(command -v yay || command -v paru)
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
|
# List of packages to install / update
|
||||||
|
packages=(
|
||||||
|
"aquamarine"
|
||||||
|
"hyprutils"
|
||||||
|
"hyprcursor"
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
"hyprgraphics"
|
||||||
|
"hyprlang"
|
||||||
|
"hyprland-protocols"
|
||||||
|
"hyprland-qt-support"
|
||||||
|
"hyprland-qtutils"
|
||||||
|
"hyprland"
|
||||||
|
"hyprlock"
|
||||||
|
"hypridle"
|
||||||
|
"xdg-desktop-portal-hyprland"
|
||||||
|
"hyprpolkitagent"
|
||||||
|
"pyprland"
|
||||||
|
)
|
||||||
|
|
||||||
|
# rotating stars progress
|
||||||
|
show_progress() {
|
||||||
|
spin='-'
|
||||||
|
while ps | grep $1 &> /dev/null; do
|
||||||
|
echo -ne "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! $spin"
|
||||||
|
sleep 0.3
|
||||||
|
case $spin in
|
||||||
|
'-') spin='\';;
|
||||||
|
'\') spin='|';;
|
||||||
|
'|') spin='/';;
|
||||||
|
'/') spin='-';;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
echo -en "\rInstalling ${ORANGE}$2${RESET} ... Kindly wait! .... Done!"
|
||||||
|
}
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "${NOTE} Installing ${BLUE}non-git hyprland version${RESET}....."
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
|
# Installing packages
|
||||||
|
for package in "${packages[@]}"; do
|
||||||
|
$ISAUR -S --noconfirm "$package" &>/dev/null &
|
||||||
|
pid=$!
|
||||||
|
|
||||||
|
show_progress $pid $package
|
||||||
|
|
||||||
|
wait $pid
|
||||||
|
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo -e "\n${OK} ${ORANGE}$package${RESET} successfully installed."
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
else
|
||||||
|
echo -e "\n${ERROR} Failed to install ${MAGENTA}$package${RESET}"
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "${OK} Done!! Now you NEED to ${YELLOW}EXIT${RESET} Hyprland and Re-Login! Enjoy!!!!"
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
91
assets/hyprland-install/scripts/uninstall.sh
Executable file
91
assets/hyprland-install/scripts/uninstall.sh
Executable file
@@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# /* ---- 💫 https://github.com/JaKooLit 💫 ---- */ #
|
||||||
|
|
||||||
|
# uninstalling hyprland packages
|
||||||
|
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
||||||
|
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
||||||
|
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
||||||
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
|
MAGENTA="$(tput setaf 5)"
|
||||||
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
|
|
||||||
|
# List of packages to uninstall (including git versions)
|
||||||
|
packages=(
|
||||||
|
"aquamarine"
|
||||||
|
"aquamarine-git"
|
||||||
|
"hyprutils"
|
||||||
|
"hyprutils-git"
|
||||||
|
"hyprcursor"
|
||||||
|
"hyprcursor-git"
|
||||||
|
"hyprwayland-scanner"
|
||||||
|
"hyprwayland-scanner-git"
|
||||||
|
"hyprgraphics"
|
||||||
|
"hyprgraphics-git"
|
||||||
|
"hyprlang"
|
||||||
|
"hyprlang-git"
|
||||||
|
"hyprland-protocols"
|
||||||
|
"hyprland-protocols-git"
|
||||||
|
"hyprland-qt-support"
|
||||||
|
"hyprland-qt-support-git"
|
||||||
|
"hyprland-qtutils"
|
||||||
|
"hyprland-qtutils-git"
|
||||||
|
"hyprland"
|
||||||
|
"hyprland-git"
|
||||||
|
"hyprlock"
|
||||||
|
"hyprlock-git"
|
||||||
|
"hypridle"
|
||||||
|
"hypridle-git"
|
||||||
|
"xdg-desktop-portal-hyprland"
|
||||||
|
"xdg-desktop-portal-hyprland-git"
|
||||||
|
"hyprpolkitagent"
|
||||||
|
"hyprpolkitagent-git"
|
||||||
|
"pyprland"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Function for uninstall packages
|
||||||
|
uninstall_package() {
|
||||||
|
local pkg="$1"
|
||||||
|
|
||||||
|
if pacman -Qi "$pkg" &>> /dev/null ; then
|
||||||
|
echo -e "${NOTE} Uninstalling $pkg ..."
|
||||||
|
sudo pacman -Rnsdd --noconfirm "$pkg" | grep -v "error: target not found"
|
||||||
|
|
||||||
|
if ! pacman -Qi "$pkg" &>> /dev/null ; then
|
||||||
|
echo -e "\e[1A\e[K${OK} $pkg was uninstalled."
|
||||||
|
else
|
||||||
|
echo -e "\e[1A\e[K${ERROR} $pkg failed to uninstall"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo -e "${NOTE} $pkg is not installed, skipping uninstallation."
|
||||||
|
fi
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
printf "\n%s - Removing Hyprland Packages including -git versions \n" "${NOTE}"
|
||||||
|
|
||||||
|
# Track failures but continue with next packages
|
||||||
|
overall_failed=0
|
||||||
|
for PKG in "${packages[@]}"; do
|
||||||
|
uninstall_package "$PKG"
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
|
||||||
|
overall_failed=1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Remove specific configuration file since on my experience, it conflicts.
|
||||||
|
# Dont worry, it will be reinstalled by either xdph non-git or git version
|
||||||
|
sudo rm -rf "/usr/share/xdg-desktop-portal/hyprland-portals.conf"
|
||||||
|
|
||||||
|
if [ $overall_failed -eq 0 ]; then
|
||||||
|
echo -e "${OK} All specified hyprland packages have been uninstalled."
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
BIN
assets/sddm.png
Normal file
BIN
assets/sddm.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1007 KiB |
@@ -14,10 +14,10 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_base.log"
|
|||||||
|
|
||||||
|
|
||||||
# Installation of main components
|
# Installation of main components
|
||||||
printf "\n%s - Installing base-devel \n" "${NOTE}"
|
printf "\n%s - Installing ${SKY_BLUE}base-devel${RESET} \n" "${NOTE}"
|
||||||
|
|
||||||
for PKG1 in "${base[@]}"; do
|
for PKG1 in "${base[@]}"; do
|
||||||
sudo pacman -S --noconfirm "$PKG1" | tee -a "$LOG"
|
install_package_pacman "$PKG1" "$LOG"
|
||||||
done
|
done
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
@@ -13,6 +13,7 @@ Extra=(
|
|||||||
|
|
||||||
hypr_package=(
|
hypr_package=(
|
||||||
#aylurs-gtk-shell
|
#aylurs-gtk-shell
|
||||||
|
bc
|
||||||
cliphist
|
cliphist
|
||||||
curl
|
curl
|
||||||
grim
|
grim
|
||||||
@@ -40,6 +41,7 @@ hypr_package=(
|
|||||||
swappy
|
swappy
|
||||||
swaync
|
swaync
|
||||||
swww
|
swww
|
||||||
|
unzip # needed later
|
||||||
wallust
|
wallust
|
||||||
waybar
|
waybar
|
||||||
wget
|
wget
|
||||||
@@ -55,7 +57,7 @@ hypr_package_2=(
|
|||||||
brightnessctl
|
brightnessctl
|
||||||
btop
|
btop
|
||||||
cava
|
cava
|
||||||
eog
|
loupe
|
||||||
fastfetch
|
fastfetch
|
||||||
gnome-system-monitor
|
gnome-system-monitor
|
||||||
mousepad
|
mousepad
|
||||||
@@ -63,6 +65,7 @@ hypr_package_2=(
|
|||||||
mpv-mpris
|
mpv-mpris
|
||||||
nvtop
|
nvtop
|
||||||
nwg-look
|
nwg-look
|
||||||
|
nwg-displays
|
||||||
pacman-contrib
|
pacman-contrib
|
||||||
qalculate-gtk
|
qalculate-gtk
|
||||||
vim
|
vim
|
||||||
@@ -77,6 +80,8 @@ uninstall=(
|
|||||||
cachyos-hyprland-settings
|
cachyos-hyprland-settings
|
||||||
rofi
|
rofi
|
||||||
wallust-git
|
wallust-git
|
||||||
|
rofi-lbonn-wayland
|
||||||
|
rofi-lbonn-wayland-git
|
||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
@@ -92,15 +97,12 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypr-pkgs.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_hypr-pkgs.log"
|
||||||
|
|
||||||
# uninstalling conflicting packages
|
# conflicting packages removal
|
||||||
# Initialize a variable to track overall errors
|
|
||||||
overall_failed=0
|
overall_failed=0
|
||||||
|
printf "\n%s - ${SKY_BLUE}Removing some packages${RESET} as it conflicts with KooL's Hyprland Dots \n" "${NOTE}"
|
||||||
printf "\n%s - Removing Mako, Dunst, and rofi as they conflict with swaync and rofi-wayland \n" "${NOTE}"
|
|
||||||
for PKG in "${uninstall[@]}"; do
|
for PKG in "${uninstall[@]}"; do
|
||||||
uninstall_package "$PKG" 2>&1 | tee -a "$LOG"
|
uninstall_package "$PKG" 2>&1 | tee -a "$LOG"
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
# Track if any uninstallation failed
|
|
||||||
overall_failed=1
|
overall_failed=1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -109,17 +111,13 @@ if [ $overall_failed -ne 0 ]; then
|
|||||||
echo -e "${ERROR} Some packages failed to uninstall. Please check the log."
|
echo -e "${ERROR} Some packages failed to uninstall. Please check the log."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# Installation of main components
|
# Installation of main components
|
||||||
printf "\n%s - Installing hyprland packages.... \n" "${NOTE}"
|
printf "\n%s - Installing ${SKY_BLUE}KooL's hyprland necessary packages${RESET} .... \n" "${NOTE}"
|
||||||
|
|
||||||
for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do
|
for PKG1 in "${hypr_package[@]}" "${hypr_package_2[@]}" "${Extra[@]}"; do
|
||||||
install_package "$PKG1" 2>&1 | tee -a "$LOG"
|
install_package "$PKG1" "$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
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ packages=(
|
|||||||
|
|
||||||
# Local packages that should be in /usr/local/bin/
|
# Local packages that should be in /usr/local/bin/
|
||||||
local_pkgs_installed=(
|
local_pkgs_installed=(
|
||||||
ags
|
|
||||||
)
|
)
|
||||||
|
|
||||||
## 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! ##
|
||||||
@@ -40,19 +40,19 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/00_CHECK-$(date +%d-%H%M%S)_installed.log"
|
LOG="Install-Logs/00_CHECK-$(date +%d-%H%M%S)_installed.log"
|
||||||
|
|
||||||
printf "\n%s - Final Check if Essential packages were installed \n" "${NOTE}"
|
printf "\n%s - Final Check if all ${SKY_BLUE}Essential packages${RESET} were installed \n" "${NOTE}"
|
||||||
# Initialize an empty array to hold missing packages
|
# Initialize an empty array to hold missing packages
|
||||||
missing=()
|
missing=()
|
||||||
local_missing=()
|
local_missing=()
|
||||||
|
|
||||||
# Function to check if a package is installed using pacman
|
# Function to check if a packages are installed using pacman
|
||||||
is_installed_pacman() {
|
is_installed_pacman() {
|
||||||
pacman -Qi "$1" &>/dev/null
|
pacman -Qi "$1" &>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
# Loop through each package
|
# Loop through each package
|
||||||
for pkg in "${packages[@]}"; do
|
for pkg in "${packages[@]}"; do
|
||||||
# Check if the package is installed via pacman
|
# Check if the packages are installed
|
||||||
if ! is_installed_pacman "$pkg"; then
|
if ! is_installed_pacman "$pkg"; then
|
||||||
missing+=("$pkg")
|
missing+=("$pkg")
|
||||||
fi
|
fi
|
||||||
@@ -67,25 +67,24 @@ done
|
|||||||
|
|
||||||
# Log missing packages
|
# Log missing packages
|
||||||
if [ ${#missing[@]} -eq 0 ] && [ ${#local_missing[@]} -eq 0 ]; then
|
if [ ${#missing[@]} -eq 0 ] && [ ${#local_missing[@]} -eq 0 ]; then
|
||||||
echo "${OK} All essential packages are installed." | tee -a "$LOG"
|
echo "${OK} GREAT! It seems All ${YELLOW}essential packages${RESET} are installed." | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
if [ ${#missing[@]} -ne 0 ]; then
|
if [ ${#missing[@]} -ne 0 ]; then
|
||||||
echo "${WARN} The following packages are not installed and will be logged:"
|
echo "${WARN} The following packages are not installed and will be logged:"
|
||||||
for pkg in "${missing[@]}"; do
|
for pkg in "${missing[@]}"; do
|
||||||
echo "$pkg"
|
echo "${WARNING}$pkg${RESET}"
|
||||||
echo "$pkg" >> "$LOG" # Log the missing package to the file
|
echo "$pkg" >> "$LOG"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${#local_missing[@]} -ne 0 ]; then
|
if [ ${#local_missing[@]} -ne 0 ]; then
|
||||||
echo "${WARN} The following local packages are missing from /usr/local/bin/ and will be logged:"
|
echo "${WARN} The following local packages are missing from /usr/local/bin/ and will be logged:"
|
||||||
for pkg1 in "${local_missing[@]}"; do
|
for pkg1 in "${local_missing[@]}"; do
|
||||||
echo "$pkg1 is not installed. Can't find it in /usr/local/bin/"
|
echo "${WARNING}$pkg1${REST} is not installed. Can't find it in /usr/local/bin/"
|
||||||
echo "$pkg1" >> "$LOG" # Log the missing local package to the file
|
echo "$pkg1" >> "$LOG"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add a timestamp when the missing packages were logged
|
|
||||||
echo "${NOTE} Missing packages logged at $(date)" >> "$LOG"
|
echo "${NOTE} Missing packages logged at $(date)" >> "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -8,79 +8,125 @@ set -e
|
|||||||
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
||||||
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
||||||
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
||||||
WARN="$(tput setaf 5)[WARN]$(tput sgr0)"
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
ORANGE=$(tput setaf 166)
|
MAGENTA="$(tput setaf 5)"
|
||||||
YELLOW=$(tput setaf 3)
|
ORANGE="$(tput setaf 214)"
|
||||||
RESET=$(tput sgr0)
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
GREEN="$(tput setaf 2)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
SKY_BLUE="$(tput setaf 6)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
# Create Directory for Install Logs
|
# Create Directory for Install Logs
|
||||||
if [ ! -d Install-Logs ]; then
|
if [ ! -d Install-Logs ]; then
|
||||||
mkdir Install-Logs
|
mkdir Install-Logs
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Function for installing packages
|
# Show progress function
|
||||||
|
show_progress() {
|
||||||
|
local pid=$1
|
||||||
|
local package_name=$2
|
||||||
|
local spin_chars=("●○○○○○○○○○" "○●○○○○○○○○" "○○●○○○○○○○" "○○○●○○○○○○" "○○○○●○○○○" \
|
||||||
|
"○○○○○●○○○○" "○○○○○○●○○○" "○○○○○○○●○○" "○○○○○○○○●○" "○○○○○○○○○●")
|
||||||
|
local i=0
|
||||||
|
|
||||||
|
tput civis
|
||||||
|
printf "\r${NOTE} Installing ${YELLOW}%s${RESET} ..." "$package_name"
|
||||||
|
|
||||||
|
while ps -p $pid &> /dev/null; do
|
||||||
|
printf "\r${NOTE} Installing ${YELLOW}%s${RESET} %s" "$package_name" "${spin_chars[i]}"
|
||||||
|
i=$(( (i + 1) % 10 ))
|
||||||
|
sleep 0.3
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\r${NOTE} Installing ${YELLOW}%s${RESET} ... Done!%-20s \n" "$package_name" ""
|
||||||
|
tput cnorm
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Function to install packages with pacman
|
||||||
install_package_pacman() {
|
install_package_pacman() {
|
||||||
# Checking if package is already installed
|
# Check if package is already installed
|
||||||
if pacman -Q "$1" &>/dev/null ; then
|
if pacman -Q "$1" &>/dev/null ; then
|
||||||
echo -e "${OK} $1 is already installed. Skipping..."
|
echo -e "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..."
|
||||||
else
|
else
|
||||||
# Package not installed
|
# Run pacman and redirect all output to a log file
|
||||||
echo -e "${NOTE} Installing $1 ..."
|
(
|
||||||
sudo pacman -S --noconfirm --needed "$1" 2>&1 | tee -a "$LOG"
|
stdbuf -oL sudo pacman -S --noconfirm "$1" 2>&1
|
||||||
# Making sure package is installed
|
) >> "$LOG" 2>&1 &
|
||||||
|
PID=$!
|
||||||
|
show_progress $PID "$1"
|
||||||
|
|
||||||
|
# Double check if package is installed
|
||||||
if pacman -Q "$1" &>/dev/null ; then
|
if pacman -Q "$1" &>/dev/null ; then
|
||||||
echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
|
echo -e "${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
|
||||||
else
|
else
|
||||||
# Something is missing, exiting to review log
|
echo -e "\n${ERROR} ${YELLOW}$1${RESET} failed to install. Please check the $LOG. You may need to install manually."
|
||||||
echo -e "${ERROR} $1 failed to install. Please check the $LOG. You may need to install manually."
|
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ISAUR=$(command -v yay || command -v paru)
|
ISAUR=$(command -v yay || command -v paru)
|
||||||
|
|
||||||
# Function for installing packages
|
# Function to install packages with either yay or paru
|
||||||
install_package() {
|
install_package() {
|
||||||
# Checking if package is already installed
|
|
||||||
if $ISAUR -Q "$1" &>> /dev/null ; then
|
if $ISAUR -Q "$1" &>> /dev/null ; then
|
||||||
echo -e "${OK} $1 is already installed. Skipping..."
|
echo -e "${INFO} ${MAGENTA}$1${RESET} is already installed. Skipping..."
|
||||||
else
|
else
|
||||||
# Package not installed
|
(
|
||||||
echo -e "${NOTE} Installing $1 ..."
|
stdbuf -oL $ISAUR -S --noconfirm "$1" 2>&1
|
||||||
$ISAUR -S --noconfirm --needed "$1" 2>&1 | tee -a "$LOG"
|
) >> "$LOG" 2>&1 &
|
||||||
# Making sure package is installed
|
PID=$!
|
||||||
|
show_progress $PID "$1"
|
||||||
|
|
||||||
|
# Double check if package is installed
|
||||||
if $ISAUR -Q "$1" &>> /dev/null ; then
|
if $ISAUR -Q "$1" &>> /dev/null ; then
|
||||||
echo -e "\e[1A\e[K${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
|
echo -e "${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
|
||||||
else
|
else
|
||||||
# Something is missing, exiting to review log
|
# Something is missing, exiting to review log
|
||||||
echo -e "\e[1A\e[K${ERROR} $1 failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :("
|
echo -e "\n${ERROR} ${YELLOW}$1${RESET} failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :("
|
||||||
exit 1
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function for uninstalling packages
|
# Function to just install packages with either yay or paru without checking if installed
|
||||||
|
install_package_f() {
|
||||||
|
(
|
||||||
|
stdbuf -oL $ISAUR -S --noconfirm "$1" 2>&1
|
||||||
|
) >> "$LOG" 2>&1 &
|
||||||
|
PID=$!
|
||||||
|
show_progress $PID "$1"
|
||||||
|
|
||||||
|
# Double check if package is installed
|
||||||
|
if $ISAUR -Q "$1" &>> /dev/null ; then
|
||||||
|
echo -e "${OK} Package ${YELLOW}$1${RESET} has been successfully installed!"
|
||||||
|
else
|
||||||
|
# Something is missing, exiting to review log
|
||||||
|
echo -e "\n${ERROR} ${YELLOW}$1${RESET} failed to install :( , please check the install.log. You may need to install manually! Sorry I have tried :("
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function for removing packages
|
||||||
uninstall_package() {
|
uninstall_package() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
|
|
||||||
# Checking if package is installed
|
# Checking if package is installed
|
||||||
if pacman -Qi "$pkg" &>> /dev/null ; then
|
if pacman -Qi "$pkg" &>/dev/null; then
|
||||||
# Package is installed
|
echo -e "${NOTE} removing $pkg ..."
|
||||||
echo -e "${NOTE} Uninstalling $pkg ..."
|
|
||||||
sudo pacman -R --noconfirm "$pkg" 2>&1 | tee -a "$LOG" | grep -v "error: target not found"
|
sudo pacman -R --noconfirm "$pkg" 2>&1 | tee -a "$LOG" | grep -v "error: target not found"
|
||||||
# Check if the package was uninstalled
|
|
||||||
if ! pacman -Qi "$pkg" &>> /dev/null ; then
|
if ! pacman -Qi "$pkg" &>/dev/null; then
|
||||||
echo -e "\e[1A\e[K${OK} $pkg was uninstalled."
|
echo -e "\e[1A\e[K${OK} $pkg removed."
|
||||||
else
|
else
|
||||||
echo -e "\e[1A\e[K${ERROR} $pkg failed to uninstall. Please check the log."
|
echo -e "\e[1A\e[K${ERROR} $pkg Removal failed. No actions required."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
echo -e "${NOTE} $pkg is not installed, skipping uninstallation."
|
echo -e "${INFO} Package $pkg not installed, skipping."
|
||||||
fi
|
fi
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -2,10 +2,6 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# Adding users into input group #
|
# Adding users into input group #
|
||||||
|
|
||||||
if [[ $USE_PRESET = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
# Determine the directory where the script is located
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
@@ -19,41 +15,17 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_input.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_input.log"
|
||||||
|
|
||||||
while true; do
|
# Check if the 'input' group exists
|
||||||
echo "${WARN} This script will add your user to the 'input' group."
|
if grep -q '^input:' /etc/group; then
|
||||||
echo "${NOTE} Please note that adding yourself to the 'input' group might be necessary for waybar keyboard-state functionality."
|
echo "${OK} ${MAGENTA}input${RESET} group exists."
|
||||||
|
else
|
||||||
printf "\n%.0s" {1..1}
|
echo "${NOTE} ${MAGENTA}input${RESET} group doesn't exist. Creating ${MAGENTA}input${RESET} group..."
|
||||||
|
|
||||||
if [[ -z $input_group_choid ]]; then
|
|
||||||
read -p "${YELLOW}Do you want to proceed? (y/n): ${RESET}" input_group_choid
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $input_group_choid == "y" || $input_group_choid == "Y" ]]; then
|
|
||||||
# Check if the 'input' group exists
|
|
||||||
if grep -q '^input:' /etc/group; then
|
|
||||||
echo "${OK} 'input' group exists."
|
|
||||||
else
|
|
||||||
echo "${NOTE} 'input' group doesn't exist. Creating 'input' group..."
|
|
||||||
sudo groupadd input
|
sudo groupadd input
|
||||||
|
echo "${MAGENTA}input${RESET} group created" >> "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
# Log the creation of the 'input' group
|
# Add the user to the 'input' group
|
||||||
echo "'input' group created" >> "$LOG"
|
sudo usermod -aG input "$(whoami)"
|
||||||
fi
|
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"
|
||||||
|
|
||||||
# Add the user to the input group
|
printf "\n%.0s" {1..2}
|
||||||
sudo usermod -aG input "$(whoami)"
|
|
||||||
echo "${OK} User added to the 'input' group. Changes will take effect after you log out and log back in."
|
|
||||||
|
|
||||||
# Log the addition of the user to the 'input' group
|
|
||||||
echo "User added to 'input' group" >> "$LOG"
|
|
||||||
break # Break out of the loop if 'yes' is chosen
|
|
||||||
elif [[ $input_group_choid == "n" || $input_group_choid == "N" ]]; then
|
|
||||||
echo "${NOTE} No changes made. Exiting the script."
|
|
||||||
break # Break out of the loop if 'no' is chosen
|
|
||||||
else
|
|
||||||
echo "${ERROR} Invalid choice. Please enter 'y' for yes or 'n' for no."
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
clear
|
|
||||||
|
|||||||
@@ -1,6 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# Aylur's GTK Shell v 1.8.2#
|
# Aylur's GTK Shell v 1.9.0 #
|
||||||
|
# for desktop overview
|
||||||
|
|
||||||
|
if [[ $USE_PRESET = [Yy] ]]; then
|
||||||
|
source ./preset.sh
|
||||||
|
fi
|
||||||
|
|
||||||
ags=(
|
ags=(
|
||||||
typescript
|
typescript
|
||||||
@@ -10,7 +15,8 @@ ags=(
|
|||||||
gjs
|
gjs
|
||||||
gtk3
|
gtk3
|
||||||
gtk-layer-shell
|
gtk-layer-shell
|
||||||
upower networkmanager
|
upower
|
||||||
|
networkmanager
|
||||||
gobject-introspection
|
gobject-introspection
|
||||||
libdbusmenu-gtk3
|
libdbusmenu-gtk3
|
||||||
libsoup3
|
libsoup3
|
||||||
@@ -33,23 +39,28 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_ags.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_ags.log"
|
||||||
MLOG="install-$(date +%d-%H%M%S)_ags2.log"
|
MLOG="install-$(date +%d-%H%M%S)_ags2.log"
|
||||||
|
|
||||||
printf "\n%.0s" {1..1}
|
# Check if AGS is installed
|
||||||
|
if command -v ags &>/dev/null; then
|
||||||
|
AGS_VERSION=$(ags -v | awk '{print $NF}')
|
||||||
|
if [[ "$AGS_VERSION" == "1.9.0" ]]; then
|
||||||
|
printf "${INFO} ${MAGENTA}Aylur's GTK Shell v1.9.0${RESET} is already installed. Skipping installation."
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Installation of main components
|
# Installation of main components
|
||||||
printf "\n%s - Installing AGS Dependencies \n" "${NOTE}"
|
printf "\n%s - Installing ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET} Dependencies \n" "${NOTE}"
|
||||||
|
|
||||||
# Installing ags Dependencies
|
# Installing ags Dependencies
|
||||||
for PKG1 in "${ags[@]}"; do
|
for PKG1 in "${ags[@]}"; 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 Package installation failed, Please check the installation logs"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "\n%.0s" {1..1}
|
printf "\n%.0s" {1..1}
|
||||||
# ags
|
|
||||||
printf "${NOTE} Install and Compiling Aylurs GTK shell $ags_tag..\n"
|
# ags v1
|
||||||
|
printf "${NOTE} Install and Compiling ${SKY_BLUE}Aylur's GTK shell $ags_tag${RESET}..\n"
|
||||||
|
|
||||||
# Check if folder exists and remove it
|
# Check if folder exists and remove it
|
||||||
if [ -d "ags" ]; then
|
if [ -d "ags" ]; then
|
||||||
@@ -57,24 +68,26 @@ if [ -d "ags" ]; then
|
|||||||
rm -rf "ags"
|
rm -rf "ags"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Clone nwg-look repository with the specified tag
|
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 --recursive -b "$ags_tag" --depth 1 https://github.com/Aylur/ags.git; then
|
if git clone --recursive -b "$ags_tag" --depth 1 https://github.com/Aylur/ags.git; then
|
||||||
cd ags || exit 1
|
cd ags || exit 1
|
||||||
# Build and install ags
|
|
||||||
npm install
|
npm install
|
||||||
meson setup build
|
meson setup build
|
||||||
if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then
|
if sudo meson install -C build 2>&1 | tee -a "$MLOG"; then
|
||||||
printf "${OK} ags installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
printf "\n${OK} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} installed successfully.\n" 2>&1 | tee -a "$MLOG"
|
||||||
else
|
else
|
||||||
echo -e "${ERROR} Installation failed for ags" 2>&1 | tee -a "$MLOG"
|
echo -e "\n${ERROR} ${YELLOW}Aylur's GTK shell $ags_tag${RESET} Installation failed\n " 2>&1 | tee -a "$MLOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Move logs to Install-Logs directory
|
# Move logs to Install-Logs directory
|
||||||
mv "$MLOG" ../Install-Logs/ || true
|
mv "$MLOG" ../Install-Logs/ || true
|
||||||
cd ..
|
cd ..
|
||||||
else
|
else
|
||||||
echo -e "${ERROR} Failed to download ags Please check your connection" 2>&1 | tee -a "$LOG"
|
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
|
mv "$MLOG" ../Install-Logs/ || true
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
@@ -22,13 +22,12 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
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 Package installation failed, Please check the installation logs"; 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}
|
||||||
6
install-scripts/dotfiles-main.sh
Normal file → Executable file
6
install-scripts/dotfiles-main.sh
Normal file → Executable file
@@ -7,7 +7,7 @@
|
|||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
||||||
|
|
||||||
# Check if Hyprland-Dots exists
|
# Check if Hyprland-Dots exists
|
||||||
printf "${NOTE} Downloading KooL's Hyprland Dots....\n"
|
printf "${NOTE} Cloning and Installing ${SKY_BLUE}KooL's Hyprland Dots${RESET}....\n"
|
||||||
|
|
||||||
if [ -d Hyprland-Dots ]; then
|
if [ -d Hyprland-Dots ]; then
|
||||||
cd Hyprland-Dots
|
cd Hyprland-Dots
|
||||||
@@ -22,8 +22,8 @@ else
|
|||||||
chmod +x copy.sh
|
chmod +x copy.sh
|
||||||
./copy.sh
|
./copy.sh
|
||||||
else
|
else
|
||||||
echo -e "$ERROR Can't download Hyprland-Dots"
|
echo -e "$ERROR Can't download ${YELLOW}KooL's Hyprland-Dots${RESET} . Check your internet connection"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
# 💫 https://github.com/JaKooLit 💫 #
|
|
||||||
# Hyprland-Dots to download from Releases #
|
|
||||||
if [[ $USE_PRESET = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
|
||||||
|
|
||||||
source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|
||||||
|
|
||||||
printf "${NOTE} Downloading / Checking for existing Hyprland-Dots.tar.gz...\n"
|
|
||||||
|
|
||||||
# Check if Hyprland-Dots.tar.gz exists
|
|
||||||
if [ -f Hyprland-Dots.tar.gz ]; then
|
|
||||||
printf "${NOTE} Hyprland-Dots.tar.gz found.\n"
|
|
||||||
|
|
||||||
# Get the version from the existing tarball filename
|
|
||||||
existing_version=$(echo Hyprland-Dots.tar.gz | grep -oP 'v\d+\.\d+\.\d+' | sed 's/v//')
|
|
||||||
|
|
||||||
# Fetch the tag_name for the latest release using the GitHub API
|
|
||||||
latest_version=$(curl -s https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/latest | grep "tag_name" | cut -d '"' -f 4 | sed 's/v//')
|
|
||||||
|
|
||||||
# Check if versions match
|
|
||||||
if [ "$existing_version" = "$latest_version" ]; then
|
|
||||||
echo -e "${OK} Hyprland-Dots.tar.gz is up-to-date with the latest release ($latest_version)."
|
|
||||||
|
|
||||||
# Sleep for 10 seconds before exiting
|
|
||||||
printf "${NOTE} No update found. Sleeping for 10 seconds...\n"
|
|
||||||
sleep 10
|
|
||||||
exit 0
|
|
||||||
else
|
|
||||||
echo -e "${WARN} Hyprland-Dots.tar.gz is outdated (Existing version: $existing_version, Latest version: $latest_version)."
|
|
||||||
if [[ -z $upgrade_choice ]]; then
|
|
||||||
read -p "Do you want to upgrade to the latest version? (y/n): " upgrade_choice
|
|
||||||
fi
|
|
||||||
if [ "$upgrade_choice" = "y" ]; then
|
|
||||||
echo -e "${NOTE} Proceeding to download the latest release." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
|
|
||||||
|
|
||||||
# Delete existing directories starting with JaKooLit-Hyprland-Dots
|
|
||||||
find . -type d -name 'JaKooLit-Hyprland-Dots*' -exec rm -rf {} +
|
|
||||||
rm -f Hyprland-Dots.tar.gz
|
|
||||||
printf "${WARN} Removed existing Hyprland-Dots.tar.gz.\n"
|
|
||||||
else
|
|
||||||
echo -e "${NOTE} User chose not to upgrade. Exiting..." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "${NOTE} Downloading the latest Hyprland source code release...\n"
|
|
||||||
|
|
||||||
# Fetch the tag name for the latest release using the GitHub API
|
|
||||||
latest_tag=$(curl -s https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/latest | grep "tag_name" | cut -d '"' -f 4)
|
|
||||||
|
|
||||||
# Check if the tag is obtained successfully
|
|
||||||
if [ -z "$latest_tag" ]; then
|
|
||||||
echo -e "${ERROR} Unable to fetch the latest tag information." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Fetch the tarball URL for the latest release using the GitHub API
|
|
||||||
latest_tarball_url=$(curl -s https://api.github.com/repos/JaKooLit/Hyprland-Dots/releases/latest | grep "tarball_url" | cut -d '"' -f 4)
|
|
||||||
|
|
||||||
# Check if the URL is obtained successfully
|
|
||||||
if [ -z "$latest_tarball_url" ]; then
|
|
||||||
echo -e "${ERROR} Unable to fetch the tarball URL for the latest release." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Get the filename from the URL and include the tag name in the file name
|
|
||||||
file_name="Hyprland-Dots-${latest_tag}.tar.gz"
|
|
||||||
|
|
||||||
# Download the latest release source code tarball to the current directory
|
|
||||||
if curl -L "$latest_tarball_url" -o "$file_name"; then
|
|
||||||
# Extract the contents of the tarball
|
|
||||||
tar -xzf "$file_name" || exit 1
|
|
||||||
|
|
||||||
# delete existing Hyprland-Dots
|
|
||||||
rm -rf JaKooLit-Hyprland-Dots
|
|
||||||
|
|
||||||
# Identify the extracted directory
|
|
||||||
extracted_directory=$(tar -tf "$file_name" | grep -o '^[^/]\+' | uniq)
|
|
||||||
|
|
||||||
# Rename the extracted directory to JaKooLit-Hyprland-Dots
|
|
||||||
mv "$extracted_directory" JaKooLit-Hyprland-Dots || exit 1
|
|
||||||
|
|
||||||
cd "JaKooLit-Hyprland-Dots" || exit 1
|
|
||||||
|
|
||||||
# Set execute permission for copy.sh and execute it
|
|
||||||
chmod +x copy.sh
|
|
||||||
./copy.sh
|
|
||||||
|
|
||||||
echo -e "${OK} Latest Dotfiles release downloaded, extracted, and processed successfully. Check JaKooLit-Hyprland-Dots folder for more detailed install logs" 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
|
|
||||||
else
|
|
||||||
echo -e "${ERROR} Failed to download the latest Dotfiles release." 2>&1 | tee -a "../Install-Logs/install-$(date +'%d-%H%M%S')_dotfiles.log"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
clear
|
|
||||||
@@ -12,8 +12,10 @@ fonts=(
|
|||||||
otf-font-awesome
|
otf-font-awesome
|
||||||
ttf-droid
|
ttf-droid
|
||||||
ttf-fira-code
|
ttf-fira-code
|
||||||
|
ttf-fantasque-nerd
|
||||||
ttf-jetbrains-mono
|
ttf-jetbrains-mono
|
||||||
ttf-jetbrains-mono-nerd
|
ttf-jetbrains-mono-nerd
|
||||||
|
ttf-victor-mono
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -32,15 +34,10 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_fonts.log"
|
|||||||
|
|
||||||
|
|
||||||
# Installation of main components
|
# Installation of main components
|
||||||
printf "\n%s - Installing necessary 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 Package installation failed, Please check the installation logs"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
@@ -24,11 +24,7 @@ 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 Package installation failed, Please check the installation logs"
|
|
||||||
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
|
||||||
@@ -37,7 +33,7 @@ if [ -d "GTK-themes-icons" ]; then
|
|||||||
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 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 --depth 1 https://github.com/JaKooLit/GTK-themes-icons.git ; then
|
if git clone --depth 1 https://github.com/JaKooLit/GTK-themes-icons.git ; then
|
||||||
cd GTK-themes-icons
|
cd GTK-themes-icons
|
||||||
chmod +x auto-extract.sh
|
chmod +x auto-extract.sh
|
||||||
@@ -48,4 +44,4 @@ else
|
|||||||
echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG"
|
echo "$ERROR Download failed for GTK themes and Icons.." 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
@@ -27,20 +27,16 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
# Removing other Hyprland to avoid conflict
|
# Removing other Hyprland to avoid conflict
|
||||||
printf "${YELLOW} Checking for other hyprland packages and remove if any..${RESET}\n"
|
printf "${YELLOW} Checking for other hyprland packages and remove if any..${RESET}\n"
|
||||||
if pacman -Qs hyprland >/dev/null; then
|
if pacman -Qs hyprland >/dev/null; then
|
||||||
printf "${YELLOW} Hyprland detected. uninstalling to install Hyprland-git...${RESET}\n"
|
printf "${YELLOW} Hyprland detected. attempting to uninstall to install Hyprland from official repo...${RESET}\n"
|
||||||
for hyprnvi in hyprland-git hyprland-nvidia hyprland-nvidia-git hyprland-nvidia-hidpi-git; do
|
for hyprnvi in hyprland-git hyprland-nvidia hyprland-nvidia-git hyprland-nvidia-hidpi-git; do
|
||||||
sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true
|
sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Hyprland
|
# Hyprland
|
||||||
printf "${NOTE} Installing Hyprland .......\n"
|
printf "${NOTE} Installing ${SKY_BLUE}Hyprland packages${RESET} .......\n"
|
||||||
for HYPR in "${hypr[@]}"; do
|
for HYPR in "${hypr[@]}"; do
|
||||||
install_package "$HYPR" 2>&1 | tee -a "$LOG"
|
install_package "$HYPR" "$LOG"
|
||||||
[ $? -ne 0 ] && {
|
|
||||||
echo -e "\e[1A\e[K${ERROR} - $HYPR Package installation failed, Please check the installation logs"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
done
|
done
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# Nvidia Stuffs #
|
# Nvidia Stuffs #
|
||||||
if [[ $USE_PRESET = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
nvidia_pkg=(
|
nvidia_pkg=(
|
||||||
nvidia-dkms
|
nvidia-dkms
|
||||||
@@ -31,17 +28,17 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_nvidia.log"
|
|||||||
# nvidia stuff
|
# nvidia stuff
|
||||||
printf "${YELLOW} Checking for other hyprland packages and remove if any..${RESET}\n"
|
printf "${YELLOW} Checking for other hyprland packages and remove if any..${RESET}\n"
|
||||||
if pacman -Qs hyprland > /dev/null; then
|
if pacman -Qs hyprland > /dev/null; then
|
||||||
printf "${YELLOW} Hyprland detected. uninstalling to install Hyprland from official repo...${RESET}\n"
|
printf "${YELLOW} Hyprland detected. removing to install Hyprland from official repo...${RESET}\n"
|
||||||
for hyprnvi in hyprland-git hyprland-nvidia hyprland-nvidia-git hyprland-nvidia-hidpi-git; do
|
for hyprnvi in hyprland-git hyprland-nvidia hyprland-nvidia-git hyprland-nvidia-hidpi-git; do
|
||||||
sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true
|
sudo pacman -R --noconfirm "$hyprnvi" 2>/dev/null | tee -a "$LOG" || true
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Install additional Nvidia packages
|
# Install additional Nvidia packages
|
||||||
printf "${YELLOW} Installing Nvidia Packages and Linux headers...\n"
|
printf "${YELLOW} Installing ${SKY_BLUE}Nvidia Packages and Linux headers${RESET}...\n"
|
||||||
for krnl in $(cat /usr/lib/modules/*/pkgbase); do
|
for krnl in $(cat /usr/lib/modules/*/pkgbase); do
|
||||||
for NVIDIA in "${krnl}-headers" "${nvidia_pkg[@]}"; do
|
for NVIDIA in "${krnl}-headers" "${nvidia_pkg[@]}"; do
|
||||||
install_package "$NVIDIA" 2>&1 | tee -a "$LOG"
|
install_package "$NVIDIA" "$LOG"
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
@@ -50,17 +47,19 @@ if grep -qE '^MODULES=.*nvidia. *nvidia_modeset.*nvidia_uvm.*nvidia_drm' /etc/mk
|
|||||||
echo "Nvidia modules already included in /etc/mkinitcpio.conf" 2>&1 | tee -a "$LOG"
|
echo "Nvidia modules already included in /etc/mkinitcpio.conf" 2>&1 | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
sudo sed -Ei 's/^(MODULES=\([^\)]*)\)/\1 nvidia nvidia_modeset nvidia_uvm nvidia_drm)/' /etc/mkinitcpio.conf 2>&1 | tee -a "$LOG"
|
sudo sed -Ei 's/^(MODULES=\([^\)]*)\)/\1 nvidia nvidia_modeset nvidia_uvm nvidia_drm)/' /etc/mkinitcpio.conf 2>&1 | tee -a "$LOG"
|
||||||
echo "Nvidia modules added in /etc/mkinitcpio.conf"
|
echo "${OK} Nvidia modules added in /etc/mkinitcpio.conf"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
printf "${INFO} Rebuilding ${YELLOW}Initramfs${RESET}...\n" 2>&1 | tee -a "$LOG"
|
||||||
sudo mkinitcpio -P 2>&1 | tee -a "$LOG"
|
sudo mkinitcpio -P 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
printf "\n%.0s" {1..3}
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# Additional Nvidia steps
|
# Additional Nvidia steps
|
||||||
NVEA="/etc/modprobe.d/nvidia.conf"
|
NVEA="/etc/modprobe.d/nvidia.conf"
|
||||||
if [ -f "$NVEA" ]; then
|
if [ -f "$NVEA" ]; then
|
||||||
printf "${OK} Seems like nvidia-drm modeset=1 is already added in your system..moving on."
|
printf "${INFO} Seems like ${YELLOW}nvidia_drm modeset=1 fbdev=1${RESET} is already added in your system..moving on."
|
||||||
printf "\n"
|
printf "\n"
|
||||||
else
|
else
|
||||||
printf "\n"
|
printf "\n"
|
||||||
@@ -71,32 +70,32 @@ fi
|
|||||||
|
|
||||||
# Additional for GRUB users
|
# Additional for GRUB users
|
||||||
if [ -f /etc/default/grub ]; then
|
if [ -f /etc/default/grub ]; then
|
||||||
printf "GRUB bootloader detected\n" 2>&1 | tee -a "$LOG"
|
printf "${INFO} ${YELLOW}GRUB${RESET} bootloader detected\n" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
# Check if nvidia-drm.modeset=1 is present
|
# Check if nvidia-drm.modeset=1 is present
|
||||||
if ! sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub; then
|
if ! sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub; then
|
||||||
sudo sed -i -e 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia-drm.modeset=1"/' /etc/default/grub
|
sudo sed -i -e 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia-drm.modeset=1"/' /etc/default/grub
|
||||||
printf "nvidia-drm.modeset=1 added to /etc/default/grub\n" 2>&1 | tee -a "$LOG"
|
printf "${OK} nvidia-drm.modeset=1 added to /etc/default/grub\n" 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if nvidia_drm.fbdev=1 is present
|
# Check if nvidia_drm.fbdev=1 is present
|
||||||
if ! sudo grep -q "nvidia_drm.fbdev=1" /etc/default/grub; then
|
if ! sudo grep -q "nvidia_drm.fbdev=1" /etc/default/grub; then
|
||||||
sudo sed -i -e 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia_drm.fbdev=1"/' /etc/default/grub
|
sudo sed -i -e 's/\(GRUB_CMDLINE_LINUX_DEFAULT=".*\)"/\1 nvidia_drm.fbdev=1"/' /etc/default/grub
|
||||||
printf "nvidia_drm.fbdev=1 added to /etc/default/grub\n" 2>&1 | tee -a "$LOG"
|
printf "${OK} nvidia_drm.fbdev=1 added to /etc/default/grub\n" 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Regenerate GRUB configuration
|
# Regenerate GRUB configuration
|
||||||
if sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub || sudo grep -q "nvidia_drm.fbdev=1" /etc/default/grub; then
|
if sudo grep -q "nvidia-drm.modeset=1" /etc/default/grub || sudo grep -q "nvidia_drm.fbdev=1" /etc/default/grub; then
|
||||||
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
sudo grub-mkconfig -o /boot/grub/grub.cfg
|
||||||
printf "GRUB configuration regenerated\n" 2>&1 | tee -a "$LOG"
|
printf "${INFO} ${YELLOW}GRUB${RESET} configuration regenerated\n" 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "Additional steps for GRUB completed\n" 2>&1 | tee -a "$LOG"
|
printf "${OK} Additional steps for ${YELLOW}GRUB${RESET} completed\n" 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Additional for systemd-boot users
|
# Additional for systemd-boot users
|
||||||
if [ -f /boot/loader/loader.conf ]; then
|
if [ -f /boot/loader/loader.conf ]; then
|
||||||
printf "systemd-boot bootloader detected\n" 2>&1 | tee -a "$LOG"
|
printf "${INFO} ${YELLOW}systemd-boot${RESET} bootloader detected\n" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
backup_count=$(find /boot/loader/entries/ -type f -name "*.conf.bak" | wc -l)
|
backup_count=$(find /boot/loader/entries/ -type f -name "*.conf.bak" | wc -l)
|
||||||
conf_count=$(find /boot/loader/entries/ -type f -name "*.conf" | wc -l)
|
conf_count=$(find /boot/loader/entries/ -type f -name "*.conf" | wc -l)
|
||||||
@@ -105,43 +104,17 @@ if [ -f /boot/loader/loader.conf ]; then
|
|||||||
find /boot/loader/entries/ -type f -name "*.conf" | while read imgconf; do
|
find /boot/loader/entries/ -type f -name "*.conf" | while read imgconf; do
|
||||||
# Backup conf
|
# Backup conf
|
||||||
sudo cp "$imgconf" "$imgconf.bak"
|
sudo cp "$imgconf" "$imgconf.bak"
|
||||||
printf "Backup created for systemd-boot loader: %s\n" "$imgconf" 2>&1 | tee -a "$LOG"
|
printf "${INFO} Backup created for systemd-boot loader: %s\n" "$imgconf" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
# Clean up options and update with NVIDIA settings
|
# Clean up options and update with NVIDIA settings
|
||||||
sdopt=$(grep -w "^options" "$imgconf" | sed 's/\b nvidia-drm.modeset=[^ ]*\b//g' | sed 's/\b nvidia_drm.fbdev=[^ ]*\b//g')
|
sdopt=$(grep -w "^options" "$imgconf" | sed 's/\b nvidia-drm.modeset=[^ ]*\b//g' | sed 's/\b nvidia_drm.fbdev=[^ ]*\b//g')
|
||||||
sudo sed -i "/^options/c${sdopt} nvidia-drm.modeset=1 nvidia_drm.fbdev=1" "$imgconf" 2>&1 | tee -a "$LOG"
|
sudo sed -i "/^options/c${sdopt} nvidia-drm.modeset=1 nvidia_drm.fbdev=1" "$imgconf" 2>&1 | tee -a "$LOG"
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "Additional steps for systemd-boot completed\n" 2>&1 | tee -a "$LOG"
|
printf "${OK} Additional steps for ${YELLOW}systemd-boot${RESET} completed\n" 2>&1 | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
printf "systemd-boot is already configured...\n" 2>&1 | tee -a "$LOG"
|
printf "${NOTE} ${YELLOW}systemd-boot${RESET} is already configured...\n" 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
# Blacklist nouveau
|
|
||||||
if [[ -z $blacklist_nouveau ]]; then
|
|
||||||
read -n1 -rep "${CAT} Would you like to blacklist nouveau? (y/n)" blacklist_nouveau
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
if [[ $blacklist_nouveau =~ ^[Yy]$ ]]; then
|
|
||||||
NOUVEAU="/etc/modprobe.d/nouveau.conf"
|
|
||||||
if [ -f "$NOUVEAU" ]; then
|
|
||||||
printf "${OK} Seems like nouveau is already blacklisted..moving on.\n"
|
|
||||||
else
|
|
||||||
echo "blacklist nouveau" | sudo tee -a "$NOUVEAU" 2>&1 | tee -a "$LOG"
|
|
||||||
printf "${NOTE} has been added to $NOUVEAU.\n"
|
|
||||||
printf "\n"
|
|
||||||
|
|
||||||
# To completely blacklist nouveau (See wiki.archlinux.org/title/Kernel_module#Blacklisting 6.1)
|
|
||||||
if [ -f "/etc/modprobe.d/blacklist.conf" ]; then
|
|
||||||
echo "install nouveau /bin/true" | sudo tee -a "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
|
|
||||||
else
|
|
||||||
echo "install nouveau /bin/true" | sudo tee "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
printf "${NOTE} Skipping nouveau blacklisting..." 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
clear
|
|
||||||
34
install-scripts/nvidia_nouveau.sh
Executable file
34
install-scripts/nvidia_nouveau.sh
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# Nvidia Blacklist #
|
||||||
|
|
||||||
|
## 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)_nvidia.log"
|
||||||
|
|
||||||
|
printf "${INFO} ${SKY_BLUE}blacklist nouveau${RESET}...\n"
|
||||||
|
# Blacklist nouveau
|
||||||
|
NOUVEAU="/etc/modprobe.d/nouveau.conf"
|
||||||
|
if [ -f "$NOUVEAU" ]; then
|
||||||
|
printf "${OK} Seems like ${YELLOW}nouveau${RESET} is already blacklisted..moving on.\n"
|
||||||
|
else
|
||||||
|
echo "blacklist nouveau" | sudo tee -a "$NOUVEAU" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
# To completely blacklist nouveau (See wiki.archlinux.org/title/Kernel_module#Blacklisting 6.1)
|
||||||
|
if [ -f "/etc/modprobe.d/blacklist.conf" ]; then
|
||||||
|
echo "install nouveau /bin/true" | sudo tee -a "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
|
||||||
|
else
|
||||||
|
echo "install nouveau /bin/true" | sudo tee "/etc/modprobe.d/blacklist.conf" 2>&1 | tee -a "$LOG"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
@@ -8,7 +8,7 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_pacman.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_pacman.log"
|
||||||
|
|
||||||
echo -e "${NOTE} Adding Extra Spice in pacman.conf ... ${RESET}" 2>&1 | tee -a "$LOG"
|
echo -e "${NOTE} Adding ${MAGENTA}Extra Spice${RESET} in pacman.conf ... ${RESET}" 2>&1 | tee -a "$LOG"
|
||||||
pacman_conf="/etc/pacman.conf"
|
pacman_conf="/etc/pacman.conf"
|
||||||
|
|
||||||
# Remove comments '#' from specific lines
|
# Remove comments '#' from specific lines
|
||||||
@@ -32,14 +32,16 @@ done
|
|||||||
# Add "ILoveCandy" below ParallelDownloads if it doesn't exist
|
# Add "ILoveCandy" below ParallelDownloads if it doesn't exist
|
||||||
if grep -q "^ParallelDownloads" "$pacman_conf" && ! grep -q "^ILoveCandy" "$pacman_conf"; then
|
if grep -q "^ParallelDownloads" "$pacman_conf" && ! grep -q "^ILoveCandy" "$pacman_conf"; then
|
||||||
sudo sed -i "/^ParallelDownloads/a ILoveCandy" "$pacman_conf"
|
sudo sed -i "/^ParallelDownloads/a ILoveCandy" "$pacman_conf"
|
||||||
echo -e "${CAT} Added ILoveCandy below ParallelDownloads. ${RESET}" 2>&1 | tee -a "$LOG"
|
echo -e "${CAT} Added ${MAGENTA}ILoveCandy${RESET} after ${MAGENTA}ParallelDownloads${RESET}. ${RESET}" 2>&1 | tee -a "$LOG"
|
||||||
else
|
else
|
||||||
echo -e "${CAT} ILoveCandy already exists ${RESET}" 2>&1 | tee -a "$LOG"
|
echo -e "${CAT} It seems ${YELLOW}ILoveCandy${RESET} already exists ${RESET} moving on.." 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo -e "${CAT} Pacman.conf spicing up completed ${RESET}" 2>&1 | tee -a "$LOG"
|
echo -e "${CAT} ${MAGENTA}Pacman.conf${RESET} spicing up completed ${RESET}" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
|
||||||
# updating pacman.conf
|
# updating pacman.conf
|
||||||
|
printf "\n%s - ${SKY_BLUE}Synchronizing Pacman Repo${RESET}\n" "${INFO}"
|
||||||
sudo pacman -Sy
|
sudo pacman -Sy
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
|
|||||||
@@ -3,43 +3,47 @@
|
|||||||
# Paru AUR Helper #
|
# Paru AUR Helper #
|
||||||
# NOTE: If yay is already installed, paru will not be installed #
|
# NOTE: If yay is already installed, paru will not be installed #
|
||||||
|
|
||||||
|
pkg="paru-bin"
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="install-$(date +%d-%H%M%S)_paru.log"
|
LOG="install-$(date +%d-%H%M%S)_yay.log"
|
||||||
|
|
||||||
# Set some colors for output messages
|
# Set some colors for output messages
|
||||||
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
||||||
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
||||||
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
||||||
WARN="$(tput setaf 5)[WARN]$(tput sgr0)"
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
ORANGE=$(tput setaf 166)
|
MAGENTA="$(tput setaf 5)"
|
||||||
YELLOW=$(tput setaf 3)
|
ORANGE="$(tput setaf 214)"
|
||||||
RESET=$(tput sgr0)
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
GREEN="$(tput setaf 2)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
SKY_BLUE="$(tput setaf 6)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
# Create Directory for Install Logs
|
# Create Directory for Install Logs
|
||||||
if [ ! -d Install-Logs ]; then
|
if [ ! -d Install-Logs ]; then
|
||||||
mkdir Install-Logs
|
mkdir Install-Logs
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# checking if paru exist and removing if it is
|
|
||||||
if [ -d paru-bin ]; then
|
|
||||||
rm -rf paru-bin 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for AUR helper and install if not found
|
# Check for AUR helper and install if not found
|
||||||
ISAUR=$(command -v yay || command -v paru)
|
ISAUR=$(command -v yay || command -v paru)
|
||||||
|
|
||||||
if [ -n "$ISAUR" ]; then
|
if [ -n "$ISAUR" ]; then
|
||||||
printf "\n%s - AUR helper already installed, moving on..\n" "${OK}"
|
printf "\n%s - ${SKY_BLUE}AUR helper${RESET} already installed, moving on.\n" "${OK}"
|
||||||
else
|
else
|
||||||
printf "\n%s - AUR helper was NOT located\n" "$WARN"
|
printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
|
||||||
printf "\n%s - Installing paru-bin from AUR\n" "${NOTE}"
|
|
||||||
git clone https://aur.archlinux.org/paru-bin.git || { printf "%s - Failed to clone paru-bin from AUR\n" "${ERROR}"; exit 1; }
|
# Check if folder exists and remove it
|
||||||
cd paru-bin || { printf "%s - Failed to enter paru directory\n" "${ERROR}"; exit 1; }
|
if [ -d "$pkg" ]; then
|
||||||
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install paru-bin from AUR\n" "${ERROR}"; exit 1; }
|
rm -rf "$pkg"
|
||||||
|
fi
|
||||||
|
git clone https://aur.archlinux.org/$pkg.git || { printf "%s - Failed to clone ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
||||||
|
cd $pkg || { printf "%s - Failed to enter $pkg directory\n" "${ERROR}"; exit 1; }
|
||||||
|
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
||||||
|
|
||||||
# moving install logs in to Install-Logs folder
|
# moving install logs in to Install-Logs folder
|
||||||
mv install*.log ../Install-Logs/ || true
|
mv install*.log ../Install-Logs/ || true
|
||||||
@@ -52,4 +56,4 @@ ISAUR=$(command -v yay || command -v paru)
|
|||||||
|
|
||||||
$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; }
|
$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; }
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
@@ -11,6 +11,12 @@ pipewire=(
|
|||||||
sof-firmware
|
sof-firmware
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# added this as some reports script didnt install this.
|
||||||
|
# basically force reinstall
|
||||||
|
pipewire_2=(
|
||||||
|
pipewire-pulse
|
||||||
|
)
|
||||||
|
|
||||||
############## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##############
|
############## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##############
|
||||||
# Set some colors for output messages
|
# Set some colors for output messages
|
||||||
# Determine the directory where the script is located
|
# Determine the directory where the script is located
|
||||||
@@ -25,21 +31,25 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_pipewire.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_pipewire.log"
|
||||||
|
|
||||||
ISAUR=$(command -v yay || command -v paru)
|
# Disabling pulseaudio to avoid conflicts and logging output
|
||||||
|
echo -e "${NOTE} Disabling pulseaudio to avoid conflicts..."
|
||||||
# Disabling pulseaudio to avoid conflicts
|
systemctl --user disable --now pulseaudio.socket pulseaudio.service >> "$LOG" 2>&1 || true
|
||||||
systemctl --user disable --now pulseaudio.socket pulseaudio.service 2>/dev/null && tee -a "$LOG"
|
|
||||||
|
|
||||||
# Pipewire
|
# Pipewire
|
||||||
printf "${NOTE} Installing Pipewire Packages...\n"
|
echo -e "${NOTE} Installing ${SKY_BLUE}Pipewire${RESET} Packages..."
|
||||||
for PIPEWIRE in "${pipewire[@]}"; do
|
for PIPEWIRE in "${pipewire[@]}"; do
|
||||||
install_package "$PIPEWIRE" 2>&1 | tee -a "$LOG"
|
install_package "$PIPEWIRE" "$LOG"
|
||||||
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $PIPEWIRE Package installation failed, Please check the installation logs"; exit 1; }
|
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "Activating Pipewire Services...\n"
|
for PIPEWIRE2 in "${pipewire_2[@]}"; do
|
||||||
|
install_package_pacman "$PIPEWIRE" "$LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo -e "${NOTE} Activating Pipewire Services..."
|
||||||
|
# Redirect systemctl output to log file
|
||||||
systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service 2>&1 | tee -a "$LOG"
|
systemctl --user enable --now pipewire.socket pipewire-pulse.socket wireplumber.service 2>&1 | tee -a "$LOG"
|
||||||
systemctl --user enable --now pipewire.service 2>&1 | tee -a "$LOG"
|
systemctl --user enable --now pipewire.service 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
echo -e "\n${OK} Pipewire Installation and services setup complete!" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
|
|||||||
@@ -2,6 +2,13 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# Asus ROG Laptops #
|
# Asus ROG Laptops #
|
||||||
|
|
||||||
|
rog=(
|
||||||
|
power-profiles-daemon
|
||||||
|
asusctl
|
||||||
|
supergfxctl
|
||||||
|
rog-control-center
|
||||||
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
# Determine the directory where the script is located
|
||||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
@@ -17,13 +24,9 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_rog.log"
|
|||||||
|
|
||||||
### Install software for Asus ROG laptops ###
|
### Install software for Asus ROG laptops ###
|
||||||
|
|
||||||
printf " Installing ASUS ROG packages...\n"
|
printf " Installing ${SKY_BLUE}ASUS ROG packages${RESET}...\n"
|
||||||
for ASUS in power-profiles-daemon asusctl supergfxctl rog-control-center; do
|
for ASUS in "${rog[@]}"; do
|
||||||
install_package "$ASUS" 2>&1 | tee -a "$LOG"
|
install_package "$ASUS" "$LOG"
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "\e[1A\e[K${ERROR} - $ASUS Package installation failed, Please check the installation logs"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
printf " Activating ROG services...\n"
|
printf " Activating ROG services...\n"
|
||||||
@@ -32,5 +35,4 @@ sudo systemctl enable supergfxd 2>&1 | tee -a "$LOG"
|
|||||||
printf " enabling power-profiles-daemon...\n"
|
printf " enabling power-profiles-daemon...\n"
|
||||||
sudo systemctl enable power-profiles-daemon 2>&1 | tee -a "$LOG"
|
sudo systemctl enable power-profiles-daemon 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# SDDM Log-in Manager #
|
# SDDM Log-in Manager #
|
||||||
if [[ $USE_PRESET = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
sddm=(
|
sddm=(
|
||||||
qt6-5compat
|
qt6-5compat
|
||||||
@@ -12,8 +9,16 @@ sddm=(
|
|||||||
sddm
|
sddm
|
||||||
)
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
# login managers to attempt to disable
|
||||||
|
login=(
|
||||||
|
lightdm
|
||||||
|
gdm3
|
||||||
|
gdm
|
||||||
|
lxdm
|
||||||
|
lxdm-gtk3
|
||||||
|
)
|
||||||
|
|
||||||
|
## 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 )"
|
||||||
|
|
||||||
@@ -30,75 +35,32 @@ LOG="Install-Logs/install-$(date +%d-%H%M%S)_sddm.log"
|
|||||||
# Install SDDM and SDDM theme
|
# Install SDDM and SDDM theme
|
||||||
printf "${NOTE} Installing sddm and dependencies........\n"
|
printf "${NOTE} Installing sddm and dependencies........\n"
|
||||||
for package in "${sddm[@]}"; do
|
for package in "${sddm[@]}"; do
|
||||||
install_package "$package" 2>&1 | tee -a "$LOG"
|
install_package "$package" "$LOG"
|
||||||
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $package Package installation failed, Please check the installation logs"; exit 1; }
|
|
||||||
done
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# Check if other login managers installed and disabling its service before enabling sddm
|
# Check if other login managers installed and disabling its service before enabling sddm
|
||||||
for login_manager in lightdm gdm lxdm lxdm-gtk3; do
|
for login_manager in "${login[@]}"; do
|
||||||
if pacman -Qs "$login_manager" > /dev/null; then
|
if pacman -Qs "$login_manager" > /dev/null 2>&1; then
|
||||||
echo "disabling $login_manager..."
|
sudo systemctl disable "$login_manager.service" >> "$LOG" 2>&1
|
||||||
sudo systemctl disable "$login_manager.service" 2>&1 | tee -a "$LOG"
|
echo "$login_manager disabled." >> "$LOG" 2>&1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
printf " Activating sddm service........\n"
|
# Double check with systemctl
|
||||||
sudo systemctl enable sddm
|
for manager in "${login[@]}"; do
|
||||||
|
if systemctl is-active --quiet "$manager" > /dev/null 2>&1; then
|
||||||
|
echo "$manager is active, disabling it..." >> "$LOG" 2>&1
|
||||||
|
sudo systemctl disable "$manager" --now >> "$LOG" 2>&1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
# Set up SDDM
|
printf "\n%.0s" {1..1}
|
||||||
echo -e "${NOTE} Setting up the login screen."
|
printf "${INFO} Activating sddm service........\n"
|
||||||
sddm_conf_dir=/etc/sddm.conf.d
|
sudo systemctl enable sddm
|
||||||
[ ! -d "$sddm_conf_dir" ] && { printf "$CAT - $sddm_conf_dir not found, creating...\n"; sudo mkdir "$sddm_conf_dir" 2>&1 | tee -a "$LOG"; }
|
|
||||||
|
|
||||||
wayland_sessions_dir=/usr/share/wayland-sessions
|
wayland_sessions_dir=/usr/share/wayland-sessions
|
||||||
[ ! -d "$wayland_sessions_dir" ] && { printf "$CAT - $wayland_sessions_dir not found, creating...\n"; sudo mkdir "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; }
|
[ ! -d "$wayland_sessions_dir" ] && { printf "$CAT - $wayland_sessions_dir not found, creating...\n"; sudo mkdir "$wayland_sessions_dir" 2>&1 | tee -a "$LOG"; }
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
# SDDM-themes
|
|
||||||
valid_input=false
|
|
||||||
while [ "$valid_input" != true ]; do
|
|
||||||
if [[ -z $install_sddm_theme ]]; then
|
|
||||||
read -n 1 -r -p "${CAT} OPTIONAL - Would you like to install SDDM themes? (y/n)" install_sddm_theme
|
|
||||||
fi
|
|
||||||
if [[ $install_sddm_theme =~ ^[Yy]$ ]]; then
|
|
||||||
printf "\n%s - Installing Simple SDDM Theme\n" "${NOTE}"
|
|
||||||
|
|
||||||
# Check if /usr/share/sddm/themes/simple-sddm-2 exists and remove if it does
|
|
||||||
if [ -d "/usr/share/sddm/themes/simple-sddm-2" ]; then
|
|
||||||
sudo rm -rf "/usr/share/sddm/themes/simple-sddm-2"
|
|
||||||
echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm-2' directory." 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check if simple-sddm-2 directory exists in the current directory and remove if it does
|
|
||||||
if [ -d "simple-sddm-2" ]; then
|
|
||||||
rm -rf "simple-sddm-2"
|
|
||||||
echo -e "\e[1A\e[K${OK} - Removed existing 'simple-sddm-2' directory from the current location." 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if git clone --depth 1 https://github.com/JaKooLit/simple-sddm-2.git; then
|
|
||||||
while [ ! -d "simple-sddm-2" ]; 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-2 /usr/share/sddm/themes/
|
|
||||||
echo -e "[Theme]\nCurrent=simple-sddm-2" | sudo tee "$sddm_conf_dir/theme.conf.user" &>> "$LOG"
|
|
||||||
else
|
|
||||||
echo -e "\e[1A\e[K${ERROR} - Failed to clone the theme repository. Please check your internet connection" | tee -a "$LOG" >&2
|
|
||||||
fi
|
|
||||||
valid_input=true
|
|
||||||
elif [[ $install_sddm_theme =~ ^[Nn]$ ]]; then
|
|
||||||
printf "\n%s - No SDDM themes will be installed.\n" "${NOTE}" 2>&1 | tee -a "$LOG"
|
|
||||||
valid_input=true
|
|
||||||
else
|
|
||||||
printf "\n%s - Invalid input. Please enter 'y' for Yes or 'n' for No.\n" "${ERROR}" 2>&1 | tee -a "$LOG"
|
|
||||||
install_sddm_theme=""
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
clear
|
|
||||||
|
|||||||
106
install-scripts/sddm_theme.sh
Executable file
106
install-scripts/sddm_theme.sh
Executable file
@@ -0,0 +1,106 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# SDDM themes #
|
||||||
|
|
||||||
|
source_theme="https://codeberg.org/JaKooLit/sddm-sequoia"
|
||||||
|
theme_name="sequoia_2"
|
||||||
|
|
||||||
|
## 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)_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_dir="/etc/sddm.conf.d"
|
||||||
|
BACKUP_SUFFIX=".bak"
|
||||||
|
|
||||||
|
echo -e "${NOTE} Setting up the login screen." | tee -a "$LOG"
|
||||||
|
|
||||||
|
if [ -d "$sddm_conf_dir" ]; then
|
||||||
|
echo "Backing up files in $sddm_conf_dir" | tee -a "$LOG"
|
||||||
|
for file in "$sddm_conf_dir"/*; do
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
if [[ "$file" == *$BACKUP_SUFFIX ]]; then
|
||||||
|
echo "Skipping backup file: $file" | tee -a "$LOG"
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Backup each original file
|
||||||
|
sudo cp "$file" "$file$BACKUP_SUFFIX" 2>&1 | tee -a "$LOG"
|
||||||
|
echo "Backup created for $file" | tee -a "$LOG"
|
||||||
|
|
||||||
|
# Edit existing "Current="
|
||||||
|
if grep -q '^[[:space:]]*Current=' "$file"; then
|
||||||
|
sudo sed -i "s/^[[:space:]]*Current=.*/Current=$theme_name/" "$file" 2>&1 | tee -a "$LOG"
|
||||||
|
echo "Updated theme in $file" | tee -a "$LOG"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
else
|
||||||
|
echo "$CAT - $sddm_conf_dir not found, creating..." | tee -a "$LOG"
|
||||||
|
sudo mkdir -p "$sddm_conf_dir" 2>&1 | tee -a "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "$sddm_conf_dir/theme.conf.user" ]; then
|
||||||
|
echo -e "[Theme]\nCurrent = $theme_name" | sudo tee "$sddm_conf_dir/theme.conf.user" > /dev/null
|
||||||
|
|
||||||
|
if [ -f "$sddm_conf_dir/theme.conf.user" ]; then
|
||||||
|
echo "Created and configured $sddm_conf_dir/theme.conf.user with theme $theme_name" | tee -a "$LOG"
|
||||||
|
else
|
||||||
|
echo "Failed to create $sddm_conf_dir/theme.conf.user" | tee -a "$LOG"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "$sddm_conf_dir/theme.conf.user already exists, skipping creation." | tee -a "$LOG"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Replace current background from assets
|
||||||
|
sudo cp -r assets/sddm.png "/usr/share/sddm/themes/$theme_name/backgrounds/default" 2>&1 | tee -a "$LOG"
|
||||||
|
sudo sed -i 's|^wallpaper=".*"|wallpaper="backgrounds/default"|' "/usr/share/sddm/themes/$theme_name/theme.conf" 2>&1 | tee -a "$LOG"
|
||||||
|
|
||||||
|
echo "${OK} - ${MAGENTA}Additional 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}
|
||||||
@@ -2,10 +2,6 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# Thunar #
|
# Thunar #
|
||||||
|
|
||||||
if [[ $USE_PRESET = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
thunar=(
|
thunar=(
|
||||||
thunar
|
thunar
|
||||||
thunar-volman
|
thunar-volman
|
||||||
@@ -30,39 +26,22 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_thunar.log"
|
||||||
|
|
||||||
# Thunar
|
# Thunar
|
||||||
printf "${NOTE} Installing Thunar Packages...\n"
|
printf "${INFO} Installing ${SKY_BLUE}Thunar${RESET} Packages...\n"
|
||||||
for THUNAR in "${thunar[@]}"; do
|
for THUNAR in "${thunar[@]}"; do
|
||||||
install_package "$THUNAR" 2>&1 | tee -a "$LOG"
|
install_package "$THUNAR" "$LOG"
|
||||||
[ $? -ne 0 ] && { echo -e "\e[1A\e[K${ERROR} - $THUNAR Package installation failed, Please check the installation logs"; exit 1; }
|
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# Ask the user if they want to use Thunar as the default file manager
|
|
||||||
read -p "${CAT} Do you want to set Thunar as the default file manager? (y/n): " thunar_default
|
|
||||||
|
|
||||||
if [[ "$thunar_default" == [Yy] ]]; then
|
|
||||||
# Setting Thunar as the default file manager
|
|
||||||
xdg-mime default thunar.desktop inode/directory
|
|
||||||
xdg-mime default thunar.desktop application/x-wayland-gnome-saved-search
|
|
||||||
echo "${OK} Thunar has been set as the default file manager." 2>&1 | tee -a "$LOG"
|
|
||||||
else
|
|
||||||
echo "${NOTE} you choose not to set Thunar as default file manager." 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf "\n"
|
|
||||||
|
|
||||||
# Check for existing configs and copy if does not exist
|
# Check for existing configs and copy if does not exist
|
||||||
for DIR1 in gtk-3.0 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}
|
||||||
|
|
||||||
|
|
||||||
25
install-scripts/thunar_default.sh
Executable file
25
install-scripts/thunar_default.sh
Executable file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
|
# Thunar-default #
|
||||||
|
|
||||||
|
|
||||||
|
## 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)_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}
|
||||||
@@ -1,9 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# XDG-Desktop-Portals #
|
# XDG-Desktop-Portals hyprland #
|
||||||
if [[ $USE_PRESET = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
xdg=(
|
xdg=(
|
||||||
xdg-desktop-portal-hyprland
|
xdg-desktop-portal-hyprland
|
||||||
@@ -26,49 +23,9 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_xdph.log"
|
||||||
|
|
||||||
# XDG-DESKTOP-PORTAL-HYPRLAND
|
# XDG-DESKTOP-PORTAL-HYPRLAND
|
||||||
|
printf "${NOTE} Installing ${SKY_BLUE}xdg-desktop-portal-hyprland${RESET}\n"
|
||||||
for xdgs in "${xdg[@]}"; do
|
for xdgs in "${xdg[@]}"; do
|
||||||
install_package "$xdgs" 2>&1 | tee -a "$LOG"
|
install_package "$xdgs" "$LOG"
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "\e[1A\e[K${ERROR} - $xdph Package installation failed, Please check the installation logs"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
|
|
||||||
printf "${NOTE} Checking for other XDG-Desktop-Portal-Implementations....\n"
|
printf "\n%.0s" {1..2}
|
||||||
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
|
|
||||||
printf "\n%.0s" {1..2}
|
|
||||||
if [[ -z $XDPH1 ]]; then
|
|
||||||
read -rp "${CAT} Would you like to try to remove other XDG-Desktop-Portal-Implementations? (y/n) " XDPH1
|
|
||||||
fi
|
|
||||||
echo
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
case $XDPH1 in
|
|
||||||
[Yy])
|
|
||||||
# Clean out other portals
|
|
||||||
printf "${NOTE} Clearing any other xdg-desktop-portal implementations...\n"
|
|
||||||
# Check if packages are installed and uninstall if present
|
|
||||||
if pacman -Qs xdg-desktop-portal-wlr > /dev/null ; then
|
|
||||||
echo "Removing xdg-desktop-portal-wlr..."
|
|
||||||
sudo pacman -R --noconfirm xdg-desktop-portal-wlr 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
if pacman -Qs xdg-desktop-portal-lxqt > /dev/null ; then
|
|
||||||
echo "Removing xdg-desktop-portal-lxqt..."
|
|
||||||
sudo pacman -R --noconfirm xdg-desktop-portal-lxqt 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
[Nn])
|
|
||||||
echo "no other XDG-implementations will be removed." >> "$LOG"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "Invalid input. Please enter 'y' for yes or 'n' for no."
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
clear
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
# Yay AUR Helper #
|
# Yay AUR Helper #
|
||||||
# NOTE: If paru is already installed, yay will not be installed #
|
# NOTE: If paru is already installed, yay will not be installed #
|
||||||
|
|
||||||
|
pkg="yay-bin"
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
@@ -12,32 +13,37 @@ LOG="install-$(date +%d-%H%M%S)_yay.log"
|
|||||||
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
OK="$(tput setaf 2)[OK]$(tput sgr0)"
|
||||||
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
ERROR="$(tput setaf 1)[ERROR]$(tput sgr0)"
|
||||||
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
NOTE="$(tput setaf 3)[NOTE]$(tput sgr0)"
|
||||||
WARN="$(tput setaf 5)[WARN]$(tput sgr0)"
|
INFO="$(tput setaf 4)[INFO]$(tput sgr0)"
|
||||||
|
WARN="$(tput setaf 1)[WARN]$(tput sgr0)"
|
||||||
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
CAT="$(tput setaf 6)[ACTION]$(tput sgr0)"
|
||||||
ORANGE=$(tput setaf 166)
|
MAGENTA="$(tput setaf 5)"
|
||||||
YELLOW=$(tput setaf 3)
|
ORANGE="$(tput setaf 214)"
|
||||||
RESET=$(tput sgr0)
|
WARNING="$(tput setaf 1)"
|
||||||
|
YELLOW="$(tput setaf 3)"
|
||||||
|
GREEN="$(tput setaf 2)"
|
||||||
|
BLUE="$(tput setaf 4)"
|
||||||
|
SKY_BLUE="$(tput setaf 6)"
|
||||||
|
RESET="$(tput sgr0)"
|
||||||
|
|
||||||
# Create Directory for Install Logs
|
# Create Directory for Install Logs
|
||||||
if [ ! -d Install-Logs ]; then
|
if [ ! -d Install-Logs ]; then
|
||||||
mkdir Install-Logs
|
mkdir Install-Logs
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check Existing yay
|
|
||||||
if [ -d yay ]; then
|
|
||||||
rm -rf yay 2>&1 | tee -a "$LOG"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check for AUR helper and install if not found
|
# Check for AUR helper and install if not found
|
||||||
ISAUR=$(command -v yay || command -v paru)
|
ISAUR=$(command -v yay || command -v paru)
|
||||||
if [ -n "$ISAUR" ]; then
|
if [ -n "$ISAUR" ]; then
|
||||||
printf "\n%s - AUR helper already installed, moving on.\n" "${OK}"
|
printf "\n%s - ${SKY_BLUE}AUR helper${RESET} already installed, moving on.\n" "${OK}"
|
||||||
else
|
else
|
||||||
printf "\n%s - AUR helper was NOT located\n" "$WARN"
|
printf "\n%s - Installing ${SKY_BLUE}$pkg${RESET} from AUR\n" "${NOTE}"
|
||||||
printf "\n%s - Installing yay from AUR\n" "${NOTE}"
|
|
||||||
git clone https://aur.archlinux.org/yay.git || { printf "%s - Failed to clone yay from AUR\n" "${ERROR}"; exit 1; }
|
# Check if folder exists and remove it
|
||||||
cd yay || { printf "%s - Failed to enter yay directory\n" "${ERROR}"; exit 1; }
|
if [ -d "$pkg" ]; then
|
||||||
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install yay from AUR\n" "${ERROR}"; exit 1; }
|
rm -rf "$pkg"
|
||||||
|
fi
|
||||||
|
git clone https://aur.archlinux.org/$pkg.git || { printf "%s - Failed to clone ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
||||||
|
cd $pkg || { printf "%s - Failed to enter $pkg directory\n" "${ERROR}"; exit 1; }
|
||||||
|
makepkg -si --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to install ${YELLOW}$pkg${RESET} from AUR\n" "${ERROR}"; exit 1; }
|
||||||
|
|
||||||
# moving install logs in to Install-Logs folder
|
# moving install logs in to Install-Logs folder
|
||||||
mv install*.log ../Install-Logs/ || true
|
mv install*.log ../Install-Logs/ || true
|
||||||
@@ -50,4 +56,4 @@ ISAUR=$(command -v yay || command -v paru)
|
|||||||
|
|
||||||
$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; }
|
$ISAUR -Syu --noconfirm 2>&1 | tee -a "$LOG" || { printf "%s - Failed to update system\n" "${ERROR}"; exit 1; }
|
||||||
|
|
||||||
clear
|
printf "\n%.0s" {1..2}
|
||||||
@@ -1,17 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
# zsh and oh my zsh including pokemon-color-scripts#
|
# zsh and oh my zsh#
|
||||||
if [[ $USE_PRESET = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
|
||||||
|
|
||||||
zsh=(
|
zsh_pkg=(
|
||||||
eza
|
eza
|
||||||
|
mercurial
|
||||||
zsh
|
zsh
|
||||||
zsh-completions
|
zsh-completions
|
||||||
fzf
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
zsh_pkg2=(
|
||||||
|
fzf
|
||||||
|
)
|
||||||
|
|
||||||
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
## WARNING: DO NOT EDIT BEYOND THIS LINE IF YOU DON'T KNOW WHAT YOU ARE DOING! ##
|
||||||
# Determine the directory where the script is located
|
# Determine the directory where the script is located
|
||||||
@@ -26,60 +26,39 @@ source "$(dirname "$(readlink -f "$0")")/Global_functions.sh"
|
|||||||
# Set the name of the log file to include the current date and time
|
# Set the name of the log file to include the current date and time
|
||||||
LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh.log"
|
LOG="Install-Logs/install-$(date +%d-%H%M%S)_zsh.log"
|
||||||
|
|
||||||
## Optional Pokemon color scripts
|
# Installing core zsh packages
|
||||||
while true; do
|
printf "\n%s - Installing ${SKY_BLUE}zsh packages${RESET} .... \n" "${NOTE}"
|
||||||
if [[ -z $pokemon_choice ]]; then
|
for ZSH in "${zsh_pkg[@]}"; do
|
||||||
read -p "${CAT} OPTIONAL - Do you want to add Pokemon color scripts? (y/n): " pokemon_choice
|
install_package "$ZSH" "$LOG"
|
||||||
fi
|
|
||||||
case "$pokemon_choice" in
|
|
||||||
[Yy]*)
|
|
||||||
zsh+=('pokemon-colorscripts-git')
|
|
||||||
sed -i '/#pokemon-colorscripts --no-title -s -r/s/^#//' assets/.zshrc >> "$LOG" 2>&1
|
|
||||||
|
|
||||||
# commenting out fastfetch since pokemon was chosen to install
|
|
||||||
sed -i '/^fastfetch -c $HOME\/.config\/fastfetch\/config-compact.jsonc/s/^/#/' assets/.zshrc >> "$LOG" 2>&1
|
|
||||||
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
[Nn]*)
|
|
||||||
echo "${NOTE}Skipping Pokemon color scripts installation.${RESET}" 2>&1 | tee -a "$LOG"
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "${WARN}Please enter 'y' for yes or 'n' for no.${RESET}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
done
|
||||||
|
|
||||||
# Installing zsh packages
|
|
||||||
printf "${NOTE} Installing core zsh packages...${RESET}\n"
|
|
||||||
for ZSH in "${zsh[@]}"; do
|
|
||||||
install_package "$ZSH" 2>&1 | tee -a "$LOG"
|
|
||||||
if [ $? -ne 0 ]; then
|
|
||||||
echo -e "\e[1A\e[K${ERROR} - $ZSH Package installation failed, Please check the installation logs"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
|
|
||||||
|
# Check if the zsh-completions directory exists
|
||||||
|
if [ -d "zsh-completions" ]; then
|
||||||
|
rm -rf zsh-completions
|
||||||
|
fi
|
||||||
|
|
||||||
# Install Oh My Zsh, plugins, and set zsh as default shell
|
# Install Oh My Zsh, plugins, and set zsh as default shell
|
||||||
if command -v zsh >/dev/null; then
|
if command -v zsh >/dev/null; then
|
||||||
printf "${NOTE} Installing Oh My Zsh and plugins...\n"
|
printf "${NOTE} Installing ${SKY_BLUE}Oh My Zsh and plugins${RESET} ...\n"
|
||||||
if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
if [ ! -d "$HOME/.oh-my-zsh" ]; then
|
||||||
sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended || true
|
sh -c "$(curl -fsSL https://install.ohmyz.sh)" "" --unattended
|
||||||
else
|
else
|
||||||
echo "Directory .oh-my-zsh already exists. Skipping re-installation." 2>&1 | tee -a "$LOG"
|
echo "${INFO} Directory .oh-my-zsh already exists. Skipping re-installation." 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if the directories exist before cloning the repositories
|
# Check if the directories exist before cloning the repositories
|
||||||
if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
|
if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-autosuggestions" ]; then
|
||||||
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions || true
|
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
|
||||||
else
|
else
|
||||||
echo "Directory zsh-autosuggestions already exists. Skipping cloning." 2>&1 | tee -a "$LOG"
|
echo "${INFO} Directory zsh-autosuggestions already exists. Cloning Skipped." 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
|
if [ ! -d "$HOME/.oh-my-zsh/custom/plugins/zsh-syntax-highlighting" ]; then
|
||||||
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting || true
|
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting
|
||||||
else
|
else
|
||||||
echo "Directory zsh-syntax-highlighting already exists. Skipping cloning." 2>&1 | tee -a "$LOG"
|
echo "${INFO} Directory zsh-syntax-highlighting already exists. Cloning Skipped." 2>&1 | tee -a "$LOG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check if ~/.zshrc and .zprofile exists, create a backup, and copy the new configuration
|
# Check if ~/.zshrc and .zprofile exists, create a backup, and copy the new configuration
|
||||||
@@ -95,14 +74,31 @@ if command -v zsh >/dev/null; then
|
|||||||
cp -r 'assets/.zshrc' ~/
|
cp -r 'assets/.zshrc' ~/
|
||||||
cp -r 'assets/.zprofile' ~/
|
cp -r 'assets/.zprofile' ~/
|
||||||
|
|
||||||
printf "${NOTE} Changing default shell to zsh...\n"
|
# Check if the current shell is zsh
|
||||||
|
if [[ "$SHELL" != *"zsh"* ]]; then
|
||||||
|
printf "${NOTE} Changing default shell to ${MAGENTA}zsh${RESET}..."
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
while ! chsh -s $(which zsh); do
|
while ! chsh -s $(which zsh); do
|
||||||
echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG"
|
echo "${ERROR} Authentication failed. Please enter the correct password." 2>&1 | tee -a "$LOG"
|
||||||
sleep 1
|
sleep 1
|
||||||
done
|
done
|
||||||
printf "${NOTE} Shell changed successfully to zsh.\n" 2>&1 | tee -a "$LOG"
|
|
||||||
|
|
||||||
|
printf "${INFO} Shell changed successfully to ${MAGENTA}zsh${RESET}" 2>&1 | tee -a "$LOG"
|
||||||
|
else
|
||||||
|
echo "${NOTE}Your shell is already set to ${MAGENTA}zsh${RESET}."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
clear
|
# Installing core zsh packages
|
||||||
|
printf "\n%s - Installing ${SKY_BLUE}fzf${RESET} .... \n" "${NOTE}"
|
||||||
|
for ZSH2 in "${zsh_pkg2[@]}"; do
|
||||||
|
install_package "$ZSH2" "$LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
# copy additional oh-my-zsh themes from assets
|
||||||
|
if [ -d "$HOME/.oh-my-zsh/themes" ]; then
|
||||||
|
cp -r assets/add_zsh_theme/* ~/.oh-my-zsh/themes >> "$LOG" 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
|||||||
35
install-scripts/zsh_pokemon.sh
Executable file
35
install-scripts/zsh_pokemon.sh
Executable file
@@ -0,0 +1,35 @@
|
|||||||
|
#!/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! ##
|
||||||
|
# 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)_zsh_pokemon.log"
|
||||||
|
|
||||||
|
printf "${NOTE} Removing any traces of ${SKY_BLUE}Pokemon Color Scripts${RESET}\n"
|
||||||
|
|
||||||
|
# Install Pokemon Color Scripts
|
||||||
|
printf "${NOTE} Installing ${SKY_BLUE}Pokemon Color Scripts${RESET}\n"
|
||||||
|
for pok in "pokemon-colorscripts-git"; do
|
||||||
|
install_package_f "$pok" "$LOG"
|
||||||
|
done
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
# Check if ~/.zshrc exists
|
||||||
|
if [ -f "$HOME/.zshrc" ]; then
|
||||||
|
sed -i 's|^#pokemon-colorscripts --no-title -s -r \| fastfetch -c \$HOME/.config/fastfetch/config-pokemon.jsonc --logo-type file-raw --logo-height 10 --logo-width 5 --logo -|pokemon-colorscripts --no-title -s -r \| fastfetch -c \$HOME/.config/fastfetch/config-pokemon.jsonc --logo-type file-raw --logo-height 10 --logo-width 5 --logo -|' "$HOME/.zshrc" >> "$LOG" 2>&1
|
||||||
|
sed -i "s|^fastfetch -c \$HOME/.config/fastfetch/config-compact.jsonc|#fastfetch -c \$HOME/.config/fastfetch/config-compact.jsonc|" "$HOME/.zshrc" >> "$LOG" 2>&1
|
||||||
|
else
|
||||||
|
echo "$HOME/.zshrc not found. Cant enable ${YELLOW}Pokemon color scripts${RESET}" >> "$LOG" 2>&1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
226
install.sh
226
install.sh
@@ -1,28 +1,48 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# https://github.com/JaKooLit
|
# https://github.com/JaKooLit
|
||||||
|
|
||||||
|
clear
|
||||||
|
|
||||||
# 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 5)[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)"
|
||||||
|
|
||||||
|
|
||||||
# Check if running as root. If root, script will exit
|
# Check if running as root. If root, script will exit
|
||||||
if [[ $EUID -eq 0 ]]; then
|
if [[ $EUID -eq 0 ]]; then
|
||||||
echo "$ERROR This script should not be executed as root! Exiting......."
|
echo "${ERROR} This script should ${WARNING}NOT${RESET} be executed as root!! Exiting......."
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
clear
|
# Check if --preset argument is provided
|
||||||
|
if [[ "$1" == "--preset" ]]; then
|
||||||
|
|
||||||
|
# nvidia
|
||||||
|
if [[ "$2" == "--nvidia" ]]; then
|
||||||
|
sed -i 's/^nvidia=".*"/nvidia="Y"/' preset.sh
|
||||||
|
sed -i 's/^nouveau=".*"/nouveau="Y"/' preset.sh
|
||||||
|
fi
|
||||||
|
|
||||||
|
source ./preset.sh
|
||||||
|
fi
|
||||||
|
|
||||||
# Check if PulseAudio package is installed
|
# Check if PulseAudio package is installed
|
||||||
if pacman -Qq | grep -qw '^pulseaudio$'; then
|
if pacman -Qq | grep -qw '^pulseaudio$'; then
|
||||||
echo "$ERROR PulseAudio is detected as installed. Uninstall it first or edit install.sh on line 211 (execute_script 'pipewire.sh')."
|
echo "$ERROR PulseAudio is detected as installed. Uninstall it first or edit install.sh on line 211 (execute_script 'pipewire.sh')."
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -32,7 +52,7 @@ if pacman -Q base-devel &> /dev/null; then
|
|||||||
else
|
else
|
||||||
echo "$NOTE Install base-devel.........."
|
echo "$NOTE Install base-devel.........."
|
||||||
|
|
||||||
if sudo pacman -S --noconfirm --needed base-devel; then
|
if sudo pacman -S --noconfirm base-devel; then
|
||||||
echo "$OK base-devel has been installed successfully."
|
echo "$OK base-devel has been installed successfully."
|
||||||
else
|
else
|
||||||
echo "$ERROR base-devel not found nor cannot be installed."
|
echo "$ERROR base-devel not found nor cannot be installed."
|
||||||
@@ -43,41 +63,40 @@ fi
|
|||||||
|
|
||||||
clear
|
clear
|
||||||
|
|
||||||
printf "\n%.0s" {1..3}
|
|
||||||
echo " | _. |/ _ _ | o _|_ "
|
|
||||||
echo " \_| (_| o |\ (_) (_) |_ | |_ "
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
|
echo -e "\e[35m
|
||||||
|
╦╔═┌─┐┌─┐╦ ╦ ╦┬ ┬┌─┐┬─┐┬ ┌─┐┌┐┌┌┬┐
|
||||||
|
╠╩╗│ ││ │║ ╠═╣└┬┘├─┘├┬┘│ ├─┤│││ ││ 2025
|
||||||
|
╩ ╩└─┘└─┘╩═╝ ╩ ╩ ┴ ┴ ┴└─┴─┘┴ ┴┘└┘─┴┘
|
||||||
|
\e[0m"
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
# Welcome message
|
# Welcome message
|
||||||
echo "$(tput setaf 6)Welcome to JaKooLit's Arch-Hyprland Install Script!$(tput sgr0)"
|
echo "${SKY_BLUE}Welcome to JaKooLit's Arch-Hyprland (2025) Install Script!${RESET}"
|
||||||
echo
|
echo
|
||||||
echo "$(tput setaf 166)ATTENTION: Run a full system update and Reboot first!! (Highly Recommended) $(tput sgr0)"
|
echo "${WARNING}ATTENTION: Run a full system update and Reboot first!! (Highly Recommended) ${RESET}"
|
||||||
echo
|
echo
|
||||||
echo "$(tput setaf 3)NOTE: You will be required to answer some questions during the installation! $(tput sgr0)"
|
echo "${YELLOW}NOTE: You will be required to answer some questions during the installation! ${RESET}"
|
||||||
echo
|
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 "${YELLOW}NOTE: If you are installing on a VM, ensure to enable 3D acceleration else Hyprland wont start! ${RESET}"
|
||||||
echo
|
echo
|
||||||
|
|
||||||
read -p "$(tput setaf 6)Would you like to proceed? (y/n): $(tput sgr0)" proceed
|
read -p "${SKY_BLUE}Would you like to proceed? (y/n): ${RESET}" proceed
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
|
||||||
|
|
||||||
if [ "$proceed" != "y" ]; then
|
if [ "$proceed" != "y" ]; then
|
||||||
echo "Installation aborted."
|
printf "\n%.0s" {1..2}
|
||||||
|
echo "${INFO} Installation aborted. ${SKY_BLUE}No changes in your system.${RESET} ${YELLOW}Goodbye!${RESET}"
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..2}
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
printf "\n%.0s" {1..2}
|
printf "\n%.0s" {1..1}
|
||||||
|
|
||||||
echo "$(tput bold)$(tput setaf 166)ATTENTION: Choosing Y on use preset question will install also nvidia stuff! $(tput sgr0)"
|
# install pciutils if detected not installed. Necessary for detecting GPU
|
||||||
echo "$(tput bold)$(tput setaf 3)CTRL C to cancel and edit the file preset.sh $(tput sgr0)"
|
if ! pacman -Qs pciutils > /dev/null; then
|
||||||
echo "$(tput bold)$(tput setaf 7)If you are not sure what to do, answer N in here $(tput sgr0)"
|
echo "pciutils is not installed. Installing..."
|
||||||
read -p "$(tput setaf 6)Would you like to Use Preset Settings (See note above)? (y/n): $(tput sgr0)" use_preset
|
sudo pacman -S --noconfirm pciutils
|
||||||
|
printf "\n%.0s" {1..1}
|
||||||
# Use of Preset Settings
|
|
||||||
if [[ $use_preset = [Yy] ]]; then
|
|
||||||
source ./preset.sh
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Function to colorize prompts
|
# Function to colorize prompts
|
||||||
@@ -90,17 +109,6 @@ colorize_prompt() {
|
|||||||
# 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).log"
|
LOG="install-$(date +%d-%H%M%S).log"
|
||||||
|
|
||||||
# Initialize variables to store user responses
|
|
||||||
# aur_helper=""
|
|
||||||
# bluetooth=""
|
|
||||||
# dots=""
|
|
||||||
# gtk_themes=""
|
|
||||||
# nvidia=""
|
|
||||||
# rog=""
|
|
||||||
# sddm=""
|
|
||||||
# thunar=""
|
|
||||||
# xdph=""
|
|
||||||
# zsh=""
|
|
||||||
|
|
||||||
# Create Directory for Install Logs
|
# Create Directory for Install Logs
|
||||||
if [ ! -d Install-Logs ]; then
|
if [ ! -d Install-Logs ]; then
|
||||||
@@ -171,30 +179,91 @@ execute_script() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Collect user responses to all questions
|
# Collect user responses to all questions
|
||||||
|
# Check if nvidia is present
|
||||||
|
if lspci | grep -i "nvidia" &> /dev/null; then
|
||||||
|
printf "\n"
|
||||||
|
printf "${INFO} ${YELLOW}NVIDIA GPU${RESET} detected in your system \n"
|
||||||
|
printf "${NOTE} Script will install ${YELLOW}nvidia-dkms nvidia-utils and nvidia-settings${RESET} \n"
|
||||||
|
ask_yes_no "-Do you want script to configure ${YELLOW}NVIDIA${RESET} for you?" nvidia
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "$nvidia" == "Y" ]]; then
|
||||||
|
ask_yes_no "-Would you like to ${YELLOW}blacklist nouveau?${RESET}" nouveau
|
||||||
|
fi
|
||||||
|
|
||||||
|
# AUR helper
|
||||||
|
if ! command -v yay &>/dev/null && ! command -v paru &>/dev/null; then
|
||||||
|
printf "\n"
|
||||||
|
ask_custom_option "-Which ${YELLOW}AUR helper${RESET} would you like to use? (paru or yay): " "paru or yay" aur_helper
|
||||||
|
fi
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_custom_option "-Type AUR helper" "paru or yay" aur_helper
|
ask_yes_no "-Install ${YELLOW}GTK themes${RESET} (required for Dark/Light function)?" gtk_themes
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Do you have any nvidia gpu in your system?" nvidia
|
ask_yes_no "-Do you want to configure ${YELLOW}Bluetooth${RESET}?" bluetooth
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Install GTK themes (required for Dark/Light function)?" gtk_themes
|
ask_yes_no "-Do you want to install ${YELLOW}Thunar file manager${RESET}?" thunar
|
||||||
|
|
||||||
|
if [[ "$thunar" == "Y" ]]; then
|
||||||
|
ask_yes_no "-Set ${YELLOW}Thunar${RESET} as the default file manager?" thunar_choice
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Input group
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Do you want to configure Bluetooth?" bluetooth
|
if ! groups "$(whoami)" | grep -q '\binput\b'; then
|
||||||
|
printf "${NOTE} adding to ${YELLOW}input${RESET} group might be necessary for ${YELLOW}waybar keyboard-state functionality${RESET} \n"
|
||||||
|
ask_yes_no "-Would you like to be added to the ${YELLOW}input${RESET} group?" input_group
|
||||||
|
fi
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Do you want to install Thunar file manager?" thunar
|
printf "${NOTE} ${YELLOW}AGS Desktop Overview DEMO link${RESET} on README\n"
|
||||||
|
ask_yes_no "-Install ${YELLOW}AGS (aylur's GTK shell) v1${RESET} for Desktop-Like Overview?" ags
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Install & configure SDDM log-in Manager plus (OPTIONAL) SDDM Theme?" sddm
|
ask_yes_no "-Install & configure ${YELLOW}SDDM${RESET} as login manager?" sddm
|
||||||
|
# check if any known login managers are active when users choose to install sddm
|
||||||
|
if [ "$sddm" == "y" ] || [ "$sddm" == "Y" ]; then
|
||||||
|
# List of services to check
|
||||||
|
services=("gdm.service" "gdm3.service" "lightdm.service" "lxdm.service")
|
||||||
|
|
||||||
|
# Loop through each service
|
||||||
|
for svc in "${services[@]}"; do
|
||||||
|
if systemctl is-active --quiet "$svc"; then
|
||||||
|
echo "${ERROR} ${MAGENTA}$svc${RESET} is active. stop or disable it first or ${YELLOW}DO NOT choose SDDM${RESET} to install."
|
||||||
|
echo "${NOTE} If you have GDM, no need to install SDDM. GDM will work fine as Login Manager for Hyprland."
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ "$sddm" == "Y" ]]; then
|
||||||
|
ask_yes_no "-Download and Install ${YELLOW}SDDM Theme?${RESET} " sddm_theme
|
||||||
|
fi
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)" xdph
|
ask_yes_no "-Install ${YELLOW}XDG-DESKTOP-PORTAL-HYPRLAND?${RESET} (For proper Screen Share, e.g., OBS)" xdph
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Install zsh, oh-my-zsh & (Optional) pokemon-colorscripts?" zsh
|
ask_yes_no "-Install ${YELLOW}zsh${RESET} with ${YELLOW}oh-my-zsh?${RESET}" zsh
|
||||||
|
|
||||||
|
if [[ "$zsh" == "Y" ]]; then
|
||||||
|
ask_yes_no "-Add ${YELLOW}Pokemon color scripts?${RESET} in your terminal?" pokemon_choice
|
||||||
|
fi
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Installing in a Asus ROG Laptops?" rog
|
ask_yes_no "-Installing on ${YELLOW}Asus ROG laptops?${RESET}" rog
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
ask_yes_no "-Do you want to download pre-configured Hyprland dotfiles?" dots
|
ask_yes_no "-Do you want to add pre-configured ${YELLOW}KooL's Hyprland dotfiles?${RESET}" dots
|
||||||
|
|
||||||
printf "\n"
|
printf "\n"
|
||||||
|
|
||||||
|
|
||||||
# Ensuring all in the scripts folder are made executable
|
# Ensuring all in the scripts folder are made executable
|
||||||
chmod +x install-scripts/*
|
chmod +x install-scripts/*
|
||||||
|
|
||||||
sleep 1
|
sleep 1
|
||||||
# Ensuring base-devel is installed
|
# Ensuring base-devel is installed
|
||||||
execute_script "00-base.sh"
|
execute_script "00-base.sh"
|
||||||
@@ -220,12 +289,12 @@ execute_script "fonts.sh"
|
|||||||
# Install hyprland
|
# Install hyprland
|
||||||
execute_script "hyprland.sh"
|
execute_script "hyprland.sh"
|
||||||
|
|
||||||
# Install AGS from source (older version)
|
|
||||||
execute_script "ags.sh"
|
|
||||||
|
|
||||||
if [ "$nvidia" == "Y" ]; then
|
if [ "$nvidia" == "Y" ]; then
|
||||||
execute_script "nvidia.sh"
|
execute_script "nvidia.sh"
|
||||||
fi
|
fi
|
||||||
|
if [ "$nouveau" == "Y" ]; then
|
||||||
|
execute_script "nvidia_nouveau.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$gtk_themes" == "Y" ]; then
|
if [ "$gtk_themes" == "Y" ]; then
|
||||||
execute_script "gtk_themes.sh"
|
execute_script "gtk_themes.sh"
|
||||||
@@ -238,10 +307,20 @@ fi
|
|||||||
if [ "$thunar" == "Y" ]; then
|
if [ "$thunar" == "Y" ]; then
|
||||||
execute_script "thunar.sh"
|
execute_script "thunar.sh"
|
||||||
fi
|
fi
|
||||||
|
if [ "$thunar_choice" == "Y" ]; then
|
||||||
|
execute_script "thunar_default.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$ags" == "Y" ]; then
|
||||||
|
execute_script "ags.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$sddm" == "Y" ]; then
|
if [ "$sddm" == "Y" ]; then
|
||||||
execute_script "sddm.sh"
|
execute_script "sddm.sh"
|
||||||
fi
|
fi
|
||||||
|
if [ "$sddm_theme" == "Y" ]; then
|
||||||
|
execute_script "sddm_theme.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$xdph" == "Y" ]; then
|
if [ "$xdph" == "Y" ]; then
|
||||||
execute_script "xdph.sh"
|
execute_script "xdph.sh"
|
||||||
@@ -250,8 +329,13 @@ fi
|
|||||||
if [ "$zsh" == "Y" ]; then
|
if [ "$zsh" == "Y" ]; then
|
||||||
execute_script "zsh.sh"
|
execute_script "zsh.sh"
|
||||||
fi
|
fi
|
||||||
|
if [ "$pokemon_choice" == "Y" ]; then
|
||||||
|
execute_script "zsh_pokemon.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
execute_script "InputGroup.sh"
|
if [ "$input_group" == "Y" ]; then
|
||||||
|
execute_script "InputGroup.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
if [ "$rog" == "Y" ]; then
|
if [ "$rog" == "Y" ]; then
|
||||||
execute_script "rog.sh"
|
execute_script "rog.sh"
|
||||||
@@ -276,25 +360,41 @@ printf "\n%.0s" {1..1}
|
|||||||
|
|
||||||
# Check if hyprland or hyprland-git is installed
|
# Check if hyprland or hyprland-git is installed
|
||||||
if pacman -Q hyprland &> /dev/null || pacman -Q hyprland-git &> /dev/null; then
|
if pacman -Q hyprland &> /dev/null || pacman -Q hyprland-git &> /dev/null; then
|
||||||
printf "\n${OK} Hyprland is installed. However, some essential packages may not be installed Please see above!"
|
printf "\n${OK} Hyprland is installed. However, some essential packages may not be installed. Please see above!"
|
||||||
printf "\n${CAT} Ignore this message if it states 'All essential packages are installed.'\n"
|
printf "\n${CAT} Ignore this message if it states ${YELLOW}All essential packages${RESET} are installed as per above\n"
|
||||||
sleep 2
|
sleep 2
|
||||||
printf "\n${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${NOTE} However, it is highly recommended to reboot your system.\n\n"
|
|
||||||
|
printf "${SKY_BLUE}Thank you${RESET} for using ${MAGENTA}KooL's Hyprland Dots${RESET}. ${YELLOW}Enjoy and Have a good day!${RESET}"
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
|
|
||||||
|
printf "\n${NOTE} You can start Hyprland by typing ${SKY_BLUE}Hyprland${RESET} (IF SDDM is not installed) (note the capital H!).\n"
|
||||||
|
printf "\n${NOTE} However, it is ${YELLOW}highly recommended to reboot${RESET} your system.\n\n"
|
||||||
|
|
||||||
# Prompt user to reboot
|
|
||||||
read -rp "${CAT} Would you like to reboot now? (y/n): " HYP
|
read -rp "${CAT} Would you like to reboot now? (y/n): " HYP
|
||||||
|
|
||||||
# Check if the user answered 'y' or 'Y'
|
HYP=$(echo "$HYP" | tr '[:upper:]' '[:lower:]')
|
||||||
if [[ "$HYP" =~ ^[Yy]$ ]]; then
|
|
||||||
if [[ "$nvidia" == "Y" ]]; then
|
if [[ "$HYP" == "y" || "$HYP" == "yes" ]]; then
|
||||||
echo "${NOTE} NVIDIA GPU detected. Rebooting the system..."
|
echo "${INFO} Rebooting now..."
|
||||||
fi
|
|
||||||
systemctl reboot
|
systemctl reboot
|
||||||
|
elif [[ "$HYP" == "n" || "$HYP" == "no" ]]; then
|
||||||
|
echo "${OK} You choose 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
|
||||||
|
else
|
||||||
|
echo "${WARN} Invalid response. Please answer with 'y' or 'n'. Exiting."
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Print error message if neither package is installed
|
# Print error message if neither package is installed
|
||||||
printf "\n${WARN} Hyprland failed to install. Please check 00_CHECK-time_installed.log and other files Install-Logs/ directory...\n\n"
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
printf "\n%.0s" {1..2}
|
||||||
66
preset.sh
66
preset.sh
@@ -1,49 +1,55 @@
|
|||||||
# 💫 https://github.com/JaKooLit 💫 #
|
# 💫 https://github.com/JaKooLit 💫 #
|
||||||
#
|
|
||||||
# CREDIT to: https://github.com/PostCyberPunk for this Preset function
|
# CREDIT to: https://github.com/PostCyberPunk for this Preset function
|
||||||
|
|
||||||
## -- Make sure you use the right answer or install script will fail ###
|
## -- Make sure you use the right answer or install script will fail ###
|
||||||
# Make sure proper AUR Helper is use NO Upperscript. Either paru or yay only is accepted
|
|
||||||
# The rest Change to Y for Yes and N for No.
|
# The rest Change to Y for Yes and N for No.
|
||||||
|
|
||||||
### -Type AUR helper
|
### Script will install nvidia-dkms nvidia-utils & nvidia-settings
|
||||||
|
###-Would you like script to Configure NVIDIA for you?
|
||||||
|
nvidia="N"
|
||||||
|
### Would you like to blacklist nouveau? (y/n)
|
||||||
|
nouveau="N"
|
||||||
|
|
||||||
### yay or paru
|
### yay or paru
|
||||||
aur_helper="yay"
|
aur_helper="yay"
|
||||||
############ use : "Y" or "N"
|
|
||||||
###-Do you have any nvidia gpu in your system?
|
|
||||||
nvidia="Y"
|
|
||||||
###-Install GTK themes (required for Dark/Light function)?
|
###-Install GTK themes (required for Dark/Light function)?
|
||||||
gtk_themes="Y"
|
gtk_themes="Y"
|
||||||
|
|
||||||
###-Do you want to configure Bluetooth?
|
###-Do you want to configure Bluetooth?
|
||||||
bluetooth="Y"
|
bluetooth="Y"
|
||||||
|
|
||||||
###-Do you want to install Thunar file manager?
|
###-Do you want to install Thunar file manager?
|
||||||
thunar="Y"
|
thunar="Y"
|
||||||
###-Install & configure SDDM log-in Manager plus (OPTIONAL) SDDM Theme?
|
### Do you want to set Thunar as the default file manager?
|
||||||
|
thunar_choice="Y"
|
||||||
|
|
||||||
|
|
||||||
|
### Adding user to the 'input' group might be necessary for waybar keyboard-state functionality
|
||||||
|
input_group="Y"
|
||||||
|
|
||||||
|
### Desktop overview Demo Link in README
|
||||||
|
### Desktop overview Demo Link in README
|
||||||
|
### Install AGS (aylur's GTK shell) v1 for Desktop-Like Overview?"
|
||||||
|
ags="Y"
|
||||||
|
|
||||||
|
###-Install & configure SDDM log-in Manager
|
||||||
sddm="Y"
|
sddm="Y"
|
||||||
|
### install and download SDDM themes
|
||||||
|
sddm_theme="Y"
|
||||||
|
|
||||||
###-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)
|
###-Install XDG-DESKTOP-PORTAL-HYPRLAND? (For proper Screen Share ie OBS)
|
||||||
xdph="Y"
|
xdph="Y"
|
||||||
###-Install zsh, oh-my-zsh & (Optional) pokemon-colorscripts?
|
|
||||||
zsh="Y"
|
|
||||||
###-Installing in a Asus ROG Laptops?
|
|
||||||
rog="N"
|
|
||||||
###-Do you want to download pre-configured Hyprland dotfiles?
|
|
||||||
dots="Y"
|
|
||||||
|
|
||||||
### These are the sub-questions of the above choices
|
### Shell extension. Bash alternative
|
||||||
### Would you like to blacklist nouveau? (y/n)
|
###-Install zsh, oh-my-zsh
|
||||||
blacklist_nouveau="Y"
|
zsh="Y"
|
||||||
# Ask the user if they want to use Thunar as the default file manager
|
### add Pokemon color scripts to terminal
|
||||||
# Do you want to set Thunar as the default file manager? (y/n): "
|
|
||||||
thunar_default="Y"
|
|
||||||
### XDG-desktop-portal-KDE & GNOME (if installed) should be manually disabled or removed! Script cant remove nor disable it.
|
|
||||||
### Would you like to try to remove other XDG-Desktop-Portal-Implementations? (y/n)
|
|
||||||
XDPH1="Y"
|
|
||||||
### OPTIONAL - Would you like to install SDDM themes? (y/n)
|
|
||||||
install_sddm_theme="Y"
|
|
||||||
### " This script will add your user to the 'input' group."
|
|
||||||
### " Please note that adding yourself to the 'input' group might be necessary for waybar keyboard-state functionality."
|
|
||||||
input_group_choid="Y"
|
|
||||||
### OPTIONAL - Do you want to add Pokemon color scripts? (y/n):
|
|
||||||
pokemon_choice="Y"
|
pokemon_choice="Y"
|
||||||
### Do you want to upgrade to the latest version? (y/n) - This is for the dotfiles
|
|
||||||
upgrade_choice="Y"
|
### This will install ASUSCTL & SUPERGFXCTL
|
||||||
|
###-Installing on Asus ROG Laptops?
|
||||||
|
rog="N"
|
||||||
|
|
||||||
|
###-Download and Add pre-configured Hyprland dotfiles?
|
||||||
|
dots="Y"
|
||||||
|
|||||||
Reference in New Issue
Block a user