नमस्ते।

इन दिनों रिमोट सर्वर पर SSH से कनेक्ट होकर Claude Code या Codex जैसे टर्मिनल टूल्स का इस्तेमाल करने के मामले काफ़ी बढ़ गए हैं, लेकिन इमेज जोड़ने की प्रक्रिया उम्मीद से ज़्यादा झंझटभरी लगी।

लोकल मशीन पर स्क्रीनशॉट पहले से क्लिपबोर्ड में होता है, लेकिन रिमोट सर्वर के पास यह जानने का कोई तरीका नहीं होता, इसलिए हर बार उसे फ़ाइल के रूप में सेव करना, scp से अपलोड करना, और फिर पाथ को दोबारा पेस्ट करना पड़ता था.

यही झंझट दूर करने के लिए मैंने imgssh बनाया।

GitHub:
https://github.com/coderredlab/imgssh

इसे इस्तेमाल करने का तरीका यह है कि सामान्य ssh की जगह imgssh से कनेक्ट करें।

imgssh user@host  

उस स्थिति में, जब लोकल क्लिपबोर्ड में कोई इमेज हो, Ctrl+] दबाने पर इमेज रिमोट /tmp में अपलोड हो जाती है और मौजूदा SSH सेशन में फ़ाइल पाथ दर्ज कर दिया जाता है।

उदाहरण के लिए, कुछ इस तरह।

'/tmp/imgssh-20260425-142744-a8f39c.png'  

यह फ़ीचर Claude Code या Codex जैसे CLI को इमेज फ़ाइल पाथ देने के लिए बनाया गया है।

शुरुआत में मैंने टर्मिनल-वार प्लगइन तरीका भी सोचा था, लेकिन Ghostty जैसे ऐसे टर्मिनल भी हैं जिनमें प्लगइन सिस्टम नहीं है, और हर टर्मिनल के लिए अलग से अनुकूलन करना भी ठीक नहीं लगा, इसलिए मैंने ssh को ही wrap करने का रास्ता चुना।

मैंने जिन मुख्य दिशाओं को अहम माना, वे ये हैं।

  • कोई global keyboard hooking नहीं
  • कोई background daemon नहीं
  • कोई reverse tunnel नहीं
  • रिमोट सर्वर पर कुछ भी इंस्टॉल करने की ज़रूरत नहीं
  • केवल imgssh से खोले गए SSH सेशन के भीतर ही काम करता है

इसलिए आप कई टैब खोलें तब भी हर imgssh process सिर्फ़ अपने सेशन को ही संभालता है। उदाहरण के लिए, अगर एक टैब में imgssh dev और दूसरे टैब में imgssh prod चल रहा है, तो हर टैब में दबाया गया ट्रिगर सिर्फ़ उसी संबंधित सर्वर पर अपलोड करेगा।

हालाँकि यह nested SSH को ट्रैक नहीं करता। अगर आप imgssh dev से कनेक्ट होने के बाद उसके अंदर फिर ssh prod चलाते हैं, तो इमेज फिर भी dev पर ही अपलोड होगी। यह सीमा मैंने जानबूझकर रखी है।

फिलहाल यह शुरुआती वर्ज़न है, इसलिए इसका दायरा सरल रखा गया है।

  • Linux पर परीक्षण किया गया
  • OpenSSH का उपयोग
  • PNG क्लिपबोर्ड इमेज
  • डिफ़ॉल्ट /tmp अपलोड
  • quoted path insertion
  • अपलोड के लिए अलग ssh process और OpenSSH ControlPath का उपयोग

macOS के लिए कोड में pngpaste backend जोड़ा गया है, लेकिन अभी तक मैंने उसे सीधे टेस्ट नहीं किया है।

इसी तरह की समस्या हल करने वाले टूल्स में clipssh और PasteHop भी हैं, लेकिन imgssh one-shot uploader या terminal integration टूल की तुलना में “ssh wrapper” के ज़्यादा करीब है।

अभी इसमें सुधार की काफ़ी गुंजाइश है। खासकर SSH arguments की हैंडलिंग, अलग-अलग टर्मिनल के trigger keys, और tmux/nvim जैसे environments में UX को लेकर और टेस्टिंग की ज़रूरत है।

इसे इस्तेमाल करके देखें, और अगर कोई अजीब case या इससे बेहतर तरीका दिखे तो कृपया अपनी राय बताइए।

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.