New paste Repaste Download
#!/usr/bin/env bash
# The Sway configuration file in ~/.config/sway/config calls this script.
# status_command should just be: ~/.config/sway/status.sh
# (no outer while/sleep needed anymore — this script loops itself)
get_title() {
local t
t=$(swaymsg -t get_tree | jq -r '.. | select(.type?=="con" and .focused==true) | .name // empty' 2>/dev/null)
t=${t:-Desktop}
local max_len=50
if [ ${#t} -gt $max_len ]; then
t="${t:0:$((max_len - 1))}…"
fi
echo "$t"
}
refresh_slow() {
date_formatted=$(date "+%a %F %H:%M")
cpu_percentage=$(top -b -n2 -p 1 | fgrep "Cpu(s)" | tail -1 | awk -F'id,' '{ split($1, vs, ","); v=vs[length(vs)]; sub("%", "", v); printf "%.1f%%\n", 100 - v }')
ram_percentage="$(free | grep Mem | awk '{print substr($3/$2 * 100.0, 1, 3)}')%"
cpu_percentage=$(printf "%5s" "$cpu_percentage")
ram_percentage=$(printf "%4s" "$ram_percentage")
}
# Prime the slow-changing values once before the loop starts
refresh_slow
tick=0
while true; do
window_title=$(get_title)
# Emojis and characters for the status bar
# 💎 💻 💡 🔌 ⚡ 📁 \|
echo "\
$window_title | \
$ram_percentage RAM |\
$cpu_percentage CPU | \
$date_formatted\
"
if [ "$tick" -ge 29 ]; then
refresh_slow
tick=0
else
tick=$((tick + 1))
fi
sleep 1
done
Filename: None. Size: 1kb. View raw, , hex, or download this file.

This paste expires on 2026-07-10 13:42:50.851273+00:00. Pasted through web.