Compare commits

...

44 Commits

Author SHA1 Message Date
Azalea Gui 9777652dac [U] Release 1.4.8 2023-04-01 21:13:38 -04:00
Azalea Gui 659811a66e [U] Update release script 2023-04-01 21:13:11 -04:00
Azalea Gui 617227da75 [U] Update release script 2023-04-01 21:12:03 -04:00
Azalea Gui 8ffb8063ca [O] Replace \t with " " 2023-04-01 21:06:03 -04:00
Azalea Gui 9018dbb461 [U] Update changelog 2023-04-01 20:58:39 -04:00
Azalea 1d29563e81 [U] Embed readme links in text (#112) 2023-03-25 00:31:05 -04:00
Azalea 0d06df3024 [PR] #112 from bittin: Add slackware package 2023-03-25 00:28:59 -04:00
bittin 964f718766 Added Slackbuilds Slackware Package
Slackbuild for Slackware 15 and current now uploaded and exists updated
2023-03-25 05:22:30 +01:00
Azalea 673e20ff2b [PR] #111 from slackingfred: Update iOS devices 2023-03-24 19:53:44 -04:00
Fred b4a0131359 Update iDevices list (2) 2023-03-24 16:26:54 +08:00
Fred 93ea451c34 Update iDevices list (1) 2023-03-24 12:22:41 +08:00
Azalea Gui a813400807 [F] Specify colorama version, closes #110 2023-03-23 23:58:47 -04:00
Azalea e970c8f672 [PR] #109 from Antiz96: Arch install instructions 2023-03-23 21:27:00 -04:00
Azalea Gui 573eb09f74 [F] Fix reading version requires typing dependency 2023-03-23 21:23:40 -04:00
Azalea Gui 6192b47758 [F] Fix setup.py warnings 2023-03-23 21:22:30 -04:00
Robin Candau 6771e8e7c1 Update the installation instructions for Arch 2023-03-24 00:27:43 +01:00
Azalea e8c9e30920 [PR] #108 from OpenSauce04: Archcraft variants 2023-03-22 19:51:45 -04:00
OpenSauce04 3b8cf64a5e Added archcraft_ascii 2023-03-22 21:46:36 +00:00
OpenSauce04 7d1ec7109f Added archcraft_minimal logo 2023-03-22 21:43:03 +00:00
Azalea Gui 5891522233 [+] Add pipx package manager, closes #107 2023-03-22 12:18:53 -04:00
Azalea Gui d00a3c086d [+] Add omniromantic and pangender, closes #106 2023-03-21 16:03:08 -04:00
Azalea Gui 538646160d [+] Changelog 2023-03-21 01:20:43 -04:00
Azalea Gui 182f2aad15 [+] Add PikaOS, closes #105 2023-03-21 01:15:03 -04:00
Azalea Gui 8c5905c858 [+] Add custom ascii file option, closes #104 2023-03-20 23:31:14 -04:00
Azalea 365ed5a91f [PR] #101 from cs127 - Better color formatting codes
Better colour/formatting codes
2023-03-15 16:33:31 -04:00
Hykilpikonna 859dd3eb83 [+] Add distro option in config #102 2023-03-15 16:29:14 -04:00
Hykilpikonna 5343182ea1 [PR] dylanaraps/neofetch#2305 from BomberFish - Fix Chrome OS.
Upstream PR: https://github.com/dylanaraps/neofetch/pull/2305
Thanks to @BomberFish

Co-authored-by: BomberFish <87151697+BomberFish@users.noreply.github.com>
2023-03-15 16:23:35 -04:00
BomberFish 93639996bb oops 2023-03-15 14:44:59 -04:00
BomberFish 5f39250003 add cros fixes 2023-03-15 12:26:15 -04:00
cs127 08ecada71a Check for linux console 2023-03-13 18:04:01 +03:30
cs127 4d6743b886 Better colour codes 2023-03-13 18:00:04 +03:30
Azalea dcff08340e [PR] #99 from redalpa333/master
Improved ensure_git_bash
2023-03-11 15:36:54 -05:00
Ford Stewart 44a4555bce Improved ensure_git_bash
Better bash detection
Minimized git install now requires input
Moved literal_input function (Had to so I could confirm the minimized git install with it)
2023-03-10 18:18:23 -05:00
Azalea f855d0e244 [PR] #98 from axtloss/axtloss/update-vanilla-logo 2023-03-02 21:58:23 -05:00
axtloss 04d5965d49 Make vanilla logo more readable 2023-03-02 22:04:46 +01:00
Azalea Gui 197e11ee5f [PR] dylanaraps/neofetch#2301 from salientos - Salient OS Logos
Upstream PR: https://github.com/dylanaraps/neofetch/pull/2301
Thanks to @salientos

Co-authored-by: Silent <d3signr@gmail.com>
2023-03-01 10:04:31 -05:00
Azalea Gui 58e60aea8e [F] ARM CPU Detection: Compatibility with clusters
#97
2023-02-24 09:55:09 -05:00
Azalea Gui d3ea2eeee2 [F] ARM CPU Detection: Use python3 instead of python
#97
2023-02-24 09:49:45 -05:00
Azalea Gui 2b4a35f12b [F] Positive look-ahead in regex matching 2023-02-21 09:55:14 -05:00
Azalea Gui 469dd762f2 [O] Better RE substitution 2023-02-21 09:51:27 -05:00
Silent d8bdffa1f1 Added SalientOS 2022-12-03 14:57:16 +00:00
Silent a3e93a03fc Update neofetch 2022-01-02 11:51:35 +00:00
Silent 0329c2825f Update neofetch 2021-12-30 17:11:10 +00:00
Silent 48acfaaebe Add SalientOS to Neofetch 2021-12-30 17:09:44 +00:00
21 changed files with 644 additions and 333 deletions
+55 -36
View File
@@ -28,9 +28,11 @@ pip install hyfetch
Currently, these distributions have existing packages for HyFetch: Currently, these distributions have existing packages for HyFetch:
* Arch Linux: `paru -S hyfetch` or `yay -S hyfetch` (Thanks to [@Aleksana](https://github.com/Aleksanaa)) * Arch Linux: `sudo pacman -S hyfetch` (Thanks to [@Aleksana](https://github.com/Aleksanaa) and [@Antiz96](https://github.com/Antiz96))
* Nix: `nix-env -i hyfetch` (Thanks to [@YisuiDenghua](https://github.com/YisuiDenghua)) * Nix: `nix-env -i hyfetch` (Thanks to [@YisuiDenghua](https://github.com/YisuiDenghua))
* Guix: `guix install hyfetch` (Thanks to [@WammKD](https://github.com/WammKD)) * Guix: `guix install hyfetch` (Thanks to [@WammKD](https://github.com/WammKD))
* Slackware `sbopkg -b hyfetch` Slackware [Slackbuild](https://slackbuilds.org/repository/15.0/desktop/hyfetch/?search=hyfetch) (Thanks to [@bittin](https://github.com/bittin) and Urchlay)
### Method 3: Install the latest developmental version using git ### Method 3: Install the latest developmental version using git
@@ -99,39 +101,56 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
<!-- CHANGELOG STARTS HERE ---> <!-- CHANGELOG STARTS HERE --->
### 1.4.8
* 🌈 Improved Windows git bash detection ([#99](https://github.com/hykilpikonna/hyfetch/pull/99))
* 🌈 Improved color formatting codes ([#101](https://github.com/hykilpikonna/hyfetch/pull/101))
* 🌈 Allow specifying distro in config ([#102](https://github.com/hykilpikonna/hyfetch/pull/102))
* 🌈 Allow specifying custom ascii files ([#104](https://github.com/hykilpikonna/hyfetch/pull/104))
* 🌈 Add omniromantic and pangender ([#106](https://github.com/hykilpikonna/hyfetch/pull/106))
* 🌈 Now officially packaged for ArchLinux Community & Slackware! ([#112](https://github.com/hykilpikonna/hyfetch/pull/112)) ([#109](https://github.com/hykilpikonna/hyfetch/pull/109))
* 🖼 Host - Update Apple device model detection. ([#111](https://github.com/hykilpikonna/hyfetch/pull/111))
* 🖼 Distro - Add Salient OS. ([dylanaraps#2301](https://github.com/dylanaraps/neofetch/pull/2301))
* 🖼 Distro - Add PikaOS. ([#105](https://github.com/hykilpikonna/hyfetch/pull/105))
* 🖼 Distro - Add Archcraft minimal variant. ([#108](https://github.com/hykilpikonna/hyfetch/pull/108))
* 🖼 Distro - Update Vanilla logo. ([#98](https://github.com/hykilpikonna/hyfetch/pull/98))
* 🖼 Distro - ChromeOS version improvements. ([dylanaraps#2305](https://github.com/dylanaraps/neofetch/pull/2305))
* 🖼 CPU - Improved multi-cpu ARM chip detection. ([#97](https://github.com/hykilpikonna/hyfetch/pull/97))
* 🖼 Packages - Support pipx package manager. ([#107](https://github.com/hykilpikonna/hyfetch/pull/107))
### 1.4.7 ### 1.4.7
* 🌈 Better Windows compatibility (#45, #84, #87, #89) * 🌈 Better Windows compatibility ([#45](https://github.com/hykilpikonna/hyfetch/pull/45), [#84](https://github.com/hykilpikonna/hyfetch/pull/84), [#87](https://github.com/hykilpikonna/hyfetch/pull/87), [#89](https://github.com/hykilpikonna/hyfetch/pull/89))
* 🌈 Add gendervoid flags (#81) * 🌈 Add gendervoid flags ([#81](https://github.com/hykilpikonna/hyfetch/pull/81))
* 🌈 Fix ASCII extractor escape sequence generation (#90, #91) * 🌈 Fix ASCII extractor escape sequence generation ([#90](https://github.com/hykilpikonna/hyfetch/pull/90), [#91](https://github.com/hykilpikonna/hyfetch/pull/91))
* 🖼 Distro - Add CuteOS ([dylanaraps#2291](https://github.com/dylanaraps/neofetch/pull/2291)) * 🖼 Distro - Add CuteOS ([dylanaraps#2291](https://github.com/dylanaraps/neofetch/pull/2291))
* 🖼 Distro - Add Floflis ([dylanaraps#2289](https://github.com/dylanaraps/neofetch/pull/2289)) * 🖼 Distro - Add Floflis ([dylanaraps#2289](https://github.com/dylanaraps/neofetch/pull/2289))
* 🖼 Distro - Add ArseLinux ([dylanaraps#2295](https://github.com/dylanaraps/neofetch/pull/2295)) * 🖼 Distro - Add ArseLinux ([dylanaraps#2295](https://github.com/dylanaraps/neofetch/pull/2295))
* 🖼 Distro - Better Solaris support ([dylanaraps#2293](https://github.com/dylanaraps/neofetch/pull/2293)) * 🖼 Distro - Better Solaris support ([dylanaraps#2293](https://github.com/dylanaraps/neofetch/pull/2293))
* 🖼 Packages - Fix scoop package manager for Windows (#93) * 🖼 Packages - Fix scoop package manager for Windows ([#93](https://github.com/hykilpikonna/hyfetch/pull/93))
* 🖼 Packages - Add Evox package manager for Stock Linux (#95) * 🖼 Packages - Add Evox package manager for Stock Linux ([#95](https://github.com/hykilpikonna/hyfetch/pull/95))
* 🖼 WM - Fix false positive wm process name detection (#88, #94) * 🖼 WM - Fix false positive wm process name detection ([#88](https://github.com/hykilpikonna/hyfetch/pull/88), [#94](https://github.com/hykilpikonna/hyfetch/pull/94))
* 🖼 Misc - Added BIOS and bluetooth detection * 🖼 Misc - Added BIOS and bluetooth detection
### 1.4.6 ### 1.4.6
* 🌈 Add compatibility for FastFetch version `>1.8.0` (#62) * 🌈 Add compatibility for FastFetch version `>1.8.0` ([#62](https://github.com/hykilpikonna/hyfetch/pull/62))
* 🖼 Distro - Add Aperture Science ascii art (#61) * 🖼 Distro - Add Aperture Science ascii art ([#61](https://github.com/hykilpikonna/hyfetch/pull/61))
* 🖼 Distro - Add RhaymOS ([dylanaraps#2274](https://github.com/dylanaraps/neofetch/pull/2274)) * 🖼 Distro - Add RhaymOS ([dylanaraps#2274](https://github.com/dylanaraps/neofetch/pull/2274))
* 🖼 Editor - Add editor information detection ([dylanaraps#2271](https://github.com/dylanaraps/neofetch/pull/2271)) * 🖼 Editor - Add editor information detection ([dylanaraps#2271](https://github.com/dylanaraps/neofetch/pull/2271))
* 🖼 Packages - Fix empty cargo directory (#58) * 🖼 Packages - Fix empty cargo directory ([#58](https://github.com/hykilpikonna/hyfetch/pull/58))
* 🖼 Terminal - Display gnome-console instead of kgx ([dylanaraps#2277](https://github.com/dylanaraps/neofetch/pull/2277)) * 🖼 Terminal - Display gnome-console instead of kgx ([dylanaraps#2277](https://github.com/dylanaraps/neofetch/pull/2277))
* 🖼 Terminal - Fix terminal detection with new get_process_name function * 🖼 Terminal - Fix terminal detection with new get_process_name function
* 🖼 CPU - Detect ISA string on RISC-V CPUs (#60) * 🖼 CPU - Detect ISA string on RISC-V CPUs ([#60](https://github.com/hykilpikonna/hyfetch/pull/60))
* 🖼 Song - Fix CMUS player song detection on macOS (#55) * 🖼 Song - Fix CMUS player song detection on macOS ([#55](https://github.com/hykilpikonna/hyfetch/pull/55))
* 🖼 Network - Fix macOS network detection (#56) * 🖼 Network - Fix macOS network detection ([#56](https://github.com/hykilpikonna/hyfetch/pull/56))
* 🖼 Misc - Change LICENSE year to 2023 (#59) * 🖼 Misc - Change LICENSE year to 2023 ([#59](https://github.com/hykilpikonna/hyfetch/pull/59))
### 1.4.5 ### 1.4.5
* 🌈 **Support using FastFetch as a HyFetch backend** (`hyfetch -b fastfetch`) * 🌈 **Support using FastFetch as a HyFetch backend** (`hyfetch -b fastfetch`)
* 🌈 Add config file argument (#48) * 🌈 Add config file argument ([#48](https://github.com/hykilpikonna/hyfetch/pull/48))
* 🌈 Fix problems caused by color detection on Windows (#16) * 🌈 Fix problems caused by color detection on Windows ([#16](https://github.com/hykilpikonna/hyfetch/pull/16))
* 🌈 Support pure-python distro detection for FastFetch * 🌈 Support pure-python distro detection for FastFetch
* 🖼️ Distro - Add Aster Linux ([dylanaraps#2251](https://github.com/dylanaraps/neofetch/pull/2251)) * 🖼️ Distro - Add Aster Linux ([dylanaraps#2251](https://github.com/dylanaraps/neofetch/pull/2251))
* 🖼️ Distro - Add Hybrid Linux ([dylanaraps#2239](https://github.com/dylanaraps/neofetch/pull/2239)) * 🖼️ Distro - Add Hybrid Linux ([dylanaraps#2239](https://github.com/dylanaraps/neofetch/pull/2239))
@@ -139,21 +158,21 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
* 🖼️ Distro - Add Project Sasanqua ([dylanaraps#2264](https://github.com/dylanaraps/neofetch/pull/2264)) * 🖼️ Distro - Add Project Sasanqua ([dylanaraps#2264](https://github.com/dylanaraps/neofetch/pull/2264))
* 🖼️ Distro - Add Kali small variant ([dylanaraps#2242](https://github.com/dylanaraps/neofetch/pull/2242)) * 🖼️ Distro - Add Kali small variant ([dylanaraps#2242](https://github.com/dylanaraps/neofetch/pull/2242))
* 🖼️ Distro - Fix CachyOS matching ([dylanaraps#2026](https://github.com/dylanaraps/neofetch/pull/2026)) * 🖼️ Distro - Fix CachyOS matching ([dylanaraps#2026](https://github.com/dylanaraps/neofetch/pull/2026))
* 🖼 WM - Fix wm detection with `fuser` (#39) * 🖼 WM - Fix wm detection with `fuser` ([#39](https://github.com/hykilpikonna/hyfetch/pull/39))
* 🖼️ Memory - Make memory unit decimal calculation more accurate (#52) * 🖼️ Memory - Make memory unit decimal calculation more accurate ([#52](https://github.com/hykilpikonna/hyfetch/pull/52))
* 🖼 Packages - Fix squirrel (Stock Linux) package count detection (#39) * 🖼 Packages - Fix squirrel (Stock Linux) package count detection ([#39](https://github.com/hykilpikonna/hyfetch/pull/39))
* 🖼 Packages - Support cargo bin environment variable (#49) * 🖼 Packages - Support cargo bin environment variable ([#49](https://github.com/hykilpikonna/hyfetch/pull/49))
* 🖼 Packages - Add tea.xyz package manager (issue [dylanaraps#2235](https://github.com/dylanaraps/neofetch/pull/2235)) * 🖼 Packages - Add tea.xyz package manager (issue [dylanaraps#2235](https://github.com/dylanaraps/neofetch/pull/2235))
### 1.4.4 ### 1.4.4
* 🌈 Fix Python 3.11 compatibility (#35) * 🌈 Fix Python 3.11 compatibility ([#35](https://github.com/hykilpikonna/hyfetch/pull/35))
* 🌈 Fix many overflow problems when screen is too small * 🌈 Fix many overflow problems when screen is too small
* 🖼️ Distro - Add Enso ([dylanaraps#2233](https://github.com/dylanaraps/neofetch/pull/2233)) * 🖼️ Distro - Add Enso ([dylanaraps#2233](https://github.com/dylanaraps/neofetch/pull/2233))
* 🖼️ Memory - Optimize and fix memory unit conversion ([dylanaraps#2225](https://github.com/dylanaraps/neofetch/pull/2225)) * 🖼️ Memory - Optimize and fix memory unit conversion ([dylanaraps#2225](https://github.com/dylanaraps/neofetch/pull/2225))
* 🖼️ DE - Add dwl window manager ([dylanaraps#2234](https://github.com/dylanaraps/neofetch/pull/2234)) * 🖼️ DE - Add dwl window manager ([dylanaraps#2234](https://github.com/dylanaraps/neofetch/pull/2234))
* 🖼️ DE - Fix XDG session detection for X11 ([dylanaraps#2232](https://github.com/dylanaraps/neofetch/pull/2232)) * 🖼️ DE - Fix XDG session detection for X11 ([dylanaraps#2232](https://github.com/dylanaraps/neofetch/pull/2232))
* 🖼️ CPU - Fix model detection for loongson (#34) * 🖼️ CPU - Fix model detection for loongson ([#34](https://github.com/hykilpikonna/hyfetch/pull/34))
### 1.4.3 ### 1.4.3
@@ -161,33 +180,33 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
* 🌈 **Optimize experience on light-themed terminals** * 🌈 **Optimize experience on light-themed terminals**
* 🌈 Fix bugs with lightness and light-mode config not applying * 🌈 Fix bugs with lightness and light-mode config not applying
* 🌈 Fix color alignment for distros with first color ≠ `${c1}` (e.g. Ubuntu Budgie) * 🌈 Fix color alignment for distros with first color ≠ `${c1}` (e.g. Ubuntu Budgie)
* 🌈 Add unlabeled flags (#25) * 🌈 Add unlabeled flags ([#25](https://github.com/hykilpikonna/hyfetch/pull/25))
* 🌈 Add gender nonconforming & femboy & tomboy flags (#32) * 🌈 Add gender nonconforming & femboy & tomboy flags ([#32](https://github.com/hykilpikonna/hyfetch/pull/32))
* 🌈 Fix jailbreak iOS shell `killed: 9` issue caused by ld signature check. * 🌈 Fix jailbreak iOS shell `killed: 9` issue caused by ld signature check.
* 🖼️ Distro - Add garuda_small ([dylanaraps#2215](https://github.com/dylanaraps/neofetch/pull/2215)) * 🖼️ Distro - Add garuda_small ([dylanaraps#2215](https://github.com/dylanaraps/neofetch/pull/2215))
* 🖼️ Distro - Add Cobalt Linux ([dylanaraps#2213](https://github.com/dylanaraps/neofetch/pull/2213)) * 🖼️ Distro - Add Cobalt Linux ([dylanaraps#2213](https://github.com/dylanaraps/neofetch/pull/2213))
* 🖼️ Distro - Add VanillaOS ([dylanaraps#2222](https://github.com/dylanaraps/neofetch/pull/2222)) * 🖼️ Distro - Add VanillaOS ([dylanaraps#2222](https://github.com/dylanaraps/neofetch/pull/2222))
* 🖼️ Distro - Surround macOS build number in parentheses (#28) * 🖼️ Distro - Surround macOS build number in parentheses ([#28](https://github.com/hykilpikonna/hyfetch/pull/28))
* 🖼️ Misc - Auto select stdout mode based on tty detection (#31) * 🖼️ Misc - Auto select stdout mode based on tty detection ([#31](https://github.com/hykilpikonna/hyfetch/pull/31))
* 🖼️ Bug Fix - Fix cols coloring reset for bash 3.2 (#24) * 🖼️ Bug Fix - Fix cols coloring reset for bash 3.2 ([#24](https://github.com/hykilpikonna/hyfetch/pull/24))
### 1.4.2 ### 1.4.2
* 🌈 Detailed runnning/contributing instructions in README.md (#21) * 🌈 Detailed runnning/contributing instructions in README.md ([#21](https://github.com/hykilpikonna/hyfetch/pull/21))
* 🖼️ Distro - Add Stock Linux (#23) * 🖼️ Distro - Add Stock Linux ([#23](https://github.com/hykilpikonna/hyfetch/pull/23))
* 🖼️ Distro - Add DietPi ([dylanaraps#1706](https://github.com/dylanaraps/neofetch/pull/1706)) * 🖼️ Distro - Add DietPi ([dylanaraps#1706](https://github.com/dylanaraps/neofetch/pull/1706))
* 🖼️ Distro - Add OmniOS illumos ([dylanaraps#2196](https://github.com/dylanaraps/neofetch/pull/2196)) * 🖼️ Distro - Add OmniOS illumos ([dylanaraps#2196](https://github.com/dylanaraps/neofetch/pull/2196))
* 🖼️ Distro - Add Droidian ([dylanaraps#2201](https://github.com/dylanaraps/neofetch/pull/2201)) * 🖼️ Distro - Add Droidian ([dylanaraps#2201](https://github.com/dylanaraps/neofetch/pull/2201))
* 🖼️ Distro - Add HamoniKR ([dylanaraps#2210](https://github.com/dylanaraps/neofetch/pull/2210)) * 🖼️ Distro - Add HamoniKR ([dylanaraps#2210](https://github.com/dylanaraps/neofetch/pull/2210))
* 🖼️ Song - Add support for TIDAL HiFi (#22) * 🖼️ Song - Add support for TIDAL HiFi ([#22](https://github.com/hykilpikonna/hyfetch/pull/22))
* 🖼️ CPU - Detect multiple CPU models for ARM * 🖼️ CPU - Detect multiple CPU models for ARM
* 🖼️ Misc - Better defaults: Show RAM in GiB, RAM percentage, CPU speed rounding, refresh rate * 🖼️ Misc - Better defaults: Show RAM in GiB, RAM percentage, CPU speed rounding, refresh rate
* 🖼️ Bug Fix - Fix bash 5.2 column cut off issue (#24) * 🖼️ Bug Fix - Fix bash 5.2 column cut off issue ([#24](https://github.com/hykilpikonna/hyfetch/pull/24))
### 1.4.1 ### 1.4.1
* 🌈 Paginate flags (#14) * 🌈 Paginate flags ([#14](https://github.com/hykilpikonna/hyfetch/pull/14))
* 🌈 Add release workflow (#15) * 🌈 Add release workflow ([#15](https://github.com/hykilpikonna/hyfetch/pull/15))
* 🌈 Create automatic release script * 🌈 Create automatic release script
* 🌈 Config page - Give warning when terminal size is too small * 🌈 Config page - Give warning when terminal size is too small
* 🌈 Config page - Optimize color arrangement selection on small screens * 🌈 Config page - Optimize color arrangement selection on small screens
@@ -208,7 +227,7 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
### 1.4.0 ### 1.4.0
* 🌈 Add finsexual flag (#12) * 🌈 Add finsexual flag ([#12](https://github.com/hykilpikonna/hyfetch/pull/12))
* 🚀 Addressed a total of 128 currently open pull requests from neofetch * 🚀 Addressed a total of 128 currently open pull requests from neofetch
<details> <details>
@@ -424,11 +443,11 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
### 1.0.5 ### 1.0.5
* Fix terminal emulator detection ([PR #2](https://github.com/hykilpikonna/hyfetch/pull/2)) * Fix terminal emulator detection ([PR [#2](https://github.com/hykilpikonna/hyfetch/pull/2)](https://github.com/hykilpikonna/hyfetch/pull/2))
### 1.0.4 ### 1.0.4
* Add more flags ([PR #1](https://github.com/hykilpikonna/hyfetch/pull/1)) * Add more flags ([PR [#1](https://github.com/hykilpikonna/hyfetch/pull/1)](https://github.com/hykilpikonna/hyfetch/pull/1))
### 1.0.3 ### 1.0.3
+1
View File
@@ -0,0 +1 @@
VERSION = '1.4.8'
+27 -5
View File
@@ -6,11 +6,33 @@ from dataclasses import dataclass, astuple
from .constants import GLOBAL_CFG from .constants import GLOBAL_CFG
from .types import * from .types import *
MINECRAFT_COLORS = ["&0/\033[0;30m", "&1/\033[0;34m", "&2/\033[0;32m", "&3/\033[0;36m", "&4/\033[0;31m", MINECRAFT_COLORS = [
"&5/\033[0;35m", "&6/\033[0;33m", "&7/\033[0;37m", "&8/\033[1;30m", "&9/\033[1;34m",
"&a/\033[1;32m", "&b/\033[1;36m", "&c/\033[1;31m", "&d/\033[1;35m", "&e/\033[1;33m", # Minecraft formatting codes
"&f/\033[1;37m", # ==========================
"&r/\033[0m", "&l/\033[1m", "&o/\033[3m", "&n/\033[4m", "&-/\n"] "&0/\033[38;5;0m", "&1/\033[38;5;4m", "&2/\033[38;5;2m", "&3/\033[38;5;6m",
"&4/\033[38;5;1m", "&5/\033[38;5;5m", "&6/\033[38;5;3m", "&7/\033[38;5;7m",
"&8/\033[38;5;8m", "&9/\033[38;5;12m", "&a/\033[38;5;10m", "&b/\033[38;5;14m",
"&c/\033[38;5;9m", "&d/\033[38;5;13m", "&e/\033[38;5;11m", "&f/\033[38;5;15m",
"&l/\033[1m", # Enable bold text
"&o/\033[3m", # Enable italic text
"&n/\033[4m", # Enable underlined text
"&k/\033[8m", # Enable hidden text
"&m/\033[9m", # Enable strikethrough text
"&r/\033[0m", # Reset everything
# Extended codes (not officially in Minecraft)
# ============================================
"&-/\n", # Line break
"&~/\033[39m", # Reset text color
"&*/\033[49m", # Reset background color
"&L/\033[22m", # Disable bold text
"&O/\033[23m", # Disable italic text
"&N/\033[24m", # Disable underlined text
"&K/\033[28m", # Disable hidden text
"&M/\033[29m", # Disable strikethrough text
]
MINECRAFT_COLORS = [(r[:2], r[3:]) for r in MINECRAFT_COLORS] MINECRAFT_COLORS = [(r[:2], r[3:]) for r in MINECRAFT_COLORS]
+1 -1
View File
@@ -5,9 +5,9 @@ from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from .types import LightDark from .types import LightDark
from .__version__ import VERSION
CONFIG_PATH = Path.home() / '.config/hyfetch.json' CONFIG_PATH = Path.home() / '.config/hyfetch.json'
VERSION = '1.4.7'
TEST_ASCII = r""" TEST_ASCII = r"""
+27
View File
@@ -0,0 +1,27 @@
# This file is automatically generated. Please do not modify.
from . import AsciiArt
archcraft_ascii = AsciiArt(match=r'''"archcraft_ascii"*''', color='6 1 2 3 4 5', ascii=r"""
${c1} -o\
:ooo:
.ooooo.
ooooooo.
+oooooooo.
-oooooooooo.
--:-+oooooooo.
yooo+=+sooooooo.
yoooooosooooooooo.
y+ooooooooooooooooo.
yoooooooooooooooooooo`
yoooooo+oo= :oo++ooooo`
:oooooo. +ooooo-
-ooooooo. .::. +ooosoo=
-oooooo` .oooo` +os-=o=
=ooooooo=: `oo+ :=ooo=--`.
+ooooooooos. .=sooooooo+-
.+osossos+-` `-+osososs+.
:sss+=-:` `:-=+ssss:
:=-:` `-=+:
""")
+27
View File
@@ -0,0 +1,27 @@
# This file is automatically generated. Please do not modify.
from . import AsciiArt
archcraft_minimal = AsciiArt(match=r'''"archcraft_minimal"*''', color='6 1 2 3 4 5', ascii=r"""
${c1} ⢰⡆
⢠⣿⣿⡄
⢀⣾⣿⣿⣿⡀
⣼⣿⣿⣿⣿⣷⡀
⣼⣿⣿⣿⣿⣿⣿⣷
⢼⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣰⣤⣈⠻⢿⣿⣿⣿⣿⣿⣿⣧
⣰⣿⣿⣿⣿⣮⣿⣿⣿⣿⣿⣿⣿⣧
⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣼⣿⣿⣿⣿⣿⡿⣿⣿⡟ ⠸⣿⣿⡿⣿⣿⣿⣿⣿⣷⡀
⣼⣿⣿⣿⣿⣿⡏ ⠈⣿⣿⣿⣿⣿⣷⡀
⢀⣼⣿⣿⣿⣿⣿⣿⡗ ⢀⣠⣤⣀ ⠸⣿⣿⣿⣿⣿⣿⣷⡀
⢀⣾⣿⣿⣿⣿⣿⡏⠁ ⢠⣿⣿⣿⣿⡇ ⢙⣿⣿⣻⠿⣿⣷⡀
⢀⣾⣿⣿⣿⣿⣿⣿⣷⣤⡀ ⠻⣿⣿⡿⠃ ⢀⣼⣿⣿⣿⣿⣦⣌⠙
⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏ ⢿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀
⢠⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠁ ⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⡄
⣠⣿⣿⣿⣿⠿⠛⠋⠁ ⠉⠙⠻⢿⣿⣿⣿⣿⣆
⡰⠟⠛⠉⠁ ⠉⠙⠛⠿⢆
""")
+16
View File
@@ -104,6 +104,14 @@ def detect(name: str) -> AsciiArt | None:
from .apricity import apricity from .apricity import apricity
return apricity return apricity
if name.startswith('archcraft_ascii'):
from .archcraft_ascii import archcraft_ascii
return archcraft_ascii
if name.startswith('archcraft_minimal'):
from .archcraft_minimal import archcraft_minimal
return archcraft_minimal
if name.startswith('archcraft'): if name.startswith('archcraft'):
from .archcraft import archcraft from .archcraft import archcraft
return archcraft return archcraft
@@ -920,6 +928,10 @@ def detect(name: str) -> AsciiArt | None:
from .pisi import pisi from .pisi import pisi
return pisi return pisi
if name.startswith('pikaos'):
from .pikaos import pikaos
return pikaos
if name.startswith('pnm linux') or name.startswith('whpnm linux'): if name.startswith('pnm linux') or name.startswith('whpnm linux'):
from .pnm_linux import pnm_linux from .pnm_linux import pnm_linux
return pnm_linux return pnm_linux
@@ -1068,6 +1080,10 @@ def detect(name: str) -> AsciiArt | None:
from .sasanqua import sasanqua from .sasanqua import sasanqua
return sasanqua return sasanqua
if name.startswith('salient os') or name.startswith('salientos') or name.startswith('salientos'):
from .salient_os import salient_os
return salient_os
if name.startswith('scientific'): if name.startswith('scientific'):
from .scientific import scientific from .scientific import scientific
return scientific return scientific
+15
View File
@@ -0,0 +1,15 @@
# This file is automatically generated. Please do not modify.
from . import AsciiArt
pikaos = AsciiArt(match=r'''"PikaOS"*''', color='11', ascii=r"""
${c1} /🐦🐦🐦$ /🐦/🐦 /🐦🐦🐦 /🐦🐦🐦
| 🐦__ $|__| 🐦 /🐦__ 🐦/🐦__ 🐦
| 🐦 \ 🐦/$| 🐦 /🐦 /🐦🐦🐦| 🐦 \ $| 🐦 \__/
| 🐦🐦🐦$| $| 🐦 /🐦/|____ $| 🐦 | $| 🐦🐦🐦
| 🐦____/| $| 🐦🐦🐦/ /🐦🐦🐦| 🐦 | 🐦\____ 🐦
| 🐦 | $| 🐦_ 🐦 /🐦__ $| 🐦 | 🐦/🐦 \ 🐦
| 🐦 | $| 🐦 \ $| 🐦🐦🐦| 🐦🐦🐦| 🐦🐦🐦/
|__/ |__|__/ \__/\_______/\______/ \______/ .
""")
+27
View File
@@ -0,0 +1,27 @@
# This file is automatically generated. Please do not modify.
from . import AsciiArt
salient_os = AsciiArt(match=r'''"Salient OS"* | "SalientOS"* | "salientos"*''', color='6 6 7 1', ascii=r"""
${c1} 00xxxx0
00xxxxxx0
0xxxxxxxxx 000000
0xxxxxxxxxx xxxxxxxxxx0
0xxxxxxxxxxx0 xxxxxxxxxxxxx0
0xxxxxxxxxxxx0 0xxxxxxxxxxxxxx0
0xxxxxxxxxxxxx0 0xxxxxxxxxxxxxxx0
0xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx0
xxxxxxxxxxxxxxxx0 0xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx 0xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx0 xxxxxxxxxxxxxx
0xxxxxxxxxxxxxxxxxx0 0xxxxxxxxxxxx0
0xxxxxxxxxxxxxxxxxx xxxxxxxxxxx0
0xxxxxxxxxxxxxxxxx xxxxxxxxxx0
0xxxxxxxxxxxxxxxx xxxxxxxxx0
0xxxxxxxxxxxx0 0xxxxxxx0
0xxxxxxx0 xxxxxx0
0xxx00
x00
""")
+19 -17
View File
@@ -4,22 +4,24 @@ from . import AsciiArt
vanilla = AsciiArt(match=r'''"Vanilla"*''', color='11 15', ascii=r""" vanilla = AsciiArt(match=r'''"Vanilla"*''', color='11 15', ascii=r"""
${c1} ${c1}
.----:
.-------. .OO.
:---::----: .OOOO.
.----::-----. .OO${c2}II${c1}OO.
......... :----::-----: ..:::-::::.. IOOO${c2}II${c1}OOOI
.-----------------::------------------: .OOOO${c2}II${c1}OOOO.
----::-----------::----------::::---: ............IOOOO${c2}II${c1}OOOOI............
-----:::--------::-------:::------- OOOOOOOOOOOOOOOOOO${c2}II${c1}OOOOOOOOOOOOOOOOOO
:------::::--::...:::::---------: OOOO${c2}II${c1}OOOOOOOOOOO${c2}II${c1}OOOOOOOOOOO${c2}II${c1}OOOO
.---------::.. ..:---------. OOOOO${c2}III${c1}OOOOOOOO${c2}II${c1}OOOOOOOO${c2}III${c1}OOOOO
.::-----::.. .::----::. OOOOOOO${c2}IIII${c1}OO${c2}I....I${c1}OO${c2}IIII${c1}OOOOOOO
.:------:.......:-------: OOOOOOOOOO${c2}II.. ..II${c1}OOOOOOOOOO
.--------::::::::-:::-------. OOOOOOO${c2}II. .II${c1}OOOOOOO
.-------::-----.:-----::------. OOOOOO${c2}II:......:II${c1}OOOOOO
-----::------: :------::----- OOOOOOOOO${c2}IIIIIIII${c1}OOOOOOOOO
:--::--------: .-------::---: OOOOOO${c2}II${c1}OOOOOOOOOOOO${c2}II${c1}OOOOOO
:----------:: .:---------- OOOO${c2}II${c1}OOOOOOOI IOOOOOO${c2}II${c1}OOOO
IOO${c2}II${c1}OOOOOOOO: :OOOOOOOO${c2}II${c1}OOI
IOOOOOOOOOOII IIOOOOOOOOOOI
""") """)
+12 -55
View File
@@ -7,7 +7,6 @@ import random
import traceback import traceback
from itertools import permutations from itertools import permutations
from math import ceil from math import ceil
from typing import Iterable
from . import termenv, neofetch_util from . import termenv, neofetch_util
from .color_scale import Scale from .color_scale import Scale
@@ -33,51 +32,6 @@ def check_config(path) -> Config:
return create_config() return create_config()
def literal_input(prompt: str, options: Iterable[str], default: str, show_ops: bool = True) -> str:
"""
Ask the user to provide an input among a list of options
:param prompt: Input prompt
:param options: Options
:param default: Default option
:param show_ops: Show options
:return: Selection
"""
options = list(options)
lows = [o.lower() for o in options]
if show_ops:
op_text = '|'.join([f'&l&n{o}&r' if o == default else o for o in options])
printc(f'{prompt} ({op_text})')
else:
printc(f'{prompt} (default: {default})')
def find_selection(sel: str):
if not sel:
return None
# Find exact match
if sel in lows:
return options[lows.index(sel)]
# Find starting abbreviation
for i, op in enumerate(lows):
if op.startswith(sel):
return options[i]
return None
selection = input('> ').lower() or default
while not find_selection(selection):
print(f'Invalid selection! {selection} is not one of {"|".join(options)}')
selection = input('> ').lower() or default
print()
return find_selection(selection)
def create_config() -> Config: def create_config() -> Config:
""" """
Create config interactively Create config interactively
@@ -90,7 +44,7 @@ def create_config() -> Config:
asc = get_distro_ascii() asc = get_distro_ascii()
asc_width, asc_lines = ascii_size(asc) asc_width, asc_lines = ascii_size(asc)
logo = color("&b&lhyfetch&r" if det_bg is None or det_bg.is_light() else "&b&lhy&f&lfetch&r") logo = color("&l&bhyfetch&~&L" if det_bg is None or det_bg.is_light() else "&l&bhy&ffetch&~&L")
title = f'Welcome to {logo} Let\'s set up some colors first.' title = f'Welcome to {logo} Let\'s set up some colors first.'
clear_screen(title) clear_screen(title)
@@ -100,7 +54,7 @@ def create_config() -> Config:
nonlocal title, option_counter nonlocal title, option_counter
if not k.endswith(":"): if not k.endswith(":"):
k += ':' k += ':'
title += f"\n&e{option_counter}. {k.ljust(30)} &r{v}" title += f"\n&e{option_counter}. {k.ljust(30)} &~{v}"
option_counter += 1 option_counter += 1
def print_title_prompt(prompt: str): def print_title_prompt(prompt: str):
@@ -153,7 +107,7 @@ def create_config() -> Config:
return det_bg.is_light(), 'Detected background color' return det_bg.is_light(), 'Detected background color'
clear_screen(title) clear_screen(title)
inp = literal_input(f'2. Is your terminal in &blight mode&r or &4dark mode&r?', inp = literal_input(f'2. Is your terminal in &blight mode&~ or &4dark mode&~?',
['light', 'dark'], 'dark') ['light', 'dark'], 'dark')
return inp == 'light', 'Selected background color' return inp == 'light', 'Selected background color'
@@ -354,7 +308,7 @@ def run():
colorama.just_fix_windows_console() colorama.just_fix_windows_console()
# Create CLI # Create CLI
hyfetch = color('&b&lhyfetch&r') hyfetch = color('&l&bhyfetch&~&L')
parser = argparse.ArgumentParser(description=color(f'{hyfetch} - neofetch with flags <3')) parser = argparse.ArgumentParser(description=color(f'{hyfetch} - neofetch with flags <3'))
parser.add_argument('-c', '--config', action='store_true', help=color(f'Configure {hyfetch}')) parser.add_argument('-c', '--config', action='store_true', help=color(f'Configure {hyfetch}'))
@@ -366,7 +320,9 @@ def run():
parser.add_argument('--c-set-l', dest='light', help=f'Set lightness value of the colors', type=float) parser.add_argument('--c-set-l', dest='light', help=f'Set lightness value of the colors', type=float)
parser.add_argument('-V', '--version', dest='version', action='store_true', help=f'Check version') parser.add_argument('-V', '--version', dest='version', action='store_true', help=f'Check version')
parser.add_argument('--debug', action='store_true', help=f'Debug mode') parser.add_argument('--debug', action='store_true', help=f'Debug mode')
parser.add_argument('--distro', '--test-distro', dest='distro', help=f'Test for a specific distro') parser.add_argument('--distro', '--test-distro', dest='distro', help=f'Test for a specific distro')
parser.add_argument('--ascii-file', help='Use a specific file for the ascii art')
# Hidden debug arguments # Hidden debug arguments
# --test-print: Print the ascii distro and exit # --test-print: Print the ascii distro and exit
@@ -384,10 +340,6 @@ def run():
ensure_git_bash() ensure_git_bash()
check_windows_cmd() check_windows_cmd()
# Use a custom distro
if args.distro:
GLOBAL_CFG.override_distro = args.distro
if args.debug: if args.debug:
GLOBAL_CFG.debug = True GLOBAL_CFG.debug = True
@@ -406,6 +358,9 @@ def run():
# Load config or create config # Load config or create config
config = create_config() if args.config else check_config(args.config_file) config = create_config() if args.config else check_config(args.config_file)
# Use a custom distro
GLOBAL_CFG.override_distro = args.distro or config.distro
# Param overwrite config # Param overwrite config
if args.preset: if args.preset:
config.preset = args.preset config.preset = args.preset
@@ -431,7 +386,9 @@ def run():
# Run # Run
try: try:
neofetch_util.run(preset, config.color_align, config.backend) asc = get_distro_ascii() if not args.ascii_file else Path(args.ascii_file).read_text("utf-8")
asc = config.color_align.recolor_ascii(asc, preset)
neofetch_util.run(asc, config.backend)
except Exception as e: except Exception as e:
print(f'Error: {e}') print(f'Error: {e}')
traceback.print_exc() traceback.print_exc()
+1
View File
@@ -16,6 +16,7 @@ class Config:
lightness: float | None = None lightness: float | None = None
color_align: ColorAlignment = field(default_factory=lambda: ColorAlignment('horizontal')) color_align: ColorAlignment = field(default_factory=lambda: ColorAlignment('horizontal'))
backend: BackendLiteral = "neofetch" backend: BackendLiteral = "neofetch"
distro: str | None = None
@classmethod @classmethod
def from_dict(cls, d: dict): def from_dict(cls, d: dict):
+66 -28
View File
@@ -12,6 +12,7 @@ from dataclasses import dataclass
from pathlib import Path from pathlib import Path
from subprocess import check_output from subprocess import check_output
from tempfile import TemporaryDirectory from tempfile import TemporaryDirectory
from typing import Iterable
import pkg_resources import pkg_resources
@@ -24,6 +25,48 @@ from .types import BackendLiteral, ColorAlignMode
RE_NEOFETCH_COLOR = re.compile('\\${c[0-9]}') RE_NEOFETCH_COLOR = re.compile('\\${c[0-9]}')
def literal_input(prompt: str, options: Iterable[str], default: str, show_ops: bool = True) -> str:
"""
Ask the user to provide an input among a list of options
:param prompt: Input prompt
:param options: Options
:param default: Default option
:param show_ops: Show options
:return: Selection
"""
options = list(options)
lows = [o.lower() for o in options]
if show_ops:
op_text = '|'.join([f'&l&n{o}&L&N' if o == default else o for o in options])
printc(f'{prompt} ({op_text})')
else:
printc(f'{prompt} (default: {default})')
def find_selection(sel: str):
if not sel:
return None
# Find exact match
if sel in lows:
return options[lows.index(sel)]
# Find starting abbreviation
for i, op in enumerate(lows):
if op.startswith(sel):
return options[i]
return None
selection = input('> ').lower() or default
while not find_selection(selection):
print(f'Invalid selection! {selection} is not one of {"|".join(options)}')
selection = input('> ').lower() or default
print()
return find_selection(selection)
def term_size() -> tuple[int, int]: def term_size() -> tuple[int, int]:
""" """
@@ -106,7 +149,7 @@ class ColorAlignment:
# Add new colors # Add new colors
if self.mode == 'horizontal': if self.mode == 'horizontal':
colors = preset.with_length(len(lines)) colors = preset.with_length(len(lines))
asc = '\n'.join([l.replace(f'${{c{back}}}', colors[i].to_ansi()) + color('&r') for i, l in enumerate(lines)]) asc = '\n'.join([l.replace(f'${{c{back}}}', colors[i].to_ansi()) + color('&~&*') for i, l in enumerate(lines)])
else: else:
raise NotImplementedError() raise NotImplementedError()
@@ -121,9 +164,9 @@ class ColorAlignment:
# Add new colors # Add new colors
if self.mode == 'horizontal': if self.mode == 'horizontal':
colors = preset.with_length(len(lines)) colors = preset.with_length(len(lines))
asc = '\n'.join([colors[i].to_ansi() + l + color('&r') for i, l in enumerate(lines)]) asc = '\n'.join([colors[i].to_ansi() + l + color('&~&*') for i, l in enumerate(lines)])
else: else:
asc = '\n'.join(preset.color_text(line) + color('&r') for line in lines) asc = '\n'.join(preset.color_text(line) + color('&~&*') for line in lines)
else: else:
preset = preset.unique_colors() preset = preset.unique_colors()
@@ -185,7 +228,7 @@ def ensure_git_bash() -> Path:
return def_path return def_path
# Detect third-party git.exe in path # Detect third-party git.exe in path
git_exe = shutil.which("git.exe") or shutil.which("git") git_exe = shutil.which("bash") or shutil.which("git.exe") or shutil.which("git")
if git_exe is not None: if git_exe is not None:
pth = Path(git_exe).parent pth = Path(git_exe).parent
if (pth / r'bash.exe').is_file(): if (pth / r'bash.exe').is_file():
@@ -207,14 +250,17 @@ def ensure_git_bash() -> Path:
# No installation found, download a portable installation # No installation found, download a portable installation
print('Git installation not found. Git is required to use HyFetch/neofetch on Windows') print('Git installation not found. Git is required to use HyFetch/neofetch on Windows')
print('Downloading a minimal portable package for Git...') if literal_input('Would you like to install a minimal package for Git? (if no is selected colors almost certianly won\'t work)', ['yes', 'no'], 'yes', False) == 'yes':
from urllib.request import urlretrieve print('Downloading a minimal portable package for Git...')
urlretrieve(MINGIT_URL, pkg_path) from urllib.request import urlretrieve
print('Download finished! Extracting...') urlretrieve(MINGIT_URL, pkg_path)
with zipfile.ZipFile(pkg_path, 'r') as zip_ref: print('Download finished! Extracting...')
zip_ref.extractall(path) with zipfile.ZipFile(pkg_path, 'r') as zip_ref:
print('Done!') zip_ref.extractall(path)
return path / r'bin\bash.exe' print('Done!')
return path / r'bin\bash.exe'
else:
sys.exit()
def check_windows_cmd(): def check_windows_cmd():
@@ -290,25 +336,21 @@ def get_distro_name():
return run_neofetch_cmd('ascii_distro_name', True) return run_neofetch_cmd('ascii_distro_name', True)
def run(preset: ColorProfile, alignment: ColorAlignment, backend: BackendLiteral): def run(asc: str, backend: BackendLiteral):
if backend == "neofetch": if backend == "neofetch":
return run_neofetch(preset, alignment) return run_neofetch(asc)
if backend == "fastfetch": if backend == "fastfetch":
return run_fastfetch(preset, alignment) return run_fastfetch(asc)
if backend == "fastfetch-old": if backend == "fastfetch-old":
return run_fastfetch(preset, alignment, legacy=True) return run_fastfetch(asc, legacy=True)
def run_neofetch(preset: ColorProfile, alignment: ColorAlignment): def run_neofetch(asc: str):
""" """
Run neofetch with colors Run neofetch with colors
:param preset: Color palette :param asc: Ascii art
:param alignment: Color alignment settings
""" """
asc = get_distro_ascii()
asc = alignment.recolor_ascii(asc, preset)
# Escape backslashes here because backslashes are escaped in neofetch for printf # Escape backslashes here because backslashes are escaped in neofetch for printf
asc = asc.replace('\\', '\\\\') asc = asc.replace('\\', '\\\\')
@@ -322,17 +364,13 @@ def run_neofetch(preset: ColorProfile, alignment: ColorAlignment):
run_neofetch_cmd(f'--ascii --source {path.absolute()} --ascii-colors') run_neofetch_cmd(f'--ascii --source {path.absolute()} --ascii-colors')
def run_fastfetch(preset: ColorProfile, alignment: ColorAlignment, legacy: bool = False): def run_fastfetch(asc: str, legacy: bool = False):
""" """
Run neofetch with colors Run neofetch with colors
:param preset: Color palette :param asc: Ascii art
:param alignment: Color alignment settings
:param legacy: Set true when using fastfetch < 1.8.0 :param legacy: Set true when using fastfetch < 1.8.0
""" """
asc = get_distro_ascii()
asc = alignment.recolor_ascii(asc, preset)
# Write temp file # Write temp file
with TemporaryDirectory() as tmp_dir: with TemporaryDirectory() as tmp_dir:
tmp_dir = Path(tmp_dir) tmp_dir = Path(tmp_dir)
+20 -2
View File
@@ -83,12 +83,12 @@ class ColorProfile:
for i, t in enumerate(txt): for i, t in enumerate(txt):
if space_only and t != ' ': if space_only and t != ' ':
if i > 0 and txt[i - 1] == ' ': if i > 0 and txt[i - 1] == ' ':
result += '\033[0m' result += '\033[39;49m'
result += t result += t
else: else:
result += colors[i].to_ansi(foreground=foreground) + t result += colors[i].to_ansi(foreground=foreground) + t
result += '\033[0m' result += '\033[39;49m'
return result return result
def lighten(self, multiplier: float) -> ColorProfile: def lighten(self, multiplier: float) -> ColorProfile:
@@ -216,6 +216,14 @@ PRESETS: dict[str, ColorProfile] = {
'#8EA6FF', '#8EA6FF',
]), ]),
'omniromantic': ColorProfile([
'#FEC8E4',
'#FDA1DB',
'#89739A',
'#ABA7FE',
'#BFCEFF',
]),
# gay men sourced from https://www.flagcolorcodes.com/gay-men # gay men sourced from https://www.flagcolorcodes.com/gay-men
'gay-men': ColorProfile([ 'gay-men': ColorProfile([
'#078D70', '#078D70',
@@ -542,6 +550,16 @@ PRESETS: dict[str, ColorProfile] = {
'#7D2557' '#7D2557'
]), ]),
'pangender': ColorProfile([
'#FFF798',
'#FEDDCD',
'#FFEBFB',
'#FFFFFF',
'#FFEBFB',
'#FEDDCD',
'#FFF798',
]),
'gendernonconforming1': ColorProfile( 'gendernonconforming1': ColorProfile(
ColorProfile([ ColorProfile([
'#50284d', '#50284d',
+268 -128
View File
@@ -28,7 +28,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
version=7.3.7 version=7.3.8
# Fallback to a value of '5' for shells which support bash # Fallback to a value of '5' for shells which support bash
# but do not set the 'BASH_' shell variables (osh). # but do not set the 'BASH_' shell variables (osh).
@@ -38,7 +38,7 @@ shopt -s eval_unsafe_arith &>/dev/null
sys_locale=${LANG:-C} sys_locale=${LANG:-C}
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-${HOME}/.config} XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-${HOME}/.config}
PATH=$PATH:/usr/xpg4/bin:/usr/sbin:/sbin:/usr/etc:/usr/libexec PATH=$PATH:/usr/xpg4/bin:/usr/sbin:/sbin:/usr/etc:/usr/libexec
reset='\e[0m' reset='\e[39;22m'
shopt -s nocasematch extglob shopt -s nocasematch extglob
# Speed up script by not using unicode. # Speed up script by not using unicode.
@@ -834,34 +834,35 @@ image_source="auto"
# Flag: --ascii_distro # Flag: --ascii_distro
# #
# NOTE: AIX, AlmaLinux, Alpine, Alter, Amazon, AmogOS, Anarchy, Android, Antergos, antiX, AOSC OS, # NOTE: AIX, AlmaLinux, Alpine, Alter, Amazon, AmogOS, Anarchy, Android, Antergos, antiX, AOSC OS,
# AOSC OS/Retro, Aperio GNU/Linux, Aperture, Apricity, Arch, ArchBox, Archcraft, ARCHlabs, # AOSC OS/Retro, Aperio GNU/Linux, Aperture, Apricity, Arch, ArchBox, Archcraft, archcraft_ascii,
# ArchMerge, ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi, Aster, AsteroidOS, astOS, # archcraft_minimal, ARCHlabs, ArchMerge, ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi,
# Bedrock, BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn, BlueLight, Bodhi, bonsai, BSD, # Aster, AsteroidOS, astOS, Bedrock, BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn,
# BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL-Mariner, CelOS, Center, CentOS, Chakra, # BlueLight, Bodhi, bonsai, BSD, BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL-Mariner,
# ChaletOS, Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS, ClearOS, Clover, Cobalt, # CelOS, Center, CentOS, Chakra, ChaletOS, Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS,
# Condres, Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber, CutefishOS, CuteOS, CyberOS, # ClearOS, Clover, Cobalt, Condres, Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber,
# dahlia, DarkOs, Darwin, Debian, Deepin, DesaOS, Devuan, DietPi, DracOS, DragonFly, Drauger, # CutefishOS, CuteOS, CyberOS, dahlia, DarkOs, Darwin, Debian, Deepin, DesaOS, Devuan, DietPi,
# Droidian, Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso, EuroLinux, Exherbo, Exodia # DracOS, DragonFly, Drauger, Droidian, Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso,
# Predator OS, Fedora, Feren, Finnix, Floflis, FreeBSD, FreeMiNT, Frugalware, Funtoo, GalliumOS, # EuroLinux, Exherbo, Exodia Predator OS, Fedora, Feren, Finnix, Floflis, FreeBSD, FreeMiNT,
# Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU, GoboLinux, GrapheneOS, Grombyang, Guix, # Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU,
# Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid, HydroOS, Hyperbola, iglunix, instantOS, IRIX, # GoboLinux, GrapheneOS, Grombyang, Guix, Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid, HydroOS,
# Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora, KrassOS, KSLinux, Kubuntu, # Hyperbola, iglunix, instantOS, IRIX, Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion,
# LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux, Linux Lite, Linux Mint, Linux Mint Old, # Korora, KrassOS, KSLinux, Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux, Linux
# Live Raizo, LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro, MassOS, MatuusOS, # Lite, Linux Mint, Linux Mint Old, Live Raizo, LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS,
# Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune, NetBSD, Netrunner, Nitrux, NixOS, # Mandriva, Manjaro, MassOS, MatuusOS, Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune,
# NomadBSD, Nurunner, NuTyX, Obarun, OBRevenge, OmniOS, Open Source Media Center, OpenBSD, # NetBSD, Netrunner, Nitrux, NixOS, NomadBSD, Nurunner, NuTyX, Obarun, OBRevenge, OmniOS, Open
# openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, openSUSE, openSUSE Leap, openSUSE # Source Media Center, OpenBSD, openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage,
# Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS Elbrus, PacBSD, Parabola, parch, Pardus, Parrot, # openSUSE, openSUSE Leap, openSUSE Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS Elbrus,
# Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint, Pisi, PNM Linux, Pop!_OS, Porteus, # PacBSD, Parabola, parch, Pardus, Parrot, Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo,
# PostMarketOS, Profelis SambaBOX, Proxmox, PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian, # Peppermint, PikaOS, Pisi, PNM Linux, Pop!_OS, Porteus, PostMarketOS, Profelis SambaBOX, Proxmox,
# Radix, Raspbian, ravynOS, Reborn OS, Red Star, Redcore, Redhat, Refracted Devuan, Regata, # PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian, Radix, Raspbian, ravynOS, Reborn OS, Red Star,
# Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage, Sailfish, SalentOS, Sasanqua, Scientific, semc, # Redcore, Redhat, Refracted Devuan, Regata, Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage,
# Septor, Serene, SharkLinux, ShastraOS, Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda, # Sailfish, SalentOS, Salient OS, Sasanqua, Scientific, semc, Septor, Serene, SharkLinux, ShastraOS,
# Solus, Source Mage, Sparky, Star, SteamOS, Stock Linux, Sulin, SunOS, SwagArch, t2, Tails, TeArch, # Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda, Solus, Source Mage, Sparky, Star, SteamOS,
# TorizonCore, Trisquel, Twister, Ubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, # Stock Linux, Sulin, SunOS, SwagArch, t2, Tails, TeArch, TorizonCore, Trisquel, Twister, Ubuntu,
# Ubuntu Studio, Ubuntu Sway, Ubuntu Touch, Ubuntu-GNOME, ubuntu_old02, Ultramarine Linux, # Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Sway, Ubuntu
# Univalent, Univention, Uos, UrukOS, uwuntu, Vanilla, Venom, VNux, Void, VzLinux, wii-linux-ngx, # Touch, Ubuntu-GNOME, ubuntu_old02, Ultramarine Linux, Univalent, Univention, Uos, UrukOS, uwuntu,
# Windows, Windows 10, Windows 11, XFerience, Xubuntu, yiffOS, Zorin have ascii logos. # Vanilla, Venom, VNux, Void, VzLinux, wii-linux-ngx, Windows, Windows 10, Windows 11, XFerience,
# Xubuntu, yiffOS, Zorin have ascii logos.
# NOTE: arch, dragonfly, Fedora, LangitKetujuh, nixos, redhat, Ubuntu have 'old' logo variants, use # NOTE: arch, dragonfly, Fedora, LangitKetujuh, nixos, redhat, Ubuntu have 'old' logo variants, use
# {distro}_old to use them. # {distro}_old to use them.
@@ -1187,6 +1188,12 @@ get_distro() {
elif [[ -f /etc/vzlinux-release ]]; then elif [[ -f /etc/vzlinux-release ]]; then
distro='VzLinux' distro='VzLinux'
# Chrome OS doesn't conform to the /etc/*-release standard.
# While the file is a series of variables they can't be sourced
# by the shell since the values aren't quoted.
elif grep -q CHROMEOS /etc/lsb-release; then
distro='Chrome OS'
elif type -p guix >/dev/null; then elif type -p guix >/dev/null; then
case $distro_shorthand in case $distro_shorthand in
on|tiny) distro="Guix System" ;; on|tiny) distro="Guix System" ;;
@@ -1255,11 +1262,14 @@ get_distro() {
distro='Chrome OS' distro='Chrome OS'
elif [[ $(< /proc/version) == *chrome-bot* || -f /dev/cros_ec ]]; then elif [[ $(< /proc/version) == *chrome-bot* || -f /dev/cros_ec ]]; then
# gets chrome os version from /etc/lsb-release.
# totally not written by chatgpt :trolley:
cros_version=$(grep -oE 'CHROMEOS_RELEASE_CHROME_MILESTONE=([0-9]+)' /etc/lsb-release | cut -d= -f2)
[[ $distro != *Chrome* ]] && [[ $distro != *Chrome* ]] &&
case $distro_shorthand in case $distro_shorthand in
on) distro="Chrome OS $distro" ;; on) distro="Chrome OS $cros_version" ;;
tiny) distro="Chrome OS" ;; tiny) distro="Chrome OS" ;;
*) distro="Chrome OS $distro" ;; *) distro="Chrome OS $cros_version $distro" ;;
esac esac
fi fi
@@ -1552,6 +1562,7 @@ get_model() {
"iPhone OS") "iPhone OS")
case $kernel_machine in case $kernel_machine in
iPad1,1): "iPad" ;; iPad1,1): "iPad" ;;
iPad1,2): "iPad 3G" ;;
iPad2,[1-4]): "iPad 2" ;; iPad2,[1-4]): "iPad 2" ;;
iPad3,[1-3]): "iPad 3" ;; iPad3,[1-3]): "iPad 3" ;;
iPad3,[4-6]): "iPad 4" ;; iPad3,[4-6]): "iPad 4" ;;
@@ -1560,20 +1571,25 @@ get_model() {
iPad7,1[1-2]): "iPad 7" ;; iPad7,1[1-2]): "iPad 7" ;;
iPad11,[6-7]): "iPad 8" ;; iPad11,[6-7]): "iPad 8" ;;
iPad12,[1-2]): "iPad 9" ;; iPad12,[1-2]): "iPad 9" ;;
iPad13,1[8-9]): "iPad 10" ;;
iPad4,[1-3]): "iPad Air" ;; iPad4,[1-3]): "iPad Air" ;;
iPad5,[3-4]): "iPad Air 2" ;; iPad5,[3-4]): "iPad Air 2" ;;
iPad11,[3-4]): "iPad Air 3" ;; iPad11,[3-4]): "iPad Air 3" ;;
iPad13,[1-2]): "iPad Air 4";; iPad13,[1-2]): "iPad Air 4" ;;
iPad6,[7-8]): "iPad Pro (12.9 Inch)" ;; iPad13,1[6-7]): "iPad Air 5" ;;
iPad6,[3-4]): "iPad Pro (9.7 Inch)" ;; iPad6,[7-8]): "iPad Pro 12.9-inch" ;;
iPad7,[1-2]): "iPad Pro 2 (12.9 Inch)" ;; iPad6,[3-4]): "iPad Pro 9.7-inch" ;;
iPad7,[3-4]): "iPad Pro (10.5 Inch)" ;; iPad7,[1-2]): "iPad Pro 12.9-inch (2nd generation)" ;;
iPad8,[1-4]): "iPad Pro (11 Inch)" ;; iPad7,[3-4]): "iPad Pro 10.5-inch" ;;
iPad8,[5-8]): "iPad Pro 3 (12.9 Inch)" ;; iPad8,[1-4]): "iPad Pro 11-inch" ;;
iPad8,9 | iPad8,10): "iPad Pro 4 (11 Inch)" ;; iPad8,[5-8]): "iPad Pro 12.9-inch (3rd generation)" ;;
iPad8,1[1-2]): "iPad Pro 4 (12.9 Inch)" ;; iPad8,9 | iPad8,10): "iPad Pro 11-inch (2nd generation)" ;;
iPad13,[4-7]): "iPad Pro 5 (11 Inch)" ;; iPad8,1[1-2]): "iPad Pro 12.9-inch (4th generation)" ;;
iPad13,8 | iPad13,11): "iPad Pro 5 (12.9 Inch)" ;; iPad13,[4-7]): "iPad Pro 11-inch (3rd generation)" ;;
iPad13,[8-9]): "iPad Pro 12.9-inch (5th generation)" ;;
iPad13,1[0-1]): "iPad Pro 12.9-inch (5th generation)" ;;
iPad14,[3-4]): "iPad Pro 11-inch (4th generation)" ;;
iPad14,[5-6]): "iPad Pro 12.9-inch (6th generation)" ;;
iPad2,[5-7]): "iPad mini" ;; iPad2,[5-7]): "iPad mini" ;;
iPad4,[4-6]): "iPad mini 2" ;; iPad4,[4-6]): "iPad mini 2" ;;
iPad4,[7-9]): "iPad mini 3" ;; iPad4,[7-9]): "iPad mini 3" ;;
@@ -1614,13 +1630,18 @@ get_model() {
iPhone14,3): "iPhone 13 Pro Max" ;; iPhone14,3): "iPhone 13 Pro Max" ;;
iPhone14,4): "iPhone 13 Mini" ;; iPhone14,4): "iPhone 13 Mini" ;;
iPhone14,5): "iPhone 13" ;; iPhone14,5): "iPhone 13" ;;
iPhone14,6): "iPhone SE 2022" ;;
iPhone14,7): "iPhone 14" ;;
iPhone14,8): "iPhone 14 Plus" ;;
iPhone15,2): "iPhone 14 Pro" ;;
iPhone15,3): "iPhone 14 Pro Max" ;;
iPod1,1): "iPod touch" ;; iPod1,1): "iPod touch" ;;
ipod2,1): "iPod touch 2G" ;; iPod2,1): "iPod touch 2G" ;;
ipod3,1): "iPod touch 3G" ;; iPod3,1): "iPod touch 3G" ;;
ipod4,1): "iPod touch 4G" ;; iPod4,1): "iPod touch 4G" ;;
ipod5,1): "iPod touch 5G" ;; iPod5,1): "iPod touch 5G" ;;
ipod7,1): "iPod touch 6G" ;; iPod7,1): "iPod touch 6G" ;;
iPod9,1): "iPod touch 7G" ;; iPod9,1): "iPod touch 7G" ;;
esac esac
@@ -1871,6 +1892,10 @@ get_packages() {
} }
} }
# OS-independent package managers.
has pipx && tot pipx list --short
# OS-specific package managers.
case $os in case $os in
Linux|BSD|"iPhone OS"|Solaris|illumos) Linux|BSD|"iPhone OS"|Solaris|illumos)
# Package Manager Programs. # Package Manager Programs.
@@ -2635,7 +2660,7 @@ get_cpu() {
cpu="$(awk -F':' '/Hardware/ {print $2; exit}' "$cpu_file")" cpu="$(awk -F':' '/Hardware/ {print $2; exit}' "$cpu_file")"
else else
# ARM linux displays binary model code in cpuinfo, which needs to be decoded with lscpu # ARM linux displays binary model code in cpuinfo, which needs to be decoded with lscpu
if ! [[ -x "$(command -v python)" ]]; then if ! command -v python3 &> /dev/null; then
cpu="$(lscpu | awk -F': ' '/Vendor ID/ {print $2; exit}' ) $(lscpu | awk -F': ' '/Model name/ {print $2; exit}')" cpu="$(lscpu | awk -F': ' '/Vendor ID/ {print $2; exit}' ) $(lscpu | awk -F': ' '/Model name/ {print $2; exit}')"
else else
# Sometimes there are multiple CPU models (e.g. RK3399 has 4 A53 and 2 A72 cores) # Sometimes there are multiple CPU models (e.g. RK3399 has 4 A53 and 2 A72 cores)
@@ -2647,7 +2672,8 @@ from subprocess import check_output
def find(lines, label): def find(lines, label):
for ln in lines: for ln in lines:
if ln.strip().startswith(label): if ln.strip().startswith(label):
return ln.split(label)[-1].strip() t = ln.split(label)[-1].strip()
return None if t == '-' else t
return None return None
@@ -2662,8 +2688,13 @@ if __name__ == '__main__':
for model_desc in lscpu.split('Model name:'): for model_desc in lscpu.split('Model name:'):
lines = model_desc.split('\n') lines = model_desc.split('\n')
model = lines[0].strip() model = lines[0].strip()
cores = int(find(lines, 'Core(s) per socket:') or "-1")
cores *= int(find(lines, 'Socket(s):') or "1") cores = find(lines, 'Core(s) per socket:') or find(lines, 'Core(s) per cluster:')
if cores is None:
continue
cores = int(cores)
cores *= int(find(lines, 'Socket(s):') or find(lines, 'Cluster(s):') or "1")
if cores == -1: if cores == -1:
continue continue
@@ -2674,7 +2705,7 @@ if __name__ == '__main__':
print('\n'.join(cpus)) print('\n'.join(cpus))
END END
tmp_cpus=$(python -c "$py_script") tmp_cpus=$(python3 -c "$py_script")
while IFS= read -r line; do while IFS= read -r line; do
prin "${subtitle:+${subtitle}}" "$line" prin "${subtitle:+${subtitle}}" "$line"
done <<< "$tmp_cpus" done <<< "$tmp_cpus"
@@ -2803,12 +2834,22 @@ END
"iPhone10,"[1-6]): "Apple A11 Bionic (6) @ 2.39GHz" ;; "iPhone10,"[1-6]): "Apple A11 Bionic (6) @ 2.39GHz" ;;
"iPhone11,"[2468] | "iPad11,"[1-4] | "iPad11,"[6-7]): "Apple A12 Bionic (6) @ 2.49GHz" ;; "iPhone11,"[2468] | "iPad11,"[1-4] | "iPad11,"[6-7]): "Apple A12 Bionic (6) @ 2.49GHz" ;;
"iPhone12,"[1358]): "Apple A13 Bionic (6) @ 2.65GHz" ;; "iPhone12,"[1358]): "Apple A13 Bionic (6) @ 2.65GHz" ;;
"iPhone13,"[1-4] | "iPad13,"[1-2]): "Apple A14 Bionic (6) @ 3.00Ghz" ;; "iPhone13,"[1-4] | "iPad13,"[1-2]): "Apple A14 Bionic (6) @ 3.00GHz" ;;
"iPhone14,"[2-8]): "Apple A15 Bionic (6) @ 3.23GHz" ;;
"iPhone15,"[2-3]): "Apple A16 Bionic (6) @ 3.46GHz" ;;
"iPad12,"[1-2]): "Apple A13 Bionic (6) @ 2.65GHz" ;;
"iPad13,"[4-9]): "Apple M1 (8) @ 3.19GHz" ;;
"iPad13,1"[0-1]): "Apple M1 (8) @ 3.19GHz" ;;
"iPad13,1"[6-7]): "Apple M1 (8) @ 3.19GHz" ;;
"iPad13,1"[8-9]): "Apple A14 Bionic (6) @ 3.00GHz" ;;
"iPad14,"[1-2]): "Apple A15 Bionic (6) @ 3.23GHz" ;;
"iPad14,"[3-6]): "Apple M2 (8) @ 3.49GHz" ;;
"iPod2,1"): "Samsung S5L8720 (1) @ 533MHz" ;; "iPod2,1"): "Samsung S5L8720 (1) @ 533MHz" ;;
"iPod3,1"): "Samsung S5L8922 (1) @ 600MHz" ;; "iPod3,1"): "Samsung S5L8922 (1) @ 600MHz" ;;
"iPod7,1"): "Apple A8 (2) @ 1.1GHz" ;; "iPod7,1"): "Apple A8 (2) @ 1.1GHz" ;;
"iPad1,1"): "Apple A4 (1) @ 1GHz" ;; "iPod9,1"): "Apple A10 Fusion (4) @ 1.64GHz" ;;
"iPad1,"[1-2]): "Apple A4 (1) @ 1GHz" ;;
"iPad2,"[1-7]): "Apple A5 (2) @ 1GHz" ;; "iPad2,"[1-7]): "Apple A5 (2) @ 1GHz" ;;
"iPad3,"[1-3]): "Apple A5X (2) @ 1GHz" ;; "iPad3,"[1-3]): "Apple A5X (2) @ 1GHz" ;;
"iPad3,"[4-6]): "Apple A6X (2) @ 1.4GHz" ;; "iPad3,"[4-6]): "Apple A6X (2) @ 1.4GHz" ;;
@@ -3125,7 +3166,7 @@ get_gpu() {
"iPhone OS") "iPhone OS")
case $kernel_machine in case $kernel_machine in
"iPhone1,"[1-2]): "PowerVR MBX Lite 3D" ;; "iPhone1,"[1-2]): "PowerVR MBX Lite 3D" ;;
"iPhone2,1" | "iPhone3,"[1-3] | "iPod3,1" | "iPod4,1" | "iPad1,1"): "iPhone2,1" | "iPhone3,"[1-3] | "iPod3,1" | "iPod4,1" | "iPad1,"[1-2]):
"PowerVR SGX535" "PowerVR SGX535"
;; ;;
"iPhone4,1" | "iPad2,"[1-7] | "iPod5,1"): "PowerVR SGX543MP2" ;; "iPhone4,1" | "iPad2,"[1-7] | "iPod5,1"): "PowerVR SGX543MP2" ;;
@@ -3135,14 +3176,19 @@ get_gpu() {
"iPhone8,"[1-4] | "iPad6,1"[12]): "PowerVR GT7600" ;; "iPhone8,"[1-4] | "iPad6,1"[12]): "PowerVR GT7600" ;;
"iPhone9,"[1-4] | "iPad7,"[5-6]): "PowerVR GT7600 Plus" ;; "iPhone9,"[1-4] | "iPad7,"[5-6]): "PowerVR GT7600 Plus" ;;
"iPhone10,"[1-6]): "Apple Designed GPU (A11)" ;; "iPhone10,"[1-6]): "Apple Designed GPU (A11)" ;;
"iPhone11,"[2468] | "iPad11,"[67]): "Apple Designed GPU (A12)" ;; "iPhone11,"[2468] | "iPad11,"[123467]): "Apple Designed GPU (A12)" ;;
"iPhone12,"[1358]): "Apple Designed GPU (A13)" ;; "iPhone12,"[1358] | "iPad12,"[12]): "Apple Designed GPU (A13)" ;;
"iPhone13,"[1234] | "iPad13,"[12]): "Apple Designed GPU (A14)" ;; "iPhone13,"[1234] | "iPad13,"[12]): "Apple Designed GPU (A14)" ;;
"iPad3,"[1-3]): "PowerVR SGX534MP4" ;; "iPad3,"[1-3]): "PowerVR SGX534MP4" ;;
"iPad3,"[4-6]): "PowerVR SGX554MP4" ;; "iPad3,"[4-6]): "PowerVR SGX554MP4" ;;
"iPad5,"[3-4]): "PowerVR GXA6850" ;; "iPad5,"[3-4]): "PowerVR GXA6850" ;;
"iPad6,"[3-8]): "PowerVR 7XT" ;; "iPad6,"[3-8]): "PowerVR 7XT" ;;
"iPad8,"[1-8]): "Apple Designed GPU (A12X)" ;;
"iPad8,9" | "iPad8,1"[0-2]): "Apple Designed GPU (A12Z)" ;;
"iPad13,"[4-9] | "iPad13,1"[0-1]): "Apple Designed GPU (M1)" ;;
"iPad14,"[1-2]): "Apple Designed GPU (A15)" ;;
"iPad14,"[3-6]): "Apple Designed GPU (M2)" ;;
"iPod1,1" | "iPod2,1") "iPod1,1" | "iPod2,1")
: "PowerVR MBX Lite" : "PowerVR MBX Lite"
@@ -4799,16 +4845,20 @@ get_cols() {
esac esac
done done
# Workaround for bright background colors in the Linux framebuffer console.
(( block_range[1] < 16 )) && [[ "$TERM" == "linux" ]] &&
printf -v blocks2 '\e[5m%b\e[25m' "$blocks2"
# Convert height into spaces. # Convert height into spaces.
printf -v block_spaces "%${block_height}s" printf -v block_spaces "%${block_height}s"
# Convert the spaces into rows of blocks. # Convert the spaces into rows of blocks.
if [[ $BASH_VERSION == 3* ]]; then if [[ $BASH_VERSION == 3* ]]; then
[[ "$blocks" ]] && cols+="${block_spaces// /${blocks}nl}" [[ "$blocks" ]] && cols+="${block_spaces// /${blocks}nl}"
[[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}nl}" [[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}nl}"
else else
[[ "$blocks" ]] && cols+="${block_spaces// /${blocks}\[mnl}" [[ "$blocks" ]] && cols+="${block_spaces// /${blocks}\[39;49mnl}"
[[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}\[mnl}" [[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}\[39;49mnl}"
fi fi
# Determine the horizontal offset of the blocks. # Determine the horizontal offset of the blocks.
@@ -5523,12 +5573,8 @@ trim_quotes() {
} }
strip_sequences() { strip_sequences() {
strip="${1//$'\e['3[0-9]m}" strip="${1//$'\e'\[*([0-9])*(;*([0-9]))m}"
strip="${strip//$'\e['[0-9]m}" strip="${strip//\\e\[*([0-9])*(;*([0-9]))m}"
strip="${strip//\\e\[[0-9]m}"
strip="${strip//$'\e['38\;5\;[0-9]m}"
strip="${strip//$'\e['38\;5\;[0-9][0-9]m}"
strip="${strip//$'\e['38\;5\;[0-9][0-9][0-9]m}"
printf '%s\n' "$strip" printf '%s\n' "$strip"
} }
@@ -5587,8 +5633,8 @@ set_text_colors() {
color() { color() {
case $1 in case $1 in
[0-6]) printf '%b\e[3%sm' "$reset" "$1" ;; [0-7]) printf '%b\e[3%sm' "$reset" "$1" ;;
7 | "fg") printf '\e[37m%b' "$reset" ;; "fg") printf '%b' "$reset" ;;
"#"*) "#"*)
local rgb="${1//#}" local rgb="${1//#}"
rgb="$((0x$rgb))" rgb="$((0x$rgb))"
@@ -6031,47 +6077,47 @@ ASCII:
NOTE: AIX, AlmaLinux, Alpine, Alter, Amazon, AmogOS, Anarchy, NOTE: AIX, AlmaLinux, Alpine, Alter, Amazon, AmogOS, Anarchy,
Android, Antergos, antiX, AOSC OS, AOSC OS/Retro, Aperio GNU/Linux, Android, Antergos, antiX, AOSC OS, AOSC OS/Retro, Aperio GNU/Linux,
Aperture, Apricity, Arch, ArchBox, Archcraft, ARCHlabs, ArchMerge, Aperture, Apricity, Arch, ArchBox, Archcraft, archcraft_ascii,
ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi, Aster, archcraft_minimal, ARCHlabs, ArchMerge, ArchStrike, ArcoLinux,
AsteroidOS, astOS, Bedrock, BigLinux, Bitrig, BlackArch, ArseLinux, Artix, Arya, Asahi, Aster, AsteroidOS, astOS, Bedrock,
blackPanther, BLAG, BlankOn, BlueLight, Bodhi, bonsai, BSD, BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn, BlueLight,
BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL-Mariner, Bodhi, bonsai, BSD, BunsenLabs, CachyOS, Calculate, CalinixOS,
CelOS, Center, CentOS, Chakra, ChaletOS, Chapeau, ChonkySealOS, Carbs, CBL-Mariner, CelOS, Center, CentOS, Chakra, ChaletOS,
Chrom, Cleanjaro, Clear Linux OS, ClearOS, Clover, Cobalt, Condres, Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS, ClearOS,
Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber, Clover, Cobalt, Condres, Container Linux by CoreOS, CRUX, Crystal
CutefishOS, CuteOS, CyberOS, dahlia, DarkOs, Darwin, Debian, Deepin, Linux, Cucumber, CutefishOS, CuteOS, CyberOS, dahlia, DarkOs,
DesaOS, Devuan, DietPi, DracOS, DragonFly, Drauger, Droidian, Darwin, Debian, Deepin, DesaOS, Devuan, DietPi, DracOS, DragonFly,
Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso, EuroLinux, Drauger, Droidian, Elementary, Elive, EncryptOS, EndeavourOS,
Exherbo, Exodia Predator OS, Fedora, Feren, Finnix, Floflis, Endless, Enso, EuroLinux, Exherbo, Exodia Predator OS, Fedora,
FreeBSD, FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Feren, Finnix, Floflis, FreeBSD, FreeMiNT, Frugalware, Funtoo,
GhostBSD, glaucus, gNewSense, GNOME, GNU, GoboLinux, GrapheneOS, GalliumOS, Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU,
Grombyang, Guix, Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid, GoboLinux, GrapheneOS, Grombyang, Guix, Haiku, HamoniKR, HarDClanZ,
HydroOS, Hyperbola, iglunix, instantOS, IRIX, Itc, januslinux, Hash, Huayra, Hybrid, HydroOS, Hyperbola, iglunix, instantOS, IRIX,
Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora, KrassOS, KSLinux, Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora,
Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux, KrassOS, KSLinux, Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC,
Linux Lite, Linux Mint, Linux Mint Old, Live Raizo, LMDE, Lubuntu, Linspire, Linux, Linux Lite, Linux Mint, Linux Mint Old, Live Raizo,
Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro, MassOS, MatuusOS, LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro,
Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune, NetBSD, MassOS, MatuusOS, Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS,
Netrunner, Nitrux, NixOS, NomadBSD, Nurunner, NuTyX, Obarun, Neptune, NetBSD, Netrunner, Nitrux, NixOS, NomadBSD, Nurunner,
OBRevenge, OmniOS, Open Source Media Center, OpenBSD, openEuler, NuTyX, Obarun, OBRevenge, OmniOS, Open Source Media Center, OpenBSD,
OpenIndiana, openmamba, OpenMandriva, OpenStage, openSUSE, openSUSE openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage,
Leap, openSUSE Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS openSUSE, openSUSE Leap, openSUSE Tumbleweed, OpenWrt, OPNsense,
Elbrus, PacBSD, Parabola, parch, Pardus, Parrot, Parsix, PCBSD, Oracle, orchid, OS Elbrus, PacBSD, Parabola, parch, Pardus, Parrot,
PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint, Pisi, PNM Linux, Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint,
Pop!_OS, Porteus, PostMarketOS, Profelis SambaBOX, Proxmox, PuffOS, PikaOS, Pisi, PNM Linux, Pop!_OS, Porteus, PostMarketOS, Profelis
Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian, Radix, Raspbian, SambaBOX, Proxmox, PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt,
ravynOS, Reborn OS, Red Star, Redcore, Redhat, Refracted Devuan, Quibian, Radix, Raspbian, ravynOS, Reborn OS, Red Star, Redcore,
Regata, Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage, Sailfish, Redhat, Refracted Devuan, Regata, Regolith, RhaymOS, rocky, Rosa,
SalentOS, Sasanqua, Scientific, semc, Septor, Serene, SharkLinux, Sabayon, sabotage, Sailfish, SalentOS, Salient OS, Sasanqua,
ShastraOS, Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda, Scientific, semc, Septor, Serene, SharkLinux, ShastraOS, Siduction,
Solus, Source Mage, Sparky, Star, SteamOS, Stock Linux, Sulin, SkiffOS, Slackware, SliTaz, SmartOS, Soda, Solus, Source Mage,
SunOS, SwagArch, t2, Tails, TeArch, TorizonCore, Trisquel, Twister, Sparky, Star, SteamOS, Stock Linux, Sulin, SunOS, SwagArch, t2,
Ubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Tails, TeArch, TorizonCore, Trisquel, Twister, Ubuntu, Ubuntu
Ubuntu Studio, Ubuntu Sway, Ubuntu Touch, Ubuntu-GNOME, Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio,
ubuntu_old02, Ultramarine Linux, Univalent, Univention, Uos, UrukOS, Ubuntu Sway, Ubuntu Touch, Ubuntu-GNOME, ubuntu_old02, Ultramarine
uwuntu, Vanilla, Venom, VNux, Void, VzLinux, wii-linux-ngx, Windows, Linux, Univalent, Univention, Uos, UrukOS, uwuntu, Vanilla, Venom,
Windows 10, Windows 11, XFerience, Xubuntu, yiffOS, Zorin have ascii VNux, Void, VzLinux, wii-linux-ngx, Windows, Windows 10, Windows 11,
logos. XFerience, Xubuntu, yiffOS, Zorin have ascii logos.
NOTE: arch, dragonfly, Fedora, LangitKetujuh, nixos, redhat, Ubuntu NOTE: arch, dragonfly, Fedora, LangitKetujuh, nixos, redhat, Ubuntu
have 'old' logo variants, use {distro}_old to use them. have 'old' logo variants, use {distro}_old to use them.
@@ -6994,6 +7040,58 @@ dhhyys+/-`
EOF EOF
;; ;;
"archcraft_ascii"*)
set_colors 6 1 2 3 4 5
read -rd '' ascii_data <<'EOF'
${c1} -o\
:ooo:
.ooooo.
ooooooo.
+oooooooo.
-oooooooooo.
--:-+oooooooo.
yooo+=+sooooooo.
yoooooosooooooooo.
y+ooooooooooooooooo.
yoooooooooooooooooooo`
yoooooo+oo= :oo++ooooo`
:oooooo. +ooooo-
-ooooooo. .::. +ooosoo=
-oooooo` .oooo` +os-=o=
=ooooooo=: `oo+ :=ooo=--`.
+ooooooooos. .=sooooooo+-
.+osossos+-` `-+osososs+.
:sss+=-:` `:-=+ssss:
:=-:` `-=+:
EOF
;;
"archcraft_minimal"*)
set_colors 6 1 2 3 4 5
read -rd '' ascii_data <<'EOF'
${c1} ⢰⡆
⢠⣿⣿⡄
⢀⣾⣿⣿⣿⡀
⣼⣿⣿⣿⣿⣷⡀
⣼⣿⣿⣿⣿⣿⣿⣷
⢼⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣰⣤⣈⠻⢿⣿⣿⣿⣿⣿⣿⣧
⣰⣿⣿⣿⣿⣮⣿⣿⣿⣿⣿⣿⣿⣧
⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
⣼⣿⣿⣿⣿⣿⡿⣿⣿⡟ ⠸⣿⣿⡿⣿⣿⣿⣿⣿⣷⡀
⣼⣿⣿⣿⣿⣿⡏ ⠈⣿⣿⣿⣿⣿⣷⡀
⢀⣼⣿⣿⣿⣿⣿⣿⡗ ⢀⣠⣤⣀ ⠸⣿⣿⣿⣿⣿⣿⣷⡀
⢀⣾⣿⣿⣿⣿⣿⡏⠁ ⢠⣿⣿⣿⣿⡇ ⢙⣿⣿⣻⠿⣿⣷⡀
⢀⣾⣿⣿⣿⣿⣿⣿⣷⣤⡀ ⠻⣿⣿⡿⠃ ⢀⣼⣿⣿⣿⣿⣦⣌⠙
⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏ ⢿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀
⢠⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠁ ⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⡄
⣠⣿⣿⣿⣿⠿⠛⠋⠁ ⠉⠙⠻⢿⣿⣿⣿⣿⣆
⡰⠟⠛⠉⠁ ⠉⠙⠛⠿⢆
EOF
;;
"Archcraft"*) "Archcraft"*)
set_colors 6 1 2 3 4 5 set_colors 6 1 2 3 4 5
read -rd '' ascii_data <<'EOF' read -rd '' ascii_data <<'EOF'
@@ -11593,6 +11691,20 @@ ${c2} !0m `6Kv
EOF EOF
;; ;;
"PikaOS"*)
set_colors 11
read -rd '' ascii_data <<'EOF'
${c1} /🐦🐦🐦$ /🐦/🐦 /🐦🐦🐦 /🐦🐦🐦
| 🐦__ $|__| 🐦 /🐦__ 🐦/🐦__ 🐦
| 🐦 \ 🐦/$| 🐦 /🐦 /🐦🐦🐦| 🐦 \ $| 🐦 \__/
| 🐦🐦🐦$| $| 🐦 /🐦/|____ $| 🐦 | $| 🐦🐦🐦
| 🐦____/| $| 🐦🐦🐦/ /🐦🐦🐦| 🐦 | 🐦\____ 🐦
| 🐦 | $| 🐦_ 🐦 /🐦__ $| 🐦 | 🐦/🐦 \ 🐦
| 🐦 | $| 🐦 \ $| 🐦🐦🐦| 🐦🐦🐦| 🐦🐦🐦/
|__/ |__|__/ \__/\_______/\______/ \______/ .
EOF
;;
"PNM Linux"* | "WHPNM Linux"*) "PNM Linux"* | "WHPNM Linux"*)
set_colors 33 9 15 202 set_colors 33 9 15 202
read -rd '' ascii_data <<'EOF' read -rd '' ascii_data <<'EOF'
@@ -12436,6 +12548,32 @@ ${c1}
EOF EOF
;; ;;
"Salient OS"* | "SalientOS"* | "salientos"*)
set_colors 6 6 7 1
read -rd '' ascii_data <<'EOF'
${c1} 00xxxx0
00xxxxxx0
0xxxxxxxxx 000000
0xxxxxxxxxx xxxxxxxxxx0
0xxxxxxxxxxx0 xxxxxxxxxxxxx0
0xxxxxxxxxxxx0 0xxxxxxxxxxxxxx0
0xxxxxxxxxxxxx0 0xxxxxxxxxxxxxxx0
0xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx0
xxxxxxxxxxxxxxxx0 0xxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxx 0xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxx0 xxxxxxxxxxxxxx
0xxxxxxxxxxxxxxxxxx0 0xxxxxxxxxxxx0
0xxxxxxxxxxxxxxxxxx xxxxxxxxxxx0
0xxxxxxxxxxxxxxxxx xxxxxxxxxx0
0xxxxxxxxxxxxxxxx xxxxxxxxx0
0xxxxxxxxxxxx0 0xxxxxxx0
0xxxxxxx0 xxxxxx0
0xxx00
x00
EOF
;;
"Scientific"*) "Scientific"*)
set_colors 4 7 1 set_colors 4 7 1
read -rd '' ascii_data <<'EOF' read -rd '' ascii_data <<'EOF'
@@ -13737,23 +13875,25 @@ EOF
set_colors 11 15 set_colors 11 15
read -rd '' ascii_data <<'EOF' read -rd '' ascii_data <<'EOF'
${c1} ${c1}
.----:
.-------. .OO.
:---::----: .OOOO.
.----::-----. .OO${c2}II${c1}OO.
......... :----::-----: ..:::-::::.. IOOO${c2}II${c1}OOOI
.-----------------::------------------: .OOOO${c2}II${c1}OOOO.
----::-----------::----------::::---: ............IOOOO${c2}II${c1}OOOOI............
-----:::--------::-------:::------- OOOOOOOOOOOOOOOOOO${c2}II${c1}OOOOOOOOOOOOOOOOOO
:------::::--::...:::::---------: OOOO${c2}II${c1}OOOOOOOOOOO${c2}II${c1}OOOOOOOOOOO${c2}II${c1}OOOO
.---------::.. ..:---------. OOOOO${c2}III${c1}OOOOOOOO${c2}II${c1}OOOOOOOO${c2}III${c1}OOOOO
.::-----::.. .::----::. OOOOOOO${c2}IIII${c1}OO${c2}I....I${c1}OO${c2}IIII${c1}OOOOOOO
.:------:.......:-------: OOOOOOOOOO${c2}II.. ..II${c1}OOOOOOOOOO
.--------::::::::-:::-------. OOOOOOO${c2}II. .II${c1}OOOOOOO
.-------::-----.:-----::------. OOOOOO${c2}II:......:II${c1}OOOOOO
-----::------: :------::----- OOOOOOOOO${c2}IIIIIIII${c1}OOOOOOOOO
:--::--------: .-------::---: OOOOOO${c2}II${c1}OOOOOOOOOOOO${c2}II${c1}OOOOOO
:----------:: .:---------- OOOO${c2}II${c1}OOOOOOOI IOOOOOO${c2}II${c1}OOOO
IOO${c2}II${c1}OOOOOOOO: :OOOOOOOO${c2}II${c1}OOI
IOOOOOOOOOOII IIOOOOOOOOOOI
EOF EOF
;; ;;
+43 -43
View File
@@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3.
.TH NEOFETCH "1" "February 2023" "Neofetch 7.3.7" "User Commands" .TH NEOFETCH "1" "April 2023" "Neofetch 7.3.8" "User Commands"
.SH NAME .SH NAME
Neofetch \- manual page for Neofetch 7.3.7 Neofetch \- manual page for Neofetch 7.3.8
.SH SYNOPSIS .SH SYNOPSIS
.B neofetch .B neofetch
\fI\,func_name --option "value" --option "value"\/\fR \fI\,func_name --option "value" --option "value"\/\fR
@@ -312,47 +312,47 @@ Which Distro's ascii art to print
.TP .TP
NOTE: AIX, AlmaLinux, Alpine, Alter, Amazon, AmogOS, Anarchy, NOTE: AIX, AlmaLinux, Alpine, Alter, Amazon, AmogOS, Anarchy,
Android, Antergos, antiX, AOSC OS, AOSC OS/Retro, Aperio GNU/Linux, Android, Antergos, antiX, AOSC OS, AOSC OS/Retro, Aperio GNU/Linux,
Aperture, Apricity, Arch, ArchBox, Archcraft, ARCHlabs, ArchMerge, Aperture, Apricity, Arch, ArchBox, Archcraft, archcraft_ascii,
ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi, Aster, archcraft_minimal, ARCHlabs, ArchMerge, ArchStrike, ArcoLinux,
AsteroidOS, astOS, Bedrock, BigLinux, Bitrig, BlackArch, ArseLinux, Artix, Arya, Asahi, Aster, AsteroidOS, astOS, Bedrock,
blackPanther, BLAG, BlankOn, BlueLight, Bodhi, bonsai, BSD, BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn, BlueLight,
BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL\-Mariner, Bodhi, bonsai, BSD, BunsenLabs, CachyOS, Calculate, CalinixOS,
CelOS, Center, CentOS, Chakra, ChaletOS, Chapeau, ChonkySealOS, Carbs, CBL\-Mariner, CelOS, Center, CentOS, Chakra, ChaletOS,
Chrom, Cleanjaro, Clear Linux OS, ClearOS, Clover, Cobalt, Condres, Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS, ClearOS,
Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber, Clover, Cobalt, Condres, Container Linux by CoreOS, CRUX, Crystal
CutefishOS, CuteOS, CyberOS, dahlia, DarkOs, Darwin, Debian, Deepin, Linux, Cucumber, CutefishOS, CuteOS, CyberOS, dahlia, DarkOs,
DesaOS, Devuan, DietPi, DracOS, DragonFly, Drauger, Droidian, Darwin, Debian, Deepin, DesaOS, Devuan, DietPi, DracOS, DragonFly,
Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso, EuroLinux, Drauger, Droidian, Elementary, Elive, EncryptOS, EndeavourOS,
Exherbo, Exodia Predator OS, Fedora, Feren, Finnix, Floflis, Endless, Enso, EuroLinux, Exherbo, Exodia Predator OS, Fedora,
FreeBSD, FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Feren, Finnix, Floflis, FreeBSD, FreeMiNT, Frugalware, Funtoo,
GhostBSD, glaucus, gNewSense, GNOME, GNU, GoboLinux, GrapheneOS, GalliumOS, Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU,
Grombyang, Guix, Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid, GoboLinux, GrapheneOS, Grombyang, Guix, Haiku, HamoniKR, HarDClanZ,
HydroOS, Hyperbola, iglunix, instantOS, IRIX, Itc, januslinux, Hash, Huayra, Hybrid, HydroOS, Hyperbola, iglunix, instantOS, IRIX,
Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora, KrassOS, KSLinux, Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora,
Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux, KrassOS, KSLinux, Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC,
Linux Lite, Linux Mint, Linux Mint Old, Live Raizo, LMDE, Lubuntu, Linspire, Linux, Linux Lite, Linux Mint, Linux Mint Old, Live Raizo,
Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro, MassOS, MatuusOS, LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro,
Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune, NetBSD, MassOS, MatuusOS, Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS,
Netrunner, Nitrux, NixOS, NomadBSD, Nurunner, NuTyX, Obarun, Neptune, NetBSD, Netrunner, Nitrux, NixOS, NomadBSD, Nurunner,
OBRevenge, OmniOS, Open Source Media Center, OpenBSD, openEuler, NuTyX, Obarun, OBRevenge, OmniOS, Open Source Media Center, OpenBSD,
OpenIndiana, openmamba, OpenMandriva, OpenStage, openSUSE, openSUSE openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage,
Leap, openSUSE Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS openSUSE, openSUSE Leap, openSUSE Tumbleweed, OpenWrt, OPNsense,
Elbrus, PacBSD, Parabola, parch, Pardus, Parrot, Parsix, PCBSD, Oracle, orchid, OS Elbrus, PacBSD, Parabola, parch, Pardus, Parrot,
PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint, Pisi, PNM Linux, Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint,
Pop!_OS, Porteus, PostMarketOS, Profelis SambaBOX, Proxmox, PuffOS, PikaOS, Pisi, PNM Linux, Pop!_OS, Porteus, PostMarketOS, Profelis
Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian, Radix, Raspbian, SambaBOX, Proxmox, PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt,
ravynOS, Reborn OS, Red Star, Redcore, Redhat, Refracted Devuan, Quibian, Radix, Raspbian, ravynOS, Reborn OS, Red Star, Redcore,
Regata, Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage, Sailfish, Redhat, Refracted Devuan, Regata, Regolith, RhaymOS, rocky, Rosa,
SalentOS, Sasanqua, Scientific, semc, Septor, Serene, SharkLinux, Sabayon, sabotage, Sailfish, SalentOS, Salient OS, Sasanqua,
ShastraOS, Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda, Scientific, semc, Septor, Serene, SharkLinux, ShastraOS, Siduction,
Solus, Source Mage, Sparky, Star, SteamOS, Stock Linux, Sulin, SkiffOS, Slackware, SliTaz, SmartOS, Soda, Solus, Source Mage,
SunOS, SwagArch, t2, Tails, TeArch, TorizonCore, Trisquel, Twister, Sparky, Star, SteamOS, Stock Linux, Sulin, SunOS, SwagArch, t2,
Ubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Tails, TeArch, TorizonCore, Trisquel, Twister, Ubuntu, Ubuntu
Ubuntu Studio, Ubuntu Sway, Ubuntu Touch, Ubuntu\-GNOME, Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio,
ubuntu_old02, Ultramarine Linux, Univalent, Univention, Uos, UrukOS, Ubuntu Sway, Ubuntu Touch, Ubuntu\-GNOME, ubuntu_old02, Ultramarine
uwuntu, Vanilla, Venom, VNux, Void, VzLinux, wii\-linux\-ngx, Windows, Linux, Univalent, Univention, Uos, UrukOS, uwuntu, Vanilla, Venom,
Windows 10, Windows 11, XFerience, Xubuntu, yiffOS, Zorin have ascii VNux, Void, VzLinux, wii\-linux\-ngx, Windows, Windows 10, Windows 11,
logos. XFerience, Xubuntu, yiffOS, Zorin have ascii logos.
.TP .TP
NOTE: arch, dragonfly, Fedora, LangitKetujuh, nixos, redhat, Ubuntu NOTE: arch, dragonfly, Fedora, LangitKetujuh, nixos, redhat, Ubuntu
have 'old' logo variants, use {distro}_old to use them. have 'old' logo variants, use {distro}_old to use them.
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "neowofetch", "name": "neowofetch",
"version": "1.4.7", "version": "1.4.8",
"description": "Updated neofetch", "description": "Updated neofetch",
"repository": { "repository": {
"type": "git", "type": "git",
+5 -5
View File
@@ -1,9 +1,9 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import pathlib import pathlib
from setuptools import setup, find_packages from setuptools import setup, find_namespace_packages
import hyfetch.constants from hyfetch.__version__ import VERSION
# The directory containing this file # The directory containing this file
HERE = pathlib.Path(__file__).parent HERE = pathlib.Path(__file__).parent
@@ -14,7 +14,7 @@ README = (HERE / "README.md").read_text('utf-8')
# This call to setup() does all the work # This call to setup() does all the work
setup( setup(
name="HyFetch", name="HyFetch",
version=hyfetch.constants.VERSION, version=VERSION,
description="neofetch with flags <3", description="neofetch with flags <3",
long_description=README, long_description=README,
long_description_content_type="text/markdown", long_description_content_type="text/markdown",
@@ -31,7 +31,7 @@ setup(
"Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.11",
], ],
packages=find_packages(), packages=find_namespace_packages(),
package_data={'hyfetch': ['hyfetch/*']}, package_data={'hyfetch': ['hyfetch/*']},
include_package_data=True, include_package_data=True,
install_requires=[ install_requires=[
@@ -40,7 +40,7 @@ setup(
# Windows dependencies # Windows dependencies
'psutil ; platform_system=="Windows"', 'psutil ; platform_system=="Windows"',
'colorama ; platform_system=="Windows"', 'colorama>=0.4.6 ; platform_system=="Windows"',
], ],
entry_points={ entry_points={
"console_scripts": [ "console_scripts": [
+2 -2
View File
@@ -25,12 +25,12 @@ def test_rgb_8bit_conversion():
for r in range(0, 255, 16): for r in range(0, 255, 16):
for g in range(0, 255, 16): for g in range(0, 255, 16):
print(RGB(r, g, 0).to_ansi_rgb(False), end=' ') print(RGB(r, g, 0).to_ansi_rgb(False), end=' ')
printc('&r') printc('&*')
print() print()
for r in range(0, 255, 16): for r in range(0, 255, 16):
for g in range(0, 255, 16): for g in range(0, 255, 16):
print(RGB(r, g, 0).to_ansi_8bit(False), end=' ') print(RGB(r, g, 0).to_ansi_8bit(False), end=' ')
printc('&r') printc('&*')
print() print()
+6 -4
View File
@@ -25,6 +25,7 @@ def pre_check():
assert os.path.islink('./hyfetch/scripts/neowofetch'), 'neowofetch is not a symbolic link' assert os.path.islink('./hyfetch/scripts/neowofetch'), 'neowofetch is not a symbolic link'
# subprocess.check_call(shlex.split('git diff-index --quiet HEAD --')) # 'Please commit all changes before release' # subprocess.check_call(shlex.split('git diff-index --quiet HEAD --')) # 'Please commit all changes before release'
print('Running shellcheck... (This may take a while)')
subprocess.check_call(shlex.split('shellcheck neofetch')) subprocess.check_call(shlex.split('shellcheck neofetch'))
@@ -46,8 +47,8 @@ def edit_versions(version: str):
path.write_text(json.dumps(content, ensure_ascii=False, indent=2)) path.write_text(json.dumps(content, ensure_ascii=False, indent=2))
# 2. hyfetch/constants.py # 2. hyfetch/constants.py
print('Editing hyfetch/constants.py...') print('Editing hyfetch/__version__.py...')
path = Path('hyfetch/constants.py') path = Path('hyfetch/__version__.py')
content = [f"VERSION = '{version}'" if l.startswith('VERSION = ') else l for l in path.read_text().split('\n')] content = [f"VERSION = '{version}'" if l.startswith('VERSION = ') else l for l in path.read_text().split('\n')]
path.write_text('\n'.join(content)) path.write_text('\n'.join(content))
@@ -63,7 +64,7 @@ def edit_versions(version: str):
# 4. neofetch script # 4. neofetch script
print('Editing neofetch...') print('Editing neofetch...')
path = Path('neofetch') path = Path('neofetch')
lines = path.read_text().split('\n') lines = path.read_text().replace("\t", " ").split('\n')
version_i = next(i for i, l in enumerate(lines) if l.startswith('version=')) version_i = next(i for i, l in enumerate(lines) if l.startswith('version='))
nf = pv.parse(lines[version_i].replace('version=', '')) nf = pv.parse(lines[version_i].replace('version=', ''))
new = pv.parse(version) new = pv.parse(version)
@@ -102,6 +103,7 @@ def post_check():
""" """
Check after changes are made Check after changes are made
""" """
print('Running shellcheck... (This may take a while)')
subprocess.check_call(shlex.split('shellcheck neofetch')) subprocess.check_call(shlex.split('shellcheck neofetch'))
@@ -112,7 +114,7 @@ def create_release(v: str):
print('Committing changes...') print('Committing changes...')
# 1. Add files # 1. Add files
subprocess.check_call(['git', 'add', 'hyfetch/constants.py', 'neofetch', 'neofetch.1', 'package.json', 'README.md', subprocess.check_call(['git', 'add', 'hyfetch/__version__.py', 'neofetch', 'neofetch.1', 'package.json', 'README.md',
'hyfetch/distros/*']) 'hyfetch/distros/*'])
# 2. Commit # 2. Commit
+5 -6
View File
@@ -3,20 +3,19 @@
This script turns readme shorthand pull request references (i.e. dylanaraps/neofetch#1946) into full This script turns readme shorthand pull request references (i.e. dylanaraps/neofetch#1946) into full
GitHub pull request links. GitHub pull request links.
""" """
import re import regex as re
from pathlib import Path from pathlib import Path
RE_SHORTHAND = re.compile(r"""[a-z0-9]+?/[a-z0-9]+?#[0-9]+""") RE_SHORTHAND = re.compile(r"(\w+?)/(\w+?)#(\d+)")
MY_RE = re.compile(r"(?<=[^\w\[])#(\d+)")
def reformat_readme(): def reformat_readme():
readme = Path('README.md').read_text() readme = Path('README.md').read_text()
for shorthand in RE_SHORTHAND.findall(readme): readme = re.sub(RE_SHORTHAND, r'[\1#\3](https://github.com/\1/\2/pull/\3)', readme)
user, pull = shorthand.split('/') readme = re.sub(MY_RE, r'[#\1](https://github.com/hykilpikonna/hyfetch/pull/\1)', readme)
repo, pull = pull.split('#')
readme = readme.replace(shorthand, f'[{user}#{pull}](https://github.com/{user}/{repo}/pull/{pull})')
Path('README.md').write_text(readme) Path('README.md').write_text(readme)