シンプル・ランチャー C言語版

先日のZenityを利用したもので、そこそこ使える事が分かりましたが、ちょっと不満がありました。
不満点は、リスト表示以外は要らない、という点です。ボタンやウィンドウ・タイトルが余分に感じたのです。それに、やっぱり少し遅いです。スクリプトですからね。

という訳で、C言語で作ってみる事にして、調べてみて、gtk+ を使う事にしました。画面イメージは次です。
mods
随分とシンプルでしょう?

このプログラムは、起動すると、パラメータで渡されたテキスト・ファイルに記述してある項目を画面中央にリスト表示します。
何らかをトリガーにして起動されることを想定しています。lxde の lxde-rc.xml に登録しておくなどです。

Enterキーが押されると、選択されている項目に対応するコマンドをsystem()関数を利用して起動し終了します。
Escキーが押されるか、フォーカスを他に移すと、終了します。起動してしまったけど、他の事やりたいと思った場合に、手間がいりません。
Ctrl キーと jキーが同時に押されたら、Enter キーが押されたと同様の扱いとなります。
Ctrl キーと qキーが同時に押されたら、Esc キーが押されたと同様の扱いとなります。

テキスト・ファイルのサンプルは次です。
————————<<<次の行から>>>—————————————
# sample
text=”edit .bashrc” ;cmd=”leafpad ~/.bashrc”;
text=”edit lxde-rc.xml(user)”;cmd=”leafpad ~/.config/openbox/lxde-rc.xml”;
text=”edit test.mnu” ;cmd=”leafpad ~/dev/gtk/test.mnu”;
text=”edit fstab” ;cmd=”gksudo leafpad /etc/fstab”;
————————<<<上の行まで>>>—————————————

1文字目が「#」の行はコメント行です。
「text=」の後に、ダブルクォーテーションで囲んで、リスト表示させる内容を記述します。
「cmd=」の後に、ダブルクォーテーションで囲んで、対応するコマンドを記述します。コマンドはリストに表示はされません。
対となる「text=」と「cmd=」は同一行に記述し、その間は、「;」で区切ります。
「text」と「=」の間、「cmd」と「=」の間に空白文字等は含める事はできません。
上記のサンプルでは、行末に「;」を記していますが、これは必須ではありません。

登録できるのは、20個迄になっています。それ以上が記述されていても、リスト表示されません。
「text=」の内容として記述出来るのは127文字、「cmd=」の内容として記述できるのは、255文字迄です。それ以上記述してあると、その行はリスト表示されません。
1行は510文字迄にしてください。

リスト表示させる内容の中に、ダブルクォーテーションは記述できません。エスケープする手段はありません。
対応するコマンドの中には、ダブルクォーテーションを含める事ができます。エスケープする必要はありません。最後に現れるダブルクォーテーションがコマンドの末尾を指します。
処理を軽くするために、高度な字句解析はしません。
そのため、制限事項はつくと思いますが、ご容赦ください。

名前は、modsとしました。「modest starter」の短縮です。何を隠そう、名前を考えるのが一番楽しいです。

ソース(mods.c)は次です。

Makefile は次です。

よろしければ、使ってみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA