AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 918464
Accepted
Sumeet Deshmukh
Sumeet Deshmukh
Asked: 2017-05-25 06:04:49 +0800 CST2017-05-25 06:04:49 +0800 CST 2017-05-25 06:04:49 +0800 CST

如何为 nautilus 脚本分配键盘快捷键?

  • 772

我已经设置了Nautilus Script。我已经把脚本放进去/home/sumeet/.local/share/nautilus/scripts,它确实出现在右键菜单中。并且也可以按预期工作。我只想为脚本分配一个快捷方式。


如何为我的 nautilus 脚本创建键盘快捷键?

上述问题中给出的答案针对特定版本并且完全过时,除了这个问题之外,我找不到与该主题相关的任何内容。

nautilus
  • 3 3 个回答
  • 855 Views

3 个回答

  • Voted
  1. Best Answer
    Jacob Vlijm
    2017-06-01T10:38:00+08:002017-06-01T10:38:00+08:00

    怎么做

    当您右键单击 nautilus 脚本的文件或文件夹时,所选文件将作为参数传递给脚本。在大多数情况下,通过以下方式:

    import os
    subject = os.getenv("NAUTILUS_SCRIPT_CURRENT_URI")
    

    ...以最简单的形式使用 python3。

    如果您将其替换为:

    import pyperclip
    
    subprocess.call(["xdotool", "key", "Control_L+c"])
    subject = pyperclip.paste()
    

    ...当前选定的文件在脚本内用作参数

    你需要什么

    要使用此解决方案(16.04 及更高版本),您需要同时安装xdotool和python3-pyperclip:

    sudo apt-get install python3-pyperclip xdotool
    

    完整的脚本,在评论中提到

    然后变成:

    #!/usr/bin/env python3
    import subprocess
    import os
    import sys
    import pyperclip
    
    # --- set the list of valid extensions below (lowercase)
    # --- use quotes, *don't* include the dot!
    ext = ["jpg", "jpeg", "png", "gif", "icns", "ico"]
    # --- set the list of preferred filenames
    # --- use quotes
    specs = ["folder.png", "cover.png", "monkey.png"]
    # ---
    
    # retrieve the path of the targeted folder
    subprocess.call(["xdotool", "key", "Control_L+c"])
    dr = pyperclip.paste()
    
    for root, dirs, files in os.walk(dr):
        for directory in dirs:
            folder = os.path.join(root, directory)
            fls = os.listdir(folder)
            try:
                first = [p for p in fls if p in specs]
                first = first[0] if first else min(
                    p for p in fls if p.split(".")[-1].lower() in ext
                    )
            except ValueError:
                pass
            else:
                subprocess.Popen([
                    "gvfs-set-attribute", "-t", "string",
                    os.path.abspath(folder), "metadata::custom-icon",
                    "file://"+os.path.abspath(os.path.join(folder, first))
                    ])
    

    将此添加到快捷键将设置所选目录内所有目录的图标。

    将其添加到快捷键 (!)

    添加快捷键、运行(使用脚本的脚本)xdotool命令来按下另一个组合键可能会很棘手。要防止两个组合键相互干扰,请使用:

    /bin/bash -c "sleep 1 && python3 /path/to/script.py"
    

    解释

    在选择文件时按Ctrl+时,文件的路径将复制到剪贴板。我们正在模拟按键:C

    subprocess.call(["xdotool", "key", "Control_L+c"])
    

    python的模块只是生成路径,在使用时pyperclip被剥离(这不会从字面上粘贴,而是使路径在脚本中可用)。file://pyperclip.paste()

    • 6
  2. Rafael Muynarsk
    2018-06-29T18:02:44+08:002018-06-29T18:02:44+08:00

    如果目标是选择文件并执行操作,则可以仅使用带有xdotool和的 shell 脚本来完成xclip。所以首先安装它们:

    sudo apt-get install xdotool xclip
    

    然后使用循环内的操作创建以下脚本:

    #!/bin/bash
    file=$(mktemp)
    
    xdotool key "Control_L+c"
    variable="$( xclip -out -selection clipboard)"
    variable="$( echo -e "$variable" | \
                awk 'BEGIN { FS = "\n" } { printf "\"%s\" ", $1 }' | \
                sed -e s#\"\"## | \
                sed 's/" "/"\n"/g')"
    
    echo "$variable" > $file
    
    if [ -s "$file" ]; then
       while read absolute_path_file; do
          absolute_path_file="$(eval echo "$absolute_path_file")"
          base_name="$(basename "$absolute_path_file")"
          ### Execute the actions with the selected files here
          ### echo "$absolute_path_file"
          ### echo "$base_name"
       done < $file
    fi
    

    此脚本不依赖 NAUTILUS 变量,您可以使用它创建快捷方式:

    /bin/bash -c "sleep 1 && /path/script.bash"
    
    • 1
  3. vanadium
    2021-10-01T13:11:04+08:002021-10-01T13:11:04+08:00
    • 使用此处概述的过程,您可以将 Nautilus 中的快捷方式添加到 nautilus 脚本。从 Nautilus 40 开始,这再次有效。
    • 使用_nautilus 脚本的名称,您可以为脚本分配热键。例如,一个名为“_Combine PDF”的脚本将显示带有下划线的 C。Shift选择文件后,您可以使用+快速访问脚本F10 c。

    您可以在子文件夹中组织脚本。这些子文件夹也显示为菜单选项,导致子菜单。也可以使用此命名约定为它们分配一个热键。

    • 0

相关问题

  • Nautilus 自动以 root 身份浏览

  • 在 nautilus 中刷新缩略图

  • 如何在 Nautilus 中管理保存的完整网页及其目录(例如 n.html 和 n_files)

  • 如何让 Nautilus windows 坚持拖放?[关闭]

  • Nautilus 中的 FTP 连接问题 - 一段时间后似乎超时

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve