dwm xsetroot показывает использование процессора с помощью awk - PullRequest
3 голосов
/ 19 февраля 2011

Я использую оконный менеджер dwm в Arch Linux.Я хочу настроить отображение верхней панели.Я уже добавил дату, память, сейчас играет и время работы, но дисплей процессора не будет работать для меня.Когда я пытаюсь запустить код для отображения загрузки процессора в терминале, он отлично работает, но не работает, когда я помещаю его в верхнюю панель.Он вообще ничего не отображает.Вот код:

while true; do
    xsetroot -name "Memory $(free -m | grep '^Mem' | awk '{print "total: " $2 "MB used: " $3"MB"}') | CPU $(top -n 1 | grep '^Cpu' | tr -d 'usy,' | awk '{print "user " $2 ", sys " $3}') | Uptime: $(uptime | awk '{print $3}' | tr -d ',') | Now playing: $(ncmpcpp --now-playing | tr -d '(:[:digit:])') | $( date +"%F %R" )"
    sleep 20s
done &

Часть, о которой я говорю, находится после строки «CPU».Код находится в моем .xinitrc и, как я уже сказал, все работает хорошо, кроме отображения процессора.

1 Ответ

1 голос
/ 03 июня 2011

Вы можете исправить это, выполнив top с флагом -b для пакетного режима. Только в этом режиме вы можете отправлять вывод как обычный текст другим программам. Таким образом, этот цикл будет (надеюсь) выполнять работу:

while true; do
    xsetroot -name "Memory $(free -m | grep '^Mem' | awk '{print "total: " $2 "MB used: " $3"MB"}') | CPU $(top -bn 1 | grep '^Cpu' | tr -d 'usy,' | awk '{print "user " $2 ", sys " $3}') | Uptime: $(uptime | awk '{print $3}' | tr -d ',') | Now playing: $(ncmpcpp --now-playing | tr -d '(:[:digit:])') | $( date +"%F %R" )"
    sleep 20s
done &
...