가짐: '부재'에서 '접속 가능'으로 상태가 무작위로 바뀌는 거 아닌가요?

가짐: '부재'에서 '접속 가능'으로 상태가 무작위로 바뀌는 거 아닌가요?

다음에서 '5분 후에 출발'을 설정했습니다.

Gajim
  -> Preferences
    -> Status

이는 기본적으로 예상대로 작동합니다. 5분 동안 활동이 없으면 상태가 자동으로 "자리 비움"으로 변경됩니다. 돌아와서 마우스를 움직이거나 키보드를 입력하면 상태가 다시 "사용 가능"으로 변경됩니다.

그러나 그것은 95%의 시간에만 작동합니다. 가끔 돌아와서 마우스를 움직여도 상태가 "사용 가능"으로 변경되지 않습니다.

돌아올 때마다 내 상태가 바뀌었는지 확인해야 해서 매우 귀찮습니다.

때로는 작동하지만 항상 작동하지 않는 이유는 무엇입니까? 이 행동에 영향을 미치는 것은 무엇입니까? 이것은 단지 내 시스템의 버그인가요 Gajim, 아니면 내 시스템에 이 문제를 해결할 수 있는 기능이 있나요?

나는 사용하고 Debian Buster있으며gajim 1.1.2-2

왜 그렇게 간단한 것이 안정적으로 작동하지 않습니까?

편집하다

저는 창 관리자와 slim로그인 관리자로 일반 Openbox를 사용합니다. 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를 사용하지 않으실 것이므로 DBusGnomeIdleMonitorXssIdleMonitor.

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가 어떻게 작동하는지, 왜 필요한지 전혀 모르겠습니다.¯\_(ツ)_/¯

관련 정보