Puis-je «faire glisser» un fichier dans une fenêtre sans gestionnaire de fichiers?


41

(Je suis sur Arch Linux, utilisant i3 comme wm et xterm comme émulateur de terminal, bien que je ne sache pas si cela est pertinent.)

De temps en temps, un site Web me demande de faire glisser un fichier avec la souris de mon bureau vers la fenêtre du navigateur Internet. Presque toujours, il existe une alternative, mais récemment, j'ai trouvé quelque chose que je veux faire qui nécessite le glisser-déposer. Malheureusement, je n'ai pas de gestionnaire de fichiers. Je navigue dans le système de fichiers de mon ordinateur uniquement via bash.

Existe-t-il un moyen de simuler l'action du glisser-déposer? Puis-je dire à mon navigateur "Je viens de déposer ce fichier sur vous" sans le faire réellement?

Dans le pire des cas, je peux télécharger un gestionnaire de fichiers graphique exclusivement pour déposer des fichiers dans mon navigateur Web, mais j'aimerais éviter cette solution.


3
> Puis-je dire à mon navigateur "Je viens de déposer ce fichier sur vous" sans le faire réellement? "Cela semble être une excellente question pour la communauté javascript sur stackexchange.
jayhendren

Voir aussi www: mécaniser ou un dérivé. Il semble y avoir du perl et du python. Plus il y a de solutions, mieux c'est!


1
dragbox n'existe plus. veuillez changer votre réponse acceptée.
Yukukima huksay

1
@yukashimahuksay fait, merci pour le heads-up
undergroundmonorail

Réponses:


20

J'ai eu exactement le même problème il y a quelques mois et je viens juste d'écrire un outil pour le faire à ma place. Quand j'ai vu cela et que j'ai trouvé quelqu'un d'autre qui avait le même problème, je l'ai nettoyé de sorte que quelqu'un d'autre que moi puisse le faire fonctionner et j'ai terminé ma liste de choses à faire. Le code est maintenant disponible: https://github.com/mwh/dragon

Pour l'obtenir, lancez

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

Cela vous donnera un dragonexécutable autonome - vous pouvez le déplacer où vous voulez. make installva le mettre dans $HOME/.local/bin.

De toute façon, vous pouvez alors:

dragon *.jpg

pour obtenir une simple fenêtre avec des boutons glissables pour chacun de ces fichiers:

Capture d'écran de dragon montrant quelques fichiers

Vous pouvez faire glisser n'importe lequel de ces éléments dans un navigateur, un gestionnaire de fichiers, un éditeur ou n'importe quel autre lieu utilisant le protocole standard de glisser-déposer.

Si vous voulez aller dans l'autre sens, et les choses glisser dans lui, l' utilisation --target- ils seront imprimés sur la sortie standard ou disponible pour traîner à nouveau avec si vous utilisez --keepaussi bien.


Pour vous construire aurez besoin d' un compilateur C et les en- têtes de développement GTK + 3 - si vous êtes sur Arc vous obtiendrez ceux qui viennent en installant GTK +, mais sur d' autres distributions , vous devrez peut-être apt-get install build-essentials libgtk3-devou yum install gtk3-develou similaire en premier. En dehors de cela, il est entièrement autonome, sans aucune bibliothèque constitutive, et vous pouvez simplement placer l'exécutable où vous voulez.

Mon cas d'utilisation est principalement constitué de quelques fichiers uniques (généralement un seul), sans se soucier de la façon dont ils apparaissent, donc si cela ne correspond pas à ce que vous voulez, alors Dragbox (que je n'ai pas vu jusqu'à ce que récemment) pourrait encore être mieux pour vous. Hier encore, j’ai ajouté le support pour l’utiliser comme cible de glissement, de sorte que cette partie n’a pas eu beaucoup d’usage de ma part. Autre que cela, cependant, je l'utilise avec succès depuis un certain temps maintenant. Il existe d'autres modes et options décrits dans le fichier lisez-moi.


Merci! Il a fallu quelques secondes pour construire / installer! Je vais utiliser ça! L'option --target est géniale!

Nice, petit binaire autonome. Avec un joli petit Makefile. Parfait. Merci!
ctn

1
Vous êtes un héros. Cet outil est également disponible sur l’AUR sous son nom dragon-drag-and-drop-git.
FichteFoll

Je t'aime! arch communauté aime U! Je vous remercie! Je cherchais cela depuis des lustres.
Yukashima huksay

28

Merci à @derobert de m'avoir recommandé l'application Dragbox.

Dragbox fait exactement ce dont j'ai besoin. Par exemple, j'ai un dossier avec un certain nombre de fichiers .png que j'aimerais pouvoir faire glisser dans Chromium. Dans ce dossier, l'exécution dragbox *.pngcrée cette fenêtre:

Une fenêtre graphique avec les noms de plusieurs fichiers listés

Je peux utiliser ma souris pour faire glisser des fichiers à partir de là dans Chromium, et cela fonctionne parfaitement. Cependant, arriver à ce point était une douleur. Autant que je sache, Dragbox ne supporte officiellement que les systèmes Debian. Je ne pouvais pas le trouver n'importe où qui a fonctionné nativement pour Arch. J'ai donc écrit un guide étape par étape pour que Dragbox fonctionne avec Arch Linux. C'est presque exactement ce que j'ai fait sur ma machine, avec quelques modifications pour suivre de meilleures pratiques. S'il y a une erreur quelque part, vous pouvez consulter l'historique des modifications de cette réponse pour voir exactement ce que j'ai fait sur ma machine.

  1. Cloner la source de Dragbox sur votre ordinateur en exécutant git clone https://github.com/engla/dragbox.git
  2. Il y aura un nouveau répertoire appelé dragboxcréé dans votre répertoire de travail actuel. Aller à l'intérieur.
  3. L’installation de Dragbox et Dragbox nécessite Python 2, qui est livré en standard sur Arch Linux. Cependant, il s'attend à ce que Python 2 soit l'installation par défaut de Python, ce qui n'est pas le cas sur Arch. Contourner cela en exécutant export PYTHON=/bin/python2. Jusqu'à ce que vous fermiez la fenêtre de votre terminal actuel, la variable d'environnement $PYTHONaura la valeur /bin/python2. Les scripts d'installation de Dragbox vérifient cela et l'utiliseront avec Python 3.
  4. Exécuter ./autogen.sh, ./configure, makeet make install. make installdoit être fait avec les privilèges root (par exemple sudo make install).
  5. Dragbox est maintenant installé sur votre ordinateur, mais il va essayer d’utiliser Python 3 pour s’exécuter. Avec les privilèges root, ouvrez-vous /usr/local/bin/dragboxdans un éditeur de texte. Modifier le tralala (la première ligne, qui indique à votre shell exécutable que pour exécuter le script avec) de #!/usr/bin/env pythonà #!/usr/bin/env python2.
  6. Le script fonctionne maintenant, mais il ne trouve pas le module contenant le programme actuel. Vous pouvez résoudre ce problème de plusieurs manières.

    1. Inclure dans votre ~/.bashrcou similaire une ligne lisant export PYTHONPATH=$PYTHONPATH:immédiatement (comme dans, même pas un espace entre) suivi mon chemin vers un répertoire. Python va maintenant regarder dans ce répertoire lorsque vous essayez d'importer des modules. Dans le répertoire créé à l'étape 1, il y aura un répertoire appelé Dropbox/(avec un D majuscule). Copiez ce répertoire dans le répertoire que vous avez ajouté à votre $PYTHONPATH(par exemple, si vous avez écrit export PYTHONPATH=$PYTHONPATH:~/python/modules, copiez le Dragbox/répertoire à créer ~/python/modules/Dragbox/).

    2. Probablement pire pratique, mais vous pouvez copier ce même répertoire dans un répertoire déjà présent dans votre répertoire $PYTHONPATH. Par exemple, vous pouvez le copier pour le créer /usr/lib/python2.7/site-packages/.

Si vous avez suivi ces étapes, Dragbox devrait fonctionner! Vous pouvez maintenant exécuter man dragboxpour en apprendre plus sur son utilisation et le lancer en tapant simplement dragbox.


2
En fait, l'utilisation /usr/bin/env python2est la méthode recommandée de nos jours, depuis l' adoption du PEP 394 .
Gilles, arrête de faire le mal

1
Vous n'avez pas besoin du deuxième correctif. Copiez simplement le Dragboxrépertoire dans PYTHONPATHquelque part (comme dans python2 site-packages , système ou utilisateur par utilisateur). Cette ligne est exécutée uniquement quand il dragboxest impossible d'importer ce package.
Bakuriu

@ Seth Eh bien, merci, je suppose. J'ai créé un script python sur un système légèrement différent de celui pour lequel il avait été conçu, qui contenait toujours du python: P se produire.
undergroundmonorail

2
Avec Archlinux, la vraie solution pour ce type d’opérations est de créer un PKGBUILD . Vous faites en grande partie ce que vous avez fait, mais vous le mettez dans un script spécial qui vous permet pacmande gérer les fichiers pour que vous n'ayez jamais à vous perdre dans le système si vous souhaitez le mettre à jour ou le supprimer.
HalosGhost

1
Dragbox semble être mort. Le git-repo est parti.
Kaleissin

6

Vous pouvez facilement naviguer dans le système de fichiers dans votre navigateur, en utilisant la syntaxe:

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

Ouvrez le chemin dans un onglet vide et à partir de là, vous pourrez glisser-déposer votre fichier. Au moins avec chrome / chrome, n’avez pas d’autres navigateurs à essayer.


Cela ne fonctionne pas pour moi, mais je ne peux pas dire si c'est un problème avec la méthode que vous décrivez ou un problème avec le script utilisateur qui veut que je laisse tomber des choses ...
undergroundmonorail

Je pense qu’il faut activer un commutateur de ligne de commande ou un attribut dans Chrome pour autoriser cela.
slm

Serait chrome://flagsle bon endroit pour chercher quelque chose comme ça? C'est là que je regarde le moment.
undergroundmonorail

@undergroundmonorail mmm vous avez raison, je viens d'essayer la démo sur dropzonejs.com et cela ne fonctionne pas. Pourrait être définitivement un problème de permission, cependant
Mr Shunz


4

Juste résolu le problème moi-même.

Le moyen le plus simple consiste probablement à utiliser le dialogue "Ouvrir le fichier ...". Vous pouvez simplement faire glisser et déposer à partir de la boîte de dialogue de fichier gtk, tout comme un gestionnaire de fichiers.

Vous devrez peut-être ouvrir une fenêtre distincte pour vous assurer que la boîte de dialogue ne dérobe pas l'écran.

C'est ça. C'est facile.


Impressionnant! Pas besoin d'installer quoi que ce soit. J'utilise Firefox, donc je ne peux pas cliquer sur le menu, mais Ctrl + o fonctionne très bien.
Milan Babuškov
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.