Как использовать вывод execi в conky в последующей строке

Как использовать вывод execi в conky в последующей строке

Я не кодер, просто тот, кто пытается работать с conky для стандартного дистрибутива с дистрибутивом Linux. Здесь я пытаюсь получить автоматическую настройку сети.

  1. Следуя сообщениям здесь и в других местах, я могу распечатать активный сетевой интерфейс с помощью этой строки:

    ${color2}АКТИВНО: ${color3}${execi -300 netup}${color}

«Netup» относится к небольшому скрипту в /usr/local/bin/, который состоит из одной строки:

ip addr show | awk '/inet.*brd/{print $NF; exit}'

В моем случае эта коническая линия выводит на экран:АКТИВНО: имя_интерфейса(см. изображение ниже). Пока все отлично.

  1. Теперь я хотел бы заменить специфичную для интерфейса команду о трафике или любой другой сетевой информации на имя, которое выводит этот скрипт, что избавило бы меня и пользователя от некоторых хлопот. Я попробовал это, и это отлично работает, если используется wlan0 и т. д.:

    Вниз: ${downspeedf netup}кБ/с ${alignr}Вверх: ${upspeedf netup}кБ/с ${downspeedgraph netup 30,120 000000 000000} ${alignr}${upspeedgraph netup 30,120 000000 000000}

Это явно не так, потому что график показывает, но не имеет содержания. чистые графики без содержания

Два вопроса: 1) есть ли способ прочитать активный интерфейс, который был написан одной строкой ранее?; 2) если нет, как я могу включить вывод скрипта netup в эти графики вниз и вверх?

Будем признательны за любую помощь.

Джерри

решение1

Что вы можете сделать, так это вызвать функцию , evalчтобы отложить вызов upspeedfи т. д., пока вы не вызовете свой скрипт и он не вернет имя интерфейса.

Например,

${eval $${downspeedgraph ${exec netup} 30,120 000000 000000} } 
${alignr}
${eval $${upspeedgraph   ${exec netup} 30,120 000000 000000} }

Обратите внимание, что удвоение $которого станет единичным $для eval. К сожалению, ваш скрипт будет вызываться при каждом цикле обновления, поэтому вам может потребоваться оптимизировать ваш скрипт. Нет никакой разницы, если вы используете execiс интервалом.

Для полной универсальности вам понадобится использовать функцию lua, что довольно сложно выучить. Если ваш интерфейс нужно определить только один раз при запуске, то почему бы не написать небольшой скрипт запуска, чтобы найти имя интерфейса и отредактировать файл .conkyrc с этим именем перед запуском conky.


Обратите внимание, ${eval}что в версии 1.10 эта функция не работает.пластырькоторый, я думаю, относится к версии 1.10.3 или .4.

Связанный контент