#!/bin/bash [[ "$BLOCK_BUTTON" == 2 ]] && i3-sensible-terminal -e htop if [[ "$BLOCK_INSTANCE" =~ "ram" ]]; then TYPE='ram' elif [[ "$BLOCK_INSTANCE" =~ "swap" ]]; then TYPE='swap' fi gawk -v TYPE="$TYPE" -v BAR="${BAR[*]}" -v BW="${BW[*]}" -v COLORS="$COLORS" -v COLOR="${COLOR[*]}" -v LONG="$LONG" ' BEGIN { split(BAR, bar, / /) split(COLOR, color, / /) split(BW, bw, / /) interval = 100 / length(bar) } /^MemTotal/ { rtg = $2 / 1024^2 } /^MemAvailable/ { rfg = $2 / 1024^2 rfm = $2 / 1024 } /^SwapTotal/ { stg = $2 / 1024^2 } /^SwapFree/ { sfg = $2 / 1024^2 sfm = $2 / 1024 } END { if (TYPE == "") { mfg = rfg + sfg mfm = rfm + sfm mtg = rtg + stg } else if (TYPE == "ram") { mfg = rfg mfm = rfm mtg = rtg } else if (TYPE == "swap") { mfg = sfg mfm = sfm rtg = stg } load = (mtg - mfg) / mtg * 100 if (LONG) { if (TYPE == "") { if (mfg > 2) { printf("%d+%d G\n", rfg, sfg) printf("%d+%dG\n", rfg, sfg) } else { printf("%d+%d M\n", rfm, sfm) printf("%d+%dM\n", rfm, sfm) } } else { if (mfg > 2) { printf("%d G\n", mfg) printf("%dG\n", mfg) mfg = rfg } else { printf("%d M\n", mfm) printf("%dM\n", mfm) } } } else { for (i in bar) { if (load <= i * interval) { printf("%s\n%s\n", bar[i], bar[i]) break } } } for (i in bw) { if (load <= i * interval) { if (COLORS) { printf("%s\n", color[i]) } else { printf("%s\n", bw[i]) } break } } } ' /proc/meminfo