2017-02-02 214 views
0

Я пытаюсь написать простой скрипт в python, который выводит текст поверх всех окон и полноэкранных приложений.Python: наложение текста поверх всех окон, включая полноэкранный режим в Linux

Цель этого скрипта - вывести нагрузку в среднем и свободную память (и другую полезную статистику) аналогичным образом, что работает счетчик Steam FPS.

До сих пор я пробовал pygame, но насколько я вижу, он может писать только в собственное окно.

Как я понимаю, мне нужно написать непосредственно в буфер кадров?

Целевая ОС - это Linux с картой Nvidia и Xorg, но я бы предпочел, чтобы она была аппаратной агностикой.

Большое спасибо!

+0

Вы не можете написать буфер кадра. X11 - это сетевой протокол, буфер кадров отсутствует. Возможно, вам придется использовать низкоуровневые API x11. Это будет непросто. –

ответ

0

Я пытаюсь сделать то же самое, и до сих пор она работала - но я не уверен, полноэкранных приложений - с PyOsd: http://python-osd.sourcearchive.com/documentation/0.2.14-5.1/index.html

Простейшим примером является

import pyosd 
p=pyosd.osd() 
p.display("Hello world!") 
+0

Спасибо! Это работает. Lib немного неуклюже, но выполняет эту работу. Он даже работает в трехмерных полноэкранных приложениях! – user229874

+0

Добро пожаловать! Я рад, что это помогло, и жаль, что я не использовал код. Вы также пытаетесь обновить OSD со скоростью 20/30 кадров в секунду (или более)? –

+0

Было бы хорошо, но через несколько секунд обновление будет достаточно быстрым, чтобы получить сущность вещей, в частности, выяснить, где находится горло бутылки. – user229874