gedit - mostra o caminho do arquivo para arquivos abertos recentemente

4

Gedit mostra os arquivos abertos recentemente.

Como faço para que gedit mostre não apenas os nomes dos arquivos, mas também o caminho dos arquivos abertos recentemente?

Eu trabalho em um site que tem index.tcl / index.adb em vários locais. Então eu tenho, por exemplo, 3 vezes index.tcl . Mas eu gostaria de saber qual delas.

    
por Thorsten Niehues 02.07.2015 / 10:32

2 respostas

1

A solução mais limpa seria, claro, editar o código de gedit . Como isso parece fora de alcance, a solução abaixo é uma solução alternativa.

Se a informação do caminho dos arquivos gedit usados recentemente é importante para você, a solução pode ser usada como uma substituição da visão geral "recentemente usada" do próprio gedit. Ele fornece as informações, exatamente como aparecem na barra de título da janela gedit , dos últimos dez arquivos usados.

Existede:

  1. umscriptdeplanodefundo(muitoclaro),acompanhandoosarquivosgeditpossivelmenteabertos
  2. umscriptparachamarumalistadosarquivosusadosmaisrecentemente.

Bastaexecutaroscript[1]emsegundoplano,colocaroscript[2]emumatecladeatalhoouadicioná-locomoumatalhoparaalistarápidadogeditlauncher.

Oresultado:

Comoconfigurar

Aconfiguraçãoprecisadewmctrlparaserinstalada:

sudoapt-getwmctrl

Então:

  1. Copieoscriptabaixo([1])emumarquivovazio,salve-ocomoget_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. Copie o script abaixo em um arquivo vazio, salve-o como 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. Abra uma janela de terminal, o script da unidade de teste [1] com o comando:

    python3 /path/to/get_latestgedit.py
    

    Enquanto o script é executado, abra alguns arquivos gedit existentes, deixe-os abertos por pelo menos 5-10 segundos (o tempo de quebra do loop). Agora execute o script de execução de teste [2] com o comando (de outro terminal) com o comando:

    python3 /path/to/get_geditlist.py
    

    Os arquivos gedit mais recentes devem aparecer, conforme mostrado na imagem.

  4. Se tudo funcionar bem, adicione o script [1] aos seus aplicativos de inicialização: Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:

    python3 /path/to/get_latestgedit.py
    

    e adicione o script [2] a uma tecla de atalho: Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

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

    Ou ,

    adicione-o como um item de lista rápida ao seu gedit launcher, como mostra a imagem:

    • Copieogeditlauncherde/usr/share/applicationsto~/.local/share/applications':

      cp/usr/share/applications/gedit.desktop~/.local/share/applications
    • Abraacópialocalemgedit:

      gedit~/.local/share/applications/gedit.desktop
    • Procurealinha:

      Actions=Window;Document;

    alterepara:

    Actions=Window;Document;Recentlyused;
    • Atéofinal,adicioneumaseçãoaoarquivo:

      [DesktopActionRecentlyused]Name=RecentlyusedExec=python3/path/to/get_geditlist.pyOnlyShowIn=Unity;

    Claro,substituapython3/path/to/get_geditlist.pypelocaminhorealparaoscript[2]

Explicação

Verificaçõesdoscript[1](umavezporcincosegundos):

  • segeditjanelasforemabertas,verificandosepidofgedittemumasaídaválida.Então,seassimfor:
  • verificaseopiddegeditocorreemumaoumaislinhasnasaídadewmctrl-lp.Emcasoafirmativo,filtraaslinhas,nãocontendoumcaminhoválidoentre"(" e ")", uma vez que essas janelas não são de arquivos salvos .
  • As janelas restantes são adicionadas a uma lista de janelas usadas recentemente. Se a janela (o arquivo) já ocorrer na lista, sua posição cronológica será atualizada. Além disso, o script exclui todas as janelas (mais antigas) quando a lista excede um comprimento de dez (janelas).

Se a lista de janelas usadas recentemente for alterada, a lista será gravada em um arquivo oculto no diretório home .

O script [2] lê o arquivo oculto, criado e atualizado por scrip1 [1] . Quando chamado:

  • o script lê as linhas no arquivo oculto, contendo os títulos da janela.
  • dos títulos, o caminho é analisado e os títulos das janelas aparecem em uma lista Zenity .
  • Se o usuário escolher uma janela da lista, o caminho para o arquivo é "fixo" para espaços possivelmente ocorrentes no caminho ou no nome do arquivo, subseqüentemente o arquivo é aberto com gedit .
por Jacob Vlijm 02.07.2015 / 13:38
1

Um hack rápido, basta abrir todos os arquivos que você acha que deseja, então, no menu superior direito, você pode encontrar o caminho de cada arquivo, para que você possa manter o que deseja e fechar os outros.

    
por Maythux 02.07.2015 / 10:39

Tags