xdotoolを使ってコマンドラインからウィンドウを操作する

はじめに

こんにちは、野村です。

今回は、コマンドラインツール「xdotool」でウィンドウを操作する方法を紹介します。

僕は、ウィンドウマネージャを起動したら時に必ず以下の操作をするのですよ。

1. mltermを起動する。
2. mltermを画面の左半分に配置する。
3. mlterm内でscreenを起動する。
4. 2つ目のmltermを起動する
5. 2つ目のmltermを画面の右半分に配置する
6. 2つ目のmlterm内でscreenを起動する

この6行程をバッチ処理できたら便利だなと思って調べたところ、xdotoolというツールの存在を知りました。

かなり多くの機能があるようで、すべてを紹介すると膨大な記事になってしまいます。
なのでこの記事では、以上のバッチ処理を例にとって簡単に説明したいと思います。

インストール

管理ユーザになって以下のコマンドを実行します。(debianの場合)

# apt install xdotool

スクリプト

以下のスクリプトをパスの通ったデレクトリに保存し、実効権限を与えます。
なお、このスクリプトは、解像度1920×1080画面専用です。

実行するときは、
・dmenuなどからコマンドを打って呼び出す
・xbindkeysなどでショートカットキーを割り当てて呼び出す
という方法が考えられます。
僕はdmenuを使ってます。

!/bin/bash

func00(){
  ID=`xdotool getwindowfocus`
  xdotool windowraise $ID
  xdotool windowsize $ID 958 1028
  xdotool windowmove $ID $1 $2
  xdotool type --delay 50 'screen -q'
  xdotool key ctrl+j
}

mlterm &
mlterm &

sleep 3s

xdotool key alt+Tab
func00 1 1

xdotool key alt+Tab
func00 961 1

説明

xdotool key alt+Tab

キー入力をシュミレートします。
この場合はalt+Tab。ウィンドウのフォーカスの切り替えです。

ID=`xdotool getwindowfocus`

フォーカスされているウィンドウのIDを変数IDに格納します。

xdotool windowraise $ID

指定したウィンドウを最前面に押し上げます。

xdotool windowsize $ID 958 1028

指定したウィンドウをサイズ変更します。
引数は、ウィンドウID、横幅、縦幅、です。

xdotool windowmove $ID $1 $2

指定したウィンドウを移動します。
引数は、ウィンドウID、x座標、y座標、です。

xdotool type –delay 50 ‘screen’

キー入力をシュミレートします。
「xdotool key」との違いは、複数の文字列に対応していることです。
deleyオプションで1文字ごとの入力速度を調整できます。
入力速度が早すぎると、ちゃんと入力してくれません。

終わりに

以上、xdotoolの基本的な使い方を簡単に紹介しました。

できるだけマウスを使いたくない人にとって便利なツールだと思いますよ。

というわけで、今回はこれにて。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

野村 野村のプロフィール
メインPCはWindows10のVirtualBox上のFreeBSD。Linux/Unixの小ネタを求めて日々右往左往してたりする。