چرا چسبوندن عکس توی Claude Code روی WSL کار نمیکنه؟
خلاصهٔ کاملتر
این مقاله یه مشکل بهظاهر ساده ولی آزاردهنده رو کالبدشکافی میکنه: یه عکس توی ویندوز کپی میکنی، Claude Code رو داخل یه ترمینال WSL که از Windows Terminal باز شده اجرا میکنی، Ctrl+V میزنی و هیچ اتفاقی نمیافته. بین کلیپبورد ویندوز و ورودی چت Claude Code سه چیز کوچیک خرابه که هرکدوم بهتنهایی بیخطرن، ولی با هم پیست عکس رو کامل میشکنن.
مشکل اول: همگامسازی کلیپبورد ویندوز به لینوکس (بخشی از WSL به اسم WSLg) فقط یه فرمت تصویر قدیمی رو میشناسه. برای متن خوب کار میکنه، ولی برای عکس بد عمل میکنه؛ تصویر ویندوز رو به یه نوع قدیمی BMP با کدگذاری رنگیِ مبهم (BI_BITFIELDS) تبدیل میکنه که اکثر نرمافزارها — از جمله خوانندهی Claude Code — نمیتونن بخوننش. Claude Code کتابخانهی sharp رو در نسخهی WebAssembly استفاده میکنه که اصلاً هیچ لودر BMP نداره؛ پس تبدیل شکست میخوره، اون هم بیسروصدا، بدون هیچ خطا یا هشداری.
مشکل دوم: فرض کن خودت WSLg رو دور بزنی و عکس رو به PNG تبدیل کنی و با wl-copy مستقیم روی کلیپبورد لینوکس بذاری. یه لحظه کار میکنه و بعد دوباره میشکنه. چون WSLg میبینه کلیپبورد لینوکس عوض شده، اون رو به ویندوز همگام میکنه؛ این تغییرِ کلیپبورد ویندوز، نیمهی دیگهی WSLg رو فعال میکنه که فقط BMP رو میشناسه و PNG خوبِ تو رو با همون BMP خراب بازنویسی میکنه. بدتر اینکه برنامهی ناظر تو این بازنویسی رو نمیبینه، چون WSLg مستقیم روی کلیپبورد لینوکس مینویسه.
مشکل سوم: فرض کن همهچیز رو درست کردی و یه PNG واقعی روی کلیپبورد لینوکس نشسته. باز Ctrl+V بزنی، هیچی. چون Windows Terminal خودش Ctrl+V رو معنیدار میدونه (پیست متن) و کلید رو قبل از اینکه به لینوکس برسه میقاپه؛ پس کد پیست عکس Claude Code (با نام داخلی chat:imagePaste) اصلاً اجرا نمیشه.
راهحل نویسنده سه جزء، یکی برای هر مشکله: clip-listener.exe روی ویندوز که هر عکس کلیپبورد رو با GDI+ به PNG واقعی تبدیل میکنه؛ wsl-clip-bridge در WSL که PNG رو با wl-copy روی کلیپبورد لینوکس میذاره و نیمثانیه بعد، اگه WSLg بازنویسی کرده باشه، دوباره اعمالش میکنه؛ و یه کلید Alt+V در فایل keybindings که هندلر imagePaste رو بدون عبور از Ctrl+V فعال میکنه. نکتهی جالب اینه که Claude Code از قبل روی ویندوزِ بومی پیشفرضِ imagePaste رو Alt+V گذاشته، ولی توی WSL اعمالش نمیکنه چون WSL خودش رو لینوکس معرفی میکنه؛ پس تمیزترین رفع بالادستی اینه که تشخیص بده داره داخل WSL در Windows Terminal اجرا میشه و همون پیشفرض ویندوز رو اعمال کنه.
نکات کلیدی:
- کپی عکس در ویندوز و Ctrl+V در Claude Code روی WSL بهخاطر سه باگ همزمان کار نمیکنه
- WSLg عکس رو فقط به BMP قدیمی میده که خوانندهی Claude Code (sharp WASM) نمیخونه
- WSLg اصلاح PNG تو رو چند لحظه بعد با همون BMP خراب بازنویسی میکنه و Windows Terminal هم Ctrl+V رو میقاپه
- راهحل: تبدیل به PNG با GDI+، گذاشتن روی کلیپبورد لینوکس با wl-copy و کلید جایگزین Alt+V




