i3-статус зависает

Sep 28 2020

Я использую диспетчер окон i3 на Debian 10 и подключаюсь к компьютеру через X2go, так как сейчас работаю дома.

После обновления с Debian 9 до Debian 10 (сделанного недавно) строка состояния i3 зависает, и мне приходится «перезагружать» i3, что немного неудобно.

Вот мой .i3status.conf

general {
    interval        = 1
    colors          = true
    color_good      = '#88b090'
    color_degraded  = '#ccdc90'
    color_bad       = '#e89393'
}

# order += "volume master"
# order += "disk /"
# order += "disk /home"
# order += "disk /media/data"
# order += "ethernet br0"
# order += "cpu_temperature 0"
# order += "memory"
# order += "load"
order += "tztime local"

# ethernet br0 {
#     #if you use %speed, i3status requires root privileges
#     format_up = "%ip (%speed)"
#     format_down = ""
# }

tztime local {
    format = "%A %e.%B %H:%M:%S"
}

# load {
#     format = "%1min"
# }

# cpu_usage {
#     format = "%usage"
# }

# cpu_temperature 0 {
#   format = "%degrees°C"
# }

# disk "/" {
#   format = "/ %avail"
#   prefix_type = custom
# }

# disk "/home" {
#   format = "/home %avail"
#   prefix_type = custom
# }

# disk "/media/data" {
#   format = "/media/data %avail"
#   prefix_type = custom
# }

# volume master {
#     format = "VOL: %volume "
#     format_muted = "MUTE "
#     device = "default"
#     mixer = "Master"
#     mixer_idx = 0
# }

Когда он замерзает, время не движется, но я все еще могу видеть дату и время только в застывшем состоянии.

Я пробовал запускать i3status в терминале, и несколько недель он работал без перерыва;

Вот результат (обратите внимание, это когда у меня были все настройки в моей конфигурации, и с тех пор мне не пришлось перезапускать его);

 ~ % i3status
i3status: trying to auto-detect output_format setting
i3status: auto-detected "term"
/ 6.5 GB | /home 103.1 GB | /media/data 543.9 GB | 4.29 | Monday 28.September 09:10:16

Я не могу воспроизвести проблему, но думаю, что это может иметь какое-то отношение к моменту выхода из X2go. Когда я выхожу из X2go, я продолжаю сеанс работать в фоновом режиме, а на следующий день подключаюсь к нему. Теперь, когда он в этом состоянии, он обычно зависает. Возможно, i3-status не любит быть в сеансе X2go, который был отключен, но все еще запущен.

Обновить

После запуска сценария i3status.sh произошел сбой, когда я отключил X2go вскоре после работы и получил сообщение об ошибке;

i3status: trying to auto-detect output_format setting
i3status: falling back to "none"

Я добавил в свою конфигурацию следующее -> общая область для тестирования

    output_format = "i3bar"

Обновление: принудительный сбой

Просто удалось заставить его выйти из строя, выйдя из удаленного сеанса X2go (но продолжая его работать в фоновом режиме), приготовив кофе (5 минут), а затем снова присоединившись к сеансу X2go.

Он по-прежнему не работает с output_format, принудительно установленным на i3bar. У меня сейчас нет ошибок в i3status-err.log.

Мне нужно нажать ++ r, чтобы снова запустить его.

Ответы

laktak Oct 04 2020 at 02:48

Если строка состояния зависла, вероятно, процесс завершился с ошибкой. Вы должны проверить, i3statusработает ли он, когда проблема возникнет снова.

Вы также i3statusможете использовать собственный сценарий для устранения проблемы.

В вашем configфайле i3 замените status_commandсвой собственный скрипт:

# status_command i3status -c ~/.config/i3/i3status
status_command /home/YOURUSER/.config/i3/i3status.sh

Создайте ~/.config/i3/i3status.sh(и chmod + x):

#!/bin/bash
echo $(date) started >> /tmp/i3status.log while : do i3status 2> /tmp/i3status-err.log | while : do read line echo "$line"
        touch /tmp/i3status-last-seen.log
    done
    echo $(date) restarted >> /tmp/i3status.log
done

Или, если это ошибка i3status, попробуйте эту альтернативу:

https://github.com/altdesktop/i3-dstatus