Skip to content

Commit 8d88f3f

Browse files
committed
fixes
1 parent bb03e74 commit 8d88f3f

File tree

2 files changed

+30
-20
lines changed

2 files changed

+30
-20
lines changed

lib/mem_used_helper.sh

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,11 @@ __tp_mem_used_info() {
1111
local mem_total_bytes
1212
local mem_used_bytes
1313

14-
stats=$(vm_stat)
14+
stats=$(vm_stat | tr '\n' ' ')
1515
bytes_per_page=$(echo "$stats" | sed -e 's/.*page size of \([0-9]*\).*/\1/')
1616
mem_total_bytes=$(sysctl hw.memsize | sed -e 's/^hw.memsize: \([0-9*]\)/\1/')
17-
free_pages=$(echo "$stats" | sed -e 's/.*Pages free: \([0-9]*\).*/\1/')
18-
external_pages=$(echo "$stats" | sed -e 's/.*File-backed pages: \([0-9]*\).*/\1/')
17+
free_pages=$(echo "$stats" | sed -e 's/.*Pages free: *\([0-9]*\).*/\1/')
18+
external_pages=$(echo "$stats" | sed -e 's/.*File-backed pages: *\([0-9]*\).*/\1/')
1919
mem_used_bytes=$(echo "$mem_total_bytes - ($free_pages + $external_pages) * $bytes_per_page" | bc -l)
2020

2121
echo "$mem_used_bytes" "$mem_total_bytes"
@@ -31,14 +31,14 @@ __tp_mem_used_info() {
3131
local s_reclaimable
3232
local mem_used_bytes
3333

34-
meminfo=$(cat /proc/meminfo)
35-
mem_total=$(echo "$meminfo" | sed -e 's/^MemTotal: \([0-9]*\).*/\1/')
34+
meminfo=$(cat /proc/meminfo | tr '\n' ' ')
35+
mem_total=$(echo "$meminfo" | sed -e 's/^MemTotal: *\([0-9]*\).*/\1/')
3636
mem_total_bytes=$(echo "$mem_total * 1024" | bc -l)
37-
mem_free=$(echo "$meminfo" | sed -e 's/.* MemFree: \([0-9]*\).*/\1/')
38-
shmem=$(echo "$meminfo" | sed -e 's/.* Shmem: \([0-9]*\).*/\1/')
39-
buffers=$(echo "$meminfo" | sed -e 's/.* Buffers: \([0-9]*\).*/\1/')
40-
cached=$(echo "$meminfo" | sed -e 's/.* Cached: \([0-9]*\).*/\1/')
41-
s_reclaimable=$(echo "$meminfo" | sed -e 's/.* SReclaimable: \([0-9]*\).*/\1/')
37+
mem_free=$(echo "$meminfo" | sed -e 's/.* MemFree: *\([0-9]*\).*/\1/')
38+
shmem=$(echo "$meminfo" | sed -e 's/.* Shmem: *\([0-9]*\).*/\1/')
39+
buffers=$(echo "$meminfo" | sed -e 's/.* Buffers: *\([0-9]*\).*/\1/')
40+
cached=$(echo "$meminfo" | sed -e 's/.* Cached: *\([0-9]*\).*/\1/')
41+
s_reclaimable=$(echo "$meminfo" | sed -e 's/.* SReclaimable: *\([0-9]*\).*/\1/')
4242
mem_used_bytes=$(echo "($mem_total - $mem_free + $shmem - $buffers - $cached - $s_reclaimable) * 1024" | bc -l)
4343

4444
echo "$mem_used_bytes" "$mem_total_bytes"
@@ -47,16 +47,27 @@ __tp_mem_used_info() {
4747

4848
tp_mem_used_gigabytes() {
4949
read -r mem_used_bytes mem_total_bytes < <(__tp_mem_used_info)
50-
echo "$mem_used_bytes / 1073741824" | bc -l
50+
__round "$(echo "$mem_used_bytes / 1073741824" | bc -l)" 2
5151
}
5252

5353
tp_mem_used_megabytes() {
5454
read -r mem_used_bytes mem_total_bytes < <(__tp_mem_used_info)
55-
echo "$mem_used_bytes / 1048576" | bc -l
55+
__round "$(echo "$mem_used_bytes / 1048576" | bc -l)" 0
5656
}
5757

5858
tp_mem_used_percentage_at_least() {
59+
local threshold_percentage="$1"
5960
read -r mem_used_bytes mem_total_bytes < <(__tp_mem_used_info)
60-
echo "($mem_used_bytes / $mem_total_bytes) * 100 >= $1" | bc -l
61+
echo "($mem_used_bytes / $mem_total_bytes) * 100 >= $threshold_percentage" | bc -l
6162
}
6263

64+
# source https://askubuntu.com/a/179949
65+
# Rounds positive numbers up to the number of digits to the right of the decimal point.
66+
# Example: "__round 1.2345 3" -> "((1000 * 1.2345) + 0.5) / 1000" -> "1.235"
67+
__round() {
68+
local number="$1"
69+
local digits="$2"
70+
71+
env printf "%.${digits}f" "$(echo "scale=${digits};(((10^${digits})*${number})+0.5)/(10^${digits})" | bc)"
72+
};
73+

segments/mem_used.sh

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,19 @@ run_segment() {
2121
local mem_used
2222

2323
if [ "$TMUX_POWERLINE_SEG_MEM_USED_UNIT" = "GB" ]; then
24-
mem_used="$(__round "$(tp_mem_used_gigabytes)" 2) GB"
24+
mem_used="$(tp_mem_used_gigabytes) GB"
25+
elif [ "$TMUX_POWERLINE_SEG_MEM_USED_UNIT" = "MB" ]; then
26+
mem_used="$(tp_mem_used_megabytes) MB"
2527
else
26-
mem_used="$(__round "$(tp_mem_used_megabytes)" 0) MB"
28+
tp_err_seg "Err: Invalid TMUX_POWERLINE_SEG_MEM_USED_UNIT value - $TMUX_POWERLINE_SEG_MEM_USED_UNIT"
29+
return 1
2730
fi
2831

2932
if [ -n "$mem_used" ]; then
3033
echo "${TMUX_POWERLINE_SEG_MEM_USED_ICON}${mem_used}"
3134
return 0
3235
else
36+
tp_err_seg "Err: Failed to obtain memory usage"
3337
return 1
3438
fi
3539
}
@@ -43,8 +47,3 @@ __process_settings() {
4347
fi
4448
};
4549

46-
# source https://askubuntu.com/a/179949
47-
__round() {
48-
printf "%.$2f" "$(echo "scale=$2;(((10^$2)*$1)+0.5)/(10^$2)" | bc)"
49-
};
50-

0 commit comments

Comments
 (0)