노틸러스 스크립트에 키보드 단축키를 지정하려면 어떻게해야합니까?


10

노틸러스 스크립트를 설정했습니다 . 스크립트를 넣고 /home/sumeet/.local/share/nautilus/scripts마우스 오른쪽 버튼 클릭 메뉴에 나타납니다. 예상대로 작동합니다. 스크립트에 바로 가기를 지정하고 싶습니다.


노틸러스 스크립트의 단축키를 어떻게 만들 수 있습니까?

위의 질문에 주어진 답변은 특정 릴리스를 대상으로하며 완전히 구식 이며이 주제와 관련 하여이 질문 이외의 다른 것을 찾을 수 없습니다.


가능하지만 노틸러스 스크립트도 약간 편집해야합니다. 귀하의 경우에 가능합니까? (나는 의심합니다) :). Bothe Serg와 저는 여기에서 askubuntu.com/questions/886642/…와 같은 것을 했습니다 . 이 솔루션을 여기에 적용 할 수 있지만 대상 스크립트가 파일 또는 디렉토리를 인수로 수신해야합니다.
Jacob Vlijm

@JacobVlijm 그것은 같은 스크립트입니다 ( 당신은 어느 것을 알고
있습니까

1
AHAAA, 대답은 매우 간단합니다. 오늘 어딘가에 게시 할 수 있기를 바랍니다.
Jacob Vlijm

@JacobVlijm 감사합니다.
Sumeet Deshmukh

안녕하세요 Sumeet, 방금 게시 한 스크립트를 포함하여 스크립트의 모든 항목에 lost & found 수정을 적용 할 것을 약속합니다. 내가 다시 숨을 쉴 수 있다면 즉시 :)
Jacob Vlijm

답변:


6

어떻게 할 수 있습니까

노틸러스 스크립트의 파일 또는 폴더를 마우스 오른쪽 버튼으로 클릭하면 선택한 파일이 스크립트에 인수로 전달됩니다. 대부분의 경우 다음과 같은 방법으로 :

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

... python3을 가장 간단한 형태로 사용합니다.

이것을 다음으로 교체하면 :

import pyperclip

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

... 현재 선택된 파일은 스크립트 내에서 인수로 사용됩니다

필요한 것

모두 설치하려면이 솔루션 (최대 16.04 등), 당신이 필요로하는 사용 xdotoolpython3-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"])

pythonpyperclip모듈은 단순히 경로를 생성하고 file://사용할 때 제거 됩니다 pyperclip.paste()(문자 그대로 붙여 넣지는 않지만 스크립트 내에서 경로를 사용할 수있게합니다).


1

목표 파일을 선택하고 작업을 실행하는 경우는 그냥 쉘 스크립트를 사용하여 작업을 수행하는 것이 가능 xdotool하고 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"
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.