Отрисовка элементов интерфейса происходит с помощью объектов С++ фреймворка Qt - QWidget. Получение сообщений происходит благодаря Linux API, используя модуль sys/msg.h.
Получение сообщений, как ранее говорилось - происходит благодаря Linux API - модулю sys/msg.h. Получение сообщений происходит в бесконечном цикле функции MainWindow::msgget_loop(), где внешняя функция msgrcv является блокируещей. Та в свою очередь принимает ID, которое генерируется с помощью функций ftok, которая в свою очередь генерирует ключ с помощью файла по пути /etc/qtmpv/token.txt, который в свою генерируется благодаря установщику installer.bash. В директории child данного репозитория находится простой пример на C, который генерирует случайные числа и отсылает их с помощью msgsnd в бесконечном цикле.
Для лучшей оптимизации создается процесс ffplay с разраешением 1920х1080 пикселей и 24 к/с. Далее с помощью X11 API вычисляются координаты и размеры окна процесса ffplay. XOpenDisplay(NULL) подключается к серверу X11, далее в функции MainWindow::find_windows(Display *display, ulong *winCount) мы получаем список всех открытых окон, далее пробегаясь по полученному списку мы узнаем PID каждого окна и сверяем его с ранее полученым PID ffplay процесса. Далее с помощью функции XTranslateCoordinates передаем в структуру attrs класса MainWindow координаты и размеры нужного нам окна и далее проверям на изменение эти данные. Если изменения произошли, то мы удаляем виджеты и снова отрисовываем их, для того, чтобы они были отрисованы поверх окна ffplay. Так же в функции MainWindow::msgget_loop() происходит изменение цвета в виджете overlayLine.
Установка происходит всего-лишь с помощью установщика:
sudo bash installer.bash