অ-ডিফল্ট নির্দেশক আইকনগুলির জন্য ডিফল্ট অবস্থান?
এই আইকনগুলি সংরক্ষণ করা হয় এমন কোনও ডিফল্ট অবস্থান নেই। যে কোনও অ্যাপ্লিকেশন (-ডেভলপার) এটি উপযুক্ত যেখানে বিবেচনা করা হয় সেগুলি সেগুলি সংরক্ষণ করতে পারে।
তবে , সুসংবাদটি হ'ল সূচকগুলি সাধারণত ফাইল এবং চিত্রের অন্তহীন তালিকা ইনস্টল করে না। কমান্ডের আউটপুটটি সন্ধান করে (কোডটি সন্ধান করা বাদ দিয়ে) আমরা আমাদের অনুসন্ধান সীমাবদ্ধ করতে পারি:
dpkg-query -L <packagename>
আমার উদাহরণে
dpkg-query -L placesfiles
এটি অন্যদের মধ্যে, নিম্নলিখিত চিত্রগুলি আউটপুট দেয়:
/opt/placesfiles/images/dir_icon.png
/opt/placesfiles/images/placesfiles64.png
/usr/share/pixmaps/placesfiles.png
... যা অনুসন্ধানকে বেশ সীমিত করে তুলবে।
মানুষের কাছ থেকে dpkg-query
:
-l, --list [package-name-pattern...]
List packages matching given pattern. If no package-name-pattern
is given, list all packages in /var/lib/dpkg/status, excluding
the ones marked as not-installed (i.e. those which have been
previously purged). Normal shell wildcard characters are allowed
in package-name-pattern. Please note you will probably have to
quote package-name-pattern to prevent the shell from performing
filename expansion. For example this will list all package names
starting with “libc6”:
রেডিওট্রেয়ের ক্ষেত্রে আমি নিম্নলিখিত .png
ফাইলগুলি (চলমান dpkg-query -L radiotray | grep png
) খুঁজে পেয়েছি :
/usr/share/radiotray/images/radiotray_connecting.png
/usr/share/radiotray/images/radiotray_on.png
/usr/share/radiotray/images/radiotray_off.png
/usr/share/radiotray/images/radiotray.png
/usr/share/pixmaps/radiotray.png
আমাদের যদি সত্যই খুঁজে বের করতে হবে তবে কোডটি সন্ধান করতে হবে
... আমরা "আইকন" স্ট্রিংয়ের ম্যাচের জন্য ইনস্টল করা ফাইলগুলি (অভ্যন্তরীণ) মাধ্যমে দেখতে পারি। সূচকগুলির মধ্যে অনেকগুলিই স্ক্রিপ্টগুলির একটিতে লিখিত হয়েছে- ভাষা (পছন্দ python
), যার অর্থ তারা খুব ভাল অনুসন্ধানে সক্ষম।
একটি উদাহরণ
আবার radiotray
উদাহরণ ব্যবহার করে
dpkg-query -L radiotray | xargs grep icon
আউটপুটে আমরা আও দেখতে পাই:
/usr/lib/python2.7/dist-packages/radiotray/SysTrayGui.py
self.icon.set_from_file(APP_ICON_CONNECT)
ফাইলটি সন্ধান করে SysTrayGui.py
আমরা দেখতে পাই:
from lib.common import APPNAME, APPVERSION, APP_ICON_ON, APP_ICON_OFF, APP_ICON_CONNECT, APP_INDICATOR_ICON_ON, APP_INDICATOR_ICON_OFF
এটি থেকে আমরা উপসংহারে পৌঁছাতে পারি যে উল্লিখিত আইকনগুলি common
(উপ) ডিরেক্টরিটির ভিতরে মডিউলটিতে সংজ্ঞায়িত হয়েছে lib
। (দেখুন এখানে কিভাবে পাইথন এটা মডিউল খুঁজে বের করে, বিভাগ সাবডিরেক্টরি )
এই মডিউলে, আমরা বিভাগটি পড়তে পারি:
# Media path
if os.path.exists(os.path.abspath('../data/images/')):
IMAGE_PATH = os.path.abspath('../data/images/')
else:
IMAGE_PATH = '%s/%s/images' % (datadir, APPDIRNAME)
# Images
APP_ICON = os.path.join(IMAGE_PATH, 'radiotray.png')
APP_ICON_ON = os.path.join(IMAGE_PATH, 'radiotray_on.png')
APP_ICON_OFF = os.path.join(IMAGE_PATH, 'radiotray_off.png')
APP_ICON_CONNECT = os.path.join(IMAGE_PATH, 'radiotray_connecting.gif')
APP_INDICATOR_ICON_ON = "radiotray_on"
APP_INDICATOR_ICON_OFF = "radiotray_off"
APP_INDICATOR_ICON_CONNECT = "radiotray_connecting"
... এবং আমরা এখানে ...
ব্যতিক্রমী পরিস্থিতি
আমার সমস্ত সূচককে ব্যবহারিক করে, আমি উপরের পদ্ধতি (গুলি) ব্যবহার করে সংশ্লিষ্ট আইকনগুলি সন্ধান করতে সক্ষম হয়েছি।
সম্ভব হতে দেখা যাচ্ছে, কোডের সাথে একসাথে একক এক্সিকিউটেবলের মধ্যে চিত্রগুলি সংকলন করতে। এটি ব্যাখ্যা করার দরকার নেই যে এ জাতীয় পরিস্থিতিতে আপনি পৃথক চিত্র পাবেন না, বা কোড সম্পাদনা এবং পুনরায় সংশোধন না করে আপনি সেগুলি প্রতিস্থাপন করতে সক্ষম হবেন না।
নিজস্ব ক্লাউডের কেসটি এমন ঘটনা বলে মনে হচ্ছে। উপরের পদ্ধতি (গুলি) ব্যবহার করে দেখানো হয়েছে ভিতরে ভিতরে আইকনগুলির একটি সেট ইনস্টল করা আছে /usr/share/icons/hicolor/<size>/apps
। এই আইকনগুলির কোনওটিই উবুন্টুতে নির্দেশক হিসাবে ব্যবহৃত হয় নি ।
ওপি এই প্রশ্নটি করার আগে (এবং পরে) বেশ কিছু কাজ করেছিলেন। তাদের মধ্যে একটি চালানো ছিল:
gdbus call --session --dest com.canonical.indicator.application --object-path /com/canonical/indicator/application/service --method com.canonical.indicator.application.service.GetApplications
... যা আমাদের বেশ কিছু দরকারী তথ্য দেয়। আউটপুট একটি বিভাগ অন্তর্ভুক্ত:
('146028888067', 2, 'org.kde.StatusNotifierItem-22055-1', '/StatusNotifierItem/menu', '/tmp/iconcache-50ePXx', '', '', '', 'owncloud', 'ownCloud')
ডিরেক্টরিটি অনুসন্ধান করে /tmp/iconcache-50ePXx
, আমি সূচকটি দ্বারা ব্যবহৃত সঠিক আইকনগুলি পেয়েছি:
... যা প্রমাণ করে যে এই আইকনগুলি উড়তে উত্পন্ন হয়েছে; নিজস্ব ক্লাউড বন্ধ করার ফলে ডিরেক্টরিটি এবং এর আইকনগুলি অদৃশ্য হয়ে যায়।
এই আইকনগুলি প্রতিস্থাপন করে সূচকের আইকনটি পরিবর্তন করা সম্ভব হয়েছিল:
যা প্রমাণ করে যে এগুলি হ'ল আমরা খুঁজছিলাম for
আমি নিজে যা করেছি তা স্বয়ংক্রিয় করার জন্য, স্ক্রিপ্ট / মোড়কের প্রয়োজন হবে, যেহেতু প্রত্যেকবার নিজস্ব ক্লাউড চালু হওয়ার সাথে সাথে তৈরি ডিরেক্টরিটির নাম পরিবর্তন করা হয়। সবচেয়ে সুবিধাজনক বিকল্পটি অবশ্যই হ'ল নিজস্ব ক্লাউড-ক্লায়েন্টের কোডটি পরিবর্তন করা হবে।
আমাদের আলোচনা এখানে দেখুন ।
চলবে...
dpkg -L
একই জিনিস করে?