Uruchom startxwin w bieżącym terminalu

2

Używam Cygwin i używam Console2 jako zamiennika domyślnego terminalu Cygwin. Muszę użyć przekierowania X11 i za każdym razem, gdy uruchamiam startxwin, uruchamia go w nowym terminalu. Zamiast tego chciałbym, aby był otwarty w tym samym terminalu (lub w nowej karcie), w Console2. Idealnie byłbym w stanie uruchomić Cygwin za pomocą startxwin lub uruchomić nową kartę z serwerem Cygwin XWin. Prawdopodobnie będzie to wymagało edycji .startxwinrcpliku, ale nie jestem pewien, jak to zrobić. Niedawno zacząłem używać przekazywania X11 w Cygwin.

Jak mogę to zrobić?

Dzięki.

EDYCJA
Próbuję rozpocząć sesję X11 w Cygwin. Można to zrobić, ustawiając DISPLAYzmienną środowiskową na 0.0. Serwer X11 jest następnie uruchamiany przez wydanie polecenia startxwin. Po wydaniu tego polecenia otwiera się nowy terminal w innym oknie. Ten terminal jest niezwykle prosty i dość brzydki. Chcę, aby terminal pojawił się jako nowa karta w Console2 lub uruchomił go w tym samym terminalu, z którego został uruchomiony. W ten sposób mogę kontynuować pracę w terminalu zoptymalizowanym do moich upodobań. Alternatywnie, jeśli możliwe jest uruchomienie Cygwin z włączonym przekierowaniem X11, byłoby to bardziej idealne. Obecnie uruchamiam Cygwin za pomocą tego poleceniaH:\bin\bash.exe --login -i -c "cd /cygdrive/d; exec /bin/bash". Cały powód, dla którego muszę używać X11, to to, że SSHing do zdalnego serwera, który ma programy z GUI, których muszę użyć. Chcę tylko móc zrobić wszystko w Console2.

TehTechGuy
źródło
Nie jasne. Co dokładnie uruchamiasz i na czym polega problem?
Maximus
@Maksymus, patrz wyżej edycja
TehTechGuy

Odpowiedzi:

2

Miałem problemy z przejściem na konsolę 2, próbując konsekwentnie sprawić, aby konsola rozpoznała, kiedy X jest uruchomiony, a następnie poprawnie przekazała ją do kart, kiedy ustawiam karty do łączenia się z innymi systemami. To jest rozwiązanie, na którym ostatecznie się zdecydowałem.

Pierwszym było uruchomienie sesji cygwin przez prosty plik dos bat do powłoki, aby poprawnie ustalić, czy X działa, czy nie. Aby to zrobić, użyłem if / test, aby sprawdzić, czy $ DISPLAY jest już ustawiony. Jeśli nie, uruchamia proste wywołanie xset do -display: 0.0, aby sprawdzić, czy X działa. (0.0 jest ustawieniem domyślnym dla mojej konfiguracji cygwin. Możesz oczywiście sprawdzić tutaj również innych, jeśli chcesz). Jeśli zwróci wartość true, ustawia odpowiednio WYŚWIETLACZ. Dodałem to na końcu profilu / etc / w cygwin, chociaż prawdopodobnie możesz umieścić go w .bashrc lub innym skrypcie, który zawsze działałby po zalogowaniu.

# /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

Dodając go do / etc / profile, musisz uruchomić powłokę logowania podczas uruchamiania konsoli2. np. wywołanie bash --login -i z pliku dos .BAT.

Aby poradzić sobie z przechodzeniem do innych systemów, początkowo korzystałem z prostego wywołania ssh z pliku wsadowego, ale pomijałem ustawienie tego ekranu. Aby obejść ten problem, zmodyfikowałem plik nietoperza, aby zamiast tego wywołać najpierw bash - zaloguj się:

(ustawienie DISPLAY było początkową próbą innej sugestii. W rzeczywistości nie robi nic w przypadku większości aplikacji 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%

Ważne jest, aby pamiętać, że zmiany w / etc / profile nic nie zrobią, jeśli serwer X cygwina (lub inny serwer Xwindow) nie działa na: 0.0 lub jeśli nie wywołujesz powłoki logowania. Ale jeśli użyjesz bash -i --login w Cygwin.bat i wskażesz ustawienia konsoli 2 na ten plik, i użyjesz przykładowego Ssh.bat, aby połączyć się ze zdalnymi systemami (np. Wstaw C: \ cygwin \ ssh.bat [remote- nazwa-hosta] w polu „Shell:” dla ustawień karty Console i C: \ cygwin \ bin jako katalog startowy)

Scott
źródło
Dzięki za rozwiązanie. Jak powiedziałeś, nadal musisz się upewnić, że serwer X działa. Dobrze byłoby również zmodyfikować plik ssh.bat, aby zaakceptować nazwę użytkownika. Poza tym wydaje się, że działa dobrze. Jest to o wiele ładniejsze niż używanie domyślnej powłoki X.
TehTechGuy