问题标签 [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.

0 投票
1 回答
913 浏览

python - 如果在 bash 中通过管道传输,使用子进程和 xclip 的 Python 脚本会挂起

我有一个 python 脚本,需要将一些值输出到标准输入并将另一个字符串复制到剪贴板。我正在使用该模块通过以下subprocess方式执行该xclip实用程序Popen

该脚本按预期工作:PRINT_ME在 bash 中回显,PASTE_ME可以粘贴,并立即返回。

将脚本输出通过管道传输到另一个命令时会出现问题。假设一个人想使用以下命令重定向到一个文件和标准输入tee

该程序按预期工作但不返回,即shell 不给予控制权。

这怎么可能解决?

一些重要信息:该xclip实用程序自行分叉(以应对 X 上剪贴板的实现)维护可复制的字符串,当在 shell 中使用时它立即返回(它分叉到后台)。似乎外壳将stdin/stdout都附加clip.py到. 如果使用并杀死命令返回。 xcliptee
xclip -selection clipboardps u

我正在使用 Python 3.4。
谢谢

0 投票
1 回答
255 浏览

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用于存储剪贴板。

0 投票
0 回答
329 浏览

gtk - xclip gtk 复制文件

在尝试通过 bash 将文件复制到剪贴板时,我遇到了一些麻烦。我目前正在使用 'xclip -i -selection clipboard -t text/uri-list <<< $1' 。该脚本在 QT 应用程序中按预期工作,但 gtk 似乎无法识别复制的文件/文件夹。

我是否使用了错误的 mimetype('text/uri-list'),或者文件不应该采用“file://path/to/file.extension”格式还是其他格式?

0 投票
3 回答
2762 浏览

python - 如何在 Gnome 中从 Python 安全地清除两个剪贴板?

Gnome 桌面有 2 个剪贴板,X.org(保存每个选择)和旧版 (CTRL+C)。我正在编写一个简单的 python 脚本来清除两个剪贴板,最好是安全地,因为它可以在复制粘贴密码后完成。

我在这里看到的代码是这样的:

不幸的是,这段代码由于某种原因创建了一个名为的文件blank,所以我们必须删除它:

然而主要问题是,通过调用这两个脚本,它使xclip进程保持打开状态,即使在我关闭终端之后也是如此。

所以这个选项有两个问题:

1)它创建一个空白文件,这对我来说似乎是一个有缺陷的方法

2) 它使进程处于打开状态,这可能是一个安全漏洞。

我也知道这种方法:

然而,这个在剪贴板中留下了一个\n换行符,所以我也不会称这个方法有效。

那么如何正确地做到这一点呢?

0 投票
0 回答
61 浏览

linux - 如何使用键盘快捷键与后台命令一起运行选定的文本?

我试图能够在我的 manjaro linux 系统中的任何地方选择文本并将其与 TTS 文本到语音程序一起运行。该程序称为 google_speech,它有一个非常清晰的默认语音,并且非常易于使用,但是我发现很难实现我想要用它做的事情......

该程序由以下命令运行:

所以我试图能够选择文本并按下键盘快捷键,文本将自动在此处导入:

并希望在后台作为命令运行,而不必打开终端窗口,但如果是这样,那完全没问题......我在想 xclip 能够做到这一点,但我可以弄清楚我需要使用哪些命令或选项...到目前为止,我的研究无济于事...

非常感谢您的时间和技能...

0 投票
1 回答
386 浏览

node.js - 节点 child_process execSync 与 xclip 一起挂起

我正在尝试使用child_processto 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有时似乎无限期挂起的变体延迟更少的时间。

0 投票
0 回答
156 浏览

dbus - 重新实现复制粘贴的 KDE 自定义快捷方式(DBus 可以工作吗?)

我在法语 KDE 上,我使用Raccourcis Personalisés菜单来创建自定义键盘快捷键,我想复制(bash )⊞ Windows+C和粘贴(),但在菜单中编写这些命令不起作用。⊞ Windows+Vxclip -selection clipboardxclip -selection clipboard

0 投票
1 回答
440 浏览

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 上)?

0 投票
1 回答
456 浏览

linux - 如何在 xclip 上复制并在 shell 上查看命令输出?

每当我使用 xclip 时,命令输出都会直接显示在剪贴板中,但我还需要在终端上看到它:

我已经使用管道和 & 尝试过这个命令|&

但不起作用(输出直接到剪贴板,但我在终端上看不到它)。

每当我这样做时,预期的结果很简单:

我应该在 shell 上得到两个输出:

路径/工作/目录

在我的剪贴板上也有同样的结果。

0 投票
1 回答
364 浏览

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,结果相同。

我无法安装gtkPyQt4将它们添加install.travis.yml.

因为这两者都会导致以下错误:

至此,我的before_install样子是这样的:

这似乎有点矫枉过正(而且仍然不起作用);但我目前对如何通过该测试没有任何想法。任何指针将不胜感激。

谢谢