Nautilus:通过键盘快捷方式对所选文件进行自定义操作
- 我在nautilus中打开一个包含大约100个文件的目录
- 我通过查看文件的预览选择N(可能是10个)文件。
- 现在我想点击快捷方式,我的自定义脚本应该被调用。
- 我的自定义脚本接收文件名并执行我想要的操作。
如何在gnome / ubuntu / nautilus中注册一个自定义操作,它接收在nautilus中选择的文件名?
nautilus上下文菜单中的新上下文条目
如果您在〜/ .local / share / nautilus / scripts中编写脚本,则会在上下文菜单中获得一个新条目。 如何通过快捷方式调用此脚本?
背景
这是Nautilus的后续问题:将目录中的文件标记为collections夹
版
我使用的是Ubuntu 16.04
对所选文件运行操作
下面的答案将首先回答你的问题;
如何调用脚本并使用当前选择的文件作为参数
[1]
。
但是,链接问题中接受的答案使用了nautilus脚本 ,它将文件作为nautilus的参数。 只有在 nautilus中右键单击时, 这不适用于快捷方式 。 在[2]
,我因此将链接问题中的脚本function添加到答案中,因此您只需从快捷方式中运行其中任何一个(在[2]
)。
[1]
对于16.04及更高版本*,运行带有所选文件作为参数的脚本
您只需使用下面的简短脚本即可。 它将“读取”当前选定的文件,并以文件作为参数运行脚本。
#!/usr/bin/env python3 import subprocess import pyperclip import time time.sleep(1) subprocess.call(["xdotool", "key", "Control_L+c"]) for item in pyperclip.paste().splitlines(): subprocess.Popen(["/path/to/script", item])
使用
-
安装
python3-pyperclip
和xdotool
:sudo apt install python3-pyperclip xdotool
-
将上面的脚本复制到一个空文件中,将其保存为
run_withselected.py
替换脚本"/path/to/script"
通过您要运行的脚本的实际路径。 在引号中使用绝对路径 。
-
将其添加到短按键:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。 单击“+”并添加命令:
python3 /path/to/run_withselected.py
[2]
但是
请注意,来自其他答案的链接的nautilus脚本不会像这样运行,因为它直接从nautilus以另一种方式检索其参数。 因此,我将链接问题的脚本function与上面的function结合起来 。
您不再需要其他答案中的其他脚本了。
A.通过更改名称来指定文件
选择文件
按快捷键以标记(切换)文件
#!/usr/bin/env python3 import subprocess import pyperclip import shutil import os import time time.sleep(1) def npath(p, f): return os.path.join(p, f) subprocess.call(["xdotool", "key", "Control_L+c"]) for item in pyperclip.paste().splitlines(): data = item.rsplit("/", 1); path = data[0]; name = data[1] newname = name[2:] if name.startswith("*0") else "*0"+name shutil.move(npath(path, name), npath(path, newname))
B.通过在“collections夹”目录中创建链接来指定文件
选择文件
按快捷方式在“My_Favorites”中创建(切换)链接
#!/usr/bin/env python3 import subprocess import pyperclip import shutil import os import time fav = os.path.join(os.environ["HOME"], "My_Favorites") try: os.mkdir(fav) except FileExistsError: pass time.sleep(1) subprocess.call(["xdotool", "key", "Control_L+c"]) for item in pyperclip.paste().splitlines(): name = item.rsplit("/", 1)[-1] link = os.path.join(fav, name) try: os.symlink(item, link) except FileExistsError: os.remove(link)
使用(任一)
-
脚本需要
python3-pyperclip
和xdotool
:sudo apt install python3-pyperclip xdotool
-
将上面的脚本复制到一个空文件中,将其另存为
toggle_selected.py
-
添加短路键:选择:系统设置>“键盘”>“快捷方式”>“自定义快捷方式”。 单击“+”并添加命令:
python3 /path/to/toggle_selected.py
说明
- 该脚本使用
xdotool
虚拟按Ctrl + C. -
随后,脚本(内部)创建所选文件的列表:
pyperclip.paste().splitlines()
-
这些文件随后用作重命名文件的参数:
for item in pyperclip.paste().splitlines(): data = item.rsplit("/", 1); path = data[0]; name = data[1] newname = name[2:] if name.startswith("*0") else "*0"+name shutil.move(npath(path, name), npath(path, newname))
或创建符号链接:
for item in pyperclip.paste().splitlines(): name = item.rsplit("/", 1)[-1] try: os.symlink(item, os.path.join(fav, name)) except FileExistsError: os.remove(link)
-
time.sleep(1)
最后是确保“真正的”按键不会干扰xdotool
的模拟按键。笔记
- 在链接的答案中, 第二个脚本创建链接,但不切换。 我回答“B”也切换了符号链接的存在。
- 如果是发布的应用程序,我会将A和B组合成一个脚本,并决定在设置文件中采取什么操作。 我可能稍后补充一下。
* 14.04
…将需要一个不同的程序来安装pyperclip:
sudo apt-get install python3-pip xdotool sudo pip3 install pyperclip