I3-wm.Удобно,Комфортно.

Voronov.S.V
не понимаю зачем там реализованы скрипты на perl-е + сторонние утилиты, когда достаточно обычного bash + подсистемы proc в большинстве данных.
Плюсую.
Кто нибудь выводил в i3status выхлоп vnstat за текущий день ? Поделитесь, пожалуйста :)
vnstat должен будет запущен как демон чтоб получить такую статистику

а вывести элементарно...
vnstat -d -i enp2s0 | grep estimated | awk '{print $8}'
Ошибки в тексте-неповторимый стиль автора©
Это как раз всё понятно. Вопрос в другом: что прописать в ~/.i3/i3status.conf чтобы выхлоп vnstat занял своё место в баре такой строкой: rx=.... tx=... total=...
???
наверно достаточно путь к скрипту прописать, сча подтянутся владельцы сего творения и разжуют.

такая строка вот так получится
vnstat -d -i wlp3s0 | grep estimated | awk '{print "rx="$2$3" tx="$5$6" total="$8$9 }'
Ошибки в тексте-неповторимый стиль автора©
kotnaton
что прописать в ~/.i3/i3status.conf чтобы выхлоп vnstat занял своё место в баре
Стандартный i3status поддерживает такой вывод? Нет. Поэтому только так.

В статусбар можно вывести абсолютно любую инфу, но только подменив стандартный вывод собственным.
kotnaton, разобрались или нет? Там суть следующая:
1. Можете накатать скрипт и заменить им стандартный статус:
~/.i3/config
———————
bar {
status_command $HOME/.i3/i3stat_bash.sh
}
~/.i3/i3stat_bash.sh
———————
#!/usr/bin/bash

while :
do
date=`date +"%a %d %b %H:%M"`
echo -n $date || exit 1
sleep 1
done

2. Можете к своей добавить инфу из i3status:
~/.i3/i3stat_bash.sh
———————
#!/usr/bin/bash

i3status -c $HOME/.i3/i3status.conf | while :
do
read line
date=`date +"%a %d %b %H:%M"`
echo -n $date $line || exit 1
done
Но в этом случае обязательно:
~/.i3/i3status.conf
———————
general {
        output_format = none
}
иначе получите весь выхлоп json в текстовом виде.

Первый и второй пункт - если вас устраивает монохромный вывод.

3. Если желаете разные цвета, сепаратор, выравнивание и т.д. в i3bar, который, как вы понимаете, уже присутствует в i3status, придется выводить инфу в JSON. Пример:
~/.i3/i3status.conf
———————
general {
        output_format = i3bar
}
~/.i3/config
———————
bar {
status_command $HOME/.i3/i3stat_json.sh
}
~/.i3/i3stat_json.sh
/#!/usr/bin/bash

i3status -c $HOME/.i3/i3status.conf | (read line && echo $line && read line && echo $line && while :

do
read line

str="["
vol=`amixer -M -c 0 get Master | grep Mono: | cut -d [ -f 2 | tr -d ] | tr -d \ `
str="{ \"full_text\": \"\" , \"separator\": false, \"separator_block_width\": 4, \"color\" : \"#37b01f\"},"
str="$str{ \"full_text\": \"${vol}\" , \"align\": \"center\" , \"min_width\":100 },"
echo "${line/[/$str}" || exit 1
done)
Повторюсь, это только пример. Если будет ошибка в синтаксисе, вы вместо нужной инфы увидите мат красным цветом с номером фейловой строки. )

4. Вместо i3bar можно использовать сторонние dzen2, xmobar или lemonbar, но я этих зверей не пробовал.
Voronov.S.V
https://github.com/Engine-X/i3wm/tree/work/
Есть пара косяков в скриптиках для бара
1. Процент памяти показывается не корректно, если занято меньше 1 Гб, он выдает больше 100%. Используйте для подсчета free без -h
2. Загрузка процессора считается некорректно. Показывается загрузка со старта системы. Здесь необходимо высчитывать дельту за промежуток времени. Я сделал это таким образом:
#!/bin/bash

# /proc/stat
#       user    nice    system  idle    iowait  irq softirq steal   guest   guest_nice
#cpu    2       3       4       5       6       7   8       9       10      11

PrevCPU=$(grep 'cpu ' /proc/stat | head -n1)
sleep 1
CPU=$(grep 'cpu ' /proc/stat | head -n1)

#PrevIdle = previdle + previowait
PrevIdle=$( echo $PrevCPU | awk '{print int($5+$6)}' )
#Idle = idle + iowait
Idle=$( echo $CPU | awk '{print int($5+$6)}' )

#PrevNonIdle = prevuser + prevnice + prevsystem + previrq + prevsoftirq + prevsteal
PrevNonIdle=$( echo $PrevCPU | awk '{print int($2+$3+$4+$7+$8+$9)}' )
#NonIdle = user + nice + system + irq + softirq + steal
NonIdle=$( echo $CPU | awk '{print int($2+$3+$4+$7+$8+$9)}' )

PrevTotal=$(( $PrevIdle + $PrevNonIdle ))
Total=$(( $Idle + $NonIdle ))

# differentiate: actual value minus the previous one
totald=$(( $Total - $PrevTotal ))
idled=$(( $Idle - $PrevIdle))

CPU_Percentage=$(( ($totald-$idled)*100/$totald ))
echo $CPU_Percentage%
У меня проще:
tmp=`grep 'cpu ' /proc/stat  | tr -s \ `
curr_user=`echo $tmp | cut -d \  -f 2`
curr_nice=`echo $tmp | cut -d \  -f 3`
curr_system=`echo $tmp | cut -d \  -f 4`
curr_idle=`echo $tmp | cut -d \  -f 5`

curr_total=`expr $curr_user + $curr_nice + $curr_system + $curr_idle`
diff_idle=`expr $curr_idle - $prev_idle`
diff_total=`expr $curr_total - $prev_total`
diff_usage=`expr \( 1000 \* \( $diff_total - $diff_idle \) / $diff_total + 5 \) / 10`

prev_total=$curr_total
prev_idle=$curr_idle
diff_usage - загрузка в процентах.
Aivar
diff_usage - загрузка в процентах.
........... Linux CPU Usage Monitor (github) .......... ???
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.