web-dev-qa-db-ja.com

ファイルマネージャなしでウィンドウにファイルを「ドラッグ」できますか?

(私はArch Linuxを使用しており、i3をwmとして、xtermをターミナルエミュレータとして使用していますが、関連するものがあるかどうかはわかりません。)

時折、ウェブサイトから、マウスでファイルをデスクトップからインターネットブラウザーのウィンドウにドラッグするように求められます。ほとんどの場合、代替手段がありますが、最近、ドラッグアンドドロップを必要とする何かを見つけました。残念ながら、私にはファイルマネージャがありません。私は自分のコンピューターのファイルシステムをbashだけでナビゲートしています。

ドラッグアンドドロップアクションを偽造できる方法はありますか?実際にそれをせずに、ブラウザに「このファイルをあなたにドロップしました」と伝えることはできますか?

最悪のシナリオは、グラフィカルファイルマネージャーをダウンロードしてファイルをWebブラウザーにドロップすることだけですが、その解決策は避けたいです。

41

私は数か月前にまったく同じ問題を抱えていて、最終的にそれを行うためのツールを書いただけです。私がこれを見て、他の誰かが同じかゆみを持っているのを見つけたとき、私以外の誰かが実際にそれを実行できるように私はそれを片付け、私のやることリストを終えました。コードが完成しました: https://github.com/mwh/dragon

それを取得するには、実行します

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

これにより、スタンドアロンのdragon実行可能ファイルが作成されます-好きな場所に移動できます。 make installはそれを$HOME/.local/binに入れます。

どちらにしても、次のことができます。

dragon *.jpg

これらの各ファイルのドラッグ可能なボタンを備えたシンプルなウィンドウを取得するには:

Screenshot of dragon showing a few files

それらのいずれかを、ブラウザー、ファイルマネージャー、エディター、または標準のドラッグアンドドロッププロトコルを使用する他の場所にドラッグできます。

反対方向に移動し、inにドラッグする場合は、--targetを使用します—標準出力に出力されるか、ドラッグして利用できます--keepを使用している場合も同様です。


ビルドするには、CコンパイラとGTK + 3開発ヘッダーが必要です。Archを使用している場合は、GTK +をインストールするだけでそれらを取得できますが、他のディストリビューションでは、最初にapt-get install build-essentials libgtk3-devまたはyum install gtk3-develまたは同様のものが必要になる場合があります。それ以外は、完全に自己完結型であり、構成ライブラリなどは何もありません。実行可能ファイルを好きな場所に置くだけです。

私のユースケースは、ほとんどがいくつかのファイル(通常は1つ)の1回限りのドラッグですが、それらがどのように表示されるかを特に気にする必要はありません。最近)まだあなたのために良いかもしれません。ちょうど昨日、それをドラッグターゲットとして使用するためのサポートも追加したので、その部分は私の側ではあまり役に立ちませんでした。それ以外は、しばらく使ってきました。 readmeファイルに記載されている他のモードとオプションがあります。

20
Michael Homer

Dragboxアプリケーションを推奨してくれた@derobertに感謝します。

Dragbox は、まさに私が必要としていることを行います。たとえば、Chromiumにドラッグしたい多数の.pngファイルを含むフォルダがあります。そのフォルダー内でdragbox *.pngを実行すると、次のウィンドウが作成されます。

A GUI window with the names of several files listed

マウスを使用してファイルをそこからChromiumにドラッグでき、問題なく動作します。しかし、ここまでたどり着くのは大変でした。私の知る限り、Dragboxは公式にDebianシステムのみをサポートしています。 Archでネイティブに機能する場所はどこにもありませんでした。そこで、DragboxをArch Linuxで動作させるためのステップバイステップガイドを作成しました。これはほぼ正確に私のマシンで実行したことであり、より良いプラクティスに従うためにいくつかの変更が加えられています。どこかにエラーがある場合は、この回答の編集履歴を見て、マシンで正確に何をしたかを確認できます。

  1. git clone https://github.com/engla/dragbox.gitを実行して、Dragboxのソースをコンピュータにクローンします
  2. 現在の作業ディレクトリ内にdragboxという新しいディレクトリが作成されます。中に入る。
  3. DragboxとDragboxのインストールにはPython 2が必要です。これはArch Linuxに標準で付属しています。ただし、Python 2がデフォルトであることを期待していますPythonインストール、これはArchでは当てはまりません。export PYTHON=/bin/python2を実行してこれを回避してください。現在のターミナルウィンドウを閉じるまで、環境変数$PYTHONの値は/bin/python2になります。 Dragboxのインストールスクリプトはそれをチェックし、Python 3。
  4. ./autogen.sh./configuremakeおよびmake installを実行します。 make installはroot権限で実行する必要があります(例:Sudo make install)。
  5. Dragboxがコンピュータにインストールされましたが、Python 3を使用して実行しようとしています。root権限で、テキストエディタで/usr/local/bin/dragboxを開きます。Shebang(最初のこの行は、スクリプトを実行する実行可能ファイルをシェルに指示します)#!/usr/bin/env pythonから#!/usr/bin/env python2
  6. スクリプトは動作していますが、実際のプログラムを含むモジュールを見つけることができません。これを修正する方法はいくつかあります。

    1. ~/.bashrcまたは同様の行に、すぐにexport PYTHONPATH=$PYTHONPATH:を読み取る行を含めます(例:間にスペースはありません)。 Pythonはモジュールをインポートしようとしたときにそのディレクトリを参照します。ステップ1で作成したディレクトリ内に、Dropbox/という名前のディレクトリがあります(大文字のD)。コピーそのディレクトリを$PYTHONPATHに追加したディレクトリに追加します(たとえば、export PYTHONPATH=$PYTHONPATH:~/python/modulesを作成した場合は、Dragbox/ディレクトリをコピーして~/python/modules/Dragbox/を作成します)。

    2. おそらくもっと悪い習慣ですが、同じディレクトリをすでに$PYTHONPATHにあるディレクトリにコピーできます。たとえば、コピーして/usr/lib/python2.7/site-packages/を作成できます。

これらの手順を実行した場合は、Dragboxが機能しているはずです。これでman dragboxを実行して、その使用方法の詳細を確認し、dragboxと入力するだけで起動できます。

28

次の構文を使用して、ブラウザ内でファイルシステムを簡単にナビゲートできます。

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

空のタブでパスを開き、そこからファイルをドラッグアンドドロップできます。少なくともchrome/chromiumでは、ここで他のブラウザを試してはいけません。

6
Mr Shunz

自分で問題を解決しました。

おそらく最も簡単な方法は、[ファイルを開く...]ダイアログを使用することです。ファイルマネージャのように、gtkファイルダイアログからドラッグアンドドロップするだけです。

ダイアログが画面を盗まないようにするために、別のウィンドウを開く必要がある場合があります。

それでおしまい。簡単です。

4