Gedit 显示最近打开的文件。
如何gedit不仅显示文件名,还显示最近打开的文件的文件路径?
我在一个index.tcl / index.adb在很多地方都有的网站上工作。所以我有例如 3 次index.tcl。但我想知道是哪一个。
最干净的解决方案当然是编辑gedit. 由于这似乎遥不可及,因此下面的解决方案是一种解决方法。
如果最近使用的 gedit 文件的路径信息对您很重要,则该解决方案可以用作 gedit 自己的“最近使用”概述的替代品。gedit它为您提供最近十个使用的文件的信息,与窗口标题栏上显示的信息完全相同。

它存在于:
gedit文件[1]只需在后台运行脚本,将脚本放在[2]快捷键下或将其添加为gedit启动器快速列表的快捷方式。
结果:
wmctrl需要安装安装程序:
sudo apt-get wmctrl
Run Code Online (Sandbox Code Playgroud)
然后:
将下面的脚本([1])复制到一个空文件中,另存为get_latestgedit.py
sudo apt-get wmctrl
Run Code Online (Sandbox Code Playgroud)将以下脚本复制到一个空文件中,另存为get_geditlist.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
Run Code Online (Sandbox Code Playgroud)[1]打开终端窗口,使用以下命令测试驱动脚本:
python3 /path/to/get_latestgedit.py
Run Code Online (Sandbox Code Playgroud)
脚本运行时,打开一些现有gedit文件,并保持它们打开至少 5-10 秒(循环中断时间)。[2]现在使用以下命令(从另一个终端)测试运行脚本:
python3 /path/to/get_geditlist.py
Run Code Online (Sandbox Code Playgroud)
应显示最新的gedit文件,如图所示。
如果一切正常,请将脚本添加[1]到启动应用程序:Dash > 启动应用程序 > 添加。添加命令:
python3 /path/to/get_latestgedit.py
Run Code Online (Sandbox Code Playgroud)
并将脚本添加[2]到快捷键:选择:系统设置>“键盘”>“快捷键”>“自定义快捷键”。单击“+”并添加命令:
/bin/bash -c "sleep 10&&python3 /path/to/get_geditlist.py"
Run Code Online (Sandbox Code Playgroud)
或者,
将其作为快速列表项添加到gedit启动器中,如图所示:

gedit从~/.local/share/applications`复制启动器/usr/share/applications to:
cp /usr/share/applications/gedit.desktop ~/.local/share/applications
Run Code Online (Sandbox Code Playgroud)打开本地副本gedit:
gedit ~/.local/share/applications/gedit.desktop
Run Code Online (Sandbox Code Playgroud)寻找该行:
Actions=Window;Document;
Run Code Online (Sandbox Code Playgroud)将其更改为:
Actions=Window;Document;Recently used;
Run Code Online (Sandbox Code Playgroud)
在最后,向文件添加一个部分:
[Desktop Action Recently used]
Name=Recently used
Exec=python3 /path/to/get_geditlist.py
OnlyShowIn=Unity;
Run Code Online (Sandbox Code Playgroud)当然,替换python3 /path/to/get_geditlist.py成脚本的真实路径[2]
脚本[1]检查(每五秒一次):
gedit窗口打开,则检查是否pidof gedit有有效的输出。那么,如果是这样的话:gedit它检查的 pid是否出现在 的输出中的一行或多行中wmctrl -lp。如果是这样,它会过滤掉不包含“(”和“)”之间的有效路径的行,因为这些窗口不是来自保存的文件。如果最近使用的窗口列表发生更改,该列表将写入home目录中的隐藏文件中。
脚本[2]读取由 scrip1 创建和更新的隐藏文件[1]。被调用时:
Zenity,并且窗口标题出现在列表中。gedit.| 归档时间: |
|
| 查看次数: |
1888 次 |
| 最近记录: |