web-dev-qa-db-ja.com

シンプルなZenityスクリプト-アイコンを選択するには?

/usr/share/iconsで利用可能なすべてのアイコンテーマを一覧表示するシンプルなグラフィカルZenity + Bashスクリプトを作成しようとしています。ユーザーが1つを選択し、「OK」をクリックしてgtk-icon-theme-name="Humanity"~/.gtkrc-2.0.mineを置き換えて、選択したテーマ名をHumanityの代わりに言います。 Openboxでアイコンテーマを選択するためのグラフィカルな方法を提供するためにこれを行っています。これはまだ主流のプログラムがないためです。

これは私がこれまでに持っているものです:

#!/bin/bash
ICONS=$(ls -I "*.*" /usr/share/icons); SELECTED=$(zenity --list --column=/usr/share/icons \ $ICONS); echo 'gtk-icon-theme-name="$SELECTED"' >~/.gtkrc-2.0.mine

これは機能しますが、echoは引数を取り、ユーザーの選択に置き換える代わりに、実際にテキストファイルに$SELECTEDを書き込みます。

これとZenityの基本を習得するのを手伝ってくれる人に感謝します。

4
ovine

@ TungTran の答えに加えて、スクリプトはいくつかの改善を求めています。

スクリプトを1行に詰め込むと、読み取り/理解/デバッグが困難になります。 1行に1つのコマンドを記述します。

#!/bin/bash
ICONS=$(ls -I "*.*" /usr/share/icons)
SELECTED=$(zenity --list --column=/usr/share/icons \ $ICONS)
echo "gtk-icon-theme-name=\"$SELECTED\"" >~/.gtkrc-2.0.mine

テキスト出力に変数を埋め込むもう1つの面倒な方法は、printfを使用することです。

printf 'gtk-icon-theme-name="%s"\n' "$SELECTED" >~/.gtkrc-2.0.mine
1
janos