Значок Launcher (для запуска сценария) продолжает мигать и безразличен в течение семи секунд, как я могу решить его?

У меня есть сценарий, который я запускаю со Средства запуска Единицы. Когда я нажимаю на значок, мой сценарий запускается успешно.

В то время как сценарий только занимает долю секунды для выполнения, мигания значка средства запуска в течение приблизительно 7-8 секунд., во время которого средство запуска занято и не отвечает на дополнительные щелчки.

Я могу настроить свой сценарий удара таким способом, которым мигающий значок не блокирует сценарий в течение семи секунд?

Я использую Ubuntu 15.10.

3
задан 11 March 2016 в 17:46

1 ответ

Не простофиля

Очень связанный этот, но немного отличающийся, начиная с мигания, небыстро реагирующий значок является другой проблемой, не решенной путем добавления:

StartupNotify=false

к средству запуска; значок будет все еще продолжать мигать для appr. семью секундами. Хотя проблемы в обоих вопросах имеют тот же фон, и признаки и возможное решение немного отличаются.

Причина

После запущения приложений GUI от Средства запуска Единицы (путем нажатия на значок), средство запуска ожидает окна для появления. При ожидании, мигания курсора. Это берет средство запуска некоторое время, прежде чем это придет к выводу, что его "дата" (окно) не обнаружится. При ожидании однако, средство запуска не принимает, что новые щелчки выполняют сценарий (снова).

Решение в вышеупомянутом связанном вопросе, добавляя

StartupNotify=false

действительно решает прялку курсора мыши, но не делает значок быстро реагирующим снова.

Затем, что действительно работает?

Другое решение в связанном ответе однако (открывающийся фальшивку, невидимое окно при запуске не - сценарий GUI от средства запуска Единицы) также решит проблему мигающего значка.

Из связанного ответа:

  1. Создайте, если это еще не существует, каталог ~/bin
  2. Скопируйте сценарий ниже в пустой файл, сохраните его как 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()
    
  3. Добавьте к самому концу Вашего сценария команду:

    fake_window
    
  4. Выйдите из системы и въезжайте задним ходом (или работать source ~/.profile)

Теперь значок не мигнет в течение семи секунд, если Вы запустите свой скрипт от Средства запуска Единицы.

1
ответ дан 1 December 2019 в 17:34

Другие вопросы по тегам:

Похожие вопросы: