Czy mogę „przeciągnąć” plik do okna bez menedżera plików?

41

(Jestem na Arch Linux, używam i3 jako mojego wm i xterm jako mojego emulatora terminala, chociaż nie wiem, czy którykolwiek z nich jest istotny.)

Czasami strona internetowa prosi mnie o przeciągnięcie pliku myszką z pulpitu do okna przeglądarki internetowej. Prawie zawsze istnieje alternatywa, ale ostatnio znalazłem coś, co chcę zrobić, co wymaga przeciągania i upuszczania. Niestety nie mam menedżera plików. System plików komputera poruszam się wyłącznie za pomocą bash.

Czy istnieje sposób na udawanie operacji przeciągania i upuszczania? Czy mogę powiedzieć mojej przeglądarce „Właśnie upuściłem ten plik na ciebie” bez robienia tego?

W najgorszym przypadku mogę pobrać graficzny menedżer plików wyłącznie w celu upuszczenia plików do przeglądarki internetowej, ale chciałbym uniknąć tego rozwiązania.

podziemny monorail
źródło
3
> Czy mogę powiedzieć mojej przeglądarce „Właśnie upuściłem ten plik” bez faktycznego wykonania? ”Brzmi jak świetne pytanie dla społeczności JavaScript w
Stackexchange
Zobacz także www: mechanize lub pochodna. Wygląda na to, że istnieje perl i python. Im więcej rozwiązań, tym lepiej!
Powiązane: Jak zainstalować skrypty użytkownika w Chrome w systemie Linux?
Gilles „SO- przestań być zły”
1
dragbox już nie istnieje. zmień zaakceptowaną odpowiedź.
yukashima huksay
1
@yukashimahuksay zrobione, dzięki za heads up
undergroundmonorail

Odpowiedzi:

19

Miałem dokładnie ten sam problem kilka miesięcy temu i ostatecznie właśnie napisałem narzędzie, aby to dla mnie zrobić. Kiedy to zobaczyłem i odkryłem, że ktoś ma ten sam świąd, posprzątałem go, aby ktoś inny niż ja mógł go uruchomić i skończył moją listę rzeczy do zrobienia. Kod jest już dostępny: https://github.com/mwh/dragon

Aby go zdobyć, biegnij

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

To da ci autonomiczny dragonplik wykonywalny - możesz go przenieść gdziekolwiek chcesz. make installwłożę to $HOME/.local/bin.

Tak czy inaczej, możesz następnie:

dragon *.jpg

aby uzyskać proste okno z przeciąganymi przyciskami dla każdego z tych plików:

Zrzut ekranu przedstawiający smoka z kilkoma plikami

Możesz przeciągnąć dowolną z nich do przeglądarki, menedżera plików, edytora lub dowolnego innego miejsca, które obsługuje standardowy protokół przeciągania i upuszczania.

Jeśli chcesz iść w drugą stronę, a rzeczy przeciągnij w niej, zastosowanie --target- zostaną one wydrukowane na standardowym wyjściu lub dostępne do przeciągania się ponownie, jeśli używasz --keep, jak również.


Aby zbudować trzeba kompilator C i nagłówki rozwojowe GTK + 3 - jeśli jesteś na Arch dostaniesz tych właśnie poprzez zainstalowanie GTK +, ale na innych dystrybucjach może być apt-get install build-essentials libgtk3-devalbo yum install gtk3-devellub podobny pierwszy. Poza tym jest całkowicie samowystarczalny, bez żadnych składowych bibliotek ani niczego, i możesz po prostu umieścić plik wykonywalny w dowolnym miejscu.

Mój przypadek użycia to przeważnie jednorazowe przeciąganie tylko kilku plików (zwykle tylko jednego), bez szczególnego dbania o to, jak się pokazują, więc jeśli to nie zgadza się z tym, czego chcesz, to Dragbox (którego nie widziałem aż do ostatnio) może być dla Ciebie lepszy. Jeszcze wczoraj dodałem obsługę używania go jako celu przeciągania, więc ta część nie miała wiele pożytku z mojej strony. Poza tym od dłuższego czasu korzystam z tego z powodzeniem. Istnieją inne tryby i opcje opisane w pliku readme.

Michael Homer
źródło
Dziękuję Ci! Kompilacja / instalacja zajęła kilka sekund! Użyję tego! Opcja --target to świetna zabawa!
Ładny, mały, samodzielny plik binarny. Z ładnym małym Makefile. Doskonały. Dziękuję Ci!
ctn
1
Jesteś bohaterem. To narzędzie jest również dostępne w AUR pod nazwą dragon-drag-and-drop-git.
FichteFoll
Kocham Cię! arch społeczność kocha U! Dziękuję Ci! Szukałem tego od wieków.
yukashima huksay
28

Dzięki @derobert za polecenie mi aplikacji Dragbox.

Dragbox robi dokładnie to, czego potrzebuję. Na przykład mam folder z wieloma plikami .png, które chciałbym móc przeciągnąć do Chromium. Wykonanie w tym folderze dragbox *.pngpowoduje utworzenie tego okna:

Okno GUI z nazwami kilku wymienionych plików

Za pomocą myszy mogę przeciągać stamtąd pliki do Chromium i działa bezbłędnie. Dotarcie do tego punktu było jednak uciążliwe. O ile mi wiadomo, Dragbox oficjalnie obsługuje tylko systemy Debian. Nie mogłem go znaleźć nigdzie, który natywnie pracował dla Arch. Napisałem więc przewodnik krok po kroku, jak uruchomić Dragbox w Arch Linux. To prawie dokładnie to, co zrobiłem na moim komputerze, z kilkoma modyfikacjami, aby zastosować się do lepszych praktyk. Jeśli gdzieś jest błąd, możesz zajrzeć do historii edycji tej odpowiedzi, aby zobaczyć dokładnie, co zrobiłem na moim komputerze.

  1. Sklonuj źródło Dragbox na swój komputer, wykonując git clone https://github.com/engla/dragbox.git
  2. W dragboxbieżącym katalogu roboczym zostanie utworzony nowy katalog o nazwie . Wejdź do środka.
  3. Instalacja Dragbox i Dragbox wymaga Pythona 2, który jest standardem w Arch Linux. Oczekuje jednak, że Python 2 będzie domyślną instalacją Pythona, co nie jest prawdą w Arch. Obejdź to, wykonując export PYTHON=/bin/python2. Dopóki nie zamkniesz bieżącego okna terminala, zmienna środowiskowa $PYTHONbędzie miała wartość /bin/python2. Skrypty instalacyjne Dragbox sprawdzają to i używają jej w Pythonie 3.
  4. Wykonać ./autogen.sh, ./configure, makei make install. make installnależy to zrobić z uprawnieniami administratora (np sudo make install.).
  5. Dragbox jest teraz zainstalowany na twoim komputerze, ale spróbuje uruchomić Python 3. Z uprawnieniami roota otwórz /usr/local/bin/dragboxw edytorze tekstu. Zmodyfikuj shebang (pierwszy wiersz, który mówi twojej powłoce, z jakiego pliku wykonywalnego uruchomić skrypt) od #!/usr/bin/env pythondo #!/usr/bin/env python2.
  6. Skrypt działa teraz, ale nie może znaleźć modułu zawierającego rzeczywisty program. Istnieje kilka sposobów rozwiązania tego problemu.

    1. Umieść w swoim ~/.bashrclub podobnym czytniku linii export PYTHONPATH=$PYTHONPATH:natychmiast (jak w, nawet spacji między) podążał moją ścieżką do katalogu. Python będzie teraz szukał w tym katalogu podczas próby importowania modułów. W katalogu utworzonym ponownie w kroku 1 będzie katalog o nazwie Dropbox/(z wielką literą D). Skopiuj ten katalog do katalogu, który dodałeś do swojego $PYTHONPATH(np. Jeśli napisałeś export PYTHONPATH=$PYTHONPATH:~/python/modules, skopiuj Dragbox/katalog, aby utworzyć ~/python/modules/Dragbox/).

    2. Prawdopodobnie gorsza praktyka, ale możesz skopiować ten sam katalog do katalogu już w swoim $PYTHONPATH. Na przykład możesz go skopiować, aby utworzyć /usr/lib/python2.7/site-packages/.

Jeśli wykonałeś te czynności, Dragbox powinien działać! Możesz teraz wykonać, man dragboxaby dowiedzieć się więcej o tym, jak go używać, i uruchomić go, po prostu pisząc dragbox.

podziemny monorail
źródło
2
W rzeczywistości używanie /usr/bin/env python2jest obecnie zalecanym sposobem, ponieważ PEP 394 został adoptowany.
Gilles „SO- przestań być zły”
1
Nie potrzebujesz drugiej poprawki. Po prostu skopiuj Dragboxkatalog PYTHONPATHgdzieś (jak w python2 site-packages , systemowy lub dla użytkownika). Ten wiersz jest wykonywany tylko wtedy, gdy dragboxnie można zaimportować tego pakietu.
Bakuriu
@Seth Cóż, chyba dzięki. Zrobiłem skrypt Pythona działający na nieco innym systemie niż ten, dla którego został zaprojektowany, który wciąż miał w nim Pythona: P Cieszę się, że to był Python, ponieważ jest to jedyny język, w którym jestem wystarczająco biegły, aby to zrobić zdarzyć.
undergroundmonorail
2
W Archlinuxie prawdziwym rozwiązaniem tego typu problemów jest napisanie PKGBUILD . W dużej mierze robisz to, co zrobiłeś, ale umieszczasz go w specjalnym skrypcie, który pozwala ci pacmanzarządzać plikami za ciebie, więc nie musisz nigdy grzebać w systemie, jeśli chcesz go zaktualizować lub usunąć.
HalosGhost,
1
Dragbox wydaje się być martwy. Git-repo zniknęło.
kaleissin
6

Możesz łatwo poruszać się po systemie plików w przeglądarce, używając składni:

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

Otwórz ścieżkę w pustej karcie, a stamtąd możesz przeciągnąć i upuścić plik. Przynajmniej z chromem / chromem, nie ma tu innych przeglądarek do wypróbowania.

Pan Shunz
źródło
To nie działa dla mnie, ale nie mogę powiedzieć, czy jest to problem z opisaną metodą, czy problem ze skryptem użytkownika, który chce, żebym wrzucił ...
undergroundmonorail
Myślę, że w chrome jest przełącznik linii poleceń lub atrybut, który musisz włączyć, aby na to pozwolić.
slm
Czy chrome://flagsbyłoby właściwe miejsce, aby poszukać czegoś takiego? Właśnie na to patrzę w tej chwili.
undergroundmonorail
@undergroundmonorail mmm masz rację, właśnie próbowałem z demo na dropzonejs.com i to nie działa. Jednak zdecydowanie może to być problem z pozwoleniem
Shunz
4

Właśnie rozwiązałem ten problem.

Prawdopodobnie najłatwiejszym sposobem jest skorzystanie z okna dialogowego „Otwórz plik ...”. Możesz po prostu przeciągnąć i upuścić z okna dialogowego pliku gtk, podobnie jak menedżer plików.

Konieczne może być otwarcie osobnego okna, aby upewnić się, że okno dialogowe nie kradnie ekranu.

Otóż ​​to. Tak proste.

hadthesameproblem
źródło
Niesamowite! Nie musisz niczego instalować. Używam Firefoksa, więc nie mogę kliknąć menu, ale Ctrl + o działa dobrze.
Milan Babuškov,