Vit*_*lla 13 nautilus gnome-terminal directory nautilus-script nautilus-actions
我不喜欢打开几十个终端。使用 Nautilus 时,有没有办法在当前终端中添加Open而不是在终端中打开?
Jac*_*ijm 13
不管脏不脏,下面的解决方案在我经常测试的 30 分钟内完美运行。只要您可以右键单击目录中的文件(任何),该解决方案就可以工作:
#!/usr/bin/env python3
import subprocess
import os
import time
def replace(path):
for c in [("%23", "#"), ("%5D", "]"), ("%5E", "^"),
("file://", ""), ("%20", " ")]:
path = path.replace(c[0], c[1])
return path
def get(command):
try:
return subprocess.check_output(command).decode("utf-8").strip()
except subprocess.CalledProcessError:
pass
t = get(["pgrep", "gnome-terminal"])
if t:
w = [l.split()[0] for l in get(["wmctrl", "-lp"]).splitlines() if t in l][0]
# get the current path
current = replace(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
dr = os.path.realpath(current)
# raise the found terminal window
subprocess.call(["wmctrl", "-ia", w])
time.sleep(0.3)
# copy the cd command to clipboard
c1 = "printf 'cd ' | xclip -in -selection c"
c2 = 'echo "'+"'"+dr+"'"+'" | xclip -in -selection c'
# paste & run it
for c in [c1, c2]:
subprocess.call(["/bin/bash", "-c", c])
subprocess.call(["xdotool", "key", "Control_L+Shift+v"])
time.sleep(0.05)
Run Code Online (Sandbox Code Playgroud)
脚本需要wmctrl,xdotool和 xclip:
sudo apt-get install wmctrl xdotool xclip
Run Code Online (Sandbox Code Playgroud)将脚本复制到一个空文件中,将其另存为open_in_terminal(无扩展名)~/.local/share/nautilus/scripts。如果需要,创建目录。使脚本可执行
就是这样。注销并重新登录,您将获得如图 (2) 所示的脚本。
"NAUTILUS_SCRIPT_CURRENT_URI"。xclip)gnome-terminal窗口并粘贴路径,前面是cd命令。由于我们曾经echo将整行加载到剪贴板中,Return因此包含在内。gnome-terminal窗口。有关 nautilus 脚本的更多信息,请访问此处。
如果您希望能够选择在哪个终端窗口中打开当前 (nautilus) 目录,请使用以下脚本。
sudo apt-get install wmctrl xdotool xclip
Run Code Online (Sandbox Code Playgroud)
和第一个脚本完全一样。
该脚本与第一个不同:它不会自动提升第一个找到的终端窗口,而是等待第一个终端窗口获得焦点。然后它 cd 到该窗口内的目录。
最简单的方法是这样的:
cd、空格,然后Shift+Insert (or INS)粘贴路径。击中Enter。不需要脚本或额外的工作。
我很确定没有办法做到这一点,但是我有一个可能对您有所帮助的解决方法。
您始终可以将目录从 Nautilus 拖放到终端窗口中,Nautilus 将传递该目录并将其粘贴到命令行中,因此您可以这样做cd,然后将文件夹拖到终端上并按 Enter。