Lancer startxwin dans le terminal actuel


2

J'utilise Cygwin et j'utilise Console2 en remplacement du terminal Cygwin par défaut. Je dois utiliser le transfert X11 et chaque fois que je lance startxwin, il le lance dans un nouveau terminal. J'aimerais plutôt qu'il soit ouvert dans le même terminal (ou dans un nouvel onglet), à l'intérieur de Console2. Idéalement, je serais capable de lancer Cygwin avec startxwin ou de lancer un nouvel onglet avec un serveur Cygwin XWin. Cela impliquera probablement de modifier le .startxwinrcfichier, mais je ne sais pas trop comment faire. Je viens tout juste de commencer à utiliser le transfert X11 dans Cygwin.

Comment puis-je faire ceci?

Merci.

EDIT
J'essaie de démarrer une session X11 dans Cygwin. Cela peut être fait en définissant la DISPLAYvariable d'environnement sur 0.0. Le serveur X11 est ensuite lancé en émettant la commande startxwin. Après avoir lancé cette commande, un nouveau terminal s'ouvre dans une autre fenêtre. Ce terminal est extrêmement basique et assez moche. Ce que je veux, c’est que ce terminal apparaisse sous la forme d’un nouvel onglet dans Console2 ou qu’il soit exécuté dans le même terminal qu’il a été lancé. De cette façon, je peux continuer à travailler dans un terminal optimisé à mon goût. Sinon, s'il est possible de lancer Cygwin avec le transfert X11 déjà activé, ce serait plus idéal. Je lance actuellement Cygwin en utilisant cette commandeH:\bin\bash.exe --login -i -c "cd /cygdrive/d; exec /bin/bash". Si je dois utiliser X11, c’est parce que je suis SSH sur un serveur distant qui a des programmes avec des interfaces graphiques que je dois utiliser. Je veux juste pouvoir tout faire à l'intérieur de Console2.


Pas clair. Qu'est-ce que vous lancez exactement et quel est le problème?
Maximus

@Maximus, voir ci-dessus modifier
TehTechGuy

Réponses:


2

J'avais des difficultés lors du passage à console2 en essayant de faire en sorte que la console reconnaisse le moment où X était en cours d'exécution puis la transmettait correctement aux onglets lorsque je configure les onglets pour se connecter à d'autres systèmes. C'est la solution sur laquelle j'ai fini par m'installer.

Premièrement, faire en sorte qu'une session cygwin soit exécutée via un simple fichier dos bat vers un shell afin de déterminer correctement si X était en cours d'exécution ou non. Pour ce faire, j’ai utilisé if / test pour voir si $ DISPLAY était déjà défini. Sinon, il lance un simple appel xset à -display: 0.0 pour voir si X est en cours d'exécution. (0.0 est la valeur par défaut pour ma configuration cygwin. Vous pouvez évidemment vérifier les autres ici aussi si vous le souhaitez). S'il renvoie la valeur true, il définit ensuite DISPLAY en conséquence. J'ai ajouté ceci à la fin du fichier / etc / profile dans cygwin, bien que vous puissiez probablement le mettre dans .bashrc ou dans un autre script qui serait toujours exécuté lorsque vous vous connectez.

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

Lorsque vous l'ajoutez à / etc / profile, vous devez appeler un shell de connexion lors du démarrage de console2. par exemple, appeler bash --login -i à partir de votre fichier DOS .BAT.

Pour gérer le passage à d’autres systèmes, j’utilisais au départ un simple appel direct à ssh à partir d’un fichier de traitement par lots, mais cela ignorait la configuration de cet affichage. Pour contourner ce problème, j'ai modifié le fichier bat afin d'appeler d'abord bash --login:

(le réglage de DISPLAY était une tentative initiale d'une autre suggestion. Il ne fait vraiment rien pour la plupart des applications de 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%

Il est important de noter que les modifications apportées à / etc / profile ne feront rien si le serveur X de cygwin (ou un autre serveur Xwindow) ne fonctionne pas sur: 0.0 ou si vous n'invoquez pas un shell de connexion. Mais si vous utilisez bash -i --login dans votre fichier Cygwin.bat et dirigez vos paramètres console2 vers ce fichier, utilisez l’exemple Ssh.bat pour vous connecter à des systèmes distants (par exemple, mettez C: \ cygwin \ ssh.bat [remote- nom d'hôte] dans le champ 'Shell:' pour les paramètres de l'onglet Console et C: \ cygwin \ bin en tant que répertoire de démarrage)


Merci pour la solution. Comme vous l'avez dit, vous devez toujours vous assurer que le serveur X est en cours d'exécution. Il serait également bon de modifier ssh.bat pour accepter un nom d'utilisateur. En dehors de cela, cela semble bien fonctionner. C’est bien mieux que d’utiliser le shell X par défaut.
TehTechGuy
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.