Делаю на веб-странице (для определённости — в firefox) Ctrl-A, переключаюсь в LibreOffice Writer, кликаю средней кнопкой мыши — вставляется красиво отформатированный текст и картинки. Можно даже сохранить как HTML с картинками.
А как сделать то же автоматически, не задействуя LibreOffice? В идеале — скриптом, который автоматически определяет, что буфер изменился, и тут же сохраняет содержимое.
Пробовал читать буфер скриптами на питоне средствами Qt6 и GTK4. Большая часть нагугленных скриптов устарели и или не работают, или крэшат интерпретатор. Методом тыка сумел найти отображение в виде HTML или текста для Qt6. Но не primary selection, а clipboard.
from PyQt6.QtWidgets import QAbstractItemView, QApplication, QTableView
from PyQt6.QtGui import QStandardItem, QStandardItemModel
app = QApplication([])
c = app.clipboard()
Далее c.mimeData().formats()
выдаёт тот же список, что и xclip -t TARGETS
, HTML можно получить c.mimeData().html()
, текст — c.mimeData().text()
или c.text()
. Как я понял из хэлпа, c.Mode(1)
должно переключить на selection вместо clipboard, но это не происходит.
Как в PyQt6 обращаться к primary selection?
Как в PyQt6 детектировать изменение primary selection?
Как LibreOffice извлекает картинки из скопированного с веб-страницы? — Ответ: похоже, парсит HTML и скачивает содержимое <img ...>
. В таком случае, удалю простыни исследования xclip. чтобы не отвлекали.