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-серверу они подключены. Если вы не настроили несколько работающих серверов (чтобы одновременно могли войти несколько пользователей), это будет одинаковым для всех пользователей.