33
Linuxアプリのカスタムメニューを作成する方法 — Zenityで簡単に
ゼニティ
(画像提供:Tom's Hardware、Pexels)

どのオペレーティングシステムでもGUI(グラフィカルユーザーインターフェース)を作成するには、ターミナル用のNcurses / WhiptailタイプのGUIか、デスクトップ上の本格的なGUIのどちらかになります。ここでは後者を構築しますが、コマンドの実行にはターミナルを使用します。ターミナルやシェルスクリプトからGTKダイアログボックスを表示できるツールであるZenityは、非常に使いやすく、優れたツールです。

このハウツーでは、Bashスクリプトを使ってシンプルなアプリケーションランチャーを作成します。アプリケーションを選択すると、ターミナルコマンドがトリガーされ、アプリケーションが開きます。作成したアプリケーションランチャーは、他のアプリケーションを実行できる状態になります。

Zenityはターミナル経由でGUIアプリケーションを作成するための素晴らしいツールであり、Zenityプロジェクトには

完全なマニュアル

使い方については、
Yad(Yet Another Dialog)という代替手段があります。このハウツーの前にYadをテストしましたが、Zenityの方がメニュー作成に堅牢な手段を提供していることがわかりました。両者の構文は非常に似ているので、両方を試してみて、お好みのものを見つけてください。

ゼニティ

(画像提供:Tom's Hardware)

このプロジェクトには、Linuxオペレーティングシステムが動作するコンピューターが必要です。Ubuntu 24.04を選択しましたが、Debian、Fedora、その他多くのLinuxディストリビューションでも動作します。CrunchbangPlusPlus Linuxでテストしたところ、Zenityは期待通りに動作しました。

カスタムアプリケーションランチャーの作成

ゼニティ

(画像提供:Tom's Hardware)

最初のステップは、カスタムアプリケーションランチャーを作成することです。そのためには、テキストエディタを使用してBashシェルスクリプトを作成します。Bashは学習に最適なプログラミング言語であり、オペレーティングシステムの機能を拡張することができます。

  1. ターミナルを開き、まずソフトウェア リポジトリ リストを更新してから、zenity をインストールします。
sudo apt update && sudo apt install zenity
  1. テキストエディタを開いてコードを記述します。ここではGeanyを使用していますが、他のテキストエディタでも構いません。Ubuntu 24.04ではデフォルトでGnomeの「テキストエディタ」が使用されていますが、MicrosoftのVisual Studio Codeエディタをインストールすることもできます。
  2. コードを Bash インタープリターにポイントしてコードを開始します。
#!/bin/bash
  1. ユーザーがアプリケーションを閉じるまで繰り返されるループを作成します。
while true; do
  1. Zenityアプリでアプリケーションのリストを作成します。アプリケーションウィンドウにはタイトル(アプリメニュー)を付け、列形式で表示します。必要な数のアプリケーション名を追加してください。高さと幅は、必要に応じて後で調整できます。
 CHOICE=$(zenity --list --title="App menu" \ --column="Apps" \ "Chrome" \ "Geany" \ "Thonny" \ "Inkscape" \ "GIMP" \ --height=400 --width=300)
  1. ユーザーがダイアログを終了した場合にアクティブになるif 条件チェックを追加します。
 if [ $? -ne 0 ]; then break fi
  1. 長い条件文を簡略化するために使用するcase文を、ユーザーの入力内容をチェックするための長いリストとして作成し、CHOICE変数に格納します。選択肢がリスト内のエントリと一致する場合、対応するコマンドが実行されます。一致するエントリがない場合(可能性は低いですが、念のため使用しています)、エラーメッセージが表示されます。
 case $CHOICE in "Chrome") google-chrome & ;; "Geany") geany & ;; "Thonny") thonny & ;; "Inkscape") inkscape & ;; "GIMP") gimp & ;; *) zenity --error --text="Invalid option, please try again." ;; esac
  1. メインループを閉じます。
done
  1. コードを menu.sh としてホームディレクトリに保存します。
  2. ターミナルウィンドウを開き、ファイルを実行可能に設定します。ファイルマネージャーから実行可能にすることもできます。右クリック >> プロパティを開き、権限を「プログラムとして実行可能」に設定してください。
chmod +x menu.sh
  1. ターミナルでコードを実行して、動作するかどうかをテストします。
./menu.sh

完全なコードリスト

#!/bin/bash
while true; do CHOICE=$(zenity --list --title="App menu" \ --column="Apps" \ "Chrome" \ "Geany" \ "Thonny" \ "Inkscape" \ "GIMP" \ --height=400 --width=300) if [ $? -ne 0 ]; then break fi case $CHOICE in "Chrome") google-chrome & ;; "Geany") geany & ;; "Thonny") thonny & ;; "Inkscape") inkscape & ;; "GIMP") gimp & ;; *) zenity --error --text="Invalid option, please try again." ;; esac
done

Ubuntuの起動時にコードを実行する

コードは記述済みですが、必要なときに手動で起動する必要があります。しかし、デスクトップが読み込まれたときにメニューが起動するように設定すれば、OSにファイルの場所を伝えるだけで済みます。

  1. Windows / Superキーを押して「スタートアップアプリ」を検索し、「スタートアップアプリケーション」を選択します。
  1. 「追加」をクリックします。
  1. アプリケーション名を「App Launcher」に設定し、menu.sh がある場所(ホームディレクトリ)をコマンドのパスとして指定します。コマンドの動作がわかるようにコメントを追加します。「追加」をクリックして保存します。
  1. 再起動してログインすると、アプリ ランチャーが自動的に実行され、使用できるようになります。

Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。

レス・パウンダーは、トムズ・ハードウェアのアソシエイトエディターです。クリエイティブテクノロジストとして、7年間にわたり、老若男女を問わず、教育と啓発のためのプロジェクトを手がけてきました。Raspberry Pi Foundationと協力し、教師向けトレーニングプログラム「Picademy」の執筆・提供にも携わっています。