[覚書]sshやexpectを使ったおかげで端末エミュレータでリサイズ(幅や高さの調整)が機能しなくなるの対策。resizeの代替

先ず、タイトルで何がいいたいのか。

端末エミュレータでssh等でリモートのホストにログインした際、ウィンドウのフレームを広げたても、実際の表示内容が追従していない状態。

端末エミュレータ…xterm, kterm, mlterm, mate-terminal,  クソgnome-terminalなどなど

の対応。簡単にいうと

  • 端末エミュレータで***リサイズができない***ってことだ。
  • ウィンドウサイズから得られるcol, rowとsttyコマンドで表示されるcol, rowが不一致ってことだ。

とりあえずスクリプト(sh)をあげておく。細かい話は後日。

https://unix.stackexchange.com/questions/16578/resizable-serial-console-window
より

下記を適当なbashやb shellのスクリプトとしてファイルに保存する。(ここでは “resize_funcs”とでもするか)

 

#! /usr/bin/env bash
res() {

old=$(stty -g)
stty raw -echo min 0 time 5

printf ‘\0337\033[r\033[999;999H\033[6n\0338′ > /dev/tty
IFS='[;R’ read -r _ rows cols _ < /dev/tty

stty “$old”

# echo “cols:$cols”
# echo “rows:$rows”
stty cols “$cols” rows “$rows”
}

res2() {

old=$(stty -g)
stty raw -echo min 0 time 5

printf ‘\033[18t’ > /dev/tty
IFS=’;t’ read -r _ rows cols _ < /dev/tty

stty “$old”

# echo “cols:$cols”
# echo “rows:$rows”
stty cols “$cols” rows “$rows”
}
res
res2

これをリモートホスト上で実行する。

追記)残念ながら上のコードは使えないだろう。◯ソwordpressはダブルクオートを勝手に変換するからだ。 参考までとして欲しい。

 

なおゴミがいっぱいあるのは内緒だw

とりあえず覚書なので以上

コメントを投稿

Required fields are marked *
*
*

%d人のブロガーが「いいね」をつけました。