私は Ruby-libappindicator バインディングを使用して buntuアプリケーションインジケーター を管理しています。
ポート3000がアプリケーションで使用されているかどうかを示します。ポートチェックは問題ではありませんが、ポートがビジー/フリーになったときにインジケーター(緑または赤の円を表示したい)も更新する必要があります。
次のような新しいインジケーターを作成できます。
require "Ruby-libappindicator"
indicator = AppIndicator::AppIndicator.new("test", "indicator-messages", AppIndicator::Category::APPLICATION_STATUS)
indicator.set_menu(Gtk::Menu.new)
indicator.set_status(AppIndicator::Status::ACTIVE)
Gtk.main
しかし、Gtk.main
を呼び出した後、コードが「ハング」するため、他のメソッドを呼び出すことができません。
作成後にappindicatorアイコンを更新するにはどうすればよいですか?
g_timeout_add_seconds()from GLib を使用して定期的に呼び出される関数を定義し、この関数でポートを確認してindicator.set_status(...)
を呼び出す必要があります。
GLib::Timeout.add_seconds
を使用してタイマーを作成する必要があります(ミリ秒を使用する場合はadd
のみ)。
# ...
GLib::Timeout.add_seconds(2) do # every two seconds....
app_indicator.set_icon '/path/to/icon.svg'
true # returning false cancels the timer
end
Gtk.main
あなた自身のインディケーターを書くことを保存するには...
... indicator-sysmonitor をインストールしてから、ポートを監視するシェルスクリプトを作成し、スクリプトをインジケーターに追加します。
赤/緑のアイコンではなく、状態を示すテキストラベルを用意する必要があります。