Luastatus - статут на генератор данни за панели, както и подкрепа на i3bar DWM - с отворен код

Първа версия luastatus - универсален генератор на данни за държавната панел, който поддържа i3bar и DWM. Програмата е написана на C и лицензиран под GNU LGPL v3 на.

Повечето от генераторите за данни за панели за състоянието на плочки WM или актуализиране на информацията на таймера (например, Conky), или да изискват сигнал, за да прехвърлите (например, i3status). Панел като част от графичните среди са склонни да се актуализира информацията незабавно и автоматично като luastatus.

luastatus работа с зареждаеми модули на два вида: приставки (отговорни за работата с всеки източник на събитие) и т.нар barlib'y (отговаря за работата със специфичен статус бара).

Схема на luastatus следното:

  • Един от най-плъг-ин съобщава, че е имало случаи, и генерира го описва, на Lua обекта.
  • Наречен потребителски дефинирана функция (widget.cb) за този обект като аргумент.
  • Върнатата стойност е преминал към него в barlib.

Barlib също може да провокира вниманието програма джаджа, че програмката е събитие. В този случай също така генерира barlib Lua-обект описва случай, и дефинирана от потребителя функция (widget.event) се причинява да го като аргумент. Например, barlib i3 да се каже, когато потребителят кликне върху джаджа, и предава информация за това какво се натисне бутон, и е направена своята позиция.

В този момент следните приставки:

  • ALSA - следи изменението на обема канал ALSA.
  • FS - генерира събитие таймер, джаджа изпраща информацията за броя на окупираните пространство във файловата система. Той също така поддържа събуждане FIFO.
  • MPD - следи обема и текущата плейлиста MPD.
  • тръба - и започва процес генерира събитие всеки път, когато го извежда низ стандартния изход (можете да посочите друг изход сплитер). Тази поредица се предава на приспособлението.
  • таймер - таймер генерира събитие (като джаджа, часовник джаджа или четене на всички файлове в директорията / PROC),. Той също така поддържа събуждане FIFO.
  • XKB - следи текущата оформлението клавиатура и преминава номер приспособление група активно оформление и името му.
  • xtitle - следи за текущия прозорец и информира заглавието му.

И barlib'y следното:

Е, вие w създаде 10 потоци

След като създаде 10 нишки и издърпайте всеки път Луа-функция - много по-малко скъпо, отколкото процесите за производство на всеки път.

xfce4-панел, например, чрез процеса на джаджата поддържа - и никой не се оплаква. Подозирам, че панели почивка DE също държи поток или в процес на приспособлението.

И патерици много по-малко - не е необходимо всеки да изпращате сигнали за разбор на нещо Schell и т.н.

Потоци стотици пъти (или дори повече) ефективни процеси. И без контекст преминат към тях се забави до нивото на процесите, както и по-Баш.

Например, просто приложение, с помощта на QtCore похарчи около 1М инструкции само на свързване и инициализация. В същото "време" може да хвърлят хайвера си и да убие стотици нишки.

Потоци стотици пъти (или дори повече) ефективни процеси.

QtCore похарчи около 1М инструкции само на свързване и инициализация.

Това е нещо, което да правя с него?

Какво е гъвкавост?

Фактът, че имам система SCADA, и мога да пиша плъгин за следене Баче / B / пресича / ГСМ / удобен език и издърпайте процес за определени събития.

Във вашия случай, че трябва да напиша в Lua? На изключително само на тях? И ако тя работи чрез DBUS, DBUS интерфейс за мен в Б / Lua града?

Това не е вярно за всички източници на събития и като цяло шип.

Spike за започване на процес за обработка на събитието? В Unix е традиция, така че това е: Pipe, forkan сървър, IPC.

И Lua е идеален за този боклук, мисля.

И там е всякакъв вид плъгини писти като отделно приложение в системния трей.

"Как в тавата" - необходимо е да се направи разклонението, за да създадете вашият прозорец и помоли за покриване zareparentila му.

По принцип, нещо като това вероятно се случва там, защото Тичах на бара, а тя е на 3 дъщерни процес.

Аз не разбирам. Предлага се всеки плъгин описания на файлове, както и времето, в което трябва да го дръпне отново, ако тези описания ще бъдат нищо, дадоха? Основна програма ще им бъда poll'it? И това, което имате GTK и "събитие-линия"?

GTK общо с факта, че имате GUI GTK на самия панел и на приставката за GTK GUI. Ако те съществуват в същия процес, те трябва да работят в една нишка (в действителност - в основната нишка) в общия цикъл на събитията. В друг GTK не могат. Ако искате да запазите вашата GUI отделно, виж по-горе за разклонението. -)

Вие, разбира се, може да създаде нишки, за да изпълняват асинхронни операции и обмен на данни с основния поток през IPC, но тя е "на обща основа." Излишно е GTK в parallelizing задачи, които не помагат.