0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSL2版 Claude Code にスクリーンショットをサクッと渡すスクリプト

0
Last updated at Posted at 2026-03-17

補足: このプログラムの改良版を、以下に公開しています。
【改良版】WSL2版 Claude Code にスクショをサクッと渡す操作を 3→2キーに減らした

その他の環境構築まとめはこちら
Claude Code 環境構築・運用Tipsまとめ

初めに(困りごと)

WSL2版のClaude Codeはクリップボード経由の画像貼り付けに対応していません。
スクリーンショットを渡すには、一度ファイルとして保存し、 @/path/to/image.png とパスを手入力する必要があります。

そこで、ショートカットキーで、最新スクショをWSL環境に移して、そのファイルパスをクリップボードに貼り付けできるようにしました。Snipping Toolの自動保存 と PowerShellスクリプトを使います。

前提条件

  • Windows 10/11 + WSL2
  • Snipping Tool(Windows標準)
  • PowerShell 5.1以降

スクリプト

2つのファイルで構成されています。同じフォルダにまとめて配置してください。

screenshot-to-wsl.ps1

メインスクリプトです。スクリーンショットフォルダから最新のPNGをWSL側にコピーし、@<WSLパス>/<ファイル名> 形式の文字列をクリップボードにセットします。

コピー時にファイル名をASCIIにリネームします(例: スクリーンショット YYYY-MM-DD HHMMSS.pngss_YYYYMMDD_HHMMSS.png)。Snipping Toolのデフォルトファイル名には日本語とスペースが含まれており、Claude Codeの @FILE 構文でパスが正しく解釈されない場合があるためです。

# ---- 設定(自分の環境に合わせて書き換える) ----
$winDestPath = '\\wsl$\Ubuntu\home\yourname\screenshots'
$wslDestPath = '/home/yourname/screenshots'
# ------------------------------------------------

# スクリーンショットフォルダをレジストリから取得(OneDriveリダイレクト対応)
$regKey = "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders"
$guid = "{B7BEDE81-DF94-4682-A7D8-57A52620B86F}"
$screenshotDir = (Get-ItemProperty $regKey -Name $guid -EA SilentlyContinue).$guid
if ($screenshotDir) {
    $screenshotDir = [Environment]::ExpandEnvironmentVariables($screenshotDir)
} else {
    $screenshotDir = Join-Path ([Environment]::GetFolderPath('MyPictures')) "Screenshots"
}

# 最新PNGをWSL側にコピー(ASCII名にリネーム)
$latestFile = Get-ChildItem $screenshotDir -Filter "*.png" |
    Sort-Object LastWriteTime -Descending | Select-Object -First 1
if ($null -eq $latestFile) {
    Write-Host "エラー: .png ファイルが見つかりません" -ForegroundColor Red; exit 1
}

# ファイル名をASCIIにリネーム(スペースや日本語を含む名前はCLIで問題を起こすため)
if ($latestFile.BaseName -match '(\d{4})-(\d{2})-(\d{2})\s+(\d{6})') {
    $destName = "ss_$($Matches[1])$($Matches[2])$($Matches[3])_$($Matches[4]).png"
} else {
    $destName = "ss_$([int](Get-Date $latestFile.LastWriteTime -UFormat %s)).png"
}
Copy-Item $latestFile.FullName (Join-Path $winDestPath $destName) -Force

$clipboardText = "@$wslDestPath/$destName"
Set-Clipboard $clipboardText
Write-Host "クリップボード: $clipboardText" -ForegroundColor Green

setup-shortcut.ps1

デスクトップに Ctrl+Alt+S のショートカットを作成するセットアップスクリプトです。初回のみ実行します。

$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$ps1Path = Join-Path $scriptDir "screenshot-to-wsl.ps1"

$shell = New-Object -ComObject WScript.Shell
$shortcut = $shell.CreateShortcut((Join-Path ([Environment]::GetFolderPath("Desktop")) "screenshot-to-wsl.lnk"))
$shortcut.TargetPath = "powershell.exe"
$shortcut.Arguments = "-NoProfile -NoLogo -ExecutionPolicy Bypass -File `"$ps1Path`""
$shortcut.Hotkey = "Ctrl+Alt+S"
$shortcut.WindowStyle = 7  # 最小化
$shortcut.Save()

セットアップ

1. Snipping Toolの自動保存をONにする

Snipping Toolを開き、設定(歯車アイコン)から「スクリーンショットを自動的に保存する」をONにします。
これで Win+Shift+S で撮影したスクショが ピクチャ\スクリーンショット に自動保存されるようになります。

2. ファイルを配置してパスを編集

上記2ファイルを同じフォルダに配置し、screenshot-to-wsl.ps1 冒頭の2行を自分の環境に合わせて編集します。
WSL側にもコピー先ディレクトリを作成しておきます。

mkdir -p ~/screenshots

3. ショートカットを作成

PowerShellで setup-shortcut.ps1 を実行すると、デスクトップに Ctrl+Alt+S のショートカットが作成されます。

powershell -ExecutionPolicy Bypass -File .\setup-shortcut.ps1

使い方

  1. Win+Shift+S でスクショ撮影(Snipping Toolが自動保存)
  2. Ctrl+Alt+S で最新スクショをWSLにコピー&パスをクリップボードにセット
  3. Claude Codeで Ctrl+V@/home/yourname/screenshots/ss_YYYYMMDD_HHMMSS.png が貼り付けられる

スクリプトはレジストリからスクリーンショットフォルダを自動検出するので、OneDriveでリダイレクトされている環境でもそのまま動きます。

最後に

そのうち、アプリ版のClaude Codeばかり使うようになるのかなぁ…

参考

今回の記事からさらに改良した記事がこちらです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?