У меня есть script, который работает от udev
, когда я подключаю внешний диск. Это всегда сработало. Но после обновления от Linux 3.8/Xorg 1.12/Mint 14 (Ubuntu 12.10) до Linux 3.11/Xorg 1.14/Mint 16 ( Ubuntu 13.10), он больше не работает.
script по-прежнему выполняется, но ни одна из команд, требующих отображения, не работает. Я решил, что выйдем из демона udev
и запустим вручную udevd --debug
для подробного вывода (подробнее см. Ниже).
Этот script используется для работы в Mint 14/12.10:
export DISPLAY=:0
UUID=$1
DEV=$2
notify-send -t 700 "mounting $DEV ($UUID)"
gnome-terminal -t "Backing up home..." -x rsync long line of data
zenity --warning --text="Done."
Но не больше в Монетный двор 16/13.10. Если вы задаетесь вопросом о возможных решениях, я постепенно добавлял материал, и теперь он выглядит так:
export DISPLAY=:0.0
xhost +local:
xhost +si:localuser:root
xhost +
DISPLAY=:0.0
export DISPLAY=:0.0
UUID=$1
DEV=$2
notify-send -t 700 "mounting $DEV ($UUID)"
gnome-terminal -t "Backing up home..." -x rsync long line of data
zenity --warning --text="Done." --display=:0.0
Но это все еще не работает. udevd --debug
все еще показывает это:
'(err) 'No protocol specified'
'(err) ''
'(err) '** (gnome-terminal:24171): WARNING **: Could not open X display'
'(err) 'No protocol specified'
'(err) 'Failed to parse arguments: Cannot open display: '
'(err) 'No protocol specified'
'(err) ''
'(err) '** (zenity:24173): WARNING **: Could not open X display'
'(err) 'No protocol specified'
'(err) ''
'(err) '(zenity:24173): Gtk-WARNING **: cannot open display: :0.0'
'(err) 'No protocol specified'
Обратите внимание, что работает любая логика bash. Повторяются тестовые vars до >>/tmp/test.log
. Это просто доступ к дисплею, который больше не работает.
Это сводит меня с ума. Каков правильный способ достичь этого сейчас?
Обновление 2013-12-20
Таким образом, в предыдущем Ubuntu команды X
автоматически найдут путь к текущему X
, используя пользователя.
Теперь мне кажутся эти две вещи каждый раз:
- На
X
с использованием пользователя:-
xhost +si:localuser:root
-
- На стороне
root/udev
:- Скопируйте
X
с помощью файла пользователя~/.Xauthority
в/root
- Скопируйте
Это "чувствует", как шаг назад во времени. Это работает только при первом входе в систему как один и тот же пользователь, поэтому я могу скопировать файл .Xauthority
из этого дома пользователя, когда выполняется script.
Какой "трюк" использовал старый Ubuntu, чтобы сделать это автоматически?