0%

nautilus脚本添加terminal快捷方式

Nautilusgnome桌面环境的文件管理器,但是功能还是比较有限,作为一个经常在windows下写代码的人,对windows文件管理器的快捷方式很受用。

虽然nautilus也可以右键选择”在终端打开“,但是只能在窗口的空白处点击右键才有这个选项,一旦光标选中了文件或文件夹,右键菜单中就没有“在终端打开”的选项了。

如果文件太多,已经填满了窗口的情况下,根本就不可能调出这个菜单了,所以只能手动复制路径,然后在终端中cd过去,既影响效率又影响心情。

目标

实现在文件管理器任意界面按下快捷键,打开终端并定位到此处。

0x00

Nautilus本身没有提供这样的接口,但是可以直接运行nautilus脚本,只需要将任意可运行脚本放到
/root/.local/share/nautilus/scripts文件夹下,然后在文件管理界面下点击右键,就可以在菜单中找到脚本选项了,然后选择对应的脚本就可以运行了。

0x01 制作脚本

1
2
cd /root/.local/share/nautilus/scripts
vim Terminal

然后添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#! /usr/bin/python3
"""
Author: guiu
一个nautilus脚本,用来使用快捷键在当前文件夹下打开terminal
需要配合/root/.config/nautilus/scripts-accels文件使用
"""

import os
from urllib import parse

def main():
# 获取当前路径并url解码
current_path = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI")[7:]
current_path = parse.unquote(current_path)
current_path = current_path.replace(' ', '\ ').replace('(', '\(').replace(')', '\)')

# 如果有选中文件的情况下,获取选中文件路径
select_file_path = os.getenv("NAUTILUS_SCRIPT_SELECTED_FILE_PATHS").splitlines()

if select_file_path:
for i in select_file_path:
# 如果选中的路径是文件
if os.path.isfile(i):
continue
else:
open_path = i.replace(' ', '\ ').replace('(', '\(').replace(')', '\)')
break
try:
# 如果选中的路径中含有文件夹,则打开第一个
if open_path:
os.system("gnome-terminal --working-directory={}".format(open_path))
except:
# 选中的全是文件,则打开当前目录
os.system("gnome-terminal --working-directory={}".format(current_path))
else:
# 没有选中对象,打开当前目录
os.system("gnome-terminal --working-directory={}".format(current_path))


if __name__ == "__main__":
main()

这个脚本的功能是,当前如果有选中文件夹,就打开选中的第一个文件夹,如果没有,就打开当前目录。

0x02 绑定快捷方式

此时就可以在右键菜单里选中脚本打开terminal了。

下面我们给这个脚本绑定快捷键:

查遍了资料都没人提到如何创建快捷键,最后在某角落里看到了相关的介绍,终于解决了这个问题。

首先在/root/.config/nautilus/文件夹下创建scripts-accels文件,填入以下内容:

1
2
3
4
5
6
7
F12 Terminal

; Commented lines must have a space after the semicolon
; Examples of other key combinations:
; <Control>F12 Terminal
; <Alt>F12 Terminal
; <Shift>F12 Terminal

这个脚本是将Terminal脚本绑定到F12快捷键上,然后保存退出即可。