首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gajim:状态从“离开”变为“可用”不是随机的吗?

Gajim:状态从“离开”变为“可用”不是随机的吗?
EN

Unix & Linux用户
提问于 2020-05-20 06:09:08
回答 2查看 183关注 0票数 4

我把“5分钟后离开”写在:

代码语言:javascript
复制
Gajim
  -> Preferences
    -> Status

这基本上和预期的一样:在5分钟的不活动之后,我的状态自动改变为“离开”。当我返回并移动鼠标或在键盘上键入时,状态会更改为“可用”。

但它只在95%的时间起作用。有时,我回来,移动鼠标,但状态不会改变为“可用”。

这是非常恼人的,因为我必须始终检查我的状态是否改变了每次我回来。

为什么它有时起作用,但并不总是起作用?什么会影响这种行为?这仅仅是Gajim中的一个bug,还是我的系统中有什么可以做的来解决这个问题呢?

我正在使用Debian Bustergajim 1.1.2-2

为什么这么简单的事情不能可靠地工作呢?

编辑

我使用普通Openbox作为窗口管理器,使用slim作为登录管理器。我确实在运行dbus守护进程。

但我没有任何Gnome/KDE/..。桌面环境。我也没有任何屏幕保护程序

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2020-05-22 11:13:11

在你用细节更新问题之前,我就试着回答你的问题。

分析

在gajim中有这样的闲置状态

代码语言:javascript
复制
@unique
class IdleState(IntEnum):
    UNKNOWN = 0
    XA = 1
    AWAY = 2
    AWAKE = 3

您通常只考虑AWAKEAWAYUNKNOWN状态是一个泛型状态,当您没有从_get_idle_monitor获得任何结果时就设置它(参见下面)。XA状态是一个扩展的离开-屏幕是锁定的或者你有一个屏幕保护程序(只对Windows来说,有趣的是当你在Gnome上或者使用XScreenSaver时你不能在extended上(它总是错误的))。

这就是gajim决定你是否还在闲逛的原因:

代码语言:javascript
复制
def _get_idle_monitor(self):
    if sys.platform == 'win32':
        return WindowsIdleMonitor()

    try:
        return DBusGnomeIdleMonitor()
    except GLib.Error as error:
        log.info('Idle time via D-Bus not available: %s', error)

        try:
            return XssIdleMonitor()
        except OSError as error:
            log.info('Idle time via XScreenSaverInfo '
                     'not available: %s', error)

由于您可能没有使用Windows,所以我将介绍DBusGnomeIdleMonitorXssIdleMonitor

如果您正在使用Gnome,那么您可能正在使用代码的这一部分。我建议您使用登录调试模式,以便从代码的这一部分获取所有消息。

如果您看到这条消息:

代码语言:javascript
复制
   except GLib.Error as error:
        log.warning(
            'org.gnome.Mutter.IdleMonitor.GetIdletime() failed: %s',
            error)

然后gajim在从您的环境中获取空闲时间时会遇到问题(很难说是什么原因--可能DBus没有正确工作)。当然,您也可以看到log.info('Idle time via D-Bus not available: %s', error)消息。

在这里,如果您正在使用log.info('Idle time via XScreenSaverInfo not available: %s', error)消息,您应该会看到它。代码的这一部分可以生成OSError消息,这通常发生在您的XScreenSaver或系统不知何故缺少它的一个重要部分时。

您可以获得的错误消息:

代码语言:javascript
复制
 if libX11path is None:
   raise OSError('libX11 could not be found.')
 if libXsspath is None:
   raise OSError('libXss could not be found.')
 if self.dpy_p is None:
   raise OSError('Could not open X Display.')
 if extension == 0:
    raise OSError('XScreenSaver Extension not available on display.')
 if self.xss_info_p is None:
    raise OSError('XScreenSaverAllocInfo: Out of Memory.')

溶液

如果您正在使用Gnome,并且它并不总是工作,我将尝试安装XScreenSaver --也许这将是检测您的活动的更可靠的方法。

票数 3
EN

Unix & Linux用户

发布于 2020-05-23 23:24:28

我已经经历了完全相同的问题,运行一个最小的侏儒设置!就我的情况而言,解决办法如下:

代码语言:javascript
复制
apt install dbus-X11
dbus-launch gajim

显然,单独安装dbus并不会激活它,除非您跳过一些额外的环,或者其他什么东西。老实说,我不知道D总线是怎么工作的,也不知道为什么它需要¯\_(ツ)_/¯

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/587818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档