YAD はZenityフォークです。
このyad
スクリプトがあります:
#!/bin/bash
yad --text="Execute the file? (press 'Cancel' to open in text editor)"
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
アプリケーションランチャーとしてデスクトップファイルに関連付けられており、ファイル(スクリプトなど)をクリックしたときにウィンドウを表示するために使用できます。
細心の注意を払って、ラベルの名前を編集できます。
Zenityを使用した同じスクリプトは次のようになります。
#!/bin/bash
zenity --question --text="What to do?" \
--ok-label=Run \
--cancel-label=Edit
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
また、Run
およびEdit
は変更できます。
ここyad
にはラベルを編集する手段があると思う:
--button = BUTTON:ID
Add the dialog button. May be used multiply times. ID is an exit code or a command. BUTTON may be gtk stock item name for predefined
ボタン(gtk-closeやgtk-okなど)またはLABEL [!ICON [!TOOLTIP]]形式のテキストアイテムセパレータです。ストックアイテムの完全なリストは、gtk-demoプログラムの「ストックアイテムとアイコンブラウザー」というスニペットにあります。ボタンが指定されていない場合、[OK]ボタンと[キャンセル]ボタンが使用されます。詳細については、終了ステータスのセクションをご覧ください。 IDに数値以外の値がある場合、IDはコマンドのように扱われ、そのようなボタンをクリックしてもダイアログは閉じません。
確信はないけど。そして、私はその情報をどうすればいいのかわかりません。上記のyad
スクリプトのボタンの名前を変更する方法の例が必要です。
reasons を使用してyad
の代わりにzenity
を使用します-zenityスクリプトはcloseまたはEscで終了できません。
私はあなたが何を意味するのか完全にはわかりませんが、私がそれを正しく理解するなら、あなたはこのようなものが欲しいです:
#!/bin/bash
yad --text="Execute the file?" --button="Execute" --button="Edit"
case $? in
0)thunar "$1"
;;
1)gedit $1
;;
esac
リンク( buntuusers.de )を見つけましたが、それはドイツ語です。いくつかのコード例と写真がありますが、それは役に立つかもしれません。そして、いつでもグーグルで翻訳できます。
できればこれをコメントとして書いていましたが、まだ許可されていません。それが役に立てば幸い。
私は数日前に自分自身の質問のためにこれを書いた( ファイルまたはデータベースのレコードを挿入/編集/削除するためにzenity(またはyad)を使用するBashテンプレート )と価値があると思った共有:
画面上の6つのボタンと、以下のコードでそれらがどのように処理されるかに注目してください(まだ作業中です)。重要な注意点は、カスタムボタンを使用して、エスケープやWindowsのクローズ(Xをクリック)の252などのデフォルトのリターンコードを常にトラップする場合です。
while true ; do
Record=(`yad \
--title "websync - Compare local scripts to those published on internet." --list \
--text '<span foreground="blue" font="14">Toggle select next to file then click action button</span>' \
--width=900 --height=600 --center --radiolist -separator="$IFS" --no-click \
--button="Insert before":1 --button=Edit:2 --button=Delete:3 --button=Run:4 \
--button="Cancel ALL":5 --button=Save:6 --search-column=3 \
--column "Select" --column "Record number" --hide-column=2 --column "File Name" \
--column "Status" --column " Website Address" \
"${choices[@]}"`)
Action=$?
RecSelected=false
RecArr=()
i=0
# With radio list only one choice is possible
for Field in "${Record[@]}" ; do
RecSelected=true
RecArr[i]=$Field
# echo "RecArr $i ${RecArr[$i]}"
((i++))
done
echo "button: $Action"#
# Note: When X closes window or Escape pressed 252 is returned.
# Insert before || or Edit ?
if [[ $Action == 1 ]] || [[ $Action == 2 ]] ; then
RecArr[3]="New"
# --text="Set fields and click OK to update"
# Note if there is a space at end of line, next line generates invalid command error from yad
yad --width=600 --height=400 --title="Link file to Website Address" \
--form --center \
--field="Record Number":RO --field="File name":FL --field="Status":RO \
--field="Website Address":TXT \
${RecArr[1]} ${RecArr[2]} ${RecArr[3]} ${RecArr[4]}
ret=$?
# Cancel =252, OK = 0
if [[ $ret == 0 ]] ; then
# Update array and renumber
: # noop
else
continue # cancel changes.
fi
Elif [[ $Action == 3 ]] ; then
: # Delete
Elif [[ $Action == 4 ]] ; then
: # Run
Elif [[ $Action == 5 ]] || [[ $Action == 252 ]] ; then
# Cancel ALL || or X the window or Escape
exit
Elif [[ $Action == 6 ]] ; then
# Save
exit
else
zenity --error --text "~/bin/websync - Unknown button return code: $Action"
fi
done # End of while loop