libnotify 通知控制台,而不是 $DISPLAY?

libnotify notifies the console, not $DISPLAY?

请注意:这不是涉及多头显示器的类似常见问题解答。这个问题是关于两台不同的电脑。

如果我登录到两台不同电脑的控制台,sitting-at.example.com和sshed-into.example.com,然后在sitting-at.example.com前面我ssh(用X11隧道)进入 sshed-into.example.com...

如果我这样做,然后 运行 使用 libnotify 的小 Python 脚本,通知会在 sshed-into.example.com 的控制台上弹出,而不是 sitting-at.example.com.但是我需要坐着的通知-at.example.com。在我看来,这更有意义。

结果是我没有看到通知,直到我开车到另一个位置并重新登录到 sshed-into.example.com 的控制台。

如果 libnotify 引发异常,我的代码会回退使用一个小的 GTK 弹出窗口,但它不会启动,因为就 libnotify 而言,一切正常。

我可以像以前一样一直使用 GTK 弹出窗口,但在可行的情况下我有点喜欢 libnotify。一方面,如果我单击不同的虚拟桌面或在不合时宜的时刻发出 window,libnotify 不会丢失。 GTK 弹出窗口会。

有没有办法使用 libnotify 获取远程通知,或者获取异常?

我考虑过解析 $DISPLAY 看它是否 "looks local",但似乎应该有更好的方法。

提前致谢!

PS:小脚本的代码是开源的,可以在 http://stromberg.dnsalias.org/~strombrg/notify-when-up2.html

找到

我最后检查了 $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)