¿Puedo "arrastrar" un archivo a una ventana sin un administrador de archivos?

41

(Estoy en Arch Linux, usando i3 como mi wm y xterm como mi emulador de terminal, aunque no sé si algo de eso es relevante).

Ocasionalmente, un sitio web me pide que arrastre un archivo con el mouse desde mi escritorio a la ventana del navegador de Internet. Casi siempre, hay una alternativa, pero recientemente encontré algo que quiero hacer que requiere arrastrar y soltar. Lamentablemente, no tengo un administrador de archivos. Navego por el sistema de archivos de mi computadora únicamente a través de bash.

¿Hay alguna manera de que pueda fingir la acción de arrastrar y soltar? ¿Puedo decirle a mi navegador "Acabo de soltar este archivo en ti" sin hacerlo realmente?

En el peor de los casos, puedo descargar un administrador de archivos gráfico exclusivamente para colocar archivos en mi navegador web, pero me gustaría evitar esa solución.

metro subterráneo
fuente
3
> ¿Puedo indicar a mi navegador "Me acaba de caer este archivo en que" sin hacerlo realmente "suena como una gran pregunta para la comunidad javascript en StackExchange?.
jayhendren
Ver también www: mecanizar o un derivado. Parece que hay Perl y Python. ¡Cuantas más soluciones, mejor!
Relacionado: ¿Cómo instalo los scripts de usuario en Chrome en Linux?
Gilles 'SO- deja de ser malvado'
1
dragbox ya no existe. por favor cambie su respuesta aceptada.
Yukashima huksay
1
@yukashimahuksay hecho, gracias por el aviso
undergroundmonorail

Respuestas:

19

Tuve exactamente el mismo problema hace unos meses y finalmente escribí una herramienta para hacerlo por mí. Cuando vi esto y descubrí que alguien más tenía el mismo picor, lo limpié para que alguien más que yo pudiera hacerlo funcionar y terminé mi lista de tareas pendientes. El código ya está disponible: https://github.com/mwh/dragon

Para conseguirlo, corre

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

Eso le dará un dragonejecutable independiente : puede moverlo a donde quiera. make installlo pondré adentro $HOME/.local/bin.

De cualquier manera, entonces puedes:

dragon *.jpg

para obtener una ventana simple con botones arrastrables para cada uno de esos archivos:

Captura de pantalla del dragón que muestra algunos archivos

Puede arrastrar cualquiera de ellos a un navegador, un administrador de archivos, un editor o cualquier otro lugar que diga el protocolo estándar de arrastrar y soltar.

Si desea ir hacia el otro lado, y arrastrar las cosas hacia adentro , use --target: se imprimirán a la salida estándar, o estarán disponibles para arrastrar nuevamente si lo usa --keeptambién.


Para construir se necesita un compilador de C y las GTK + 3 cabeceras de desarrollo - si se encuentra en Arco obtendrá aquellos que sólo mediante la instalación de GTK +, pero en otras distribuciones puede que tenga que apt-get install build-essentials libgtk3-devo yum install gtk3-develo similar, en primer lugar. Aparte de eso, es completamente autónomo, sin bibliotecas constituyentes ni nada, y puede colocar el ejecutable donde lo desee.

Mi caso de uso es en su mayoría arrastrados únicos de solo unos pocos archivos (generalmente solo uno), sin importar particularmente cómo se muestran, así que si eso no se alinea con lo que quieres, entonces Dragbox (que no vi hasta recientemente) aún podría ser mejor para ti. Ayer mismo agregué el soporte para usarlo también como un objetivo de arrastre, por lo que esa parte no ha tenido mucho uso por mi parte. Sin embargo, aparte de eso, he estado usando esto con éxito durante un tiempo. Hay otros modos y opciones descritos en el archivo Léame.

Michael Homer
fuente
¡Gracias! ¡Tomó segundos construir / instalar! ¡Lo usaré! ¡La opción --target es genial!
Bonito, pequeño, binario independiente. Con un bonito y pequeño Makefile. Perfecto. ¡Gracias!
ctn
1
Usted es un héroe. Esta herramienta también está disponible en el AUR bajo el nombre dragon-drag-and-drop-git.
FichteFoll
¡Te quiero! la comunidad del arco ama a U! ¡gracias! Había estado buscando esto por años.
Yukashima huksay
28

Gracias a @derobert por recomendarme la aplicación Dragbox.

Dragbox hace exactamente lo que necesito. Por ejemplo, tengo una carpeta con varios archivos .png que me gustaría poder arrastrar a Chromium. Dentro de esa carpeta, la ejecución dragbox *.pngcrea esta ventana:

Una ventana GUI con los nombres de varios archivos listados

Puedo usar mi mouse para arrastrar archivos desde allí a Chromium, y funciona perfectamente. Sin embargo, llegar a este punto fue un dolor. Que yo sepa, Dragbox solo es oficialmente compatible con los sistemas Debian. No pude encontrarlo en ningún lugar que funcionara de forma nativa para Arch. Entonces, he escrito una guía paso a paso para hacer que Dragbox funcione en Arch Linux. Esto es casi exactamente lo que hice en mi máquina, con un par de modificaciones para seguir mejores prácticas. Si hay un error en alguna parte, puede consultar el historial de edición de esta respuesta para ver exactamente lo que hice en mi máquina.

  1. Clone la fuente de Dragbox a su computadora ejecutando git clone https://github.com/engla/dragbox.git
  2. Habrá un nuevo directorio llamado dragboxcreado dentro de su directorio de trabajo actual. Ve adentro.
  3. La instalación de Dragbox y Dragbox requiere Python 2, que es estándar en Arch Linux. Sin embargo, espera que Python 2 sea la instalación predeterminada de Python, lo cual no es cierto en Arch. Evita esto ejecutando export PYTHON=/bin/python2. Hasta que cierre su ventana de terminal actual, la variable de entorno $PYTHONtendrá el valor /bin/python2. Los scripts de instalación de Dragbox lo comprueban y lo usarán en Python 3.
  4. Ejecutar ./autogen.sh, ./configure, makey make install. make installdebe hacerse con privilegios de root (por ejemplo sudo make install).
  5. Dragbox ahora está instalado en su computadora, pero intentará usar Python 3 para ejecutarlo. Con privilegios de root, ábralo /usr/local/bin/dragboxen un editor de texto. Modificar el tinglado (la primera línea, que le dice a su shell lo ejecutable para ejecutar el script con) a partir #!/usr/bin/env pythonde #!/usr/bin/env python2.
  6. El script ahora funciona, pero no puede encontrar el módulo que contiene el programa real. Hay un par de formas en que puede solucionar esto.

    1. Incluir en su ~/.bashrclínea de lectura o similar export PYTHONPATH=$PYTHONPATH:inmediatamente (como en, ni siquiera un espacio entre) siguió mi camino a un directorio. Python ahora buscará en ese directorio cuando intente importar módulos. Dentro del directorio creado en el paso 1, habrá un directorio llamado Dropbox/(con una D mayúscula). Copie ese directorio en el directorio que agregó a su $PYTHONPATH(por ejemplo, si escribió export PYTHONPATH=$PYTHONPATH:~/python/modules, copie el Dragbox/directorio para crear ~/python/modules/Dragbox/).

    2. Probablemente peor práctica, pero puede copiar ese mismo directorio en un directorio que ya está en su $PYTHONPATH. Por ejemplo, podría copiarlo para crear /usr/lib/python2.7/site-packages/.

Si ha seguido estos pasos, ¡Dragbox debería estar funcionando! Ahora puede ejecutar man dragboxpara obtener más información sobre cómo usarlo y ejecutarlo simplemente escribiendo dragbox.

metro subterráneo
fuente
2
En realidad, el uso /usr/bin/env python2es la forma recomendada en estos días, ya que PEP 394 fue adoptado.
Gilles 'SO- deja de ser malvado'
1
No necesitas la segunda solución. Simplemente copie el Dragboxdirectorio en PYTHONPATHalgún lugar (como en python2 site-packages , ya sea sistema o por usuario). Esa línea se ejecuta solo cuando dragboxno se puede importar ese paquete.
Bakuriu
@Seth Bueno, gracias, supongo. Hice que un script de Python se ejecutara en un sistema ligeramente diferente al que estaba diseñado, que todavía tenía Python: P Sin embargo, me alegro de que fuera Python, ya que ese es el único lenguaje con el que soy lo suficientemente fluido como para haber hecho esto. ocurrir.
undergroundmonorail
2
Con Archlinux, la solución real para este tipo de cosas es escribir un PKGBUILD . En gran medida haces lo que has hecho, pero lo pones en una secuencia de comandos especial que te permite pacmanadministrar los archivos por ti para que nunca tengas que buscar en el sistema si quieres actualizarlo o eliminarlo.
HalosGhost
1
Dragbox parece estar muerto. El git-repo se ha ido.
kaleissin
6

Puede navegar fácilmente el sistema de archivos dentro de su navegador, utilizando la sintaxis:

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

Abra la ruta en una pestaña vacía y desde allí puede arrastrar y soltar su archivo. Al menos con cromo / cromo, no tienes otros navegadores aquí para probar.

Señor shunz
fuente
Esto no funciona para mí, pero no puedo decir si es un problema con el método que describe o un problema con el script de usuario que quiere que deje caer cosas ...
undergroundmonorail
Creo que hay un interruptor de línea de comando o un atributo dentro de Chrome que debe habilitar para permitir esto.
slm
¿ chrome://flagsSería el lugar adecuado para buscar algo como esto? Ahí es donde estoy mirando el momento.
undergroundmonorail
@undergroundmonorail mmm tienes razón, acabo de probar con la demostración en dropzonejs.com y no funciona. Sin embargo, definitivamente podría ser un problema de permisos
Sr. Shunz
4

Solo resolví el problema yo mismo.

Posiblemente, la forma más fácil es utilizar el cuadro de diálogo "Abrir archivo ...". Simplemente puede arrastrar y soltar desde el cuadro de diálogo del archivo gtk, al igual que un administrador de archivos.

Es posible que deba abrir una ventana separada para asegurarse de que el cuadro de diálogo no robe la pantalla.

Eso es. Así de fácil.

tenido el mismo problema
fuente
¡Increíble! No es necesario instalar nada. Estoy usando Firefox, así que no puedo hacer clic en el menú, pero Ctrl + o funciona bien.
Milan Babuškov