问题标签 [xclip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如果在 bash 中通过管道传输,使用子进程和 xclip 的 Python 脚本会挂起
我有一个 python 脚本,需要将一些值输出到标准输入并将另一个字符串复制到剪贴板。我正在使用该模块通过以下subprocess
方式执行该xclip
实用程序Popen
:
该脚本按预期工作:PRINT_ME
在 bash 中回显,PASTE_ME
可以粘贴,并立即返回。
将脚本输出通过管道传输到另一个命令时会出现问题。假设一个人想使用以下命令重定向到一个文件和标准输入tee
:
该程序按预期工作但不返回,即shell 不给予控制权。
这怎么可能解决?
一些重要信息:该xclip
实用程序自行分叉(以应对 X 上剪贴板的实现)维护可复制的字符串,当在 shell 中使用时它立即返回(它分叉到后台)。似乎外壳将stdin/stdout都附加clip.py
到.
如果使用并杀死命令返回。 xclip
tee
xclip -selection clipboard
ps u
我正在使用 Python 3.4。
谢谢
bash - 来自非 bash shell 的 xclip 不持久
在 bash 中,echo toast | xclip -sel c
将吐司保存在剪贴板中,即使我关闭终端也是如此。为什么这似乎与其他外壳不持久?
python3.5:
完成这项工作,但是当我按 时CtrlC,剪贴板是空的。一个简单CtrlD的不清除剪贴板/工作正常。
tclsh:
甚至保持进程打开,所以我必须终止它。
这是一个错误吗?这怎么可能?还是我误会了什么?
编辑。无法找到解决方案。我制作了一个wish
(Tcl/Tk)脚本,包含exec /bin/echo toast | xclip -sel c
一行并关闭了窗口。剪贴板现在是空的。我试过-display,但显示和xauthority都设置正确。python pyperclip 和 xerox 也出现了同样的问题。
编辑2。这个问题可以简化为这个问题:https ://unix.stackexchange.com/questions/316715/xclip-works-differently-in-interactive-and-non-interactive-shells似乎没有一个好的选择除了xsel -ib
用于存储剪贴板。
gtk - xclip gtk 复制文件
在尝试通过 bash 将文件复制到剪贴板时,我遇到了一些麻烦。我目前正在使用 'xclip -i -selection clipboard -t text/uri-list <<< $1' 。该脚本在 QT 应用程序中按预期工作,但 gtk 似乎无法识别复制的文件/文件夹。
我是否使用了错误的 mimetype('text/uri-list'),或者文件不应该采用“file://path/to/file.extension”格式还是其他格式?
python - 如何在 Gnome 中从 Python 安全地清除两个剪贴板?
Gnome 桌面有 2 个剪贴板,X.org(保存每个选择)和旧版 (CTRL+C)。我正在编写一个简单的 python 脚本来清除两个剪贴板,最好是安全地,因为它可以在复制粘贴密码后完成。
我在这里看到的代码是这样的:
不幸的是,这段代码由于某种原因创建了一个名为的文件blank
,所以我们必须删除它:
然而主要问题是,通过调用这两个脚本,它使xclip
进程保持打开状态,即使在我关闭终端之后也是如此。
所以这个选项有两个问题:
1)它创建一个空白文件,这对我来说似乎是一个有缺陷的方法
2) 它使进程处于打开状态,这可能是一个安全漏洞。
我也知道这种方法:
然而,这个在剪贴板中留下了一个\n
换行符,所以我也不会称这个方法有效。
那么如何正确地做到这一点呢?
linux - 如何使用键盘快捷键与后台命令一起运行选定的文本?
我试图能够在我的 manjaro linux 系统中的任何地方选择文本并将其与 TTS 文本到语音程序一起运行。该程序称为 google_speech,它有一个非常清晰的默认语音,并且非常易于使用,但是我发现很难实现我想要用它做的事情......
该程序由以下命令运行:
所以我试图能够选择文本并按下键盘快捷键,文本将自动在此处导入:
并希望在后台作为命令运行,而不必打开终端窗口,但如果是这样,那完全没问题......我在想 xclip 能够做到这一点,但我可以弄清楚我需要使用哪些命令或选项...到目前为止,我的研究无济于事...
非常感谢您的时间和技能...
node.js - 节点 child_process execSync 与 xclip 一起挂起
我正在尝试使用child_process
to execute xclip -selection c
,但它似乎挂起或显着延迟执行。
我试过使用execSync
,
require('child_process').execSync('echo hi | xclip -selection c') && console.log('done');
我也尝试过使用exec
,
require('child_process').exec('echo hi | xclip -selection c', (a) => console.log('done', a)) && undefined;
enter
在这两种情况下,按下和done
打印之间都有明显的延迟。但是,剪贴板实际上几乎立即受到影响,似乎node
只是似乎没有意识到命令已完成。
还要注意的是,执行之间的延迟似乎有所不同。另外,该exec
变体似乎比execSync
有时似乎无限期挂起的变体延迟更少的时间。
dbus - 重新实现复制粘贴的 KDE 自定义快捷方式(DBus 可以工作吗?)
我在法语 KDE 上,我使用Raccourcis Personalisés菜单来创建自定义键盘快捷键,我想复制(bash )⊞ Windows+C和粘贴(),但在菜单中编写这些命令不起作用。⊞ Windows+Vxclip -selection clipboard
xclip -selection clipboard
python - 如何将 PIL 图片复制到剪贴板
我正在使用 Tkinter 中的画布,并且正在尝试将该画布的内容复制到剪贴板。
我可以通过创建一个文件来解决这个问题,然后使用 将该文件的内容复制到剪贴板xclip -selection clipboard -t image/png -i temp_file.png
,但我想使用缓冲区,允许用户直接将其复制到剪贴板而不接触用户的文件系统.
要使用xclip
's 输入功能,我需要提供文件名,而不是字符串。cat temp_file.png < echo | xclip -selection clipboard -t image/png -i
我可以使用 echo/cat 作为 bash 行或cat file_name.png | xclip -selection clipboard -t image/png -i
在 bash 行中来规避这个问题。
我已经成功地能够使用缓冲区来存储画布,如下所示:
并可以像这样将图片保存到文件中:
据我了解,从pil的文档中,pil.Image.open
与内置open()
函数相同。然而,当尝试使用 open() 读取文件时,它声称 BytesIO 不是有效文件。不是什么大问题,我猜。
我可以用 读取缓冲区的内容memory.getvalue()
,然后b'...'
用 [2:-1] 剥离周围的内容。'
然后,我将字符串中的所有内容替换为\'
,因此我可以用单引号将其括起来,并最终使用我之前在文件上使用的命令来回显所述字符串。
的输出与cat file_name.png
我在子进程中提供的字符串的输出几乎相同echo
,但是以下内容似乎对我不起作用,因为我的剪贴板保持不变:
但
确实有效。
tl;博士
我究竟做错了什么?我是否在更改文件的内容并创建损坏的图像,然后将其复制?
如何正确地将 a 的内容输出io.BufferIO
到我的剪贴板中(主要在 Unix/Linux 上,但也在 MacOS/Windows 上)?
linux - 如何在 xclip 上复制并在 shell 上查看命令输出?
每当我使用 xclip 时,命令输出都会直接显示在剪贴板中,但我还需要在终端上看到它:
我已经使用管道和 & 尝试过这个命令|&
:
但不起作用(输出直接到剪贴板,但我在终端上看不到它)。
每当我这样做时,预期的结果很简单:
我应该在 shell 上得到两个输出:
路径/工作/目录
在我的剪贴板上也有同样的结果。
python - 在 Travis-CI 上访问剪贴板
我正在尝试在我的应用程序上运行(集成?)测试,以验证它是否确实将预期的字符串复制到剪贴板pyperclip
。
这部分正在我的开发机器(Windows 10)上工作;但在 travis-ci 上失败,我在 travis 工作日志中得到以下信息。
根据pyperclip 文档,当没有复制/粘贴机制时,这发生在 Linux 上。解决方案是安装以下之一(引用pyperclip
文档):
sudo apt-get install xsel
安装 xsel 实用程序。sudo apt-get install xclip
安装 xclip 实用程序。pip install gtk
安装 gtk Python 模块。pip install PyQt4
安装 PyQt4 Python 模块。
所以在我的.travis.yml
文件中,我有
我也试过xsel
了,结果一样。
由于 travis 上的系统是 Ubuntu 16.04.6,我尝试添加sudo apt-get install python3-pyperclip
密钥before_install
,结果相同。
我无法安装gtk
或PyQt4
将它们添加install
到.travis.yml
.
因为这两者都会导致以下错误:
至此,我的before_install
样子是这样的:
这似乎有点矫枉过正(而且仍然不起作用);但我目前对如何通过该测试没有任何想法。任何指针将不胜感激。
谢谢