Como definir o programa padrão para abrir um determinado tipo de arquivo em uma determinada pasta?

21

Além de ser um Panda, também sou um artista, faço meus trabalhos de arte principalmente no GIMP e salvo minhas fotos em um determinado diretório do meu computador. No entanto, tenho um pequeno inconveniente porque salvei minhas imagens em jpegformato; no entanto, o programa padrão para abrir jpegs é oe Image Viewer, se eu o alterar GIMPpara conveniência dos meus trabalhos artísticos, significa que todos os outros jpegs no meu computador abrem GIMPe Eu não os quero, então é aqui que o problema começa ...

Então, eu estou querendo saber se existe alguma maneira de fazer com que tudo seja jpegaberto nesse diretório específico no meu computador GIMP, mas todos os outros jpegs em outros lugares sejam abertos no Image Viewer?

Braiam
fonte
Apenas para Nautilus / Files ou também para xdg-open?
AB
@AB: Eu diria os dois se isso puder ser feito.
Pois xdg-openem um terminal você teria que alterar o tipo de mimet de suas imagens.
AB
Ou você também pode usar o script na minha resposta com o caminho completo da imagem.
AB
4
Nunca use .jpegcomo um formato intermediário! Incorre em perda de geração . Por que você simplesmente não salva as imagens como .xcf, que sempre são abertas automaticamente com o GIMP?
leftaroundabout

Respostas:

21

Você precisa de um desktoparquivo e um script de wrapper:

  1. O desktoparquivo

    • Crie um arquivo da área de trabalho

      nano ~/.local/share/applications/jpeg-wrapper.desktop
      
    • Adicione a configuração abaixo (altere a propriedade para Name)

      [Desktop Entry]
      Name=Special or Standard
      Comment=Open a JPEG depending of the path
      Exec=/home/user/bin/jpeg-wrapper %f
      Icon=
      Terminal=false
      Type=Application
      Categories=Editor;
      StartupNotify=true
      MimeType=image/jpeg;
      
    • Substituir userno Exec=/home/user/bin/jpeg-wrapper %fcom seu nome de usuário, a saída do

      echo $USER
      
    • Substitua o nome do ícone Icon=por um nome ou caminho de sua escolha

    • Use MimeType=image/jpegpara especificar os tipos mime de arquivos aos quais a decisão deve ser aplicada. Separe vários tipos de mímica via;

      Obtenha o tipo MIME via

      mimetype your_file
      

      por exemplo, para um arquivo de texto

      text/plain
      
  2. O script do wrapper

    • Crie um novo script

      mkdir -p ~/bin
      nano ~/bin/jpeg-wrapper
      
    • Adicione o código abaixo

      #!/usr/bin/env bash
      image_path=$(dirname "$1")
      my_special_path="$HOME/tmp"
      open_with_special="gimp"
      open_with_standard="eog"
      
      if [[ $(mimetype -b "$1") == "image/jpeg" ]] && [[ "$image_path" == "$my_special_path"* ]]; then
              "$open_with_special" "$1"
      else
              "$open_with_standard" "$1"
      fi
    • Mude my_special_pathpara a pasta do trabalho artístico . Todas as subpastas também são consideradas.

    • Mude open_with_specialpara a sua aplicação especial (por exemplo gimp)

    • Torne seu script wrapper executável

      chmod +x ~/bin/jpeg-wrapper
      
  3. Reinicie o Shell do Unity / GNOME, para o Shell do GNOME, por exemplo Alt- - F2, digite reEnter

  4. Associe um ou mais tipos de arquivo ao arquivo da área de trabalho

    • Abra seu gerenciador de arquivos e clique com o botão direito do mouse no arquivo ao qual a decisão é aplicada

    • Clique Properties

    • Ative a guia Open With

    • Selecione a entrada Special or Standard

    • Clique Set as default

  5. Aproveite ;)

Script verificado aqui .

AB
fonte
Importa em que eu altero o Namevalor?
Não, mude o nome como você gostaria.
AB
Além disso, seu script tem um pequeno problema ... Uhm ... Todos os arquivos da minha pasta de arte agora abrem bem no GIMP, e o mesmo para todos os subdiretórios, no entanto, se um arquivo não estiver nessa área, ele simplesmente não será aberto. em absoluto.
Deixe-me checar isto.
AB
Ok, funciona bem agora que você removeu o loop infinito. ;)