imgssh - Coller une image du presse-papiers local dans une session SSH
(github.com/coderredlab)Bonjour.
Ces derniers temps, j’utilise de plus en plus des outils en terminal comme Claude Code ou Codex en me connectant à des serveurs distants en SSH, et le processus d’ajout d’images s’est révélé plus fastidieux que prévu.
L’image est déjà dans le presse-papiers en local, mais le serveur distant n’a aucun moyen de le savoir. À chaque fois, il fallait donc l’enregistrer dans un fichier, l’envoyer avec scp, puis recoller le chemin.
Comme c’était pénible, j’ai créé imgssh.
GitHub:
https://github.com/coderredlab/imgssh
L’utilisation consiste à se connecter avec imgssh au lieu de ssh classique.
imgssh user@host
Une fois connecté, si une image se trouve dans le presse-papiers local, appuyer sur Ctrl+] l’envoie vers le /tmp distant et saisit le chemin du fichier dans la session SSH en cours.
Par exemple, cela donne quelque chose comme ceci.
'/tmp/imgssh-20260425-142744-a8f39c.png'
Cette fonctionnalité a été conçue pour transmettre un chemin de fichier image à des CLI comme Claude Code ou Codex.
Au départ, j’avais envisagé une approche par plugin selon le terminal, mais certains terminaux comme Ghostty n’ont pas de système de plugins, et je n’avais pas non plus envie d’adapter la solution à chaque terminal. Je suis donc parti sur une approche qui encapsule directement ssh.
Voici les principes importants que j’ai retenus.
- aucun hook clavier global
- aucun démon en arrière-plan
- aucun tunnel inverse
- rien à installer sur le serveur distant
- fonctionne uniquement dans les sessions SSH ouvertes avec imgssh
Ainsi, même si plusieurs onglets sont ouverts, chaque processus imgssh ne gère que sa propre session. Par exemple, si un onglet est connecté avec imgssh dev et un autre avec imgssh prod, le déclencheur utilisé dans chaque onglet n’enverra l’image que vers le serveur correspondant.
En revanche, les SSH imbriqués ne sont pas suivis. Si vous vous connectez avec imgssh dev, puis lancez ensuite ssh prod à l’intérieur, l’image sera quand même envoyée vers dev. Cette limitation est volontaire afin de garder un périmètre restreint.
Pour l’instant, il s’agit d’une version initiale, avec un périmètre simple.
- testé sur Linux
- utilise OpenSSH
- images PNG du presse-papiers
- envoi par défaut vers
/tmp - insertion d’un chemin entre guillemets
- pour l’envoi, utilisation d’un processus ssh séparé et d’OpenSSH ControlPath
Sur macOS, un backend pngpaste est bien présent dans le code, mais je n’ai pas encore pu le tester moi-même.
Il existe aussi des outils comme clipssh ou PasteHop pour résoudre un problème similaire, mais imgssh se rapproche davantage d’un « wrapper SSH » que d’un uploader one-shot ou d’un outil d’intégration au terminal.
Il reste encore beaucoup de choses à peaufiner. En particulier, la gestion des arguments SSH, les touches de déclenchement selon les terminaux, et l’UX dans des environnements comme tmux ou nvim demandent encore davantage de tests.
N’hésitez pas à l’essayer, et si vous tombez sur des cas bizarres ou voyez une meilleure approche, je suis preneur de vos retours.
Aucun commentaire pour le moment.