Tilda

Tilda 在啟動時抱怨螢幕尺寸虛假?

  • October 6, 2018

在 Ubuntu 14.04 上,MATE 桌面。我剛剛安裝了 Tilda 終端,所以我將它添加到啟動應用程序中,就像/usr/bin/tilda. 重新啟動,看到 Tilda 啟動,然後注意到這一點:

蒂爾達

“你的 131072x1 螢幕尺寸是假的。期待麻煩”

然後我嘗試killall tilda了,再次啟動 tilda,同樣的資訊。

任何人都知道如何解決這個虛假的螢幕尺寸問題?

是什么生成此消息

這不是由 Bourne Again shell 生成的。這不是 Tilda 製作的。

這是由procps 工具集中ps的命令在其函式中執行此檢查產生的。該命令要求您的終端設備至少為 9 列乘 2 行,以便它能夠合理地顯示內容。在某個地方,您可能不知道,您正在呼叫.set_screen_size()ps``ps

ps命令直接從附加到其標準 I/O 文件描述符的終端設備(的行規程)獲取您的終端大小,如果它們的值是正確的數字,則允許它被COLUMNS環境LINES變數覆蓋。您可以通過執行來查看您的ps命令所看到的內容,以便做出決定:

stty 大小;printenv 列行

您可以通過執行以下操作來試驗 pullps的腿:

列=65535 行=1 ps

如果您已將COLUMNSLINES環境變數設置為愚蠢的 131072×1 值,如 的輸出所示printenv,那麼就不要這樣做。☺ 然而,終端設備本身報告這個大小的可能性更大,你可以從stty. (請注意,Bourne Again shell 所做的checkwinsize只是設置這些 shell 變數的值,如果不導出這些變數,甚至不會將其傳遞給ps其環境中的命令,無論終端設備報告的大小是什麼。checkwinsize紅色也是鯡魚,如果環境變數是廢話,終端設備本身就是在報告廢話,而後者是要解決的潛在問題。)

這就是為什麼雖然它沒有產生消息,但 Tilda 可能有問題。終端設備大小是一種共享資源,任何對終端設備具有打開文件描述符的東西都可以通過ioctl()系統呼叫任意更改。但是按照慣例,在使用像Tilda這樣的軟體終端仿真程序的場景中,當顯示仿真的GUI視窗的大小發生變化時,由終端仿真程序設置。終端模擬器程序獲取一個 GUI 調整大小事件,將其轉換為列和行,並使用ioctl().

這並不是說其他東西沒有將大小設置為這種廢話。畢竟,您可以通過執行以下命令自行將其設置任意大小:

stty 列 1 行 65535

這讓我們……

如何重置終端設備大小

如果您發現自己處於終端設備報告無意義大小的位置:

  • 如果您使用的是 GUI 終端仿真器,請按列/行左右調整 GUI 的大小。這應該觸發ioctl()並將終端大小設置為合理的值。
  • 使用(例如)將大小設置為更合理的值:
stty 列 80 行 25
  • 使用reset命令。請注意,reset除了終端設備大小之外,它還設置了許多其他內容。
  • 如果您的終端仿真器與 DEC VT340/VT420 兼容,請直接發出適當的 DECSCPP 和 DECSLPP/DECSNLS 控制序列,或使用nosh 工具集console-resize(又名resizecons)命令發出它們:
調整大小 80x25

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