Запустите startxwin в текущем терминале

1142
TehTechGuy

Я использую Cygwin и использую Console2 вместо стандартного терминала Cygwin. Мне нужно использовать пересылку X11, и каждый раз, когда я запускаю startxwin, он запускает его в новом терминале. Вместо этого я хотел бы открыть его в том же терминале (или в новой вкладке) внутри Console2. В идеале я мог бы либо запустить Cygwin с помощью startxwin, либо запустить новую вкладку с сервером Cygwin XWin. Это, вероятно, потребует редактирования .startxwinrcфайла, но я не уверен, как это сделать. Я только недавно начал использовать пересылку X11 в Cygwin.

Как я могу это сделать?

Благодарю.

РЕДАКТИРОВАТЬ
Я пытаюсь начать сеанс X11 в Cygwin. Это можно сделать, установив DISPLAYпеременную окружения в 0.0. Затем сервер X11 запускается с помощью команды startxwin. После выдачи этой команды новый терминал открывается в другом окне. Этот терминал очень простой и довольно уродливый. Я хочу, чтобы этот терминал отображался как новая вкладка в Console2 или выполнялся в том же терминале, с которого был запущен. Таким образом, я могу продолжать работать в терминале, который был оптимизирован по моему вкусу. В качестве альтернативы, если есть возможность запустить Cygwin с уже включенной переадресацией X11, это было бы более идеально. В настоящее время я запускаю Cygwin с помощью этой командыH:\bin\bash.exe --login -i -c "cd /cygdrive/d; exec /bin/bash", Вся причина, по которой мне нужно использовать X11, заключается в том, что я работаю по SSH на удаленном сервере, на котором есть программы с графическим интерфейсом, которые мне нужно использовать. Я просто хочу иметь возможность делать все внутри Console2.

1
Не ясно. Что именно вы запускаете, и в чем проблема? Maximus 11 лет назад 0
@Maximus, см выше редактировать TehTechGuy 11 лет назад 0

1 ответ на вопрос

1
Scott

У меня были припадки при переключении на console2, когда я пытался последовательно заставить консоль распознавать, когда X работал, а затем передавать ее должным образом на вкладки, когда я настраивал вкладки для подключения к другим системам. Это решение, на котором я остановился.

Сначала нужно было запустить сеанс cygwin через простой файл dos bat в оболочку, чтобы правильно определить, запущен X или нет. Для этого я использовал if / test, чтобы увидеть, был ли уже установлен $ DISPLAY. Если нет, он запускает простой вызов xset для -display: 0.0, чтобы проверить, работает ли X. (0.0 - это значение по умолчанию для моей настройки cygwin. Очевидно, что при желании вы можете проверить и другие). Если он возвращает true, он соответственно устанавливает DISPLAY. Я добавил это в конец профиля / etc / в cygwin, хотя вы, вероятно, могли бы поместить его в .bashrc или какой-либо другой скрипт, который всегда будет запускаться при входе в систему.

# /etc/profile check to set display if X is running on :0.0 if [ -n $DISPLAY ]; then if xset -display :0.0 q &>/dev/null; then export DISPLAY=:0.0 fi fi 

При добавлении его в / etc / profile вам нужно вызвать оболочку входа при запуске console2. например, вызвать bash --login -i из вашего DOS-файла .BAT.

Чтобы справиться с переходом в другие системы, я изначально использовал простой вызов ssh из командного файла, но это было пропущено при настройке этого дисплея. Чтобы обойти это, я изменил файл bat, чтобы вместо этого сначала вызвать bash --login:

(Настройка DISPLAY была первоначальной попыткой другого предложения. На самом деле он ничего не делает для большинства приложений Cygwin)

ssh.bat

@echo off  C: chdir C:\cygwin\bin  if NOT "x%DISPLAY%" == "x" set DISPLAY=":0.0"  set sshcmd="ssh -Y "  bash --login -c %sshcmd%%1% 

Важно отметить, что изменения в / etc / profile ничего не сделают, если X-сервер cygwin (или какой-либо другой сервер Xwindow) не работает на: 0.0 или если вы не вызываете оболочку входа в систему. Но если вы используете bash -i --login в вашем Cygwin.bat и указываете свои настройки console2 на этот файл, и используете пример Ssh.bat для подключения к удаленным системам (например, поместите C: \ cygwin \ ssh.bat [remote- host-name] в поле «Shell:» для настроек вкладки «Консоль» и C: \ cygwin \ bin в качестве каталога запуска)

Спасибо за решение. Как вы сказали, вы все равно должны убедиться, что X-сервер работает. Также было бы хорошо изменить ssh.bat для принятия имени пользователя. Кроме этого, кажется, работает хорошо. Это гораздо приятнее, чем использовать стандартную оболочку X. TehTechGuy 9 лет назад 0