টার্মিনালে আমি কীভাবে কোনও ফাইল বা ফোল্ডারের আইকনটি পরিবর্তন বা সেট করতে পারি, আমাকে কী স্ক্রিপ্টিং ভাষা ব্যবহার করতে হবে?
টার্মিনালে আমি কীভাবে কোনও ফাইল বা ফোল্ডারের আইকনটি পরিবর্তন বা সেট করতে পারি, আমাকে কী স্ক্রিপ্টিং ভাষা ব্যবহার করতে হবে?
উত্তর:
আপনার বিকাশকারী সরঞ্জাম ইনস্টল করা দরকার এবং তারপরে নিম্নলিখিতটি কাজ করতে পারে। এটি গ্রাফিক গ্রহণ করে icon.pngএবং এটি প্রয়োগ করে file.ext।
# Take an image and make the image its own icon:
sips -i icon.png
# Extract the icon to its own resource file:
/Developer/Tools/DeRez -only icns icon.png > tmpicns.rsrc
# append this resource to the file you want to icon-ize.
/Developer/Tools/Rez -append tmpicns.rsrc -o file.ext
# Use the resource to set the icon.
/Developer/Tools/SetFile -a C file.ext
# clean up.
rm tmpicns.rsrc
# rm icon.png # probably want to keep this for re-use.
Rez -appendনিয়ে কাজ করার সময় আমার সমস্যা হচ্ছে .avi। ### Rez - Fatal error trying to open the resource file "Video.avi" for writing.কোন ধারণা?
$PATH( /usr/binপ্রকৃত সরঞ্জামগুলি কোথায় সন্ধান করতে পারে সেই স্টাবগুলিতে ) রয়েছে, এবং /Developer/Toolsআর নেই, সুতরাং আপনার কেবল তাদের ফাইলের নাম অনুসারে আবেদন করা উচিত; যেমন, হাতের ক্ষেত্রে যেমন ঠিক তেমন Rezএবং DeRez।
বেশ কয়েক বছরের দুরত্বের সুবিধার সাথে:
user588 এর উত্তর এবং koiyu এর উত্তর ভাল কাজ, কিন্তু তারা ইউটিলিটি উপর নির্ভর ( Rez, DeRez, এবং SetFile) যে:
Rezএবং DeRez, কারণ তারা কার্বনের সাথে সম্পর্কিত)অ্যাসিকোনিকিলগুলি আকর্ষণীয় দেখায় তবে আর সংকলন করবে না (ওএসএক্স 10.10.4 হিসাবে) ।
অতএব আমি সিএলআইfileicon তৈরি করেছি , যা একটি প্রাথমিক ওএসএক্স মেশিনে কাজ করা উচিত (কোনও পূর্বশর্ত নেই) ; এটি একটি ব্যাশ প্রাথমিকভাবে উপর ভিত্তি করে স্ক্রিপ্ট হয় xattr, xxdএবং একটি এমবেডেড পাইথন স্ক্রিপ্ট যে কোকো, সৌজন্যে আহ্বান এই সহায়ক উত্তর ।
এটি ম্যাকোস 10.13 (উচ্চ সিয়েরা) এপিএফএস ভলিউম সহ ফাইল বা ফোল্ডারগুলির জন্য / থেকে কাস্টম আইকনগুলি সেট / মুছে ফেলার / নিষ্কাশন করার অনুমতি দেয় ।
আপনি নিম্নলিখিত হিসাবে এটি ইনস্টল করতে পারেন:
[sudo] npm install -g fileiconfileicon(এই লিঙ্কে বর্তমান থাকবে)।chmod +x fileicon।$PATHযেমন )।/usr/local/binsudoব্যবহারের তথ্য এখানে; সম্পূর্ণ তথ্যের জন্য, ম্যানুয়ালটি দেখুন :
$ fileicon -h
Set a custom icon for a file or folder:
fileicon set <fileOrFolder> <imageFile>
Remove a custom icon from a file or folder:
fileicon rm <fileOrFolder>
Get a file or folder's custom icon:
fileicon get [-f] <fileOrFolder> [<iconOutputFile>]
Test if a file or folder has a custom icon:
fileicon test <fileOrFolder>
-q ... silence status output
Standard options: --help, --man, --version, --home
fileicon --man)।
curl -L http://git.io/n-install | bash।
fileicon , যা এখনও কাজ করে (এবং বাস্তবে তৈরি হয়েছিল, কারণ osxiconutilsএখন আর কাজ করে না) - আমি উত্তরটি আপডেট করেছি আরও পরিষ্কার করার জন্য ।
আমি প্রায় , এই একটি খয়রাত শুরু করেছি কারণ আমি একটি আইকন পরিবর্তন করার জন্য পরিচালনা করা হয়নি ফোল্ডারের @ ব্যবহার mankoff এর উত্তর । তবে আমি একটি সমাধান খুঁজে পেয়েছি।
ফোল্ডারের আইকন পরিবর্তন করতে আপনি ফোল্ডারের দিকে নির্দেশ করবেন না Rez -append tmp.rsrcতবে ফোল্ডারের Icon\rঅভ্যন্তরে একটি বিশেষ ফাইল। আপনি যদি আগে ফোল্ডারে কোনও কাস্টম আইকন সেট না করে থাকেন তবে ফাইলটি সম্ভবত উপস্থিত থাকবে না তবে Rezএটি it দ্য ফ্লাইতে তৈরি করে। Icon\rফাইলটি মোছা কাস্টম আইকনটিকে সরিয়ে ফেলবে, তাই দুর্ঘটনা রোধে এটি লুকিয়ে রাখা ভাল।
মানকফের উত্তরের এই পরিবর্তনগুলি:
# Append a resource to the folder you want to icon-ize.
Rez -append tmpicns.rsrc -o $'myfolder/Icon\r'
# Use the resource to set the icon.
SetFile -a C myfolder/
# Hide the Icon\r file from Finder.
SetFile -a V $'myfolder/Icon\r'
রুবি ছাড়াও এখানে পাইথন সংস্করণ রয়েছে:
#!/usr/bin/env python
import Cocoa
import sys
Cocoa.NSWorkspace.sharedWorkspace().setIcon_forFile_options_(Cocoa.NSImage.alloc().initWithContentsOfFile_(sys.argv[1].decode('utf-8')), sys.argv[2].decode('utf-8'), 0) or sys.exit("Unable to set file icon")
./set-image.py image.png myfile
ম্যাক ওএসে প্রাক-ইনস্টলড পাইথনটির ইতিমধ্যে পাইওবিজেসি রয়েছে যাতে আপনাকে কোনও প্যাকেজ ইনস্টল করতে হবে না।
পরীক্ষা করে দেখুন setfileicon(উৎস কোড) , একটি ইউটিলিটি ডেমিয়েন Bobillot দ্বারা সৃষ্টি করেছেন।
বাইনারিটি এখানে ডাউনলোড করুন: http://maxao.free.fr/telechargements/setfileicon.gz
ফাইলটি আনপ্যাক করার পরে, এটি কার্যকর করতে সক্ষম করুন:
chmod +x setfileicon
তারপরে আপনি এটি নীচে ব্যবহার করতে পারেন:
./setfileicon "my-icon.icns" "my-file-or-directory"
আমার একটি গিথুব প্রকল্প রয়েছে যেখানে আমি [শেল / ব্যাশ, পাইথন, পারল, রুবি, ইত্যাদি] স্ক্রিপ্টগুলি থেকে অ্যাপলস্ক্রিপ্ট "ড্রপলেট" তৈরি করি যা ফাইলের পথকে আর্গুমেন্ট হিসাবে গ্রহণ করে। আমি কোনও ফোল্ডারের আইকন পরিবর্তন করার জন্য এই বাশ ফাংশনটি লিখেছি (কারণ অ্যাপলস্ক্রিপ্ট বান্ডিলগুলি একটি .app এক্সটেনশন সহ ফোল্ডার)।
replace_icon(){
droplet="$1"
icon="$2"
if [[ "$icon" =~ ^https?:// ]]; then
curl -sLo /tmp/icon "$icon"
icon=/tmp/icon
fi
rm -rf "$droplet"$'/Icon\r'
sips -i "$icon" >/dev/null
DeRez -only icns "$icon" > /tmp/icns.rsrc
Rez -append /tmp/icns.rsrc -o "$droplet"$'/Icon\r'
SetFile -a C "$droplet"
SetFile -a V "$droplet"$'/Icon\r'
}
একবার সংজ্ঞায়িত হয়ে গেলে আপনি 2 টি যুক্তি দিয়ে ফাংশনটি কল করবেন:
replace_icon /path/to/AppleScript.app /path/to/icon.png
অথবা
replace_icon /path/to/AppleScript.app http://i.imgur.com/LmUvWqB.png
আপনি দেখতে পাচ্ছেন যে দ্বিতীয় তর্কটি আপনার সিস্টেমে কোনও চিত্র বা URL হতে পারে।
দ্রষ্টব্য: আমি যে ক্রেজি দেখায় $'/Icon\r'তা হ'ল কারণ আইকন ফাইলটির নামটি আক্ষরিক ক্যারেজ ফেরার সাথে শেষ হয় \r। নিজের সাথে দেখুন:
find my-applescript.app -maxdepth 1 | less -U
ধরে নিচ্ছি যে আমাদের কাছে ইতিমধ্যে আইকন-ফাইল রয়েছে। টেম্পোর রিসোর্স ফাইল তৈরি করুন যা আইকন-ফাইলকে নির্দেশ করে:
$ echo "read 'icns' (-16455) \"Icon.icns\";" >> Icon.rsrc
রিসোর্স ফাইলটিকে কোনও ফাইলে বর্ধিত বৈশিষ্ট্য "com.apple.ResourceFork" এর মান হিসাবে যুক্ত করুন:
$ Rez -a Icon.rsrc -o FileName.ext
ফাইলটির আইকনটি দেখান:
$ SetFile -a C FileName.ext
বর্তমান ফোল্ডারের অভ্যন্তরে একটি যাদু আইকন ফাইলটিতে "com.apple.ResourceFork" বর্ধিত বৈশিষ্ট্যের মান হিসাবে সংস্থান ফাইলটি যুক্ত করুন:
$ Rez -a Icon.rsrc -o Icon$'\r'
বর্তমান ফোল্ডারের আইকনটি দেখান:
$ SetFile -a C .
বর্তমান ফোল্ডারের ভিতরে ম্যাজিক আইকন ফাইলটি লুকান (ফাইন্ডারে লুকানো ফাইলগুলি দেখানোর / আড়াল করতে press টিপুন):
$ SetFile -a V Icon$'\r'
আইকন ডেটা বর্ধিত বৈশিষ্ট্য "com.apple.ResourceFork" এর মান হিসাবে সংরক্ষণ করা হয় (টার্মিনাল কমান্ড "xattr -p com.apple. রিসোর্সফোরক ফাইলনাম.সেক্সট" মানটি মুদ্রণ করে)। ফোল্ডারের জন্য ফোল্ডারের অভ্যন্তরে যাদু (যা খালি এবং লুকানো রয়েছে) ফাইল রয়েছে Icon$'\r'। প্ল্যান টেক্সট রিসোর্স ফাইলে বর্ধিত বৈশিষ্ট্য "com.apple.ResourceFork" থেকে আইকন ডেটা বের করতে (যেখান থেকে আমরা সঠিক আইকনস-ধরণের সনাক্তকারী "-16455" জানি):
$ DeRez -only icns FileWithIcon.ext > Icon.rsrc
$ DeRez -only icns /Folder/With/Icon/Icon$'\r' > Icon.rsrc
ম্যাকোএস 10.13 এর অধীনে হাই সিয়েরা কমান্ড $ sips -i ImageFile.icns/png/jpgত্রুটি উত্পন্ন করে "--addIcon আর সমর্থিত নয়"। এই ইমেজ ফাইলটির বিষয়বস্তু ব্যবহার করে এই ফাইলটিতে নিজেই "-i" এর অর্থ "--addIcon" বর্ধিত বৈশিষ্ট্য "com.apple.ResourceFork" হিসাবে যুক্ত করা হবে।
আর একটি বিকল্প হ'ল ম্যাকরুবি ব্যবহার করা:
/usr/local/bin/macruby -e 'framework "Cocoa";NSWorkspace.sharedWorkspace.setIcon(NSImage.alloc.initWithContentsOfFile("/tmp/a.png"),forFile:"/tmp/file",options:0)'
আপনি http://macruby.org থেকে ম্যাকরবির জন্য একটি ইনস্টলার ডাউনলোড করতে পারেন ।
আশ্চর্যের বিষয় হল, সেরা সমাধানটি অ্যাপলের নিজস্ব সরঞ্জামগুলি ব্যবহার না করে পাইথন কোড ব্যবহার করা বলে মনে হচ্ছে কারণ এর বিভিন্ন সুবিধা রয়েছে যার দ্বারা সীমাবদ্ধ নেই:
হালনাগাদ
এখন (ম্যাকস সিয়েরায়) @ কোইউয়ের উত্তরটি কাজ করে বলে মনে হচ্ছে, তাই আপনি উত্স ফোল্ডার থেকে আপনার গন্তব্য ফোল্ডারে আইকনটি অনুলিপি করতে এই দ্বি-লাইনার ব্যবহার করতে পারেন:
#!/bin/sh
DeRez -only icns $1/Icon$'\r' > icon.rsrc; Rez -a icon.rsrc -o $2/Icon$'\r'
SetFile -a C $2; SetFile -a V $2/Icon$'\r'; rm icon.rsrc
সাম্প্রতিক ম্যাকোস সংস্করণে (10.14) sips -i icon.pngএকটি --addIcon is no longer supportedত্রুটি পাবেন।
এটি বিকাশকারী সরঞ্জাম ইনস্টল করা প্রয়োজন। এটি গ্রাফিকটি গ্রহণ করে Icon.pngএবং file.extএটি ব্যবহার করে যেমন ব্যবহারকারীর 588 এর উত্তর :
# Covert Icon.png to tempicons.icns:
sips -s format icns Icon.png --out tmpicns.icns
# Create temp resource file which points to tempicons.icns:
echo "read 'icns' (-16455) \"tmpicns.icns\";" >> tmpicns.rsrc
# append this resource to the file you want to icon-ize.
Rez -a tmpicns.rsrc -o file.ext
# Use the resource to set the icon.
SetFile -a C file.ext
# Clean up
rm tempicons.icns && rm tmpicns.rsrc
পাইওবিজেসি ব্যবহার করে পাইথন সমাধানের মতো, এটি কেবলমাত্র অ্যাপলস্ক্রিপ্ট (যা পাইথন এবং অন্যান্য স্ক্রিপ্টিং ভাষার পরিবর্তে 10.15 ক্যাটালিনায় অবচিত হয় না) দিয়ে সম্পন্ন করা যায়।
আমি এখানে গিটহাবে কীভাবে এটি করব তার একটি উদাহরণ পেয়েছি:
#!/usr/bin/env osascript use framework "AppKit" -------------------------------------------------------------------------------- # PROPERTY DECLARATIONS: property this : a reference to current application property NSWorkspace : a reference to NSWorkspace of this property NSImage : a reference to NSImage of this -------------------------------------------------------------------------------- # IMPLEMENTATION: on run argv set icon to item 1 of argv set target to item 2 of argv setIcon to icon for target end run -------------------------------------------------------------------------------- # HANDLERS: to setIcon to iconPath for filePath set sharedWorkspace to NSWorkspace's sharedWorkspace() set newImage to NSImage's alloc() set icon to newImage's initWithContentsOfFile:iconPath set success to sharedWorkspace's setIcon:icon forFile:filePath options:0 end setIcon
অ্যাপলস্ক্রিপ্ট পড়া সহজ নয়, তবে দৃশ্যত AppKit ফ্রেমওয়ার্কের মাধ্যমে এটি করার জন্য উদ্দেশ্য-সি কোড অ্যাক্সেস করা সম্ভব।