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

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

(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).

De vez en cuando, 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 y que requiere arrastrar y soltar. Desafortunadamente, 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 simular la acción de arrastrar y soltar? ¿Puedo decirle a mi navegador "Acabo de dejarte este archivo" 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.

Respuesta1

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 la misma picazón, lo limpié para que alguien que no fuera yo pudiera hacerlo funcionar y terminé mi lista de tareas pendientes. El código ya está activo:https://github.com/mwh/dragon

Para conseguirlo, corre

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

Esto le dará un dragonejecutable independiente: puede moverlo a donde quiera. make installlo meterá $HOME/.local/bin.

De cualquier manera, entonces puedes:

dragon *.jpg

para obtener una ventana simple con botones que se pueden arrastrar para cada uno de esos archivos:

Captura de pantalla de Dragon que muestra algunos archivos.

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

Si quieres ir por el otro lado y arrastrar cosasenpara ello, úselo --target: se imprimirán en la salida estándar o estarán disponibles para arrastrarlos nuevamente si --keeptambién los usa.


Para compilar necesitarás un compilador de C y los encabezados de desarrollo GTK+ 3. Si estás en Arch, los obtendrás simplemente instalando GTK+, pero en otras distribuciones es posible que tengas que hacerlo primero apt-get install build-essentials libgtk3-devo yum install gtk3-develalgo similar. Aparte de eso, es completamente autónomo, sin bibliotecas constituyentes ni nada, y puedes simplemente colocar el ejecutable donde quieras.

Mi caso de uso consiste principalmente en arrastrar unos pocos archivos (generalmente solo uno), sin importarme especialmente cómo aparecen, por lo que si eso no se alinea con lo que desea, entonces Dragbox (que no vi hasta recientemente) aún podría ser mejor para usted. Ayer mismo agregué el soporte para usarlo como objetivo de arrastre también, por lo que esa parte no ha tenido mucha utilidad por mi parte. Aparte de eso, he estado usando esto con éxito desde hace un tiempo. Hay otros modos y opciones descritos en el archivo Léame.

Respuesta2

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

Caja de arrastrehace 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, al ejecutar dragbox *.pngse crea esta ventana:

Una ventana GUI con los nombres de varios archivos enumerados.

Puedo usar mi mouse para arrastrar archivos desde allí a Chromium y funciona perfectamente. Sin embargo, llegar a este punto fue un dolor. Hasta donde yo sé, Dragbox solo admite oficialmente sistemas Debian. No pude encontrarlo en ningún lugar que funcionara de forma nativa para Arch. Entonces, escribí 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, puedes mirar en el historial de edición de esta respuesta para verexactamentelo que hice en mi máquina.

  1. Clona la fuente de Dragbox en tu computadora ejecutandogit 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 viene de serie en Arch Linux. Sin embargo, espera que Python 2 sea la instalación predeterminada de Python, lo cual no es cierto en Arch. Evite esto ejecutando export PYTHON=/bin/python2. Hasta que cierre la ventana de terminal actual, la variable de entorno $PYTHONtendrá el valor /bin/python2. Los scripts de instalación de Dragbox verifican esto y lo usarán en Python 3.
  4. Ejecutar ./autogen.sh, y ../configure​ debe hacerse con privilegios de root (por ejemplo ).makemake installmake installsudo make install
  5. Dragbox ahora está instalado en su computadora, pero intentará usar Python 3 para ejecutarse. Con privilegios de root, ábralo /usr/local/bin/dragboxen un editor de texto. Modifique el shebang (la primera línea, que le dice a su shell con qué ejecutable ejecutar el script) de #!/usr/bin/env pythona #!/usr/bin/env python2.
  6. El script ahora está funcionando, pero no puede encontrar el módulo que contiene el programa real. Hay un par de formas de solucionar este problema.

    1. Incluya en su ~/.bashrco similar una línea que lea export PYTHONPATH=$PYTHONPATH:inmediatamente (como en, ni siquiera un espacio entre ellas) seguida de la ruta 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 D mayúscula). Copie ese directorio al 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 sea una peor práctica, pero puede copiar ese mismo directorio a un directorio que ya esté en su archivo $PYTHONPATH. Por ejemplo, podrías copiarlo para crear /usr/lib/python2.7/site-packages/.

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

Respuesta3

Acabo de resolver el problema yo mismo.

Posiblemente la forma más sencilla sea utilizar el cuadro de diálogo "Abrir archivo...". Puedes simplemente arrastrar y soltar desde el cuadro de diálogo del archivo gtk, como si fuera un administrador de archivos.

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

Eso es todo. Así de fácil.

Respuesta4

Puede iniciar el cuadro de diálogo del archivo GTK usando una herramienta de línea de comando como zenityarrastrar y soltar desde allí.

Ejemplo:

zenity --file-selection

información relacionada