ฉันสังเกตเห็นว่าบางครั้งเนื้อหาคลิปบอร์ดไม่สามารถใช้งานได้หากแอปพลิเคชันต้นทาง (ที่คัดลอกเนื้อหามา) ถูกปิด
นี่ทำให้ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะรู้ว่าแอปพลิเคชันต้นฉบับคืออะไร (เช่นอาจเป็น PID)
ทำไม? หากแอปพลิเคชันต้นทางเป็นเทอร์มินัลฉันต้องการค้นหาไดเรกทอรีการทำงานของเทอร์มินัลในกรณีที่เนื้อหาที่คัดลอกเป็นพา ธ สัมพัทธ์เพื่อสร้างพา ธ แบบเต็มไปยังไฟล์
FYI ฉันกำลังใช้ xclip เพื่อกำหนดเนื้อหาของคลิปบอร์ดเช่น
xclip -selection primary -t STRING -o 2> /dev/null
สิ่งที่ @ StéphaneChazelasพูด แต่พึงระวังว่าคุณไม่น่าจะได้รับ PID ที่เชื่อถือได้ของลูกค้ารายอื่นจาก X11 การจดจำว่าไคลเอนต์ X เชื่อมต่อกับเซิร์ฟเวอร์ X ผ่านการเชื่อมต่อเครือข่ายทั่วไป (ซ็อกเก็ต UNIX หรือซ็อกเก็ต TCP) PID อาจไม่มีความหมายเนื่องจากแอปพลิเคชันอาจไม่ได้อยู่ในเครื่อง มันอาจจะเชื่อมต่อผ่าน TCP (ไม่ธรรมดาอีกต่อไปในวันนี้) หรือการเชื่อมต่อ X11 ที่ส่งต่อ SSH (พบมากขึ้น)
—
Celada
ขอบคุณสำหรับบันทึก - ฉันคิดว่าฉันจะต้องเขียนรหัส C เพื่อเข้าถึง XGetSelectionOwner แล้ว? ฉันอาจจะทำอย่างนั้น - ฉันจะโพสต์กลับเมื่อฉันได้รับการแก้ไข
—
Jeff Ward
XGetSelectionOwner(3)
ทำให้คุณได้รับ ID หน้าต่างของเจ้าของสิ่งที่เลือก ซึ่งคุณสามารถเดินขึ้นไปที่แผนผังหน้าต่างเพื่อลองและค้นหาหน้าต่างที่มีคุณสมบัติ _NET_WM_PID ด้วยเช่นกันxprop
(สมมติว่าหน้าต่างนั้นมาจากไคลเอนต์ท้องถิ่นที่ตั้งค่าคุณสมบัตินั้น)xwininfo -root -tree | less +/0x<that-id>
อาจเพียงพอที่จะระบุแอปพลิเคชัน