Posso arrastar um arquivo para uma janela sem um gerenciador de arquivos?

36

(Estou no Arch Linux, usando o i3 como meu wm e xterm como meu emulador de terminal, embora eu não saiba se isso é relevante.)

Ocasionalmente, um site me pede para arrastar um arquivo com meu mouse da minha área de trabalho para a janela do navegador da Internet. Quase sempre, há uma alternativa, mas recentemente eu encontrei algo que eu quero fazer que requer o arrastar e soltar. Infelizmente, não tenho um gerenciador de arquivos. Eu navego o sistema de arquivos do meu computador somente através do bash.

Existe alguma maneira de eu fingir a ação arrastar e soltar? Posso dizer ao meu navegador "Acabei de soltar esse arquivo em você" sem realmente fazer isso?

No pior cenário, posso fazer o download de um gerenciador gráfico de arquivos exclusivamente para colocar arquivos no meu navegador, mas gostaria de evitar essa solução.

    
por undergroundmonorail 18.06.2014 / 21:37

4 respostas

27

Obrigado ao @derobert por recomendar o aplicativo Dragbox para mim.

Dragbox faz exatamente o que eu preciso. Por exemplo, tenho uma pasta com vários arquivos .png que gostaria de arrastar para o Chromium. Dentro dessa pasta, a execução de dragbox *.png cria esta janela:

Eu posso usar meu mouse para arrastar arquivos de lá para o Chromium e ele funciona perfeitamente. No entanto, chegar a este ponto foi uma dor. Tanto quanto sei, o Dragbox só suporta oficialmente sistemas Debian. Eu não consegui encontrá-lo em qualquer lugar que originalmente funcionasse para o Arch. Então, eu escrevi um guia passo-a-passo para fazer o Dragbox funcionar no Arch Linux. Isso é quase exatamente o que fiz na minha máquina, com algumas modificações para seguir práticas recomendadas. Se houver um erro em algum lugar, você pode procurar no histórico de edição desta resposta para ver exatamente o que fiz na minha máquina.

  1. Copie a origem do Dragbox para o seu computador executando git clone https://github.com/engla/dragbox.git
  2. Haverá um novo diretório chamado dragbox criado dentro do diretório de trabalho atual. Vá para dentro.
  3. A instalação do Dragbox e do Dragbox requer o Python 2, que é padrão no Arch Linux. No entanto, espera que o Python 2 seja a instalação padrão do Python, o que não é verdade no Arch. Contorne isso executando export PYTHON=/bin/python2 . Até você fechar sua janela de terminal atual, a variável de ambiente $PYTHON terá o valor /bin/python2 . Os scripts de instalação do Dragbox verificam isso e o usarão no Python 3.
  4. Execute ./autogen.sh , ./configure , make e make install . make install deve ser feito com privilégios de root (por exemplo, sudo make install ).
  5. O Dragbox agora está instalado no seu computador, mas tentará usar o Python 3 para ser executado. Com privilégios de root, abra /usr/local/bin/dragbox em um editor de texto. Modifique o shebang (a primeira linha que informa ao seu shell com qual executável executar o script) de #!/usr/bin/env python a #!/usr/bin/env python2 .
  6. O script agora está funcionando, mas não consegue encontrar o módulo que contém o programa real. Existem algumas maneiras de corrigir isso.

    1. Inclua no seu ~/.bashrc ou similar uma linha que leia export PYTHONPATH=$PYTHONPATH: imediatamente (como em, nem mesmo um espaço entre elas) e siga o meu caminho para um diretório. O Python agora irá procurar nesse diretório ao tentar importar módulos. Dentro do diretório criado no passo 1, haverá um diretório chamado Dropbox/ (com um D maiúsculo). Copie esse diretório para o diretório que você adicionou ao seu $PYTHONPATH (por exemplo, se você escreveu export PYTHONPATH=$PYTHONPATH:~/python/modules , copie o diretório Dragbox/ para criar ~/python/modules/Dragbox/ ).

    2. Provavelmente, prática pior, mas você pode copiar esse mesmo diretório para um diretório que já está no seu $PYTHONPATH . Por exemplo, você pode copiá-lo para criar /usr/lib/python2.7/site-packages/ .

Se você seguiu estes passos, o Dragbox deve estar funcionando! Agora você pode executar man dragbox para saber mais sobre como usá-lo e iniciá-lo simplesmente digitando dragbox .

    
por 18.06.2014 / 23:07
14

Eu tive exatamente o mesmo problema há alguns meses e acabei de escrever uma ferramenta para fazer isso por mim. Quando eu vi isso e descobri que alguém tinha a mesma coceira, limpei-o para que alguém, além de mim, conseguisse fazê-lo funcionar, e terminei minha lista de coisas a fazer. O código está pronto agora: link

Para obtê-lo, execute

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

Isso lhe dará um executável dragon autônomo - você pode movê-lo para onde quiser. make install colocará em $HOME/.local/bin .

De qualquer forma, você pode:

dragon *.jpg

para obter uma janela simples com botões arrastáveis para cada um desses arquivos:

Você pode arrastar qualquer um deles para um navegador, um gerenciador de arquivos, um editor ou qualquer outro lugar que defina o protocolo padrão de arrastar e soltar.

Se você quiser ir para o outro lado e arrastar as coisas em para ele, use --target - elas serão impressas na saída padrão ou disponíveis para serem arrastadas novamente se você usar --keep também.

Para construir, você precisará de um compilador C e dos cabeçalhos de desenvolvimento do GTK + 3 - se estiver no Arch, você poderá instalá-lo instalando o GTK +, mas em outras distribuições você pode ter apt-get install build-essentials libgtk3-dev ou yum install gtk3-devel ou similar primeiro. Além disso, é totalmente auto-suficiente, sem bibliotecas constituintes ou qualquer coisa, e você pode simplesmente colocar o executável onde quiser.

Meu caso de uso é quase sempre um só trecho de apenas alguns arquivos (geralmente apenas um), sem se importar em como eles aparecem, então se isso não se encaixa com o que você quer, então o Dragbox (que eu não fiz) t ver até recentemente) pode ainda ser melhor para você. Ontem mesmo eu adicionei o suporte para usá-lo como um alvo de arrastar também, então essa parte não teve muito uso do meu lado. Fora isso, porém, eu tenho usado isso com sucesso por um tempo agora. Existem outros modos e opções descritos no arquivo readme.

    
por 20.06.2014 / 05:32
4

Você pode navegar facilmente pelo sistema de arquivos em seu navegador, usando a sintaxe:

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

Abra o caminho em uma guia vazia e, a partir daí, você pode arrastar e soltar o arquivo. Pelo menos com chrome / chromium, não tem outros navegadores aqui para experimentar.

    
por 18.06.2014 / 21:59
3

Resolvi o problema sozinho.

Muito possivelmente, a maneira mais fácil é usar o diálogo "Abrir arquivo ...". Você pode simplesmente arrastar e soltar a partir da caixa de diálogo do arquivo gtk, assim como um gerenciador de arquivos.

Talvez seja necessário abrir uma janela separada para garantir que a caixa de diálogo não roube a tela.

É isso. Tão fácil.

    
por 19.07.2016 / 10:13