我想在 bash 腳本中執行一個命令來調整終端機視窗的大小。在 xterm 中
xterm -geometry=30x30
將創建一個新的xterm 窗口,以及
lxterminal --geometry=30x30
將創建一個新的lx 終端機視窗。
有沒有辦法在不開啟新視窗的情況下調整任一終端機的大小?它看起來是這樣的:
if [ $TERMINALTYPE=xterm ]; then
DASH="-"
else
DASH="--"
endif
echo -e $TERMINALTYPE" "$DASH"geometry 30x30"
但:如果有一個很好的單行命令可以與任一終端機一起使用(可能是 vt100 轉義序列),那就更好了。
答案1
有兩個步驟。首先,您需要告訴 xterm 允許它發生,因為預設情況下它會忽略託管程式調整視窗大小的請求。將其添加到您的 ~/.Xdefaults 中:
xterm*allowWindowOps: true
要使其生效,您必須登出或運行:
xrdb ~/.Xdefaults
然後啟動一個新的 xterm,並在 bash 腳本中:
echo -ne "\e[8;30;30t"
答案2
只是想分享:
apt-get install xterm
使用以下調整大小命令,其中20= 行數,40= 列數:
resize -s 20 40
根據需要更改行和列的值。
答案3
另外@Paul的正確答案:
您可以~/.Xdefaults
透過執行以下命令來嘗試此操作而無需編輯:
xterm -xrm 'xterm*allowWindowOps: true'
然後,在新視窗中:
printf "\e[8;%d;%dt" $[LINES+5] $[COLUMNS+5]
.Xdefaults
或者.Xresources
根據您的安裝,您可能必須將其儲存在.Xresources
而不是.Xdefaults
.
文件
Xrdb 本身不會載入任何文件,但許多桌面環境使用在會話啟動時
xrdb
載入~/.Xresources
檔案來初始化資源資料庫,作為~/.Xdefaults
檔案的通用替代。
然後
sed -e '$axterm*allowWindowOps: true' -i.bak .Xresources
xrdb <.Xresources
然後...
一些bind
樣品
你可以運行這個或者添加到您的.bashrc
:
# Some bind for 'Shift' + <direction> key and allowWindowOps resource
bind -x '"\e[1;2C"':'printf "\e[8;%d;%dt" $LINES $((COLUMNS+5))'
bind -x '"\e[1;2D"':'printf "\e[8;%d;%dt" $LINES $((COLUMNS-5))'
bind -x '"\e[1;2B"':'printf "\e[8;%d;%dt" $((LINES+3)) $COLUMNS'
bind -x '"\e[1;2A"':'printf "\e[8;%d;%dt" $((LINES-3)) $COLUMNS'
Shift分別與: + Right 、 Shift+ Left 、 Shift+Down 或 Shift+一起使用Up
筆記: 正如這在巴什綁定,這將在互動式命令環境中工作(也稱為不在vim
nor下less
或read
任何正在進行的工作)