Gajim :изменение статуса с "Нет на месте" на "Доступен" не работает случайным образом?

Вы можете использовать команду less -R <filename>.<fileformat>, чтобы открыть выходной файл. Он должен отображать цвета...

На всякий случай вот пример цветного эха:
RED='\033[0;31m'
NC='\033[0m' # No Color
printf "I ${RED}love${NC} Stack Overflow\n"

Кроме того, вы можете использовать html-файл в качестве выходного файла, а затем открыть его в своем браузере:
echo "<div style='color:$COLOR;'>$SOMEVARIABLE</div><br>" > output.html
(цвет должен быть в формате HEX, например#040404)

4
06.07.2020, 05:15
2 ответа

Я постараюсь ответить на ваш вопрос еще до того, как вы уточните вопрос.

Анализ

Есть такие состояния бездействия в гаджиме:

@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 , возможно, это будет более надежным способом обнаружения вашей активности.

3
18.03.2021, 23:34

Я столкнулся с точно такой же проблемой при минимальной установке Gnomeless! В моем случае решение было следующим:

apt install dbus-X11
dbus-launch gajim

Судя по всему, установка dbusсама по себе не активирует его, если вы не прыгаете через какие-то дополнительные обручи или что-то в этом роде. Честно говоря, я понятия не имею, как работает D -Bus и зачем он вообще нужен¯\_(ツ)_/¯

0
18.03.2021, 23:34

Теги

Похожие вопросы