4 pontos por GN⁺ 2024-06-08 | 1 comentários | Compartilhar no WhatsApp

lsix: ferramenta que mostra miniaturas de imagens no terminal

Como usar

  • Pode ser usado com o comando lsix [arquivos ...].
  • Por padrão, mostra as imagens do diretório de trabalho atual.
  • É possível especificar nomes de arquivos ou usar curingas (ex.: lsix *jpg*png).

Exemplos

Uso básico

  • Ao executar o comando lsix, ele mostra as imagens do diretório atual.
  • Para forçar a exibição de um tipo específico de arquivo, especifique o nome do arquivo ou use curingas (ex.: lsix *.pdf).

Expansão de GIF

  • Ao especificar um arquivo GIF, todos os quadros são expandidos e exibidos em uma montagem (ex.: lsix nyancat.gif).

Detecção da cor de fundo do terminal

  • Arquivos PNG e SVG exibem corretamente o canal alfa de acordo com a cor de fundo do terminal.
  • Detecta as cores de primeiro plano e de fundo do terminal e ajusta adequadamente.

Recursos

  • Detecta se o terminal é capaz de exibir gráficos SIXEL.
  • Funciona bem em servidores remotos via SSH.
  • Também funciona bem com gráficos que não são bitmap (ex.: .svg, .eps, .pdf, .xcf).
  • Detecta automaticamente o número de registradores de cor do terminal e melhora a qualidade da imagem.
  • Detecta automaticamente as cores de primeiro plano e de fundo do terminal.
  • Quando há muitas imagens, exibe uma linha por vez, sem precisar esperar pela montagem completa.
  • Exibe nomes de arquivos longos com quebra adequada.
  • É fácil alterar a largura dos blocos da montagem, a família da fonte, o tamanho em pontos etc.

Instalação

  • Coloque o arquivo lsix em um diretório do PATH e execute-o (ex.: /usr/local/bin).
  • Requer ImageMagick. Pode ser instalado facilmente pelo gerenciador de pacotes (ex.: apt-get install imagemagick).
  • Usuários de MacOS podem instalar com o comando brew install lsix.

Suporte de terminal

  • Terminais com suporte a gráficos SIXEL: XTerm, MLterm, foot, Wezterm, Contour, iTerm2, Konsole, yakuake, WSLtty, MinTTY, Yaft, VTE, sixel-tmux, ttyd.
  • Terminais sem suporte a gráficos SIXEL: MacOS Terminal, kitty, todos os terminais padrão baseados em libvte (gnome-terminal, terminator, lxterm), Alacritty.

Configuração

  • O lsix foi projetado para ser muito simples e não possui arquivo de configuração nem flags de linha de comando.
  • É possível modificá-lo facilmente editando o script diretamente.

Bugs

  • A cor de fundo não é exibida corretamente no modo de vídeo reverso do XTerm.
  • A largura da tela do XTerm é limitada a 1000px.
  • Se o nome do arquivo começar com "@", o ImageMagick gera erro.
  • Se uma string vazia for especificada como nome de arquivo, o ImageMagick trava.
  • Nomes de arquivos longos são quebrados de forma ineficiente.
  • Diretórios especificados na linha de comando não são processados recursivamente.
  • Podem ocorrer problemas ao especificar arquivos de vídeo.

Problemas futuros

  • O padrão SIXEL não tem uma forma de consultar o tamanho da tela gráfica.
  • Não há forma de consultar o número de registradores de cor.
  • Alguns emuladores de terminal não são compatíveis com o lsix.

Opinião do GN⁺

  • Visualização de imagens no terminal: o lsix é uma ferramenta útil para ver imagens facilmente no terminal. É especialmente útil ao verificar imagens em servidores remotos.
  • Problemas de compatibilidade: como nem todos os terminais oferecem suporte a gráficos SIXEL, é preciso verificar a compatibilidade antes do uso.
  • Instalação simples: a instalação é muito simples, e o software necessário também é fácil de obter.
  • Possibilidade de personalização: como o script é simples, o usuário pode modificá-lo e ampliá-lo facilmente.
  • Ferramentas alternativas: outras ferramentas com funcionalidade semelhante incluem img2sixel etc.

1 comentários

 
GN⁺ 2024-06-08
Comentários no Hacker News
  • O branch experimental de sixel do Tmux foi mesclado ao branch principal há cerca de 10 meses. Agora é possível compilar o Tmux com a opção --enable-sixel e usar ferramentas como o lsix. Para verificar se seu terminal ou multiplexador favorito oferece suporte a sixel, você pode consultar o site "Are We Sixel Yet".
  • O recurso de que mais gosto neste repositório é o diretório README.md.d. Acho que é uma boa ideia. Talvez desse até para omitir o .md.
  • Detecta automaticamente o suporte a sixel usando \e[c. \e[c é a função "enviar atributos do dispositivo".
  • Em uma linha parecida, também existe a ferramenta timg.
  • É uma boa ideia, mas não funciona no PuTTY/ KiTTY. É preciso usar um terminal que ofereça suporte a gráficos sixel. Para testar se o terminal oferece suporte a sixel, você pode converter uma imagem e verificar. Se não oferecer, pode enviar um relatório de bug.
  • O iTerm2 no macOS oferece uma função semelhante, mas com menos carga do lado do servidor. Em vez de renderizar a imagem como sixel no servidor, ele envia a imagem codificada em base64 para o cliente e a renderiza localmente.
  • O fzf oferece suporte a imagens sixel (experimental) na janela de pré-visualização a partir da versão 0.44.0. Porém, não pode ser usado no Windows.
  • A fonte do HN pode causar confusão. Estou aguardando a próxima manchete: 'Isis, like "ls", but for terrorists.'
  • É preciso ter cuidado ao executar essa ferramenta em diretórios não confiáveis. É preciso atenção especial ao usar o ImageMagick para processar arquivos como PDFs.
  • Não há problema, desde que o terminal ofereça suporte a gráficos sixel.