Postagem em destaque

Criando bot do Telegram em Shell script com ShellBot

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 *