私の使用例は、クリップボードに何かをコピーするたびにPRIMARYにも保存したいということです。人々は何かをコピーするためにそれを選択する必要があると思うことが多いので、ほとんどの場合、これを行う必要はありません。
ただし、既存の「クリップボードにコピー」ボタンをクリックして、基本コンテンツにないコンテンツをクリップボードにコピーすることもあります。私は貼り付けるためにShift+をたくさん使用しますがInsert、どの選択項目を使用しているかを追跡する必要があり、混乱しています。
同様の作業を実行できるツールがあることを知っていますが、起動してclipit
忘れられる簡単なサービスparcellite
など、GUIなしで何かをしたくありません。systemd
次のように構成されたsystemd
サービスを試してみました。autocutsel
ExecStartPre=autocutsel -f
ExecStart=autocutsel -f --selection PRIMARY
ただし、これはPRIMARY - > CLIPBOARDも同期しているため、テキストを選択してクリップボードの内容に置き換えるなど、非常に一般的なワークフローを破ります。
のマンページでこのオプションを見つけましたが、autocutsel
言及が多くcutbuffer
(もはや使用されていないようです)、Windowsを使用しなかったので少し混乱しました。それで、これが可能かどうかはわかりませんautocutsel
。
答え1
GTKのPyGObjectバインディングを使用してこれを行う高速Pythonプログラムは次のとおりです。私はこれの専門家ではないので、これは以前のFedoraバージョンでrpm pygobject2を使用して私に役立った例です。これに対応するパッケージを直接見つけなければなりません。
#!/usr/bin/python3
# copy clipboard to primary every time it changes
# https://unix.stackexchange.com/a/660344/119298
import signal, gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk
# callback with args (Gtk.Clipboard, Gdk.EventOwnerChange)
def onchange(cb, event):
text = clipboard.wait_for_text() # convert contents to text in utf8
primary.set_text(text, -1) # -1 to auto set length
signal.signal(signal.SIGINT, signal.SIG_DFL) # allow ^C to kill
primary = Gtk.Clipboard.get(Gdk.SELECTION_PRIMARY)
clipboard = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
clipboard.connect('owner-change', onchange) # ask for events
Gtk.main() # loop forever