如何在当前终端中打开Nautilus目录?

我不喜欢打开几十个终端.使用Nautilus时,有没有办法在当前终端中添加Open而不是在Terminal中打开?
最佳答案
肮脏与否,下面的解决方案在我经常测试的30分钟内完美地工作.只要您可以右键单击目录中的文件(任何),解决方案就可以正常工作:

1.

enter image description here

2.

enter image description here

3.

enter image description here

Nautilus脚本

#!/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)

如何使用

>该脚本需要wmctrl,xdotool和xclip:

sudo apt-get install wmctrl xdotool xclip

>将脚本复制到空文件中,将其保存为〜/ .local / share / nautilus / scripts中的open_in_terminal(无扩展名).如果需要,创建目录.使脚本可执行

而已.注销并重新登录,您将获得脚本,如图(2)所示.

说明

>右键单击文件,我们可以使用nautilus’“NAUTILUS_SCRIPT_CURRENT_URI”获取路径.
>在脚本中,我们可以将此路径加载到剪贴板中(使用xclip)
>随后,脚本引发(首先找到的)gnome-terminal窗口并粘贴路径,前面是cd命令.由于我们使用echo将整行加载到剪贴板中,因此包含Return.

笔记

>应该很清楚,终端中不应该运行任何东西,如果只有一个终端窗口打开,它最有效.如果有多个,脚本将选择最旧的gnome-terminal窗口.
>脚本需要在实践中彻底测试.当我运行它时,即使一次也没有问题,即使桌面必须“穿越”四个或五个视口才能进入终端窗口.然而,如果出现IF错误,我们可以通过几行来实际上以智能(呃)方式等待终端窗口被提升.让我们看看发生了什么.这似乎没必要.
>由于脚本使用realpath,因此链接的目录也能正常工作.

有关nautilus脚本here的更多信息.

或者,如果您有多个,请选择您自己的终端窗口

如果您希望能够在哪个终端窗口中选择打开当前(nautilus)目录,请使用下面的脚本.

它在实践中如何运作

>右键单击目录中的(任何)文件(在本例中为我的桌面),如下所示:

enter image description here
>点击(或以其他方式)你想要使用的终端窗口,它将cd到目录:

enter image description here

剧本

#!/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

# check if gnome-terminal runs
pid = get(["pgrep", "gnome-terminal"])

if pid:
    t = 0
    while t < 30:
        # see if the frontmost window is a terminam window
        active = get(["xdotool", "getactivewindow"])
        if pid in get(["xprop", "-id", active]):       
            # get the current path
            current = replace(os.getenv("NAUTILUS_SCRIPT_CURRENT_URI"))
            dr = os.path.realpath(current)
            # 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)
            break
        else:
            t += 1
            time.sleep(0.5)

建立

就像第一个脚本一样.

说明

该脚本与第一个脚本有一点不同:它不是自动提升第一个找到的终端窗口,而是等待第一个终端窗口具有焦点.然后它cd到该窗口内的目录.

转载注明原文:如何在当前终端中打开Nautilus目录? - 代码日志