Eu tenho uma grande biblioteca de documentos PDF (papéis, palestras, folhetos) pelos quais desejo poder navegar rapidamente. Para isso eu preciso de miniaturas.
Ao mesmo tempo, porém, vejo que a ~/.thumbnails
pasta está se acumulando com os polegares que realmente não preciso. É impossível excluir o lixo eletrônico de miniaturas sem remover os polegares importantes. Se eu os excluísse, teria que ir a todas as pastas com documentos PDF importantes e deixar o cache de miniaturas se regenerar.
Eu adoraria poder automatizar esse processo. Existe alguma maneira de dizer ao nautilus para pré-armazenar em cache os polegares para um conjunto de diretórios?
Nota : Encontrei um conjunto de scripts bash que parecem fazer isso para fotos e vídeos, mas não para outros documentos. Talvez alguém com mais experiência em scripts possa ajustá-los para documentos PDF ou pelo menos me indicar a direção certa sobre o que eu teria que modificar para que isso funcione também com documentos PDF.
Editar :
A resposta a esta pergunta foi bastante esmagadora. Quero agradecer a todos que participaram da solução. A pergunta, suas respostas e toda a discussão em torno dela são um ótimo exemplo de como o esforço colaborativo de muitas partes pode levar a uma solução ideal. É exatamente isso que torna o Linux e o Open Source tão bons.
Todas as respostas fornecidas mereceriam a recompensa que originalmente ofereci para esta pergunta. Ainda assim, há apenas uma recompensa a ser concedida. Devo a todos os futuros leitores escolher a resposta que resolve o problema da maneira mais eficiente. Para determinar qual solução é, eu fiz um teste final, comparando os três scripts em compatibilidade, velocidade e qualidade de saída. Aqui estão os resultados:
Thumbnailer 1 , por rosch:
Compatibilidade : ✔ espaços no nome do arquivo; ✔ espaços no nome do diretório; ✘ compatível com freedesktop
Velocidade : 95 PDFs em 12,6 seg
Qualidade : qualidade do estoque nautilus
Benefícios adicionais : 1.) pula automaticamente os arquivos com os polegares preexistentes; 2.) Não são necessários pacotes adicionais
Thumbnailer 2 , de Martin Orda:
Compatibilidade : ✔ espaços no nome do arquivo; ✔ espaços no nome do diretório; ✘ compatível com freedesktop
Velocidade : 95 PDFs em 70,0 seg
Qualidade : escala significativamente melhor do que as imagens de estoque.
Benefícios adicionais : 1.) pula arquivos automaticamente com polegares preexistentes 2.) compatível com uma ampla variedade de formatos de imagem além do PDF 3.) independente da plataforma, não depende dos componentes do GNOME
Thumbnailer 3 , de James Henstridge:
Compatibilidade : ✔ espaços no nome do arquivo; ✔ espaços no nome do diretório; ✔ compatível com freedesktop
Velocidade : 95 PDFs em 10,8 seg
Qualidade : qualidade do estoque nautilus
Vantagens adicionais : 1.) ignora automaticamente arquivos com polegares pré-existentes 2.) compatível com todos os formatos de arquivo identificados pelos miniaturas pré-instalados
Todos os três scripts são excelentes. Cada um tem seu conjunto distinto de vantagens e desvantagens. A solução de Rosch funciona imediatamente e pode ser a escolha certa para usuários com uma instalação mínima.
Martin Orda criou um script muito versátil que funciona com uma variedade de formatos de arquivo e é independente de DE. É excelente na qualidade das miniaturas, mas o faz à custa da velocidade.
No final, foi a solução de James que melhor se encaixou no meu caso de uso. É rápido, versátil e oferece as opções para pular arquivos com miniaturas pré-existentes.
Vencedor geral: James Henstridge
Informações adicionais : Todos os três scripts são totalmente compatíveis com os scripts nautilus . Você pode instalá-los facilmente seguindo este tutorial .
Edit 2 : Revisão atualizada com script aprimorado por rosch.
fonte
Respostas:
As rotinas de miniaturas do Nautilus realmente vêm da
libgnome-desktop
biblioteca, portanto, é possível executar os mesmos miniaturizadores fora do gerenciador de arquivos.A API é um pouco complexa, mas o seguinte script Python deve ajudar:
Salve isso em um arquivo e marque-o como executável. Você também pode precisar instalar o
gir1.2-gnomedesktop-3.0
pacote se ele ainda não estiver instalado.Depois disso, basta chamar o script com os arquivos ou pastas que você deseja miniatura como argumentos. As miniaturas serão salvas em locais
~/.thumbnails
onde aplicativos como o Nautilus esperam encontrá-las.fonte
48eebea785a185cdfc9d8f1a2ed34400.png
é usado). Neste ponto, no entanto, ele não parece suportar diretórios. Existe alguma maneira de fazê-lo passar por diretórios recursivamente?O script abaixo deve fazer o trabalho. Ele usa o
evince-thumbnailer
que - tanto quanto eu sei - vem com todas as instalações do gnome e é o thumbnailer padrão.Salvar como
pdfthumbnailer.sh
e torná-lo executável.Uso :
pdfthumbnailer.sh dir1 [dir2, ...]
Restrição :
evince-thumbnailer
esteja sendo feito. Em outras palavras .. desde que o nautilus não regenere as miniaturas, o script pode ser usado para o trabalho.Notas :
evince-thumbnailer
econvert
(da imagemagick): 3segundosevince-thumbnailer
e 14segundosconvert
.perl
, presentes em uma instalação padrãoevince-thumbnailer
simplesmente produzirão um erro - silenciado com2>/dev/null
/usr/share/thumbnailers/evince.thumbnailer
para ver uma lista dos tipos de arquivos manipulados~/.cache/thumbnails
.Caminhos mais robustos usando
readlink
.Inspiração :
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683394
fonte
2a43dc2774e3dfe45a4337e0304e5b0a.png
. Esta é a forma como a mesma miniatura é nomeado pelo Nautilus:48eebea785a185cdfc9d8f1a2ed34400.png
. Também notei que os polegares criados com seu script têm 128x171px, enquanto o miniaturizador incorporado cria apenas miniaturas de 96x128px.evince-thumbnailer
não adicionar as tags PNG, está correto: o código que chama os miniaturizadores externos na verdade reescreve as imagens para incluir as tags. Você deve poder verificar isso executandostrings -a
uma das miniaturas geradas pelo Nautilus.Me distraí por um tempo e rosch me venceu :) Não sabia que evince-thumbnailer existia (eu não sou usuário do Gnome), mas de qualquer maneira, desde que eu já escrevi, aqui vai. Requer o imagemagick instalado, verifique e instale, se não houver, com:
Salve como
mkthumb.sh
(por exemplo),chmod +x mkthumb.sh
e execute-o com caminhos absolutos como argumentos (você pode usar -s como seu primeiro paramterer para pular a geração de miniaturas que já existem), ou seja:O script (eu o modifiquei um pouco para suportar a maioria das imagens, você pode adicionar mais extensões, se precisar):
Ele lida com arquivos com espaços em seus nomes sem problemas.
fonte
2a43dc2774e3dfe45a4337e0304e5b0a.png
enquanto o nautilus o nomeia48eebea785a185cdfc9d8f1a2ed34400.png
. As dimensões, no entanto, estão corretas com o seu script. Aqui está uma comparaçãoimagemagick
também parece lidar com o dimensionamento muito melhor do queevince-thumbnailer
(veja a comparação acima para referência).A especificação de miniaturas inclui repositórios de miniaturas compartilhados, que permitem que miniaturas pré-geradas sejam distribuídas junto com os arquivos associados, em vez de cada usuário gerar sua própria miniatura. Portanto, em teoria, você pode gerar miniaturas e adicioná-las a um repositório compartilhado, eliminando a necessidade de gerá-las no futuro se você limpar o diretório de miniaturas ou mover todas elas para uma máquina diferente ou o que for.
http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
Esta página Ask Ubuntu aparece nos resultados de uma pesquisa quando eu estava tentando descobrir se algum aplicativo suporta repositórios de miniaturas compartilhados. Infelizmente, parece que nenhum aplicativo os suporta.
fonte
Escrevi um pacote que modificava o script de James para incluir o multiprocessamento e a opção de gerar recursivamente miniaturas. O pacote é
pip
instalável. Confira aqui as instruções de instalação.Um exemplo de uso é:
-r
: gerar recursivamente miniaturas-w
: número de núcleos a serem usadosfonte