кажется, что ваш пользователь не имеет административных прав и поэтому не может ссылаться на sudo. Однако переход на пользователя root работает. Решение будет состоять в том, чтобы ваша учетная запись имела права администратора.
Вы можете сделать это, если вы войдете в свою учетную запись администратора и затем измените ее с помощью учетных записей пользователей.
Чтобы удалить ошибки и применить функциональность middleclick к рассматриваемому коду (в то время как может быть много альтернативных методов), я добавил аргумент в оператор build_menu в главном си, что определение build_menu может принимать аргумент. Я назвал этот аргумент indicator. Затем добавлен метод middleclick set_secondary_activate_target().
Фиксированный код:
#!/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()
Существует ряд примеров использования метода set_secondary_activate_target, который можно найти в Google поиск. Однако проблема, которую я испытал, заключается в том, что все они включены в сложный скрипт, используемый многими способами. Это попытка привести его в упрощенном примере, чтобы облегчить для следующего человека попытку адаптировать его к их коду.
Чтобы удалить ошибки и применить функциональность middleclick к рассматриваемому коду (в то время как может быть много альтернативных методов), я добавил аргумент в оператор build_menu в главном си, что определение build_menu может принимать аргумент. Я назвал этот аргумент indicator. Затем добавлен метод middleclick set_secondary_activate_target().
Фиксированный код:
#!/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()
Существует ряд примеров использования метода set_secondary_activate_target, который можно найти в Google поиск. Однако проблема, которую я испытал, заключается в том, что все они включены в сложный скрипт, используемый многими способами. Это попытка привести его в упрощенном примере, чтобы облегчить для следующего человека попытку адаптировать его к их коду.
Чтобы удалить ошибки и применить функциональность middleclick к рассматриваемому коду (в то время как может быть много альтернативных методов), я добавил аргумент в оператор build_menu в главном си, что определение build_menu может принимать аргумент. Я назвал этот аргумент indicator. Затем добавлен метод middleclick set_secondary_activate_target().
Фиксированный код:
#!/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()
Существует ряд примеров использования метода set_secondary_activate_target, который можно найти в Google поиск. Однако проблема, которую я испытал, заключается в том, что все они включены в сложный скрипт, используемый многими способами. Это попытка привести его в упрощенном примере, чтобы облегчить для следующего человека попытку адаптировать его к их коду.
Короткий ответ: вы не можете. При нажатии на значок индикатора открывается меню. Что можно сделать, это установить средний (scrollwheel) щелчок (на сенсорных планшетах, которые правы и левый клик нажат вместе), что делается путем установки вторичной активации объекта индикатора объекта.
Вот пример того, что я использую в моем собственном индикаторе-индикаторе запуска на строках 152 и 153:
152 last = self.get_last_menuitem(self.app_menu)
153 self.app.set_secondary_activate_target(last)
Когда пользователь нажимает средний щелчок по элементу идентификатора, он активирует конкретный элемент меню, не опуская меню.
То, что вы также можете сделать в качестве альтернативы, - использовать события прокрутки, что-то вроде этого:
86 self.app.connect("scroll-event", self.set_next)
Короткий ответ: вы не можете. При нажатии на значок индикатора открывается меню. Что можно сделать, это установить средний (scrollwheel) щелчок (на сенсорных планшетах, которые правы и левый клик нажат вместе), что делается путем установки вторичной активации объекта индикатора объекта.
Вот пример того, что я использую в моем собственном индикаторе-индикаторе запуска на строках 152 и 153:
152 last = self.get_last_menuitem(self.app_menu)
153 self.app.set_secondary_activate_target(last)
Когда пользователь нажимает средний щелчок по элементу идентификатора, он активирует конкретный элемент меню, не опуская меню.
То, что вы также можете сделать в качестве альтернативы, - использовать события прокрутки, что-то вроде этого:
86 self.app.connect("scroll-event", self.set_next)
Короткий ответ: вы не можете. При нажатии на значок индикатора открывается меню. Что можно сделать, это установить средний (scrollwheel) щелчок (на сенсорных планшетах, которые правы и левый клик нажат вместе), что делается путем установки вторичной активации объекта индикатора объекта.
Вот пример того, что я использую в моем собственном индикаторе-индикаторе запуска на строках 152 и 153:
152 last = self.get_last_menuitem(self.app_menu)
153 self.app.set_secondary_activate_target(last)
Когда пользователь нажимает средний щелчок по элементу идентификатора, он активирует конкретный элемент меню, не опуская меню.
То, что вы также можете сделать в качестве альтернативы, - использовать события прокрутки, что-то вроде этого:
86 self.app.connect("scroll-event", self.set_next)