Leia arquivos com esse App CLI feito com C++

Substitui o comando 'less' para paginação. E mais dicas de como controlar o cursor padrão do seu terminal via C++ e FTXUI!


Leia arquivos com esse App CLI feito com C++


Se você quer uma boa alternativa ao comando less do Unix/GNU, o ftxuiFileReader é uma boa alternativa.

É um software simples feito com C++ e a biblioteca FTXUI que nós já fizemos um vídeo que pode ser assistido no link abaixo:

▶️ Crie Programas Gráficos no Terminal com FTXUI


Compilando e instalando o ftxuiFileReader

Para instalar, lógico, você precisará das dependências básicas, são elas:

Basta clonar, compilar e rodar:

git clone https://github.com/J0sephDavis/ftxuiFileReader
cd ftxuiFileReader
cmake -B build .
cd build && make

Após isso haverá dentro do diretório build/, que você rodou o make, um binário com o mesmo nome do programa: ftxuiFileReader. Basta rodá-lo e passar como argumento o caminho do arquivo que você deseja ler, exemplo:

./ftxuiFileReader /caminho/para/main.cpp


O resultado será similar ao GIF abaixo:

ftxuiFileReader GIF


Instalação com dicas adicionais

Ainda dentro do diretório que você construiu: build/ você pode instalar no local desejado do seu sistema.

Mas, antes disso recomendo algumas alterações para uma melhor usabilidade do ftxuiFileReader, pois há alguns problemas que eu detectei, são eles:

Primeiro: Há um bug no cursor do terminal ao terminar a execução do programa

Quando você executa e sai do programa, o cursor do seu terminal é modicado para sublinhado piscante(_). No meu caso eu uso(e está definido por padrão) a linha vertical(|) e não ficou legal.

Para solucionar isso, ainda dentro de build/, eu editei o arquivo fonte main.cc:

vim ../src/main.cc

E antes do return EXIT_SUCCESS; na função main() que fica na linha 250 eu adicionei esse std::cout << "\x1b[\x35 q";, ficando assim:

std::cout << "\x1b[\x35 q";
return EXIT_SUCCESS;

Isso serve para mim, pois esse x35 é justamente para retornar ao meu cursor linha vertical piscante. Você pode alterar conforme seja seu cursor, as alternativas são:

  • std::cout << "\x1b[\x31 q"; → Muda para bloco piscante;
  • std::cout << "\x1b[\x32 q"; → Muda para bloco constante;
  • std::cout << "\x1b[\x33 q"; → Muda para sublinhado piscante;
  • std::cout << "\x1b[\x34 q"; → Muda para sublinhado constante;
  • std::cout << "\x1b[\x35 q"; → Muda para linha vertical piscante;
  • std::cout << "\x1b[\x36 q"; → Também muda para linha vertical constante;

    As numerações, na veradade começam do 30 e podem ir até mais, no entanto, as modificações serão similares à essas! Caso queira, pode até declarar um: std::system("reset");.

Use a modificação conforme é o cursor padrão do seu terminal, aquele que você escolheu!

Feito isso, basta recompilar:

Lembrando que a recompilação demora bem menos, pois modificamos só um arquivo!

make

E para instalar, por exemplo, em: /usr/local/bin, mais recomendado, também sugiro instalar com um nome mais Unix style(só com minúsculas e separado por traços em vez de capitalizações), exemplo: ftx-file-reader:

sudo install -v ftxuiFileViewer /usr/local/bin/ftx-file-reader

Agora já pode até remover o repositório clonado, ex.: cd ../.. && rm -rf ftxuiFileViewer e usar o comando ftx-file-reader modificado ou o padrão(ftxuiFileReader), se você modificou, exemplo lendo um arquivo main.cpp:

ftx-file-reader main.cpp

Observação: Você pode sair do programa teclando a letra q, por exemplo, mas há um pequeno bug que pode exibir o caractere digitado ao sair, mas em forma de input detectável, exemplo para o q: 1R. Para resolver isso, basta rolar pelo menos duas vezes a linha teclado a seta para baixo. Em resumo, para sair tecle a combinação de teclas: ↓ ↓ q.

Qualquer dúvida ou dica de melhoria(pegar o cursor padrão automaticamente e redefinir ao sair, por exemplo) acesse o repositório oficial.

Há outros softwares feitos com FTXUI que já publicamos aqui no blog, você pode ler clicando nos links abaixo:


ftxui cpp dicas comandos tui


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo

Artigos Relacionados




Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!