From fb7b3c146ea9287e354fad7300398a3ea514b4e9 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Fri, 21 Oct 2016 10:00:09 +1100 Subject: [PATCH 1/4] Rewrite uptime --- neofetch | 73 +++++++++++++++++++++----------------------------------- 1 file changed, 27 insertions(+), 46 deletions(-) diff --git a/neofetch b/neofetch index 78661991..1f5bf818 100755 --- a/neofetch +++ b/neofetch @@ -269,65 +269,46 @@ getkernel() { getuptime() { case "$os" in - "Linux" | "Windows") - case "$distro" in - *"Puppy"* | "Quirky Werewolf"* | "Alpine Linux"* | "OpenWRT"* | "Windows"*) - uptime="$(uptime | awk -F ':[0-9]{2}+ |(, ){1}+' '{printf $2}')" + "Linux" | "Windows" | "Mac OS X" | "iPhone OS" | "BSD") + # Get uptime in seconds + case "$os" in + "Linux" | "Windows") + seconds="$(< /proc/uptime)" + seconds="${seconds/.*}" ;; - "openSUSE"*) - uptime="$(uptime | awk -F ':[0-9]{2}+[a-z][a-z] |(, ){1}+' '{printf $2}')" - ;; + "Mac OS X" | "iPhone OS" | "BSD") + boot="$(sysctl -n kern.boottime)" + boot="${boot/'{ sec = '}" + boot="${boot/,*}" - *) - uptime="$(uptime -p)" - [ "$uptime" == "up " ] && uptime="up $(awk -F'.' '{print $1}' /proc/uptime) seconds" + # Get current date in seconds + now="$(date +%s)" + seconds="$((now - boot))" ;; esac - ;; - "Mac OS X" | "iPhone OS" | "BSD") - # Get boot time in seconds - boot="$(sysctl -n kern.boottime)" - boot="${boot/'{ sec = '}" - boot="${boot/,*}" + days="$((seconds / 86400)) days" + hours="$((seconds / 3600)) hours" + minutes="$((seconds % 3600 / 60)) minutes" - # Get current date in seconds - now="$(date +%s)" - uptime="$((now - boot))" - - # Convert uptime to days/hours/mins - minutes="$((uptime / 60%60))" - hours="$((uptime / 3600%24))" - days="$((uptime / 86400))" - - case "$minutes" in - 1) minutes="1 minute" ;; - 0) unset minutes ;; - *) minutes="$minutes minutes" ;; + case "$days" in + "0 days") unset days ;; + "1 days") days="${days/s}" ;; esac case "$hours" in - 1) hours="1 hour" ;; - 0) unset hours ;; - *) hours="$hours hours" ;; + "0 hours") unset hours ;; + "1 hours") hours="${hours/s}" ;; esac - case "$days" in - 1) days="1 day" ;; - 0) unset days ;; - *) days="$days days" ;; + case "$minutes" in + "0 minutes") unset minutes ;; + "1 minutes") minutes="${minutes/s}" ;; esac - [ "$hours" ] && \ - [ "$minutes" ] && \ - hours+="," - - [ "$days" ] && \ - [ "$hours" ] && \ - days+="," - - uptime="up $days $hours $minutes" + uptime="up ${days:+$days,} ${hours:+$hours,} ${minutes}" + uptime="${uptime%', '}" ;; "Solaris") @@ -353,7 +334,7 @@ getuptime() { uptime="${uptime/ minutes/m}" uptime="${uptime/ minute/m}" uptime="${uptime/ seconds/s}" - uptime="${uptime/,}" + uptime="${uptime//,}" ;; esac } From c2e6f6534d9b0a2ce15417607b38055edbb169ba Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Fri, 21 Oct 2016 10:20:28 +1100 Subject: [PATCH 2/4] Fix errors on large uptimes --- neofetch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/neofetch b/neofetch index 1f5bf818..642e4566 100755 --- a/neofetch +++ b/neofetch @@ -288,9 +288,9 @@ getuptime() { ;; esac - days="$((seconds / 86400)) days" - hours="$((seconds / 3600)) hours" - minutes="$((seconds % 3600 / 60)) minutes" + days="$((seconds / 60 / 60 / 24)) days" + hours="$((seconds / 60 / 60 % 24)) hours" + minutes="$((seconds / 60 % 60)) minutes" case "$days" in "0 days") unset days ;; From 99d43ff257f146b01d3e4f21e28dc7ce3c8246a8 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Fri, 21 Oct 2016 10:37:40 +1100 Subject: [PATCH 3/4] Add seconds when uptime is below 1 min --- neofetch | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/neofetch b/neofetch index 642e4566..94f3b4c3 100755 --- a/neofetch +++ b/neofetch @@ -307,8 +307,9 @@ getuptime() { "1 minutes") minutes="${minutes/s}" ;; esac - uptime="up ${days:+$days,} ${hours:+$hours,} ${minutes}" + uptime="${days:+$days, }${hours:+$hours, }${minutes}" uptime="${uptime%', '}" + uptime="up ${uptime:-${seconds} seconds}" ;; "Solaris") From e4c7f1926acc525a411385124e172eec8e7e004d Mon Sep 17 00:00:00 2001 From: Muhammad Herdiansyah Date: Fri, 21 Oct 2016 16:06:51 +0700 Subject: [PATCH 4/4] Solaris: Rewritten uptime Solaris' uptime will now show the second mark only so we don't have 2 case instances. --- neofetch | 77 +++++++++++++++++++++++++++----------------------------- 1 file changed, 37 insertions(+), 40 deletions(-) diff --git a/neofetch b/neofetch index 94f3b4c3..3cdefc07 100755 --- a/neofetch +++ b/neofetch @@ -268,55 +268,52 @@ getkernel() { # Uptime {{{ getuptime() { + # Get uptime in seconds case "$os" in - "Linux" | "Windows" | "Mac OS X" | "iPhone OS" | "BSD") - # Get uptime in seconds - case "$os" in - "Linux" | "Windows") - seconds="$(< /proc/uptime)" - seconds="${seconds/.*}" - ;; + "Linux" | "Windows") + seconds="$(< /proc/uptime)" + seconds="${seconds/.*}" + ;; - "Mac OS X" | "iPhone OS" | "BSD") - boot="$(sysctl -n kern.boottime)" - boot="${boot/'{ sec = '}" - boot="${boot/,*}" + "Mac OS X" | "iPhone OS" | "BSD") + boot="$(sysctl -n kern.boottime)" + boot="${boot/'{ sec = '}" + boot="${boot/,*}" - # Get current date in seconds - now="$(date +%s)" - seconds="$((now - boot))" - ;; - esac - - days="$((seconds / 60 / 60 / 24)) days" - hours="$((seconds / 60 / 60 % 24)) hours" - minutes="$((seconds / 60 % 60)) minutes" - - case "$days" in - "0 days") unset days ;; - "1 days") days="${days/s}" ;; - esac - - case "$hours" in - "0 hours") unset hours ;; - "1 hours") hours="${hours/s}" ;; - esac - - case "$minutes" in - "0 minutes") unset minutes ;; - "1 minutes") minutes="${minutes/s}" ;; - esac - - uptime="${days:+$days, }${hours:+$hours, }${minutes}" - uptime="${uptime%', '}" - uptime="up ${uptime:-${seconds} seconds}" + # Get current date in seconds + now="$(date +%s)" + seconds="$((now - boot))" ;; "Solaris") - uptime="$(uptime | /usr/xpg4/bin/awk -F ':[0-9]{2}+[a-z][a-z] |(, ){1}+' '{printf $2}')" + seconds="$(kstat -p unix:0:system_misc:snaptime | awk '{print $2}')" + seconds="${seconds/.*}" ;; esac + days="$((seconds / 60 / 60 / 24)) days" + hours="$((seconds / 60 / 60 % 24)) hours" + minutes="$((seconds / 60 % 60)) minutes" + + case "$days" in + "0 days") unset days ;; + "1 days") days="${days/s}" ;; + esac + + case "$hours" in + "0 hours") unset hours ;; + "1 hours") hours="${hours/s}" ;; + esac + + case "$minutes" in + "0 minutes") unset minutes ;; + "1 minutes") minutes="${minutes/s}" ;; + esac + + uptime="${days:+$days, }${hours:+$hours, }${minutes}" + uptime="${uptime%', '}" + uptime="up ${uptime:-${seconds} seconds}" + # Make the output of uptime smaller. case "$uptime_shorthand" in "on")