Para remover os erros e aplicar a funcionalidade middleclick ao código em questão (embora possa haver muitos métodos alternativos), adicionei um argumento à instrução build_menu
no si principal de que a definição build_menu
pode levar um argumento. Eu chamei esse argumento indicator
. Em seguida, adicionou o método middleclick, set_secondary_activate_target()
.
O código fixo:
#!/usr/bin/python
import os
import signal
import subprocess
import gi
from middleClick import reveallauncher
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk as gtk
gi.require_version('AppIndicator3', '0.1')
from gi.repository import AppIndicator3 as appindicator
APPINDICATOR_ID = 'appreveallauncher'
def main():
indicator = appindicator.Indicator.new(APPINDICATOR_ID,
os.path.abspath('sample_icon.svg'),
appindicator.IndicatorCategory.SYSTEM_SERVICES)
indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
indicator.set_menu(build_menu(indicator))
gtk.main()
def build_menu(indicator):
menu = gtk.Menu()
item_reveallauncher = gtk.MenuItem('Reveal Launcher')
item_reveallauncher.connect('activate', reveallauncher)
indicator.set_secondary_activate_target(item_reveallauncher)
item_quit = gtk.MenuItem('Quit')
item_quit.connect('activate', quit)
menu.append(item_reveallauncher)
menu.append(item_quit)
menu.show_all()
return menu
def reveallauncher(_):
subprocess.call("xdotool key alt+F1", shell=True)
def quit(_):
gtk.main_quit()
if __name__ == "__main__":
signal.signal(signal.SIGINT, signal.SIG_DFL)
main()
Existem vários exemplos de uso do método set_secondary_activate_target
que pode ser encontrado pelas pesquisas do Google. No entanto, o problema que experimentei é que eles estão todos incluídos em um script complexo usado de várias linhas dependentes. Este é um esforço para colocá-lo em um exemplo mais simplificado para tornar mais fácil para a próxima pessoa tentando adaptá-lo ao seu código.