i3 状态冻结

i3 状态冻结

我正在 Debian 10 上运行 i3 Windows 管理器,并且我正在通过 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 才能重新开始。

答案1

如果状态栏冻结,则进程可能已崩溃并退出。i3status当问题再次发生时,您应该检查是否正在运行。

您还可以使用i3status自己的脚本来解决问题。

在您的 i3config文件中将 替换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

答案2

我也遇到过这个问题。就我而言,它挂在disk {一个无法访问的 NFS 安装的子句上。我从 中删除了该子句~/.config/i3status/config,并修复了它。

相关内容