জিনোমে সক্রিয় উইন্ডো প্রক্রিয়া / শিরোনাম পুনরুদ্ধার করা সম্ভব?


28

জিনোম 2 ডেস্কটপে বর্তমান সক্রিয় (ফোকাসড) উইন্ডো তথ্য পাওয়ার জন্য আমার একটি সমাধান দরকার। আমি বেশিরভাগ সেই উইন্ডো এবং উইন্ডো শিরোনামটি প্রক্রিয়ায় আগ্রহী।

এটা কি সম্ভব?

সমাধান:

উইন্ডো শিরোনাম প্রাপ্ত:

xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1

প্রক্রিয়া নাম পাওয়া:

ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'

বা:

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm

উত্তর:


17

আপনি এক্সডটুল ব্যবহার করতে পারেন , একটি বহুমুখী এক্স উইন্ডো অটোমেশন সরঞ্জাম।

focused_window_id=$(xdotool getwindowfocus)
active_window_id=$(xdotool getactivewindow)
active_window_pid=$(xdotool getwindowpid "$active_window_id")

(আমি জানি না কেন দৃষ্টি নিবদ্ধ করা এবং সক্রিয় মধ্যে পার্থক্য কি।)

(আমি ভেবেছিলাম wmctrl এটি করতে পারে, তবে দৃশ্যত তা করতে পারে না not)


26

এটি এর মতোই সহজ:

xdotool getactivewindow getwindowname

শুভকামনা আশা করি এটি আপনার পক্ষে কাজ করে!


এটি কাজ করে, কেউ কেন এটি নিম্নোক্ত হয়েছিল তা ব্যাখ্যা করতে পারেন?
lfzawacki

8

সহজ (আইএমও) ওপি এর সমাধান চেয়ে (অর্থাত ছাড়া ps, grepএবং awk), প্রক্রিয়া নাম পেতে হবে:

cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm

অথবা আপনি যদি লাইনের সমাপ্তি চান:

echo $(cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm)

হ্যাঁ, দুর্দান্ত cat /proc/(এবং তাত্ক্ষণিকভাবে দ্রুত, কারণ এটি সম্পূর্ণ psআউটপুট গ্রেপিং জড়িত না )। আমি এটি প্রশ্নের সংস্থার সমাধানে যুক্ত করেছি, যাতে ভবিষ্যতের ব্যবহারকারীরা এটি সন্ধান করতে সক্ষম হবেন।
রোগাচ

4

এক্সউইনিনফো কমান্ডটি ব্যবহার করে দেখুন, http://www.xfree86.org/4.2.0/xwininfo.1.html , এটি অবশ্যই উইন্ডো শিরোনামটি প্রদান করে এবং প্রক্রিয়া যতদূর যায়, ঠিক আছে ...

এক্স এটিকে একটি আইডি নির্ধারণ করেছে এবং উইন্ডোটির প্যারেন্ট পিআইডি হয়ে গেছে এবং এটি ডিফল্টরূপেও গোপন করবে, সুতরাং ধরে নিই যে জেনোম NET_WM_PID সমর্থন করেছে, যেমন 2001 থেকে এই প্যাচটি এটি ইঙ্গিত করে যে, http://mail.gnome.org/ সংরক্ষণাগার / gtk-devel-list / 2001-অক্টোবর / msg00238.html , তারপরে আমরা এই পোস্টটি পর্যালোচনা করতে পারি, http://www.mail-archive.com/devel@xfree86.org/msg05809.html , যেখানে লেখক একটি লিখেছেন উইন্ডো আইডিটিকে পিআইডি, ভয়েলাতে রূপান্তর করতে সংক্ষিপ্ত সি প্রোগ্রাম।


তবে মনে হয় এটির xwininfoজন্য আমাকে প্রয়োজনীয় উইন্ডোটি নিজেই নির্বাচন করতে হবে। আমি বাশ থেকে ফোকাসযুক্ত উইন্ডোটি পাওয়ার একটি উপায় আশা করি।
রোগাচ

কিছু হিসাবে, `এক্সউইনিনফো-রুট-বাচ্চাদের | grep -oEi 'উইন্ডো আইডি: (? [0-9a-zA-Z] +) | grep -oEi '(? 0-9a-zA-Z)' - সম্পাদনা করুন: আমার আঙুলটি পিছলে গেল, উইন্ডো আইডির জন্য আমার রেজেক্সটি খারাপ ছিল। পরিবর্তিত রেফারেন্সের জন্য এই অন্যান্য সাইটটি দেখুন: davygoat.com/software/rizzle/How_it_works.html
রোয়ারবোট

এই কমান্ডটি কেবল "রুট" উইন্ডো আইডি দেয়, এবং
সক্রিয়টি

1

আমি জানি প্রশ্নটি পুরানো, তবে আমি xpropএখানেও উল্লেখ করা উচিত বলে মনে করি । এটি এক্স এর অধীনে সহজেই পাওয়া যায় It এটি হয় ইন্টারেক্টিভ উপায়ে ব্যবহার করা যেতে পারে:

  1. xpropতারপরে মাউস কার্সারটি ব্যবহার করতে চান এমন উইন্ডোটি টাইপ করুন এবং নির্বাচন করুন
  2. WM_NAMEআপনাকে উইন্ডোর শিরোনাম _NET_WM_PIDদেয়, পিড দেয়

অথবা xpropপাসিং -idবা -nameবিকল্পের মাধ্যমে আপনার কোন উইন্ডোটি দরকার তা আপনি সরাসরি বলতে পারেন । awkআপনি ব্যবহার করে সক্রিয় উইন্ডো আইডি পেতে এবং এটি আবার xprop( এখানে থেকে নেওয়া ) এটি পাস করতে পারেন :

xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}")

অবশেষে, আপনার প্রিয় সরঞ্জামটি ব্যবহার করে eg (যেমন grepবা sed) আপনি প্রয়োজনীয় মানগুলি গ্রেপ-আউট করতে পারেন। উদাহরণস্বরূপ pidউপরের কমান্ডের আউটপুট জন্য পাইপ করা যেতে পারে sed:sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'

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