[Tuto] Installer WSL et Terminator sous Windows

Tags: Tutoriel Informatique Linux Windows


Bonjour à tous,

Cet article va concerner toutes les personnes ayant besoin d’un terminal mais sous Windows. Un des plus répandus à l’heure actuelle reste MobaXterm. Cependant, nous allons voir comment l’arrivée de WSL a changé la donne.

WSL, quésaco ?

WSL ne veut pas dire World Surf League mais Windows Subsystem for Linux (sous-système Windows pour Linux en français). Disponible depuis Windows 10, ou Windows Server 2019, cet outil permet aux utilisateurs d’exécuter un environnement GNU/Linux permettant de faire tourner utilitaires et applications directement sur Windows.

Pour ceux qui connaissent Wine sous Linux, WSL est finalement le même principe mais dans l’autre sens.

Windows + Linux
Windows + Linux

Les distributions

Celles-ci sont disponibles depuis le Microsoft Store, en voici la liste à l’heure actuelle: Alpine WSL, openSUSE-Leap-15-1, Pengwin, Fedora Remix, Ubuntu, Debian, Kali Linux, CentOS …

Certaines sont gratuites, d’autres payantes, certaines sont fournies par la société qui fournit la distribution, d’autres pas d’autres sociétés.

Installation

Pour installer une distribution, il faut activer l’option dans Windows. Pour cela, il est nécessaire de lancer une invite de commande PowerShell en tant qu’administrateur et de lancer la commande suivante:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

Une fois fait, il faut redémarrer le PC. On peut ensuite aller dans le Microsoft Store pour installer la distribution de son choix.

Accéder aux fichiers de WSL sous Windows

Depuis une console WSL, il suffit de faire explorer.exe . pour que l’explorateur de fichiers de Windows s’ouvre dans le dossier courant. On peut alors enregistrer le chemin présent dans la barre de recherche. Chez moi, c’est:

\\wsl$\Debian\home\pofilo`

Disclaimer: il se pourrait que ça ne fonctionne pas depuis les versions anciennes de WSL.

Cas d’utilisation

Imaginons que vous vouliez faire un développement sous Python. Vous pourriez installer Python sous Windows puis faire votre développement par la suite. Avec WSL, installer Python est bien plus simple, et vous pouvez utiliser votre IDE en remote, par exemple Visual Studio Code avec l’extension Remote Development.

Pour des exemples en C, C++ ou autre, cet exemple fonctionne également (du moment que votre distribution soit disponible sous WSL sous la version dont vous avez besoin). Il est souvent plus facile de mettre en place un environnement de développement sous Linux. Mais dans le monde de l’entreprise, on est souvent contraint à être sous Windows, WSL permet de satisfaire la plupart des gens (:troll on: exceptés les habituels réfractaires de toujours :troll off:).

Mise en place de Terminator

Installation du serveur X

Le serveur X que nous allons utiliser s’appelle VcXsrv Windows X Server. Il est disponible sur SourceForge à cette adresse. Personnellement, j’ai la version 1.20.1.4 qui fonctionne très bien, mais j’imagine que c’est également le cas avec les versions plus récentes.

Une fois le logiciel installé, je vous laisse créer un fichier que nous allons nommer runHidden.vbs, son contenu sera le suivant:

' Simple command-line help.
select case WScript.Arguments(0)
case "-?", "/?", "-h", "--help"
   WScript.echo "Usage: runHidden executable [...]" & vbNewLine & vbNewLine & "Runs the specified command hidden (without a visible window)."
   WScript.Quit(0)
end select

' Separate the arguments into the executable name
' and a single string containing all arguments.
exe = WScript.Arguments(0)
sep = ""
for i = 1 to WScript.Arguments.Count -1
   ' Enclose arguments in "..." to preserver their original partitioning.
   args = args & sep & """" & WScript.Arguments(i) & """"
   sep = " "
next

' Execute the command with its window *hidden* (0)
WScript.CreateObject("Shell.Application").ShellExecute exe, args, "", "open", 0

Dans le cas où le copié-collé fonctionnerait mal, le voici dans un paste.

Pour démarrer le serveur X avec des paramètres intéressants (sinon, vous risquez notamment d’avoir des soucis au copié-collé), on crée un fichier config.xlaunch avec le contenu suivant:

<?xml version="1.0" encoding="UTF-8"?>
<XLaunch WindowMode="MultiWindow" ClientMode="NoClient" LocalClient="False" Display="-1" LocalProgram="xcalc" RemoteProgram="xterm" RemotePassword="" PrivateKey="" RemoteHost="" RemoteUser="" XDMCPHost="" XDMCPBroadcast="False" XDMCPIndirect="False" Clipboard="True" ClipboardPrimary="False" ExtraParams="" Wgl="True" DisableAC="False" XDMCPTerminate="False"/>

Dans le cas où le copié-collé fonctionnerait également mal, le voici dans un paste.

Pour que le serveur démarre en même temps que Windows, il est également possible de mettre ce fichier dans le dossier:

C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp

Il faut ensuite créer un raccourci Windows avec la destination suivante;

C:\Windows\System32\wscript.exe C:\Users\micro\runHidden.vbs bash -c "DISPLAY=localhost:0.0 terminator"

N’oubliez pas de mettre à jour le chemin du fichier runHidden.vbs pour votre propre configuration. Vous pouvez assi mettre une jolie icône à votre raccourci.

Terminator
Terminator

Mais avant d’utiliser ce joli raccourci, allons installer la distribution et tout ce dont on a besoin.

Installation de la distribution et de terminator

Dans mon cas, j’ai l’habitude de Debian, je l’installe donc via le Microsoft Store. Une fois installée, la console nous demande un nom d’utilisateur ainsi qu’un mot de passe. Après cela, la distribution est prête à être utilisée.

J’ai l’habitude de commencer par faire un sudo passwd root pour changer le mot de passe de l’utilisateur root.
Si vous suivez ce tutoriel maintenant, vous serez sous Debian Stretch, la version Buster étant disponible, autant la mettre à jour.

  1. Depuis l’utilisateur root: on va déjà faire apt update (mise à jour de la liste des dépôts) suivi d’un apt upgrade (mise à jour des dépôts à partir de la liste précédemment récupérée) pour partir sur une base saine (une version Stretch à jour).
  2. On met ensuite à jour le fichier /etc/apt/sources.list en remplaçant stretch par buster (pour les fainéants: sed -i 's|stretch|buster|' /etc/apt/sources.list).
  3. On peut vérifier qu’il ne reste plus de traces de versions stretch en faisant grep -rni "stretch" /etc/apt/.
  4. On remet à jour la liste des paquets: apt update.
  5. Puis on met à jour les paquets: apt upgrade (quand on nous demande Restart services during package upgrades without asking ?, on peut répondre par Yes).
  6. On nettoie ensuite les paquets qui ne sont plus nécessaires avec le passage sous Buster avec un apt autoremove.
  7. Sur une installation propre, j’ai l’habitude d’installer directement quelques paquets s’ils n’y sont pas déjà: apt install vim bash-completion htop tmux git ncdu lsb-release.
  8. On peut vérifier notre nouvelle version de Debian en faisant lsb_release -a.
  9. On peut maintenant installer terminator en faisant apt install terminator (cette commande va installer beaucoup de paquets nécessaires pour l’affichage d’applications graphiques).

Vous pouvez maintenant quitter l’utilisateur root et essayer directement l’installation en lançant la commande:

DISPLAY=localhost:0.0 terminator

Si ça fonctionne, parfait, tout est OK, vous pouvez maintenant utiliser le fameux raccourci que l’on a créé précédemment.

En cas de soucis

Si vous avez, au lancement de terminator, des soucis avec Dbus, il faut éditer le fichier /usr/share/dbus-1/session.conf pour remplacer <listen>unix:tmpdir=/tmp</listen> par <listen>tcp:host=localhost,port=0</listen>. Ensuite, il faut redémarrer WSL (juste en ré-ouvrant la console).

Si rien ne s’affiche, on peut essayer depuis la console WSL d’utiliser une application graphique plus simple que terminator. On installe donc sudo apt install vim-gtk et on voie si la commande gvim nous lance vim en mode graphique. Si ça ne fonctionne toujours pas, n’hésitez pas à me contacter via les commentaires ou par un autre moyen.

Allez plus loin avec Terminator

Pour customiser votre terminator, il faut jouer avec le fichier ~/.config/terminator/config et le man disponible ici.

Pour terminer, voici une pléthore de raccourcis bien pratiques qui font gagner énormément de temps :)

  • Ctrl-Shift-E pour scinder la fenêtre verticalement.
  • Ctrl-Shift-O pour scinder la fenêtre horizontalement.
  • Ctrl-Shift-Flèche (gauche, droite, bas ou haut) redimensionner la console actuelle (utile après avoir scindé votre fenêtre).
  • Ctrl-Shift-W pour fermer la fenêtre actuelle
  • Ctrl-Shift-X pour agrandir la fenêtre actuelle (ne pas se tromper en appuyant sur W sinon, on tombe dans le raccourci précédent qui ferme la fenêtre …).
  • Ctrl-(shift)-Tab pour se déplacer sur la fenêtre suivant ou précédente.

Pour avoir un scroll infini sur vos terminaux, il existe un moyen très simple et très pratique:

  • Clic-droit sur un terminal terminator
  • Aller dans l’onglet Profiles puis Scrolling
  • Cocher Infinite Scrollback et c’est directement pris en compte :)

Conclusion

Vous voilà maintenant avec un terminator sous un vrai Debian tout en restant sous Windows. C’est une solution totalement fonctionnelle, je l’utilise au quotidien aussi bien au travail qu’à la maison sans le moindre souci à déplorer. Et vous, sous Windows, quel terminal utilisez-vous et dans quelle configuration ?

Commentaires




Ailleurs sur le Web


aeris 🏳️‍🌈 sur Twitter : "Vu que le sujet revient à nouveau avec la conférence Google, un petit « Sco pa tu manaa » sur les GAFAM et la vie privée. ⬇️" / Twitter

Petit post d'@aeris sur les GAFAM. Ca fait plaisir de voir encore des gens sur Terre :)

via Shaarli le 15 octobre 2019

Bonnes pratiques de sécurité pour les conteneurs logiciels - Global Security Mag Online

La sécurité et Docker, des mots incompatibles ... Si vous lisez l'article, le fond est mieux que la forme, je vous rassure.

via Shaarli le 14 octobre 2019

Votre terminal n’est pas un terminal : Introduction aux flux | Xavier Coadic

Excellent article, je rajouterai tout de même que: In case of this >file 2>&1 we are doing redirection of stdout (1) to file, but then also telling stderr(2) to be redirected to the same place as stdout ! source

via Shaarli le 14 octobre 2019

Généré avec openring