Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

pfetch: disk support #28

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 62 additions & 1 deletion pfetch
Original file line number Diff line number Diff line change
Expand Up @@ -694,6 +694,67 @@ get_memory() {
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

log disk "$name [$used / $full ($perc)]" >&6
done
}

get_wm() {
case $os in
# Don't display window manager on macOS.
Expand Down Expand Up @@ -1307,7 +1368,7 @@ get_ascii() {
# some versions of Android shipped with a totally broken 'sed'
# command from 'toybox' and so we're forced to avoid 'sed'.
done <<-EOF
$(printf %s "$ascii" | awk '{gsub("\\[3.m","");print}')
$(printf %s "$ascii" | awk '{gsub("\\[3.m","");print}')
EOF

# Add a gap between the ascii art and the information.
Expand Down