J’ai dû changer de machine tout récemment, et cela passe souvent par une remise en question de son environnement de travail. C’est à ce moment là qu’on se rend compte de tous ces petits « trucs » que l’on avait ajouté de ci de là pour optimiser son travail au quotidien.
Dans mon cas, je viens de passer d’une Ubuntu 14.04 + XFCE à une Ubuntu 16.04 + Cinnamon. J’apprécie ce bureau je dois bien le dire. Mais là n’est pas le sujet de ce billet.
J’utilisais Nautilus avec XFCE. Sous Cinnamon, nous avons par défaut son clone dénommé Nemo. Je travaille souvent sur des machines virtuelles distantes, auxquelles j’accède en ssh via un VPN. J’utilise le gestionnaire de connexions Gigolo pour initialiser les connexions. L’authentification se fait par clé, ce qui me fournit une connexion « instantanée ».
Avec Nautilus, j’utilisais la fonction « Ouvrir dans un terminal » pour lancer un terminal ssh sur la machine virtuelle et exécuter des commandes. En passant sous Nemo, cette fonction existe, mais elle n’ouvre pas une session ssh distante, mais une session locale.
Il est heureusement possible d’ajouter des scripts et des actions dans Nemo. Mes recherches m’ont conduites à cette page qui indique la marche à suivre. Bien que indiqué pour Ubuntu 13, la solution proposée reste valide.
Il convient de placer dans le dossier .local/share/nemo/actions deux fichiers contenant, pour l’un la description du menu à ajouter et pour l’autre un script en Python se chargeant de l’appel du terminal.
Ajout du menu via le fichier remote_terminal.nemo_action
[Nemo Action] Name=Ouvrir un terminal distant Comment=Open current folder in remote terminal Name[de]=Im entfernten Terminal öffnen Comment[de]=Aktuellen Ordner im entfernten Terminal öffnen Exec=<remote_terminal.py %F> Icon-Name=terminal Selection=none Extensions=dir; Dependencies=ssh;
Le script python remote_terminal.py
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import sys import subprocess path = sys.argv[1] if '/sftp:' in path: sftp = path.split('/sftp:', 1)[1] settings = {} options, sep, settings['path'] = sftp.partition('/') for opt in options.split(','): name, sep, value = opt.partition('=') settings[name] = value cmd = ['terminator', '-e', 'ssh %(user)s@%(host)s -t "cd /%(path)s && bash --login"' % settings] else: cmd = ['terminator', '--working-directory', path] subprocess.call(cmd)
J’ai juste changé le terminal appelé en remplaçant gnome-terminal par terminator que je préfère à ce dernier. Le résultat en vidéo.