2

Я использую 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 ответ1

2

У меня были припадки при переключении на 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 из вашего доса.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 в качестве каталога запуска)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .