1
1

More than 1 year has passed since last update.

WSL2におけるPyAutoGUIを利用したキーボードの自動入力

Posted at

はじめに

PyAutoGUI (ドキュメント) は、Pythonスクリプトによるマウスやキーボードの自動操作を可能にするライブラリです。この記事ではWSL2でPyAutoGUIをインストールし、キーボードから文字を自動で入力することを目指します。

環境

  • Windows 10
  • Ubuntu 18.04 LTS (WSL2)
  • Python 3.6.9

手順

  1. (Ubuntu) pipのインストール
  2. (Ubuntu) PyAutoGUIのインストール
  3. (Windows) VcXsrvのインストール・起動
  4. (Ubuntu) VcXsrvの設定
  5. (Ubuntu) ブラウザのインストール

の手順で進めます。

1. (Ubuntu) pipのインストール

pipはPythonのパッケージ管理システムです。PyAutoGUIのインストールに利用します。

bash
$ sudo apt update -y
$ sudo apt install -y python3-pip
$ python3 -m pip install --upgrade pip

参考

2. (Ubuntu) PyAutoGUIのインストール

PyAutoGUIはPythonのライブラリです。マウスやキーボードの自動操作を可能にします。

bash
$ sudo apt install -y scrot python3-tk python3-dev
$ python3 -m pip install pyautogui

参考

3. (Windows) VcXsrvのインストール・起動

VcXsrvはWindowsで動作するXサーバです。LinuxのGUIアプリケーションをWindowsで利用できるようになります。

インストール

  1. VcXsrvのダウンロードサイトからVcXsrvのインストーラをダウンロード
    vcxsrv_download.png
  2. インストーラを起動
    vcxsrv_installer.png
  3. オプションを選択し"Next"をクリック
    vcxsrv_setup.png
  4. インストールするフォルダを選択し"Install"をクリック
    vcxsrv_install.png
  5. インストールが完了したら"close"をクリック
    vcxsrv_close.png

起動

  1. Windowsのスタートメニュー > "VcXsrv" > "XLaunch" をクリック
    vcxsrv_launch.png
  2. "Multiple windows"を選択し「次へ」をクリック
    vcxsrv_launch_2.png
  3. "Start no client"を選択し「次へ」をクリック
    vcxsrv_launch_3.png
  4. すべてのチェックボックスにチェックを入れ「次へ」をクリック
    vcxsrv_launch_4.png
  5. 「完了」をクリック
    vcxsrv_launch_5.png
  6. (オプション) Windows起動時にVcXsrvを自動で起動する設定
    1. 「完了」をクリックする前に"Save configuration"をクリックし、任意の場所に"config.xlaunch"を保存
      vcxsrv_auto_launch.png
    2. "Windowsキー + R"で「ファイル名を指定して実行」を開き"shell:startup"を実行
      vcxsrv_auto_launch_2.png
    3. 開いたフォルダで右クリックし「新規作成」>「ショートカット」をクリック
      vcxsrv_auto_launch_3.png
    4. 「参照」から保存した"config.xlaunch"を選択し「次へ」をクリック
      vcxsrv_auto_launch_4.png
    5. 名前を付けて「完了」をクリック
      vcxsrv_auto_launch_5.png

参考

4. (Ubuntu) VcXsrvの設定

UbuntuにVcXsrvの存在を教えるために、環境変数DISPLAYにIPアドレスを設定します。環境によって設定する値は異なるようです。

  • export DISPLAY=$(grep nameserver /etc/resolv.conf | awk '{print $2}'):0.0 または
  • export DISPLAY=$(route.exe print | grep 0.0.0.0 | head -1 | awk '{print $4}'):0.0

自分の環境では2番目のほうで動きました。

$ vi ~/.bashrc
-----
...
# add for VcXsrv
export DISPLAY=$(route.exe print | grep 0.0.0.0 | head -1 | awk '{print $4}'):0.0
-----
$ exec $SHELL -l

またVcXsrvへ接続するための権限設定をおこないます。

$ touch ~/.Xauthority
$ xauth generate (DISPLAYに設定したIPアドレス):0 . trusted

動作確認

$ sudo apt install -y x11-apps
$ xeyes

以下のような目のアプリが表示されればOKです。
xeyes.png

参考

5. (Ubuntu) ブラウザのインストール

今回はGoogle Chromeをインストールします。試していませんが他のブラウザでも大丈夫だと思います。

$ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
$ sudo wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
$ sudo apt update
$ sudo apt install -y google-chrome-stable unifont

動作確認

$ google-chrome

コンソールにエラーが表示されるかもですが、起動はできます。
chrome.png

参考

PyAutoGUIでキーボード自動入力

簡単なプログラムを動かしてみます。

test.py
import pyautogui
import webbrowser
import time

# DeepL翻訳を開きます
webbrowser.open("https://www.deepl.com/ja/translator")
# 開くまでラグがあるため5秒ほど待ちます
time.sleep(5)
# "Hello, world!"を日本語に翻訳します
pyautogui.write("Hello, world!")

文字が自動入力されて翻訳されることが確認できます!
result.png

おわりに

今回はWSL2でPyAutoGUIを動かしてみました。WSLgを使えばもっと簡単にできるかも…?今度試してみようと思います。

1
1
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
1
1