libnotify уведомляет консоль, а не $DISPLAY?

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

Если я вхожу в консоль двух разных компьютеров, sit-at.example.com и sshed-into.example.com, а затем, сидя перед sit-at.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, или получить исключение?

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

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

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

1 ответ

Решение

Я проверил проверку $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)
Другие вопросы по тегам