可能的重复:
如何在 Nautilus 中自定义上下文菜单?
我正在尝试为Mark as executable
nautilus 中的右键单击创建一个命令,以加快工作流程。我想出了这个脚本:
#! /bin/bash
for file in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
gksudo "chmod +x $file" &
done
Run Code Online (Sandbox Code Playgroud)
我如何让这个工作。我目前有一个.sh
文件,但不知道把它放在哪里。
只需将此文件保存为“标记为可执行文件”,使其自身可执行并将其拖放到~/.gnome2/nautilus-scripts
它会显示在您的右键菜单中,在子菜单下Scripts
gksudo
如果您打算仅将您拥有的文件(在您的主目录下)标记为可执行文件,您可能希望从那里删除,否则,每次通过右键单击菜单运行脚本时,它都会要求您输入密码。 ..
但是您在那里的脚本不适用于文件名包含空格的文件。为了使其适用于他们,您必须将脚本更改为以下内容:
#!/bin/bash
IFS_BAK=$IFS
IFS="
"
for line in $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS; do
if [[ "$line" = "" || "$line" = " " ]]; then
exit
else
chmod +x "$line"
fi
done
IFS=$IFS_BAK
IFS_BAK=
Run Code Online (Sandbox Code Playgroud)
此外,您可以为“标记为可执行文件”创建自己的条目。但是,为了启用它,您需要安装 python-nautilus 包:
sudo apt-get install python-nautilus
Run Code Online (Sandbox Code Playgroud)
然后将此文件保存为mark_as_executable.py
下~/.local/share/nautilus-python/extensions/
:
#!/usr/bin/env python
# -*- coding: utf8 -*-
from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib
class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
print 'Mark as executable extensions is being initialized'
def menu_activate_cb(self, menu, file):
if file.is_gone():
return
system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")
def get_file_items(self, window, files):
if len(files) != 1:
return
file = files[0]
if file.get_uri_scheme() != 'file':
return
item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
item.connect('activate', self.menu_activate_cb, file)
return item,
Run Code Online (Sandbox Code Playgroud)
以上仅适用于单个文件,如果您想添加对多个文件的支持,则必须将其粘贴到 python 脚本中,但是:
#!/usr/bin/env python
# -*- coding: utf8 -*-
from gi.repository import Nautilus, GObject, Gio
from os import system
import urllib
class BackgroundImageExtension(GObject.GObject, Nautilus.MenuProvider):
def __init__(self):
print 'Mark as executable extensions is being initialized'
def menu_activate_cb(self, menu, file):
if file.is_gone():
return
system("chmod +x '"+urllib.unquote(file.get_uri()[7:])+"' &")
def get_file_items(self, window, files):
item = Nautilus.MenuItem(name='Nautilus::set_executable_bit', label='Mark as executable', tip='Add the executable bit to the selected file')
for yourfile in files:
if yourfile.get_uri_scheme() != 'file':
return
item.connect('activate', self.menu_activate_cb, yourfile)
return item,
Run Code Online (Sandbox Code Playgroud)
为了能够使用该功能,您还需要重新启动 nautilus:
nautilus -q
Run Code Online (Sandbox Code Playgroud)
然后打开一个鹦鹉螺窗口。
归档时间: |
|
查看次数: |
2989 次 |
最近记录: |