मैंने देखा है कि कभी-कभी क्लिपबोर्ड सामग्री अनुपलब्ध हो जाती है यदि स्रोत एप्लिकेशन (जहां सामग्री की प्रतिलिपि बनाई गई थी) बंद है।
यह मुझे आश्चर्यचकित करता है कि क्या यह जानना संभव है कि स्रोत एप्लिकेशन क्या है (उदाहरण के लिए शायद पीआईडी)।
क्यों? यदि स्रोत एप्लिकेशन एक टर्मिनल है, तो मैं किसी फ़ाइल के पूर्ण पथ का निर्माण करने के लिए प्रतिलिपि की गई सामग्री के सापेक्ष होने की स्थिति में, टर्मिनल की कार्यशील निर्देशिका खोजना चाहूंगा।
FYI करें, मैं वर्तमान में क्लिपबोर्ड सामग्री निर्धारित करने के लिए xclip का उपयोग कर रहा हूं, उदा
xclip -selection primary -t STRING -o 2> /dev/null
@ StéphaneChazelas ने क्या कहा। लेकिन ध्यान रखें कि आपको X11 से बाहर अन्य क्लाइंट का विश्वसनीय पीआईडी मिलने की संभावना नहीं है। याद रखें कि एक्स क्लाइंट जेनेरिक नेटवर्क कनेक्शन (यूनिक्स सॉकेट या टीसीपी सॉकेट) के माध्यम से एक्स सर्वर से जुड़ते हैं, एक पीआईडी अर्थहीन हो सकता है क्योंकि आवेदन स्थानीय नहीं हो सकता है। यह TCP (इन दिनों सामान्य नहीं) या SSH-अग्रेषित X11 कनेक्शन (अधिक सामान्य) से जुड़ा हो सकता है।
—
सेलडा
नोट के लिए धन्यवाद - मुझे लगता है कि मुझे XGetSelectionOwner का उपयोग करने के लिए कुछ सी कोड लिखने की आवश्यकता होगी? मैं शायद ऐसा कर सकता हूं - जब मैं किसी समाधान पर पहुंचूंगा तो पोस्ट करूंगा।
—
जेफ वार्ड
XGetSelectionOwner(3)
आपको चयन के स्वामी की विंडो आईडी मिलती है। जिस से आप विंडो ट्री को वॉक करने की कोशिश कर सकते हैं और उदाहरण के लिए _NET_WM_PID प्रॉपर्टी के साथ एक विंडो ढूंढ सकते हैंxprop
(यह मानते हुए कि विंडो उस प्रॉपर्टी को सेट करने वाले लोकल क्लाइंट से आती है)।xwininfo -root -tree | less +/0x<that-id>
आवेदन की पहचान करने के लिए पर्याप्त हो सकता है।