|
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/
|