Ok, eu sinto que você pode estar fazendo uma de duas perguntas, então vou tentar responder a ambos.
-
Quais bibliotecas podem ser usadas para criar ncurses como interfaces para shell scripts?
Na verdade, eu nunca recomendaria ncurses diretamente para scripts de shell, uma vez que não é para ser usado por linguagens shell. Em vez disso, eu recomendaria
dialog
. Dialog é uma biblioteca de shims que fica entre ncurses e o shell, tornando seu uso muito mais simples.Isso funcionalmente lhe daria duas dependências (uma em
ncurses
e outra emdialog
) com as quais você parece estar contra por algum motivo. -
Dado que não quero dependências externas, como posso criar minha própria biblioteca TUI semelhante a ncurses?
Este é caminho fora do escopo de * nix.SE. Criar uma nova biblioteca TUI não será trivial (especialmente se você estiver tentando criá-la em shell puro). Tem havido muitos projetos para tentar criar novas bibliotecas para substituir parte do uso de ncurses (por exemplo,
termbox
é um dos os mais bem sucedidos).Se você pretende criar sua própria biblioteca, talvez queira examinar os projetos de nível inferior, como ncurses e termbox, e projetos de nível superior, como o diálogo. Observar o trabalho deles pode dar uma ideia de como começar.
Uma recomendação final:
Dependências em projetos externos, embora requeiram algum trabalho extra (para integração e suporte), não são uma coisa ruim. Isso significa que você pode se concentrar apenas na ferramenta que deseja fazer e deixar o trabalho de base para quem faz a infra-estrutura mais baixa. O Linux, em particular fora das plataformas * nix, tem uma longa história de interação de dependências.
Se o seu objetivo é aprender como o material de nível inferior é feito, ótimo vá em frente. Se, em vez disso, você estiver tentando criar uma ferramenta que se beneficiaria desse trabalho de baixo nível, apenas dependa de uma ferramenta externa. Você será mais feliz e todos serão os que olharem para o seu código.