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

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

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

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

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

最悪の場合、Web ブラウザーにファイルをドロップするためだけにグラフィカル ファイル マネージャーをダウンロードすることもできますが、その解決策は避けたいと思います。

答え1

数か月前にまったく同じ問題を抱えていたので、結局は自分で解決するツールを作成しました。これを見て、他にも同じ問題を抱えている人がいることがわかったので、自分以外の誰かが実際に実行できるようにクリーンアップして、ToDo リストを完了しました。コードは次の通りです。https://github.com/mwh/dragon

入手するには、

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

これにより、スタンドアロンのdragon実行可能ファイルが作成され、任意の場所に移動できます。make installに配置します$HOME/.local/bin

どちらの方法でも、次のことができます。

dragon *.jpg

各ファイルごとにドラッグ可能なボタンを備えたシンプルなウィンドウを取得します。

いくつかのファイルを表示するドラゴンのスクリーンショット

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

逆に物事を引っ張ってそれに を使用すると、--target標準出力に印刷されるか、 も使用すれば再度ドラッグして取り出すことができます--keep


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

私の使用ケースは、主に数個のファイル (通常は 1 つだけ) を 1 回だけドラッグするものであり、その表示方法を特に気にするものではありません。そのため、それが希望に合わない場合は、Dragbox (最近まで見たことがありませんでした) の方が適しているかもしれません。ちょうど昨日、ドラッグ ターゲットとして使用するためのサポートも追加したので、その部分は私の側ではあまり役に立ちませんでした。ただし、それ以外は、しばらくの間これをうまく使用しています。readme ファイルには、他のモードとオプションが記載されています。

答え2

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

ドラッグボックスまさに必要なことを実行します。たとえば、Chromium にドラッグできるようにしたい .png ファイルがいくつか入ったフォルダーがあります。そのフォルダー内で実行すると、dragbox *.png次のウィンドウが作成されます。

複数のファイル名がリストされたGUIウィンドウ

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

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

    1. ~/.bashrcまたは同様の に、 の直後に (間にスペースも入れない) という行をexport PYTHONPATH=$PYTHONPATH:ディレクトリへのパスに含めます。これで、Python はモジュールをインポートするときにそのディレクトリを参照するようになります。手順 1 で作成したディレクトリ内に、 Dropbox/(大文字の D) というディレクトリがあります。そのディレクトリを に追加したディレクトリにコピーします$PYTHONPATH(たとえば、 と書いた場合はexport PYTHONPATH=$PYTHONPATH:~/python/modulesDragbox/ディレクトリをコピーして を作成します~/python/modules/Dragbox/)。

    2. おそらくこれはあまり良くない方法ですが、同じディレクトリを にすでに存在するディレクトリにコピーすることができます$PYTHONPATH。たとえば、 をコピーして を作成できます/usr/lib/python2.7/site-packages/

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

答え3

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

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

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

それだけです。簡単です。

答え4

のようなコマンドライン ツールを使用して GTK ファイル ダイアログを起動しzenity、そこからドラッグ アンド ドロップすることができます。

例:

zenity --file-selection

関連情報