5 Commits
0.6 ... disk

Author SHA1 Message Date
Dylan Araps
af166966b9 pfetch: revert unrelated commit. 2019-10-14 19:11:26 +03:00
Dylan Araps
219d8f2117 pfetch: revert unrelated commit. 2019-10-14 19:10:42 +03:00
Dylan Araps
0834d53b2a pfetch: revert unrelated commit. 2019-10-14 19:06:31 +03:00
Dylan Araps
0f1d6845db pfetch: revert unrelated commit. 2019-10-14 19:05:36 +03:00
Dylan Araps
3895dd003d pfetch: disk support 2019-10-14 19:04:10 +03:00
2 changed files with 259 additions and 337 deletions

View File

@@ -37,7 +37,6 @@ picture"!
- **MacOS**
- **Minix**
- **Solaris**
- **IRIX**
## Configuration
@@ -58,11 +57,6 @@ PF_INFO="ascii"
# Example: Only Information.
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.
# Default: unset
# Valid: string

590
pfetch
View File

@@ -83,7 +83,7 @@ log() {
printf '[3%s;1m%s' "${PF_COL1-4}" "$name"
# 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
# then move it forwards the length of the *longest* info name. This
@@ -131,7 +131,7 @@ get_os() {
Linux*)
# Some Linux distributions (which are based on others)
# fail to identify as they **do not** change the upstream
# distribution's identification packages or files.
# distributions identification packages or files.
#
# It is senseless to add a special case in the code for
# each and every distribution (which _is_ technically no
@@ -182,13 +182,6 @@ get_os() {
command -v crux && distro=$(crux)
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
# WSL1 (Windows subsystem for Linux [version 1]) and
# append a string accordingly.
@@ -286,13 +279,13 @@ get_kernel() {
case $os in
# Don't print kernel output on some systems as the
# OS name includes it.
*BSD*|Haiku|Minix)
return
;;
esac
*BSD*|Haiku|Minix) ;;
# '$kernel' is the cached output of 'uname -r'.
log kernel "$kernel" >&6
*)
# '$kernel' is the cached output of 'uname -r'.
log kernel "$kernel" >&6
;;
esac
}
get_host() {
@@ -317,7 +310,7 @@ get_host() {
machdep.dmi.system-product)
;;
*BSD*|Minix)
*BSD*)
host=$(sysctl -n hw.vendor hw.product)
;;
esac
@@ -350,7 +343,7 @@ get_host() {
# found in the "blacklist" below. Only non-matches are appended
# to the final host string.
case $word in
To | [Bb]e | [Ff]illed | [Bb]y | O.E.M. | OEM |\
To | [Bb]e | [Ff]illed | by | O.E.M. | OEM |\
Not | Applicable | Specified | System | Product | Name |\
Version | Undefined | Default | string | INVALID | <20> | os )
continue
@@ -404,25 +397,6 @@ get_uptime() {
$(kstat -p unix:0:system_misc:snaptime)
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
# Convert the uptime from seconds into days, hours and minutes.
@@ -471,14 +445,12 @@ get_pkgs() {
has xbps-query && xbps-query -l
has apk && apk info
has guix && guix package --list-installed
has opkg && opkg list-installed
# Directories containing packages.
has kiss && printf '%s\n' /var/db/kiss/installed/*/
has brew && printf '%s\n' "$(brew --cellar)/"*
has emerge && printf '%s\n' /var/db/pkg/*/*/
has pkgtool && printf '%s\n' /var/log/packages/*
has eopkg && printf '%s\n' /var/lib/eopkg/package/*
# 'nix' requires two commands.
has nix-store && {
@@ -534,19 +506,9 @@ get_pkgs() {
has pkginfo && pkginfo -i
has pkg && pkg list
;;
IRIX)
versions -b
;;
esac | wc -l
`
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
}
@@ -727,32 +689,72 @@ get_memory() {
mem_free=$((pages_free * hw_pagesize / 1024 / 1024))
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
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.
@@ -768,7 +770,7 @@ get_wm() {
# atom..
#
# List of window managers which fail to set the name atom:
# catwm, fvwm, dwm, 2bwm, monster, wmaker and sowm [mine! ;)].
# catwm, fvwm, dwm, 2bwm and monster.
#
# The final downside to this approach is that it does _not_
# support Wayland environments. The only solution which supports
@@ -840,40 +842,7 @@ get_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')
;;
*) wm= ;;
esac
}
;;
@@ -911,12 +880,12 @@ get_palette() {
#
# This allows us to save hardcoding a second set of sequences
# for background colors.
palette="$c1 $c1 $c2 $c2 $c3 $c3 $c4 $c4 $c5 $c5 $c6 $c6 "
palette=" $c1 $c2 $c3 $c4 $c5 $c6 $c7 "
# Print the palette with a new-line before and afterwards.
printf '\n' >&6
log "$palette
" " " >&6
# Print the palette with a newline before and after.
# The '\033[%sC' moves the text to the right, the
# length of the ascii art.
printf '\n[%sC%s\n' "${ascii_width-1}" "$palette" >&6
}
get_ascii() {
@@ -963,63 +932,54 @@ get_ascii() {
/${c7}/ ${c4}\\ \\
/${c7}// ${c4}\\ \\
${c7}// ${c4}\\ \\
${c4}\\
\\
EOF
;;
[Aa]ndroid*)
read_ascii 2 <<-EOF
${c2} ;, ,;
${c2} ';,.-----.,;'
${c2} ,' ',
${c2} / O O \\
${c2}| |
${c2}'-----------------'
';,.-----.,;'
,' ',
/ O O \\
| |
'-----------------'
EOF
;;
[Aa]rch*)
read_ascii 4 <<-EOF
${c6} /\\
${c6} / \\
${c6} /\\ \\
${c4} / \\
${c4} / ,, \\
${c4} / | | -\\
${c4} /_-'' ''-_\\
${c6} /\\
/ \\
/\\ \\
${c4} / \\
/ ,, \\
/ | | -\\
/_-'' ''-_\\
EOF
;;
[Aa]rco*)
read_ascii 4 <<-EOF
${c4} /\\
${c4} / \\
${c4} / /\\ \\
${c4} / / \\ \\
${c4} / / \\ \\
${c4} / / _____\\ \\
${c4}/_/ \`----.\\_\\
/ \\
/ /\\ \\
/ / \\ \\
/ / \\ \\
/ / _____\\ \\
/_/ \`----.\\_\\
EOF
;;
[Aa]rtix*)
read_ascii 6 <<-EOF
${c4} /\\
${c4} / \\
${c4} /\`'.,\\
${c4} / ',
${c4} / ,\`\\
${c4} / ,.'\`. \\
${c4}/.,'\` \`'.\\
EOF
;;
[Bb]edrock*)
read_ascii 4 <<-EOF
${c7}__
${c7}\\ \\___
${c7} \\ _ \\
${c7} \\___/
/ \\
/\`'.,\\
/ ',
/ ,\`\\
/ ,.'\`. \\
/.,'\` \`'.\\
EOF
;;
@@ -1038,11 +998,11 @@ get_ascii() {
[Dd]ebian*)
read_ascii 1 <<-EOF
${c1} _____
${c1} / __ \\
${c1}| / |
${c1}| \\___-
${c1}-_
${c1} --_
/ __ \\
| / |
| \\___-
-_
--_
EOF
;;
@@ -1053,30 +1013,19 @@ get_ascii() {
>--${c1}|${c7}--<
(_-'${c1}|${c7}'-_)
${c1}|
${c1}|
${c1}|
|
|
EOF
;;
[Ee]lementary*)
read_ascii <<-EOF
${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
;;
@@ -1096,83 +1045,71 @@ get_ascii() {
[Ff]ree[Bb][Ss][Dd]*)
read_ascii 1 <<-EOF
${c1}/\\,-'''''-,/\\
${c1}\\_) (_/
${c1}| |
${c1}| |
${c1}; ;
${c1}'-_____-'
\\_) (_/
| |
| |
; ;
'-_____-'
EOF
;;
[Gg]entoo*)
read_ascii 5 <<-EOF
${c5} _-----_
${c5}( \\
${c5}\\ 0 \\
( \\
\\ 0 \\
${c7} \\ )
${c7} / _/
${c7}( _-
${c7}\\____-
/ _/
( _-
\\____-
EOF
;;
[Gg]uix[Ss][Dd]*|[Gg]uix*)
read_ascii 3 <<-EOF
${c3}|.__ __.|
${c3}|__ \\ / __|
${c3}\\ \\ / /
${c3}\\ \\ / /
${c3}\\ \\ / /
${c3}\\ \\/ /
${c3}\\__/
|__ \\ / __|
\\ \\ / /
\\ \\ / /
\\ \\ / /
\\ \\/ /
\\__/
EOF
;;
[Hh]aiku*)
read_ascii 3 <<-EOF
${c3} ,^,
${c3} / \\
${c3}*--_ ; ; _--*
${c3}\\ '" "' /
${c3}'. .'
${c3}.-'" "'-.
${c3}'-.__. .__.-'
${c3}|_|
/ \\
*--_ ; ; _--*
\\ '" "' /
'. .'
.-'" "'-.
'-.__. .__.-'
|_|
EOF
;;
[Hh]yperbola*)
read_ascii <<-EOF
${c7} |\`__.\`/
${c7} \____/
${c7} .--.
${c7} / \\
${c7} / ___ \\
${c7}/ .\` \`.\\
${c7}/.\` \`.\\
EOF
;;
[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
${c3} /\\
${c3} / \\
${c3} / ${c7}/ ${c3}/
${c3}> ${c7}/ ${c3}/
${c3}\\ ${c7}\\ ${c3}\\
${c3}\\_${c7}\\${c3}_\\
/ \\
/ ${c7}/ ${c3}/
> ${c7}/ ${c3}/
\\ ${c7}\\ ${c3}\\
\\_${c7}\\${c3}_\\
${c7} \\
EOF
;;
@@ -1180,12 +1117,12 @@ get_ascii() {
[Ll]inux*[Mm]int*|[Mm]int)
read_ascii 2 <<-EOF
${c2} ___________
${c2}|_ \\
${c2}| ${c7}| _____ ${c2}|
${c2}| ${c7}| | | | ${c2}|
${c2}| ${c7}| | | | ${c2}|
${c2}| ${c7}\\__${c7}___/ ${c2}|
${c2}\\_________/
|_ \\
| ${c7}| _____ ${c2}|
| ${c7}| | | | ${c2}|
| ${c7}| | | | ${c2}|
| ${c7}\\__${c7}___/ ${c2}|
\\_________/
EOF
;;
@@ -1193,10 +1130,10 @@ get_ascii() {
[Ll]inux*)
read_ascii 4 <<-EOF
${c4} ___
${c4}(${c7}.. ${c4}|
${c4}(${c5}<> ${c4}|
${c4}/ ${c7}__ ${c4}\\
${c4}( ${c7}/ \\ ${c4}/|
(${c7}.· ${c4}|
(${c5}<> ${c4}|
/ ${c7}__ ${c4}\\
( ${c7}/ \\ ${c4}/|
${c5}_${c4}/\\ ${c7}__)${c4}/${c5}_${c4})
${c5}\/${c4}-____${c5}\/
EOF
@@ -1205,9 +1142,9 @@ get_ascii() {
[Mm]ac[Oo][Ss]*|[Dd]arwin*)
read_ascii 1 <<-EOF
${c1} .:'
${c1} _ :'_
_ :'_
${c2} .'\`_\`-'_\`\`.
${c2}:________.-'
:________.-'
${c3}:_______:
${c4} :_______\`-;
${c5} \`._.-._.'
@@ -1217,49 +1154,49 @@ get_ascii() {
[Mm]ageia*)
read_ascii 2 <<-EOF
${c6} *
${c6} *
${c6} **
*
**
${c7} /\\__/\\
${c7}/ \\
${c7}\\ /
${c7} \\____/
/ \\
\\ /
\\____/
EOF
;;
[Mm]anjaro*)
read_ascii 2 <<-EOF
${c2}||||||||| ||||
${c2}||||||||| ||||
${c2}|||| ||||
${c2}|||| |||| ||||
${c2}|||| |||| ||||
${c2}|||| |||| ||||
${c2}|||| |||| ||||
||||||||| ||||
|||| ||||
|||| |||| ||||
|||| |||| ||||
|||| |||| ||||
|||| |||| ||||
EOF
;;
[Mm]inix*)
read_ascii 4 <<-EOF
${c4} ,, ,,
${c4};${c7},${c4} ', ,' ${c7},${c4};
${c4}; ${c7}',${c4} ',,' ${c7},'${c4} ;
${c4}; ${c7}',${c4} ${c7},'${c4} ;
${c4}; ${c7};, '' ,;${c4} ;
${c4}; ${c7};${c4};${c7}',,'${c4};${c7};${c4} ;
${c4}', ${c7};${c4};; ;;${c7};${c4} ,'
${c4} '${c7};${c4}' '${c7};${c4}'
;${c7},${c4} ', ,' ${c7},${c4};
; ${c7}',${c4} ',,' ${c7},'${c4} ;
; ${c7}',${c4} ${c7},'${c4} ;
; ${c7};, '' ,;${c4} ;
; ${c7};${c4};${c7}',,'${c4};${c7};${c4} ;
', ${c7};${c4};; ;;${c7};${c4} ,'
'${c7};${c4}' '${c7};${c4}'
EOF
;;
[Mm][Xx]*)
read_ascii <<-EOF
${c7} \\\\ /
${c7} \\\\/
${c7} \\\\
${c7} /\\/ \\\\
${c7} / \\ /\\
${c7} / \\/ \\
${c7}/__________\\
\\\\/
\\\\
/\\/ \\\\
/ \\ /\\
/ \\/ \\
/__________\\
EOF
;;
@@ -1270,137 +1207,124 @@ get_ascii() {
${c7} \\\\ ${c3}\`.____
${c7} \\\\${c3}-______,----\`-
${c7} \\\\
${c7} \\\\
${c7} \\\\
\\\\
\\\\
EOF
;;
[Nn]ix[Oo][Ss]*)
read_ascii 4 <<-EOF
${c4} \\\\ \\\\ //
${c4} ==\\\\__\\\\/ //
${c4} // \\\\//
${c4}==// //==
${c4} //\\\\___//
${c4}// /\\\\ \\\\==
${c4} // \\\\ \\\\
==\\\\__\\\\/ //
// \\\\//
==// //==
//\\\\___//
// /\\\\ \\\\==
// \\\\ \\\\
EOF
;;
[Oo]pen[Bb][Ss][Dd]*)
read_ascii 3 <<-EOF
${c3} _____
${c3} \\- -/
${c3} \\_/ \\
${c3} | ${c7}O O${c3} |
${c3} |_ < ) 3 )
${c3} / \\ /
${c3} /-_____-\\
\\- -/
\\_/ \\
| ${c7}O O${c3} |
|_ < ) 3 )
/ \\ /
/-_____-\\
EOF
;;
[Oo]pen[Ss][Uu][Ss][Ee]*|[Oo]pen*SUSE*|SUSE*|suse*)
[Oo]penSUSE*|[Oo]pen*SUSE*|SUSE*|suse*)
read_ascii 2 <<-EOF
${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
;;
[Pp]arabola*)
read_ascii 5 <<-EOF
${c5} __ __ __ _
${c5}.\`_//_//_/ / \`.
${c5} / .\`
${c5} / .\`
${c5} /.\`
${c5} /\`
.\`_//_//_/ / \`.
/ .\`
/ .\`
/.\`
/\`
EOF
;;
[Pp]op!_[Oo][Ss]*)
read_ascii 6 <<-EOF
${c6}______
${c6}\\ _ \\ __
${c6}\\ \\ \\ \\ / /
${c6}\\ \\_\\ \\ / /
${c6}\\ ___\\ /_/
${c6} \\ \\ _
${c6} __\\_\\__(_)_
${c6}(___________)
\\ _ \\ __
\\ \\ \\ \\ / /
\\ \\_\\ \\ / /
\\ ___\\ /_/
\\ \\ _
__\\_\\__(_)_
(___________)
EOF
;;
[Pp]ure[Oo][Ss]*)
read_ascii <<-EOF
${c7} _____________
${c7}| _________ |
${c7}| | | |
${c7}| | | |
${c7}| |_________| |
${c7}|_____________|
| _________ |
| | | |
| | | |
| |_________| |
|_____________|
EOF
;;
[Ss]lackware*)
read_ascii 4 <<-EOF
${c4} ________
${c4} / ______|
${c4} | |______
${c4} \\______ \\
${c4} ______| |
${c4}| |________/
${c4}|____________
/ ______|
| |______
\\______ \\
______| |
| |________/
|____________
EOF
;;
[Ss]un[Oo][Ss]|[Ss]olaris*)
read_ascii 3 <<-EOF
${c3} . .; .
${c3} . :; :: ;: .
${c3} .;. .. .. .;.
${c3}.. .. .. ..
${c3} .;, ,;.
. :; :: ;: .
.;. .. .. .;.
.. .. .. ..
.;, ,;.
EOF
;;
[Uu]buntu*)
read_ascii 3 <<-EOF
${c3} _
${c3} ---(_)
${c3} _/ --- \\
${c3}(_) | |
${c3} \\ --- _/
${c3} ---(_)
---(_)
_/ --- \\
(_) | |
\\ --- _/
---(_)
EOF
;;
[Vv]oid*)
read_ascii 2 <<-EOF
${c2} _______
${c2} _ \\______ -
${c2}| \\ ___ \\ |
${c2}| | / \ | |
${c2}| | \___/ | |
${c2}| \\______ \\_|
${c2} -_______\\
_ \\______ -
| \\ ___ \\ |
| | / \ | |
| | \___/ | |
| \\______ \\_|
-_______\\
EOF
;;
@@ -1439,8 +1363,12 @@ get_ascii() {
# output without the use of a pipe ('|').
# This ensures that any variables defined in the while loop
# are still accessible in the script.
#
# The 'awk' command below used to be a simple 'sed', however
# 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" | sed 's/\[3.m//g')
$(printf %s "$ascii" | awk '{gsub("\\[3.m","");print}')
EOF
# Add a gap between the ascii art and the information.
@@ -1463,11 +1391,6 @@ main() {
# This gives full control over what it displayed on the screen.
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.
@@ -1483,7 +1406,9 @@ main() {
c7=''; c8=''
}
# 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
# silently conceal them if they're printed resulting in
@@ -1491,11 +1416,14 @@ main() {
[ "$TERM" = dumb ] ||
[ "$TERM" = minix ] ||
[ "$TERM" = cons25 ] || {
# Disable line-wrapping.
printf '[?7l' >&6
# '[?7l': Disable line-wrapping.
# '[?25l': Hide the cursor.
printf '[?7l[?25l' >&6
# Enable line-wrapping again on exit.
trap 'printf [?7h >&6' EXIT
# Leave the terminal how we found it on exit or Ctrl+C.
# '[?7h': Enable line-wrapping.
# '[?25h': Show the cursor.
trap 'printf [?7h[?25h >&6' EXIT
}
# Store the output of 'uname' to avoid calling it multiple times