5

Я много искал, но я не могу найти способ показать сучков в conky. nethogs печатает на терминал, и, похоже, нет способа записать вывод в режиме реального времени. Это одна вещь, которую я хотел получить от conky FOR AGES.

2 ответа2

2

Я так не думаю.

nethogs - это интерактивный процесс с использованием библиотеки ncurses. Ожидается запуск в окне терминала и получение ввода от пользователя.

Conky может запускать программы, используя директивы exec/execi/execp/execpi, но предполагается, что это программы "запускаются один раз", которые выводят текст, а затем завершаются. Конки берет этот текст и отображает его.

Попробуйте написать разработчику nethogs и посмотреть, добавит ли он "пакетный" режим, например пакетный режим top команды. Если вы можете заставить nethogs работать на секунду, затем отобразить его текст и выйти, вы можете использовать этот текстовый вывод в Conky.

0

Я пытался сделать то же самое с Conky на Ubuntu 12.10. Но тогда у меня была идея получше:

  • создайте новый профиль для gnome-терминала (прозрачный, маленький размер шрифта, что угодно)
  • установить пакет devilspie (вы также можете попробовать версию gdevilspie GTK
  • создайте новый конфигурационный файл для devilspie который поможет избавиться от границы окна и меню

Например /home/<user>/.devilspie/gnome-terminal.ds

содержание:

(if (is (window_role) "borderless")
  (begin
    (undecorate)
    (geometry "-0-0")
    (below)
    (skip_tasklist)
  )
)

(geometry "-0-0") поместит окно внизу справа

Когда файл конфигурации gnome-terminal.ds не был записан / изменен, вы должны создать его и остановить / перезапустить Devilspie Deamon, чтобы увидеть любые изменения. Не забудьте добавить демон в свои скрипты запуска (XFCE: Настройка> Сеанс и запуск).

Теперь нам нужен стартовый bash-скрипт, который вы можете добавить в свой автозапуск, как и devilspie. Что-то вроде этого:

#!/bin/bash

if [ $# -lt 1 ]
then
  echo "Usage: `basename $0` <iface>"
  exit 1
fi

killall -9 nethogs 2>/dev/null
sleep 5
`sudo -H -u <username> gnome-terminal -e "/usr/bin/nethogs -d 4 $1" --profile=<profile-name> --role=borderless`

exit 0

Вы должны передать аргумент скрипту, чтобы указать целевое устройство. Обратите внимание, что в скрипте есть команда sleep , просто чтобы убедиться, что предыдущие процессы nethogs не запущены.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .