ターミナルを素早く隠したり呼び出したりする

ドロップダウン型のターミナルエミュレーターには、Yakuake、Guake、Tildaなどがあります。明らかな利点の一つは、ホットキー(ほとんどのデフォルトはF12キー)を使ってウィンドウを表示し、不要な時は非表示にできることです。

初めて使う方は、ターミナルの世界に一息ついたような新風に少し驚かれるかもしれません。ここでの基本原則は、召喚されたら戦闘準備を整え、戦闘後はキャンプに戻ることです。これが私たちのパーティが軍隊を指揮する方法です。普段は飲み物を飲んだり、くつろいだり、食事をしたりしても問題ありませんが、肝心な時は電光石火の速さで攻撃しなければなりません。

ネットで調べてみると、このクイックコールインターフェースはQUAKEというゲームにインスパイアされたものだとわかりました。ゲーム中にホットキーを押すと設定インターフェースが表示されるため、Quakeスタイル、Quakeモード、Quakeライクなどと呼ばれることが多いです。私はQuakeをプレイしたことはありませんが、CSのようなゲームはプレイしたことがあると思うので、ほぼ同じアイデアだと思います。

余談が長くなりましたが。現在、alacrity ターミナルを使用していますが、labwc ウィンドウ環境や Wayland コンポジターで同様の機能を実現するにはどうすればよいでしょうか?

私の試行錯誤は以下の通りです。

1. クイック非表示

ほとんどのウィンドウマネージャーでは、Gnome の Super+H のように、ウィンドウを非表示/最小化できます。以前は Gnome をよく使っていたので、labwc ウィンドウマネージャーでも同じ設定(キーボードの Win + h を押す)を使用しました。

1<keybind key="W-h">
2<action name="Iconify" />
3</keybind>

labwc -r 設定を再読み込みすることで、ターミナルアプリケーションでもアクティブなウィンドウをいつでも非表示にできます。

2. クイック終了

クイック終了はプルダウンと機能的に同等で、ポップアップインターフェースを作成します。プルダウン方式の方が目を引き、少し洗練されているかもしれませんが、実用主義者としてはそれほど気にしません。

ウィンドウマネージャーの場合、クイック終了は単にウィンドウのフォーカスを再調整するだけです。Wayland環境では、wlr-foreign-toplevel-managementプロトコルを実装したコマンドラインツールwlrctlを見つけました。これは非常に興味深いツールです。

  • 入力用にソフトキーボードを有効化
1➜ ~ wlrctl keyboard type 'Hello, world!'
2➜ ~ Hello, world!
  • カーソルの移動を制御する

例えば、カーソルを右に50ピクセル、上に70ピクセル移動するように連続的に制御します。

1➜ ~ wlrctl ポインター移動 50 -70
2➜ ~ wlrctl ポインター移動 50 -70
3➜ ~ wlrctl ポインター移動 50 -70
4➜ ~
  • ソフトウェアに注目

これが今回の主な焦点です。labwcの設定を見てみましょう。

1<keybind key="W-Return">
2<action>
3<name>Execute</name>
4<command>sh -c 'wlrctl window focus Alpacity || alacritty'</command>
5</action>
6</keybind>

重要なのは wlrctl window focus Alacritty || alacritty です。つまり、Alcaritty が実行中の場合は、直接フォーカスされます(フォアグラウンドに移動します)。実行中でない場合は、直接起動されます。

このように、Alcaritty の実行の有無にかかわらず、Win + Return ショートカットを使用してターミナルを呼び出すことができます。

Alacritty の最初の文字が大文字の場合と小文字の場合があるのはなぜか疑問に思う方もいるかもしれません。

これは wlrctl のマニュアルによって異なります。

focus [matches...]

コンポジターに、一致するウィンドウにフォーカスするよう指示します。

一致は、コロンで区切られた属性/値のペアです。例:Firefox ウィンドウに一致させる場合、適切な一致値は app_id:firefox です。一致指定子はいくつでも指定できますが、ウィンドウはそれらすべてに一致する必要があります。 一致対象として考慮されます。app_id または title キーが複数回指定されている場合、ウィンドウは指定された値のいずれかに一致する可能性があります。一致しない場合は、後続のキー/値ペアが前のペアを上書きします。キーなしで一致した場合は app_id とみなされるため、上記の例では firefox だけで動作します。

現在サポートされている属性は、app_id、title、state です。

ターミナルの実行中は app_id が Alacritty として認識されるため、次のようになります。

 1➜ ~ ps -ef |grep -i alacritty
 2mephisto 35359 1 0 11:32 ? 00:00:00 sh -c wlrctl window focus Alacritty || alacritty
 3mephisto 35361 35359 0 11:32 ? 00:00:50 alacritty
 4mephisto 58501 23717 0 15:20 pts/7 00:00:00 grep --color=auto --exclude-dir=.bzr --exclude-dir=CVS --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn --exclude-dir=.idea --exclude-dir=.tox -i alacrity
 5➜ ~ wlrctl window focus Alacritty
 6➜ ~ echo $?
 70
 8➜ ~ wlrctl window focus alacritty
 9➜ ~ echo $?
101
11➜ ~

これは最初の文字が大文字の場合にのみ一致し、0 を返します。実際のターミナルプログラムが実行されていない場合は、|| の前に false を返し、alacritty を直接実行してターミナルを起動してください。

これにより、ターミナルを素早く非表示/開くことができます(それぞれ win + h/win + return に対応します)。以下のアニメーション画像をご覧ください。

quake-like alacritty

画面録画およびGIF作成ツールの性能があまり良くないため、画像が少しぼやけています。ぼやけている点はご容赦ください。ただし、頻繁に切り替わっていることははっきりと確認できます。

読者の中には、ターミナルの非表示/表示に F12 キーを使うことに慣れている方もいるかもしれません。その場合は、状態を中間変数に保存し、キーを押すたびに反転させてブール値を切り替える方法を見つける必要があります。

個人的には、これは必要ないと思います。win + h はどのウィンドウも非表示にします。あまりにも一般的なので、ほぼ筋肉の記憶になっています。

win + return は、ウィンドウマネージャ labwc のデフォルトの動作です。

必要な時に呼び出し、使わない時は非表示にし、ステータスバーに縮小し、対応するソフトウェアを変更すれば、理論上はどのソフトウェアにも自由に切り替えられます。端末は高頻度に利用するソフトウェアなので、この構成にとても満足しています😄。

最終更新日: Wednesday, October 29, 2025

このシリーズの投稿:

翻訳: