gedit - mostra il percorso del file per i file aperti di recente

4

Gedit mostra i file aperti di recente.

Come faccio a rendere gedit non solo i nomi dei file ma anche il percorso del file per i file aperti di recente?

Lavoro su un sito web che ha un index.tcl / index.adb in molte località. Così ho per esempio 3 volte index.tcl . Ma mi piacerebbe sapere quale.

    
posta Thorsten Niehues 02.07.2015 - 10:32

2 risposte

1

La soluzione più pulita sarebbe ovviamente modificare il codice di gedit . Poiché ciò sembra irraggiungibile, la soluzione seguente è una soluzione alternativa.

Se le informazioni sul percorso dei file gedit utilizzati di recente sono importanti per te, la soluzione può essere utilizzata in sostituzione della panoramica "utilizzata di recente" di gedit. Ti dà le informazioni, esattamente come appare sulla barra del titolo della tua finestra gedit , degli ultimi dieci file usati.

Esiste di:

  1. uno script di sfondo (molto leggero), che tiene traccia dei file gedit aperti
  2. uno script per chiamare un elenco dei file utilizzati più di recente.

Basta eseguire lo script [1] in background, mettere lo script [2] sotto un tasto di scelta rapida o aggiungerlo come scorciatoia alla lista rapida di gedit del programma di avvio.

Il risultato:

Come configurare

L'installazione richiede wmctrl da installare:

sudo apt-get wmctrl

Quindi:

  1. Copia lo script di seguito ( [1] ) in un file vuoto, salvalo come get_latestgedit.py

    #!/usr/bin/env python3
    import subprocess
    import os
    import time
    import socket
    
    f = os.environ["HOME"]+"/.latest_gedit.txt"
    n = 10
    
    def get():
        try:
            pid = subprocess.check_output(["pidof", "gedit"]).decode("utf-8").strip()
            gedit_w =subprocess.check_output(["wmctrl", "-lp"]).decode("utf-8")
            matches = [l.split(socket.gethostname())[1] for l in gedit_w.splitlines() if all(
                [pid in l, "~" in l or "/" in l])]
            return matches
        except:
            return []
    
    gedit_windows1 = get()
    try:
        latest = open(f).read().splitlines()
    except FileNotFoundError:
        latest = []
    
    while True:
        time.sleep(5)
        gedit_windows2 = get()
        new = [w for w in gedit_windows2 if not w in gedit_windows1]
        if len(new) != 0:
            for w in [w for w in gedit_windows2 if not w in gedit_windows1]:
                try:
                    latest.remove(w)
                except ValueError:
                    pass
                latest.append(w)
            if len(latest) > n:
                latest = latest[(len(latest) - n):]
            with open(f, "wt") as out:
                for item in latest:
                    out.write(item+"\n")
        gedit_windows1 = gedit_windows2
    
  2. Copia lo script seguente in un file vuoto, salvalo come get_geditlist.py :

    #!/usr/bin/env python3
    import subprocess
    import os
    import sys
    
    f = os.environ["HOME"]+"/.latest_gedit.txt"
    
    try:
        ws = open(f).read().splitlines()[::-1]
    except FileNotFoundError:
        open(f, "wt").write("")
    
    try:
        cmd = 'zenity --list --title="Choose"'+ \
                      ' --text ""'+ \
                      ' --column="Latest opened" '+\
                      (" ").join(['"'+s.strip()+'"' for s in ws])
        to_open = subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8").split("|")[0]
        path = to_open[to_open.find("(")+1: to_open.find(")")].strip()+"/"+to_open[:to_open.find("(")].strip()
        sections = [s for s in (path.split("/"))]
        for i, it in enumerate(sections):
            if it.count(" ") != 0:
                sections[i] = '"'+it+'"'
        path = ("/").join(sections)
        command = "gedit "+path
        subprocess.Popen(["/bin/bash", "-c", command])
    except subprocess.CalledProcessError:
        pass
    
  3. Apri una finestra di terminale, script test-drive [1] con il comando:

    python3 /path/to/get_latestgedit.py
    

    Mentre lo script è in esecuzione, apri alcuni file gedit esistenti, lascialo aperti per almeno 5-10 secondi (il tempo di interruzione del loop). Ora script di test [2] con il comando (da un altro terminale) con il comando:

    python3 /path/to/get_geditlist.py
    

    I file gedit più recenti dovrebbero apparire, come mostrato nell'immagine.

  4. Se tutto funziona correttamente, aggiungi lo script [1] alle applicazioni di avvio: Dash & gt; Applicazioni di avvio & gt; Inserisci. Aggiungi il comando:

    python3 /path/to/get_latestgedit.py
    

    e aggiungi lo script [2] a un tasto di scelta rapida: Scegli: Impostazioni di sistema & gt; "Tastiera" & gt; "Scorciatoie" & gt; "Scorciatoie personalizzate". Fai clic su "+" e aggiungi il comando:

    /bin/bash -c "sleep 10&&python3 /path/to/get_geditlist.py"
    

    O ,

    aggiungilo come elemento dell'elenco rapido al tuo gedit launcher, come mostrato nell'immagine:

    • Copia il gedit launcher da /usr/share/applications to ~ / .local / share / applications ':

      cp /usr/share/applications/gedit.desktop ~/.local/share/applications
      
    • Apri la copia locale in gedit :

      gedit ~/.local/share/applications/gedit.desktop
      
    • Cerca la riga:

      Actions=Window;Document;
      

    cambialo in:

        Actions=Window;Document;Recently used;
    
    • Alla fine, aggiungi una sezione al file:

      [Desktop Action Recently used]
      Name=Recently used
      Exec=python3 /path/to/get_geditlist.py
      OnlyShowIn=Unity;
      

    Ovviamente, sostituisci python3 /path/to/get_geditlist.py con il percorso reale dello script [2]

Spiegazione

Script [1] assegni (una volta ogni cinque secondi):

  • se vengono aperte gedit windows, controllando se pidof gedit ha un output valido. Quindi, in tal caso:
  • controlla se il pid di gedit si verifica in una o più righe nell'output di wmctrl -lp . In tal caso, filtra le righe non contenenti un percorso valido tra "(" e ")", poiché quelle finestre non provengono da file salvati .
  • Le finestre rimanenti vengono aggiunte a un elenco di finestre utilizzate di recente. Se la finestra (il file) si trova già nell'elenco, la sua posizione cronologica viene aggiornata. Inoltre, lo script cancella tutte le finestre (più vecchie) quando l'elenco supera una lunghezza di dieci (finestre).

Se l'elenco delle finestre usate di recente cambia, l'elenco viene scritto in un file nascosto nella tua directory home .

Script [2] legge il file nascosto, creato e aggiornato da scrip1 [1] . Quando viene chiamato:

  • lo script legge le righe nel file nascosto, contenente i titoli della finestra.
  • dai titoli, il percorso viene analizzato e i titoli della finestra appaiono in una lista Zenity .
  • Se l'utente sceglie una finestra dall'elenco, il percorso del file è "corretto" per eventuali spazi che si verificano nel percorso o nel nome del file, successivamente il file viene aperto con gedit .
risposta data Jacob Vlijm 02.07.2015 - 13:38
1

Un attacco rapido, apri tutti i file che ritieni desideri, quindi nel menu in alto a destra trovi il percorso di ogni file, così puoi mantenere ciò che vuoi e chiudere gli altri.

    
risposta data Maythux 02.07.2015 - 10:39

Leggi altre domande sui tag