そこで、C GNOMEアプレットをMATEに移植しようとして、さまざまな問題が発生した後、Pythonで最初から書き直すことにしました。最終的に、私はいくつかの時代遅れではないドキュメントを見つけました。これはここにあります:http ://wiki.mate-desktop.org/docs:devel:mate-panel
どうやら、Pythonでアプレットを作成する新しい方法は、「古い」PyGtkの代わりにPyGObjectイントロスペクションを使用することです。
だから私はいくつかの質問があります:
1. Why is it better to use PyGObject instead of PyGtk etc
2. Is the end user who downloads a python applet expected to have pygobject installed? It looks like it.
3. The MATE documentation says 'ensure we are using Gtk 2, not Gtk3', but http://python-gtk-3-tutorial.readthedocs.org/en/latest/install.html says that its exclusively supports Gtk+ 3 and higher.
編集:私が実行した場合
import gi
gi.require_version("Gtk", "2.0")
Pythonセッションで、次の警告が表示されます。
RuntimeWarning: You have imported the Gtk 2.0 module. Because Gtk 2.0 was not designed for use with introspection some of the interfaces and API will fail. As such this is not supported by the pygobject development team and we encourage you to port your app to Gtk 3 or greater. PyGTK is the recomended python module to use with Gtk 2.0
これは質問3にほぼ答えますが、質問1が再び表示されます。また、libmatepanelapplet-devをインストールしていても、実行from gi.repository import MatePanelApplet
するとImportErrorが発生します。Could not find any typelib for MatePanelApplet
もう一度編集:ここでImportErrorの解決策を見つけました:gi.repositoryからWebkitをインポートできません。gir1.2-mate-panel
( Webkitの代わりにインストールするだけです)
そしてより多くのエラー:
./xmonad-log-applet.py:66: Warning: g_closure_set_marshal: assertion `closure != NULL' failed
applet = MatePanelApplet.Applet()
(xmonad-log-applet.py:10928): GLib-GIO-CRITICAL **: g_dbus_connection_register_object: assertion `G_IS_DBUS_CONNECTION (connection)' failed
Segmentation fault (core dumped)