Windows & Cygwin support
This commit is contained in:
parent
a906ff8968
commit
52d742e768
168
pfetch
168
pfetch
|
@ -2,6 +2,8 @@
|
||||||
#
|
#
|
||||||
# pfetch - Simple POSIX sh fetch script.
|
# pfetch - Simple POSIX sh fetch script.
|
||||||
|
|
||||||
|
#PF_ASCII="arch"
|
||||||
|
|
||||||
# Wrapper around all escape sequences used by pfetch to allow for
|
# Wrapper around all escape sequences used by pfetch to allow for
|
||||||
# greater control over which sequences are used (if any at all).
|
# greater control over which sequences are used (if any at all).
|
||||||
esc() {
|
esc() {
|
||||||
|
@ -292,7 +294,23 @@ get_os() {
|
||||||
distro="$distro on Windows 10 [WSL1]"
|
distro="$distro on Windows 10 [WSL1]"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
(MSYS*|MINGW*)
|
||||||
|
# Grab everything after the first instance of
|
||||||
|
# white-space in the command output of 'wmic'.
|
||||||
|
#
|
||||||
|
# The format of 'wmic' is as follows:
|
||||||
|
# Caption=Microsoft Windows 7 Enterprise
|
||||||
|
#
|
||||||
|
# This extracts: ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
read -r _ distro <<-EOF
|
||||||
|
$(wmic os get Caption | head -n 2 | tail -n +2)
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
(CYGWIN*)
|
||||||
|
# Save Cygwin ouput for OS using uname.
|
||||||
|
#
|
||||||
|
distro="$(uname -o)"
|
||||||
|
;;
|
||||||
(Darwin*)
|
(Darwin*)
|
||||||
# Parse the SystemVersion.plist file to grab the macOS
|
# Parse the SystemVersion.plist file to grab the macOS
|
||||||
# version. The file is in the following format:
|
# version. The file is in the following format:
|
||||||
|
@ -388,7 +406,13 @@ get_os() {
|
||||||
(*)
|
(*)
|
||||||
# Catch all to ensure '$distro' is never blank.
|
# Catch all to ensure '$distro' is never blank.
|
||||||
# This also handles the BSDs.
|
# This also handles the BSDs.
|
||||||
distro="$os $kernel"
|
#distro="$os $kernel"
|
||||||
|
distro="$os"
|
||||||
|
distro_cygwin=$(echo $os | grep CYGWIN_)
|
||||||
|
if [ ! -z "${distro_cygwin}" ] ; then
|
||||||
|
distro=$(uname -o)
|
||||||
|
fi
|
||||||
|
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@ -400,6 +424,13 @@ get_kernel() {
|
||||||
(*BSD*|Haiku|Minix)
|
(*BSD*|Haiku|Minix)
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
|
# Use wmic to get the OS version
|
||||||
|
(MSYS*|MINGW*)
|
||||||
|
kernel=$(wmic os get Version)
|
||||||
|
kernel=$(echo $kernel | awk '{print $3}')
|
||||||
|
;;
|
||||||
|
(CYGWIN*)
|
||||||
|
kernel=$(uname -r)
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# '$kernel' is the cached output of 'uname -r'.
|
# '$kernel' is the cached output of 'uname -r'.
|
||||||
|
@ -435,6 +466,15 @@ get_host() {
|
||||||
(*BSD* | Minix)
|
(*BSD* | Minix)
|
||||||
host=$(sysctl -n hw.vendor hw.product)
|
host=$(sysctl -n hw.vendor hw.product)
|
||||||
;;
|
;;
|
||||||
|
(MSYS*|MINGW*)
|
||||||
|
host=$(wmic computersystem get model \
|
||||||
|
| tail -n +2 \
|
||||||
|
| sed 's/.*=//g'
|
||||||
|
)
|
||||||
|
;;
|
||||||
|
(CYGWIN*)
|
||||||
|
host=$(uname -n)
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# Turn the host string into an argument list so we can iterate
|
# Turn the host string into an argument list so we can iterate
|
||||||
|
@ -485,7 +525,7 @@ get_uptime() {
|
||||||
# converting that data into days, hours and minutes using simple
|
# converting that data into days, hours and minutes using simple
|
||||||
# math.
|
# math.
|
||||||
case $os in
|
case $os in
|
||||||
(Linux* | Minix* | SerenityOS*)
|
(Linux* | Minix* | SerenityOS*| CYGWIN* | MSYS* | MINGW*)
|
||||||
IFS=. read -r s _ < /proc/uptime
|
IFS=. read -r s _ < /proc/uptime
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
@ -564,7 +604,7 @@ get_pkgs() {
|
||||||
# managers are installed.
|
# managers are installed.
|
||||||
packages=$(
|
packages=$(
|
||||||
case $os in
|
case $os in
|
||||||
(Linux*)
|
(Linux*|MINGW*)
|
||||||
# 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 crux && pkginfo -i
|
||||||
|
@ -575,6 +615,7 @@ get_pkgs() {
|
||||||
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
|
has opkg && opkg list-installed
|
||||||
|
has scoop && scoop list
|
||||||
|
|
||||||
# Directories containing packages.
|
# Directories containing packages.
|
||||||
has kiss && printf '%s\n' /var/db/kiss/installed/*/
|
has kiss && printf '%s\n' /var/db/kiss/installed/*/
|
||||||
|
@ -591,6 +632,16 @@ get_pkgs() {
|
||||||
}
|
}
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
(CYGWIN*)
|
||||||
|
cygcheck -cd
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
|
(MSYS*)
|
||||||
|
pacman -Qq
|
||||||
|
|
||||||
|
;;
|
||||||
|
|
||||||
(Darwin*)
|
(Darwin*)
|
||||||
# Commands which print packages one per line.
|
# Commands which print packages one per line.
|
||||||
has pkgin && pkgin list
|
has pkgin && pkgin list
|
||||||
|
@ -634,6 +685,7 @@ get_pkgs() {
|
||||||
pkg_info
|
pkg_info
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
|
||||||
(Haiku)
|
(Haiku)
|
||||||
printf '%s\n' /boot/system/package-links/*
|
printf '%s\n' /boot/system/package-links/*
|
||||||
;;
|
;;
|
||||||
|
@ -678,7 +730,7 @@ get_pkgs() {
|
||||||
# which needs to be stripped.
|
# which needs to be stripped.
|
||||||
(OpenBSD)
|
(OpenBSD)
|
||||||
packages=$((packages))
|
packages=$((packages))
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
case $packages in
|
case $packages in
|
||||||
|
@ -693,7 +745,7 @@ get_memory() {
|
||||||
# Used memory is calculated using the following "formula":
|
# Used memory is calculated using the following "formula":
|
||||||
# MemUsed = MemTotal + Shmem - MemFree - Buffers - Cached - SReclaimable
|
# MemUsed = MemTotal + Shmem - MemFree - Buffers - Cached - SReclaimable
|
||||||
# Source: https://github.com/KittyKatt/screenFetch/issues/386
|
# Source: https://github.com/KittyKatt/screenFetch/issues/386
|
||||||
(Linux*)
|
(Linux*|CYGWIN*|MSYS*|MINGW*)
|
||||||
# Parse the '/proc/meminfo' file splitting on ':' and 'k'.
|
# Parse the '/proc/meminfo' file splitting on ':' and 'k'.
|
||||||
# The format of the file is 'key: 000kB' and an additional
|
# The format of the file is 'key: 000kB' and an additional
|
||||||
# split is used on 'k' to filter out 'kB'.
|
# split is used on 'k' to filter out 'kB'.
|
||||||
|
@ -939,10 +991,81 @@ get_memory() {
|
||||||
log memory "${mem_used:-?}M / ${mem_full:-?}M" >&6
|
log memory "${mem_used:-?}M / ${mem_full:-?}M" >&6
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get_disk() {
|
||||||
|
# Store the version of the 'df' command as the available
|
||||||
|
# flags, options and implementation differs between operating
|
||||||
|
# systems and we need to handle these edge-cases.
|
||||||
|
df_version=$(df --version 2>&1)
|
||||||
|
|
||||||
|
case $df_version in
|
||||||
|
# The 'df' command is from AIX.
|
||||||
|
*IMitv*)
|
||||||
|
set -- -P -g
|
||||||
|
;;
|
||||||
|
|
||||||
|
# The 'df' command is from IRIX.
|
||||||
|
*befhikm*)
|
||||||
|
set -- -P -k
|
||||||
|
;;
|
||||||
|
|
||||||
|
# The 'df' command is from OpenBSD.
|
||||||
|
*hiklnP*)
|
||||||
|
set -- -h
|
||||||
|
;;
|
||||||
|
|
||||||
|
# The 'df' command is from Haiku and is wildly
|
||||||
|
# different and provides no workable output,
|
||||||
|
# end here.
|
||||||
|
*Tracker*) # Haiku
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
|
||||||
|
# From testing it is saffe to assume that
|
||||||
|
# any other 'df' version provides these flags.
|
||||||
|
*)
|
||||||
|
set -- -P -h
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Read the output of 'df' line by line. The first line
|
||||||
|
# contains header information for the "table" so it is
|
||||||
|
# skipped.
|
||||||
|
#
|
||||||
|
# The next lines are then split to grab the relevant
|
||||||
|
# information and thankfully the output remains the
|
||||||
|
# same between all but one 'df' implementation.
|
||||||
|
#
|
||||||
|
# TODO: Configure disks to send to 'df'. Do we need to
|
||||||
|
# do this? I'd love to _not_ do it.
|
||||||
|
df "$@" / | while read -r name full used _ perc _; do
|
||||||
|
[ "$header" ] || { header=1; continue; }
|
||||||
|
|
||||||
|
case $df_version in
|
||||||
|
# The 'df' command is from IRIX.
|
||||||
|
*befhikm*)
|
||||||
|
used=$((used/1024/1024))G
|
||||||
|
full=$((full/1024/1024))G
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#
|
||||||
|
# probably a better way to do this, but a simple fixs
|
||||||
|
case $os in
|
||||||
|
CYGWIN*|MSYS*|MINGW*)
|
||||||
|
windisk=$(df -h | tail -n +2 | awk 'NR==1{print $4" / "$3,"("$6")"}')
|
||||||
|
log disk "$windisk" >&6
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
log disk "$used / $full ($perc)" >&6
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
get_wm() {
|
get_wm() {
|
||||||
case $os in
|
case $os in
|
||||||
(Darwin*)
|
(Darwin*|CYGWIN*|MSYS*|MINGW*)
|
||||||
# Don't display window manager on macOS.
|
# Don't display window manager on macOS and Windows.
|
||||||
;;
|
;;
|
||||||
|
|
||||||
(*)
|
(*)
|
||||||
|
@ -1258,6 +1381,32 @@ get_ascii() {
|
||||||
EOF
|
EOF
|
||||||
;;
|
;;
|
||||||
|
|
||||||
|
(MSYS*|MINGW*)
|
||||||
|
read_ascii 4 <<-EOF
|
||||||
|
${c4}
|
||||||
|
${c4} ###### ######
|
||||||
|
${c4} ###### ######
|
||||||
|
${c4} ###### ######
|
||||||
|
${c4}
|
||||||
|
${c4} ###### ######
|
||||||
|
${c4} ###### ######
|
||||||
|
${c4} ###### ######
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
|
(CYGWIN*)
|
||||||
|
read_ascii 4 <<-EOF
|
||||||
|
${c4} __________
|
||||||
|
${c4} / \\
|
||||||
|
${c4} | ________/
|
||||||
|
${c4} | |${c2} ________
|
||||||
|
${c4} | |${c2} \______/
|
||||||
|
${c4} | |________
|
||||||
|
${c4} \\ \\
|
||||||
|
${c4} \\_________/
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
|
||||||
([Dd]ahlia*)
|
([Dd]ahlia*)
|
||||||
read_ascii 1 <<-EOF
|
read_ascii 1 <<-EOF
|
||||||
${c1} _
|
${c1} _
|
||||||
|
@ -1824,7 +1973,7 @@ get_ascii() {
|
||||||
# This ensures that any variables defined in the while loop
|
# This ensures that any variables defined in the while loop
|
||||||
# are still accessible in the script.
|
# are still accessible in the script.
|
||||||
done <<-EOF
|
done <<-EOF
|
||||||
$(printf %s "$ascii" | sed 's/\[3.m//g')
|
$(printf %s "$ascii" | awk '{gsub("\\[3.m","");print}')
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Add a gap between the ascii art and the information.
|
# Add a gap between the ascii art and the information.
|
||||||
|
@ -1915,7 +2064,6 @@ EOF
|
||||||
# contents of 'PF_INFO'.
|
# contents of 'PF_INFO'.
|
||||||
set -f
|
set -f
|
||||||
set +f -- ${PF_INFO-ascii title os host kernel uptime pkgs memory}
|
set +f -- ${PF_INFO-ascii title os host kernel uptime pkgs memory}
|
||||||
|
|
||||||
# Iterate over the info functions to determine the lengths of the
|
# Iterate over the info functions to determine the lengths of the
|
||||||
# "info names" for output alignment. The option names and subtitles
|
# "info names" for output alignment. The option names and subtitles
|
||||||
# match 1:1 so this is thankfully simple.
|
# match 1:1 so this is thankfully simple.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user