Ваш код кажется слишком сложным во многих отношениях. Несколько очевидных вещей:
Вы можете просто использовать Gtk.Menu, вы не создаете меню с помощью ряда кнопок. Не используйте кнопку переключения для вызова апплета, нормальная кнопка - это то, что вам нужно. Если вы используете EventBox, вам совсем не нужна кнопка. Достаточно импортировать subprocess только один раз во главе апплетаВозможно, было бы лучше показать пример того, как это может быть
#!/usr/bin/env python3
import subprocess
import gi.repository
gi.require_version('Budgie', '1.0')
from gi.repository import Budgie, GObject, Gtk
class SomeApp(GObject.GObject, Budgie.Plugin):
__gtype_name__ = "SomeApp"
def __int__(self):
GObject.Object.__init__(self)
def do_get_panel_widget(self, uuid):
return SomeAppApplet(uuid)
class SomeAppApplet(Budgie.Applet):
manager = None
def __init__(self, uuid):
Budgie.Applet.__init__(self)
self.box = Gtk.EventBox()
self.add(self.box)
img = Gtk.Image.new_from_icon_name("firefox", Gtk.IconSize.MENU)
self.box.add(img)
self.menu = Gtk.Menu()
self.create_menu()
self.box.show_all()
self.show_all()
def run_command(self, menuitem):
print(menuitem)
subprocess.Popen(["gedit"])
def create_menu(self):
item1 = Gtk.MenuItem('Some item')
item1.connect("activate", self.run_command)
item2 = Gtk.MenuItem('Another item')
item3 = Gtk.MenuItem('I am on a roll, yet another item')
for item in [item1, item2, item3]:
self.menu.append(item)
self.menu.show_all()
self.box.connect("button-press-event", self.popup_menu)
def popup_menu(self, *args):
self.menu.popup(
None, None, None, None, 0, Gtk.get_current_event_time()
)
И файл .plugin (SomeApp.plugin:
[Plugin]
Loader=python3
Module=someapp
Name=Some App
Description=Obviously an App
Authors=James Bond
Copyright=Copyright © 2018 007
Website=some_website
Icon=firefox
При создании меню вы можете добавьте элементы меню в список в сочетании с командами, которые вы хотите запустить. Таким образом, вам не нужно использовать отдельные функции для каждой команды, но просто запустите команду в качестве аргумента для запуска run_command(). 13]
Попробуйте этот:
gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ launcher-hide-mode 1
Попробуйте этот:
gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ launcher-hide-mode 1
Попробуйте этот:
gsettings set org.compiz.unityshell:/org/compiz/profiles/unity/plugins/unityshell/ launcher-hide-mode 1