Получение уведомлений об изменениях содержимого буфера обмена

Получение уведомлений об изменениях содержимого буфера обмена

Я хотел бы следить за буфером обмена таким же образом, как и inotifyза файлами, чтобы я мог отображать фактическое содержимое буфера обмена в строке состояния tmux или в любом другом пользовательском графическом интерфейсе в моей системе. Мне не нравится опрос, потому что он загружает систему и не очень отзывчив. Я использую GNOME/X11. Какие способы существуют?

решение1

Поскольку ответа так долго не было, я попробую разобраться.

Во-первых, опрос был бы простым, но вы сказали, что не хотите этого делать.

Узнайте, какая программа предоставляет ваш фактический буфер обмена, закройте ее, а затем запустите ее с помощью strace и выполните несколько простых действий с буфером обмена и посмотрите, что она делает. Надеюсь, это даст вам некоторые подсказки относительно того, как и где она сохраняет новые данные. Как только вы это узнаете, вы будете знать, что конкретно вы пытаетесь обнаружить.

решение2

Clipnotifyпростая программа, которая реагирует на обнаружение любого изменения в буфере обмена.

P.S. Он также отслеживает ПЕРВИЧНЫЕ события буфера обмена (выделение текста), что может быть нежелательным. Это легко обойти, просто закомментировав одну строку:

XFixesSelectSelectionInput(disp, root, XA_PRIMARY, XFixesSetSelectionOwnerNotifyMask);

в файле исходного кода clipnotify.c(Все кредиты на комментарий веще один ответ stackexchangeсделано пользователем по имениАхилза предложение этого обходного пути.. он избавил меня от многих проблем)

P.S. чтобы установить clipnotify, просто клонируйте репозиторий github и запустите команду makeв клонированном каталоге. В каталоге будет создан новый исполняемый файл, который нужно запустить для выполнения программы.

Связанный контент