回答:
使用する方法があります zenity
zenity --question --text "Are you sure?"
このコマンドの終了ステータスは$?、次のような変数でテストできますif [ $? -eq 1 ];then exit 1 ; fi。0はOK、1キャンセルです。この構成は、後でポップアップの終了ステータスをテストする必要がある場合にうまく機能$?します。おそらく、ポップアップが変数に終了した直後に保存します。コメントで説明したように、以下のような構造も機能します。
if zenity --question --text "Are you sure"
then
runSumeFunction
else
exit 1
fi
または
zenity --question --text "Are you sure?" || echo "User isn't sure:/"
xmessageスクリプト自体で使用できます。「シバン」の後に次のようなものを置きます:
xmessage "Are you sure?"
「よろしいですか?」というグラフィカルなメッセージが表示されます。「大丈夫」ボタン付き。
xmessage複数のボタンを設定して、ボタンの内容を変更できます。各ボタンで実行するアクションを構成することもできます。
例えば、
xmessage -buttons ok:0,cancel:1 "Are you sure?"
man xmessageすべてのオプションについては、を参照してください(たくさんあります)。
それを行う方法をあなたに教える代わりに、私はあなたがそれをするべきではないことをあなたに伝えます。
TL; DR-スクリプトを変更しないでください。代わりに、ファイルマネージャーを構成するか、ユーザーが誤ってファイルマネージャーを実行した理由を理解してください。
編集:一般的な設定では不十分で、ユーザーからの特別な確認が必要であるかのように、スクリプトを何らかの形で特別なものとして扱っているようです。それをダブルクリックすると、ある確認。ユーザーが誤ってそれを実行していることがわかった場合は、なぜそれを実行するのかを理解し、代わりに解決する必要があります。次に、実際の問題は、確認を要求する方法ではなく、ユーザーが誤って実行するのを防ぐ方法です。
問題を明らかにする方法から、ファイル(ファイル)がある場所に移動し、ファイルマネージャーからそれをクリックすることにより、プログラム(スクリプト)が実行されることを期待しているようです。システム内の他のすべてのプログラムについて考えます。そのようにいくつ始めますか?/usr/local/binFirefoxの起動時に移動しますか?もちろんそうではありません。アプリケーションメニューからクリックします。(gnome tweakはpythonスクリプトである可能性があります)
うまくいけば、あなたはアプリケーションメニューからそれをクリックすることを偶然に考えないでしょう。したがって、問題は、ファイルマネージャーを使用する代わりに、スクリプトをそこに表示させる方法になります。これを行うには、次のことを行います。
ユーザーが誤ってクリックする可能性がある他のファイルからスクリプトを離してください(一般的な場所は/usr/local/bin/、システム全体のインストールまたは~/.local/bin/ユーザーインストールです)。
デスクトップエントリファイルを作成します(標準仕様をお読みください)。これは最小限のケースです:
[Desktop Entry]
Name=Your script name
Exec=path/for/your/script
Icon=path/for/your/icon/can/be/svg
Terminal=false
Type=Application
/usr/local/share/applications/your-script.xmlまたはに押し込み~/.local/share/your-script.xmlます。
最後に実行しupdate-desktop-databaseます。
スクリプトをダブルクリックしているので、これを確認するのはファイルマネージャの仕事です。スクリプトを実行する必要があるかどうかを確認するのは、スクリプトの仕事ではありません。これを極端にします。プログラムを呼び出すたびに確認する必要があったとしたら、どれほどばかげていると思いますか。
プログラムが確認を求めなければならないのは、危険で不可逆的な可能性のあることを実行しようとしているときだけです。たとえば、ファイルを上書きしたり、ゴミ箱をバイパスしたりします。そして、これらの例でさえ、プログラムに何か特定のことをさせることについてであることに注意してください。彼らはそのようなプログラムを始めることについてではありません。プログラムがそのような危険なことを行うことのみを目的とする場合は、確認を求めてはなりません。
実際、Nautilus(Gnomeファイルマネージャー)は、デフォルトで、スクリプトを実行する(または、テキストエディターで開く)かどうかを確認するメッセージを表示します。
そしてもちろん、この動作は構成可能であり、ユーザーにそれをオフにする可能性を与えます(実行可能テキストファイルのエントリに注意してください)。
そのため、スクリプトに迷惑な確認ダイアログを追加しないでください。ファイルマネージャを正しく設定します。そして、ユーザーに同じことをさせてください。
yadを使用することができます。これは、はるかに構成可能であるため、ステロイドのゼニティのようなものです。Ubuntuのソフトウェアセンターからインストールできます。最も基本的な形式では、次のように入力できます
yad --title=Question --image=dialog-question --text="Are you sure?"
「OK」が押された場合は、戻りコード0が返されます。「キャンセル」が押された場合は、戻りコード1が返されます。
ボックスを中央に配置し、幅を調整することをお勧めします。先頭のタブを使用して、「Are you sure?」というテキストを配置します。より右側にあり、常に上にあります。これには、次のものが必要です。
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200
「Are you sure?」の前の「\ t」を除いて、ほとんどのスイッチは自明です。これは、テキストを印刷する前にタブスペースを追加するだけです。これが見えるはずです:
ボックスは中央に配置され、常に上に表示され、見栄えがよくなります。変数を設定して、どのボタンが押されたかをテストするには、以下を使用します。
yad --center --on-top --title=Question --image=dialog-question --text="\tAre you sure?" --width 200;result=$?;echo $result
この例では、OKが押された場合は0に、キャンセルが押された場合は1に設定される変数$ resultを使用しています。
ヤドのヘルプについては、あなたは使用することができるman yadかyad --help-allが、私は実用的な例が適応しやすくなりました。ここにいくつかあります。私の意見では、yadは構成可能であるため、zenityよりも使用可能です。
if zenity...かzenity... || exit