Tôi có thể kéo một tập tin vào một cửa sổ mà không có trình quản lý tập tin không?


41

(Tôi đang dùng Arch Linux, sử dụng i3 làm wm và xterm làm trình giả lập thiết bị đầu cuối của mình, mặc dù tôi không biết liệu có bất kỳ thứ gì có liên quan hay không.)

Thỉnh thoảng, một trang web yêu cầu tôi kéo một tệp bằng chuột từ máy tính để bàn của mình vào cửa sổ trình duyệt internet. Hầu như luôn luôn, có một sự thay thế, nhưng gần đây tôi đã tìm thấy một cái gì đó tôi muốn làm đó đòi hỏi phải kéo và thả. Thật không may, tôi không có trình quản lý tập tin. Tôi điều hướng hệ thống tập tin của máy tính của tôi chỉ thông qua bash.

Có cách nào để tôi có thể giả mạo hành động kéo và thả không? Tôi có thể nói với trình duyệt của mình "Tôi vừa bỏ tập tin này vào bạn" mà không thực sự làm điều đó không?

Trường hợp xấu nhất, tôi có thể tải xuống một trình quản lý tệp đồ họa để thả các tệp vào trình duyệt web của mình, nhưng tôi muốn tránh giải pháp đó.


3
> Tôi có thể nói với trình duyệt của mình "Tôi vừa bỏ tập tin này vào bạn" mà không thực sự làm điều đó không? "Nghe có vẻ là một câu hỏi hay cho cộng đồng javascript trên stackexchange.
jayhendren

Cũng xem www: cơ giới hóa hoặc một dẫn xuất. Có vẻ như perl và python. Càng nhiều giải pháp càng tốt!


1
dragbox không tồn tại nữa. xin vui lòng thay đổi câu trả lời được chấp nhận của bạn.
yukashima huksay

1
@yukashimahuksay thực hiện, cảm ơn cho người đứng đầu lên
undergroundmonorail

Câu trả lời:


19

Tôi đã có chính xác vấn đề tương tự một vài tháng trước và cuối cùng chỉ viết một công cụ để làm điều đó cho tôi. Khi tôi nhìn thấy điều này và thấy một người khác cũng bị ngứa như vậy, tôi đã dọn dẹp nó để người khác không phải tôi thực sự có thể chạy nó, và kết thúc danh sách việc cần làm của tôi. Mã hiện đã có: https://github.com/mwh/dragon

Để có được nó, hãy chạy

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

Điều đó sẽ cung cấp cho bạn một dragonthực thi độc lập - bạn có thể di chuyển nó bất cứ nơi nào bạn muốn. make installsẽ đặt nó trong $HOME/.local/bin.

Dù bằng cách nào, bạn có thể:

dragon *.jpg

để có được một cửa sổ đơn giản với các nút có thể kéo cho mỗi tệp đó:

Ảnh chụp màn hình rồng hiển thị một vài tệp

Bạn có thể kéo bất kỳ thứ nào vào trình duyệt, trình quản lý tệp, trình chỉnh sửa hoặc bất kỳ nơi nào khác nói về giao thức kéo và thả tiêu chuẩn.

Nếu bạn muốn đi theo con đường khác và kéo mọi thứ vào đó, hãy sử dụng --target- chúng sẽ được in ra đầu ra tiêu chuẩn hoặc có sẵn để kéo ra ngoài một lần nữa nếu bạn cũng sử dụng --keep.


Để xây dựng bạn sẽ cần một trình biên dịch C và các tiêu đề phát triển GTK + 3 - nếu bạn đang ở trên Arch bạn sẽ nhận được những chỉ bằng cách cài đặt GTK +, nhưng trên các bản phân phối khác mà bạn có thể phải apt-get install build-essentials libgtk3-devhoặc yum install gtk3-develhoặc tương tự đầu tiên. Ngoài ra, nó hoàn toàn khép kín, không có thư viện cấu thành hay bất cứ thứ gì, và bạn chỉ có thể đặt tệp thực thi ở nơi bạn muốn.

Trường hợp sử dụng của tôi chủ yếu là một lần kéo chỉ một vài tệp (thường chỉ là một), mà không quan tâm đặc biệt đến cách chúng hiển thị, vì vậy nếu điều đó không phù hợp với những gì bạn muốn thì Dragbox (mà tôi không thấy cho đến khi gần đây) có thể vẫn tốt hơn cho bạn. Mới hôm qua tôi đã thêm hỗ trợ cho việc sử dụng nó làm mục tiêu kéo, vì vậy phần đó không được sử dụng nhiều cho mục đích của tôi. Mặc dù vậy, tôi đã sử dụng nó thành công được một thời gian rồi. Có các chế độ và tùy chọn khác được mô tả trong tệp readme.


Cảm ơn bạn! Phải mất vài giây để xây dựng / cài đặt! Tôi sẽ sử dụng nó! Tùy chọn --target là một vụ nổ!

Đẹp, nhỏ, nhị phân độc lập. Với Makefile nhỏ đẹp. Hoàn hảo. Cảm ơn bạn!
ctn

1
Bạn là một anh hùng. Công cụ này cũng có sẵn trên AUR dưới tên dragon-drag-and-drop-git.
FichteFoll

Em yêu anh! cộng đồng vòm yêu U! cảm ơn bạn! Tôi đã tìm kiếm điều này từ lâu.
yukashima huksay

28

Cảm ơn @derobert đã giới thiệu ứng dụng Dragbox cho tôi.

Dragbox làm chính xác những gì tôi cần. Ví dụ: tôi có một thư mục chứa một số tệp .png mà tôi muốn có thể kéo vào Chromium. Trong thư mục đó, việc thực thi dragbox *.pngsẽ tạo ra cửa sổ này:

Một cửa sổ GUI với tên của một số tệp được liệt kê

Tôi có thể sử dụng chuột để kéo các tệp từ đó vào Chromium và nó hoạt động hoàn hảo. Tuy nhiên, đến thời điểm này là một nỗi đau. Theo như tôi biết, Dragbox chỉ chính thức hỗ trợ các hệ thống Debian. Tôi không thể tìm thấy nó ở bất cứ nơi nào thực sự làm việc cho Arch. Vì vậy, tôi đã viết một hướng dẫn từng bước để Dragbox hoạt động trong Arch Linux. Đây gần như chính xác là những gì tôi đã làm trên máy của mình, với một vài sửa đổi để tuân theo các thực tiễn tốt hơn. Nếu có lỗi ở đâu đó, bạn có thể xem lịch sử chỉnh sửa của câu trả lời này để xem chính xác những gì tôi đã làm trên máy của mình.

  1. Sao chép nguồn của Dragbox vào máy tính của bạn bằng cách thực thi git clone https://github.com/engla/dragbox.git
  2. Sẽ có một thư mục mới được gọi là được dragboxtạo bên trong thư mục làm việc hiện tại của bạn. Đi vào bên trong.
  3. Cài đặt của Dragbox và Dragbox yêu cầu Python 2, đạt tiêu chuẩn trên Arch Linux. Tuy nhiên, nó hy vọng Python 2 sẽ là bản cài đặt Python mặc định, điều này không đúng với Arch. Hãy khắc phục điều này bằng cách thực hiện export PYTHON=/bin/python2. Cho đến khi bạn đóng cửa sổ terminal hiện tại, biến môi trường $PYTHONsẽ có giá trị /bin/python2. Các kịch bản cài đặt của Dragbox kiểm tra điều đó và sẽ sử dụng nó trên Python 3.
  4. Execute ./autogen.sh, ./configure, makemake install. make installphải được thực hiện với quyền root (ví dụ sudo make install).
  5. Dragbox hiện đã được cài đặt trên máy tính của bạn, nhưng sẽ thử sử dụng Python 3 để chạy. Với quyền root, mở /usr/local/bin/dragboxtrong một trình soạn thảo văn bản. Sửa đổi shebang (dòng đầu tiên, cho biết shell của bạn những gì có thể thực thi để chạy tập lệnh với) từ #!/usr/bin/env pythonđến #!/usr/bin/env python2.
  6. Kịch bản hiện đang hoạt động, nhưng nó không thể tìm thấy mô-đun chứa chương trình thực tế. Có một vài cách bạn có thể khắc phục điều này.

    1. Bao gồm trong ~/.bashrchoặc tương tự một dòng đọc export PYTHONPATH=$PYTHONPATH:ngay lập tức (như trong, thậm chí không có khoảng trắng giữa) theo đường dẫn đến thư mục của tôi. Bây giờ Python sẽ tìm trong thư mục đó khi cố gắng nhập các mô-đun. Bên trong thư mục được tạo lại ở bước 1, sẽ có một thư mục được gọi Dropbox/(với chữ D viết hoa). Sao chép thư mục đó vào thư mục bạn đã thêm vào $PYTHONPATH(ví dụ: nếu bạn đã viết export PYTHONPATH=$PYTHONPATH:~/python/modules, sao chép Dragbox/thư mục cần tạo ~/python/modules/Dragbox/).

    2. Có lẽ thực tế tồi tệ hơn, nhưng bạn có thể sao chép cùng một thư mục vào một thư mục đã có trong của bạn $PYTHONPATH. Ví dụ, bạn có thể sao chép nó để tạo /usr/lib/python2.7/site-packages/.

Nếu bạn đã làm theo các bước này, Dragbox sẽ hoạt động! Bây giờ bạn có thể thực thi man dragboxđể tìm hiểu thêm về cách sử dụng và khởi chạy nó bằng cách nhập dragbox.


2
Trên thực tế, sử dụng /usr/bin/env python2là cách được khuyến nghị hiện nay, vì PEP 394 đã được thông qua.
Gilles 'SO- ngừng trở nên xấu xa'

1
Bạn không cần sửa chữa thứ hai. Chỉ cần sao chép Dragboxthư mục vào PYTHONPATHmột nơi nào đó (như trong python2 site-packages , cả hệ thống hoặc mỗi người dùng). Dòng đó chỉ được thực hiện khi dragboxkhông thể nhập gói đó.
Bakuriu

@ Vâng, cảm ơn, tôi đoán vậy. Tôi đã tạo một kịch bản python chạy trên một hệ thống hơi khác so với thiết kế, nó vẫn có python trên đó: P Tôi rất vui vì đó là python, mặc dù đó là ngôn ngữ duy nhất tôi đủ thông thạo để tạo ra nó xảy ra
undergroundmonorail

2
Với Archlinux, giải pháp thực sự cho loại điều này là viết một PKGBUILD . Bạn chủ yếu làm những gì bạn đã làm, nhưng bạn đặt nó vào một tập lệnh đặc biệt cho phép pacmanquản lý các tệp cho bạn để bạn không phải đi tìm hiểu trong hệ thống nếu bạn muốn cập nhật hoặc xóa nó.
HalosGhost

1
Dragbox dường như đã chết. Các git-repo đã biến mất.
kaleissin

6

Bạn có thể dễ dàng điều hướng hệ thống tập tin trong trình duyệt của mình, sử dụng cú pháp:

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

Mở đường dẫn trong một tab trống và từ đó bạn có thể kéo và thả tệp của mình. Ít nhất là với chrome / crom, đừng có các trình duyệt khác ở đây để thử.


Đây không phải là làm việc cho tôi, nhưng tôi không thể nói nếu đó là một vấn đề với các phương pháp bạn mô tả hoặc một vấn đề với UserScript rằng muốn tôi thả nội dung trong ...
undergroundmonorail

Tôi nghĩ rằng có một công tắc dòng lệnh hoặc một thuộc tính trong chrome bạn phải kích hoạt để cho phép điều này.
slm

Sẽ chrome://flagslà nơi thích hợp để tìm kiếm một cái gì đó như thế này? Đó là nơi tôi đang nhìn vào lúc này.
undergroundmonorail

@undergroundmonorail mmm bạn nói đúng, tôi vừa thử với bản demo tại dropzonejs.com và nó không hoạt động. Tuy nhiên, chắc chắn có thể là một vấn đề về sự cho phép
Mr Shunz


4

Chỉ cần giải quyết vấn đề bản thân mình.

Cách dễ nhất có thể là sử dụng hộp thoại "Mở tệp ...". Bạn có thể chỉ cần kéo và thả từ hộp thoại tệp gtk, giống như trình quản lý tệp.

Bạn có thể cần phải mở một cửa sổ riêng để đảm bảo hộp thoại không đánh cắp màn hình.

Đó là nó. Điều đó thật dễ dàng.


Tuyệt vời! Không cần cài đặt gì cả. Tôi đang sử dụng Firefox nên tôi không thể nhấp vào menu, nhưng Ctrl + o hoạt động tốt.
Milan Babuškov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.