Agent Skills: Wayland Automation

Wayland環境でのGUI自動化。スクリーンショット取得、テキスト入力、クリップボード操作のパターン集

UncategorizedID: cxxxr/.claude/wayland-automation

Install this agent skill to your local

pnpm dlx add-skill https://github.com/cxxxr/.claude/tree/HEAD/skills/wayland-automation

Skill Files

Browse the full folder contents for wayland-automation.

Download Skill

Loading file tree…

skills/wayland-automation/SKILL.md

Skill Metadata

Name
wayland-automation
Description
Wayland環境でのGUI自動化。スクリーンショット取得、テキスト入力、クリップボード操作のパターン集

Wayland Automation

Wayland環境(niri compositor)でのGUI自動化パターン集。

環境確認

# Wayland環境であることを確認
echo $WAYLAND_DISPLAY  # -> wayland-1 等

# niriが動作していることを確認
pgrep niri

スクリーンショット

基本

# 画面全体(Claude Code用)
screenshot-for-claude
# -> /tmp/claude-screenshot.png

# 画面全体(カスタムパス)
grim /path/to/screenshot.png

# 特定のモニター
grim -o DP-6 output.png
grim -o eDP-1 laptop.png

領域選択(slurp必要)

# インタラクティブに領域選択
grim -g "$(slurp)" region.png

# 座標指定
grim -g "100,100 500x300" region.png

連続撮影

# 1秒ごとに5枚
for i in {1..5}; do
  grim "/tmp/shot_$i.png"
  sleep 1
done

テキスト入力(wtype)

基本入力

# 単純なテキスト
wtype "Hello World"

# 日本語(IME経由ではない直接入力)
wtype "こんにちは"

# 複数行(\nは使えない、Enterキーを使う)
wtype "Line 1" && wtype -k Return && wtype "Line 2"

特殊キー

# 単一キー
wtype -k Return      # Enter
wtype -k Tab         # Tab
wtype -k Escape      # Escape
wtype -k BackSpace   # Backspace
wtype -k Delete      # Delete
wtype -k space       # Space

# ファンクションキー
wtype -k F1
wtype -k F12

# 矢印キー
wtype -k Up
wtype -k Down
wtype -k Left
wtype -k Right

# その他
wtype -k Home
wtype -k End
wtype -k Page_Up
wtype -k Page_Down

モディファイア付き

# Ctrl + キー
wtype -M ctrl -k c      # Ctrl+C(コピー)
wtype -M ctrl -k v      # Ctrl+V(ペースト)
wtype -M ctrl -k a      # Ctrl+A(全選択)
wtype -M ctrl -k s      # Ctrl+S(保存)
wtype -M ctrl -k z      # Ctrl+Z(アンドゥ)

# Alt + キー
wtype -M alt -k Tab     # Alt+Tab
wtype -M alt -k F4      # Alt+F4(閉じる)

# Shift + キー
wtype -M shift -k Tab   # Shift+Tab

# Super(Mod)キー
wtype -M logo -k d      # Super+D(ランチャー等)

# 複合
wtype -M ctrl -M shift -k t  # Ctrl+Shift+T

タイミング制御

# 遅延付き入力(ミリ秒)
wtype -d 50 "slow typing"   # 50ms間隔

# 操作間の待機
wtype "first" && sleep 0.5 && wtype "second"

クリップボード(wl-clipboard)

コピー

# テキストをコピー
echo "text to copy" | wl-copy

# ファイル内容をコピー
wl-copy < file.txt

# 画像をコピー
wl-copy --type image/png < image.png

# 現在の選択をコピー(primary selection)
wl-copy --primary "text"

ペースト

# テキストをペースト
wl-paste

# 特定のMIMEタイプ
wl-paste --type text/plain
wl-paste --type image/png > image.png

# クリップボードの内容を確認
wl-paste --list-types

クリップボード監視

# クリップボード変更時に実行
wl-paste --watch echo "Clipboard changed"

niri操作

ウィンドウ操作(niri msg)

# アクティブウィンドウ情報
niri msg focused-window

# ワークスペース一覧
niri msg workspaces

# ワークスペース切り替え
niri msg action focus-workspace 2

# ウィンドウを閉じる
niri msg action close-window

キーバインド経由

# アプリランチャー起動(Mod+D)
wtype -M logo -k d

# ターミナル起動(Mod+Return)
wtype -M logo -k Return

# ウィンドウを閉じる(Mod+Q)
wtype -M logo -k q

# フルスクリーン(Mod+F)
wtype -M logo -k f

実践パターン

パターン1: アプリ起動して操作

# 1. ランチャー起動
wtype -M logo -k d
sleep 0.5

# 2. アプリ名入力
wtype "firefox"
sleep 0.3

# 3. 起動
wtype -k Return
sleep 2

# 4. 確認
screenshot-for-claude

パターン2: フォーム入力

# フィールド間をTabで移動しながら入力
wtype "username"
wtype -k Tab
wtype "password"
wtype -k Tab
wtype -k Return  # 送信

パターン3: テキスト編集

# 全選択してコピー
wtype -M ctrl -k a
sleep 0.1
wtype -M ctrl -k c

# 内容を取得
content=$(wl-paste)
echo "$content"

# 編集して戻す
echo "$content (edited)" | wl-copy
wtype -M ctrl -k v

パターン4: 設定変更サイクル

# waybar設定変更の例
edit_waybar() {
  # 1. 現状確認
  screenshot-for-claude

  # 2. 設定編集(外部で実行)
  # Edit ~/.config/waybar/config

  # 3. リロード
  pkill waybar
  sleep 0.5
  waybar &
  sleep 1

  # 4. 結果確認
  screenshot-for-claude
}

トラブルシューティング

wtype が動作しない

# 環境変数確認
echo $WAYLAND_DISPLAY
echo $XDG_RUNTIME_DIR

# 権限確認
ls -la $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY

スクリーンショットが黒い

# grim が正しいseatにアクセスできているか
grim -l  # 利用可能な出力一覧

クリップボードが動作しない

# wl-clipboard が Wayland に接続できているか
wl-paste --list-types

日本語入力

# fcitx5 経由での入力はwtypeでは直接サポートされない
# 代わりにクリップボード経由で入力
echo "日本語テキスト" | wl-copy
wtype -M ctrl -k v