Kann ich ohne Dateimanager eine Datei in ein Fenster „ziehen“?

Kann ich ohne Dateimanager eine Datei in ein Fenster „ziehen“?

(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 dragonausführbare Datei, die Sie verschieben können, wohin Sie möchten. make installwird 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:

Screenshot von Dragon, der einige Dateien zeigt

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 --keepauch 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-devoder 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 *.pngdieses Fenster erstellt:

Ein GUI-Fenster mit den Namen mehrerer Dateien

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.

  1. Klonen Sie den Dragbox-Quellcode auf Ihren Computer, indem Siegit clone https://github.com/engla/dragbox.git
  2. dragboxIn Ihrem aktuellen Arbeitsverzeichnis wird ein neues Verzeichnis mit dem Namen erstellt. Gehen Sie hinein.
  3. 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, $PYTHONhat die Umgebungsvariable den Wert /bin/python2. Die Installationsskripte von Dragbox prüfen dies und verwenden es anstelle von Python 3.
  4. Die Ausführung von ./autogen.sh, ./configure, makeund make install. make installmuss mit Root-Rechten erfolgen (z. B. sudo make install).
  5. Dragbox ist jetzt auf Ihrem Computer installiert, versucht aber, es mit Python 3 auszuführen. Öffnen Sie es mit Root-Rechten /usr/local/bin/dragboxin 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 pythonin #!/usr/bin/env python2.
  6. Das Skript funktioniert nun, kann aber das Modul mit dem eigentlichen Programm nicht finden. Es gibt mehrere Möglichkeiten, dieses Problem zu beheben.

    1. Fügen Sie in Ihre ~/.bashrcoder ähnliches eine Zeile ein export 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 namens Dropbox/(mit einem großen D). Kopieren Sie dieses Verzeichnis in das Verzeichnis, das Sie zu Ihrem hinzugefügt haben $PYTHONPATH(wenn Sie beispielsweise geschrieben haben export PYTHONPATH=$PYTHONPATH:~/python/modules, kopieren Sie das Dragbox/Verzeichnis, um zu erstellen ~/python/modules/Dragbox/).

    2. 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 dragboxum 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 zenityund von dort aus per Drag & Drop verschieben.

Beispiel:

zenity --file-selection

verwandte Informationen