Debian

i3-狀態凍結

  • March 20, 2022

我正在 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 才能重新開始。

如果狀態欄凍結,則該程序可能已崩潰並退出。當問題再次發生時,您應該檢查是否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

引用自:https://unix.stackexchange.com/questions/611741