Gedit
показывает недавно открытые файлы.
Как я делаю gedit
покажите не только имена файлов, но также и путь к файлу для недавно открытых файлов?
Я работаю над веб-сайтом, который имеет index.tcl / index.adb
во многих местоположениях. Таким образом, я имею, например, в 3 раза index.tcl
. Но я хотел бы знать который.
Самое чистое решение состояло бы в том, чтобы, конечно, отредактировать код gedit
. Так как это кажется вне досягаемости, решением ниже является обходное решение.
Если информация о пути недавно используемых gedit файлов важна для Вас, решение может использоваться в качестве замены собственного "недавно используемого" обзора gedit. Это дает Вам информацию, точно как это появляется на Вашем gedit
строка заголовка окна, последних десяти используемых файлов.
Это существует:
gedit
файлыПросто запустите скрипт [1]
в фоновом режиме поместите сценарий [2]
под сочетанием клавиш или добавляют его как ярлык на gedit
quicklist средства запуска.
Результат:
Потребности установки wmctrl
быть установленным:
sudo apt-get wmctrl
Затем:
Скопируйте сценарий ниже ([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
Скопируйте сценарий ниже в пустой файл, сохраните его как 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
Откройте окно терминала, сценарий тест-драйва [1]
с командой:
python3 /path/to/get_latestgedit.py
В то время как сценарий работает, откройте некоторых существующих gedit
файлы, оставьте их открытыми в течение по крайней мере 5-10 секунд (время разрыва замкнутой цепи). Теперь сценарий тестового прогона [2]
с командой (от другого терминала) с командой:
python3 /path/to/get_geditlist.py
Новое gedit
файлы должны обнаружиться, как показано в изображении.
Если все хорошо работает, добавьте сценарий [1]
к Вашим приложениям запуска: Тире> Приложения Запуска> Добавляет. Добавьте команду:
python3 /path/to/get_latestgedit.py
и добавьте сценарий [2]
к сочетанию клавиш: Выберите: Параметры настройки системы> "Клавиатура"> "Ярлыки"> "Пользовательские Ярлыки". Нажмите "+" и добавьте команду:
/bin/bash -c "sleep 10&&python3 /path/to/get_geditlist.py"
Или,
добавьте его как quicklist объект к Вашему gedit
средство запуска, как показано в изображении:
Скопируйте 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
имеет допустимый вывод. Затем раз так:gedit
pid происходит в одной или нескольких строках в выводе wmctrl -lp
. Если так, это отфильтровывает строки, не содержащие допустимый путь между" (" и")", так как те окна не из сохраненных файлов.Если список недавно используемых изменений окон, список написан к скрытому файлу в Вашем home
каталог.
Сценарий [2]
читает скрытый файл, созданный и обновленный scrip1 [1]
. При вызове:
Zenity
список. gedit
.Быстрый взлом, просто откройте все файлы, которые вы считаете нужными, затем в верхнем правом меню вы найдете путь к каждому файлу, чтобы вы могли оставить то, что хотите, и закрыть другие.
Если вдруг кому-то все еще интересно, gedit изначально реализовал отображение пути к файлу несколькими способами. Должно быть, он уже давно доступен, но в версии 3.36.2 он точно есть.