অ-ডিফল্ট স্থিতি মেনুগুলি (ওরফে সূচক) দ্বারা ব্যবহৃত আইকন ফাইলগুলি কীভাবে খুঁজে পাব?


9

আমি কিছু অ-ডিফল্ট স্থিতি মেনু দ্বারা ব্যবহৃত আইকনগুলির অবস্থান (যা অ্যাপ্লিকেশন সূচক বা সূচক অ্যাপলেটও বলা হয়) খুঁজে পেতে চাই।

এখানে চিত্র বর্ণনা লিখুন

এই আইকন চিত্র ফাইল কোথায় অবস্থিত?

আমার স্ক্রিনশটে আমার নিজস্ব ক্লাউড এবং রেডিওট্রে রয়েছে তবে আমি এই সাধারণ আইকনগুলির জন্য নির্দিষ্ট না করে একটি সাধারণ উত্তর চাই please আমি ফাইলের নাম বা ফাইলের প্রকারগুলি জানি না তাই অনুসন্ধান করা কঠিন।

উত্তর:


9

অ-ডিফল্ট নির্দেশক আইকনগুলির জন্য ডিফল্ট অবস্থান?

এই আইকনগুলি সংরক্ষণ করা হয় এমন কোনও ডিফল্ট অবস্থান নেই। যে কোনও অ্যাপ্লিকেশন (-ডেভলপার) এটি উপযুক্ত যেখানে বিবেচনা করা হয় সেগুলি সেগুলি সংরক্ষণ করতে পারে।

তবে , সুসংবাদটি হ'ল সূচকগুলি সাধারণত ফাইল এবং চিত্রের অন্তহীন তালিকা ইনস্টল করে না। কমান্ডের আউটপুটটি সন্ধান করে (কোডটি সন্ধান করা বাদ দিয়ে) আমরা আমাদের অনুসন্ধান সীমাবদ্ধ করতে পারি:

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একই জিনিস করে?
কাজ ওল্ফ

@ কাজজ ওল্ফ আপাতদৃষ্টিতে এখানে উল্লেখ করা হয়নি: manpages.ubuntu.com/manpages/precise/man1/dpkg.1.html
জ্যাকব ভ্লিজম

ধন্যবাদ, এটি রেডিওট্রে আইকনগুলি সন্ধানের জন্য সহায়ক। আমি আমার স্ক্রিনশট থেকে নিজস্ব ক্লাউড মনোক্রোম আইকনটির পরে আছি ( এখানে গিটহাবের নিজস্বক্লাউড উত্স কোড থেকে উদাহরণস্বরূপ ) - এবং এটি ফলাফলের সাথে ফিরে আসে না dpkg-query -L। সঙ্গে খুঁজছেন find / -name state-ok -type fস্থগিত আছে বলে মনে হচ্ছে কিন্তু আমি এটা রাতারাতি চলমান ছেড়ে দেব।
টম ব্রসম্যান 19

@ টমব্রসম্যান আমি নিশ্চিত যে আমরা এটি খুঁজে পেতে পারি। আমি দেখতে নিজের ক্লাউড ইনস্টল করব।
জ্যাকব Vlijm

1
@ টমব্রসম্যান সার্ভারটি অস্থায়ীভাবে ডাউন হয়ে থাকতে পারে, আমি 404 -র কিছু অংশে ত্রুটি খুঁজে পাইনি .. ডাউনলোড করা .দেব ফাইলটি সন্ধান করে, নিজস্ব ক্লাউড /usr/share/icons/hicolor/<size>/apps যদিও বেশ কিছু আইকন ইনস্টল করে । দুর্ভাগ্যক্রমে, .deb ফাইলটি ইনস্টল হয় না: Errors were encountered while processing:আমি পরে আবার চেষ্টা করব ...
জ্যাকব ভ্লিজম

4

আইকন এবং তাদের সম্ভাব্য অবস্থানগুলি

নির্দেশক আইকন নিয়োগ করতে পারে এমন দুটি উপায় রয়েছে:

  • কাস্টম আইকন। এটি সাধারণত চলে যায় /usr/share/pixmaps/, যদিও এটি সম্ভব কিছু লেখক অন্য ডিরেক্টরিতে সূচক আইকন প্রেরণ করে। জ্যাকব ভিলিজ, যার উত্তর এই পৃষ্ঠায় রয়েছে এবং যিনি স্পেসভিউ সূচকটির লেখকও উদাহরণস্বরূপ, সেই সূচকটির জন্য আইকন স্থাপন করতে পছন্দ করেছেন /opt/spaceview/icon। আইকন এই লেখার সাথে সাথেই এটা সামান্য চতুর কিন্তু জটিল নয় - ব্যবহার dpkg -L <package name>বা cat /var/lib/dpkg/info/PACKAGE.listএবং একটি আইকন ফাইল অনুসন্ধান সঙ্গে .pngবা .svgএক্সটেনশান। এগুলি সর্বাধিক সাধারণ
  • স্ট্যান্ডার্ড, থিম-নির্দিষ্ট আইকন। এগুলি সাধারণত /usr/share/iconsফোল্ডারে পাওয়া যায় । উদাহরণস্বরূপ, আমার সূচকগুলিতে যেমন উদিস্ক সূচকগুলিতে, আমি প্রায়শই যা থাকি তার উপর নির্ভর করি /usr/share/icons/gnome, কারণ এগুলি স্ট্যান্ডার্ড এবং কোনও উবুন্টু ইনস্টলেশন নিয়ে আসে with যদি আপনি জিজ্ঞাসাবাদ থেকে কোনও আইকন খুঁজে না পান dpkg, তবে সম্ভাবনা হ'ল প্যাকেজটি কোনও মানক আইকন ব্যবহার করে।

উত্সে যাচ্ছি

পাইথন বা রুবিতে যদি কোনও সূচক লেখা থাকে তবে ক্লুগুলির জন্য উত্স কোডের সন্ধান করা তুলনামূলকভাবে সহজ হতে পারে, কারণ এগুলি স্ক্রিপ্টগুলি, এবং grepউত্স কোডের মাধ্যমে অনুসন্ধান করার জন্য এটি যথেষ্ট ব্যবহারযোগ্য । সি এবং ভালার মতো সংকলিত ভাষাগুলি সোর্স কোডের সাথে আসে না, তাই আপনি apt-get source package-nameপ্যাকেজটি যে কোনও জায়গায় পেয়েছেন বা সেখান থেকে নিতে হবে। (অ্যাডভেঞ্চারাস ব্যবহারকারীরা hexdumpএক্সিকিউটেবল ফাইলটি ব্যবহার করতে বা ডিকম্পিল করতে পারতেন , তবে আইএমএইচও এটি কেবল একটি আইকন সম্পর্কে কৌতূহলের জন্য খুব বেশি কাজ করে)।

দ্রষ্টব্য : যদি কোনও আইকন স্ট্যান্ডার্ড ডিরেক্টরিগুলির মধ্যে একটিতে বাস করে /usr/share/icons/বা যেমন /usr/share/pixmaps, সফ্টওয়্যারটির লেখক কোনও এক্সটেনশন ছাড়াই কেবল নাম অনুসারে আইকনটি কল করতে পারেন। উদাহরণস্বরূপ, আমার মধ্যে udisks-indicatorআমি এই লাইনটি স্ট্যান্ডার্ড আইকনগুলির একটিতে কল করতে ব্যবহার করি:

self.app.set_icon("drive-harddisk-symbolic")

অভাব .svgবা বর্ধনের বিষয়টি লক্ষ্য করুন .png। সুতরাং, এই ক্ষেত্রে, আমাদের আইকনটির একটি নাম রয়েছে এবং আমরা এটি লিনাক্সের স্ট্যান্ডার্ড কমান্ডগুলি ব্যবহার করে locateবা এটি সনাক্ত করতে পারি find

স্ট্যান্ডার্ড লিনাক্স সরঞ্জাম ব্যবহার করে অনুসন্ধান করুন

আপনি যদি আইকন অনুসন্ধানের জন্য সত্যই একটি আদেশ পেতে চান তবে কেবল এই সাধারণ সংমিশ্রণটি ব্যবহার করুন:

dpkg -L <Package name here> | xargs file  | grep -i image

এখানে একটি উদাহরণ। আমি একটি সত্যের জন্য জানি যে সূচক ডিস্কম্যান একটি কাস্টম আইকন ব্যবহার করে। সুতরাং এই আদেশ আমাদের কি বলে?

$ dpkg -L indicator-diskman | xargs file  | grep -i image                                                                
/usr/share/indicator-diskman/images:                    directory
/usr/share/indicator-diskman/images/drive-harddisk.svg: SVG Scalable Vector Graphics image
/usr/share/indicator-diskman/images/media-optical.png:  PNG image data, 64 x 64, 8-bit/color RGBA, non-interlaced
/usr/share/indicator-diskman/images/disks.png:          PNG image data, 64 x 64, 8-bit gray+alpha, non-interlaced
/usr/share/indicator-diskman/images/locked.png:         PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced
/usr/share/indicator-diskman/images/lock.svg:           SVG Scalable Vector Graphics image
/usr/share/indicator-diskman/images/unlocked.png:       PNG image data, 16 x 16, 8-bit/color RGBA, non-interlaced
/usr/share/indicator-diskman/images/media-eject.svg:    SVG Scalable Vector Graphics image
/usr/share/indicator-diskman/images/disk.png:           PNG image data, 32 x 32, 8-bit/color RGBA, non-interlaced
/usr/share/pixmaps/indicator-diskman.png:               PNG image data, 64 x 64, 8-bit gray+alpha, non-interlaced

/usr/share/pixmaps/indicator-diskman.pngসর্বশেষ চিত্রটি লক্ষ্য করুন , যা সূচকটি প্যানেলে আসলে প্রদর্শিত হয়।

এবং যদি সূচক একটি মানক আইকন ব্যবহার করে? স্পষ্টতই কোনও আউটপুট থাকবে না:

$ dpkg -L udisks-indicator | xargs file  | grep -i image                                                                 

$

উপসংহার

কোনও সেট স্ট্যান্ডার্ড না থাকায় আইকনগুলি যেখানে যায় সেখানে নির্দিষ্ট জায়গাগুলির সেট রয়েছে এবং আমরা dpkgপ্রতিটি নির্দিষ্ট প্যাকেজের সাথে কী ফাইল আসে সে সম্পর্কিত তথ্য জিজ্ঞাসা করতে পারি । পরিশেষে, সম্ভবত এটি সবচেয়ে প্রযুক্তিগত পরামর্শ নয়, তবে বিকাশকারীদের ইমেল প্রেরণ বা তাদের আইআরসি বা চ্যাট বন্ধ করে বিবেচনা করুন এবং কেবল তাদের জিজ্ঞাসা করুন "আরে, আপনার সূচকটি কোন আইকন ব্যবহার করে?" বিকাশকারীরা সাধারণত যারা তাদের সফ্টওয়্যার ব্যবহার করেন তাদের কাছ থেকে শুনে খুশি হন এবং দ্রুত প্রশ্নের উত্তর দিতে আপত্তি করবেন না।


ধন্যবাদ, এই উত্তরটিও খুব সহায়ক ছিল কিন্তু আমার নিজস্ব ক্লাউড ডেস্কটপ সিঙ্ক আইকনগুলির সাথে অদ্ভুত কিছু করছে এবং আমিও এটি আশা করি বলে আশা করি।
টম ব্রসম্যান

@ টমব্রসম্যান অদ্ভুত কিছু করে, আপনার অর্থ কি?
সের্গেই কলডিয়াজহনি

নিজস্ব ক্লাউডের ডেস্কটপ সিঙ্ক অ্যাপ্লিকেশনটি ব্যবহার করে না এমন বিস্তৃত আইকন ইনস্টল করে। আমি সেগুলি কাস্টমাইজ এবং প্রতিস্থাপনের আশা করেছিলাম তবে যেহেতু এটি উড়ে তাদের উত্পন্ন করে /tmpএটি ব্যবহারিক নয়। যদিও তারা ইনস্টলড আইকন সেট (গুলি) ব্যবহার করে তবে বেশিরভাগ অ্যাপ্লিকেশনের জন্য সেগুলি কাস্টমাইজ করা আপনার উত্তরটি সহজেই সহজ।
টম ব্রসম্যান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.