libnotify уведомляет консоль, а не $ DISPLAY? - PullRequest
0 голосов
/ 17 февраля 2019

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

Если я войду в консоль двух разных компьютеров, sit-at.example.com и sshed-into.example.com, а затем сижу напротив сидячей.example.com Я ssh (с туннелированием X11) в sshed-into.example.com ...

Если я сделаю это, а затем запустю небольшой скрипт на Python, который использует libnotify, уведомление появится на консолииз sshed-into.example.com, а не сидя- at.example.com.Но мне нужно уведомление на sit-at.example.com.Мне кажется, в этом было бы больше смысла.

В результате я не вижу уведомления, пока не перееду в другое место и не войду обратно в консоль sshed-into.example.com.

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

Я мог бы использоватьGTK всплывают все время, как и раньше, но я вроде как libnotify, где это возможно.Во-первых, libnotify не теряется, если я нажимаю на другой виртуальный рабочий стол или поднимаю окно в неподходящий момент.Всплывающее окно GTK делает.

Есть ли способ получить удаленное уведомление, используя libnotify, xor получения исключения?

Я рассмотрел синтаксический анализ $ DISPLAY, чтобы посмотреть, выглядит ли он "локально", но похоже, что должен быть лучший способ.

Заранее спасибо!

PS: код для маленького скрипта с открытым исходным кодом и его можно найти по адресу http://stromberg.dnsalias.org/~strombrg/notify-when-up2.html

1 Ответ

0 голосов
/ 25 февраля 2019

Я проверил проверку $ DISPLAY, поскольку ответы здесь не были быстрыми и быстрыми.

Функция, которую я использовал:

def is_local_display(regex=re.compile(r'^:0(\.[0-9]+)?$')):
    """Return True iff $DISPLAY points at a local display."""
    if 'DISPLAY' not in os.environ:
        return False
    match = regex.match(os.environ['DISPLAY'])
    return bool(match)
...