No Ubuntu 14.04, área de trabalho MATE. Acabei de instalar o terminal Tilda e adicionei-o aos aplicativos de inicialização, assim como o /usr/bin/tilda
. Reinicializei, vi a inicialização do Tilda e percebi isso:
"O tamanho da sua tela 131072x1 é falso. Espere problemas"
Aí tentei killall tilda
, comecei o tilda de novo, mesma mensagem.
Alguém sabe como posso corrigir esse problema falso de tamanho de tela?
Responder1
O que está gerando esta mensagem
Isso não é produzido pelo shell Bourne Again. Isso não é produzido pela Tilda.
Isso é produzido pelo ps
comando deo conjunto de ferramentas procpsatuandoesta verificação em sua set_screen_size()
função. O ps
comando exige que seu dispositivo terminal tenha no mínimo 9 colunas por 2 linhas para que possa exibir as coisas de maneira razoável. Em algum lugar, possivelmente sem o seu conhecimento, você está invocando ps
.
O ps
comando obtém o tamanho do seu terminal diretamente (da disciplina de linha) do dispositivo terminal conectado aos seus descritores de arquivo de E/S padrão e permite que isso seja substituído por variáveis de COLUMNS
ambiente LINES
se seus valores forem numéricos corretamente. Você pode ver o que seu ps
comando está vendo para determinar sua determinação executando:
tamanho médio; printenv LINHAS DE COLUNASVocê pode experimentar puxar
ps
a perna executando coisas como:COLUNAS=65535 LINHAS=1 ps
Se você definiu as variáveis de ambiente COLUMNS
e LINES
com os valores idiotas de 131072×1, conforme mostrado pela saída de printenv
, simplesmente não faça isso. ☺ É mais provável, entretanto, que o próprio dispositivo terminal esteja informando esse tamanho, que você verá na saída de stty
. (Observe que tudo o que o shell Bourne Again faz checkwinsize
é definir os valores dessas variáveis do shell, que se não forem exportadas, nem mesmo serão passadas para o ps
comando em seu ambiente, para qualquer que seja o tamanho do dispositivo terminal. O mesmo checkwinsize
acontece com um vermelho arenque em que se as variáveis de ambiente não fazem sentido, o dispositivo terminalestá reportandoabsurdo, e o último é o problema subjacente a ser abordado.)
É por isso que, embora não esteja produzindo a mensagem, Tilda pode ser a culpada. O tamanho do dispositivo terminal é um recurso compartilhado que qualquer coisa que tenha um descritor de arquivo aberto para o dispositivo terminal pode ser alterado arbitrariamente com uma ioctl()
chamada do sistema. Mas isso éconvencionalmentedefinido, no cenário em que se está usando um softwareprograma emulador de terminalcomo Tilda, pelo programa emulador de terminal quando o tamanho da janela GUI na qual a emulação está sendo exibida muda. O programa emulador de terminal obtém um evento de redimensionamento da GUI, converte-o em colunas e linhas e define o tamanho do dispositivo com ioctl()
.
Isso não quer dizer que alguma outra coisa não tenha definido o tamanho desse absurdo. Afinal, você pode configurá-lovocê mesmopara um tamanho arbitrário e absurdo apenas executando, por exemplo, o comando:
colunas stty 1 linhas 65535
O que nos leva a…
Como redefinir o tamanho do dispositivo terminal
Se você se encontrar na posição em que o dispositivo terminal está relatando um tamanho absurdo:
- Se você estiver usando um emulador de terminal GUI, redimensione a GUI em uma coluna/linha ou algo assim. Isso deve acionar
ioctl()
e definir o tamanho do terminal para algo razoável. - Defina o tamanho para algo mais razoável com (por exemplo):
colunas stty 80 linhas 25
- Use o
reset
comando. Observe que issoreset
define muitas outras coisas além do tamanho do dispositivo terminal. - Se o seu emulador de terminal for compatível com DEC VT340/VT420, emita diretamente as sequências de controle DECSCPP e DECSLPP/DECSNLS apropriadas ou useo conjunto de ferramentas noshde
console-resize
(também conhecido comoresizecons
) comando para emiti-los:redimensionar ícones 80x25