我可以在没有文件管理器的情况下将文件“拖动”到窗口中吗?


41

(我在Arch Linux上,使用i3作为我的wm,使用xterm作为我的终端仿真器,尽管我不知道其中任何一个是否相关。)

有时,一个网站要求我用鼠标将文件从桌面拖到Internet浏览器的窗口中。几乎总是有另一种选择,但是最近我发现我想要做的事情需要拖放。不幸的是,我没有文件管理器。我仅通过bash浏览计算机的文件系统。

有什么方法可以伪造拖放动作?我可以告诉浏览器“我只是将此文件放到了您身上”而没有实际做吗?

在最坏的情况下,我可以专门下载图形文件管理器以将文件拖放到Web浏览器中,但是我想避免使用该解决方案。


3
>我可以告诉浏览器“我实际上只是把这个文件放到了你身上吗?”,这似乎对
stackexchange

另请参见www:mechanize或派生工具。似乎有perl和python。解决方案越多越好!


1
拖动框不再存在。请更改您接受的答案。
yukashima huksay

1
@yukashimahuksay完成,感谢抬起头
undergroundmonorail

Answers:


19

几个月前,我遇到了完全相同的问题,最终只是为我编写了一个工具来解决这个问题。当我看到此消息并发现其他人也有同样的痒感时,我将其清除,以使除我之外的其他人可以真正运行它,并完成我的待办事项清单。该代码现在已经启动:https : //github.com/mwh/dragon

要获得它,运行

git clone https://github.com/mwh/dragon.git
cd dragon
make

这将为您提供一个独立的dragon可执行文件-您可以将其移动到任意位置。make install会把它放进去$HOME/.local/bin

无论哪种方式,您都可以:

dragon *.jpg

为每个文件获得一个带有可拖动按钮的简单窗口:

显示一些文件的Dragon屏幕快照

您可以将其中任何一个拖放到浏览器,文件管理器,编辑器或使用标准拖放协议的其他任何位置。

如果你想要去的其他方式,并拖动事情它,用--target-他们会被打印到标准输出,或可与您再次使用拖出来--keep为好。


要建立你需要一个C编译器和GTK + 3的开发头文件-如果你对拱门你只是通过安装GTK +得到这些,但在其他发行版,你可能不得不apt-get install build-essentials libgtk3-devyum install gtk3-devel或类似第一。除此之外,它是完全独立的,没有组成库或任何东西,您可以将可执行文件放在所需的位置。

我的用例主要是一次拖动几个文件(通常只有一个),而无需特别关注它们的显示方式,因此,如果这与您想要的内容不一致,那么请使用Dragbox(直到我才看到最近)可能对您仍然更好。就在昨天,我还添加了对将其用作拖动目标的支持,因此该部分在我端没有太大用处。但是除此之外,我已经成功使用了一段时间了。自述文件中还介绍了其他模式和选项。


谢谢!构建/安装花费了几秒钟!我会用的!--target选项是爆炸!

不错的小型独立二进制文件。带有漂亮的小Makefile。完善。谢谢!
2014年

1
你是英雄。该工具也可以在AUR上的名称下使用dragon-drag-and-drop-git
FichteFoll

我爱你!拱门社区爱你!谢谢!我一直在寻找这个。
yukashima huksay

28

感谢@derobert向我推荐了Dragbox应用程序。

Dragbox正是我所需要的。例如,我有一个文件夹,其中包含许多.png文件,希望将它们拖到Chromium中。在该文件夹内,执行将dragbox *.png创建以下窗口:

一个GUI窗口,其中列出了几个文件的名称

我可以使用鼠标将文件从那里拖到Chromium中,并且可以正常工作。但是,到达这一点很痛苦。据我所知,Dragbox仅正式支持Debian系统。我找不到在Arch本地工作的任何地方。因此,我写了一个逐步指南,以使Dragbox在Arch Linux中工作。这几乎完全是我在计算机上所做的事情,并进行了一些修改以遵循更好的做法。如果某个地方有错误,则可以查看此答案的编辑历史记录,以准确了解我在计算机上所做的事情。

  1. 通过执行将Dragbox的源克隆到计算机 git clone https://github.com/engla/dragbox.git
  2. dragbox当前工作目录中将创建一个名为创建的新目录。进去。
  3. Dragbox和Dragbox的安装需要Python 2,这是Arch Linux的标准配置。但是,它希望Python 2是默认的Python安装,但在Arch上却不是这样。通过执行解决此问题export PYTHON=/bin/python2。在关闭当前终端窗口之前,环境变量$PYTHON将具有值/bin/python2。Dragbox的安装脚本会对此进行检查,并将在Python 3上使用它。
  4. 执行./autogen.sh./configuremakemake installmake install必须具有root特权(例如sudo make install)。
  5. Dragbox现在已安装在您的计算机上,但将尝试使用Python 3运行。具有root特权,/usr/local/bin/dragbox在文本编辑器中打开。修改家当(第一行,告诉你的shell是什么可执行文件运行该脚本)从#!/usr/bin/env python#!/usr/bin/env python2
  6. 该脚本现在可以运行,但是找不到包含实际程序的模块。有两种方法可以解决此问题。

    1. 在包括~/.bashrc或类似这样一行export PYTHONPATH=$PYTHONPATH:立即(同在,甚至没有之间的空间),其次我的一个目录路径。现在,当尝试导入模块时,Python将在该目录中查找。在第1步中创建的目录内,将存在一个名为Dropbox/(带有大写字母D)的目录。将该目录复制到您添加到其中的目录$PYTHONPATH(例如,如果您编写了export PYTHONPATH=$PYTHONPATH:~/python/modules,请复制Dragbox/要创建的目录~/python/modules/Dragbox/)。

    2. 可能是更糟糕的做法,但是您可以将该目录复制到您的目录中$PYTHONPATH。例如,您可以将其复制为create /usr/lib/python2.7/site-packages/

如果执行了这些步骤,Dragbox应该可以正常工作了!现在,您可以执行man dragbox以了解有关如何使用它的更多信息,并只需键入即可启动它dragbox


2
实际上,/usr/bin/env python2自从采用PEP 394以来,最近推荐的使用方法是。
吉尔斯(Gillles)“所以-别再邪恶了”

1
您不需要第二个修复程序。只需将Dragbox目录复制到PYTHONPATH某个位置(如python2 site-packages中的系统或每个用户)。仅当dragbox无法导入该程序包时才执行该行。
Bakuriu 2014年

@Seth好吧,谢谢。我在与设计的系统稍有不同的系统上运行了python脚本,但仍然使用python:P我很高兴它是python,因为那是我足够流利的唯一语言发生。
地下

2
使用Archlinux,解决这类问题的真正方法是编写PKGBUILD。您基本上可以完成自己的工作,但是将其放入一个特殊的脚本中,该脚本可以pacman为您管理文件,因此,如果要更新或删除文件,则无需在系统中乱搞。
HalosGhost

1
Dragbox似乎已经死了。git-repo不见了。
kaleissin

6

您可以使用以下语法在浏览器中轻松浏览文件系统:

file:///home/username/blah/blah

在一个空白标签中打开路径,然后可以从其中拖放文件。至少对于chrome / chromium,不要在这里使用其他浏览器。


这不是为我工作,但我不能告诉我们,如果它与你所描述的方法或与要我顺路东西userscript一个问题一个问题...
undergroundmonorail

我认为您必须启用chrome中的命令行开关或属性才能启用此功能。
slm

chrome://flags是寻找这样的事情在正确的地方?那就是我现在正在寻找的地方。
地下

@undergroundmonorail嗯,您是对的,我只是在dropzonejs.com上尝试了该演示,但它不起作用。不过,绝对可以说是一个许可问题
Shunz先生2014年


4

自己解决问题。

可能最简单的方法是使用“打开文件...”对话框。您可以简单地从gtk文件对话框中拖放,就像文件管理器一样。

您可能需要打开一个单独的窗口,以确保对话框不会窃取屏幕。

而已。这么简单


太棒了!无需安装任何东西。我正在使用Firefox,所以无法单击菜单,但Ctrl + o可以正常工作。
米兰·巴布斯科夫,2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.