【问题标题】:libnotify notifies the console, not $DISPLAY?libnotify 通知控制台,而不是 $DISPLAY?
【发布时间】:2019-02-25 11:04:43
【问题描述】:

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

如果我登录到两台不同计算机的控制台,即 sit-at.example.com 和 sshed-into.example.com,然后坐在 sit-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找到

【问题讨论】:

    标签: python gtk libnotify


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-08
      • 2016-09-22
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多