(我在 Arch Linux 上,使用 i3 作为我的 wm,使用 xterm 作为我的终端模拟器,尽管我不知道这些是否相关。)
有时,网站会要求我用鼠标将文件从桌面拖到互联网浏览器的窗口中。几乎总是有一个替代方案,但最近我发现我想做的事情需要拖放。不幸的是,我没有文件管理器。我仅通过 bash 浏览计算机的文件系统。
有没有办法可以伪造拖放操作?我可以告诉我的浏览器“我刚刚将此文件丢给了你”而不实际执行吗?
最坏的情况是,我可以专门下载一个图形文件管理器来将文件放入我的网络浏览器中,但我想避免这种解决方案。
答案1
几个月前我遇到了完全相同的问题,最终只是编写了一个工具来帮我解决这个问题。当我看到这个并发现其他人也有同样的渴望时,我清理了它,以便除了我之外的其他人可以真正运行它,并完成我的待办事项清单。代码现在已经出来了:https://github.com/mwh/dragon
要获取它,请运行
git clone https://github.com/mwh/dragon.git
cd dragon
make
这将为您提供一个独立的dragon
可执行文件 - 您可以将其移动到任何您想要的位置。make install
将把它放进去$HOME/.local/bin
。
无论哪种方式,您都可以:
dragon *.jpg
为每个文件获取一个带有可拖动按钮的简单窗口:
您可以将其中任何一个拖到浏览器、文件管理器、编辑器或使用标准拖放协议的任何其他地方。
如果你想走另一条路,拖动东西在对其进行使用- 它们将被打印到标准输出,或者如果您也--target
使用的话,可以再次拖出。--keep
要构建,您需要一个 C 编译器和 GTK+ 3 开发头文件 - 如果您使用 Arch,您只需安装 GTK+ 即可获得这些内容,但在其他发行版上,您可能必须先这样做apt-get install build-essentials libgtk3-dev
或yum install gtk3-devel
类似。除此之外,它是完全独立的,没有组成库或任何东西,您可以将可执行文件放在您想要的位置。
我的用例主要是一次性拖动几个文件(通常只有一个),而不特别关心它们如何显示,所以如果这与您想要的不符,那么 Dragbox (直到我才看到它)最近)可能仍然对你更好。就在昨天,我还添加了将其用作拖动目标的支持,因此该部分对我来说并没有太多用处。但除此之外,我已经成功地使用它有一段时间了。自述文件中描述了其他模式和选项。
答案2
感谢 @derobert 向我推荐 Dragbox 应用程序。
拖箱正是我需要的。例如,我有一个包含许多 .png 文件的文件夹,我希望能够将它们拖到 Chromium 中。在该文件夹内,执行将dragbox *.png
创建此窗口:
我可以使用鼠标将文件从那里拖到 Chromium 中,并且它可以完美地工作。然而,走到这一步是很痛苦的。据我所知,Dragbox 仅正式支持 Debian 系统。我在任何地方都找不到它本身适用于 Arch 的地方。因此,我编写了一份在 Arch Linux 中使用 Dragbox 的分步指南。这几乎正是我在我的机器上所做的,进行了一些修改以遵循更好的实践。如果某个地方有错误,你可以查看这个答案的编辑历史来查看确切地我在我的机器上做了什么。
- 通过执行以下命令将 Dragbox 的源克隆到您的计算机
git clone https://github.com/engla/dragbox.git
dragbox
当前工作目录中将会有一个名为 Create 的新目录。进去。- Dragbox 和 Dragbox 的安装需要 Python 2,它是 Arch Linux 的标准配置。然而,它期望 Python 2 成为默认的 Python 安装,但这在 Arch 上并非如此。通过执行来解决这个问题
export PYTHON=/bin/python2
。在关闭当前终端窗口之前,环境变量$PYTHON
的值为/bin/python2
。 Dragbox 的安装脚本会检查这一点,并将在 Python 3 上使用它。 - 执行
./autogen.sh
、./configure
、make
和make install
。make install
必须使用root权限来完成(例如sudo make install
)。 - Dragbox 现已安装在您的计算机上,但将尝试使用 Python 3 来运行。使用 root 权限,
/usr/local/bin/dragbox
在文本编辑器中打开。将 shebang(第一行,告诉您的 shell 使用哪个可执行文件来运行脚本)从 修改#!/usr/bin/env python
为#!/usr/bin/env python2
。 该脚本现在可以运行,但找不到包含实际程序的模块。有几种方法可以解决这个问题。
在您的或类似的内容中包含立即
~/.bashrc
读取的行export PYTHONPATH=$PYTHONPATH:
(例如,之间甚至没有空格),跟随我的目录路径。现在,Python 在尝试导入模块时将查找该目录。在步骤 1 中创建的目录中,将有一个名为Dropbox/
(大写 D)的目录。将该目录复制到您添加到的目录中$PYTHONPATH
(例如,如果您编写了export PYTHONPATH=$PYTHONPATH:~/python/modules
,则复制该Dragbox/
目录以创建~/python/modules/Dragbox/
)。可能更糟糕的做法,但您可以将同一目录复制到
$PYTHONPATH
.例如,您可以将其复制以创建/usr/lib/python2.7/site-packages/
.
如果您已按照这些步骤操作,Dragbox 应该可以正常工作了!您现在可以执行man dragbox
以了解有关如何使用它的更多信息,并只需键入 即可启动它dragbox
。
答案3
刚刚自己解决了这个问题。
最简单的方法可能是使用“打开文件...”对话框。您可以简单地从 gtk 文件对话框中拖放文件,就像文件管理器一样。
您可能需要打开一个单独的窗口以确保对话框不会占用屏幕。
就是这样。就这么简单。
答案4
zenity
您可以使用命令行工具(例如从那里拖放)启动 GTK 文件对话框。
例子:
zenity --file-selection