Merge pull request #592 from konimex/aix

OS: Added initial support for AIX
This commit is contained in:
Herdiansyah 2017-01-10 09:30:28 +07:00 committed by GitHub
commit d80061345a
3 changed files with 85 additions and 4 deletions

View File

@ -15,6 +15,7 @@ Neofetch now has an irc channel at `#neofetch` on Freenode. If you have any ques
## OS
- Added support for AIX.
- Added support for GNU/kFreeBSD.
- Added support for MINIX.
- Added support for MX.

20
ascii/distro/aix Normal file
View File

@ -0,0 +1,20 @@
${c1} `:+ssssossossss+-`
.oys///oyhddddhyo///sy+.
/yo:+hNNNNNNNNNNNNNNNNh+:oy/
:h/:yNNNNNNNNNNNNNNNNNNNNNNy-+h:
`ys.yNNNNNNNNNNNNNNNNNNNNNNNNNNy.ys
`h+-mNNNNNNNNNNNNNNNNNNNNNNNNNNNNm-oh
h+-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN.oy
/d`mNNNNNNN/::mNNNd::m+:/dNNNo::dNNNd`m:
h//NNNNNNN: . .NNNh mNo od. -dNNNNN:+y
N.sNNNNNN+ -N/ -NNh mNNd. sNNNNNNNo-m
N.sNNNNNs +oo /Nh mNNs` ` /mNNNNNNo-m
h//NNNNh ossss` +h md- .hm/ `sNNNNN:+y
:d`mNNN+/yNNNNNd//y//h//oNNNNy//sNNNd`m-
yo-NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNm.ss
`h+-mNNNNNNNNNNNNNNNNNNNNNNNNNNNNm-oy
sy.yNNNNNNNNNNNNNNNNNNNNNNNNNNs.yo
:h+-yNNNNNNNNNNNNNNNNNNNNNNs-oh-
:ys:/yNNNNNNNNNNNNNNNmy/:sy:
.+ys///osyhhhhys+///sy+.
-/osssossossso/-

View File

@ -39,6 +39,7 @@ get_os() {
"SunOS") os="Solaris" ;;
"Haiku") os="Haiku" ;;
"MINIX") os="MINIX" ;;
"AIX") os="AIX" ;;
*)
printf "%s\n" "Unknown OS detected: '$kernel_name', aborting..." >&2
printf "%s\n" "Open an issue on GitHub to add support for your OS." >&2
@ -188,6 +189,10 @@ get_distro() {
"Haiku")
distro="$(uname -sv | awk '{print $1 " " $2}')"
;;
"AIX")
distro="AIX $(oslevel)"
;;
esac
[[ -z "$distro" ]] && distro="$os (Unknown)"
@ -273,6 +278,10 @@ get_model() {
"Solaris")
model="$(prtconf -b | awk -F':' '/banner-name/ {printf $2}')"
;;
"AIX")
model="$(prtconf | awk -F':' '/System Model/ {printf $2}')"
;;
esac
# Remove dummy OEM info.
@ -295,6 +304,9 @@ get_title() {
}
get_kernel() {
# Since AIX is an integrated system, it's better to skip this function altogether
[[ "$os" == "AIX" ]] && return
case "$kernel_shorthand" in
"on") kernel="$kernel_version" ;;
"off") kernel="$kernel_name $kernel_version" ;;
@ -340,6 +352,14 @@ get_uptime() {
seconds="$(kstat -p unix:0:system_misc:snaptime | awk '{print $2}')"
seconds="${seconds/.*}"
;;
"AIX")
t="$(LC_ALL=POSIX ps -o etime= -p 1)"
d="0" h="0"
case "$t" in *"-"*) d="${t%%-*}"; t="${t#*-}";; esac
case "$t" in *":"*":"*) h="${t%%:*}"; t="${t#*:}";; esac
seconds="$((d*86400 + h*3600 + ${t%%:*}*60 + ${t#*:}))"
;;
esac
days="$((seconds / 60 / 60 / 24)) days"
@ -488,6 +508,11 @@ get_packages() {
"Haiku")
packages="$(ls -1 /boot/system/package-links | wc -l)"
;;
"AIX")
packages="$(lslpp -J -l -q | grep -cv '^#')"
packages="$((packages+=$(rpm -qa | wc -l)))"
;;
esac
((packages == 0)) && unset packages
@ -906,6 +931,22 @@ get_cpu() {
# Get CPU cores.
cores="$(sysinfo -cpu | grep -c -F 'CPU #')"
;;
"AIX")
# Get CPU name.
cpu="$(prtconf | awk -F':' '/Processor Type/ {printf $2}')"
# Get CPU speed.
speed="$(prtconf | awk -F':' '/Processor Clock Speed/ {printf $2}')"
speed="${speed/MHz}"
speed="$((speed / 100))"
# Get CPU cores.
case "$cpu_cores" in
"logical" | "on") cores="$(lparstat -i | awk -F':' '/Online Virtual CPUs/ {printf $2}')" ;;
"physical") cores="$(lparstat -i | awk -F':' '/Active Physical CPUs/ {printf $2}')"
esac
;;
esac
# Fix for speeds under 1ghz.
@ -935,6 +976,9 @@ get_cpu() {
cpu="${cpu//, altivec supported}"
cpu="${cpu//FPU*}"
# Trim spaces from core output
cores="${cores//[[:space:]]}"
# Add CPU cores to the output.
[[ "$cpu_cores" != "off" && "$cores" ]] && \
cpu="${cpu/@/(${cores}) @}"
@ -976,6 +1020,7 @@ get_cpu_usage() {
"Solaris") cores="$(kstat -m cpu_info | grep -c -F "chip_id")" ;;
"Haiku") cores="$(sysinfo -cpu | grep -c -F 'CPU #')" ;;
"iPhone OS") cores="${cpu/*\(}"; cores="${cores/\)*}" ;;
"AIX") cores="$(lparstat -i | awk -F':' '/Online Virtual CPUs/ {printf $2}')" ;;
esac
fi
@ -1095,7 +1140,7 @@ get_gpu() {
esac
;;
"BSD" | "Solaris" | "MINIX")
"BSD" | "Solaris" | "MINIX" | "AIX")
case "$kernel_name" in
"FreeBSD"* | "DragonFly"*)
gpu="$(pciconf -lv | grep -B 4 -F "VGA" | grep -F "device")"
@ -1192,6 +1237,13 @@ get_memory() {
mem_used="$(sysinfo -mem | awk -F '\\/|)' '{print $2; exit}')"
mem_used="$((${mem_used/max} / 1024 / 1024))"
;;
"AIX")
mem_stat=($(svmon -G -O unit=MB))
mem_total="${mem_stat[11]/.*}"
mem_free="${mem_stat[16]/.*}"
mem_used="$((mem_total - mem_free))"
;;
esac
memory="${mem_used}MB / ${mem_total}MB"
@ -1294,7 +1346,7 @@ get_song() {
get_resolution() {
case "$os" in
"Linux" | "BSD" | "Solaris" | "MINIX")
"Linux" | "BSD" | "Solaris" | "MINIX" | "AIX")
if type -p xrandr >/dev/null; then
case "$refresh_rate" in
"on") resolution="$(xrandr --nograb --current | awk 'match($0,/[0-9]*\.[0-9]*\*/) {printf $1 " @ " substr($0,RSTART,RLENGTH) "Hz, "}')" ;;
@ -1638,6 +1690,7 @@ get_disk() {
case "$os" in
"Haiku") err "Disk doesn't work on Haiku due to the non-standard 'df'"; return ;;
"Mac OS X") df_flags=(-P -h) ;;
"AIX") df_flags=(-P -g) ;;
*) df_flags=(-h) ;;
esac
@ -1759,9 +1812,9 @@ get_battery() {
get_local_ip() {
case "$os" in
"Linux" | "BSD" | "Solaris")
"Linux" | "BSD" | "Solaris" | "AIX")
local_ip="$(ip route get 1 | awk '{print $NF;exit}')"
[[ -z "$local_ip" ]] && local_ip="$(ifconfig | awk '/broadcast/ {print $2}')"
[[ -z "$local_ip" ]] && local_ip="$(ifconfig -a | awk '/broadcast/ {print $2; exit}')"
;;
"MINIX")
@ -1824,6 +1877,7 @@ get_install_date() {
*) install_file="/" ;;
esac
;;
"AIX") install_file="/var/adm/ras/bosinstlog" ;;
esac
ls_prog="$(ls --version 2>&1)"
@ -1832,6 +1886,7 @@ get_install_date() {
*"crtime"*) install_date="$(ls -tdcE "$install_file" | awk '{printf $6 " " $7}')" ;; # xpg4 (Solaris)
*"ACFHLRSZ"*) install_date="$(ls -dl "$install_file" | awk '{printf $6 " " $7}')" ;; # Toybox
*"GNU coreutils"*) install_date="$(ls -tcd --full-time "$install_file" | awk '{printf $6 " " $7}')" ;;
*"ACFHLNRS"*) err "Install Date doesn't work because your 'ls' does not support showing full date and time."; return ;; # AIX ls
*) install_date="$(ls -dlctT "$install_file" | awk '{printf $9 " " $6 " "$7 " " $8}')" ;;
esac
@ -2545,6 +2600,11 @@ get_distro_colors() {
#
# $ascii_distro is the same as $distro.
case "$ascii_distro" in
"AIX"*)
set_colors 2 7
ascii_file="aix"
;;
"alpine_small")
set_colors 4 7
ascii_file="alpine_small"