Linux GUI · 1 min read · Jan 22, 2026

kdialogを使ってLinuxシェルスクリプトにシンプルなGUIを追加する

シェルスクリプトは非常に便利なものです。これにより、多くのフラグを持つ難しいコマンドを置き換えるための簡単なコマンドを作成したり、cronジョブから実行するために多くの複雑なコマンドをバッチ処理したりできます。お気に入りのターミナルで迅速に実行できるため素晴らしいですが、場合によっては特定のフラグやオプションの組み合わせを覚えておく必要があります。このような状況にある場合は、タスクを迅速に進めるためにいくつかのシンプルなGUIダイアログを追加できます。

このチュートリアルを利用するには、以下が必要です:

  • Unix系シェルへのアクセス(これはbashを念頭に置いて書かれています)。
  • macOSおよび*nix OS(Linuxなど)は、これまたはそれに類似したものが付属しているはずです。
  • Windowsでは、CygWin環境をインストールするか、最近のWindows 10バージョンでは「Windows Subsystem for Linux」を使用できます。
  • KDEデスクトップ環境の基本ライブラリ。特に別のDEがインストールされている場合は、全体を必要としません。

kdialogのインストールは、KDE以外のデスクトップ環境から始めた場合、かつマシンに他のKDEアプリケーションがない場合にのみ必要です。これはUbuntuのkde-baseapps-binパッケージの一部であり、Kubuntuではデフォルトでインストールされています。他の派生版では、ターミナルで以下のコマンドを使用してインストールできます:

ターミナルからkdialogをインストールする。

sudo apt-get install kde-baseapps-bin

これにより、他のKDEライブラリやパッケージも一緒にインストールされるため、かなりのインストールになる可能性があります。しかし、ハードドライブのスペースは安いですよね?

スクリプトは(一般的に)自動的に物事を行うことを目的としているため、次の状況でのみこのダイアログを表示する必要があります:

  • ユーザーから何らかの入力をキャプチャする必要がある場合、または;
  • ユーザーに目立つ方法で何らかのフィードバックを表示したい場合(つまり、コマンドラインで単にテキストを出力するだけではありません)。

[drushを使用してDrupalサイトをバックアップする]コマンドを使用する例を見てみましょう。もちろん、あなたは新興のインターネット起業家なので、1つのDrupalサイトだけではありません—? 3つあります。すべてのサイトをバックアップしたいときに別々のコマンドを実行したくはありませんが、同時に1つだけのスナップショットを取得したい場合に長いパスを覚えておきたくもありません。いくつかのダイアログを使用して、次のように自分を助けることができます:

  • バックアップできるサイトのリストをユーザーに提示し、選択を促すこと、そして;
  • 各結果が成功か失敗かを確認するメッセージをユーザーに表示すること。

kDialogは、コマンドラインでダイアログタイプを呼び出し、そのタイプが必要とするパラメータやダイアログタイトルなどの他のオプションを指定することで機能します。

ニーズに応じて選択できるさまざまなダイアログタイプがあります。以下の通りです:

kDialogタイプ

ダイアログタイプサンプル画像説明
情報メッセージボックステキストメッセージを提供し、「OK」ボタンで閉じるボックスを表示し、「非重大」な情報、警告、またはエラーアイコンを提供します。
パッシブポップアップ数秒以内に消えるメッセージを表示します。つまり、ユーザーが閉じたり却下したりする必要はありません。
はい/いいえメッセージボックス「情報メッセージボックス」と同様に、情報/警告/エラーアイコンを持つダイアログを表示し、ユーザーの「はい」または「いいえ」の選択を提供します。
入力ダイアログボックスユーザーがテキストを入力できる単一のボックスを提供します。
ファイル表示ボックスダイアログボックス内に(プレーンテキスト)ファイルの内容を表示します。
メニューおよび選択ダイアログボックスアイテムのリストを持つダイアログを提供し、ユーザーが1つまたは複数の選択を行えるようにします: - メニューおよびラジオリストダイアログは1つのオプションを選択できます。 - チェックリストダイアログは1つ、複数、またはすべてのオプションを選択できます。 - コンボボックスダイアログはドロップダウンメニューを使用して1つのオプションを選択できます。
ファイル選択ダイアログボックスユーザーはファイルシステムの一部を選択できます。これには、次のものが含まれます: - 名前またはファイルタイプでフィルタリングできる既存のファイルを選択する - 新しいファイルの名前を入力して保存/更新する - ディレクトリ
プログレスダイアログユーザーはkDialogをdcopコマンドと組み合わせて、操作の進行状況をユーザーに更新するダイアログを作成できます。

上記のオプションを見渡すと、2つが潜在的に目を引きます:

  • 「チェックリストダイアログ」は、バックアップするサイトの1つまたはすべてを選択できるようにします。
  • 「情報メッセージボックス」は、これらの各サイトが成功したか失敗したかを表示するために使用できます。

これらのオプションを考慮すると、スクリプトは次のようになります:

SITE1はここにあります(これらは相対パスではなくフルパスにしてください)
SITE2はそこにあります
SITE3は別の場所にあります

display a kDialog with SITE1, SITE2, and SITE3 as options
    and tell me which one(s) the user picks

for each one the user picked:
    run +drush ard+ on that site, and
    record whether it was successful or not.

display another +kDialog+ with each of those results.

これを念頭に置いて、早速始めましょう。

最初に行うべきことは、選択された各サイトに適用するdrushコマンドを組み立てることです。すべてのサイトが異なるディレクトリにある同じウェブホスト上にあると仮定しますが、バックアップを共通の「backup」ディレクトリに保存したいとします。次のようにできます:

cd SITE
drush ard --destination=/home/user/backup/SITENAME.tar.gz

したがって、変数の設定とforループの知識を使用して、次のようにスクリプトを作成できます:

#! /bin/bash

// 注:すべてのサイトへのパスを保持する変数を作成します
PERSONALSITE='/home/www/mypersonalsite/'
BUSINESSSITE='/home/www/mybusinesssite/'
HOBBYSITE='/home/www/myhobbysite/'

// 注:宛先へのパスを保持する変数を作成します
DESTINATION='/home/user/backup'

// 注:ユーザーにバックアップするサイトを選択するように求めるダイアログを表示します
CHOICES=$(kdialog --checklist "バックアップするサイトを選択してください:" 1 "個人サイト" off 2 "ビジネスサイト" off 3 "趣味サイト" off)

// 注:ダイアログから返された各選択肢の成功/失敗メッセージを記録します
for each in $CHOICES
do
    case {
        1)
            cd $PERSONALSITE
            drush ard --destination=$DESTINATION/mypersonalsite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "個人サイトのバックアップ:成功
"
            else
                RESULTS += "個人サイトのバックアップ:失敗
"
            fi
        2)
            cd $BUSINESSSITE
            drush ard --destination=$DESTINATION/mybusinesssite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "ビジネスサイトのバックアップ:成功
"
            else
                RESULTS += "ビジネスサイトのバックアップ:失敗
"
            fi
        3)
            cd $HOBBYSITE
            drush ard --destination=$DESTINATION/myhobbysite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "趣味サイトのバックアップ:成功
"
            else
                RESULTS += "趣味サイトのバックアップ:失敗
"
            fi
    esac

// 注:すべてのバックアップ操作の結果を表示するダイアログを表示します。
kdialog --msgbox $RESULTS

これを保存し、Bashシリーズの最初の記事で説明されているように実行できるようにすれば、単一のコマンドを実行し、サイトを選択するための使いやすいダイアログを取得し、その後、すべてがどのように進んだかを報告する素敵なウィンドウを見ることができます。

このスクリプトは確かにいくつかの方法で最適化できますが、kdialogを使用してユーザー入力を収集し、スクリプト内で単一のプログラムを実行することで結果を表示する方法を示しています。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。