(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 dragon
ejecutable independiente: puede moverlo a donde quiera. make install
lo 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:
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 --keep
tambié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-dev
o yum install gtk3-devel
algo 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 *.png
se crea esta ventana:
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.
- Clona la fuente de Dragbox en tu computadora ejecutando
git clone https://github.com/engla/dragbox.git
- Habrá un nuevo directorio llamado
dragbox
creado dentro de su directorio de trabajo actual. Ve adentro. - 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$PYTHON
tendrá el valor/bin/python2
. Los scripts de instalación de Dragbox verifican esto y lo usarán en Python 3. - Ejecutar
./autogen.sh
, y ../configure
debe hacerse con privilegios de root (por ejemplo ).make
make install
make install
sudo make install
- Dragbox ahora está instalado en su computadora, pero intentará usar Python 3 para ejecutarse. Con privilegios de root, ábralo
/usr/local/bin/dragbox
en 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 python
a#!/usr/bin/env python2
. 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.
Incluya en su
~/.bashrc
o similar una línea que leaexport 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 llamadoDropbox/
(con D mayúscula). Copie ese directorio al directorio que agregó a su$PYTHONPATH
(por ejemplo, si escribióexport PYTHONPATH=$PYTHONPATH:~/python/modules
, copie elDragbox/
directorio para crear~/python/modules/Dragbox/
).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 dragbox
para 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 zenity
arrastrar y soltar desde allí.
Ejemplo:
zenity --file-selection