我已在以下位置设置“5 分钟后离开”:
Gajim
-> Preferences
-> Status
这基本上按预期工作:5 分钟不活动后,我的状态自动更改为“离开”。当我回来并移动鼠标或在键盘上键入时,状态会变回“可用”。
但它只有 95% 的时间有效。有时,我回来,移动鼠标,但状态没有更改为“可用”。
这非常烦人,因为我每次回来都必须检查我的状态是否发生了变化。
为什么有时有效,但并不总是有效?是什么影响了这种行为?这只是 中的一个错误Gajim
,还是我的系统上有什么可以解决这个问题?
我正在使用Debian Buster
,并且gajim 1.1.2-2
为什么这么简单的事情不能可靠地工作?
编辑
我使用普通 Openbox 作为我的窗口管理器和slim
登录管理器。我确实有 dbus 守护进程在运行。
但我没有任何 Gnome/KDE/... 桌面环境。我也没有屏保
答案1
即使在您用详细信息更新问题之前,我也会尝试回答您的问题。
分析
有这些空闲状态在加吉姆:
@unique
class IdleState(IntEnum):
UNKNOWN = 0
XA = 1
AWAY = 2
AWAKE = 3
您通常只考虑AWAKE
或AWAY
。该UNKNOWN
状态是一个通用状态,当您没有得到任何结果时设置该状态_get_idle_monitor
(见下文)。 XA
状态是延长离开 - 屏幕被锁定或者您有屏幕保护程序(仅适用于 Windows,有趣的是,当您使用 Gnome 或使用 XScreenSaver 时,您不能处于延长离开状态(它总是错误的))。
这就是 gajim 判断您是否仍在闲置的方式:
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,因此我将介绍DBusGnomeIdleMonitor
和XssIdleMonitor
。
如果您使用 Gnome,那么您可能正在使用这部分代码。我建议在调试模式下使用日志记录,这样您就可以从这部分代码中获取所有消息。
如果您看到此消息:
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 或系统缺少某个重要部分,通常会发生这种情况。
您可能收到的错误消息:
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也许这将是检测您的活动的更可靠的方法。
答案2
我在运行最小的 Gnomeless 设置时遇到了完全相同的问题!就我而言,解决方案如下:
apt install dbus-X11
dbus-launch gajim
显然,dbus
单独安装并不会激活它,除非你跳过一些额外的障碍或其他东西。老实说,我不知道 D-Bus 是如何工作的,也不知道为什么需要它¯\_(ツ)_/¯