将文件从 nautilus 脚本复制到剪贴板

将文件从 nautilus 脚本复制到剪贴板

我有一个 nautilus 脚本,它根据 nautilus 窗口中选择的文件生成存档文件。该归档文件是在/tmp目录中创建的。我想要一种方法复制将此文件从脚本复制到剪贴板,以便用户只需转到桌面或主目录并将其粘贴即可。

我尝试使用xclipand执行此操作xsel,但它们似乎没有复制文件复制操作,而是复制文件的内容。

xclip -in -selection c generated-archive
echo -n generated-archive | xsel --clipboard --input

他们都没有做我需要的事情。

所以我想知道这是否可行,如果可行,我该怎么办?

谢谢。

答案1

看起来 Nautilus 会跟踪剪贴板更改的内部状态,这意味着剪贴板状态的任何更改(包括用相同的文件路径字符串替换)都会自动取消粘贴待处理状态,因此当外部加载的剪贴板包含有效的文件路径时什么也不会发生...

Nautilus 只识别文件复制/剪切这是从 Nautilus 内部发起的。
这正是您所观察到的......也许有一些关于原因的解释......我在 Nautilus 源“剪切-粘贴-代码”中注意到它包含很多有关保存状态的信息。

# In Nautilus, manually "copy" a file (to the clipboard) using Ctrl+C

xsel -ob |xxd      # hex-display clipboard contents of the clipboard
echo "### At this point, Nautilus **paste** works."
read               # pause
xsel -ob |xsel -ib # Replace clipboard with itself
xsel -ob |xxd      # hex-display clipboard contents again
echo "### At this point, Nautilus **paste** does NOT work."

手动复制/剪切后,您可以执行无尽的操作(在 Nautilus 或其他地方),并且 Ctrl+V粘贴在 Nautilus 中可以工作,但是一旦你修改剪贴板,它就不会“粘贴”......

答案2

您应该明白,当您将文件“复制”到 nautilus 中的剪贴板时,您实际上所做的就是将绝对文件路径放在剪贴板上(您可以使用剪贴板管理器来验证这一点)。因此,您只需让脚本将文件路径放在剪贴板上,您就会获得您正在寻找的结果。尝试一下!

相关内容