এখানে ইউনিক্সের সাথে মেনে চলার আরেকটি সমাধান!
প্রথম দর্শনে, এটি আপনার মতো সুন্দর নয়, @ t7ko:
xdotool search --onlyvisible --class 'gvim' getwindowpid %@ | xargs -I{} xdotool search --all --pid {} --name 'TODO' getwindowgeometry | sed -r -n 's/.*Position: ([-0-9,+x]+) .*/\1/p'
তবে আমার সাথে সহ্য করুন! এর মধ্যে কিছু লুকানো সৌন্দর্য রয়েছে।
সংক্ষেপে, এটি
- গাছের কাঠামোর পরিবর্তে একটি লিনিয়ার কাঠামো রয়েছে , যেমন দুটি মাত্রার পরিবর্তে
- আরও সুপরিচিত শেল সিনট্যাক্স ব্যবহার করে ।
- আসলে আপনার প্রশ্নের উত্তর দেয়: এটি উইন্ডোটি সনাক্ত করে।
(এই পয়েন্টগুলি সুবিধাগুলি প্রসঙ্গে নির্ভর করে - আসুন এই দিকটি উপেক্ষা করুন * ))
ধাপে ধাপে বুঝতে আরও সহজ করতে আমি নীচের আরও কাঠামোগত বিন্যাসে একই কোডটি দেখাব।
তবে নোটটি ব্যাখ্যা করার জন্য ইন্ডেন্টেশনটি উল্লেখ করুন - এটি বাসা বাঁধতে বা এটি নির্দেশ করে না, সমস্ত এখনও লিনিয়ার ইউনিক্স পাইপলাইন is
একই কমান্ডটি কেবল পাইপগুলির পরে বিভক্ত ( |
):
xdotool search --onlyvisible --class 'gvim' getwindowpid %@ |
xargs -I{} xdotool search --all --pid {} --name 'TODO' getwindowgeometry |
sed -r -n 's/.*Position: ([-0-9,+x]+) .*/\1/p'
পূর্ণ কমান্ড উপরে দেখানো, পিক্সেল অবস্থান দেয় gvim
, উইন্ডো পিক্সেল স্থানাঙ্ক শীর্ষ আপেক্ষিক বর্তমান (সম্ভবত ভার্চুয়াল) নামে পর্দার কোণ বাম ফিরে x,y
, মত 42,433
, হয়তো বা -5375,-3809
যখন এটি চার ভার্চুয়াল স্ক্রীণ দ্বারা চার প্রথম উপর , এবং বর্তমানটি কোথাও ডানদিকে নীচে রয়েছে।
আপাতত, কেবলমাত্র একটি এক্স 11 উইন্ডো আইডি সন্ধানের জন্য আমি কমান্ডটি সংক্ষিপ্ত করব - সম্ভবত এটিই ওপি দ্বারা যা প্রয়োজন ছিল, নিশ্চিত নয়:
সংক্ষিপ্ত কমান্ড পাইপলাইন, প্রতিটি লাইনে একটি পৃথক শেল কমান্ড:
xdotool search --onlyvisible --class 'gvim' getwindowpid %@ |
xargs -I{} xdotool search --all --pid {} --name 'TODO'
এখন, এটি পঠনযোগ্য হতে শুরু করে:
xdotool \
search --onlyvisible --class 'gvim' \
getwindowpid %@ |
xargs -I{} \
xdotool search --all --pid {} --name 'TODO'
xdotool
কমান্ড search
"সঙ্গে জানালা এটি ব্যবহার করা হয় বর্গ " gvim
কিছু "অভ্যন্তরীণ" Windows যাব। ফলাফলটি PID
(প্রক্রিয়া শনাক্তকারী) হিসাবে তালিকাভুক্ত ।
প্রত্যেকের জন্য PID
, xargs
অন্যটি চালান xdotool search
, আমাদের উদাহরণ প্যাটার্নের জন্য "নাম" পরীক্ষা করে TODO
- এর জন্য পরীক্ষা করার পরে PID
।
(ঠিক এক্ষেত্রে: \
অব্যাহত রেখাগুলি - শেষ হওয়া লাইনগুলিকে নতুন লাইনের \
আগে আসলে এবং কোনও শ্বেত স্পেস দিয়ে শেষ করতে হবে ))
আসল কমান্ডে ফিরে আসুন:
xdotool \
search --onlyvisible --class 'gvim' \
getwindowpid %@ |
xargs -I{} \
xdotool \
search --all --pid {} --name 'TODO' \
getwindowgeometry |
sed -r -n 's/.*Position: ([-0-9,+x]+) .*/\1/p'
বাকী অংশে পজিশন সহ উইন্ডো সম্পর্কে কিছু বিশদ তালিকাভুক্ত করে। sed
কমান্ডটি কেবল x,y
পজিশনের সাথে মেলে এবং ফিরে দেয় ।
উদাহরণস্বরূপ, আমার 16 তম ভার্চুয়াল স্ক্রিনে (4 বাই 4 এর) শীর্ষে কমান্ডটি চালানো, gvim
1 স্ক্রিনে "টডো" দিয়ে:
$ xdotool search --onlyvisible --class 'gvim' getwindowpid %@ | xargs -I{} xdotool search --all --pid {} --name 'TODO' getwindowgeometry | sed -r -n 's/.*Position: ([-0-9,+x]+) .*/\1/p'
-7653,-4732
*) দাবি অস্বীকার: আমি @ t7ko এর কোড পছন্দ করি। অনেক!
xdotool
স্তন্যপান ... এটি একটি সাধারণ অপারেশন এবং মার্জিতভাবে এটি করার উপায় নেই।