ある:「不在」から「接続可能」に状態がランダムに変わるのではないですか?

ある:「不在」から「接続可能」に状態がランダムに変わるのではないですか?

次から「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がどのように機能するのか、なぜ必要なのかわかりません。¯\_(ツ)_/¯

関連情報