diff --git a/modules/abstract.sh b/modules/abstract.sh index 013c8b9..de8c8c7 100755 --- a/modules/abstract.sh +++ b/modules/abstract.sh @@ -1,12 +1,14 @@ +# click interactions [[ "$BLOCK_INSTANCE" =~ "color" ]] && COLORS=True [[ "$BLOCK_INSTANCE" =~ "long" || "$BLOCK_BUTTON" == 1 ]] && LONG=True -EXIT=False +# global variables BAR=("▁" "▂" "▃" "▄" "▅" "▆" "▇" "█") INTERVAL=$((100 / ${#BAR[@]})) COLOR=("#64bc01" "#77a601" "#8a9101" "#9d7b00" "#b06701" "#c45100" "#d63c00" "#e92700") BW=("#565656" "#6d6d6d" "#848485" "#9c9c9c" "#b1b1b1" "#c7c7c7" "#dcdcdc" "#f5f5f6") +# get $LOAD, $LONG_TEXT and $SHORT_TEXT source $HOME/.config/i3blocks/modules/${1}.sh # text diff --git a/modules/ram.sh b/modules/ram.sh index 8b18b8a..c666192 100644 --- a/modules/ram.sh +++ b/modules/ram.sh @@ -1,87 +1,41 @@ -#!/bin/bash - [[ "$BLOCK_BUTTON" == 2 ]] && i3-sensible-terminal -e htop -if [[ "$BLOCK_INSTANCE" =~ "ram" ]]; then - TYPE='ram' -elif [[ "$BLOCK_INSTANCE" =~ "swap" ]]; then - TYPE='swap' +[[ $BLOCK_INSTANCE =~ (phys|swap) ]] && TYPE=${BASH_REMATCH[1]} + +MEMINFO=$(cat /proc/meminfo) +if [[ $MEMINFO =~ MemTotal:[[:space:]]+([0-9]+) ]]; then + PHYS_TOTAL=${BASH_REMATCH[1]} + PHYS_TOTAL=$((${PHYS_TOTAL} / 1024**2)) +fi +if [[ $MEMINFO =~ MemAvailable:[[:space:]]+([0-9]+) ]]; then + PHYS_AVAILABLE=${BASH_REMATCH[1]} + PHYS_AVAILABLE=$((${PHYS_AVAILABLE} / 1024**2)) + PHYS_AVAILABLE_M=$((${PHYS_AVAILABLE} / 1024)) +fi +if [[ $MEMINFO =~ SwapTotal:[[:space:]]+([0-9]+) ]]; then + SWAP_TOTAL=${BASH_REMATCH[1]} + SWAP_TOTAL=$((${SWAP_TOTAL} / 1024**2)) +fi +if [[ $MEMINFO =~ SwapFree:[[:space:]]+([0-9]+) ]]; then + SWAP_AVAILABLE=${BASH_REMATCH[1]} + SWAP_AVAILABLE=$((${SWAP_AVAILABLE} / 1024**2)) + SWAP_AVAILABLE_M=$((${SWAP_AVAILABLE} / 1024)) 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 +if [[ "$TYPE" == "" ]]; then + MEM_FREE=$((${PHYS_AVAILABLE} + ${SWAP_AVAILABLE})) + MEM_TOTAL=$((${PHYS_TOTAL} + ${SWAP_TOTAL})) + if [[ "$MEM_FREE" -gt 2 ]]; then + LONG_TEXT="${PHYS_AVAILABLE}+${SWAP_AVAILABLE}G" + SHORT_TEXT="${PHYS_AVAILABLE}+${SWAP_AVAILABLE}G" + else + LONG_TEXT="${PHYS_AVAILABLE_M}+${SWAP_AVAILABLE}M" + SHORT_TEXT="${PHYS_AVAILABLE_M}+${SWAP_AVAILABLE}M" + fi +elif [[ "$TYPE" == "ram" ]]; then + MEM_FREE=${PHYS_AVAILABLE} + MEM_TOTAL=${PHYS_TOTAL} +elif [[ "$TYPE" == "swap" ]]; then + MEM_FREE=${SWAP_AVAILABLE} + MEM_TOTAL=${SWAP_TOTAL} +fi