From: Yuuki H. <ma...@ma...> - 2015-12-21 13:55:21
|
原野です。 arch linux で mate を使っており、GObjectIntrospection を使ってruby で mate panel applet を作ろうとしていますが、うまくいきません。何が問題な のか切り分けがうまくできていませんが、GObjectIntrospection の ruby binding の問題か? と思った(*)ので、こちらに投げさせていただきました。 python で PyGI を使って mate panel applet を作る sample が見つかったの で、それを元に以下のように作りました。 # なお、その sample は動いてましたので、MatePanelApplet-4.0.typelib に # は問題はないと思っています。 /home/masm/src/mxmms2/test/test.rb ---------------- #!/usr/bin/env ruby system('date >> /tmp/log2') require 'gtk3' Gtk.init module MatePanelApplet end loader = GObjectIntrospection::Loader.new(MatePanelApplet) loader.load('MatePanelApplet') system('echo go >> /tmp/log2') MatePanelApplet::Applet.factory_main('MxmmsAppletFactory', true, MatePanelApplet::Applet.gtype) do p 'callback' label = Gtk::Label.new 'Test' applet.add label applet.show_all true end system('echo main >> /tmp/log2') # Gtk.main system('echo end >> /tmp/log2') ---------------- /usr/share/dbus-1/services/org.mate.panel.applet.MxmmsAppletFactory.service ---------------- [D-BUS Service] Name=org.mate.panel.applet.MxmmsAppletFactory Exec=/home/masm/src/mxmms2/test/test.rb ---------------- /usr/share/mate-panel/applets/org.mate.panel.MxmmsApplet.mate-panel-applet ---------------- [Applet Factory] Id=MxmmsAppletFactory InProcess=false Location=/home/masm/src/mxmms2/test/test.rb Name=Mxmms Applet Factory Description=Mxmms Applet Factory [MxmmsApplet] Name=Mxmms Applet Description=Masm XMMS2 Client Icon=mate ---------------- mate_panel_applet_factory_main() の中では gtk_main() が呼ばれているは ずで、MatePanelApplet::Applet.factory_main からそう簡単に返ってくるは ずはないと思うのですが、一瞬で返ってきて、panel には何も表示されません。 Gtk.main の行を uncomment しても、そこで止まりはしますが、何も表示され ません。 mate_panel_applet_factory_main() 中で /tmp/log に適当に文字列を出力す るようにしても出力されてないところを見ると、 MatePanelApplet::Applet.factory_main から mate_panel_applet_factory_main() が呼ばれていないのでは、と考えられま す((*)はこの辺が理由)。 各メソッドの引数仕様も解らない状態で手探りでやってますので、頓珍漢なこ とをしている可能性も十分にありますし、それが原因で呼ばれていない可能性 もあるのかもしれません。 何かお解りでしたら教えてください。 MATE Desktop Environment 1.12.1 (↑確か pacman -S mate-gtk3 で入れたので gtk3 版のはず) gtk3 3.18.6 ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux] ruby binding については、gtk3 も gobject-introspection も 3.0.7 以上、よろしくお願いします。 -- 原野 裕樹 mailto:ma...@ma... http://masm11.ddo.jp/~masm/ |