
どのオペレーティングシステムでもGUI(グラフィカルユーザーインターフェース)を作成するには、ターミナル用のNcurses / WhiptailタイプのGUIか、デスクトップ上の本格的なGUIのどちらかになります。ここでは後者を構築しますが、コマンドの実行にはターミナルを使用します。ターミナルやシェルスクリプトからGTKダイアログボックスを表示できるツールであるZenityは、非常に使いやすく、優れたツールです。
このハウツーでは、Bashスクリプトを使ってシンプルなアプリケーションランチャーを作成します。アプリケーションを選択すると、ターミナルコマンドがトリガーされ、アプリケーションが開きます。作成したアプリケーションランチャーは、他のアプリケーションを実行できる状態になります。
Zenityはターミナル経由でGUIアプリケーションを作成するための素晴らしいツールであり、Zenityプロジェクトには
完全なマニュアル使い方については、
Yad(Yet Another Dialog)という代替手段があります。このハウツーの前にYadをテストしましたが、Zenityの方がメニュー作成に堅牢な手段を提供していることがわかりました。両者の構文は非常に似ているので、両方を試してみて、お好みのものを見つけてください。
このプロジェクトには、Linuxオペレーティングシステムが動作するコンピューターが必要です。Ubuntu 24.04を選択しましたが、Debian、Fedora、その他多くのLinuxディストリビューションでも動作します。CrunchbangPlusPlus Linuxでテストしたところ、Zenityは期待通りに動作しました。
カスタムアプリケーションランチャーの作成
最初のステップは、カスタムアプリケーションランチャーを作成することです。そのためには、テキストエディタを使用してBashシェルスクリプトを作成します。Bashは学習に最適なプログラミング言語であり、オペレーティングシステムの機能を拡張することができます。
- ターミナルを開き、まずソフトウェア リポジトリ リストを更新してから、zenity をインストールします。
sudo apt update && sudo apt install zenity
- テキストエディタを開いてコードを記述します。ここではGeanyを使用していますが、他のテキストエディタでも構いません。Ubuntu 24.04ではデフォルトでGnomeの「テキストエディタ」が使用されていますが、MicrosoftのVisual Studio Codeエディタをインストールすることもできます。
- コードを Bash インタープリターにポイントしてコードを開始します。
#!/bin/bash
- ユーザーがアプリケーションを閉じるまで繰り返されるループを作成します。
while true; do
- Zenityアプリでアプリケーションのリストを作成します。アプリケーションウィンドウにはタイトル(アプリメニュー)を付け、列形式で表示します。必要な数のアプリケーション名を追加してください。高さと幅は、必要に応じて後で調整できます。
CHOICE=$(zenity --list --title="App menu" \ --column="Apps" \ "Chrome" \ "Geany" \ "Thonny" \ "Inkscape" \ "GIMP" \ --height=400 --width=300)
- ユーザーがダイアログを終了した場合にアクティブになるif 条件チェックを追加します。
if [ $? -ne 0 ]; then break fi
- 長い条件文を簡略化するために使用する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
- メインループを閉じます。
done
- コードを menu.sh としてホームディレクトリに保存します。
- ターミナルウィンドウを開き、ファイルを実行可能に設定します。ファイルマネージャーから実行可能にすることもできます。右クリック >> プロパティを開き、権限を「プログラムとして実行可能」に設定してください。
chmod +x menu.sh
- ターミナルでコードを実行して、動作するかどうかをテストします。
./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にファイルの場所を伝えるだけで済みます。
- Windows / Superキーを押して「スタートアップアプリ」を検索し、「スタートアップアプリケーション」を選択します。
- 「追加」をクリックします。
- アプリケーション名を「App Launcher」に設定し、menu.sh がある場所(ホームディレクトリ)をコマンドのパスとして指定します。コマンドの動作がわかるようにコメントを追加します。「追加」をクリックして保存します。
- 再起動してログインすると、アプリ ランチャーが自動的に実行され、使用できるようになります。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
レス・パウンダーは、トムズ・ハードウェアのアソシエイトエディターです。クリエイティブテクノロジストとして、7年間にわたり、老若男女を問わず、教育と啓発のためのプロジェクトを手がけてきました。Raspberry Pi Foundationと協力し、教師向けトレーニングプログラム「Picademy」の執筆・提供にも携わっています。