Вы можете использовать команду 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
)
Я постараюсь ответить на ваш вопрос еще до того, как вы уточните вопрос.
Есть такие состояния бездействия в гаджиме:
@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 , возможно, это будет более надежным способом обнаружения вашей активности.
Я столкнулся с точно такой же проблемой при минимальной установке Gnomeless! В моем случае решение было следующим:
apt install dbus-X11
dbus-launch gajim
Судя по всему, установка dbus
сама по себе не активирует его, если вы не прыгаете через какие-то дополнительные обручи или что-то в этом роде. Честно говоря, я понятия не имею, как работает D -Bus и зачем он вообще нужен¯\_(ツ)_/¯