Linuxでシステムトレイにアイコン表示(gtk/app-indicator/python)

2021年11月25日

前回、Linuxでシステムトレイにアイコン表示してみたのですがC++の割に22~44MBとメモリ消費が多かったので、

今回はpythonだとどうなのかと実験してみました。

実装

前回とほぼ同じ内容をpythonで実装してみました。

import gi

gi.require_version('Gtk', '3.0')
gi.require_version('AppIndicator3', '0.1')
from gi.repository import Gtk as gtk
from gi.repository import AppIndicator3 as appindicator

def main():
    indicator = appindicator.Indicator.new(
            'test',
            'virtualbox',
            appindicator.IndicatorCategory.APPLICATION_STATUS)
    indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
    menu = gtk.Menu()
    item_quit = gtk.MenuItem(label='Exit')
    item_quit.connect('activate', exit)
    menu.append(item_quit)
    menu.show_all()
    indicator.set_menu(menu)
    gtk.main()

def exit(_):
    gtk.main_quit()

if __name__ == "__main__":
    main()

結果

見た目は同じなので省略します。

メモリ

Lubuntu-LXQtでは…

$ ps -eo uid,pid,rss,vsz,args | grep example
 1000  183446 35068 353640 python3 example.py
...
$

Neon-KDEでは…

$ ps -eo uid,pid,rss,vsz,args | grep example
 1000   43989 58896 376004 python3 example.py
...
$

35~59MB消費という結果でした。

まとめ

C++よりは13~15MB程度消費するようです。メンテナンス性はpythonが格段に上でメモリ消費も大して違わないのですが、常駐プロセスであることを考えるとこれだけで決めるのは難しい気がします。

次回はqtに挑戦してみます。

未分類gtk,linux,python

Posted by first_user