বর্তমানে সক্রিয় উইন্ডো সনাক্ত করা হচ্ছে


52

লিনাক্স কমান্ডলাইন সরঞ্জাম wmctrlআপনাকে অন্যান্য উইন্ডো বা সমস্ত ডেস্কটপগুলি অন্যান্য জিনিসের তালিকাতে অনুমতি দেয়। ডেস্কটপ-তালিকা মোডে, বর্তমান ডেস্কটপটি একটি নক্ষত্রের সাথে চিহ্নিত করা হয়।

আমার একটি সরঞ্জাম প্রয়োজন যা বর্তমানে সক্রিয় উইন্ডোর শিরোনামটি বের করতে পারে। দুর্ভাগ্যক্রমে, wmctrlকোন সাহায্যকারী নেই যা এটি করে - এটি জানার পরেও বর্তমানে কোন উইন্ডোটি সক্রিয় রয়েছে ( :ACTIVE:মার্কার দেখুন)।

আর কি কমান্ডলাইন সরঞ্জাম আছে যা আমাকে উইন্ডো আইডি এবং / বা বর্তমান উইন্ডোর উইন্ডো শিরোনাম দিতে পারে?

উত্তর:


56

ইনস্টল করুন xdotool, তারপর চালান

xdotool getwindowfocus getwindowname

এটি ফায়ারফক্সে খোলার বর্তমান ওয়েবপৃষ্ঠার উদাহরণ প্রদান করবে:

linux - Detecting currently active window - Super User - Mozilla Firefox

শক্তিশালী যন্ত্র! বর্তমান সক্রিয় উইন্ডোটি ছাড়াও এটিতে প্রচুর অন্যান্য কার্যকর কার্যকারিতা রয়েছে।
সমুদ্র

জিম প্যারিসের উত্তরের তুলনায়, এটি ইনস্টল করার উপর নির্ভরশীলতার অসুবিধা রয়েছে, তবে এটি দ্রুত চলবে বলে মনে হচ্ছে, বিশেষত যদি এক্সডটুল ইতিমধ্যে ডিস্ক ক্যাশে রয়েছে।
এমসি 0 ই

1
আপনি যদি বর্তমান উইন্ডোটি দিয়ে ম্যানিপুলেট করতে চান তবে আপনি এটি wmctrlকরতে পারেন: wmctrl -i -r `xdotool getwindowfocus` -e 0,10,10,-1,-1যেখানে -iwmctrl উইন্ডো শিরোনামের চেয়ে উইন্ডো আইডি আশা করতে বলে।
ফিডল

34

এটি আরও সরাসরি এবং কেবলমাত্র ব্যবহার xpropএবং cut:

xprop -id $(xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW | cut -f 2) _NET_WM_NAME

এই কমান্ডগুলি মূল উইন্ডো এবং অ্যাপ্লিকেশন উইন্ডো থেকে কেবলমাত্র বৈশিষ্ট্যের একটি নিষ্কাশন, তবে লরেঞ্জো ভন ম্যাটটারহর্নের অনুরোধ অনুসারে:

  • প্রথমত,

    xprop -root 32x '\t$0' _NET_ACTIVE_WINDOW
    

    নিষ্কাশন করে _NET_ACTIVE_WINDOWরুট, যা আপনি সক্রিয় উইন্ডো থেকে XID দেয় থেকে সম্পত্তি। 32x '\t$0'বলে xpropএকটি উপায় যে আউটপুট ফরম্যাট করতে cutপরে সহজেই বিশ্লেষণ করতে পারেন।

  • তারপরে, আউটপুট থেকে কেবল এক্সআইডি বের করুন cut -f 2

  • তারপরে, XID কে প্যারামিটার হিসাবে পাস করুন

    xprop -id XID _NET_WM_NAME
    

যা সেই উইন্ডোটির নাম মুদ্রণ করে।


1
হাই, আপনি দয়া করে যুক্তি এবং বাক্য গঠন কিছুটা ব্যাখ্যা করতে পারেন? এটি কিউএ এবং ভবিষ্যতের পাঠকদের জন্য সহায়ক হতে পারে।
লরেঞ্জো ভন ম্যাটারহর্ন

9

আছে, তবে কোন সংক্ষিপ্ত উত্তর বা সমাধান নেই।

$ wmctrl -lp | grep $(xprop -root | grep _NET_ACTIVE_WINDOW | head -1 | \
    awk '{print $5}' | sed 's/,//' | sed 's/^0x/0x0/')

ফলাফল:

0x03800004  0 16459  xxxxxxxxxx /bin/bash

ব্যাবহৃত হচ্ছে:

$ for x in $(seq 1 10); do sleep 5; wmctrl -lp | grep $(xprop -root | \
    grep _NET_ACTIVE_WINDOW | head -1 | awk '{print $5}' | sed 's/,//' | \
    sed 's/^0x/0x0/'); done

0x03800004  0 16459  xxxxxxxxxx /bin/bash
0x020000a4  0 13524  xxxxxxxxxx linux - Detecting currently active window - Super User - Mozilla Firefox (Build 20120129142219)

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

1
কোডটিতে কার্যকারিতা এবং "সরলতার" জন্য +1
লরেঞ্জো ভন ম্যাটারহর্ন

5

এটিই আমার পক্ষে কাজ করেছে:

xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME

দেয়:

WM_NAME(STRING) = "~"

সুতরাং আপনি নিজেই নামটি পেতে কিছুটা কুৎসিত কৃপণতা করতে পারেন:

xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | sed -e 's/.*"\(.*\)".*/\1/'

দেয়:

~

যা বর্তমানে আমার ফোকাস করা উইন্ডোর নাম, এটি নিজেই।

অথবা, সামান্য কম কুশ্রী সঙ্গে সেড এড়ান:

xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | awk -F '"' '{print $2}'


1
বা যেহেতু কাটাটি লাডিয়েড চালু হয়েছে, আপনি আবার এটি ব্যবহার করতে পারেন:xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | cut -d '"' -f 2
এমসি 0 ই

3

তুলনামূলকভাবে সংক্ষিপ্ত, এবং উইন্ডো নামগুলি উদ্ধৃতি সহ সঠিকভাবে পরিচালনা করে:

xprop -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) WM_NAME | 
sed -nr 's/.*= "(.*)"$/\1/p'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.