smenu é um filtro de seleção assim como sed
é um filtro de edição.
Esta ferramenta lê palavras da entrada padrão ou de um arquivo e as apresenta na tela do terminal em diferentes layouts em uma janela de rolagem. Um cursor, facilmente movido pelo teclado e/ou mouse , permite selecionar uma ou mais palavras.
Observe que a tela não é limpa no início e no final da execução do menu . A janela de seleção é exibida na posição do cursor e o conteúdo anterior do terminal não é modificado nem perdido.
Tentei torná-lo o mais fácil de usar possível. Deve funcionar em todos os terminais gerenciados no banco de dados terminfo
.
A codificação UTF-8
é suportada. Este suporte inclui caracteres de largura dupla e clusters de grafemas estendidos. Este último ainda é experimental e funciona muito melhor se terminais apropriados como WezTerm ou iTerm forem usados.
A codificação dos glifos UTF-8
também deve estar na forma canônica, pois nenhum esforço será feito para colocá-los nesta forma.
Consulte a página de manual incluída para saber mais sobre este pequeno programa.
O wiki contém capturas de tela e animações que detalham alguns conceitos e recursos do smenu .
Algumas distribuições Linux já fornecem o smenu como um pacote; caso contrário, o smenu pode ser construído em qualquer sistema no qual uma plataforma funcional de desenvolvimento terminfo
esteja disponível. Isso inclui todos os sistemas Unix e semelhantes ao Unix que eu conheço.
Use o script build.sh
fornecido para construir o executável. Este script usa e aceita os mesmos argumentos do script configure
GNU, digite build.sh --help
para vê-los.
Assim que o processo de construção for concluído, um simples make install
com os privilégios apropriados será suficiente.
Eu habilitei discussões neste repositório.
Estou ciente de que pode haver alguma confusão ao decidir onde você deve se comunicar ao relatar problemas, fazer perguntas ou solicitar recursos, por isso esta seção tem como objetivo nos ajudar a alinhar isso.
Levante um problema se:
Por favor, abra uma discussão se:
Este programa deve funcionar na maioria dos Unix, mas se você estiver usando Linux, tente digitar a seguinte linha em um prompt do shell (aqui: "$ "
):
$ R=$(grep VM /proc/$$/status | menu -n20 -W $':tn' -q -c -b -g -s /VmH) $ eco $R
Algo assim deve ser exibido agora com o programa aguardando comandos: (os números são meus, os seus serão diferentes)
VMPico¦ 23.840 kB TamanhoVm¦ 23.836 kB VmLck ¦ 0 kB VMHWM ¦ 2.936 kB VMRSS ¦ 2.936 kB VMData¦ 1316 kB VMStk ¦ 136 kB VMExe ¦ 28 kB VMLib ¦ 3956 kB VmPTE ¦ 64 kB VMSwap¦ 0 kB
Um cursor deve estar em "VmHWM "
.
Depois de mover o cursor para " 136 kB"
e finalizar o programa com
, a variável shell R deverá conter: " 136 kB"
.
O comando a seguir, que é independente da marca Unix, deve fornecer uma janela de rolagem se você tiver mais de 10 contas em seu Unix com um UID inferior a 100:
$ R=$(awk -F: '$3 < 100 {imprimir $1,$3,$4,$NF}' /etc/passwd | menu -n10 -c) $ eco $R
No meu ( LANG
e LC_ALL
definidos como POSIX
), ele exibe:
às 25 25 /bin/bash sys 0 3 /usr/bin/ksh + compartimento 1 1 /bin/bash | daemon 2 2 /bin/bash | ftp 40 49 /bin/bash | jogos 12 100 /bin/bash | lp4 7 /bin/bash | correio 8 12 /bin/falso | nomeado 44 44 /bin/falso | ntp 74 108 /bin/falso v
Observe a presença de uma barra de rolagem.
Basta adicionar o seguinte no seu .bashrc
EOL=$'n' vincular -x '"Cr": READLINE_LINE=$(fc -lr 1 | sed "s/[1-9][0-9]*..//" | menu -Q -l -ac:7/4,b -W"$EOL") READLINE_POINT=${#READLINE_LINE}'
Inicie ou reinicie o bash e pressione CTRL-R
( CTRL-C
ou q
para sair), divirta-se!
Você também pode adicionar o parâmetro -d para instruir o smenu a limpar a janela de seleção após selecionar uma entrada.
Essas versões usam um novo sistema de opções chamado ctxopt que pode conter bugs. Informe-os para que possam ser corrigidos na próxima versão do smenu ou ctxopt (https://github.com/p-gen/ctxopt).
Os argumentos da linha de comando também podem precisar ser reorganizados em alguns casos devido a este novo sistema de gerenciamento de opções. Desculpe pelo trabalho extra que isso pode implicar.
O alinhamento à direita de linhas escritas em idiomas da direita para a esquerda, como farsi ou hebraico, não é respeitado.
O sistema de teste incluído é relativamente novo, por favor, seja indulgente.
IMPORTANTE o sistema de teste tem algumas dependências, leia test/README.rst
antes de prosseguir.
NOTA executar todos os testes executando ./tests.sh
no diretório tests
levará algum tempo (cerca de 21 minutos por enquanto).
NOTA em alguns sistemas como *BSD alguns testes podem falhar. Isso pode ser explicado por diferenças nas implementações posix/libc/.... Isso pode ocorrer principalmente quando algumas expressões regulares específicas ou sequências de bytes UTF-8
incomuns são usadas.
Se um teste falhar por um motivo desconhecido, envie-me o nome do diretório e o arquivo .bad
correspondente.
Se você for atingido por um bug que nenhum teste cobre, então você pode criar um novo teste no diretório tests
em um diretório existente ou novo: leia o arquivo tests/README.rst
, use um teste existente como modelo, crie um .in
arquivo e um arquivo .tst
e envie-os para mim, bem como os arquivos produzidos.
Contribuições são bem-vindas, mas discuta sua proposta primeiro em uma edição ou com o mantenedor.
Quero agradecer àqueles que dedicaram seu tempo para empacotar o menu para seu sistema operacional ou distribuição preferida. Você encontrará seus nomes aqui: https://repology.org/project/smenu/information