LXTerminal 和 XTerm 调整大小命令

LXTerminal 和 XTerm 调整大小命令

我想在 bash 脚本中执行一个命令来调整终端窗口的大小。在 xterm 中

xterm -geometry=30x30

将创建一个新的xterm 窗口,以及

lxterminal --geometry=30x30

将创建一个新的lxterminal 窗口。

有没有办法在不打开新窗口的情况下调整任一终端的大小?它看起来是这样的:

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

笔记:就像这样绑定,这将在交互式命令环境中工作(也就是说不在vimnor下lessread或任何正在进行的工作)

相关内容