Нечетное поведение xclip

В xclip руководстве говорится, что существует три места хранения, названные основными (XA_PRIMARY), вторичный (XA_SECONDARY) и буфер обмена (XA_CLIPBOARD). Я скопировал (Ctrl+c) некоторый текст со своего браузера и исследовал содержание этих трех мест, упомянутых выше в терминале:

xclip -s primary -o
xclip -s secondary -o
xclip -s clipboard -o

Все три содержат тот же текст.

Если я теперь ввожу

date | xclip -selection XA_PRIMARY

Только XA_PRIMARY должен содержать текст даты. Но на самом деле другие два т.е. XA_SECONDARY и XA_CLIPBOARD также содержат тот же текст (информация о дате). Таким образом, эти три являются одними и теми же? И раз так какой смысл?

Что экранировало меня еще больше, Ctrl+Shift+v (все еще в терминальном режиме) вставляет orgiginal текст, который я скопировал с браузера! который предполагает, что собственный буфер обмена оболочки в действии также.

У кого-то есть пример, что demonstarates, что эти три места могут содержать различные значения одновременно и как они касаются регулярного буфера обмена?

3
задан 21 October 2016 в 11:59

2 ответа

К сожалению, xclip тихо игнорирует недопустимые параметры командной строки:

Существует нет -s опция как оба -selection и -silent запустите с -s. Необходимо использовать, по крайней мере, -se.

Как xclip просто игнорирует Ваш -s опция команды

xclip -s primary -o
xclip -s secondary -o
xclip -s clipboard -o
xclip -s asdfghj -o

все просто используют выбор по умолчанию (primary).

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

date | xclip -selection XA_PRIMARY
date | xclip -selection XA_SECONDARY
date | xclip -selection XA_CLIPBOARD

все использование основной выбор.

Используйте что-то как

date | xclip -se p    # write to primary selection
xclip -se c -o        # read from clipboard
2
ответ дан 1 December 2019 в 16:21

Я обращусь к недостающей точке, которая является "почему 3 различных буфера обмена".

  1. Исторически, Вы могли дать команду с 1 аргументом или с 2. Сначала воздействовал бы на ОСНОВНОЙ только, 2-й - и на ОСНОВНОМ и на ВТОРИЧНОМ. "Переключающийся" механизм, если Вы будете. Или резервное копирование, если Вы действительно хотели оставить то, что Вы имели в одном только ОСНОВНОМ и нетронутый. Спецификация однако не сопровождалась, и различные приложения сделали это различными способами.
  2. Windows / Mac популяризировал буфер обмена.
  3. Ведомый к интересному случаю: XA_PRIMARY использовался для выборов (как разработано), редко у кого-либо была хорошая идея для XA_SECONDARY, и XA_CLIPBOARD... был похож на буфер обмена.

xclip и xsel работа над XA_PRIMARY по умолчанию, начиная с большей части X-работы-приложений этот путь: при выделении текста он выбран и поэтому приземляется в ОСНОВНОМ буфере ВЫБОРА.

Если Вы хотите вставить ОСНОВНОЙ, используйте среднюю кнопку мыши или Shift+Insert. Или передача, это - содержание к БУФЕРУ ОБМЕНА и просто вставляет xclip -o | xclip -se c.

Превосходное чтение: https://specifications.freedesktop.org/clipboards-spec/clipboards-latest.txt

1
ответ дан 1 December 2019 в 16:21

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

Похожие вопросы: