gedit - покажите путь к файлу для недавно открытых файлов

Gedit показывает недавно открытые файлы.

Как я делаю gedit покажите не только имена файлов, но также и путь к файлу для недавно открытых файлов?

Я работаю над веб-сайтом, который имеет index.tcl / index.adb во многих местоположениях. Таким образом, я имею, например, в 3 раза index.tcl. Но я хотел бы знать который.

4
задан 2 July 2015 в 11:41

3 ответа

Самое чистое решение состояло бы в том, чтобы, конечно, отредактировать код gedit. Так как это кажется вне досягаемости, решением ниже является обходное решение.


Если информация о пути недавно используемых gedit файлов важна для Вас, решение может использоваться в качестве замены собственного "недавно используемого" обзора gedit. Это дает Вам информацию, точно как это появляется на Вашем gedit строка заголовка окна, последних десяти используемых файлов.

enter image description here

Это существует:

  1. (очень легкий) фоновый сценарий, отслеживание возможно открытого gedit файлы
  2. сценарий для вызова списка последний раз используемых файлов.

Просто запустите скрипт [1] в фоновом режиме поместите сценарий [2] под сочетанием клавиш или добавляют его как ярлык на gedit quicklist средства запуска.

Результат:

Как установить

Потребности установки wmctrl быть установленным:

sudo apt-get wmctrl

Затем:

  1. Скопируйте сценарий ниже ([1]) в пустой файл сохраните его как 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. Скопируйте сценарий ниже в пустой файл, сохраните его как 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. Откройте окно терминала, сценарий тест-драйва [1] с командой:

    python3 /path/to/get_latestgedit.py
    

    В то время как сценарий работает, откройте некоторых существующих gedit файлы, оставьте их открытыми в течение по крайней мере 5-10 секунд (время разрыва замкнутой цепи). Теперь сценарий тестового прогона [2] с командой (от другого терминала) с командой:

    python3 /path/to/get_geditlist.py
    

    Новое gedit файлы должны обнаружиться, как показано в изображении.

  4. Если все хорошо работает, добавьте сценарий [1] к Вашим приложениям запуска: Тире> Приложения Запуска> Добавляет. Добавьте команду:

    python3 /path/to/get_latestgedit.py
    

    и добавьте сценарий [2] к сочетанию клавиш: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:

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

    Или,

    добавьте его как quicklist объект к Вашему gedit средство запуска, как показано в изображении:

    enter image description here

    • Скопируйте gedit средство запуска от /usr/share/applications to~/.local/share/applications':

      cp /usr/share/applications/gedit.desktop ~/.local/share/applications
      
    • Откройте локальную копию в gedit:

      gedit ~/.local/share/applications/gedit.desktop
      
    • Ищите строку:

      Actions=Window;Document;
      

    измените его на:

        Actions=Window;Document;Recently used;
    
    • К самому концу добавьте раздел к файлу:

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

    Конечно, замена python3 /path/to/get_geditlist.py реальным путем к сценарию [2]

Объяснение

Сценарий [1] проверки (однажды в пять секунд):

  • если gedit окна открыты путем проверки если pidof gedit имеет допустимый вывод. Затем раз так:
  • это проверяет если geditpid происходит в одной или нескольких строках в выводе wmctrl -lp. Если так, это отфильтровывает строки, не содержащие допустимый путь между" (" и")", так как те окна не из сохраненных файлов.
  • Остающиеся окна добавляются к списку недавно используемых окон. Если окно (файл) уже происходит в списке, его хронологическое положение обновляется. Кроме того, сценарий удаляет все (самые старые) окна, когда список превышает длину десять (окна).

Если список недавно используемых изменений окон, список написан к скрытому файлу в Вашем home каталог.

Сценарий [2] читает скрытый файл, созданный и обновленный scrip1 [1]. При вызове:

  • сценарий читает строки в скрытом файле, содержа заголовки окна.
  • из заголовков путь анализируется, и заголовки окон появляются в a Zenity список.
  • Если пользователь, выбранный окно из списка, путь к файлу "фиксируется" для возможно происходящих пробелов или в пути или в имени файла, впоследствии файл открыт с gedit.
1
ответ дан 1 December 2019 в 10:18

Быстрый взлом, просто откройте все файлы, которые вы считаете нужными, затем в верхнем правом меню вы найдете путь к каждому файлу, чтобы вы могли оставить то, что хотите, и закрыть другие.

enter image description here

1
ответ дан 1 December 2019 в 10:18

Если вдруг кому-то все еще интересно, gedit изначально реализовал отображение пути к файлу несколькими способами. Должно быть, он уже давно доступен, но в версии 3.36.2 он точно есть.

0
ответ дан 1 August 2020 в 15:12

Другие вопросы по тегам:

Похожие вопросы: