wmctrl для удаленного отображения

wmctrl для удаленного отображения

Если я хочу использовать wmctrl для другого дисплея, какая командная строка нужна для этого?

Что-то вроде: su username -c "DISPLAY:50 wmtrl -r :ACTIVE: -b toggle,fullscreen" не сработало

Спасибо - у меня Ubuntu 12.04

решение1

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

  1. Должно быть wmctrl, а не wmtrl.

  2. Должен быть

           su -c command username
    

    вместоsu username-c command

  3. Там может бытьнетбыть активным окном в сеансе другого пользователя.

  4. Но самое главное, 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

предоставляя вам доступ к его дисплею.

Связанный контент