Merge pull request #79 from ethancedwards8/freebsd_support

FreeBSD support - Battery and Ram
This commit is contained in:
Ethan Edwards 2020-10-16 19:08:34 -04:00 committed by GitHub
commit 461ef98582
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 6 deletions

View file

@ -45,6 +45,10 @@ battery_percent()
echo $(pmset -g batt | grep -Eo '[0-9]?[0-9]?[0-9]%')
;;
FreeBSD)
echo $(apm | sed '8,11d' | grep life | awk '{print $4}')
;;
CYGWIN*|MINGW32*|MSYS*|MINGW*)
# leaving empty - TODO - windows compatability
;;
@ -59,13 +63,17 @@ battery_status()
# Check OS
case $(uname -s) in
Linux)
status=$(linux_acpi status)
status=$(linux_acpi status)
;;
Darwin)
status=$(pmset -g batt | sed -n 2p | cut -d ';' -f 2)
;;
FreeBSD)
status=$(apm | sed '8,11d' | grep Status | awk '{printf $3}')
;;
CYGWIN*|MINGW32*|MSYS*|MINGW*)
# leaving empty - TODO - windows compatability
;;
@ -74,11 +82,28 @@ battery_status()
;;
esac
if [ $status = 'discharging' ] || [ $status = 'Discharging' ]; then
echo ''
else
echo 'AC'
fi
case $status in
discharging|Discharging)
echo ''
;;
high)
echo ''
;;
charging)
echo 'AC'
;;
*)
echo 'AC'
;;
esac
### Old if statements didn't work on BSD, they're probably not POSIX compliant, not sure
# if [ $status = 'discharging' ] || [ $status = 'Discharging' ]; then
# echo ''
# # elif [ $status = 'charging' ]; then # This is needed for FreeBSD AC checking support
# # echo 'AC'
# else
# echo 'AC'
# fi
}
main()

View file

@ -48,6 +48,25 @@ get_percent()
fi
;;
FreeBSD)
# Looked at the code from neofetch
hw_pagesize="$(sysctl -n hw.pagesize)"
mem_inactive="$(($(sysctl -n vm.stats.vm.v_inactive_count) * hw_pagesize))"
mem_unused="$(($(sysctl -n vm.stats.vm.v_free_count) * hw_pagesize))"
mem_cache="$(($(sysctl -n vm.stats.vm.v_cache_count) * hw_pagesize))"
free_mem=$(((mem_inactive + mem_unused + mem_cache) / 1024 / 1024))
total_mem=$(($(sysctl -n hw.physmem) / 1024 / 1024))
used_mem=$((total_mem - free_mem))
echo $used_mem
if (( $used_mem < 1024 )); then
echo $used_mem\M\B/$total_mem
else
memory=$(($used_mem/1024))
echo $memory\G\B/$total_mem
fi
;;
CYGWIN*|MINGW32*|MSYS*|MINGW*)
# TODO - windows compatability
;;