Bisakah saya "menyeret" file ke jendela tanpa file manager?

41

(Saya menggunakan Arch Linux, menggunakan i3 sebagai wm dan xterm sebagai emulator terminal, meskipun saya tidak tahu apakah ada yang relevan.)

Kadang-kadang, sebuah situs web meminta saya untuk menyeret file dengan mouse saya dari desktop saya ke jendela browser internet. Hampir selalu, ada alternatif, tetapi baru-baru ini saya menemukan sesuatu yang ingin saya lakukan yang memerlukan drag and drop. Sayangnya, saya tidak memiliki manajer file. Saya menavigasi sistem file komputer saya hanya melalui bash.

Apakah ada cara saya bisa memalsukan aksi seret dan lepas? Dapatkah saya memberi tahu browser saya "Saya baru saja menjatuhkan file ini ke Anda" tanpa benar-benar melakukannya?

Skenario terburuk, saya dapat mengunduh file manager grafis secara eksklusif untuk meletakkan file ke browser web saya, tetapi saya ingin menghindari solusi itu.

monmon bawah tanah
sumber
3
> Dapatkah saya memberi tahu browser saya "Saya baru saja menjatuhkan file ini ke Anda" tanpa benar-benar melakukannya? "Kedengarannya seperti pertanyaan yang bagus untuk komunitas javascript di
stackexchange
Juga lihat www: mekanisasi atau turunan. Tampaknya ada perl dan python. Semakin banyak solusi semakin baik!
Terkait: Bagaimana cara saya menginstal skrip pengguna di Chrome di Linux?
Gilles 'SANGAT berhenti menjadi jahat'
1
dragbox tidak ada lagi. harap ubah jawaban yang Anda terima.
yukashima huksay
1
@yukashimahuksay selesai, terima kasih atas kepala
undergroundmonorail

Jawaban:

19

Saya memiliki masalah yang sama persis beberapa bulan yang lalu dan akhirnya hanya menulis alat untuk melakukannya untuk saya. Ketika saya melihat ini dan menemukan orang lain memiliki gatal yang sama saya membersihkannya sehingga orang lain selain saya benar-benar bisa menjalankannya, dan menyelesaikan daftar pekerjaan saya. Kode sudah habis sekarang: https://github.com/mwh/dragon

Untuk mendapatkannya, jalankan

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

Itu akan memberi Anda dragoneksekusi mandiri - Anda dapat memindahkannya ke mana pun Anda inginkan. make installakan memasukkannya ke dalam $HOME/.local/bin.

Bagaimanapun, Anda dapat:

dragon *.jpg

untuk mendapatkan jendela sederhana dengan tombol yang dapat diseret untuk masing-masing file tersebut:

Cuplikan layar naga menunjukkan beberapa file

Anda dapat menyeret semua itu ke dalam browser, pengelola file, editor, atau di mana pun yang menggunakan protokol seret-dan-jatuhkan standar.

Jika Anda ingin pergi ke arah lain, dan tarik hal di untuk itu, penggunaan --target- mereka akan dicetak ke output standar, atau tersedia untuk menyeret keluar lagi dengan jika Anda menggunakan --keepjuga.


Untuk membangun Anda akan memerlukan C compiler dan header pengembangan GTK + 3 - jika Anda berada di Arch Anda akan mendapatkan orang-orang hanya dengan menginstal GTK +, tapi pada distro lain Anda mungkin harus apt-get install build-essentials libgtk3-devatau yum install gtk3-develatau serupa pertama. Selain itu sepenuhnya mandiri, tanpa perpustakaan konstituen atau apa pun, dan Anda bisa meletakkan executable di mana Anda inginkan.

Kasus penggunaan saya sebagian besar hanya satu kali seret dari beberapa file (biasanya hanya satu), tanpa terlalu peduli bagaimana mereka muncul, jadi jika itu tidak sesuai dengan apa yang Anda inginkan maka Dragbox (yang saya tidak melihat sampai baru-baru ini) mungkin masih lebih baik untuk Anda. Baru kemarin saya menambahkan dukungan untuk menggunakannya sebagai target drag juga, sehingga bagian itu tidak banyak digunakan pada akhir saya. Selain itu, saya telah menggunakan ini dengan sukses untuk sementara waktu sekarang. Ada mode dan opsi lain yang dijelaskan dalam file readme.

Michael Homer
sumber
Terima kasih! Butuh beberapa detik untuk membangun / menginstal! Saya akan menggunakannya! Opsi --target adalah ledakan!
Biner bagus, kecil, mandiri. Dengan Makefile kecil yang bagus. Sempurna. Terima kasih!
ctn
1
Anda adalah seorang pahlawan. Alat ini juga tersedia di AUR dengan nama dragon-drag-and-drop-git.
FichteFoll
Aku cinta kamu! komunitas lengkung mencintai Anda! Terima kasih! Saya telah mencari ini selama berabad-abad.
yukashima huksay
28

Terima kasih kepada @derobert karena merekomendasikan aplikasi Dragbox kepada saya.

Dragbox melakukan apa yang saya butuhkan. Misalnya, saya memiliki folder dengan sejumlah file .png yang ingin saya seret ke Chromium. Di dalam folder itu, mengeksekusi dragbox *.pngmembuat jendela ini:

Jendela GUI dengan nama beberapa file terdaftar

Saya dapat menggunakan mouse untuk menyeret file dari sana ke Chromium, dan itu berfungsi dengan sempurna. Namun, mencapai titik ini adalah rasa sakit. Sejauh yang saya ketahui, Dragbox hanya secara resmi mendukung sistem Debian. Saya tidak dapat menemukannya di mana pun yang asli bekerja untuk Arch. Jadi, saya telah menulis panduan langkah demi langkah untuk membuat Dragbox berfungsi di Arch Linux. Ini hampir persis seperti yang saya lakukan pada mesin saya, dengan beberapa modifikasi untuk mengikuti praktik yang lebih baik. Jika ada suatu tempat kesalahan, Anda dapat melihat dalam sejarah mengedit jawaban ini untuk melihat persis apa yang saya lakukan di mesin saya.

  1. Sumber Clone Dragbox ke komputer Anda dengan menjalankan git clone https://github.com/engla/dragbox.git
  2. Akan ada direktori baru yang disebut dragboxdibuat di dalam direktori kerja Anda saat ini. Masuk ke dalam.
  3. Instalasi Dragbox dan Dragbox memerlukan Python 2, yang merupakan standar pada Arch Linux. Namun, ia mengharapkan Python 2 menjadi instalasi Python default, yang tidak benar pada Arch. Menyiasati ini dengan mengeksekusi export PYTHON=/bin/python2. Sampai Anda menutup jendela terminal Anda saat ini, variabel lingkungan $PYTHONakan memiliki nilai /bin/python2. Skrip instalasi Dragbox memeriksa hal itu, dan akan menggunakannya di atas Python 3.
  4. Mengeksekusi ./autogen.sh, ./configure, makedan make install. make installharus dilakukan dengan root privilege (mis sudo make install).
  5. Dragbox sekarang diinstal pada komputer Anda, tetapi akan mencoba menggunakan Python 3 untuk menjalankannya. Dengan hak akses root, buka /usr/local/bin/dragboxdi editor teks. Memodifikasi peristiwa (baris pertama, yang memberitahu shell Anda apa yang dieksekusi untuk menjalankan script dengan) dari #!/usr/bin/env pythonke #!/usr/bin/env python2.
  6. Skrip sekarang berfungsi, tetapi tidak dapat menemukan modul yang berisi program yang sebenarnya. Ada beberapa cara untuk memperbaikinya.

    1. Sertakan dalam ~/.bashrcbaris Anda atau yang sejenis dengan export PYTHONPATH=$PYTHONPATH:segera membaca (seperti dalam, bahkan tidak ada spasi di antara) mengikuti jalur saya ke direktori. Python sekarang akan mencari di direktori itu ketika mencoba mengimpor modul. Di dalam direktori yang dibuat kembali pada langkah 1, akan ada direktori yang disebut Dropbox/(dengan huruf kapital D). Salin direktori itu ke direktori yang Anda tambahkan ke $PYTHONPATH(misalnya jika Anda menulis export PYTHONPATH=$PYTHONPATH:~/python/modules, salin Dragbox/direktori yang akan dibuat ~/python/modules/Dragbox/).

    2. Mungkin praktik yang lebih buruk, tetapi Anda dapat menyalin direktori yang sama ke direktori yang sudah ada di Anda $PYTHONPATH. Misalnya, Anda dapat menyalinnya untuk membuat /usr/lib/python2.7/site-packages/.

Jika Anda telah mengikuti langkah-langkah ini, Dragbox seharusnya berfungsi! Anda sekarang dapat menjalankan man dragboxuntuk mempelajari lebih lanjut tentang cara menggunakannya, dan meluncurkannya hanya dengan mengetik dragbox.

monmon bawah tanah
sumber
2
Sebenarnya, menggunakan /usr/bin/env python2adalah cara yang disarankan hari ini, karena PEP 394 diadopsi.
Gilles 'SANGAT berhenti menjadi jahat'
1
Anda tidak perlu perbaikan kedua. Cukup salin Dragboxdirektori ke PYTHONPATHsuatu tempat (seperti di python2 site-packages , baik sistem atau per-pengguna). Baris itu dijalankan hanya ketika dragboxtidak dapat mengimpor paket itu.
Bakuriu
@Seth Yah, terima kasih kurasa. Saya membuat skrip python berjalan pada sistem yang sedikit berbeda dari yang dirancang untuk itu, yang masih memiliki python di atasnya: P Saya senang itu python, meskipun, karena itu satu-satunya bahasa saya cukup fasih untuk membuat ini terjadi.
undergroundmonorail
2
Dengan Archlinux, solusi nyata untuk hal semacam ini adalah dengan menggunakan PKGBUILD . Anda sebagian besar melakukan apa yang telah Anda lakukan, tetapi Anda memasukkannya ke dalam skrip khusus yang memungkinkan pacmanuntuk mengelola file untuk Anda sehingga Anda tidak perlu pergi mucking di dalam sistem jika Anda ingin memperbarui atau menghapusnya.
HalosGhost
1
Dragbox sepertinya sudah mati. Git-repo hilang.
kaleissin
6

Anda dapat dengan mudah menavigasi sistem file dalam browser Anda, menggunakan sintaks:

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

Buka jalur di tab kosong dan dari sana Anda dapat menarik dan melepas file Anda. Paling tidak dengan chrome / chromium, tidak ada browser lain di sini untuk mencoba.

Tuan Shunz
sumber
Ini tidak berfungsi untuk saya, tapi saya tidak tahu apakah ini masalah dengan metode yang Anda jelaskan atau masalah dengan skrip pengguna yang ingin saya kirim barang ...
undergroundmonorail
Saya pikir ada saklar baris perintah atau atribut di dalam chrome yang harus Anda aktifkan untuk memungkinkan ini.
slm
Akankah chrome://flagstempat yang tepat untuk mencari sesuatu seperti ini? Di situlah saya melihat saat ini.
undergroundmonorail
@undergroundmonorail mmm Anda benar, saya baru saja mencoba dengan demo di dropzonejs.com dan tidak berhasil. Tapi bisa jadi masalah izin
Tn. Shunz
4

Baru saja menyelesaikan masalah sendiri.

Sangat mungkin cara termudah adalah menggunakan dialog "Buka file ...". Anda cukup menarik dan melepas dari dialog file gtk, seperti halnya manajer file.

Anda mungkin perlu membuka jendela terpisah untuk memastikan dialog tidak mencuri layar.

Itu dia. Itu mudah.

hadthesameproblem
sumber
Luar biasa! Tidak perlu menginstal apa pun. Saya menggunakan Firefox jadi saya tidak bisa mengklik menu, tetapi Ctrl + o berfungsi dengan baik.
Milan Babuškov