यह कैसे किया जा सकता है
जब आप दाईं ओर- किसी फ़ाइल या फ़ोल्डर को एक नॉटिलस स्क्रिप्ट के लिए क्लिक करते हैं, तो चयनित फ़ाइल स्क्रिप्ट के तर्क के रूप में पारित हो जाती है। ज्यादातर मामलों में जैसे:
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()
(इस सचमुच पेस्ट नहीं होगा, लेकिन स्क्रिप्ट के अंदर पथ उपलब्ध बनाने)।