Доступ к буферу обмена Unix

16

У нас есть сервер Linux, и на этом сервере есть несколько пользователей (таким образом, несколько учетных записей). Логично, что для разных пользователей будут разные буферы обмена.

Мой вопрос: так же, как в Windows, у нас может быть средство просмотра буфера обмена, как я могу увидеть содержимое буфера обмена в Unix?

Maggi
источник
3
Я не уверен, что вы просите? Ваши пользователи используют X? Если нет, и они используют, у sshних нет буфера обмена.
Ульрих Дангел

Ответы:

16

Твои рассуждения верны, но ты начал с неверной предпосылки. У Linux на самом деле нет «буфера обмена», эта концепция просто не является частью операционной системы. Вместо этого оконная система, почти всегда X11, реализует буфер обмена . Сервер X11, который управляет дисплеем и управляет им, создает буфер обмена. Таким образом, буфер обмена является свойством программы пользовательского уровня, а не операционной системы, и, кроме того, существует один набор буферов обмена для каждого дисплея (более или менее каждого монитора или экрана, но не всегда).

Тем не менее, буфер обмена X11 немного странный .

Что касается просмотра содержимого, я всегда любил xcb , но это, по-видимому, в наши дни кажется довольно неясным. Вам может понравиться parcellite , но, оглянувшись вокруг, кажется, что существует много менеджеров буфера обмена X11 и программ взаимодействия.

Брюс Эдигер
источник
11

Планшет ничего особенного и просто деталь реализации для некоторых программ, например X, emacs, vimи другие программы имеют реализации , что вы могли бы ссылаться как clipboards.

Поскольку вы говорите о сервере, я предполагаю, что ваши пользователи входят в систему через это, sshчто означает, что для этих пользователей нет буфера обмена, это обрабатывается их Hostsystem и terminal.

Если вы хотите получить доступ к Xбуферу обмена, есть несколько решений, например:

  • xclip - интерфейс командной строки для clibpoard
  • clipit - менеджер буфера обмена без зависимостей от других сред рабочего стола

Если вы хотите получить доступ к Xсодержимому буфера обмена для другого пользователя, вам необходимо получить доступ к Xсеансу для этого пользователя.

Есть много других вещей, которые вы можете посмотреть, например, autocutsel , интеграция между буфером обмена X и emacs и т. Д.

Ульрих Дангел
источник
1

В Emacs, изучить

clipboard-kill-region
clipboard-kill-ring-save
clipboard-yank

Я написал это, чтобы скопировать весь буфер в буфер обмена:

(defun copy-all ()
  "copy buffer to clipboard"
  (interactive)
  (clipboard-kill-ring-save (point-min) (point-max))
  (message "Copy done.") )

Кроме того , я сделал полезный псевдоним под названием хс, как это: xclip -selection clipboard. Затем echo $(pwd) | xc(например) отправит вашу позицию дерева каталогов в буфер обмена.

И, случайно, я заметил, что могу вставить в urxvt, нажав кнопку колесика мыши. Мне совсем не нравится использовать мышь, поэтому, если вы знаете, как связать это с сочетанием клавиш, скажите, пожалуйста.

Изменить: я обнаружил (где-то на этом сайте), что ответ на последний (мой) вопрос - это уже сделано, а именно Shift-Insert.

Эмануэль Берг
источник
Вы должны опубликовать свой ярлык bind-paste-to-клавиатура как вопрос - таким образом вы получите лучшую помощь.
Брюс Эдигер
@BruceEdiger: Правильно, но все остальное в посте, включая вставку в терминал (хотя бы один из способов сделать это), полезно, так как я понял вопрос так - понимаете, где я получаю? - просто игнорируйте последнее предложение, если оно вас не устраивает :)
Эмануэль Берг