Получить контент из открытого окна в Linux

1

Я хочу собирать данные и анализировать их в конечном итоге из открытого окна в Linux.

Пример. Предположим, что окно терминала открыто. Мне нужно получить все данные, которые появляются в этом окне. После извлечения я бы проанализировал его, чтобы ввести определенные команды.

Так можно ли это сделать? Если да, то как? Я бы предпочел использовать python для кодирования всего этого.

Я предполагаю, что сначала мне нужно будет получить какой-то идентификатор для открытого окна, а затем использовать какую-то библиотеку, чтобы получить содержимое из окна, чей идентификатор у меня есть.

Пожалуйста, помогите. Я довольно новичок.

Теги:
window-managers

3 ответа

5

Вы можете (ab) использовать поддержку вспомогательных технологий (для чтения с экрана и т.д.), которые существуют в библиотеках инструментальных средств. Будет ли он работать, это специфический инструментарий: gtk и Qt имеют эту поддержку, но другие (например, Tk, Fltk и т.д.) Могут или не могут.

Linux Desktop Testing Project - это инструментарий python для злоупотребления этими интерфейсами для тестирования приложений с графическим интерфейсом, поэтому вы можете использовать его или посмотреть, как это сделать работает и делает подобное.

4

Я думаю, что правильный ответ может быть "с некоторым трудом". По сути, содержимое окна является растровым изображением. Это растровое изображение нарисовано множеством примитивов (в том числе "отобразить эту октетную строку, используя эту кодировку и определенный шрифт" ), но содержимое окна по-прежнему остается "просто пикселями".

Получение "простых пикселей" довольно прямолинейно, поскольку все это происходит. Вы открываете сеанс на X-сервере и говорите "дал мне содержимое окна W", и он передает его.

Делать что-то полезное с этим, к сожалению, совершенно другое дело, так как вам потенциально необходимо (по существу) OCR растровое изображение для того, что вы хотите.

Если вы решите пройти этот маршрут, посмотрите на источник xwd, как это, по существу, на то.

  • 0
    Хорошо. Это очень полезный ответ. Это означает, что нелегко получить информацию в текстовом виде.
  • 2
    @ 5lackp1x3l0x17: Большинство приложений имеют специальную поддержку для предоставления текстовой формы вспомогательным технологиям (например, программам чтения с экрана), поэтому вы можете использовать ее там, где это возможно.
Показать ещё 1 комментарий
1

Есть ли у вас какой-то контроль над выполнением терминала? В этом случае вы можете использовать команду script в сеансе терминала для регистрации всего взаимодействия с файлом, а затем прочитать и проанализировать файл.

$ script myfile
Script started, file is myfile
$ ls
...
$ exit
Script done, file is myfile
$ parse_file.py myfile

Если терминал работает внутри screen, у вас есть и другие варианты. Экран имеет встроенную регистрацию, screen -X отправляет команды на сеанс сеанса работы (экран пользователя).

  • 0
    Терминал был просто примером. Моя настоящая цель - прочитать содержимое другого окна (например, gedit, веб-страницы и т. Д.), Которое открыто. И да, у меня есть контроль над всем терминалом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню