চলমান এক্স প্রোগ্রামের আইকনটি কীভাবে ডাম্প করবেন?


9

কোন চলমান এক্স প্রোগ্রামের আইকন পাওয়ার কোনও উপায় আছে? আপনি যখন উইন্ডোজের মধ্যে স্যুইচ করেন, আপনি এটির আইকন দেখতে পেতেন, উদাহরণস্বরূপ xfwm4 এর মাধ্যমে।


অপেক্ষা করুন, আপনি কি এটি শেল (কোনও ফাইলের মধ্যে) বা সি ++ এর মাধ্যমে চান?
ববি

@ ববি যা কাজ করে ..
ডেইজি

উত্তর:


9

এটি আমার পক্ষে কাজ করে। সমস্ত অ্যাপ্লিকেশন এবং সমস্ত উইন্ডো পরিচালকদের সাথে কাজ নাও করতে পারে। pamবিন্যাস, অন্তত করে ImageMagick দ্বারা সমর্থিত তাই আপনি এটি দিয়ে দেখতে পারেন displayএবং তা অন্যান্য ফরম্যাটের রূপান্তর যদি প্রয়োজন হতে convert:

xprop -notype 32c _NET_WM_ICON |
  perl -0777 -pe '@_=/\d+/g;
    printf "P7\nWIDTH %d\nHEIGHT %d\nDEPTH 4\nMAXVAL 255\nTUPLTYPE RGB_ALPHA\nENDHDR\n", splice@_,0,2;
    $_=pack "N*", @_;
    s/(.)(...)/$2$1/gs' > icon.pam

(এবং আপনি যে উইন্ডোটি থেকে আইকনটি পেতে চান তাতে ক্লিক করুন, এক্সপ্রপের -idবিকল্পটিও দেখুন)

ধারণাটি হল 32 বিট দশমিক পূর্ণসংখ্যার তালিকা হিসাবে সম্পত্তি পেতে xprop ব্যবহার করুন এবং এটিকে গ্রাফিক্স ফর্ম্যাটে রূপান্তর করতে পার্ল ব্যবহার করুন (সরলতার জন্য পাম এখানে নির্বাচিত হয়েছে যদিও আমাকে বাইটগুলি পুনরায় অর্ডার করতে হয়েছিল যেহেতু _NET_WM_ICON এআরজিবি রয়েছে যখন প্যাম আরজিবিএ)।

( প্যাম ফর্ম্যাট সম্পর্কে একটি নোট । এটি নেটপবিএম ফর্ম্যাট, নেটপবিএম একটি উপযোগযোগ্য ইউনিক্স চিত্রের ম্যানিপুলেশন টুলবক্স However তবে বিভিন্ন ইস্যুগুলির কারণে, বেশিরভাগ লাইসেন্সিং, নতুন নেটপিবিএম সংস্করণগুলি ডেবিয়ান দ্বারা প্যাকেজ নয় এবং ফলস্বরূপ উবুন্টুর মতো ডেরাইভেটিভস ভাল, যার মানে পাম রূপান্তর ইউটিলিটি অধিকাংশ উপস্থিত না আছে। অন্যান্য সিস্টেমের নতুন netpbm আছে, আপনি পাইপ আউটপুট উপরে পারেন pamrgbatopngএকটি PNG চিত্র জেনারেট করতে)


দুর্দান্ত, আমি আইকনটি ফেলে দিয়ে এটিকে পিএনজি ফর্ম্যাটে রূপান্তর করেছি।
ডেইজি

0

আমি এই ব্লগ পোস্ট হোঁচট খাচ্ছি। এটি থেকে উদ্ধৃতি:

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


0

লিনাক্স ব্যবহার libwnck এটি করতে পারেন

#define WNCK_I_KNOW_THIS_IS_UNSTABLE = 1

#include <libwnck/libwnck.h>

int main(int argc,
         char **argv) {
    WnckScreen *screen;

    gdk_init(&argc, &argv);

    screen = wnck_screen_get_default();

    wnck_screen_force_update(screen);

    auto win = wnck_window_get(127926341); // 127926341 is window id, it can be get by linux cli xdotool or wmctrl or other many clis
    GdkPixbuf *r = wnck_window_get_icon(win);
    GError *err = NULL;
    gdk_pixbuf_save(r, "/tmp/prpr.png", "png", &err, "quality", "100", NULL);
    return 0;
}

আমি এই পৃষ্ঠা থেকে এটি পেতে

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