簡體   English   中英

在 GNOME 終端中模擬一個更高的終端並上下平移

[英]Emulate a taller terminal within GNOME Terminal and pan up and down

問題:

我需要能夠通過上下平移在九行終端內運行不適合九行高終端的 TUI 程序。

設置:

我有一台連接到 9 行盲文顯示器 (Canute 360) 的 Raspian 計算機。 盲文由名為brltty的屏幕閱讀器軟件自動發送到終端的最后 9 行。 終端仿真器是gnome-terminal ,它被預設為 9 行 40 個字符。

我遇到了我們需要運行的 TUI 程序(例如raspi-config ),這些程序假定終端將超過 9 行高,因此無法工作,因為某些選項隱藏在終端 window 的頂部。這意味着它們在 Canute 盲文顯示器上是不可見的。

我無法編輯或更改gnome-terminal的大小(它需要保持原樣以滿足客戶端規范)。 我無法更改brltty的行為,因為它是一個外部程序,或者是盲文顯示器的行為。 我可以在 Raspian 中安裝任何程序,但我無法現實地修補和修復具有這種行為的每個 TUI 應用程序,我需要一個可以在用戶遇到問題時隨時應用的修復程序。

使用raspi-conf作為測試用例:

它假設至少有 12 行終端,但目前只有底部的 9 行可見,從視圖中切斷了關鍵選項(在監視器和盲文顯示器上)。 如果我可以運行一個命令或創建一個允許用戶上下平移的腳本,也許是通過在 9 行終端實例中運行一個更高的終端實例,然后使用鍵盤快捷鍵上下滾動,那么我假設我已經解決了所有類似的 TUI 應用程序的問題。

試過:

  • 我無法使用gnome-terminal歷史緩沖區,因為raspi-conf固定在整個終端屏幕上。

  • 我查看了gnu-screentmux resize 選項,但我看不到如何在gnome-terminal中制作一個大於它而不是小於它或它的一部分的終端 window。 這個答案中,我讀到“tmux 將 window 的維度限制為 window 所附加的所有會話中每個維度中的最小維度”,因此我認為 tmux 不是完成此任務的合適工具。

  • 我無法調整gnome-terminal window 的大小(比如 18 行高),然后使用brltty命令將屏幕的上半部分或下半部分發送到盲文顯示器,因為它的多行支持還不夠發達,無法做到這一點。

我在 macOS 上的 40x9 iTerm window 中嘗試使用 GNU 屏幕(也嘗試在 Windows 上使用 PuTYY) ,以下對我“有效”。

  • 啟動screen session。在 shell 提示中, echo $LINES $COLUMNS (或stty size )輸出9 40

  • 這時,長行會像往常一樣在第 40 列換行。 看到這個ls -l / output:

    在此處輸入圖像描述

  • Ca:並運行屏幕命令width -w 80

  • Ca:並運行屏幕命令height -w 24

  • 現在echo $LINES $COLUMNS將 output 24 80和更早的ls -l / output 重新包裝在 80 列。 由於物理 window 是 40 列,您需要按Ca [進入復制模式,然后使用方向鍵移動。

    在此處輸入圖像描述

  • 現在我開始vim ,只有左上角的部分是可見的。

    在此處輸入圖像描述

  • 要查看vim window 的其他部分,我按Ca [進入復制模式,然后我可以四處移動。 以下是我移至左下角查看vim的狀態行時的情況。

    在此處輸入圖像描述


因此,對於您的 TUI 應用程序,如果某些輸入區域或按鈕不可見,您也可以執行類似的操作:

  • 進入復制模式 ( Ca [ )
  • 移動到需要輸入內容的地方
  • 退出復制模式
  • 輸入數據 ( Esc )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM