У меня есть сценарий, который я запускаю со Средства запуска Единицы. Когда я нажимаю на значок, мой сценарий запускается успешно.
В то время как сценарий только занимает долю секунды для выполнения, мигания значка средства запуска в течение приблизительно 7-8 секунд., во время которого средство запуска занято и не отвечает на дополнительные щелчки.
Я могу настроить свой сценарий удара таким способом, которым мигающий значок не блокирует сценарий в течение семи секунд?
Я использую Ubuntu 15.10.
Очень связанный этот, но немного отличающийся, начиная с мигания, небыстро реагирующий значок является другой проблемой, не решенной путем добавления:
StartupNotify=false
к средству запуска; значок будет все еще продолжать мигать для appr. семью секундами. Хотя проблемы в обоих вопросах имеют тот же фон, и признаки и возможное решение немного отличаются.
После запущения приложений GUI от Средства запуска Единицы (путем нажатия на значок), средство запуска ожидает окна для появления. При ожидании, мигания курсора. Это берет средство запуска некоторое время, прежде чем это придет к выводу, что его "дата" (окно) не обнаружится. При ожидании однако, средство запуска не принимает, что новые щелчки выполняют сценарий (снова).
Решение в вышеупомянутом связанном вопросе, добавляя
StartupNotify=false
действительно решает прялку курсора мыши, но не делает значок быстро реагирующим снова.
Другое решение в связанном ответе однако (открывающийся фальшивку, невидимое окно при запуске не - сценарий GUI от средства запуска Единицы) также решит проблему мигающего значка.
Из связанного ответа:
~/bin
Скопируйте сценарий ниже в пустой файл, сохраните его как fake_window
(никакое расширение) в ~/bin
и сделайте это исполняемым файлом
#!/usr/bin/env python3
from gi.repository import Gtk
from threading import Thread
import time
import subprocess
"""
This is a self-destroying window, to "feed" Unity a fake-window, preventing
the launcher to show a spinning wheel, waiting for a window to appear.
Include the command to run this script at the end of the (your) script.
"""
class FakeWin(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="1526closeme")
Thread(target = self.close).start()
def close(self):
t = 0
while t < 150:
time.sleep(0.2)
try:
pid = subprocess.check_output(["pgrep", "-f", "fake_window"])\
.decode("utf-8").strip()
subprocess.Popen(["kill", pid])
break
except subprocess.CalledProcessError:
pass
t += 1
def fakewindow():
window = FakeWin()
# make our window transparent
window.set_opacity(0)
window.set_default_size(0,0)
window.show_all()
Gtk.main()
fakewindow()
Добавьте к самому концу Вашего сценария команду:
fake_window
Выйдите из системы и въезжайте задним ходом (или работать source ~/.profile
)
Теперь значок не мигнет в течение семи секунд, если Вы запустите свой скрипт от Средства запуска Единицы.