Compare commits
44 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9777652dac | |||
| 659811a66e | |||
| 617227da75 | |||
| 8ffb8063ca | |||
| 9018dbb461 | |||
| 1d29563e81 | |||
| 0d06df3024 | |||
| 964f718766 | |||
| 673e20ff2b | |||
| b4a0131359 | |||
| 93ea451c34 | |||
| a813400807 | |||
| e970c8f672 | |||
| 573eb09f74 | |||
| 6192b47758 | |||
| 6771e8e7c1 | |||
| e8c9e30920 | |||
| 3b8cf64a5e | |||
| 7d1ec7109f | |||
| 5891522233 | |||
| d00a3c086d | |||
| 538646160d | |||
| 182f2aad15 | |||
| 8c5905c858 | |||
| 365ed5a91f | |||
| 859dd3eb83 | |||
| 5343182ea1 | |||
| 93639996bb | |||
| 5f39250003 | |||
| 08ecada71a | |||
| 4d6743b886 | |||
| dcff08340e | |||
| 44a4555bce | |||
| f855d0e244 | |||
| 04d5965d49 | |||
| 197e11ee5f | |||
| 58e60aea8e | |||
| d3ea2eeee2 | |||
| 2b4a35f12b | |||
| 469dd762f2 | |||
| d8bdffa1f1 | |||
| a3e93a03fc | |||
| 0329c2825f | |||
| 48acfaaebe |
@@ -28,9 +28,11 @@ pip install 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))
|
||||
* 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
|
||||
|
||||
@@ -99,39 +101,56 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
|
||||
|
||||
<!-- 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
|
||||
|
||||
* 🌈 Better Windows compatibility (#45, #84, #87, #89)
|
||||
* 🌈 Add gendervoid flags (#81)
|
||||
* 🌈 Fix ASCII extractor escape sequence generation (#90, #91)
|
||||
* 🌈 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](https://github.com/hykilpikonna/hyfetch/pull/81))
|
||||
* 🌈 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 Floflis ([dylanaraps#2289](https://github.com/dylanaraps/neofetch/pull/2289))
|
||||
* 🖼 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))
|
||||
* 🖼 Packages - Fix scoop package manager for Windows (#93)
|
||||
* 🖼 Packages - Add Evox package manager for Stock Linux (#95)
|
||||
* 🖼 WM - Fix false positive wm process name detection (#88, #94)
|
||||
* 🖼 Packages - Fix scoop package manager for Windows ([#93](https://github.com/hykilpikonna/hyfetch/pull/93))
|
||||
* 🖼 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](https://github.com/hykilpikonna/hyfetch/pull/88), [#94](https://github.com/hykilpikonna/hyfetch/pull/94))
|
||||
* 🖼 Misc - Added BIOS and bluetooth detection
|
||||
|
||||
### 1.4.6
|
||||
|
||||
* 🌈 Add compatibility for FastFetch version `>1.8.0` (#62)
|
||||
* 🖼 Distro - Add Aperture Science ascii art (#61)
|
||||
* 🌈 Add compatibility for FastFetch version `>1.8.0` ([#62](https://github.com/hykilpikonna/hyfetch/pull/62))
|
||||
* 🖼 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))
|
||||
* 🖼 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 - Fix terminal detection with new get_process_name function
|
||||
* 🖼 CPU - Detect ISA string on RISC-V CPUs (#60)
|
||||
* 🖼 Song - Fix CMUS player song detection on macOS (#55)
|
||||
* 🖼 Network - Fix macOS network detection (#56)
|
||||
* 🖼 Misc - Change LICENSE year to 2023 (#59)
|
||||
* 🖼 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](https://github.com/hykilpikonna/hyfetch/pull/55))
|
||||
* 🖼 Network - Fix macOS network detection ([#56](https://github.com/hykilpikonna/hyfetch/pull/56))
|
||||
* 🖼 Misc - Change LICENSE year to 2023 ([#59](https://github.com/hykilpikonna/hyfetch/pull/59))
|
||||
|
||||
### 1.4.5
|
||||
|
||||
* 🌈 **Support using FastFetch as a HyFetch backend** (`hyfetch -b fastfetch`)
|
||||
* 🌈 Add config file argument (#48)
|
||||
* 🌈 Fix problems caused by color detection on Windows (#16)
|
||||
* 🌈 Add config file argument ([#48](https://github.com/hykilpikonna/hyfetch/pull/48))
|
||||
* 🌈 Fix problems caused by color detection on Windows ([#16](https://github.com/hykilpikonna/hyfetch/pull/16))
|
||||
* 🌈 Support pure-python distro detection for FastFetch
|
||||
* 🖼️ 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))
|
||||
@@ -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 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))
|
||||
* 🖼 WM - Fix wm detection with `fuser` (#39)
|
||||
* 🖼️ Memory - Make memory unit decimal calculation more accurate (#52)
|
||||
* 🖼 Packages - Fix squirrel (Stock Linux) package count detection (#39)
|
||||
* 🖼 Packages - Support cargo bin environment variable (#49)
|
||||
* 🖼 WM - Fix wm detection with `fuser` ([#39](https://github.com/hykilpikonna/hyfetch/pull/39))
|
||||
* 🖼️ 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](https://github.com/hykilpikonna/hyfetch/pull/39))
|
||||
* 🖼 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))
|
||||
|
||||
### 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
|
||||
* 🖼️ 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))
|
||||
* 🖼️ 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))
|
||||
* 🖼️ CPU - Fix model detection for loongson (#34)
|
||||
* 🖼️ CPU - Fix model detection for loongson ([#34](https://github.com/hykilpikonna/hyfetch/pull/34))
|
||||
|
||||
### 1.4.3
|
||||
|
||||
@@ -161,33 +180,33 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
|
||||
* 🌈 **Optimize experience on light-themed terminals**
|
||||
* 🌈 Fix bugs with lightness and light-mode config not applying
|
||||
* 🌈 Fix color alignment for distros with first color ≠ `${c1}` (e.g. Ubuntu Budgie)
|
||||
* 🌈 Add unlabeled flags (#25)
|
||||
* 🌈 Add gender nonconforming & femboy & tomboy flags (#32)
|
||||
* 🌈 Add unlabeled flags ([#25](https://github.com/hykilpikonna/hyfetch/pull/25))
|
||||
* 🌈 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.
|
||||
* 🖼️ 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 VanillaOS ([dylanaraps#2222](https://github.com/dylanaraps/neofetch/pull/2222))
|
||||
* 🖼️ Distro - Surround macOS build number in parentheses (#28)
|
||||
* 🖼️ Misc - Auto select stdout mode based on tty detection (#31)
|
||||
* 🖼️ Bug Fix - Fix cols coloring reset for bash 3.2 (#24)
|
||||
* 🖼️ 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](https://github.com/hykilpikonna/hyfetch/pull/31))
|
||||
* 🖼️ Bug Fix - Fix cols coloring reset for bash 3.2 ([#24](https://github.com/hykilpikonna/hyfetch/pull/24))
|
||||
|
||||
### 1.4.2
|
||||
|
||||
* 🌈 Detailed runnning/contributing instructions in README.md (#21)
|
||||
* 🖼️ Distro - Add Stock Linux (#23)
|
||||
* 🌈 Detailed runnning/contributing instructions in README.md ([#21](https://github.com/hykilpikonna/hyfetch/pull/21))
|
||||
* 🖼️ 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 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 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
|
||||
* 🖼️ 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
|
||||
|
||||
* 🌈 Paginate flags (#14)
|
||||
* 🌈 Add release workflow (#15)
|
||||
* 🌈 Paginate flags ([#14](https://github.com/hykilpikonna/hyfetch/pull/14))
|
||||
* 🌈 Add release workflow ([#15](https://github.com/hykilpikonna/hyfetch/pull/15))
|
||||
* 🌈 Create automatic release script
|
||||
* 🌈 Config page - Give warning when terminal size is too small
|
||||
* 🌈 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
|
||||
|
||||
* 🌈 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
|
||||
|
||||
<details>
|
||||
@@ -424,11 +443,11 @@ pip install git+https://github.com/hykilpikonna/hyfetch.git@master
|
||||
|
||||
### 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
|
||||
|
||||
* 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
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
VERSION = '1.4.8'
|
||||
+27
-5
@@ -6,11 +6,33 @@ from dataclasses import dataclass, astuple
|
||||
from .constants import GLOBAL_CFG
|
||||
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",
|
||||
"&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",
|
||||
"&f/\033[1;37m",
|
||||
"&r/\033[0m", "&l/\033[1m", "&o/\033[3m", "&n/\033[4m", "&-/\n"]
|
||||
MINECRAFT_COLORS = [
|
||||
|
||||
# Minecraft formatting codes
|
||||
# ==========================
|
||||
"&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]
|
||||
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
|
||||
from .types import LightDark
|
||||
from .__version__ import VERSION
|
||||
|
||||
CONFIG_PATH = Path.home() / '.config/hyfetch.json'
|
||||
VERSION = '1.4.7'
|
||||
|
||||
|
||||
TEST_ASCII = r"""
|
||||
|
||||
@@ -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:
|
||||
:=-:` `-=+:
|
||||
""")
|
||||
|
||||
@@ -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} ⢰⡆
|
||||
⢠⣿⣿⡄
|
||||
⢀⣾⣿⣿⣿⡀
|
||||
⣼⣿⣿⣿⣿⣷⡀
|
||||
⣼⣿⣿⣿⣿⣿⣿⣷
|
||||
⢼⣿⣿⣿⣿⣿⣿⣿⣿⣧
|
||||
⣰⣤⣈⠻⢿⣿⣿⣿⣿⣿⣿⣧
|
||||
⣰⣿⣿⣿⣿⣮⣿⣿⣿⣿⣿⣿⣿⣧
|
||||
⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
|
||||
⣰⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
|
||||
⣼⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧
|
||||
⣼⣿⣿⣿⣿⣿⡿⣿⣿⡟ ⠸⣿⣿⡿⣿⣿⣿⣿⣿⣷⡀
|
||||
⣼⣿⣿⣿⣿⣿⡏ ⠈⣿⣿⣿⣿⣿⣷⡀
|
||||
⢀⣼⣿⣿⣿⣿⣿⣿⡗ ⢀⣠⣤⣀ ⠸⣿⣿⣿⣿⣿⣿⣷⡀
|
||||
⢀⣾⣿⣿⣿⣿⣿⡏⠁ ⢠⣿⣿⣿⣿⡇ ⢙⣿⣿⣻⠿⣿⣷⡀
|
||||
⢀⣾⣿⣿⣿⣿⣿⣿⣷⣤⡀ ⠻⣿⣿⡿⠃ ⢀⣼⣿⣿⣿⣿⣦⣌⠙
|
||||
⢠⣾⣿⣿⣿⣿⣿⣿⣿⣿⣿⠏ ⢿⣿⣿⣿⣿⣿⣿⣿⣿⣦⡀
|
||||
⢠⣿⣿⣿⣿⣿⣿⣿⡿⠟⠋⠁ ⠙⠻⣿⣿⣿⣿⣿⣿⣿⣿⡄
|
||||
⣠⣿⣿⣿⣿⠿⠛⠋⠁ ⠉⠙⠻⢿⣿⣿⣿⣿⣆
|
||||
⡰⠟⠛⠉⠁ ⠉⠙⠛⠿⢆
|
||||
""")
|
||||
|
||||
@@ -104,6 +104,14 @@ def detect(name: str) -> AsciiArt | None:
|
||||
from .apricity import 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'):
|
||||
from .archcraft import archcraft
|
||||
return archcraft
|
||||
@@ -920,6 +928,10 @@ def detect(name: str) -> AsciiArt | None:
|
||||
from .pisi import pisi
|
||||
return pisi
|
||||
|
||||
if name.startswith('pikaos'):
|
||||
from .pikaos import pikaos
|
||||
return pikaos
|
||||
|
||||
if name.startswith('pnm linux') or name.startswith('whpnm linux'):
|
||||
from .pnm_linux import pnm_linux
|
||||
return pnm_linux
|
||||
@@ -1068,6 +1080,10 @@ def detect(name: str) -> AsciiArt | None:
|
||||
from .sasanqua import 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'):
|
||||
from .scientific import scientific
|
||||
return scientific
|
||||
|
||||
@@ -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} /🐦🐦🐦$ /🐦/🐦 /🐦🐦🐦 /🐦🐦🐦
|
||||
| 🐦__ $|__| 🐦 /🐦__ 🐦/🐦__ 🐦
|
||||
| 🐦 \ 🐦/$| 🐦 /🐦 /🐦🐦🐦| 🐦 \ $| 🐦 \__/
|
||||
| 🐦🐦🐦$| $| 🐦 /🐦/|____ $| 🐦 | $| 🐦🐦🐦
|
||||
| 🐦____/| $| 🐦🐦🐦/ /🐦🐦🐦| 🐦 | 🐦\____ 🐦
|
||||
| 🐦 | $| 🐦_ 🐦 /🐦__ $| 🐦 | 🐦/🐦 \ 🐦
|
||||
| 🐦 | $| 🐦 \ $| 🐦🐦🐦| 🐦🐦🐦| 🐦🐦🐦/
|
||||
|__/ |__|__/ \__/\_______/\______/ \______/ .
|
||||
""")
|
||||
|
||||
@@ -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
@@ -4,22 +4,24 @@ from . import AsciiArt
|
||||
|
||||
vanilla = AsciiArt(match=r'''"Vanilla"*''', color='11 15', ascii=r"""
|
||||
${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
@@ -7,7 +7,6 @@ import random
|
||||
import traceback
|
||||
from itertools import permutations
|
||||
from math import ceil
|
||||
from typing import Iterable
|
||||
|
||||
from . import termenv, neofetch_util
|
||||
from .color_scale import Scale
|
||||
@@ -33,51 +32,6 @@ def check_config(path) -> 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:
|
||||
"""
|
||||
Create config interactively
|
||||
@@ -90,7 +44,7 @@ def create_config() -> Config:
|
||||
|
||||
asc = get_distro_ascii()
|
||||
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.'
|
||||
clear_screen(title)
|
||||
|
||||
@@ -100,7 +54,7 @@ def create_config() -> Config:
|
||||
nonlocal title, option_counter
|
||||
if not k.endswith(":"):
|
||||
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
|
||||
|
||||
def print_title_prompt(prompt: str):
|
||||
@@ -153,7 +107,7 @@ def create_config() -> Config:
|
||||
return det_bg.is_light(), 'Detected background color'
|
||||
|
||||
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')
|
||||
return inp == 'light', 'Selected background color'
|
||||
|
||||
@@ -354,7 +308,7 @@ def run():
|
||||
colorama.just_fix_windows_console()
|
||||
|
||||
# Create CLI
|
||||
hyfetch = color('&b&lhyfetch&r')
|
||||
hyfetch = color('&l&bhyfetch&~&L')
|
||||
parser = argparse.ArgumentParser(description=color(f'{hyfetch} - neofetch with flags <3'))
|
||||
|
||||
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('-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('--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
|
||||
# --test-print: Print the ascii distro and exit
|
||||
@@ -384,10 +340,6 @@ def run():
|
||||
ensure_git_bash()
|
||||
check_windows_cmd()
|
||||
|
||||
# Use a custom distro
|
||||
if args.distro:
|
||||
GLOBAL_CFG.override_distro = args.distro
|
||||
|
||||
if args.debug:
|
||||
GLOBAL_CFG.debug = True
|
||||
|
||||
@@ -406,6 +358,9 @@ def run():
|
||||
# Load config or create config
|
||||
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
|
||||
if args.preset:
|
||||
config.preset = args.preset
|
||||
@@ -431,7 +386,9 @@ def run():
|
||||
|
||||
# Run
|
||||
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:
|
||||
print(f'Error: {e}')
|
||||
traceback.print_exc()
|
||||
|
||||
@@ -16,6 +16,7 @@ class Config:
|
||||
lightness: float | None = None
|
||||
color_align: ColorAlignment = field(default_factory=lambda: ColorAlignment('horizontal'))
|
||||
backend: BackendLiteral = "neofetch"
|
||||
distro: str | None = None
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, d: dict):
|
||||
|
||||
+66
-28
@@ -12,6 +12,7 @@ from dataclasses import dataclass
|
||||
from pathlib import Path
|
||||
from subprocess import check_output
|
||||
from tempfile import TemporaryDirectory
|
||||
from typing import Iterable
|
||||
|
||||
import pkg_resources
|
||||
|
||||
@@ -24,6 +25,48 @@ from .types import BackendLiteral, ColorAlignMode
|
||||
|
||||
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]:
|
||||
"""
|
||||
@@ -106,7 +149,7 @@ class ColorAlignment:
|
||||
# Add new colors
|
||||
if self.mode == 'horizontal':
|
||||
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:
|
||||
raise NotImplementedError()
|
||||
|
||||
@@ -121,9 +164,9 @@ class ColorAlignment:
|
||||
# Add new colors
|
||||
if self.mode == 'horizontal':
|
||||
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:
|
||||
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:
|
||||
preset = preset.unique_colors()
|
||||
@@ -185,7 +228,7 @@ def ensure_git_bash() -> Path:
|
||||
return def_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:
|
||||
pth = Path(git_exe).parent
|
||||
if (pth / r'bash.exe').is_file():
|
||||
@@ -207,14 +250,17 @@ def ensure_git_bash() -> Path:
|
||||
|
||||
# No installation found, download a portable installation
|
||||
print('Git installation not found. Git is required to use HyFetch/neofetch on Windows')
|
||||
print('Downloading a minimal portable package for Git...')
|
||||
from urllib.request import urlretrieve
|
||||
urlretrieve(MINGIT_URL, pkg_path)
|
||||
print('Download finished! Extracting...')
|
||||
with zipfile.ZipFile(pkg_path, 'r') as zip_ref:
|
||||
zip_ref.extractall(path)
|
||||
print('Done!')
|
||||
return path / r'bin\bash.exe'
|
||||
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':
|
||||
print('Downloading a minimal portable package for Git...')
|
||||
from urllib.request import urlretrieve
|
||||
urlretrieve(MINGIT_URL, pkg_path)
|
||||
print('Download finished! Extracting...')
|
||||
with zipfile.ZipFile(pkg_path, 'r') as zip_ref:
|
||||
zip_ref.extractall(path)
|
||||
print('Done!')
|
||||
return path / r'bin\bash.exe'
|
||||
else:
|
||||
sys.exit()
|
||||
|
||||
|
||||
def check_windows_cmd():
|
||||
@@ -290,25 +336,21 @@ def get_distro_name():
|
||||
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":
|
||||
return run_neofetch(preset, alignment)
|
||||
return run_neofetch(asc)
|
||||
if backend == "fastfetch":
|
||||
return run_fastfetch(preset, alignment)
|
||||
return run_fastfetch(asc)
|
||||
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
|
||||
|
||||
:param preset: Color palette
|
||||
:param alignment: Color alignment settings
|
||||
:param asc: Ascii art
|
||||
"""
|
||||
asc = get_distro_ascii()
|
||||
asc = alignment.recolor_ascii(asc, preset)
|
||||
|
||||
# Escape backslashes here because backslashes are escaped in neofetch for printf
|
||||
asc = asc.replace('\\', '\\\\')
|
||||
|
||||
@@ -322,17 +364,13 @@ def run_neofetch(preset: ColorProfile, alignment: ColorAlignment):
|
||||
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
|
||||
|
||||
:param preset: Color palette
|
||||
:param alignment: Color alignment settings
|
||||
:param asc: Ascii art
|
||||
:param legacy: Set true when using fastfetch < 1.8.0
|
||||
"""
|
||||
asc = get_distro_ascii()
|
||||
asc = alignment.recolor_ascii(asc, preset)
|
||||
|
||||
# Write temp file
|
||||
with TemporaryDirectory() as tmp_dir:
|
||||
tmp_dir = Path(tmp_dir)
|
||||
|
||||
+20
-2
@@ -83,12 +83,12 @@ class ColorProfile:
|
||||
for i, t in enumerate(txt):
|
||||
if space_only and t != ' ':
|
||||
if i > 0 and txt[i - 1] == ' ':
|
||||
result += '\033[0m'
|
||||
result += '\033[39;49m'
|
||||
result += t
|
||||
else:
|
||||
result += colors[i].to_ansi(foreground=foreground) + t
|
||||
|
||||
result += '\033[0m'
|
||||
result += '\033[39;49m'
|
||||
return result
|
||||
|
||||
def lighten(self, multiplier: float) -> ColorProfile:
|
||||
@@ -216,6 +216,14 @@ PRESETS: dict[str, ColorProfile] = {
|
||||
'#8EA6FF',
|
||||
]),
|
||||
|
||||
'omniromantic': ColorProfile([
|
||||
'#FEC8E4',
|
||||
'#FDA1DB',
|
||||
'#89739A',
|
||||
'#ABA7FE',
|
||||
'#BFCEFF',
|
||||
]),
|
||||
|
||||
# gay men sourced from https://www.flagcolorcodes.com/gay-men
|
||||
'gay-men': ColorProfile([
|
||||
'#078D70',
|
||||
@@ -542,6 +550,16 @@ PRESETS: dict[str, ColorProfile] = {
|
||||
'#7D2557'
|
||||
]),
|
||||
|
||||
'pangender': ColorProfile([
|
||||
'#FFF798',
|
||||
'#FEDDCD',
|
||||
'#FFEBFB',
|
||||
'#FFFFFF',
|
||||
'#FFEBFB',
|
||||
'#FEDDCD',
|
||||
'#FFF798',
|
||||
]),
|
||||
|
||||
'gendernonconforming1': ColorProfile(
|
||||
ColorProfile([
|
||||
'#50284d',
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
version=7.3.7
|
||||
version=7.3.8
|
||||
|
||||
# Fallback to a value of '5' for shells which support bash
|
||||
# but do not set the 'BASH_' shell variables (osh).
|
||||
@@ -38,7 +38,7 @@ shopt -s eval_unsafe_arith &>/dev/null
|
||||
sys_locale=${LANG:-C}
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-${HOME}/.config}
|
||||
PATH=$PATH:/usr/xpg4/bin:/usr/sbin:/sbin:/usr/etc:/usr/libexec
|
||||
reset='\e[0m'
|
||||
reset='\e[39;22m'
|
||||
shopt -s nocasematch extglob
|
||||
|
||||
# Speed up script by not using unicode.
|
||||
@@ -834,34 +834,35 @@ image_source="auto"
|
||||
# Flag: --ascii_distro
|
||||
#
|
||||
# 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,
|
||||
# ArchMerge, ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi, Aster, AsteroidOS, astOS,
|
||||
# Bedrock, BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn, BlueLight, Bodhi, bonsai, BSD,
|
||||
# BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL-Mariner, CelOS, Center, CentOS, Chakra,
|
||||
# ChaletOS, Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS, ClearOS, Clover, Cobalt,
|
||||
# Condres, Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber, CutefishOS, CuteOS, CyberOS,
|
||||
# dahlia, DarkOs, Darwin, Debian, Deepin, DesaOS, Devuan, DietPi, DracOS, DragonFly, Drauger,
|
||||
# Droidian, Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso, EuroLinux, Exherbo, Exodia
|
||||
# Predator OS, Fedora, Feren, Finnix, Floflis, FreeBSD, FreeMiNT, Frugalware, Funtoo, GalliumOS,
|
||||
# Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU, GoboLinux, GrapheneOS, Grombyang, Guix,
|
||||
# Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid, HydroOS, Hyperbola, iglunix, instantOS, IRIX,
|
||||
# Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora, KrassOS, KSLinux, Kubuntu,
|
||||
# LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux, Linux Lite, Linux Mint, Linux Mint Old,
|
||||
# Live Raizo, LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro, MassOS, MatuusOS,
|
||||
# Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune, NetBSD, Netrunner, Nitrux, NixOS,
|
||||
# NomadBSD, Nurunner, NuTyX, Obarun, OBRevenge, OmniOS, Open Source Media Center, OpenBSD,
|
||||
# openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage, openSUSE, openSUSE Leap, openSUSE
|
||||
# Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS Elbrus, PacBSD, Parabola, parch, Pardus, Parrot,
|
||||
# Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint, Pisi, PNM Linux, Pop!_OS, Porteus,
|
||||
# PostMarketOS, Profelis SambaBOX, Proxmox, PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian,
|
||||
# Radix, Raspbian, ravynOS, Reborn OS, Red Star, Redcore, Redhat, Refracted Devuan, Regata,
|
||||
# Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage, Sailfish, SalentOS, Sasanqua, Scientific, semc,
|
||||
# Septor, Serene, SharkLinux, ShastraOS, Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda,
|
||||
# Solus, Source Mage, Sparky, Star, SteamOS, Stock Linux, Sulin, SunOS, SwagArch, t2, Tails, TeArch,
|
||||
# TorizonCore, Trisquel, Twister, Ubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE,
|
||||
# Ubuntu Studio, Ubuntu Sway, Ubuntu Touch, Ubuntu-GNOME, ubuntu_old02, Ultramarine Linux,
|
||||
# Univalent, Univention, Uos, UrukOS, uwuntu, Vanilla, Venom, VNux, Void, VzLinux, wii-linux-ngx,
|
||||
# Windows, Windows 10, Windows 11, XFerience, Xubuntu, yiffOS, Zorin have ascii logos.
|
||||
# AOSC OS/Retro, Aperio GNU/Linux, Aperture, Apricity, Arch, ArchBox, Archcraft, archcraft_ascii,
|
||||
# archcraft_minimal, ARCHlabs, ArchMerge, ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi,
|
||||
# Aster, AsteroidOS, astOS, Bedrock, BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn,
|
||||
# BlueLight, Bodhi, bonsai, BSD, BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL-Mariner,
|
||||
# CelOS, Center, CentOS, Chakra, ChaletOS, Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS,
|
||||
# ClearOS, Clover, Cobalt, Condres, Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber,
|
||||
# CutefishOS, CuteOS, CyberOS, dahlia, DarkOs, Darwin, Debian, Deepin, DesaOS, Devuan, DietPi,
|
||||
# DracOS, DragonFly, Drauger, Droidian, Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso,
|
||||
# EuroLinux, Exherbo, Exodia Predator OS, Fedora, Feren, Finnix, Floflis, FreeBSD, FreeMiNT,
|
||||
# Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU,
|
||||
# GoboLinux, GrapheneOS, Grombyang, Guix, Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid, HydroOS,
|
||||
# Hyperbola, iglunix, instantOS, IRIX, Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion,
|
||||
# Korora, KrassOS, KSLinux, Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux, Linux
|
||||
# Lite, Linux Mint, Linux Mint Old, Live Raizo, LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS,
|
||||
# Mandriva, Manjaro, MassOS, MatuusOS, Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune,
|
||||
# NetBSD, Netrunner, Nitrux, NixOS, NomadBSD, Nurunner, NuTyX, Obarun, OBRevenge, OmniOS, Open
|
||||
# Source Media Center, OpenBSD, openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage,
|
||||
# openSUSE, openSUSE Leap, openSUSE Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS Elbrus,
|
||||
# PacBSD, Parabola, parch, Pardus, Parrot, Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo,
|
||||
# Peppermint, PikaOS, Pisi, PNM Linux, Pop!_OS, Porteus, PostMarketOS, Profelis SambaBOX, Proxmox,
|
||||
# PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian, Radix, Raspbian, ravynOS, Reborn OS, Red Star,
|
||||
# Redcore, Redhat, Refracted Devuan, Regata, Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage,
|
||||
# Sailfish, SalentOS, Salient OS, Sasanqua, Scientific, semc, Septor, Serene, SharkLinux, ShastraOS,
|
||||
# Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda, Solus, Source Mage, Sparky, Star, SteamOS,
|
||||
# Stock Linux, Sulin, SunOS, SwagArch, t2, Tails, TeArch, TorizonCore, Trisquel, Twister, Ubuntu,
|
||||
# Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio, Ubuntu Sway, Ubuntu
|
||||
# Touch, Ubuntu-GNOME, ubuntu_old02, Ultramarine Linux, Univalent, Univention, Uos, UrukOS, uwuntu,
|
||||
# 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
|
||||
# {distro}_old to use them.
|
||||
@@ -1187,6 +1188,12 @@ get_distro() {
|
||||
elif [[ -f /etc/vzlinux-release ]]; then
|
||||
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
|
||||
case $distro_shorthand in
|
||||
on|tiny) distro="Guix System" ;;
|
||||
@@ -1255,11 +1262,14 @@ get_distro() {
|
||||
distro='Chrome OS'
|
||||
|
||||
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* ]] &&
|
||||
case $distro_shorthand in
|
||||
on) distro="Chrome OS $distro" ;;
|
||||
on) distro="Chrome OS $cros_version" ;;
|
||||
tiny) distro="Chrome OS" ;;
|
||||
*) distro="Chrome OS $distro" ;;
|
||||
*) distro="Chrome OS $cros_version $distro" ;;
|
||||
esac
|
||||
fi
|
||||
|
||||
@@ -1552,6 +1562,7 @@ get_model() {
|
||||
"iPhone OS")
|
||||
case $kernel_machine in
|
||||
iPad1,1): "iPad" ;;
|
||||
iPad1,2): "iPad 3G" ;;
|
||||
iPad2,[1-4]): "iPad 2" ;;
|
||||
iPad3,[1-3]): "iPad 3" ;;
|
||||
iPad3,[4-6]): "iPad 4" ;;
|
||||
@@ -1560,20 +1571,25 @@ get_model() {
|
||||
iPad7,1[1-2]): "iPad 7" ;;
|
||||
iPad11,[6-7]): "iPad 8" ;;
|
||||
iPad12,[1-2]): "iPad 9" ;;
|
||||
iPad13,1[8-9]): "iPad 10" ;;
|
||||
iPad4,[1-3]): "iPad Air" ;;
|
||||
iPad5,[3-4]): "iPad Air 2" ;;
|
||||
iPad11,[3-4]): "iPad Air 3" ;;
|
||||
iPad13,[1-2]): "iPad Air 4";;
|
||||
iPad6,[7-8]): "iPad Pro (12.9 Inch)" ;;
|
||||
iPad6,[3-4]): "iPad Pro (9.7 Inch)" ;;
|
||||
iPad7,[1-2]): "iPad Pro 2 (12.9 Inch)" ;;
|
||||
iPad7,[3-4]): "iPad Pro (10.5 Inch)" ;;
|
||||
iPad8,[1-4]): "iPad Pro (11 Inch)" ;;
|
||||
iPad8,[5-8]): "iPad Pro 3 (12.9 Inch)" ;;
|
||||
iPad8,9 | iPad8,10): "iPad Pro 4 (11 Inch)" ;;
|
||||
iPad8,1[1-2]): "iPad Pro 4 (12.9 Inch)" ;;
|
||||
iPad13,[4-7]): "iPad Pro 5 (11 Inch)" ;;
|
||||
iPad13,8 | iPad13,11): "iPad Pro 5 (12.9 Inch)" ;;
|
||||
iPad13,[1-2]): "iPad Air 4" ;;
|
||||
iPad13,1[6-7]): "iPad Air 5" ;;
|
||||
iPad6,[7-8]): "iPad Pro 12.9-inch" ;;
|
||||
iPad6,[3-4]): "iPad Pro 9.7-inch" ;;
|
||||
iPad7,[1-2]): "iPad Pro 12.9-inch (2nd generation)" ;;
|
||||
iPad7,[3-4]): "iPad Pro 10.5-inch" ;;
|
||||
iPad8,[1-4]): "iPad Pro 11-inch" ;;
|
||||
iPad8,[5-8]): "iPad Pro 12.9-inch (3rd generation)" ;;
|
||||
iPad8,9 | iPad8,10): "iPad Pro 11-inch (2nd generation)" ;;
|
||||
iPad8,1[1-2]): "iPad Pro 12.9-inch (4th generation)" ;;
|
||||
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" ;;
|
||||
iPad4,[4-6]): "iPad mini 2" ;;
|
||||
iPad4,[7-9]): "iPad mini 3" ;;
|
||||
@@ -1614,13 +1630,18 @@ get_model() {
|
||||
iPhone14,3): "iPhone 13 Pro Max" ;;
|
||||
iPhone14,4): "iPhone 13 Mini" ;;
|
||||
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" ;;
|
||||
ipod2,1): "iPod touch 2G" ;;
|
||||
ipod3,1): "iPod touch 3G" ;;
|
||||
ipod4,1): "iPod touch 4G" ;;
|
||||
ipod5,1): "iPod touch 5G" ;;
|
||||
ipod7,1): "iPod touch 6G" ;;
|
||||
iPod2,1): "iPod touch 2G" ;;
|
||||
iPod3,1): "iPod touch 3G" ;;
|
||||
iPod4,1): "iPod touch 4G" ;;
|
||||
iPod5,1): "iPod touch 5G" ;;
|
||||
iPod7,1): "iPod touch 6G" ;;
|
||||
iPod9,1): "iPod touch 7G" ;;
|
||||
esac
|
||||
|
||||
@@ -1871,6 +1892,10 @@ get_packages() {
|
||||
}
|
||||
}
|
||||
|
||||
# OS-independent package managers.
|
||||
has pipx && tot pipx list --short
|
||||
|
||||
# OS-specific package managers.
|
||||
case $os in
|
||||
Linux|BSD|"iPhone OS"|Solaris|illumos)
|
||||
# Package Manager Programs.
|
||||
@@ -2635,7 +2660,7 @@ get_cpu() {
|
||||
cpu="$(awk -F':' '/Hardware/ {print $2; exit}' "$cpu_file")"
|
||||
else
|
||||
# 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}')"
|
||||
else
|
||||
# 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):
|
||||
for ln in lines:
|
||||
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
|
||||
|
||||
@@ -2662,8 +2688,13 @@ if __name__ == '__main__':
|
||||
for model_desc in lscpu.split('Model name:'):
|
||||
lines = model_desc.split('\n')
|
||||
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:
|
||||
continue
|
||||
|
||||
@@ -2674,7 +2705,7 @@ if __name__ == '__main__':
|
||||
|
||||
print('\n'.join(cpus))
|
||||
END
|
||||
tmp_cpus=$(python -c "$py_script")
|
||||
tmp_cpus=$(python3 -c "$py_script")
|
||||
while IFS= read -r line; do
|
||||
prin "${subtitle:+${subtitle}}" "$line"
|
||||
done <<< "$tmp_cpus"
|
||||
@@ -2803,12 +2834,22 @@ END
|
||||
"iPhone10,"[1-6]): "Apple A11 Bionic (6) @ 2.39GHz" ;;
|
||||
"iPhone11,"[2468] | "iPad11,"[1-4] | "iPad11,"[6-7]): "Apple A12 Bionic (6) @ 2.49GHz" ;;
|
||||
"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" ;;
|
||||
"iPod3,1"): "Samsung S5L8922 (1) @ 600MHz" ;;
|
||||
"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" ;;
|
||||
"iPad3,"[1-3]): "Apple A5X (2) @ 1GHz" ;;
|
||||
"iPad3,"[4-6]): "Apple A6X (2) @ 1.4GHz" ;;
|
||||
@@ -3125,7 +3166,7 @@ get_gpu() {
|
||||
"iPhone OS")
|
||||
case $kernel_machine in
|
||||
"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"
|
||||
;;
|
||||
"iPhone4,1" | "iPad2,"[1-7] | "iPod5,1"): "PowerVR SGX543MP2" ;;
|
||||
@@ -3135,14 +3176,19 @@ get_gpu() {
|
||||
"iPhone8,"[1-4] | "iPad6,1"[12]): "PowerVR GT7600" ;;
|
||||
"iPhone9,"[1-4] | "iPad7,"[5-6]): "PowerVR GT7600 Plus" ;;
|
||||
"iPhone10,"[1-6]): "Apple Designed GPU (A11)" ;;
|
||||
"iPhone11,"[2468] | "iPad11,"[67]): "Apple Designed GPU (A12)" ;;
|
||||
"iPhone12,"[1358]): "Apple Designed GPU (A13)" ;;
|
||||
"iPhone11,"[2468] | "iPad11,"[123467]): "Apple Designed GPU (A12)" ;;
|
||||
"iPhone12,"[1358] | "iPad12,"[12]): "Apple Designed GPU (A13)" ;;
|
||||
"iPhone13,"[1234] | "iPad13,"[12]): "Apple Designed GPU (A14)" ;;
|
||||
|
||||
"iPad3,"[1-3]): "PowerVR SGX534MP4" ;;
|
||||
"iPad3,"[4-6]): "PowerVR SGX554MP4" ;;
|
||||
"iPad5,"[3-4]): "PowerVR GXA6850" ;;
|
||||
"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")
|
||||
: "PowerVR MBX Lite"
|
||||
@@ -4799,16 +4845,20 @@ get_cols() {
|
||||
esac
|
||||
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.
|
||||
printf -v block_spaces "%${block_height}s"
|
||||
|
||||
# Convert the spaces into rows of blocks.
|
||||
if [[ $BASH_VERSION == 3* ]]; then
|
||||
[[ "$blocks" ]] && cols+="${block_spaces// /${blocks}[mnl}"
|
||||
[[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}[mnl}"
|
||||
[[ "$blocks" ]] && cols+="${block_spaces// /${blocks}[39;49mnl}"
|
||||
[[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}[39;49mnl}"
|
||||
else
|
||||
[[ "$blocks" ]] && cols+="${block_spaces// /${blocks}\[mnl}"
|
||||
[[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}\[mnl}"
|
||||
[[ "$blocks" ]] && cols+="${block_spaces// /${blocks}\[39;49mnl}"
|
||||
[[ "$blocks2" ]] && cols+="${block_spaces// /${blocks2}\[39;49mnl}"
|
||||
fi
|
||||
|
||||
# Determine the horizontal offset of the blocks.
|
||||
@@ -5523,12 +5573,8 @@ trim_quotes() {
|
||||
}
|
||||
|
||||
strip_sequences() {
|
||||
strip="${1//$'\e['3[0-9]m}"
|
||||
strip="${strip//$'\e['[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}"
|
||||
strip="${1//$'\e'\[*([0-9])*(;*([0-9]))m}"
|
||||
strip="${strip//\\e\[*([0-9])*(;*([0-9]))m}"
|
||||
|
||||
printf '%s\n' "$strip"
|
||||
}
|
||||
@@ -5587,8 +5633,8 @@ set_text_colors() {
|
||||
|
||||
color() {
|
||||
case $1 in
|
||||
[0-6]) printf '%b\e[3%sm' "$reset" "$1" ;;
|
||||
7 | "fg") printf '\e[37m%b' "$reset" ;;
|
||||
[0-7]) printf '%b\e[3%sm' "$reset" "$1" ;;
|
||||
"fg") printf '%b' "$reset" ;;
|
||||
"#"*)
|
||||
local rgb="${1//#}"
|
||||
rgb="$((0x$rgb))"
|
||||
@@ -6031,47 +6077,47 @@ ASCII:
|
||||
|
||||
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, ArchMerge,
|
||||
ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi, Aster,
|
||||
AsteroidOS, astOS, Bedrock, BigLinux, Bitrig, BlackArch,
|
||||
blackPanther, BLAG, BlankOn, BlueLight, Bodhi, bonsai, BSD,
|
||||
BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL-Mariner,
|
||||
CelOS, Center, CentOS, Chakra, ChaletOS, Chapeau, ChonkySealOS,
|
||||
Chrom, Cleanjaro, Clear Linux OS, ClearOS, Clover, Cobalt, Condres,
|
||||
Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber,
|
||||
CutefishOS, CuteOS, CyberOS, dahlia, DarkOs, Darwin, Debian, Deepin,
|
||||
DesaOS, Devuan, DietPi, DracOS, DragonFly, Drauger, Droidian,
|
||||
Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso, EuroLinux,
|
||||
Exherbo, Exodia Predator OS, Fedora, Feren, Finnix, Floflis,
|
||||
FreeBSD, FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo,
|
||||
GhostBSD, glaucus, gNewSense, GNOME, GNU, GoboLinux, GrapheneOS,
|
||||
Grombyang, Guix, Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid,
|
||||
HydroOS, Hyperbola, iglunix, instantOS, IRIX, Itc, januslinux,
|
||||
Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora, KrassOS, KSLinux,
|
||||
Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux,
|
||||
Linux Lite, Linux Mint, Linux Mint Old, Live Raizo, LMDE, Lubuntu,
|
||||
Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro, MassOS, MatuusOS,
|
||||
Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune, NetBSD,
|
||||
Netrunner, Nitrux, NixOS, NomadBSD, Nurunner, NuTyX, Obarun,
|
||||
OBRevenge, OmniOS, Open Source Media Center, OpenBSD, openEuler,
|
||||
OpenIndiana, openmamba, OpenMandriva, OpenStage, openSUSE, openSUSE
|
||||
Leap, openSUSE Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS
|
||||
Elbrus, PacBSD, Parabola, parch, Pardus, Parrot, Parsix, PCBSD,
|
||||
PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint, Pisi, PNM Linux,
|
||||
Pop!_OS, Porteus, PostMarketOS, Profelis SambaBOX, Proxmox, PuffOS,
|
||||
Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian, Radix, Raspbian,
|
||||
ravynOS, Reborn OS, Red Star, Redcore, Redhat, Refracted Devuan,
|
||||
Regata, Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage, Sailfish,
|
||||
SalentOS, Sasanqua, Scientific, semc, Septor, Serene, SharkLinux,
|
||||
ShastraOS, Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda,
|
||||
Solus, Source Mage, Sparky, Star, SteamOS, Stock Linux, Sulin,
|
||||
SunOS, SwagArch, t2, Tails, TeArch, TorizonCore, Trisquel, Twister,
|
||||
Ubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE,
|
||||
Ubuntu Studio, Ubuntu Sway, Ubuntu Touch, Ubuntu-GNOME,
|
||||
ubuntu_old02, Ultramarine Linux, Univalent, Univention, Uos, UrukOS,
|
||||
uwuntu, Vanilla, Venom, VNux, Void, VzLinux, wii-linux-ngx, Windows,
|
||||
Windows 10, Windows 11, XFerience, Xubuntu, yiffOS, Zorin have ascii
|
||||
logos.
|
||||
Aperture, Apricity, Arch, ArchBox, Archcraft, archcraft_ascii,
|
||||
archcraft_minimal, ARCHlabs, ArchMerge, ArchStrike, ArcoLinux,
|
||||
ArseLinux, Artix, Arya, Asahi, Aster, AsteroidOS, astOS, Bedrock,
|
||||
BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn, BlueLight,
|
||||
Bodhi, bonsai, BSD, BunsenLabs, CachyOS, Calculate, CalinixOS,
|
||||
Carbs, CBL-Mariner, CelOS, Center, CentOS, Chakra, ChaletOS,
|
||||
Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS, ClearOS,
|
||||
Clover, Cobalt, Condres, Container Linux by CoreOS, CRUX, Crystal
|
||||
Linux, Cucumber, CutefishOS, CuteOS, CyberOS, dahlia, DarkOs,
|
||||
Darwin, Debian, Deepin, DesaOS, Devuan, DietPi, DracOS, DragonFly,
|
||||
Drauger, Droidian, Elementary, Elive, EncryptOS, EndeavourOS,
|
||||
Endless, Enso, EuroLinux, Exherbo, Exodia Predator OS, Fedora,
|
||||
Feren, Finnix, Floflis, FreeBSD, FreeMiNT, Frugalware, Funtoo,
|
||||
GalliumOS, Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU,
|
||||
GoboLinux, GrapheneOS, Grombyang, Guix, Haiku, HamoniKR, HarDClanZ,
|
||||
Hash, Huayra, Hybrid, HydroOS, Hyperbola, iglunix, instantOS, IRIX,
|
||||
Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora,
|
||||
KrassOS, KSLinux, Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC,
|
||||
Linspire, Linux, Linux Lite, Linux Mint, Linux Mint Old, Live Raizo,
|
||||
LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro,
|
||||
MassOS, MatuusOS, Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS,
|
||||
Neptune, NetBSD, Netrunner, Nitrux, NixOS, NomadBSD, Nurunner,
|
||||
NuTyX, Obarun, OBRevenge, OmniOS, Open Source Media Center, OpenBSD,
|
||||
openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage,
|
||||
openSUSE, openSUSE Leap, openSUSE Tumbleweed, OpenWrt, OPNsense,
|
||||
Oracle, orchid, OS Elbrus, PacBSD, Parabola, parch, Pardus, Parrot,
|
||||
Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint,
|
||||
PikaOS, Pisi, PNM Linux, Pop!_OS, Porteus, PostMarketOS, Profelis
|
||||
SambaBOX, Proxmox, PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt,
|
||||
Quibian, Radix, Raspbian, ravynOS, Reborn OS, Red Star, Redcore,
|
||||
Redhat, Refracted Devuan, Regata, Regolith, RhaymOS, rocky, Rosa,
|
||||
Sabayon, sabotage, Sailfish, SalentOS, Salient OS, Sasanqua,
|
||||
Scientific, semc, Septor, Serene, SharkLinux, ShastraOS, Siduction,
|
||||
SkiffOS, Slackware, SliTaz, SmartOS, Soda, Solus, Source Mage,
|
||||
Sparky, Star, SteamOS, Stock Linux, Sulin, SunOS, SwagArch, t2,
|
||||
Tails, TeArch, TorizonCore, Trisquel, Twister, Ubuntu, Ubuntu
|
||||
Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio,
|
||||
Ubuntu Sway, Ubuntu Touch, Ubuntu-GNOME, ubuntu_old02, Ultramarine
|
||||
Linux, Univalent, Univention, Uos, UrukOS, uwuntu, 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 {distro}_old to use them.
|
||||
@@ -6994,6 +7040,58 @@ dhhyys+/-`
|
||||
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"*)
|
||||
set_colors 6 1 2 3 4 5
|
||||
read -rd '' ascii_data <<'EOF'
|
||||
@@ -11593,6 +11691,20 @@ ${c2} !0m `6Kv
|
||||
EOF
|
||||
;;
|
||||
|
||||
"PikaOS"*)
|
||||
set_colors 11
|
||||
read -rd '' ascii_data <<'EOF'
|
||||
${c1} /🐦🐦🐦$ /🐦/🐦 /🐦🐦🐦 /🐦🐦🐦
|
||||
| 🐦__ $|__| 🐦 /🐦__ 🐦/🐦__ 🐦
|
||||
| 🐦 \ 🐦/$| 🐦 /🐦 /🐦🐦🐦| 🐦 \ $| 🐦 \__/
|
||||
| 🐦🐦🐦$| $| 🐦 /🐦/|____ $| 🐦 | $| 🐦🐦🐦
|
||||
| 🐦____/| $| 🐦🐦🐦/ /🐦🐦🐦| 🐦 | 🐦\____ 🐦
|
||||
| 🐦 | $| 🐦_ 🐦 /🐦__ $| 🐦 | 🐦/🐦 \ 🐦
|
||||
| 🐦 | $| 🐦 \ $| 🐦🐦🐦| 🐦🐦🐦| 🐦🐦🐦/
|
||||
|__/ |__|__/ \__/\_______/\______/ \______/ .
|
||||
EOF
|
||||
;;
|
||||
|
||||
"PNM Linux"* | "WHPNM Linux"*)
|
||||
set_colors 33 9 15 202
|
||||
read -rd '' ascii_data <<'EOF'
|
||||
@@ -12436,6 +12548,32 @@ ${c1}
|
||||
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"*)
|
||||
set_colors 4 7 1
|
||||
read -rd '' ascii_data <<'EOF'
|
||||
@@ -13737,23 +13875,25 @@ EOF
|
||||
set_colors 11 15
|
||||
read -rd '' ascii_data <<'EOF'
|
||||
${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
|
||||
;;
|
||||
|
||||
+43
-43
@@ -1,7 +1,7 @@
|
||||
.\" 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
|
||||
Neofetch \- manual page for Neofetch 7.3.7
|
||||
Neofetch \- manual page for Neofetch 7.3.8
|
||||
.SH SYNOPSIS
|
||||
.B neofetch
|
||||
\fI\,func_name --option "value" --option "value"\/\fR
|
||||
@@ -312,47 +312,47 @@ Which Distro's ascii art to print
|
||||
.TP
|
||||
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, ArchMerge,
|
||||
ArchStrike, ArcoLinux, ArseLinux, Artix, Arya, Asahi, Aster,
|
||||
AsteroidOS, astOS, Bedrock, BigLinux, Bitrig, BlackArch,
|
||||
blackPanther, BLAG, BlankOn, BlueLight, Bodhi, bonsai, BSD,
|
||||
BunsenLabs, CachyOS, Calculate, CalinixOS, Carbs, CBL\-Mariner,
|
||||
CelOS, Center, CentOS, Chakra, ChaletOS, Chapeau, ChonkySealOS,
|
||||
Chrom, Cleanjaro, Clear Linux OS, ClearOS, Clover, Cobalt, Condres,
|
||||
Container Linux by CoreOS, CRUX, Crystal Linux, Cucumber,
|
||||
CutefishOS, CuteOS, CyberOS, dahlia, DarkOs, Darwin, Debian, Deepin,
|
||||
DesaOS, Devuan, DietPi, DracOS, DragonFly, Drauger, Droidian,
|
||||
Elementary, Elive, EncryptOS, EndeavourOS, Endless, Enso, EuroLinux,
|
||||
Exherbo, Exodia Predator OS, Fedora, Feren, Finnix, Floflis,
|
||||
FreeBSD, FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo,
|
||||
GhostBSD, glaucus, gNewSense, GNOME, GNU, GoboLinux, GrapheneOS,
|
||||
Grombyang, Guix, Haiku, HamoniKR, HarDClanZ, Hash, Huayra, Hybrid,
|
||||
HydroOS, Hyperbola, iglunix, instantOS, IRIX, Itc, januslinux,
|
||||
Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora, KrassOS, KSLinux,
|
||||
Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC, Linspire, Linux,
|
||||
Linux Lite, Linux Mint, Linux Mint Old, Live Raizo, LMDE, Lubuntu,
|
||||
Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro, MassOS, MatuusOS,
|
||||
Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS, Neptune, NetBSD,
|
||||
Netrunner, Nitrux, NixOS, NomadBSD, Nurunner, NuTyX, Obarun,
|
||||
OBRevenge, OmniOS, Open Source Media Center, OpenBSD, openEuler,
|
||||
OpenIndiana, openmamba, OpenMandriva, OpenStage, openSUSE, openSUSE
|
||||
Leap, openSUSE Tumbleweed, OpenWrt, OPNsense, Oracle, orchid, OS
|
||||
Elbrus, PacBSD, Parabola, parch, Pardus, Parrot, Parsix, PCBSD,
|
||||
PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint, Pisi, PNM Linux,
|
||||
Pop!_OS, Porteus, PostMarketOS, Profelis SambaBOX, Proxmox, PuffOS,
|
||||
Puppy, PureOS, Q4OS, Qubes, Qubyt, Quibian, Radix, Raspbian,
|
||||
ravynOS, Reborn OS, Red Star, Redcore, Redhat, Refracted Devuan,
|
||||
Regata, Regolith, RhaymOS, rocky, Rosa, Sabayon, sabotage, Sailfish,
|
||||
SalentOS, Sasanqua, Scientific, semc, Septor, Serene, SharkLinux,
|
||||
ShastraOS, Siduction, SkiffOS, Slackware, SliTaz, SmartOS, Soda,
|
||||
Solus, Source Mage, Sparky, Star, SteamOS, Stock Linux, Sulin,
|
||||
SunOS, SwagArch, t2, Tails, TeArch, TorizonCore, Trisquel, Twister,
|
||||
Ubuntu, Ubuntu Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE,
|
||||
Ubuntu Studio, Ubuntu Sway, Ubuntu Touch, Ubuntu\-GNOME,
|
||||
ubuntu_old02, Ultramarine Linux, Univalent, Univention, Uos, UrukOS,
|
||||
uwuntu, Vanilla, Venom, VNux, Void, VzLinux, wii\-linux\-ngx, Windows,
|
||||
Windows 10, Windows 11, XFerience, Xubuntu, yiffOS, Zorin have ascii
|
||||
logos.
|
||||
Aperture, Apricity, Arch, ArchBox, Archcraft, archcraft_ascii,
|
||||
archcraft_minimal, ARCHlabs, ArchMerge, ArchStrike, ArcoLinux,
|
||||
ArseLinux, Artix, Arya, Asahi, Aster, AsteroidOS, astOS, Bedrock,
|
||||
BigLinux, Bitrig, BlackArch, blackPanther, BLAG, BlankOn, BlueLight,
|
||||
Bodhi, bonsai, BSD, BunsenLabs, CachyOS, Calculate, CalinixOS,
|
||||
Carbs, CBL\-Mariner, CelOS, Center, CentOS, Chakra, ChaletOS,
|
||||
Chapeau, ChonkySealOS, Chrom, Cleanjaro, Clear Linux OS, ClearOS,
|
||||
Clover, Cobalt, Condres, Container Linux by CoreOS, CRUX, Crystal
|
||||
Linux, Cucumber, CutefishOS, CuteOS, CyberOS, dahlia, DarkOs,
|
||||
Darwin, Debian, Deepin, DesaOS, Devuan, DietPi, DracOS, DragonFly,
|
||||
Drauger, Droidian, Elementary, Elive, EncryptOS, EndeavourOS,
|
||||
Endless, Enso, EuroLinux, Exherbo, Exodia Predator OS, Fedora,
|
||||
Feren, Finnix, Floflis, FreeBSD, FreeMiNT, Frugalware, Funtoo,
|
||||
GalliumOS, Garuda, Gentoo, GhostBSD, glaucus, gNewSense, GNOME, GNU,
|
||||
GoboLinux, GrapheneOS, Grombyang, Guix, Haiku, HamoniKR, HarDClanZ,
|
||||
Hash, Huayra, Hybrid, HydroOS, Hyperbola, iglunix, instantOS, IRIX,
|
||||
Itc, januslinux, Kaisen, Kali, KaOS, KDE, Kibojoe, Kogaion, Korora,
|
||||
KrassOS, KSLinux, Kubuntu, LangitKetujuh, LaxerOS, LEDE, LibreELEC,
|
||||
Linspire, Linux, Linux Lite, Linux Mint, Linux Mint Old, Live Raizo,
|
||||
LMDE, Lubuntu, Lunar, mac, Mageia, MagpieOS, Mandriva, Manjaro,
|
||||
MassOS, MatuusOS, Maui, Mer, Minix, MIRACLE LINUX, MX, Namib, NekOS,
|
||||
Neptune, NetBSD, Netrunner, Nitrux, NixOS, NomadBSD, Nurunner,
|
||||
NuTyX, Obarun, OBRevenge, OmniOS, Open Source Media Center, OpenBSD,
|
||||
openEuler, OpenIndiana, openmamba, OpenMandriva, OpenStage,
|
||||
openSUSE, openSUSE Leap, openSUSE Tumbleweed, OpenWrt, OPNsense,
|
||||
Oracle, orchid, OS Elbrus, PacBSD, Parabola, parch, Pardus, Parrot,
|
||||
Parsix, PCBSD, PCLinuxOS, pearOS, Pengwin, Pentoo, Peppermint,
|
||||
PikaOS, Pisi, PNM Linux, Pop!_OS, Porteus, PostMarketOS, Profelis
|
||||
SambaBOX, Proxmox, PuffOS, Puppy, PureOS, Q4OS, Qubes, Qubyt,
|
||||
Quibian, Radix, Raspbian, ravynOS, Reborn OS, Red Star, Redcore,
|
||||
Redhat, Refracted Devuan, Regata, Regolith, RhaymOS, rocky, Rosa,
|
||||
Sabayon, sabotage, Sailfish, SalentOS, Salient OS, Sasanqua,
|
||||
Scientific, semc, Septor, Serene, SharkLinux, ShastraOS, Siduction,
|
||||
SkiffOS, Slackware, SliTaz, SmartOS, Soda, Solus, Source Mage,
|
||||
Sparky, Star, SteamOS, Stock Linux, Sulin, SunOS, SwagArch, t2,
|
||||
Tails, TeArch, TorizonCore, Trisquel, Twister, Ubuntu, Ubuntu
|
||||
Budgie, Ubuntu Cinnamon, Ubuntu Kylin, Ubuntu MATE, Ubuntu Studio,
|
||||
Ubuntu Sway, Ubuntu Touch, Ubuntu\-GNOME, ubuntu_old02, Ultramarine
|
||||
Linux, Univalent, Univention, Uos, UrukOS, uwuntu, Vanilla, Venom,
|
||||
VNux, Void, VzLinux, wii\-linux\-ngx, Windows, Windows 10, Windows 11,
|
||||
XFerience, Xubuntu, yiffOS, Zorin have ascii logos.
|
||||
.TP
|
||||
NOTE: arch, dragonfly, Fedora, LangitKetujuh, nixos, redhat, Ubuntu
|
||||
have 'old' logo variants, use {distro}_old to use them.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "neowofetch",
|
||||
"version": "1.4.7",
|
||||
"version": "1.4.8",
|
||||
"description": "Updated neofetch",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
#!/usr/bin/env python3
|
||||
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
|
||||
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
|
||||
setup(
|
||||
name="HyFetch",
|
||||
version=hyfetch.constants.VERSION,
|
||||
version=VERSION,
|
||||
description="neofetch with flags <3",
|
||||
long_description=README,
|
||||
long_description_content_type="text/markdown",
|
||||
@@ -31,7 +31,7 @@ setup(
|
||||
"Programming Language :: Python :: 3.10",
|
||||
"Programming Language :: Python :: 3.11",
|
||||
],
|
||||
packages=find_packages(),
|
||||
packages=find_namespace_packages(),
|
||||
package_data={'hyfetch': ['hyfetch/*']},
|
||||
include_package_data=True,
|
||||
install_requires=[
|
||||
@@ -40,7 +40,7 @@ setup(
|
||||
|
||||
# Windows dependencies
|
||||
'psutil ; platform_system=="Windows"',
|
||||
'colorama ; platform_system=="Windows"',
|
||||
'colorama>=0.4.6 ; platform_system=="Windows"',
|
||||
],
|
||||
entry_points={
|
||||
"console_scripts": [
|
||||
|
||||
@@ -25,12 +25,12 @@ def test_rgb_8bit_conversion():
|
||||
for r in range(0, 255, 16):
|
||||
for g in range(0, 255, 16):
|
||||
print(RGB(r, g, 0).to_ansi_rgb(False), end=' ')
|
||||
printc('&r')
|
||||
printc('&*')
|
||||
print()
|
||||
for r in range(0, 255, 16):
|
||||
for g in range(0, 255, 16):
|
||||
print(RGB(r, g, 0).to_ansi_8bit(False), end=' ')
|
||||
printc('&r')
|
||||
printc('&*')
|
||||
print()
|
||||
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ def pre_check():
|
||||
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'
|
||||
|
||||
print('Running shellcheck... (This may take a while)')
|
||||
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))
|
||||
|
||||
# 2. hyfetch/constants.py
|
||||
print('Editing hyfetch/constants.py...')
|
||||
path = Path('hyfetch/constants.py')
|
||||
print('Editing hyfetch/__version__.py...')
|
||||
path = Path('hyfetch/__version__.py')
|
||||
content = [f"VERSION = '{version}'" if l.startswith('VERSION = ') else l for l in path.read_text().split('\n')]
|
||||
path.write_text('\n'.join(content))
|
||||
|
||||
@@ -63,7 +64,7 @@ def edit_versions(version: str):
|
||||
# 4. neofetch script
|
||||
print('Editing 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='))
|
||||
nf = pv.parse(lines[version_i].replace('version=', ''))
|
||||
new = pv.parse(version)
|
||||
@@ -102,6 +103,7 @@ def post_check():
|
||||
"""
|
||||
Check after changes are made
|
||||
"""
|
||||
print('Running shellcheck... (This may take a while)')
|
||||
subprocess.check_call(shlex.split('shellcheck neofetch'))
|
||||
|
||||
|
||||
@@ -112,7 +114,7 @@ def create_release(v: str):
|
||||
print('Committing changes...')
|
||||
|
||||
# 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/*'])
|
||||
|
||||
# 2. Commit
|
||||
|
||||
@@ -3,20 +3,19 @@
|
||||
This script turns readme shorthand pull request references (i.e. dylanaraps/neofetch#1946) into full
|
||||
GitHub pull request links.
|
||||
"""
|
||||
import re
|
||||
import regex as re
|
||||
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():
|
||||
readme = Path('README.md').read_text()
|
||||
|
||||
for shorthand in RE_SHORTHAND.findall(readme):
|
||||
user, pull = shorthand.split('/')
|
||||
repo, pull = pull.split('#')
|
||||
readme = readme.replace(shorthand, f'[{user}#{pull}](https://github.com/{user}/{repo}/pull/{pull})')
|
||||
readme = re.sub(RE_SHORTHAND, r'[\1#\3](https://github.com/\1/\2/pull/\3)', readme)
|
||||
readme = re.sub(MY_RE, r'[#\1](https://github.com/hykilpikonna/hyfetch/pull/\1)', readme)
|
||||
|
||||
Path('README.md').write_text(readme)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user