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 才能重新開始。
如果狀態欄凍結,則該程序可能已崩潰並退出。當問題再次發生時,您應該檢查是否
i3status
正在執行。您也可以
i3status
使用自己的腳本來解決問題。在您的 i3
config
文件中,將 替換為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 的錯誤,請嘗試以下替代方法: