(Ich verwende Arch Linux, i3 als WM und xterm als Terminalemulator, weiß aber nicht, ob das relevant ist.)
Gelegentlich werde ich von einer Website aufgefordert, eine Datei mit der Maus von meinem Desktop in das Fenster des Internetbrowsers zu ziehen. Fast immer gibt es eine Alternative, aber vor kurzem habe ich etwas gefunden, das ich tun möchte und das Drag & Drop erfordert. Leider habe ich keinen Dateimanager. Ich navigiere ausschließlich über Bash durch das Dateisystem meines Computers.
Gibt es eine Möglichkeit, die Drag-and-Drop-Aktion vorzutäuschen? Kann ich meinem Browser sagen: „Ich habe diese Datei gerade bei dir abgelegt“, ohne dies tatsächlich zu tun?
Im schlimmsten Fall kann ich einen grafischen Dateimanager herunterladen, der ausschließlich dazu dient, Dateien in meinen Webbrowser abzulegen, aber diese Lösung möchte ich vermeiden.
Antwort1
Ich hatte vor ein paar Monaten genau das gleiche Problem und habe letztendlich einfach ein Tool geschrieben, das das für mich erledigt. Als ich das sah und feststellte, dass jemand anderes das gleiche Problem hatte, habe ich es bereinigt, damit jemand anderes als ich es tatsächlich zum Laufen bringen konnte, und meine To-Do-Liste abgearbeitet. Der Code ist jetzt verfügbar:https://github.com/mwh/dragon
Um es zu erhalten, führen Sie
git clone https://github.com/mwh/dragon.git
cd dragon
make
Dadurch erhalten Sie eine eigenständige dragon
ausführbare Datei, die Sie verschieben können, wohin Sie möchten. make install
wird sie in einfügen $HOME/.local/bin
.
In beiden Fällen können Sie dann:
dragon *.jpg
um ein einfaches Fenster mit verschiebbaren Schaltflächen für jede dieser Dateien zu erhalten:
Sie können alle davon in einen Browser, einen Dateimanager, einen Editor oder an einen anderen Ort ziehen, der das Standard-Drag-and-Drop-Protokoll unterstützt.
Wenn Sie den anderen Weg gehen und Dinge ziehen möchtenInverwenden Sie dazu --target
— sie werden in der Standardausgabe gedruckt oder stehen zum erneuten Herausziehen zur Verfügung, wenn Sie --keep
auch verwenden.
Zum Erstellen benötigen Sie einen C-Compiler und die GTK+ 3-Entwicklungsheader. Wenn Sie Arch verwenden, erhalten Sie diese einfach durch die Installation von GTK+, bei anderen Distributionen müssen Sie dies möglicherweise zuerst tun apt-get install build-essentials libgtk3-dev
oder yum install gtk3-devel
ähnliches. Abgesehen davon ist es vollständig in sich geschlossen, ohne Bestandteilbibliotheken oder Ähnliches, und Sie können die ausführbare Datei einfach dort ablegen, wo Sie möchten.
Mein Anwendungsfall besteht hauptsächlich aus einmaligen Drags von nur wenigen Dateien (normalerweise nur einer), ohne dass ich mich besonders darum kümmere, wie sie angezeigt werden. Wenn das also nicht Ihren Wünschen entspricht, ist Dragbox (das ich bis vor kurzem nicht gesehen habe) möglicherweise immer noch besser für Sie. Erst gestern habe ich die Unterstützung für die Verwendung als Drag-Ziel hinzugefügt, daher wurde dieser Teil von mir nicht viel genutzt. Abgesehen davon verwende ich dies jedoch schon seit einiger Zeit erfolgreich. In der Readme-Datei sind weitere Modi und Optionen beschrieben.
Antwort2
Danke an @derobert für die Empfehlung der Dragbox-Anwendung.
Dragboxtut genau das, was ich brauche. Ich habe beispielsweise einen Ordner mit einer Reihe von PNG-Dateien, die ich gerne in Chromium ziehen möchte. In diesem Ordner wird bei der Ausführung dragbox *.png
dieses Fenster erstellt:
Ich kann meine Maus verwenden, um Dateien von dort in Chromium zu ziehen, und es funktioniert einwandfrei. Allerdings war es mühsam, an diesen Punkt zu gelangen. Soweit ich weiß, unterstützt Dragbox offiziell nur Debian-Systeme. Ich konnte nirgendwo etwas finden, das nativ für Arch funktionierte. Also habe ich eine Schritt-für-Schritt-Anleitung geschrieben, um Dragbox in Arch Linux zum Laufen zu bringen. Dies ist fast genau das, was ich auf meinem Rechner gemacht habe, mit ein paar Änderungen, um bessere Praktiken zu befolgen. Wenn irgendwo ein Fehler auftritt, können Sie im Bearbeitungsverlauf dieser Antwort nachsehen, um zu sehengenauwas ich auf meiner Maschine gemacht habe.
- Klonen Sie den Dragbox-Quellcode auf Ihren Computer, indem Sie
git clone https://github.com/engla/dragbox.git
dragbox
In Ihrem aktuellen Arbeitsverzeichnis wird ein neues Verzeichnis mit dem Namen erstellt. Gehen Sie hinein.- Dragbox und die Installation von Dragbox erfordern Python 2, das standardmäßig auf Arch Linux installiert ist. Allerdings wird Python 2 als Standard-Python-Installation vorausgesetzt, was auf Arch nicht der Fall ist. Umgehen Sie dies, indem Sie ausführen
export PYTHON=/bin/python2
. Bis Sie Ihr aktuelles Terminalfenster schließen,$PYTHON
hat die Umgebungsvariable den Wert/bin/python2
. Die Installationsskripte von Dragbox prüfen dies und verwenden es anstelle von Python 3. - Die Ausführung von
./autogen.sh
,./configure
,make
undmake install
.make install
muss mit Root-Rechten erfolgen (z. B.sudo make install
). - Dragbox ist jetzt auf Ihrem Computer installiert, versucht aber, es mit Python 3 auszuführen. Öffnen Sie es mit Root-Rechten
/usr/local/bin/dragbox
in einem Texteditor. Ändern Sie den Shebang (die erste Zeile, die Ihrer Shell mitteilt, mit welcher ausführbaren Datei das Skript ausgeführt werden soll) von#!/usr/bin/env python
in#!/usr/bin/env python2
. Das Skript funktioniert nun, kann aber das Modul mit dem eigentlichen Programm nicht finden. Es gibt mehrere Möglichkeiten, dieses Problem zu beheben.
Fügen Sie in Ihre
~/.bashrc
oder ähnliches eine Zeile einexport PYTHONPATH=$PYTHONPATH:
, in der „unmittelbar gefolgt von“ (also ohne Leerzeichen) der Pfad zu einem Verzeichnis steht. Python sucht jetzt in diesem Verzeichnis, wenn es versucht, Module zu importieren. In dem Verzeichnis, das Sie in Schritt 1 erstellt haben, befindet sich ein Verzeichnis namensDropbox/
(mit einem großen D). Kopieren Sie dieses Verzeichnis in das Verzeichnis, das Sie zu Ihrem hinzugefügt haben$PYTHONPATH
(wenn Sie beispielsweise geschrieben habenexport PYTHONPATH=$PYTHONPATH:~/python/modules
, kopieren Sie dasDragbox/
Verzeichnis, um zu erstellen~/python/modules/Dragbox/
).Das ist wahrscheinlich die schlechtere Vorgehensweise, aber Sie können dasselbe Verzeichnis in ein Verzeichnis kopieren, das sich bereits in Ihrem befindet
$PYTHONPATH
. Sie könnten es beispielsweise kopieren, um zu erstellen/usr/lib/python2.7/site-packages/
.
Wenn Sie diese Schritte befolgt haben, sollte Dragbox funktionieren! Sie können es jetzt ausführen, man dragbox
um mehr über die Verwendung zu erfahren, und es durch einfaches Eintippen starten dragbox
.
Antwort3
Habe das Problem gerade selbst gelöst.
Der wohl einfachste Weg ist die Verwendung des Dialogfelds „Datei öffnen ...“. Sie können die Datei einfach per Drag & Drop aus dem GTK-Dateidialogfeld ziehen, genau wie bei einem Dateimanager.
Möglicherweise müssen Sie ein separates Fenster öffnen, um sicherzustellen, dass der Dialog nicht den ganzen Bildschirm einnimmt.
Das ist es. So einfach.
Antwort4
Sie können den GTK-Dateidialog mit einem Befehlszeilentool wie starten zenity
und von dort aus per Drag & Drop verschieben.
Beispiel:
zenity --file-selection