Как работает буфер обмена?

На глубоком уровне, как работает копирование чего-либо в буфер обмена? Есть ли файл, в котором хранится текст или изображение, которое я копирую куда-нибудь?

Я нашел в памяти место в буфере обмена, где на этот вопрос никогда не отвечали. Я также нашел много ссылок на xclip. В настоящее время у меня не установлен xclip, но мой буфер обмена работает нормально - например, я могу скопировать что-то из Firefox и вставить его в терминал без проблем. Очевидно, что-то должно происходить на другом уровне, чем xclip. Что это такое и как это работает?

1 ответ

X обрабатывает буфер обмена, и вы можете прочитать об этом здесь. https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt

X11 буфер обмена, который известен как выборки, определен в ICCCM. https://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html

Цитируя приведенную выше ссылку.

Может быть произвольное количество выборок, каждый из которых назван атомом. Однако, чтобы соответствовать соглашениям между клиентами, клиенты должны иметь дело только с этими тремя вариантами:

ПЕРВИЧНЫЙ

СРЕДНЯЯ

CLIPBOARD

Все эти варианты сохраняются в памяти и не записываются на диск.

Стоит прочитать " X Selections", "Cut Buffers" и "Kill Rings". https://www.jwz.org/doc/x-cut-and-paste.html

Другое полезное чтение - Написание кросс-платформенной библиотеки буферов обмена https://jtanx.github.io/2016/08/19/a-cross-platform-clipboard-library/

Если вы заинтересованы в том, как взаимодействовать с выборками X11 грамматически, обязательно посмотрите исходный код xclip на GitHub. https://github.com/astrand/xclip

Другие вопросы по тегам