मैं नॉटिलस स्क्रिप्ट के लिए कीबोर्ड शॉर्टकट कैसे असाइन कर सकता हूं?


10

मैंने एक Nautilus स्क्रिप्ट सेटअप किया है । मैंने स्क्रिप्ट डाल दी है /home/sumeet/.local/share/nautilus/scriptsऔर यह राइट क्लिक मेनू में दिखाई देता है। और उम्मीद के मुताबिक काम भी करता है। मैं सिर्फ स्क्रिप्ट का शॉर्टकट असाइन करना चाहता हूं।


मैं अपनी नॉटिलस स्क्रिप्ट के लिए कीबोर्ड शॉर्टकट कैसे बना सकता हूं?

ऊपर दिए गए प्रश्न में दिए गए उत्तर एक विशिष्ट रिलीज को लक्षित करते हैं और पूरी तरह से पुराने हैं, और मुझे इस विषय के अलावा इस प्रश्न के अलावा कुछ भी नहीं मिला।


किया जा सकता है, लेकिन आपको नॉटिलस स्क्रिप्ट को थोड़ा संपादित करने की आवश्यकता है। क्या आपके मामले में यह संभव है? (मुझे संदेह है कि यह :) है)। बोटे सर्ग और मैंने यहां कुछ ऐसा किया: askubuntu.com/questions/886642/… । उस समाधान को यहां लागू किया जा सकता है, लेकिन यह फ़ाइल या निर्देशिका को तर्क के रूप में प्राप्त करने के लिए लक्षित स्क्रिप्ट लेता है।
जैकब व्लिजम

@JacobVlijm यह वही स्क्रिप्ट है ( आप जानते हैं कि कौन सी है )
सुमीत देशमुख

1
AHAAA, तो जवाब काफी सरल है। मुझे उम्मीद है कि मैं इसे आज कहीं पोस्ट कर सकता हूं।
जैकब व्लिजम

@JacobVlijm ने इसकी सराहना की।
सुमीत देशमुख

हाय सुमीत, मैं वादा करता हूं कि मैं स्क्रिप्ट की सभी घटनाओं के लिए खोए हुए और पाए गए फिक्स को लागू करूंगा, जिसमें मैं अभी पोस्ट किया था। तुरंत अगर मैं फिर से साँस ले सकता हूँ :)
जैकब व्लिजम

जवाबों:


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 और ऊपर) का उपयोग करने के लिए, आपको दोनों 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()(इस सचमुच पेस्ट नहीं होगा, लेकिन स्क्रिप्ट के अंदर पथ उपलब्ध बनाने)।


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"
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.