Как работает буфер обмена?
На глубоком уровне, как работает копирование чего-либо в буфер обмена? Есть ли файл, в котором хранится текст или изображение, которое я копирую куда-нибудь?
Я нашел в памяти место в буфере обмена, где на этот вопрос никогда не отвечали. Я также нашел много ссылок на 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