সূচিপত্র:
- ভূমিকা
- স্থাপন
- ব্যবহার
- সোর্স কোড
1। পরিচিতি
এই সমাধানটিতে দুটি স্ক্রিপ্ট থাকে - একটি ট্যাগ করার জন্য, একটি নির্দিষ্ট ট্যাগের অধীনে ফাইলগুলির তালিকা পড়ার জন্য। উভয়কেই থাকতে হবে ~/.local/share/nautilus/scripts
এবং যে কোনও ফাইলের নটিলাস ফাইল ম্যানেজারে ডান-ক্লিকের মাধ্যমে এবং স্ক্রিপ্টস সাবমেনুতে নেভিগেট করতে হবে। প্রতিটি স্ক্রিপ্টের সোর্স কোডটি এখানে পাশাপাশি গিটহাবে সরবরাহ করা হয়েছে
2. ইনস্টলেশন
উভয় স্ক্রিপ্টগুলিতে সংরক্ষণ করতে হবে ~/.local/share/nautilus/scripts
, যেখানে ~
ব্যবহারকারীর হোম ডিরেক্টরি রয়েছে এবং এটি দিয়ে কার্যকর করা যায় chmod +x filename
। সহজ ইনস্টলেশন জন্য, নিম্নলিখিত বাশ স্ক্রিপ্ট ব্যবহার করুন:
#!/bin/bash
N_SCRIPTS="$HOME/.local/share/nautilus/scripts"
cd /tmp
rm master.zip*
rm -rf nautilus_scripts-master
wget https://github.com/SergKolo/nautilus_scripts/archive/master.zip
unzip master.zip
install nautilus_scripts-master/tag_file.py "$N_SCRIPTS/tag_file.py"
install nautilus_scripts-master/read_tags.py "$N_SCRIPTS/read_tags.py"
৩. ব্যবহার:
ফাইল ট্যাগ করা :
নটিলাস ফাইল ম্যানেজারে ফাইল নির্বাচন করুন, তার উপর ডান ক্লিক করুন এবং স্ক্রিপ্টস সাবমেনুতে নেভিগেট করুন। নির্বাচন করুন tag_file.py
। হিট Enter
প্রথমবার আপনি যখন এটি স্ক্রিপ্টটি রান, কোন কনফিগারেশন ফাইল হবে, সুতরাং আপনি এই দেখতে পাবেন:
পরের বার, যখন আপনি ইতিমধ্যে কিছু ফাইল ট্যাগ করেছেন, আপনি এমন একটি পপআপ দেখতে পাবেন যা আপনাকে একটি ট্যাগ নির্বাচন করতে এবং / অথবা একটি নতুন যুক্ত করতে দেয় (এইভাবে আপনি একাধিক ট্যাগের অধীনে ফাইলগুলি রেকর্ড করতে পারেন)। OKএই ট্যাগটিতে ফাইলগুলি যুক্ত করতে হিট করুন। দ্রষ্টব্য : "|" থাকা এড়ানো ট্যাগ নামে প্রতীক।
স্ক্রিপ্ট সব কিছু রেকর্ড করে ~/.tagged_files
। এই ফাইলটি মূলত একটি json
অভিধান (যা নিয়মিত ব্যবহারকারীদের যত্ন নেওয়া উচিত নয়, তবে এটি প্রোগ্রামারদের জন্য সুবিধাজনক :))। এই ফাইলটির ফর্ম্যাটটি হ'ল:
{
"Important Screenshots": [
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-10-01 09-15-46.png",
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-09-30 18-47-12.png",
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-09-30 18-46-46.png",
"/home/xieerqi/\u56fe\u7247/Screenshot from 2016-09-30 17-35-32.png"
],
"Translation Docs": [
"/home/xieerqi/Downloads/908173 - \u7ffb\u8bd1.doc",
"/home/xieerqi/Downloads/911683\u7ffb\u8bd1.docx",
"/home/xieerqi/Downloads/914549 -\u7ffb\u8bd1.txt"
]
}
আপনি যদি কখনও কোনও ফাইল "আনট্যাগ" করতে চান তবে কেবল সেই তালিকা থেকে একটি প্রবেশিকা মুছুন। ফর্ম্যাট এবং কমাতে মন দিন।
ট্যাগ দ্বারা অনুসন্ধান :
এখন আপনার কাছে ~/.tagged_files
ফাইলগুলির একটি দুর্দান্ত ডাটাবেস রয়েছে, আপনি হয় সেই ফাইলটি পড়তে পারেন বা read_tags.py
স্ক্রিপ্টটি ব্যবহার করতে পারেন ।
নটিলাসের যে কোনও ফাইলের উপর ডান ক্লিক করুন (যা আসলেই কিছু যায় আসে না) নির্বাচন করুন read_tags.py
। হিটEnter
আপনি কোন ট্যাগটি অনুসন্ধান করতে চান তা জানতে একটি পপআপ আপনাকে দেখতে পাবে:
একটি নির্বাচন করুন, ক্লিক করুন OK। আপনি নির্বাচিত ট্যাগটির জন্য ফাইল থাকতে চান তা একটি তালিকা ডায়ালগ দেখতে পাবেন। আপনি যে কোনও একক ফাইল নির্বাচন করতে পারেন এবং এটি সেই ফাইল ধরণের জন্য নির্ধারিত একটি ডিফল্ট প্রোগ্রামের সাথে খোলে।
৪. উত্স কোড:
tag_file.py
:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: Serg Kolo
# Date: Oct 1st, 2016
# Description: tag_file.py, script for
# recording paths to files under
# specific , user-defined tag
# in ~/.tagged_files
# Written for: http://askubuntu.com/q/827701/295286
# Tested on : Ubuntu ( Unity ) 16.04
from __future__ import print_function
import subprocess
import json
import os
import sys
def show_error(string):
subprocess.call(['zenity','--error',
'--title',__file__,
'--text',string
])
sys.exit(1)
def run_cmd(cmdlist):
""" Reusable function for running external commands """
new_env = dict(os.environ)
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist, env=new_env)
except subprocess.CalledProcessError:
pass
else:
if stdout:
return stdout
def write_to_file(conf_file,tag,path_list):
# if config file exists , read it
data = {}
if os.path.exists(conf_file):
with open(conf_file) as f:
data = json.load(f)
if tag in data:
for path in path_list:
if path in data[tag]:
continue
data[tag].append(path)
else:
data[tag] = path_list
with open(conf_file,'w') as f:
json.dump(data,f,indent=4,sort_keys=True)
def get_tags(conf_file):
if os.path.exists(conf_file):
with open(conf_file) as f:
data = json.load(f)
return '|'.join(data.keys())
def main():
user_home = os.path.expanduser('~')
config = '.tagged_files'
conf_path = os.path.join(user_home,config)
file_paths = [ os.path.abspath(f) for f in sys.argv[1:] ]
tags = None
try:
tags = get_tags(conf_path)
except Exception as e:
show_error(e)
command = [ 'zenity','--forms','--title',
'Tag the File'
]
if tags:
combo = ['--add-combo','Existing Tags',
'--combo-values',tags
]
command = command + combo
command = command + ['--add-entry','New Tag']
result = run_cmd(command)
if not result: sys.exit(1)
result = result.decode().strip().split('|')
for tag in result:
if tag == '':
continue
write_to_file(conf_path,tag,file_paths)
if __name__ == '__main__':
main()
read_tags.py
:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Author: Serg Kolo
# Date: Oct 1st, 2016
# Description: read_tags.py, script for
# reading paths to files under
# specific , user-defined tag
# in ~/.tagged_files
# Written for: http://askubuntu.com/q/827701/295286
# Tested on : Ubuntu ( Unity ) 16.04
import subprocess
import json
import sys
import os
def run_cmd(cmdlist):
""" Reusable function for running external commands """
new_env = dict(os.environ)
new_env['LC_ALL'] = 'C'
try:
stdout = subprocess.check_output(cmdlist, env=new_env)
except subprocess.CalledProcessError as e:
print(str(e))
else:
if stdout:
return stdout
def show_error(string):
subprocess.call(['zenity','--error',
'--title',__file__,
'--text',string
])
sys.exit(1)
def read_tags_file(file,tag):
if os.path.exists(file):
with open(file) as f:
data = json.load(f)
if tag in data.keys():
return data[tag]
else:
show_error('No such tag')
else:
show_error('Config file doesnt exist')
def get_tags(conf_file):
""" read the tags file, return
a string joined with | for
further processing """
if os.path.exists(conf_file):
with open(conf_file) as f:
data = json.load(f)
return '|'.join(data.keys())
def main():
user_home = os.path.expanduser('~')
config = '.tagged_files'
conf_path = os.path.join(user_home,config)
tags = get_tags(conf_path)
command = ['zenity','--forms','--add-combo',
'Which tag ?', '--combo-values',tags
]
tag = run_cmd(command)
if not tag:
sys.exit(0)
tag = tag.decode().strip()
file_list = read_tags_file(conf_path,tag)
command = ['zenity', '--list',
'--text','Select a file to open',
'--column', 'File paths'
]
selected = run_cmd(command + file_list)
if selected:
selected = selected.decode().strip()
run_cmd(['xdg-open',selected])
if __name__ == '__main__':
try:
main()
except Exception as e:
show_error(str(e))