Tôi đã nhận thấy rằng đôi khi nội dung clipboard trở nên không khả dụng nếu ứng dụng nguồn (nơi nội dung được sao chép từ đó) bị đóng.
Điều này khiến tôi tự hỏi liệu có thể biết ứng dụng nguồn là gì không (ví dụ như có lẽ bởi PID).
Tại sao? Nếu ứng dụng nguồn là một thiết bị đầu cuối, tôi muốn tìm thư mục làm việc của thiết bị đầu cuối, trong trường hợp nội dung được sao chép là một đường dẫn tương đối, để xây dựng một đường dẫn đầy đủ đến một tệp.
FYI, tôi hiện đang sử dụng xclip để xác định nội dung clipboard, ví dụ:
xclip -selection primary -t STRING -o 2> /dev/null
Những gì @ StéphaneChazelas nói. Nhưng hãy lưu ý rằng bạn khó có thể có được một bộ lọc đáng tin cậy của khách hàng khác trong X11. Hãy nhớ rằng các máy khách X kết nối với máy chủ X thông qua các kết nối mạng chung (ổ cắm UNIX hoặc ổ cắm TCP), một PID có thể là vô nghĩa vì ứng dụng có thể không cục bộ. Nó có thể được kết nối qua TCP (không còn phổ biến nữa trong những ngày này) hoặc kết nối X11 chuyển tiếp SSH (phổ biến hơn).
—
Celada
Cảm ơn các ghi chú - Tôi giả sử tôi sẽ cần viết một số mã C để truy cập XGetSelectionOwner? Tôi có thể làm điều đó - tôi sẽ đăng lại khi tôi nhận được giải pháp.
—
Jeff Ward
XGetSelectionOwner(3)
giúp bạn có id cửa sổ của chủ sở hữu của lựa chọn. Từ đó bạn có thể đi lên cây cửa sổ để thử và tìm một cửa sổ có thuộc tính _NET_WM_PIDxprop
(giả sử cửa sổ đó đến từ một máy khách cục bộ đặt thuộc tính đó).xwininfo -root -tree | less +/0x<that-id>
có thể đủ để xác định ứng dụng.