mirror of
https://github.com/dylanaraps/pfetch.git
synced 2026-01-02 16:02:12 +01:00
Compare commits
79 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
675814f33e | ||
|
|
2ef3584f5b | ||
|
|
aa22d4e32d | ||
|
|
c0d0d65aa0 | ||
|
|
a8a3e1f2fe | ||
|
|
8633671f99 | ||
|
|
577e8483a7 | ||
|
|
6558b34254 | ||
|
|
542b6af284 | ||
|
|
177d77c335 | ||
|
|
e2068c61d5 | ||
|
|
39f767e45b | ||
|
|
b2aac93208 | ||
|
|
271458be6e | ||
|
|
9fc34b0000 | ||
|
|
3bb449700c | ||
|
|
f82f5e9d2d | ||
|
|
be111026b1 | ||
|
|
4cfef9c1e4 | ||
|
|
c1cecae824 | ||
|
|
f5b527d852 | ||
|
|
2bf774e70f | ||
|
|
25324687b5 | ||
|
|
f15a8d25dd | ||
|
|
361a46df60 | ||
|
|
9f55ffb5aa | ||
|
|
364223cb48 | ||
|
|
7094147013 | ||
|
|
8d1b579b39 | ||
|
|
32743859da | ||
|
|
c36607909b | ||
|
|
a7b0439aeb | ||
|
|
0dcc4d6a82 | ||
|
|
67204770ac | ||
|
|
4524a3cc0a | ||
|
|
4f7617208d | ||
|
|
8dd5981fbc | ||
|
|
24498852fd | ||
|
|
a1bbe9749c | ||
|
|
c9b4d26084 | ||
|
|
1045166df2 | ||
|
|
5893e26575 | ||
|
|
14261f0fa1 | ||
|
|
40d78a9b26 | ||
|
|
729f553d87 | ||
|
|
6c3d5c3a87 | ||
|
|
616e1b0c3b | ||
|
|
44dca45301 | ||
|
|
256c1678d6 | ||
|
|
a3bdc11167 | ||
|
|
2bc0fd87a5 | ||
|
|
8b9c409650 | ||
|
|
52617b2e6e | ||
|
|
77dce6a678 | ||
|
|
812f9ef231 | ||
|
|
87effdbc5a | ||
|
|
3f5845e20c | ||
|
|
c94e2c5d9d | ||
|
|
d8d8899ad2 | ||
|
|
1ff17055b9 | ||
|
|
d1d3b7b740 | ||
|
|
9564246e6c | ||
|
|
08d9834854 | ||
|
|
b7c7bc6c4c | ||
|
|
11d1c2e789 | ||
|
|
55408239db | ||
|
|
35ae795068 | ||
|
|
e1228975fd | ||
|
|
4d1be75c20 | ||
|
|
8d1ab2d0dd | ||
|
|
301c52dd5f | ||
|
|
0d1a340ef2 | ||
|
|
49a3db1653 | ||
|
|
d828d1e718 | ||
|
|
9963de75d5 | ||
|
|
3e58031fe0 | ||
|
|
405fc20eef | ||
|
|
133d63137c | ||
|
|
3686c06238 |
98
README.md
98
README.md
@@ -1,80 +1,43 @@
|
|||||||
# pfetch
|
<p align="center"><img src="https://user-images.githubusercontent.com/6799467/65944518-68834d80-e421-11e9-9b14-6ca26a16108a.png" width="350px"></p>
|
||||||
|
<h1 align="center">pfetch</h1>
|
||||||
|
<p align="center">A pretty system information tool written in POSIX sh</p><br>
|
||||||
|
|
||||||
A pretty system information tool written in POSIX `sh`.
|
<img src="https://user-images.githubusercontent.com/6799467/65945384-5bfff480-e423-11e9-863e-4e7cf16eb648.png" width="40%" align="right">
|
||||||
|
|
||||||
The goal of this project is to implement a simple system information tool in POSIX `sh` using features built into the language itself (*where possible*).
|
The goal of this project is to implement a simple system
|
||||||
|
information tool in POSIX `sh` using features built into
|
||||||
|
the language itself (*where possible*).
|
||||||
|
|
||||||
The source code is highly documented and I hope it will act as a learning resource for POSIX `sh` and simple information detection across various different operating systems.
|
The source code is highly documented and I hope it will
|
||||||
|
act as a learning resource for POSIX `sh` and simple
|
||||||
|
information detection across various different operating
|
||||||
|
systems.
|
||||||
|
|
||||||
If anything in the source code is unclear or is lacking in its explanation, open an issue. Sometimes you get too close to something and you fail to see the "bigger picture"!
|
If anything in the source code is unclear or is lacking
|
||||||
|
in its explanation, open an issue. Sometimes you get too
|
||||||
|
close to something and you fail to see the "bigger
|
||||||
|
picture"!
|
||||||
|
|
||||||
```sh
|
<br>
|
||||||
➜ pfetch
|
<br>
|
||||||
___ goldie@KISS
|
<br>
|
||||||
(.· | os KISS Linux
|
<br>
|
||||||
(<> | host Lenovo YOGA 900-13ISK
|
|
||||||
/ __ \ kernel 5.3.1-coffee
|
|
||||||
( / \ /| uptime 6h 20m
|
|
||||||
_/\ __)/_) pkgs 130
|
|
||||||
\/-____\/ memory 1721M / 7942M
|
|
||||||
```
|
|
||||||
|
|
||||||
## OS support
|
## OS support
|
||||||
|
|
||||||
|
- **Linux**
|
||||||
|
- Alpine Linux, Arch Linux, Arco Linux, Artix Linux, CentOS, Debian, Elementary, Fedora, Gentoo, Guix, Hyperbola, KISS Linux, Linux Lite, Linux Mint, Mageia, Manjaro, MX Linux, NixOS, OpenSUSE, Parabola, Pop!\_OS, PureOS, Slackware, Ubuntu and Void Linux.
|
||||||
|
- All other distributions are supported with a generic penguin logo.
|
||||||
|
- **Android**
|
||||||
|
- **BSD**
|
||||||
|
- DragonflyBSD, FreeBSD, NetBSD and OpenBSD.
|
||||||
|
- **Windows**
|
||||||
|
- Windows subsystem for Linux.
|
||||||
- **Haiku**
|
- **Haiku**
|
||||||
- **MacOS**
|
- **MacOS**
|
||||||
- **Minix**
|
- **Minix**
|
||||||
- **Solaris**
|
- **Solaris**
|
||||||
- **BSD**
|
- **IRIX**
|
||||||
- DragonflyBSD
|
|
||||||
- FreeBSD
|
|
||||||
- NetBSD
|
|
||||||
- OpenBSD
|
|
||||||
- **Windows**
|
|
||||||
- Windows subsystem for Linux.
|
|
||||||
- **Linux**
|
|
||||||
- Alpine Linux
|
|
||||||
- Arch Linux
|
|
||||||
- Arco Linux
|
|
||||||
- Artix Linux
|
|
||||||
- CentOS
|
|
||||||
- Debian
|
|
||||||
- Elementary
|
|
||||||
- Fedora
|
|
||||||
- Gentoo
|
|
||||||
- Guix
|
|
||||||
- Hyperbola
|
|
||||||
- KISS Linux
|
|
||||||
- Linux Lite
|
|
||||||
- Linux Mint
|
|
||||||
- Mageia
|
|
||||||
- Manjaro
|
|
||||||
- MX Linux
|
|
||||||
- NixOS
|
|
||||||
- OpenSUSE
|
|
||||||
- Parabola
|
|
||||||
- Pop!\_OS
|
|
||||||
- PureOS
|
|
||||||
- Slackware
|
|
||||||
- Ubuntu
|
|
||||||
- Void Linux
|
|
||||||
- Other distributions are supported with a generic penguin logo.
|
|
||||||
|
|
||||||
## TODO
|
|
||||||
|
|
||||||
- [ ] Add optional and additional information detection.
|
|
||||||
- [ ] Terminal Emulator ([#12](https://github.com/dylanaraps/pfetch/pull/12))
|
|
||||||
- The way I implement this in `neofetch` is interesting.
|
|
||||||
- [ ] Expand operating system support.
|
|
||||||
- [ ] Android
|
|
||||||
- [ ] iOS
|
|
||||||
- [ ] AIX ([#7](https://github.com/dylanaraps/pfetch/issues/7))
|
|
||||||
- [ ] IRIX ([#8](https://github.com/dylanaraps/pfetch/issues/8))
|
|
||||||
- [ ] FreeMiNT ([#9](https://github.com/dylanaraps/pfetch/issues/9))
|
|
||||||
- [ ] Windows ([#10](https://github.com/dylanaraps/pfetch/issues/10))
|
|
||||||
- [ ] CYGWIN
|
|
||||||
- [ ] MSYS
|
|
||||||
- [ ] MINGW
|
|
||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
@@ -95,6 +58,11 @@ PF_INFO="ascii"
|
|||||||
# Example: Only Information.
|
# Example: Only Information.
|
||||||
PF_INFO="title os host kernel uptime pkgs memory"
|
PF_INFO="title os host kernel uptime pkgs memory"
|
||||||
|
|
||||||
|
# A file to source before running pfetch.
|
||||||
|
# Default: unset
|
||||||
|
# Valid: A shell script
|
||||||
|
PF_SOURCE=""
|
||||||
|
|
||||||
# Separator between info name and info data.
|
# Separator between info name and info data.
|
||||||
# Default: unset
|
# Default: unset
|
||||||
# Valid: string
|
# Valid: string
|
||||||
|
|||||||
573
pfetch
573
pfetch
@@ -83,7 +83,7 @@ log() {
|
|||||||
printf '[3%s;1m%s[m' "${PF_COL1-4}" "$name"
|
printf '[3%s;1m%s[m' "${PF_COL1-4}" "$name"
|
||||||
|
|
||||||
# Print the info name and info data separator.
|
# Print the info name and info data separator.
|
||||||
printf '%s' "$PF_SEP"
|
printf %s "$PF_SEP"
|
||||||
|
|
||||||
# Move the cursor backward the length of the *current* info name and
|
# Move the cursor backward the length of the *current* info name and
|
||||||
# then move it forwards the length of the *longest* info name. This
|
# then move it forwards the length of the *longest* info name. This
|
||||||
@@ -129,9 +129,9 @@ get_os() {
|
|||||||
|
|
||||||
case $os in
|
case $os in
|
||||||
Linux*)
|
Linux*)
|
||||||
# Some Linux disttributions (which are based on others)
|
# Some Linux distributions (which are based on others)
|
||||||
# fail to identify as they **do not** change the upstream
|
# fail to identify as they **do not** change the upstream
|
||||||
# distributions identification packages or files.
|
# distribution's identification packages or files.
|
||||||
#
|
#
|
||||||
# It is senseless to add a special case in the code for
|
# It is senseless to add a special case in the code for
|
||||||
# each and every distribution (which _is_ technically no
|
# each and every distribution (which _is_ technically no
|
||||||
@@ -154,6 +154,12 @@ get_os() {
|
|||||||
if command -v lsb_release; then
|
if command -v lsb_release; then
|
||||||
distro=$(lsb_release -sd)
|
distro=$(lsb_release -sd)
|
||||||
|
|
||||||
|
# Android detection works by checking for the existence of
|
||||||
|
# the follow two directories. I don't think there's a simpler
|
||||||
|
# method than this.
|
||||||
|
elif [ -d /system/app ] && [ -d /system/priv-app ]; then
|
||||||
|
distro="Android $(getprop ro.build.version.release)"
|
||||||
|
|
||||||
else
|
else
|
||||||
# This used to be a simple '. /etc/os-release' but I believe
|
# This used to be a simple '. /etc/os-release' but I believe
|
||||||
# this is insecure as we blindly executed whatever was in the
|
# this is insecure as we blindly executed whatever was in the
|
||||||
@@ -176,6 +182,13 @@ get_os() {
|
|||||||
command -v crux && distro=$(crux)
|
command -v crux && distro=$(crux)
|
||||||
command -v guix && distro='Guix System'
|
command -v guix && distro='Guix System'
|
||||||
|
|
||||||
|
# Check to see if we're running Bedrock Linux which is
|
||||||
|
# very unique. This simply checks to see if the user's
|
||||||
|
# PATH contais a Bedrock specific value.
|
||||||
|
case $PATH in
|
||||||
|
*/bedrock/cross/*) distro='Bedrock Linux'
|
||||||
|
esac
|
||||||
|
|
||||||
# Check to see if Linux is running in Windows 10 under
|
# Check to see if Linux is running in Windows 10 under
|
||||||
# WSL1 (Windows subsystem for Linux [version 1]) and
|
# WSL1 (Windows subsystem for Linux [version 1]) and
|
||||||
# append a string accordingly.
|
# append a string accordingly.
|
||||||
@@ -273,13 +286,13 @@ get_kernel() {
|
|||||||
case $os in
|
case $os in
|
||||||
# Don't print kernel output on some systems as the
|
# Don't print kernel output on some systems as the
|
||||||
# OS name includes it.
|
# OS name includes it.
|
||||||
*BSD*|Haiku|Minix) ;;
|
*BSD*|Haiku|Minix)
|
||||||
|
return
|
||||||
*)
|
|
||||||
# '$kernel' is the cached output of 'uname -r'.
|
|
||||||
log kernel "$kernel" >&6
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# '$kernel' is the cached output of 'uname -r'.
|
||||||
|
log kernel "$kernel" >&6
|
||||||
}
|
}
|
||||||
|
|
||||||
get_host() {
|
get_host() {
|
||||||
@@ -304,7 +317,7 @@ get_host() {
|
|||||||
machdep.dmi.system-product)
|
machdep.dmi.system-product)
|
||||||
;;
|
;;
|
||||||
|
|
||||||
*BSD*)
|
*BSD*|Minix)
|
||||||
host=$(sysctl -n hw.vendor hw.product)
|
host=$(sysctl -n hw.vendor hw.product)
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -337,9 +350,9 @@ get_host() {
|
|||||||
# found in the "blacklist" below. Only non-matches are appended
|
# found in the "blacklist" below. Only non-matches are appended
|
||||||
# to the final host string.
|
# to the final host string.
|
||||||
case $word in
|
case $word in
|
||||||
To | [Bb]e | [Ff]illed | by | O.E.M. | OEM |\
|
To | [Bb]e | [Ff]illed | [Bb]y | O.E.M. | OEM |\
|
||||||
Not | Applicable | Specified | System | Product | Name |\
|
Not | Applicable | Specified | System | Product | Name |\
|
||||||
Version | Undefined | Default | string | INVALID | <20> )
|
Version | Undefined | Default | string | INVALID | <20> | os )
|
||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -391,6 +404,25 @@ get_uptime() {
|
|||||||
$(kstat -p unix:0:system_misc:snaptime)
|
$(kstat -p unix:0:system_misc:snaptime)
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
IRIX)
|
||||||
|
# Grab the uptime in a pretty format. Usually,
|
||||||
|
# 00:00:00 from the 'ps' command.
|
||||||
|
t=$(LC_ALL=POSIX ps -o etime= -p 1)
|
||||||
|
|
||||||
|
# Split the pretty output into days or hours
|
||||||
|
# based on the uptime.
|
||||||
|
case $t in
|
||||||
|
*-*) d=${t%%-*} t=${t#*-} ;;
|
||||||
|
*:*:*) h=${t%%:*} t=${t#*:} ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
h=${h#0} t=${t#0}
|
||||||
|
|
||||||
|
# Convert the split pretty fields back into
|
||||||
|
# seconds so we may re-convert them to our format.
|
||||||
|
s=$((${d:-0}*86400 + ${h:-0}*3600 + ${t%%:*}*60 + ${t#*:}))
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Convert the uptime from seconds into days, hours and minutes.
|
# Convert the uptime from seconds into days, hours and minutes.
|
||||||
@@ -432,18 +464,21 @@ get_pkgs() {
|
|||||||
Linux*)
|
Linux*)
|
||||||
# Commands which print packages one per line.
|
# Commands which print packages one per line.
|
||||||
has bonsai && bonsai list
|
has bonsai && bonsai list
|
||||||
|
has crux && pkginfo -i
|
||||||
has pacman-key && pacman -Qq
|
has pacman-key && pacman -Qq
|
||||||
has dpkg && dpkg-query -f '.\n' -W
|
has dpkg && dpkg-query -f '.\n' -W
|
||||||
has rpm && rpm -qa
|
has rpm && rpm -qa
|
||||||
has xbps-query && xbps-query -l
|
has xbps-query && xbps-query -l
|
||||||
has apk && apk info
|
has apk && apk info
|
||||||
has guix && guix package --list-installed
|
has guix && guix package --list-installed
|
||||||
|
has opkg && opkg list-installed
|
||||||
|
|
||||||
# Directories containing packages.
|
# Directories containing packages.
|
||||||
has kiss && printf '%s\n' /var/db/kiss/installed/*/
|
has kiss && printf '%s\n' /var/db/kiss/installed/*/
|
||||||
has brew && printf '%s\n' "$(brew --cellar)/"*
|
has brew && printf '%s\n' "$(brew --cellar)/"*
|
||||||
has emerge && printf '%s\n' /var/db/pkg/*/*/
|
has emerge && printf '%s\n' /var/db/pkg/*/*/
|
||||||
has pkgtool && printf '%s\n' /var/log/packages/*
|
has pkgtool && printf '%s\n' /var/log/packages/*
|
||||||
|
has eopkg && printf '%s\n' /var/lib/eopkg/package/*
|
||||||
|
|
||||||
# 'nix' requires two commands.
|
# 'nix' requires two commands.
|
||||||
has nix-store && {
|
has nix-store && {
|
||||||
@@ -455,10 +490,24 @@ get_pkgs() {
|
|||||||
Darwin*)
|
Darwin*)
|
||||||
# Commands which print packages one per line.
|
# Commands which print packages one per line.
|
||||||
has pkgin && pkgin list
|
has pkgin && pkgin list
|
||||||
has port && port installed
|
|
||||||
|
|
||||||
# Directories containing packages.
|
# Directories containing packages.
|
||||||
has brew && printf '%s\n' /usr/local/Cellar/*
|
has brew && printf '%s\n' /usr/local/Cellar/*
|
||||||
|
|
||||||
|
# 'port' prints a single line of output to 'stdout'
|
||||||
|
# when no packages are installed and exits with
|
||||||
|
# success causing a false-positive of 1 package
|
||||||
|
# installed.
|
||||||
|
#
|
||||||
|
# 'port' should really exit with a non-zero code
|
||||||
|
# in this case to allow scripts to cleanly handle
|
||||||
|
# this behavior.
|
||||||
|
has port && {
|
||||||
|
pkg_list=$(port installed)
|
||||||
|
|
||||||
|
[ "$pkg_list" = "No ports are installed." ] ||
|
||||||
|
printf '%s\n' "$pkg_list"
|
||||||
|
}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
FreeBSD*|DragonFly*)
|
FreeBSD*|DragonFly*)
|
||||||
@@ -485,10 +534,20 @@ get_pkgs() {
|
|||||||
has pkginfo && pkginfo -i
|
has pkginfo && pkginfo -i
|
||||||
has pkg && pkg list
|
has pkg && pkg list
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
IRIX)
|
||||||
|
versions -b
|
||||||
|
;;
|
||||||
esac | wc -l
|
esac | wc -l
|
||||||
`
|
`
|
||||||
|
|
||||||
log pkgs "${packages:-?}" >&6
|
case $os in
|
||||||
|
# IRIX's package manager adds 3 lines of extra
|
||||||
|
# output which we must account for here.
|
||||||
|
IRIX) packages=$((packages - 3)) ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ "$packages" -gt 1 ] && log pkgs "$packages" >&6
|
||||||
}
|
}
|
||||||
|
|
||||||
get_memory() {
|
get_memory() {
|
||||||
@@ -531,7 +590,7 @@ get_memory() {
|
|||||||
# split is used on '.' to filter it out.
|
# split is used on '.' to filter it out.
|
||||||
while IFS=:. read -r key val; do
|
while IFS=:. read -r key val; do
|
||||||
case $key in
|
case $key in
|
||||||
*wired*|*active*|*occupied*)
|
*' wired'*|*' active'*|*' occupied'*)
|
||||||
mem_used=$((mem_used + ${val:-0}))
|
mem_used=$((mem_used + ${val:-0}))
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -668,6 +727,27 @@ get_memory() {
|
|||||||
mem_free=$((pages_free * hw_pagesize / 1024 / 1024))
|
mem_free=$((pages_free * hw_pagesize / 1024 / 1024))
|
||||||
mem_used=$((mem_full - mem_free))
|
mem_used=$((mem_full - mem_free))
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
IRIX)
|
||||||
|
# Read the memory information from the 'top' command. Parse
|
||||||
|
# and split each line until we reach the line starting with
|
||||||
|
# "Memory".
|
||||||
|
#
|
||||||
|
# Example output: Memory: 160M max, 147M avail, .....
|
||||||
|
while IFS=' :' read -r label mem_full _ mem_free _; do
|
||||||
|
case $label in
|
||||||
|
Memory)
|
||||||
|
mem_full=${mem_full%M}
|
||||||
|
mem_free=${mem_free%M}
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done <<-EOF
|
||||||
|
$(top -n)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
mem_used=$((mem_full - mem_free))
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
log memory "${mem_used:-?}M / ${mem_full:-?}M" >&6
|
log memory "${mem_used:-?}M / ${mem_full:-?}M" >&6
|
||||||
@@ -688,7 +768,7 @@ get_wm() {
|
|||||||
# atom..
|
# atom..
|
||||||
#
|
#
|
||||||
# List of window managers which fail to set the name atom:
|
# List of window managers which fail to set the name atom:
|
||||||
# catwm, fvwm, dwm, 2bwm and monster.
|
# catwm, fvwm, dwm, 2bwm, monster, wmaker and sowm [mine! ;)].
|
||||||
#
|
#
|
||||||
# The final downside to this approach is that it does _not_
|
# The final downside to this approach is that it does _not_
|
||||||
# support Wayland environments. The only solution which supports
|
# support Wayland environments. The only solution which supports
|
||||||
@@ -751,8 +831,50 @@ get_wm() {
|
|||||||
# To extract the name, everything before '_NET_WM_NAME = \"'
|
# To extract the name, everything before '_NET_WM_NAME = \"'
|
||||||
# is removed and everything after the next '"' is removed.
|
# is removed and everything after the next '"' is removed.
|
||||||
wm=$(xprop -id "$id" -notype -len 25 -f _NET_WM_NAME 8t)
|
wm=$(xprop -id "$id" -notype -len 25 -f _NET_WM_NAME 8t)
|
||||||
|
|
||||||
|
# Handle cases of a window manager _not_ populating the
|
||||||
|
# '_NET_WM_NAME' atom. Display nothing in this case.
|
||||||
|
case $wm in
|
||||||
|
*'_NET_WM_NAME = '*)
|
||||||
wm=${wm##*_NET_WM_NAME = \"}
|
wm=${wm##*_NET_WM_NAME = \"}
|
||||||
wm=${wm%%\"*}
|
wm=${wm%%\"*}
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
# Fallback to checking the process list
|
||||||
|
# for the select few window managers which
|
||||||
|
# don't set '_NET_WM_NAME'.
|
||||||
|
#
|
||||||
|
# TODO: This is currently limited to 'grep'
|
||||||
|
# implementations providing the '-o'
|
||||||
|
# flag. This needs to be replaced with
|
||||||
|
# a command which searches for a list
|
||||||
|
# of strings and returns _only_ the
|
||||||
|
# first match's contents (also ensuring
|
||||||
|
# the search itself isn't matched).
|
||||||
|
#
|
||||||
|
# A generic parser isn't possible as
|
||||||
|
# the output of 'ps' is _not_ the same
|
||||||
|
# between implementations and across
|
||||||
|
# operating systems.
|
||||||
|
#
|
||||||
|
# The simple search method above works
|
||||||
|
# regardless of 'ps' implementation.
|
||||||
|
#
|
||||||
|
# Disable the shellcheck warning about using
|
||||||
|
# 'pgrep' instead of 'ps | grep' as 'pgrep'
|
||||||
|
# is not always available.
|
||||||
|
# shellcheck disable=2009
|
||||||
|
wm=$(ps x | grep -o \
|
||||||
|
-e '[c]atwm' \
|
||||||
|
-e '[f]vwm' \
|
||||||
|
-e '[d]wm' \
|
||||||
|
-e '[2]bwm' \
|
||||||
|
-e '[m]onsterwm' \
|
||||||
|
-e '[w]maker' \
|
||||||
|
-e '[s]owm')
|
||||||
|
;;
|
||||||
|
esac
|
||||||
}
|
}
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
@@ -789,12 +911,12 @@ get_palette() {
|
|||||||
#
|
#
|
||||||
# This allows us to save hardcoding a second set of sequences
|
# This allows us to save hardcoding a second set of sequences
|
||||||
# for background colors.
|
# for background colors.
|
||||||
palette=" [7m$c1 $c2 $c3 $c4 $c5 $c6 $c7 "
|
palette="[7m$c1 $c1 $c2 $c2 $c3 $c3 $c4 $c4 $c5 $c5 $c6 $c6 [m"
|
||||||
|
|
||||||
# Print the palette with a newline before and after.
|
# Print the palette with a new-line before and afterwards.
|
||||||
# The '\033[%sC' moves the text to the right, the
|
printf '\n' >&6
|
||||||
# length of the ascii art.
|
log "$palette
|
||||||
printf '\n[%sC%s[m\n' "${ascii_width-1}" "$palette" >&6
|
" " " >&6
|
||||||
}
|
}
|
||||||
|
|
||||||
get_ascii() {
|
get_ascii() {
|
||||||
@@ -841,54 +963,63 @@ get_ascii() {
|
|||||||
/${c7}/ ${c4}\\ \\
|
/${c7}/ ${c4}\\ \\
|
||||||
/${c7}// ${c4}\\ \\
|
/${c7}// ${c4}\\ \\
|
||||||
${c7}// ${c4}\\ \\
|
${c7}// ${c4}\\ \\
|
||||||
\\
|
${c4}\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Aa]ndroid*)
|
[Aa]ndroid*)
|
||||||
read_ascii 2 <<-EOF
|
read_ascii 2 <<-EOF
|
||||||
${c2} ;, ,;
|
${c2} ;, ,;
|
||||||
';,.-----.,;'
|
${c2} ';,.-----.,;'
|
||||||
,' ',
|
${c2} ,' ',
|
||||||
/ O O \\
|
${c2} / O O \\
|
||||||
| |
|
${c2}| |
|
||||||
'-----------------'
|
${c2}'-----------------'
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Aa]rch*)
|
[Aa]rch*)
|
||||||
read_ascii 4 <<-EOF
|
read_ascii 4 <<-EOF
|
||||||
${c6} /\\
|
${c6} /\\
|
||||||
/^^\\
|
${c6} / \\
|
||||||
/\\ \\
|
${c6} /\\ \\
|
||||||
/${c7} __ \\
|
${c4} / \\
|
||||||
/ ( ) \\
|
${c4} / ,, \\
|
||||||
/ __| |__\\\\
|
${c4} / | | -\\
|
||||||
/// \\\\\\
|
${c4} /_-'' ''-_\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Aa]rco*)
|
[Aa]rco*)
|
||||||
read_ascii 4 <<-EOF
|
read_ascii 4 <<-EOF
|
||||||
${c4} /\\
|
${c4} /\\
|
||||||
/ \\
|
${c4} / \\
|
||||||
/ /\\ \\
|
${c4} / /\\ \\
|
||||||
/ / \\ \\
|
${c4} / / \\ \\
|
||||||
/ / \\ \\
|
${c4} / / \\ \\
|
||||||
/ / _____\\ \\
|
${c4} / / _____\\ \\
|
||||||
/_/ \`----.\\_\\
|
${c4}/_/ \`----.\\_\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Aa]rtix*)
|
[Aa]rtix*)
|
||||||
read_ascii 6 <<-EOF
|
read_ascii 6 <<-EOF
|
||||||
${c4} /\\
|
${c4} /\\
|
||||||
/ \\
|
${c4} / \\
|
||||||
/\`'.,\\
|
${c4} /\`'.,\\
|
||||||
/ ',
|
${c4} / ',
|
||||||
/ ,\`\\
|
${c4} / ,\`\\
|
||||||
/ ,.'\`. \\
|
${c4} / ,.'\`. \\
|
||||||
/.,'\` \`'.\\
|
${c4}/.,'\` \`'.\\
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
|
[Bb]edrock*)
|
||||||
|
read_ascii 4 <<-EOF
|
||||||
|
${c7}__
|
||||||
|
${c7}\\ \\___
|
||||||
|
${c7} \\ _ \\
|
||||||
|
${c7} \\___/
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -907,11 +1038,11 @@ get_ascii() {
|
|||||||
[Dd]ebian*)
|
[Dd]ebian*)
|
||||||
read_ascii 1 <<-EOF
|
read_ascii 1 <<-EOF
|
||||||
${c1} _____
|
${c1} _____
|
||||||
/ __ \\
|
${c1} / __ \\
|
||||||
| / |
|
${c1}| / |
|
||||||
| \\___-
|
${c1}| \\___-
|
||||||
-_
|
${c1}-_
|
||||||
--_
|
${c1} --_
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -922,19 +1053,30 @@ get_ascii() {
|
|||||||
>--${c1}|${c7}--<
|
>--${c1}|${c7}--<
|
||||||
(_-'${c1}|${c7}'-_)
|
(_-'${c1}|${c7}'-_)
|
||||||
${c1}|
|
${c1}|
|
||||||
|
|
${c1}|
|
||||||
|
|
${c1}|
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Ee]lementary*)
|
[Ee]lementary*)
|
||||||
read_ascii <<-EOF
|
read_ascii <<-EOF
|
||||||
${c7} _______
|
${c7} _______
|
||||||
/ ____ \\
|
${c7} / ____ \\
|
||||||
/ | / /\\
|
${c7}/ | / /\\
|
||||||
|__\\ / / |
|
${c7}|__\\ / / |
|
||||||
\\ /__/ /
|
${c7}\\ /__/ /
|
||||||
\\_______/
|
${c7}\\_______/
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
|
[Ee]ndeavour*)
|
||||||
|
read_ascii 4 <<-EOF
|
||||||
|
${c1}/${c4}\\
|
||||||
|
${c1}/${c4}/ \\${c6}\\
|
||||||
|
${c1}/${c4}/ \\ ${c6}\\
|
||||||
|
${c1}/ ${c4}/ _) ${c6})
|
||||||
|
${c1}/_${c4}/___-- ${c6}__-
|
||||||
|
${c6}/____--
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -953,73 +1095,84 @@ get_ascii() {
|
|||||||
|
|
||||||
[Ff]ree[Bb][Ss][Dd]*)
|
[Ff]ree[Bb][Ss][Dd]*)
|
||||||
read_ascii 1 <<-EOF
|
read_ascii 1 <<-EOF
|
||||||
${c1} /\\ _____ /\\
|
${c1}/\\,-'''''-,/\\
|
||||||
\\_) (_/
|
${c1}\\_) (_/
|
||||||
/ \\
|
${c1}| |
|
||||||
| |
|
${c1}| |
|
||||||
| |
|
${c1}; ;
|
||||||
\ /
|
${c1}'-_____-'
|
||||||
--_____--
|
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Gg]entoo*)
|
[Gg]entoo*)
|
||||||
read_ascii 5 <<-EOF
|
read_ascii 5 <<-EOF
|
||||||
${c5} _-----_
|
${c5} _-----_
|
||||||
( \\
|
${c5}( \\
|
||||||
\\ 0 \\
|
${c5}\\ 0 \\
|
||||||
${c7} \\ )
|
${c7} \\ )
|
||||||
/ _/
|
${c7} / _/
|
||||||
( _-
|
${c7}( _-
|
||||||
\\____-
|
${c7}\\____-
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Gg]uix[Ss][Dd]*|guix*)
|
[Gg]uix[Ss][Dd]*|[Gg]uix*)
|
||||||
read_ascii 3 <<-EOF
|
read_ascii 3 <<-EOF
|
||||||
${c3}|.__ __.|
|
${c3}|.__ __.|
|
||||||
|__ \\ / __|
|
${c3}|__ \\ / __|
|
||||||
\\ \\ / /
|
${c3}\\ \\ / /
|
||||||
\\ \\ / /
|
${c3}\\ \\ / /
|
||||||
\\ \\ / /
|
${c3}\\ \\ / /
|
||||||
\\ \\/ /
|
${c3}\\ \\/ /
|
||||||
\\__/
|
${c3}\\__/
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Hh]aiku*)
|
[Hh]aiku*)
|
||||||
read_ascii 3 <<-EOF
|
read_ascii 3 <<-EOF
|
||||||
${c3} ,^,
|
${c3} ,^,
|
||||||
/ \\
|
${c3} / \\
|
||||||
*--_ ; ; _--*
|
${c3}*--_ ; ; _--*
|
||||||
\\ '" "' /
|
${c3}\\ '" "' /
|
||||||
'. .'
|
${c3}'. .'
|
||||||
.-'" "'-.
|
${c3}.-'" "'-.
|
||||||
'-.__. .__.-'
|
${c3}'-.__. .__.-'
|
||||||
|_|
|
${c3}|_|
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Hh]yperbola*)
|
[Hh]yperbola*)
|
||||||
read_ascii <<-EOF
|
read_ascii <<-EOF
|
||||||
${c7} |\`__.\`/
|
${c7} |\`__.\`/
|
||||||
\____/
|
${c7} \____/
|
||||||
.--.
|
${c7} .--.
|
||||||
/ \\
|
${c7} / \\
|
||||||
/ ___ \\
|
${c7} / ___ \\
|
||||||
/ .\` \`.\\
|
${c7}/ .\` \`.\\
|
||||||
/.\` \`.\\
|
${c7}/.\` \`.\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Ll]inux*[Ll]ite*)
|
[Ii][Rr][Ii][Xx]*)
|
||||||
|
read_ascii 1 <<-EOF
|
||||||
|
${c1} __
|
||||||
|
${c1} \\ \\ __
|
||||||
|
${c1} \\ \\ / /
|
||||||
|
${c1} \\ v /
|
||||||
|
${c1} / . \\
|
||||||
|
${c1} /_/ \\ \\
|
||||||
|
${c1} \\_\\
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
|
[Ll]inux*[Ll]ite*|[Ll]ite*)
|
||||||
read_ascii 3 <<-EOF
|
read_ascii 3 <<-EOF
|
||||||
${c3} /\\
|
${c3} /\\
|
||||||
/ \\
|
${c3} / \\
|
||||||
/ ${c7}/ ${c3}/
|
${c3} / ${c7}/ ${c3}/
|
||||||
> ${c7}/ ${c3}/
|
${c3}> ${c7}/ ${c3}/
|
||||||
\\ ${c7}\\ ${c3}\\
|
${c3}\\ ${c7}\\ ${c3}\\
|
||||||
\\_${c7}\\${c3}_\\
|
${c3}\\_${c7}\\${c3}_\\
|
||||||
${c7} \\
|
${c7} \\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
@@ -1027,12 +1180,12 @@ get_ascii() {
|
|||||||
[Ll]inux*[Mm]int*|[Mm]int)
|
[Ll]inux*[Mm]int*|[Mm]int)
|
||||||
read_ascii 2 <<-EOF
|
read_ascii 2 <<-EOF
|
||||||
${c2} ___________
|
${c2} ___________
|
||||||
|_ \\
|
${c2}|_ \\
|
||||||
| ${c7}| _____ ${c2}|
|
${c2}| ${c7}| _____ ${c2}|
|
||||||
| ${c7}| | | | ${c2}|
|
${c2}| ${c7}| | | | ${c2}|
|
||||||
| ${c7}| | | | ${c2}|
|
${c2}| ${c7}| | | | ${c2}|
|
||||||
| ${c7}\\__${c7}___/ ${c2}|
|
${c2}| ${c7}\\__${c7}___/ ${c2}|
|
||||||
\\_________/
|
${c2}\\_________/
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -1040,10 +1193,10 @@ get_ascii() {
|
|||||||
[Ll]inux*)
|
[Ll]inux*)
|
||||||
read_ascii 4 <<-EOF
|
read_ascii 4 <<-EOF
|
||||||
${c4} ___
|
${c4} ___
|
||||||
(${c7}.· ${c4}|
|
${c4}(${c7}.. ${c4}|
|
||||||
(${c5}<> ${c4}|
|
${c4}(${c5}<> ${c4}|
|
||||||
/ ${c7}__ ${c4}\\
|
${c4}/ ${c7}__ ${c4}\\
|
||||||
( ${c7}/ \\ ${c4}/|
|
${c4}( ${c7}/ \\ ${c4}/|
|
||||||
${c5}_${c4}/\\ ${c7}__)${c4}/${c5}_${c4})
|
${c5}_${c4}/\\ ${c7}__)${c4}/${c5}_${c4})
|
||||||
${c5}\/${c4}-____${c5}\/
|
${c5}\/${c4}-____${c5}\/
|
||||||
EOF
|
EOF
|
||||||
@@ -1052,9 +1205,9 @@ get_ascii() {
|
|||||||
[Mm]ac[Oo][Ss]*|[Dd]arwin*)
|
[Mm]ac[Oo][Ss]*|[Dd]arwin*)
|
||||||
read_ascii 1 <<-EOF
|
read_ascii 1 <<-EOF
|
||||||
${c1} .:'
|
${c1} .:'
|
||||||
_ :'_
|
${c1} _ :'_
|
||||||
${c2} .'\`_\`-'_\`\`.
|
${c2} .'\`_\`-'_\`\`.
|
||||||
:________.-'
|
${c2}:________.-'
|
||||||
${c3}:_______:
|
${c3}:_______:
|
||||||
${c4} :_______\`-;
|
${c4} :_______\`-;
|
||||||
${c5} \`._.-._.'
|
${c5} \`._.-._.'
|
||||||
@@ -1064,49 +1217,49 @@ get_ascii() {
|
|||||||
[Mm]ageia*)
|
[Mm]ageia*)
|
||||||
read_ascii 2 <<-EOF
|
read_ascii 2 <<-EOF
|
||||||
${c6} *
|
${c6} *
|
||||||
*
|
${c6} *
|
||||||
**
|
${c6} **
|
||||||
${c7} /\\__/\\
|
${c7} /\\__/\\
|
||||||
/ \\
|
${c7}/ \\
|
||||||
\\ /
|
${c7}\\ /
|
||||||
\\____/
|
${c7} \\____/
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Mm]anjaro*)
|
[Mm]anjaro*)
|
||||||
read_ascii 2 <<-EOF
|
read_ascii 2 <<-EOF
|
||||||
${c2}||||||||| ||||
|
${c2}||||||||| ||||
|
||||||
||||||||| ||||
|
${c2}||||||||| ||||
|
||||||
|||| ||||
|
${c2}|||| ||||
|
||||||
|||| |||| ||||
|
${c2}|||| |||| ||||
|
||||||
|||| |||| ||||
|
${c2}|||| |||| ||||
|
||||||
|||| |||| ||||
|
${c2}|||| |||| ||||
|
||||||
|||| |||| ||||
|
${c2}|||| |||| ||||
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Mm]inix*)
|
[Mm]inix*)
|
||||||
read_ascii 4 <<-EOF
|
read_ascii 4 <<-EOF
|
||||||
${c4} ,, ,,
|
${c4} ,, ,,
|
||||||
;${c7},${c4} ', ,' ${c7},${c4};
|
${c4};${c7},${c4} ', ,' ${c7},${c4};
|
||||||
; ${c7}',${c4} ',,' ${c7},'${c4} ;
|
${c4}; ${c7}',${c4} ',,' ${c7},'${c4} ;
|
||||||
; ${c7}',${c4} ${c7},'${c4} ;
|
${c4}; ${c7}',${c4} ${c7},'${c4} ;
|
||||||
; ${c7};, '' ,;${c4} ;
|
${c4}; ${c7};, '' ,;${c4} ;
|
||||||
; ${c7};${c4};${c7}',,'${c4};${c7};${c4} ;
|
${c4}; ${c7};${c4};${c7}',,'${c4};${c7};${c4} ;
|
||||||
', ${c7};${c4};; ;;${c7};${c4} ,'
|
${c4}', ${c7};${c4};; ;;${c7};${c4} ,'
|
||||||
'${c7};${c4}' '${c7};${c4}'
|
${c4} '${c7};${c4}' '${c7};${c4}'
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Mm][Xx]*)
|
[Mm][Xx]*)
|
||||||
read_ascii <<-EOF
|
read_ascii <<-EOF
|
||||||
${c7} \\\\ /
|
${c7} \\\\ /
|
||||||
\\\\/
|
${c7} \\\\/
|
||||||
\\\\
|
${c7} \\\\
|
||||||
/\\/ \\\\
|
${c7} /\\/ \\\\
|
||||||
/ \\ /\\
|
${c7} / \\ /\\
|
||||||
/ \\/ \\
|
${c7} / \\/ \\
|
||||||
/__________\\
|
${c7}/__________\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -1117,124 +1270,137 @@ get_ascii() {
|
|||||||
${c7} \\\\ ${c3}\`.____
|
${c7} \\\\ ${c3}\`.____
|
||||||
${c7} \\\\${c3}-______,----\`-
|
${c7} \\\\${c3}-______,----\`-
|
||||||
${c7} \\\\
|
${c7} \\\\
|
||||||
\\\\
|
${c7} \\\\
|
||||||
\\\\
|
${c7} \\\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Nn]ix[Oo][Ss]*)
|
[Nn]ix[Oo][Ss]*)
|
||||||
read_ascii 4 <<-EOF
|
read_ascii 4 <<-EOF
|
||||||
${c4} \\\\ \\\\ //
|
${c4} \\\\ \\\\ //
|
||||||
==\\\\__\\\\/ //
|
${c4} ==\\\\__\\\\/ //
|
||||||
// \\\\//
|
${c4} // \\\\//
|
||||||
==// //==
|
${c4}==// //==
|
||||||
//\\\\___//
|
${c4} //\\\\___//
|
||||||
// /\\\\ \\\\==
|
${c4}// /\\\\ \\\\==
|
||||||
// \\\\ \\\\
|
${c4} // \\\\ \\\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Oo]pen[Bb][Ss][Dd]*)
|
[Oo]pen[Bb][Ss][Dd]*)
|
||||||
read_ascii 3 <<-EOF
|
read_ascii 3 <<-EOF
|
||||||
${c3} _____
|
${c3} _____
|
||||||
\\- -/
|
${c3} \\- -/
|
||||||
\\_/ \\
|
${c3} \\_/ \\
|
||||||
| ${c7}O O${c3} |
|
${c3} | ${c7}O O${c3} |
|
||||||
|_ < ) 3 )
|
${c3} |_ < ) 3 )
|
||||||
/ \\ /
|
${c3} / \\ /
|
||||||
/-_____-\\
|
${c3} /-_____-\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
openSUSE*|open*SUSE*|SUSE*|suse*)
|
[Oo]pen[Ss][Uu][Ss][Ee]*|[Oo]pen*SUSE*|SUSE*|suse*)
|
||||||
read_ascii 2 <<-EOF
|
read_ascii 2 <<-EOF
|
||||||
${c2} _______
|
${c2} _______
|
||||||
__| __ \\
|
${c2}__| __ \\
|
||||||
/ .\\ \\
|
${c2} / .\\ \\
|
||||||
\\__/ |
|
${c2} \\__/ |
|
||||||
_______|
|
${c2} _______|
|
||||||
\\_______
|
${c2} \\_______
|
||||||
__________/
|
${c2}__________/
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
|
[Oo]pen[Ww]rt*)
|
||||||
|
read_ascii 1 <<-EOF
|
||||||
|
${c1} _______
|
||||||
|
${c1}| |.-----.-----.-----.
|
||||||
|
${c1}| - || _ | -__| |
|
||||||
|
${c1}|_______|| __|_____|__|__|
|
||||||
|
${c1} ________|__| __
|
||||||
|
${c1}| | | |.----.| |_
|
||||||
|
${c1}| | | || _|| _|
|
||||||
|
${c1}|________||__| |____|
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Pp]arabola*)
|
[Pp]arabola*)
|
||||||
read_ascii 5 <<-EOF
|
read_ascii 5 <<-EOF
|
||||||
${c5} __ __ __ _
|
${c5} __ __ __ _
|
||||||
.\`_//_//_/ / \`.
|
${c5}.\`_//_//_/ / \`.
|
||||||
/ .\`
|
${c5} / .\`
|
||||||
/ .\`
|
${c5} / .\`
|
||||||
/.\`
|
${c5} /.\`
|
||||||
/\`
|
${c5} /\`
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Pp]op!_[Oo][Ss]*)
|
[Pp]op!_[Oo][Ss]*)
|
||||||
read_ascii 6 <<-EOF
|
read_ascii 6 <<-EOF
|
||||||
${c6}______
|
${c6}______
|
||||||
\\ _ \\ __
|
${c6}\\ _ \\ __
|
||||||
\\ \\ \\ \\ / /
|
${c6}\\ \\ \\ \\ / /
|
||||||
\\ \\_\\ \\ / /
|
${c6}\\ \\_\\ \\ / /
|
||||||
\\ ___\\ /_/
|
${c6}\\ ___\\ /_/
|
||||||
\\ \\ _
|
${c6} \\ \\ _
|
||||||
__\\_\\__(_)_
|
${c6} __\\_\\__(_)_
|
||||||
(___________)
|
${c6}(___________)
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Pp]ure[Oo][Ss]*)
|
[Pp]ure[Oo][Ss]*)
|
||||||
read_ascii <<-EOF
|
read_ascii <<-EOF
|
||||||
${c7} _____________
|
${c7} _____________
|
||||||
| _________ |
|
${c7}| _________ |
|
||||||
| | | |
|
${c7}| | | |
|
||||||
| | | |
|
${c7}| | | |
|
||||||
| |_________| |
|
${c7}| |_________| |
|
||||||
|_____________|
|
${c7}|_____________|
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Ss]lackware*)
|
[Ss]lackware*)
|
||||||
read_ascii 4 <<-EOF
|
read_ascii 4 <<-EOF
|
||||||
${c4} ________
|
${c4} ________
|
||||||
/ ______|
|
${c4} / ______|
|
||||||
| |______
|
${c4} | |______
|
||||||
\\______ \\
|
${c4} \\______ \\
|
||||||
______| |
|
${c4} ______| |
|
||||||
| |________/
|
${c4}| |________/
|
||||||
|____________
|
${c4}|____________
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Ss]un[Oo][Ss])
|
[Ss]un[Oo][Ss]|[Ss]olaris*)
|
||||||
read_ascii 3 <<-EOF
|
read_ascii 3 <<-EOF
|
||||||
${c3} . .; .
|
${c3} . .; .
|
||||||
. :; :: ;: .
|
${c3} . :; :: ;: .
|
||||||
.;. .. .. .;.
|
${c3} .;. .. .. .;.
|
||||||
.. .. .. ..
|
${c3}.. .. .. ..
|
||||||
.;, ,;.
|
${c3} .;, ,;.
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Uu]buntu*)
|
[Uu]buntu*)
|
||||||
read_ascii 3 <<-EOF
|
read_ascii 3 <<-EOF
|
||||||
${c3} _
|
${c3} _
|
||||||
---(_)
|
${c3} ---(_)
|
||||||
_/ --- \\
|
${c3} _/ --- \\
|
||||||
(_) | |
|
${c3}(_) | |
|
||||||
\\ --- _/
|
${c3} \\ --- _/
|
||||||
---(_)
|
${c3} ---(_)
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
[Vv]oid*)
|
[Vv]oid*)
|
||||||
read_ascii 2 <<-EOF
|
read_ascii 2 <<-EOF
|
||||||
${c2} _______
|
${c2} _______
|
||||||
_ \\______ -
|
${c2} _ \\______ -
|
||||||
| \\ ___ \\ |
|
${c2}| \\ ___ \\ |
|
||||||
| | / \ | |
|
${c2}| | / \ | |
|
||||||
| | \___/ | |
|
${c2}| | \___/ | |
|
||||||
| \\______ \\_|
|
${c2}| \\______ \\_|
|
||||||
-_______\\
|
${c2} -_______\\
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -1297,6 +1463,16 @@ main() {
|
|||||||
# This gives full control over what it displayed on the screen.
|
# This gives full control over what it displayed on the screen.
|
||||||
exec 6>&1 >/dev/null
|
exec 6>&1 >/dev/null
|
||||||
|
|
||||||
|
# Allow the user to execute their own script and modify or
|
||||||
|
# extend pfetch's behavior.
|
||||||
|
# shellcheck source=/dev/null
|
||||||
|
. "${PF_SOURCE:-/dev/null}" ||:
|
||||||
|
|
||||||
|
# Ensure that the 'TMPDIR' is writable as heredocs use it and
|
||||||
|
# fail without the write permission. This was found to be the
|
||||||
|
# case on Android where the temporary directory requires root.
|
||||||
|
[ -w "${TMPDIR:-/tmp}" ] || export TMPDIR=~
|
||||||
|
|
||||||
# Generic color list.
|
# Generic color list.
|
||||||
# Disable warning about unused variables.
|
# Disable warning about unused variables.
|
||||||
# shellcheck disable=2034
|
# shellcheck disable=2034
|
||||||
@@ -1307,9 +1483,7 @@ main() {
|
|||||||
c7='[37m'; c8='[38m'
|
c7='[37m'; c8='[38m'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Avoid text-wrapping from wrecking the program output
|
# Avoid text-wrapping from wrecking the program output.
|
||||||
# and hide the cursor to hide its moving around during
|
|
||||||
# the printing process.
|
|
||||||
#
|
#
|
||||||
# Some terminals don't support these sequences, nor do they
|
# Some terminals don't support these sequences, nor do they
|
||||||
# silently conceal them if they're printed resulting in
|
# silently conceal them if they're printed resulting in
|
||||||
@@ -1317,14 +1491,11 @@ main() {
|
|||||||
[ "$TERM" = dumb ] ||
|
[ "$TERM" = dumb ] ||
|
||||||
[ "$TERM" = minix ] ||
|
[ "$TERM" = minix ] ||
|
||||||
[ "$TERM" = cons25 ] || {
|
[ "$TERM" = cons25 ] || {
|
||||||
# '[?7l': Disable line-wrapping.
|
# Disable line-wrapping.
|
||||||
# '[?25l': Hide the cursor.
|
printf '[?7l' >&6
|
||||||
printf '[?7l[?25l' >&6
|
|
||||||
|
|
||||||
# Leave the terminal how we found it on exit or Ctrl+C.
|
# Enable line-wrapping again on exit.
|
||||||
# '[?7h': Enable line-wrapping.
|
trap 'printf [?7h >&6' EXIT
|
||||||
# '[?25h': Show the cursor.
|
|
||||||
trap 'printf [?7h[?25h >&6' EXIT
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Store the output of 'uname' to avoid calling it multiple times
|
# Store the output of 'uname' to avoid calling it multiple times
|
||||||
@@ -1372,7 +1543,7 @@ main() {
|
|||||||
# N lines.
|
# N lines.
|
||||||
#
|
#
|
||||||
# This was a ternary operation but they aren't supported in Minix's shell.
|
# This was a ternary operation but they aren't supported in Minix's shell.
|
||||||
[ "$info_height" -lt "$ascii_height" ] &&
|
[ "${info_height:-0}" -lt "${ascii_height:-0}" ] &&
|
||||||
cursor_pos=$((ascii_height - info_height))
|
cursor_pos=$((ascii_height - info_height))
|
||||||
|
|
||||||
# Print '$cursor_pos' amount of newlines to correctly position the
|
# Print '$cursor_pos' amount of newlines to correctly position the
|
||||||
|
|||||||
Reference in New Issue
Block a user