X11

合併主要和剪貼板 X 選擇

  • June 25, 2021

如果沒有兩個不同的選擇(主要和剪貼板),那麼它將完全按照我的意願工作。這將如何工作是:

  1. 如果有任何東西想將文本放在主要或剪貼板上,則文本會放在兩者上。
  2. 當從主機板或剪貼板讀取任何內容時,每次都會讀取相同的文本,這要歸功於#1。

這可能嗎?

帶有Clipnotify的 Shell 腳本

這是一個程序,只要 X 選擇更改,它就會簡單地退出。所以把它放在一個while循環中,當它退出時,確定剪貼板或主要是否發生了變化,並將改變的選擇的內容填充到另一個選擇中。

get_selections_keep_newline() {
   c2=$(xsel -o --clipboard; printf x)
   c2=${c2%x}
   p2=$(xsel -o --primary  ; printf x)
   p2=${p2%x}
}

get_selections_keep_newline
while clipnotify; do
   c1=$c2
   p1=$p2
   get_selections_keep_newline
   if   [ "$c1" != "$c2" ]; then
       printf '%s' "$c2" | xsel -i --primary
   elif [ "$p1" != "$p2" ]; then
       printf '%s' "$p2" | xsel -i --clipboard
   fi
done

將其另存為mergexsel,使其可執行並執行。

該函式包含一個 kludge 來保留尾隨換行符abc\n不同於abc);除了腳本是不言自明的。

自動切割

它必須為主要和剪貼板執行(如超級使用者上的這個答案所示)。

autocutsel -s CLIPBOARD &
autocutsel -s PRIMARY   & 

Diodon,一個 GUI 剪貼板管理器

讓它在後台執行diodon &。點擊托盤圖示或發出另一個diodon命令以彈出其 GUI 菜單,其中包含剪貼板內容的歷史記錄和“首選項”項。選擇“首選項”,然後在打開的視窗中,檢查項目

  • 使用剪貼板 (Ctrl+C)
  • 使用主要選擇
  • 同步剪貼板

進一步閱讀:剪貼板——用於上下文和更多剪貼板管理器的Arch Wiki 。

引用自:https://unix.stackexchange.com/questions/628492