如何安装Nautilus脚本?


Answers:


37

假设您要安装在浏览Ask Ubuntu时发现的以下脚本:

#!/bin/bash
## Sample Script 0.1
## Dependencies: notify-osd

notify-send "Sample nautilus script" "You Selected $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS"

依存关系

您会注意到的第一件事是,许多脚本不仅会立即可用。有时它们取决于您可能已安装或未安装的其他软件包。在这种情况下,我们的脚本取决于notify-osd,默认情况下Ubuntu附带了。

在其他发行版中,情况可能并非如此,您必须在使用脚本之前安装依赖项。如果依赖项是官方存储库的一部分,则可以使用轻松安装它apt-get,例如:

sudo apt-get install notify-osd

设置脚本

现在我们已经满足了所有依赖性,我们可以继续并将脚本复制到我们的系统中。要做到这一点,我们首先创建我们的脚本文件夹,这是一个新的文档~/.gnome2/nautilus-scripts~/.local/share/nautilus/scripts/在Ubuntu 13.04及更高版本。这是一个隐藏的文件夹。为了访问它,您将必须打开文件管理器,按CTRL+ L并将目录路径粘贴到位置栏中。

接下来,我们将通过右键单击并选择创建新文档空文档创建一个新的空文档。随便命名,但要提防:选择的标题是脚本条目稍后在nautilus上下文菜单中的显示方式。因此,最好为文档选择一个描述性名称:

在此处输入图片说明

在您选择的文本编辑器中打开新文档,然后继续将上面代码框的内容复制并粘贴到其中。保存它并退出文本编辑器。

使它可执行

此时,您的脚本已正确设置,但仍无法正常运行,因为系统尚未将其识别为可执行文件。要使其可执行,请右键单击您的文件,然后转到PropertiesPermissions。设置“ 允许以程序执行 ”复选框,然后关闭对话框:

在此处输入图片说明

用法

现在,您应该能够从nautilus上下文菜单访问脚本。只需右键单击您选择的文件,然后转到脚本 -> 脚本名称(此处:示例脚本)。单击条目以对所选文件执行脚本:

在此处输入图片说明

为脚本分配键盘快捷键

可以通过编辑Nautilus的键盘加速器文件来分配Nautilus脚本的键盘快捷键。在Ubuntu 12.04及更低版本中,该文件位于下~/.gnome2/accels/nautilus。在较新的版本中,此文件已移至~/.config/nautilus/accels。请注意,您的脚本仅在重新启动Nautilus(执行nautilus -q,然后通过单击其启动器再次启动Nautilus)之后才会显示在加速器文件中。

加速器文件的语法乍一看可能有点让人不知所措,但实际上非常简单。看看这个摘录,例如:

; (gtk_accel_path "<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
; (gtk_accel_path "<Actions>/ScriptsGroup/script_file:\\s\\s\\shome\\sglutanimate\\s.gnome2\\snautilus-scripts\\sSample%20script" "")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")

每行代表一个键分配。第一个双引号段指定了操作,第二个双引号段指定了键组合。以分号开头的行已注释,当前处于非活动状态。

为了给脚本分配快捷方式,您将不得不在该文件中搜索脚本的名称,并通过删除分号取消注释相应的行。然后继续输入您要分配的键盘快捷键。

这些是可用的修饰符及其对应的键代码:

  • CTRL = <Primary>
  • ALT = <Alt>
  • SHIFT = <Shift>

您可以使用xev找到所有其他键的有效键代码。

这是您必须修改上面的部分将示例脚本分配给ALT+的方式SHIFT + S

; (gtk_accel_path "<Actions>/ShellActions/ZoomInAccel2" "<Primary>KP_Add")
; (gtk_accel_path "<Actions>/ShellActions/TabsNext" "<Primary>Page_Down")
(gtk_accel_path "<Actions>/ScriptsGroup/script_file:\\s\\s\\shome\\sglutanimate\\s.gnome2\\snautilus-scripts\\sSample%20script" "<Alt><Shift>s")
; (gtk_accel_path "<Actions>/ShellActions/Search" "<Primary>f")
; (gtk_accel_path "<Actions>/ShellActions/Forward" "<Alt>Right")

在Ubuntu 12.04(以及更高版本)上,Nautilus有时会覆盖加速器文件,然后才能进行任何更改。因此,最好在Nautilus不在运行(nautilus -q)时执行您所做的所有更改。无论哪种方式,您必须重新启动Nautilus才能查看更改。

自动化安装

该Nautilus脚本将自动为您安装Nautilus脚本。请查看评论,以了解幕后情况:

#!/bin/bash
# AUTHOR:       Glutanimate (/ubuntu//users/81372/)
# LICENSE:      GNU GPLv3 (http://www.gnu.de/documents/gpl-3.0.en.html)
# NAME:         Nautilus Scripts Installer
#
# DESCRIPTION:  This script will install Nautilus scripts on Ubuntu 12.04 and above.
#               Note: scripts of the same name in the destination folder will be
#               overwritten without warning


# general purpose notification function
gui_notify(){
    notify-send -i gnome-app-install "Nautilus Scripts Installer" "$1"
}


# check if any files selected
if [[ -z "$@" ]]
  then
      gui_notify "Error: No files selected."
      exit 1
fi


RELEASE="$(lsb_release -r | cut -f2)"   # detect Ubuntu release

if [[ "$RELEASE" = "12.04" ]]           # set script folder accordingly
  then
      ScriptFolder="$HOME/.gnome2/nautilus-scripts"
  else
      ScriptFolder="$HOME/.local/share/nautilus/scripts/"
fi


for Script in "$@"; do

  ScriptFilename="${Script##*/}"                # get filename via bash string manipulation

  cp "$Script" "$ScriptFolder/"                 # Move script to destination
  chmod u+x "$ScriptFolder/$ScriptFilename"     # Make it executable for the user

done

gui_notify "The following scripts have been installed: $@"

顺便说一句这是我用来记录此答案的屏幕录像的nautilus脚本


1
可能会进一步增强此答案,包括有关使用Nautilus文件属性窗口或命令行(例如askubuntu.com/a/376062/53738)将图标分配给脚本的信息。
des
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.