আমি কীভাবে নটিলাস স্ক্রিপ্টগুলির জন্য কীবোর্ড শর্টকাট বরাদ্দ করতে পারি?


10

আমি একটি নটিলিয়াস স্ক্রিপ্ট সেটআপ করেছি । আমি স্ক্রিপ্টটি রেখেছি /home/sumeet/.local/share/nautilus/scriptsএবং এটি ডান ক্লিক মেনুতে উপস্থিত হবে। এবং প্রত্যাশার মতো কাজ করে। আমি কেবল স্ক্রিপ্টে একটি শর্টকাট বরাদ্দ করতে চাই।


আমি কীভাবে আমার নটিলাস স্ক্রিপ্টগুলির জন্য কীবোর্ড শর্টকাট তৈরি করতে পারি?

উপরের প্রশ্নে দেওয়া উত্তরগুলি একটি নির্দিষ্ট রিলিজ লক্ষ্য করে এবং সম্পূর্ণ পুরানো, এবং আমি এই বিষয়টি ব্যতীত এই প্রশ্নটি ব্যতীত অন্য কিছুই খুঁজে পাই না।


করা যেতে পারে তবে আপনাকে কিছুটা নটিলাস স্ক্রিপ্টও সম্পাদনা করতে হবে। আপনার ক্ষেত্রে কি তা সম্ভব? (আমার সন্দেহ হয় এটি :))। বোথ সার্জ এবং আমি এখানে এরকম কিছু করেছি: Askubuntu.com/questions/886642/… । সমাধানটি এখানে প্রয়োগ করা যেতে পারে, তবে ফাইল বা ডিরেক্টরিটি আর্গুমেন্ট হিসাবে গ্রহণ করতে এটি লক্ষ্যযুক্ত স্ক্রিপ্ট লাগে।
জ্যাকব ভিলিজম 31'17

@ জ্যাকবভিজিম এটি একই চিত্রনাট্য ( আপনি জানেন যে কোনটি )
সুমিত দেশমুখ

1
আহাএ, তারপরে উত্তরটি বেশ সহজ। আমি আশা করি আমি আজ এটি কোথাও পোস্ট করতে পারি।
জ্যাকব Vlijm

@ জ্যাকবভিলিজম এটির প্রশংসা করুন।
সুমিত দেশমুখ

হাই সুমিত, আমি প্রতিশ্রুতি দিচ্ছি যে আমি স্রেফ পোস্ট করেছি এমনটি সহ আমি স্ক্রিপ্টের সমস্ত উপস্থিতিতে হারিয়ে যাওয়া এবং পাওয়া ফিক্সটি প্রয়োগ করব। তাত্ক্ষণিকভাবে যদি আমি আবার শ্বাস নিতে পারি :)
জ্যাকব ভিলিজ

উত্তর:


6

কীভাবে এটি করা যায়

আপনি যখন নটিলাস স্ক্রিপ্টের জন্য কোনও ফাইল বা ফোল্ডারে ডান ক্লিক করেন, নির্বাচিত ফাইলটি স্ক্রিপ্টের একটি আর্গুমেন্ট হিসাবে পাস করা হয়। বেশিরভাগ ক্ষেত্রে এরকম কিছু দ্বারা:

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

... পাইথন 3 ব্যবহার করে, এটি সবচেয়ে সহজ আকারে।

আপনি যদি এটি দ্বারা প্রতিস্থাপন করেন:

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"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.