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

时间:2019-02-16 23:59:31

标签: python gtk libnotify

请注意:这不是涉及多头显示的类似声音的常见问题。这个问题是关于两台不同的计算机。

如果我登录到两台不同计算机的控制台上,即坐在ating-example.com和sshed-into.example.com,然后坐在sating-at.example.com的前面,则使用SSH(使用X11隧道)进入sshed-into.example.com ...

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

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

如果libnotify引发异常,我的代码会有一个后备功能,可以使用一些GTK弹出窗口,但是它不会启动,因为就libnotify而言,一切正常。

我可以像以前一样一直使用GTK弹出窗口,但是在可行的地方我有点喜欢libnotify。一方面,如果我单击另一个虚拟桌面或在不适当的时候举起一个窗口,libnotify不会丢失。 GTK弹出窗口可以。

是否可以使用libnotify获取远程通知,或者获取异常的异或?

我已经考虑过解析$ DISPLAY看看它是否“看起来像是本地的”,但是似乎应该有一个更好的方法。

谢谢!

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

找到

1 个答案:

答案 0 :(得分:0)

我结束了检查$ 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)