Come impostare il programma predefinito per aprire un determinato tipo di file in una determinata cartella?


21

Oltre ad essere una Panda, sono anche un'artista, realizzo le mie opere principalmente in GIMP e salvo le mie immagini in una determinata directory sul mio computer. Tuttavia ho un leggero inconveniente perché salvo le mie immagini in jpegformato, tuttavia il programma predefinito per aprire jpegs è il Image Viewer, e se lo cambio GIMPper comodità con la mia grafica, significa che tutte le altre jpegs sul mio computer si aprono in GIMP, e Non li voglio, quindi è qui che inizia il problema ...

Quindi mi chiedo se c'è un modo per farlo in modo che tutti si jpegaprano in quella determinata directory sul mio computer in cui si aprono GIMP, ma tutti gli altri jpegs altrove si aprono nel Image Viewer?


Solo per Nautilus / File o anche per xdg-open?
AB,

@AB: direi entrambi se è possibile farlo.

Perché xdg-openin un terminale dovresti cambiare il mimetipo delle tue immagini.
AB,

Oppure potresti anche usare lo script nella mia risposta con il percorso completo dell'immagine.
AB,

4
Non usare mai .jpegcome formato intermedio! Subisce perdita di generazione . Perché non salvi semplicemente le immagini come .xcf, che si aprono sempre automaticamente con GIMP?
circa il

Risposte:


21

È necessario un desktopfile e uno script wrapper:

  1. Il desktopfile

    • Crea un file desktop

      nano ~/.local/share/applications/jpeg-wrapper.desktop
      
    • Aggiungi la configurazione seguente (cambia la proprietà per 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;
      
    • Sostituire userin Exec=/home/user/bin/jpeg-wrapper %fcon il tuo nome utente, l'output di

      echo $USER
      
    • Sostituisci il nome dell'icona Icon=con un nome o percorso a tua scelta

    • Utilizzare MimeType=image/jpegper specificare i tipi mime di file per i quali deve essere presa la decisione. Separare più tipi di mime tramite;

      Ottieni il tipo mime tramite

      mimetype your_file
      

      ad es. per un file di testo

      text/plain
      
  2. Lo script wrapper

    • Crea un nuovo script

      mkdir -p ~/bin
      nano ~/bin/jpeg-wrapper
      
    • Aggiungi il codice qui sotto

      #!/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
    • Passa my_special_pathalla cartella della grafica . Sono considerate anche tutte le sottocartelle.

    • Passa open_with_specialalla tua applicazione speciale (ad es. gimp)

    • Rendi eseguibile lo script wrapper

      chmod +x ~/bin/jpeg-wrapper
      
  3. Riavvia Unity / GNOME Shell, ad es. Per la shell GNOME Alt- F2, digitare reEnter

  4. Associa uno o più tipi di file al file desktop

    • Apri il tuo file manager e fai clic con il pulsante destro del mouse su un file per il quale deve essere presa la decisione

    • Clic Properties

    • Attiva la scheda Open With

    • Seleziona la voce Special or Standard

    • Clic Set as default

  5. Divertiti ;)

Script controllato qui .


Importa in cosa cambio il Namevalore?

No, cambia il nome come desideri.
AB,

Inoltre, il tuo script ha un leggero problema ... Uhm ... Tutti i file nella mia cartella grafica ora si aprono bene in GIMP, e lo stesso per tutte le sottodirectory, tuttavia se un file non si trova in quell'area, semplicemente non si apre affatto.

Fammi controllare.
AB,

Ok, funziona benissimo ora che hai rimosso il ciclo infinito. ;)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.