У всех есть как linux console, так и экземпляр X11 на каком-нить tty. Меня озаботило следующее. Как,универсальным образом, не прибегая к сторонним библиотекам типа Qt(но там с linux console не берется) снять снимок экрана.
Так вот задача. хочу: программа делает скриншоты с текущего экрана и неважно что на нем, linux console или иксы. что умею: с помощью framebuffer брать скрины с linux console.И вообще с экрана. НО. если фреймбуфер не настроен так же как и Иксы(разрешение или глубина цвета), то через него не получается получить полноценное содержимое экрана.
Умею с помощью Qt или совсем чисто на X библиотеках получать содержимое экрана, но это тянет за собой много зависимостей,в том числе и от версий библиотек. Используя только Xlib - не написал, но вместе с ImageMagick или Magick++ написал. Но я хочу, чтобы мое приложение должно иметь минимум зависимостей.
Приходит разумный вопрос: почему бы не настроить одинаково Иксы и фреймбуффер - потому что пользователь не должен заметить изменений в своей системе.Все это делается чтобы снимать скрины с машины, пользователь которой не знает, что его сейчас снимают и он не должен переживать =)
Что хочу спросить: в /dev есть такие устройства как nvidia0 nvidiactrl и т.д. Эти уустройства создаются драйвером видеокарты. Все что мне пока понятно - так это то, что они символьные =))) Как с ними взаимодействовать и через какие ioctl - непонятно. НО ведь как-то это возможно! Или же есть еще какой-нибудь механизм,кроме фреймбуффера для получения содержимого экрана.
Если кто знает или сталкивался с такой темой - поделитесь. Или же реализация скриншотов на чистой Xlib.
Спасибо.