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)