Ubuntuでwmctrlを使う

Ubuntu 22.04で『 wmctrl 』コマンドを使おうとすると、ファイル(Nautilus)のウィンドウや端末(GNOME Terminal)のウィンドウが対象に挙がりません。

このスクリーンショットではGoogle Chromeと端末、それにファイルのウィンドウが開いていますが、wmctrlコマンドでリストを出すと、認識されているのはGoogle Chromeだけなのが判ります。

wmctrlで端末やファイルのウィンドウを操作したいと思っても、このままの状態では不可能という事です。

これではwmctrlから制御することが出来なくて困ってしまいますので、全てのウィンドウがwmctrlコマンドの対象に挙がるようにします。

修正するにはまず原因を知る必要がありますが、これはwmctrlがディスプレイサーバとしてX11を想定したツールなのに対して、21.04以降のUbuntuにおいてデフォルトで使用されているディスプレイサーバはWaylandだという事にあります。

あまり踏み込むとこの記事の話題と離れてしまいますのでここでは詳しい説明は控えますが、これから学びたい方はこちらなど御参照ください。

さて原因は判ったものの、WaylandはX11そのものを目指しているものではありませんし、現在のところwmctrlがWaylandに対応する明確な予定もなさそうです。

となれば、UbuntuさんにWaylandでなくX11を使って頂くしか無いわけですが、実はこれは意外に簡単に出来る術が用意されています。

という事で、さっそくやってみましょう。

ルート権限を持ったエディタで『 /etc/gdm3/custom.conf 』を開きます。今回は現在のUbuntuでデフォルトのエディターであるテキストエディター(gedit)を使用していますが、他に使い慣れたものがあればそちらでも構いません。

ここではまずルートになったコンソールにおいて

cd /ect/gdm3

というように『 cd 』コマンドで『 /etc/gdm3 』にカレントディレクトリを移り、そこで

gedit custom.conf

とやって、テキストエディターで『 custom.conf 』を開いています。

custom.confが編集できる状態になったら、まず『 #WaylandEnable=false 』と書かれた行を探しましょう。

『 #WaylandEnable=false 』と書かれた行が見つかったら、最初に付いているコメント記号『 # 』を消してその行を有効化した上で上書き保存します。

上書き保存が完了したら、一旦システムを再起動します。(ログアウト⇒ログインでは不十分です。再起動しましょう。)

再起動後に『 wmctrl -l 』を試すとGoogle Chromeの他に端末やファイルなどのウィンドウが認識されているはずです。

これで全てのウィンドウを『 wmctrl 』コマンドで操作する事が出来るようになりました。

michyo
  • michyo

コメントする

メールアドレスが公開されることはありません。