在Linux中获取并设置X11剪贴板

时间:2013-04-04 21:20:08

标签: python linux shell x11 autokey

我在Ubuntu 12.04上的WINE中运行Foxit Reader。我想将文本复制并粘贴到书签中,但我需要将其大写(例如,融合成为Fusion)。我想按F5并运行python脚本。我知道Autokey可以实现这一点,但后者的剪贴板处理有documented bug

所以,现在我正在寻找Autokey的剪贴板替代品。如果我的python脚本运行shell,也许shell可以访问剪贴板? xclip似乎很有前途,但它的文档说,“从标准读取,或从一个或多个文件读取,并使数据可用作粘贴到X应用程序的X选择。”我不需要标准输入或文件;我需要适当的X11剪贴板(也就是选择)。

简而言之,python或shell如何读取现有的X11剪贴板?

2 个答案:

答案 0 :(得分:2)

xclip -o | sed 's/^./\U&/g' | xclip -i

这将读取X剪贴板,大写内容并覆盖它

答案 1 :(得分:1)

我意识到-o参数会读取一个选择,但您必须指定所需的内容:

xclip -selection clipboard -o

从那里开始,我使用了StackOverflow answer。它工作得很好。

#read clipboard, avoid autokey's get_selection bug
tag = subprocess.Popen(["xclip","-selection", "clipboard", "-o"],stdout=subprocess.PIPE).communicate()[0]

#https://stackoverflow.com/questions/764360/a-list-of-string-replacements-in-python
mapping = { "'":'', ',':'', '"':'', ';':'', '(':'', ')':'', '.':'', '-':' '}
for k, v in mapping.iteritems():
    tag = tag.replace(k, v)

#Camelcase, remove spaces, and append Caesar tag
tag=tag.title().replace(' ','')+"_"