Показаны сообщения с ярлыком X. Показать все сообщения
Показаны сообщения с ярлыком X. Показать все сообщения

четверг, 10 сентября 2020 г.

Linux+Windows: Доступ из MS Windows к оконным приложениям X Windows

Захотелось поработать удалённо с оконными приложениями линукса. Насколько я знаю, линукс позволяет такие штуки - когда программа выполняется на одной машине, а окна рисует на другой - поэтому надеялся обойтись без средств удаленного доступа типа TeamViewer или VNC, и эта надежда отчасти оправдалась. Нужна лишь небольшая настройка.

1. Настраиваем линукс, на котором будут выполняться программы. У меня Slackware, но, думаю, под другими вариантами настройка будет примерно такой же. Нужно в конфигурационном файле /etc/ssh/sshd_config найти и раскомментировать следующие строки:

X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes

2. Настраиваем Windows, которая будет заниматься отрисовкой окон. Оконные приложения в X11, как я понял, устроены хитро: приложение является клиентом, а окнами занимается сервер, которому, в принципе, всё равно где работать - на этой же машине или на соседней. Поэтому нужно поднять сервер X11. Мой выбор пал на Cygwin/X.

2.1. Устанавливаем Cygwin/X. Это несложный процесс: запускаем установщик cygwin, в которм выбираем для установки пакеты:

xorg-server
xinit
xorg-docs
xlaunch

2.2. Настраиваем Cygwin/X. Как выяснилось, "из коробки" у него не очень хорошо с подключениями tcp, переключением раскладки клавиатуры и глубиной цвета в rdp-сессии.

2.2.1. Переключение раскладки клавиатуры: в папке путь_установки_cygwin/home/имя_пользователя/ создаём файл .XWinrc с таким содержимым:

XKBLayout   us,ru
XKBModel    evdev
XKBOptions  grp:alt_shift_toggle
XKBRules    base
XKBVariant  ,winkeys 

Клавиатура будет переключаться по Alt+Shift. Если хотим Ctr+Shift, надо в XKBOptions указать grp:ctrl_shift_toggle.

2.2.2. Доступ по tcp: изменяем ярлык запуска сервера, дописывая в него параметр -listen tcp после двойного минуса (перед двойным минусом перечисляются параметры, относящиеся к клиенту, после него - к серверу):

путь_установки_cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; exec /usr/bin/startxwin -- -listen tcp"

Сервер будет ожидать входящие подключения на 6000 порту.

2.2.3. Корректировка глубины цвета: если работа с Windows производится в RDP-сессии, как у меня, то окна отрисовываются почему-то с минимальной глубиной цвета, чуть ли не в 16-цветной палитре. Исправляет это параметр -nocompositewm. То есть, окончательно команда ярлыка запуска сервера приобретает следующий вид:

путь_установки_cygwin\bin\run.exe --quote /usr/bin/bash.exe -l -c "cd; exec /usr/bin/startxwin -- -listen tcp -nocompositewm"

2.3. Настраиваем PuTTY. Переходим в категорию Connection -> SSH -> X11 и выставляем там параметры:

Enable X11 Forwarding              -> true
X11 Location                       -> :0.0
Remote X11 authentication protocol -> MIT-Magic-Cookie-1
X authority file for local display -> путь_установки_cygwin\cygwin\home\имя_пользователя\.Xauthority

После всех настроек можно заходить через PuTTY на линуксовую машину и запускать на ней оконные приложения (xclock, xlogo, firefox и т.д.). Работает всё, правда, небыстро, но тут уж - как есть...

Литература:

http://tolik-punkoff.com/2016/11/21/nastrojka-x11-forwarding-cherez-ssh-s-pomoshhyu-putty-i-xming/

https://datacadamia.com/ssh/x11/cygwinx_remote_client#with_putty

https://stackoverflow.com/questions/34932495/forward-x11-failed-network-error-connection-refused

https://x.cygwin.com/docs/ug/setup.html#setup-cygwin-x-installing

http://cygwin.1069669.n5.nabble.com/X-colormap-problem-when-viewed-via-Microsoft-Remote-Desktop-td132076.html

четверг, 15 мая 2014 г.

Slackware: выставить разрешение 1280x1024 на GF9500GT + SyncMaster 913n

В один прекрасный момент захотелось на своей Slackware 14.0 x64 устроить разрешение 1280x1024. Да, времена меняются - помнится, я совсем недавно добивался своего любимого 800x600, потом 1024x768... Теперь вот это.

В общем, всё оказалось просто:

1. Вышел из иксов (т.к. они у меня запускаются не автоматически, это было совсем просто. В противном случае там какие-то сложности)

2. Установил драйвер NVIDIA-Linux-x86_64-325.15.run командой:
sudo sh NVIDIA-Linux-x86_64-325.15.run
Он там чего-то там поругался, поотключал, попросил перезагрузиться, продолжил, сконфигурировал, и... визуально ничего не поменялось. Только добавилась прикольная команда: nvidia-settings, в которой можно посмотреть всякие настройки видеокарты.

3. В созданном на предыдущем шаге /etc/X11/Xorg.conf в разделе "Monitor" прописал подсмотренные где-то в инете строки:
Section "Monitor"
    ....
    VertRefresh 40-90
    HorizSync   30-81
    ....
EndSection

4. Запустил xfce обратно командой:
nohup startxfce4 &

И вот тогда уже, наконец смог в меню "Настройки" -> "Дисплей" поставить нужное мне разрешение экрана.

суббота, 29 октября 2011 г.

Как на Ubuntu 11.10 увидеть приложение X, запущенное на другой машине ?

Предположим, есть удалённая машина AAA, есть локальная рабочая станция BBB под управлением Ubuntu 11.10, за консолью которой сидим мы, и на которой запущен X-сервер, и нам захотелось, чтобы некое приложение выполнялось на AAA, а отображалось на BBB.

В общем случае цепляемся по ssh на удалённую машину AAA и на этой машине выполняем следующую команду:
export DISPLAY=BBB:0.0

После этого запущенная в этой сессии на AAA программа будет пытаться нарисовать себя через иксы рабочей станции BBB. И, конечно, обломится. Потому что линукс, а в нем любая задача - квест.

Иксы заботятся о безопасности, поэтому на локальной машине BBB надо выполнить команду:
xhost AAA

Но этого, разумеется, недостаточно, если машина BBB работает под убунтой, ведь вывод команды ps -ef | grep listen даёт понять: иксы тут стартуют с ключом -nolisten tcp.

Для того, чтобы данный ключ убрать, в Ubuntu 11.10 есть интуитивно понятное решение - прописать в /etc/lightdm/lightdm.conf следующую строчку:
xserver-allow-tcp=true


После перезагрузки всё, наконец, оживает...