xclip не может общаться с вашим X-сервером. Убедитесь, что $ DISPLAY установлен правильно. Другие X-клиенты работают с тем же параметром $ DISPLAY?
Это:
$ echo 'hello' | xclip
у меня просто отлично работает
редактировать
Вы получаете ошибку после su
обращения к другому пользователю, потому что у этого пользователя нет соответствующих разрешений для подключения к вашему X-серверу. X использует протокол проверки прав доступа, известный как MIT magic cookie, который работает путем создания случайной строки для использования в качестве пароля. Этот пароль хранится в файле $XAUTHORITY
, или ~/.Xauthority
если переменная окружения не установлена. Это управляется xauth
инструментом. Например,
$ xauth list … Feynman/unix:0 MIT-MAGIC-COOKIE-1 <<redacted>> …
Я не уверен, для чего вы делаете su, но:
- если это так, вы можете прочитать файл, а затем просто запустить cat от имени другого пользователя и направить вывод su в xclip. Таким образом, xclip работает как ваш пользователь и работает.
- если вы пытаетесь установить буфер обмена для сеанса X другого пользователя, то вам нужно будет установить
$DISPLAY
отображение$XAUTHORITY
этого пользователя и файл полномочий X этого пользователя. Просмотрите ConsoleKit (если вы его используете) и/var/lib/gdm
(если вы используете gdm), чтобы найти указанные вещи.
Если ничего из вышеперечисленного нет, вам придется использовать xauth для настройки авторизации и помнить, что все, что подключается к вашему X-серверу, может принести все виды зла, например, наблюдать за всеми вашими нажатиями клавиш.
PS: $DISPLAY
ссылка на какой X-сервер они вошли в систему. Если вы не настроили несколько работающих серверов (чтобы одновременно могли войти несколько пользователей), это будет одинаковым для всех пользователей.