Postagem em destaque

Monitorando modificações de atributos da janela do terminal.

As modificações de atributos de uma determinada janela de terminal são capturadas por meio de SIGNAL_SPEC, que é um nome de sinal registrado na biblioteca <signal.h> ou um número de sinal associado a um evento especifico. 

O nome do sinal associado a este evento é:

Sinal Descrição
WINCH Evento de modificações de atributos de janela. (Window Change)

Com o comando trap cria-se uma chamada a uma função vinculando com o evento especificado.

O vídeo abaixo demonstra a monitoração do evento, imprimindo o tamanho da janela sempre que ocorre alterações nas suas dimensões.


Script: xget_termwin_size.sh

#!/bin/bash

#---------------------------------------------------------
# Data:       26 de Dezembro de 2016
# Criado por: Juliano Santos [SHAMAN]
# Script:     xget_termwin_size.sh
# Descrição:  Monitora as dimensões da janela do terminal
# Página:     http://www.shellscriptx.blogspot.com.br
# Fanpage:    https://www.facebook.com/shellscriptx
#---------------------------------------------------------

# Associa a função ao evento 'WINCH' (Window Change)
trap 'ver_dimensao' WINCH

# Ocultando o cursor
tput civis

# Limpa a tela
clear

# Função
ver_dimensao()
{
 # Limpa a tela.
 clear 
 
 # Armazena as dimensões.
 COLUNAS=$(tput cols) 
 LINHAS=$(tput lines)

 # Coloca o cursor no centro na tela.
 tput cup $((LINHAS/2)) $((COLUNAS/2-2))

 # Imprime dimensão atual da janela.
 echo "${COLUNAS}x${LINHAS}"

 # Status 0
 return 0
}

# Aguarda os dados da função
while read; do :; done

exit 0
Github

Entendendo
  1. Associa a função 'ver_dimensao' ao evento 'WINCH'; Sempre que ocorre uma alteração na janela a função é chamada.
  2. A função 'ver_dimensao' imprime as dimensões atuais da janela utilizando o comando 'tput'.
  3. O 'while read' é necessário para monitorar o evento, capturando os dados de retorno da função.

Comentários

Contato

Nome

E-mail *

Mensagem *