Чи можу я "перетягнути" файл у вікно без файлового менеджера?


41

(Я перебуваю на Arch Linux, використовуючи i3 як свій wm та xterm як емулятор терміналу, хоча я не знаю, чи є щось із цього актуальним.)

Інколи веб-сайт просить мене перетягнути файл мишкою з робочого столу у вікно веб-браузера. Майже завжди є альтернатива, але останнім часом я знайшов щось, що хочу зробити, що вимагає перетягування. На жаль, у мене немає файлового менеджера. Я переходжу по файловій системі мого комп'ютера виключно через bash.

Чи є спосіб я підробляти дії перетягування? Чи можу я сказати своєму веб-переглядачу "Я щойно перекинув цей файл на вас", не роблячи цього фактично?

Найгірший сценарій: я можу завантажувати графічний файловий менеджер виключно для передачі файлів у свій веб-браузер, але я хотів би уникнути цього рішення.


3
> Чи можу я сказати моєму браузеру «Я щойно перекинув цей файл на вас», фактично не роблячи це? »Звучить як чудове запитання для спільноти javascript у stackexchange.
jayhendren

Також див. Www: механізувати або похідне. Є perl і python, здається. Чим більше рішень, тим краще!


1
dragbox більше не існує. будь ласка, змініть прийняту відповідь.
юкасіма хуксай

1
@yukashimahuksay зроблено, спасибі за голову вгору
undergroundmonorail

Відповіді:


19

У мене була така ж проблема кілька місяців тому, і в кінцевому рахунку просто написав інструмент, щоб зробити це для мене. Коли я побачив це і виявив, що у когось іншого був такий самий свербіж, я очистив його, щоб хтось, крім мене, насправді міг запустити його, і закінчив мій список справ. Код наразі: 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або аналогічний першому. Крім цього, він є повністю автономним, без складових бібліотек або нічого іншого, і ви можете просто поставити виконуваний файл там, де вам потрібно.

У моєму випадку використання в основному є одноразовими перетягуваннями лише декількох файлів (як правило, лише одного), без особливої ​​турботи про те, як вони відображаються, тому, якщо це не узгоджується з тим, що ви хочете, то Dragbox (якого я не бачив до останнім часом) все ще може бути для вас кращим. Лише вчора я додав підтримку для використання його як мети перетягування, так що ця частина не мала великого використання в моєму кінці. Крім цього, я вже успішно використовую це деякий час. Існують інші режими та параметри, описані у файлі readme.


Дякую! На його складання знадобилося кілька секунд! Я цим скористаюся! Варіант --target - це вибух!

Гарний, маленький, окремий двійковий. З приємним маленьким Makefile. Ідеально. Дякую!
ctn

1
Ти герой. Цей інструмент також доступний на AUR під назвою dragon-drag-and-drop-git.
FichteFoll

Я тебе люблю! арка спільнота любить U! Дякую тобі! Я шукав це протягом століть.
yukashima huksay

28

Дякуємо @derobert, що рекомендував мені програму Dragbox.

Dragbox робить саме те, що мені потрібно. Наприклад, у мене є папка з низкою .png файлів, яку я хотів би перетягнути в Chromium. Всередині цієї папки виконання dragbox *.pngстворює це вікно:

Вікно GUI з переліченими іменами кількох файлів

Я можу за допомогою миші перетягувати файли звідти в Chromium, і вона працює бездоганно. Однак дістатися до цього моменту було болем. Наскільки мені відомо, Dragbox лише офіційно підтримує системи Debian. Я не міг знайти його ніде, що споконвічно працював на Arch. Отже, я написав покроковий посібник із того, щоб Dragbox працював в Arch Linux. Це майже саме те, що я робив на своїй машині, з парою модифікацій, щоб дотримуватися кращих практик. Якщо десь є помилка, ви можете заглянути в історію редагування цієї відповіді, щоб побачити , що саме я робив на своїй машині.

  1. Клонуйте джерело Dragbox до свого комп'ютера, виконавши його git clone https://github.com/engla/dragbox.git
  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, ./configure, makeі 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.


2
Насправді, використання /usr/bin/env python2цього способу є рекомендованим в наші дні, з моменту прийняття PEP 394 .
Жил 'ТАК - перестань бути злим'

1
Вам не потрібно друге виправлення. Просто скопіюйте Dragboxкаталог PYTHONPATHдесь (наприклад, у python2 site-packages , або в систему, або на кожного користувача). Цей рядок виконується лише тоді, коли dragboxнеможливо імпортувати цей пакет.
Бакуріу

@Seth Ну, дякую, мабуть. Я зробив сценарій python, який працює трохи іншою системою, ніж він був розроблений, і все ще мав python на ньому: P Я радий, що це був python, хоча це єдина мова, на яку я досить вільно володію, щоб це зробити трапляються.
підземниймонорельс

2
З Archlinux справжнім рішенням для такого типу речей є оснащення PKGBUILD . Ви багато в чому робите те, що зробили, але вкладаєте це в спеціальний скрипт, який дозволяє pacmanкерувати файлами для вас, щоб вам ніколи не довелося робити глузування в системі, якщо ви хочете оновити або видалити його.
HalosGhost

1
Dragbox, здається, мертвий. Git-repo вже немає.
kaleissin

6

Ви можете легко переміщатися по файловій системі у вашому браузері, використовуючи синтаксис:

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

Відкрийте шлях на порожній вкладці і звідти ви можете перетягнути файл. Принаймні з хромом / хромом, не майте інших браузерів, щоб спробувати.


Це не працює для мене, але я не можу сказати, чи є проблема з описаним вами методом чи проблема з користувальницьким сценарієм, який хоче, щоб я передавав речі ...
undergroundmonorail

Я думаю, що в хромі є комутатор командного рядка або атрибут, який потрібно дозволити, щоб це дозволити.
slm

Було chrome://flagsб правильне місце, щоб шукати щось подібне? Ось де я дивлюся на даний момент.
підземниймонорельс

@undergroundmonorail mmm ви праві, я просто спробував з демонстрацією на dropzonejs.com, і це не працює.
Напевно,


4

Просто вирішив питання сам.

Цілком можливо найпростішим способом є використання діалогового вікна "Відкрити файл ...". Ви можете просто перетягнути з діалогового вікна файлу gtk, як і файловий менеджер.

Вам може знадобитися відкрити окреме вікно, щоб переконатися, що діалогове вікно не вкраде екран.

Це воно. Це просто.


Дивовижно! Не потрібно нічого встановлювати. Я використовую Firefox, тому не можу натиснути меню, але Ctrl + o працює чудово.
Мілан Бабушков
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.