Если я хочу использовать wmctrl для другого дисплея, какая командная строка нужна для этого?
Что-то вроде: su username -c "DISPLAY:50 wmtrl -r :ACTIVE: -b toggle,fullscreen" не сработало
Спасибо - у меня Ubuntu 12.04
решение1
Есть несколько причин, по которым указанная выше команда не может работать.
Должно быть
wmctrl
, а не wmtrl.Должен быть
su -c command username
вместо
su username-c command
Там может бытьнетбыть активным окном в сеансе другого пользователя.
Но самое главное,
su
предназначено для переключения пользователя текущего текстового окна внутри GUI, а не любого другого окна. Например,руководство по эксплуатациисостояния:
... когда su используется в окне терминала (т. е. текстовом окне в графическом интерфейсе), только это окно терминала и программы, запущенные из него, запускаются с учетной записью нового пользователя (например, root), ...
Правильный способ сделать что-то вроде того, что вы задумали, — это обратиться к X-серверу другого пользователя, против чего, однако, все сеансы X хорошо оснащены. Например, если вы вошли через ssh
в удаленную машину как пользователь A, B должен разрешить вам сделать это с помощью
xhost +
и тогда вы сможете получить доступ к его X-сессии с помощью
export DISPLAY=:0.0
и теперь твоя команда,
wmctrl -r :ACTIVE: -b toggle,fullscreen
будет работать.
Если все, что вам нужно, это поделиться терминалом с другим пользователем, чтобы он мог видеть, что вы печатаете, то вам следует установить screen
, начать сеанс с screen
, нажать последовательность клавиш Ctrl+A, затем дать две команды multiuser on
и acladd B
. Теперь пользователь B может присоединиться к вашему сеансу экрана с помощью screen -x A/
.
Наконец, ваш вопрос, похоже, относится к multi seat arrangement
. Они крайне редки, и у меня нет ни одного, чтобы проверить решение. Вы действительно находитесь в одной из этих ситуаций? Если так, то, вероятно, стоило бы указать это в названии вашего OP, так как это требует знания не такой уж частой конфигурации.
Но в любом случае,вероятно(= У меня нет многопользовательской конфигурации, чтобы проверить это), вы можете добиться этого тем же методом, что и для подключения ssh
, за исключением того, что в этом случае пользователь B должен ввести команду:
xhost +SI:localuser:A
предоставляя вам доступ к его дисплею.