dotool – インストールと設定 (Manjaro / Arch ベース)¶
## 概要
dotool は、低レベルの入力シミュレーション ユーティリティです。 「xdotool」とは異なり、「uinput」を介して Linux カーネルと直接対話するため、X11 と Wayland の両方と互換性があります。
インスタレーション (マンジャロ / アーチ)¶
1. パッケージをインストールする¶
pamac build dotool
# or via yay: yay -S dotool
2. 権限と udev ルール¶
dotool が root 権限なしで入力をシミュレートできるようにするには、ユーザーが input グループの一部である必要があり、udev ルールがアクティブである必要があります。
ユーザーをグループに追加します:
sudo gpasswd -a $USER inputudev ルールを作成します:
echo 'KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"' \ | sudo tee /etc/udev/rules.d/80-dotool.rules
udev ルールをリロードします:
sudo udevadm control --reload-rules && sudo udevadm trigger
重要: グループの変更を有効にするには、ログアウトしてから再度ログインする必要があります。
プロジェクト設定 (config/settings.py)¶
# Override X11 default to use dotool (recommended for better layout stability)
x11_input_method_OVERRIDE = "dotool"
# Delay between keystrokes in milliseconds
# 2ms = Default, reliable for special characters and Umlauts
# 0ms = Maximum speed (Instant mode)
dotool_typedelay = 2
スクリプトの実装¶
パフォーマンスの最適化 (FIFO)¶
すべての単語に対して新しい dotool インスタンスを開始すると時間がかかります (最大 100 ミリ秒の遅延)。 「瞬時」の入力を実現するために、スクリプトは FIFO パイプから読み取る永続的なバックグラウンド プロセスを使用します。
# Setup in the main script
mkfifo /tmp/dotool_fifo 2>/dev/null
dotool < /tmp/dotool_fifo &
DOTOOL_PID=$!
タイピング機能¶
do_type() {
local text="$1"
if [[ "$INPUT_METHOD" == "dotool" ]]; then
# Pipe commands directly into the running background process
printf 'typedelay %s\ntype %s\n' "$DOTOOL_TYPEDELAY" "$text" > /tmp/dotool_fifo
else
LC_ALL=C.UTF-8 xdotool type --clearmodifiers --delay 12 "$text"
fi
}
トラブルシューティングと注意事項¶
文字の欠落: 特殊文字 (ウムラウトなど) がスキップされる場合は、
dotool_typelayを 5 または 10 に増やします。アプリケーションの互換性: 一部のアプリ (Electron、ブラウザ) では、高速入力を正しく登録するために、より長い遅延が必要な場合があります。
Wayland サポート:
xdotoolはサポートしていないため、dotoolは Wayland に必要なバックエンドです。自動フォールバック:
dotoolがインストールまたは正しく構成されていない場合、スクリプトは自動的にxdotoolにフォールバックします。