Comando de redimensionamento LXTerminal e XTerm

Comando de redimensionamento LXTerminal e XTerm

Quero executar um comando em um script bash que redimensionará a janela do terminal. Em xterm

xterm -geometry=30x30

criará umnovojanela xterm e

lxterminal --geometry=30x30

criará umnovojanela lxterminal.

Existe uma maneira de redimensionar qualquer terminal sem abrir uma nova janela? Seria assim:

if [ $TERMINALTYPE=xterm ]; then
    DASH="-"
else
    DASH="--"
endif

echo -e $TERMINALTYPE" "$DASH"geometry 30x30"

MAS:Se houver um comando que seja de uma única linha que funcione com qualquer terminal (talvez a sequência de escape vt100), então isso é ainda melhor.

Responder1

Existem duas etapas para isso. Primeiro, você precisa dizer ao xterm para permitir que isso aconteça, porque por padrão ele ignora solicitações de programas hospedados para redimensionar a janela. Adicione isto ao seu ~/.Xdefaults:

xterm*allowWindowOps: true

Para que isso tenha efeito, você precisa sair ou executar:

xrdb ~/.Xdefaults

Em seguida, inicie um novo xterm e em seu script bash:

echo -ne "\e[8;30;30t"

Responder2

Só quero compartilhar:

apt-get install xterm

Use o seguinte comando de redimensionamento onde20= número de linhas,40= número de colunas:

resize -s 20 40

Altere o valor das linhas e colunas conforme a necessidade.

Responder3

Além deResposta correta de @Paul:

Você poderia tentar isso sem editar ~/.Xdefaults, executando:

xterm -xrm 'xterm*allowWindowOps: true'

Então, em nova janela:

printf "\e[8;%d;%dt" $[LINES+5] $[COLUMNS+5]

.Xdefaultsou.Xresources

Dependendo da sua instalação, pode ser necessário armazená-lo .Xresourcesem vez de .Xdefaults.

ARQUIVOS

O Xrdb não carrega nenhum arquivo por si só, mas muitos ambientes de desktop usam xrdbpara carregar ~/.Xresourcesarquivos na inicialização da sessão para inicializar o banco de dados de recursos, como um substituto generalizado para ~/.Xdefaultsarquivos.

Então depois

sed -e '$axterm*allowWindowOps: true' -i.bak .Xresources 
xrdb <.Xresources

Então...

Algumas bindamostras

Você poderia executar isso ouadicione ao seu.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'

para ser usado com respectivamente: Shift+ Right   ,   Shift+ Left   ,   Shift+ Down   ou   Shift+Up

Observação: Como isso embind, isso funcionará em ambiente de comando interativo (também conhecido como não sob vimnem lessou readqualquer trabalho em andamento)

informação relacionada