(Estou no Arch Linux, usando i3 como wm e xterm como emulador de terminal, embora não saiba se algo disso é relevante.)
Ocasionalmente, um site me pede para arrastar um arquivo com o mouse da área de trabalho para a janela do navegador da Internet. Quase sempre existe uma alternativa, mas recentemente descobri algo que quero fazer que requer arrastar e soltar. Infelizmente, não tenho um gerenciador de arquivos. Eu navego no sistema de arquivos do meu computador apenas através do bash.
Existe uma maneira de fingir a ação de arrastar e soltar? Posso dizer ao meu navegador "Acabei de colocar este arquivo em você" sem realmente fazer isso?
Na pior das hipóteses, posso baixar um gerenciador de arquivos gráfico exclusivamente para colocar arquivos em meu navegador, mas gostaria de evitar essa solução.
Responder1
Eu tive exatamente o mesmo problema há alguns meses e, finalmente, escrevi uma ferramenta para fazer isso por mim. Quando vi isso e descobri que outra pessoa estava com a mesma coceira, limpei-o para que outra pessoa além de mim pudesse colocá-lo em funcionamento e terminei minha lista de tarefas. O código está ativo agora:https://github.com/mwh/dragon
Para obtê-lo, corra
git clone https://github.com/mwh/dragon.git
cd dragon
make
Isso lhe dará um dragon
executável independente - você pode movê-lo para onde quiser. make install
vai colocar $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, gerenciador de arquivos, editor ou qualquer outro lugar que utilize o protocolo padrão de arrastar e soltar.
Se você quiser ir para o outro lado e arrastar as coisasempara ele, use --target
- eles serão impressos na saída padrão ou estarão disponíveis para serem arrastados novamente, se você usar --keep
também.
Para compilar você precisará de um compilador C e dos cabeçalhos de desenvolvimento GTK+ 3 - se você estiver no Arch, você os obterá apenas instalando o GTK+, mas em outras distribuições você pode precisar apt-get install build-essentials libgtk3-dev
ou yum install gtk3-devel
similar primeiro. Fora isso, é totalmente independente, sem bibliotecas constituintes nem nada, e você pode simplesmente colocar o executável onde quiser.
Meu caso de uso consiste principalmente em arrastar apenas alguns arquivos (geralmente apenas um), sem me importar particularmente com como eles aparecem, então se isso não estiver alinhado com o que você deseja, então o Dragbox (que eu não vi até recentemente) ainda pode ser melhor para você. Ontem mesmo adicionei o suporte para usá-lo como alvo de arrastar também, então essa parte não teve muita utilidade para mim. Fora isso, porém, já uso isso com sucesso há algum tempo. Existem outros modos e opções descritos no arquivo leia-me.
Responder2
Obrigado a @derobert por me recomendar o aplicativo Dragbox.
Caixa de arrastofaz exatamente o que eu preciso. Por exemplo, tenho uma pasta com vários arquivos .png que gostaria de poder arrastar para o Chromium. Dentro dessa pasta, a execução dragbox *.png
cria esta janela:
Posso usar o mouse para arrastar arquivos de lá para o Chromium e funciona perfeitamente. No entanto, chegar a este ponto foi uma dor. Pelo que eu sei, o Dragbox suporta oficialmente apenas sistemas Debian. Não consegui encontrar nenhum lugar que funcionasse nativamente para o Arch. Então, 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 as melhores práticas. Se houver um erro em algum lugar, você pode consultar o histórico de edições desta resposta para verexatamenteo que fiz na minha máquina.
- Clone a fonte do Dragbox para o seu computador executando
git clone https://github.com/engla/dragbox.git
- Haverá um novo diretório chamado
dragbox
criado dentro do seu diretório de trabalho atual. Ir para dentro. - A instalação do Dragbox e do Dragbox requer Python 2, que vem como 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 a janela do terminal atual, a variável de ambiente$PYTHON
terá o valor/bin/python2
. Os scripts de instalação do Dragbox verificam isso e irão usá-lo no Python 3. - Execute
./autogen.sh
,./configure
,make
emake install
.make install
deve ser feito com privilégios de root (por exemplosudo make install
). - Dragbox agora está instalado no seu computador, mas tentará usar o Python 3 para rodar. 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
para#!/usr/bin/env python2
. 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.
Inclua no seu
~/.bashrc
ou similar uma leitura de linhaexport PYTHONPATH=$PYTHONPATH:
imediatamente (como em, nem mesmo um espaço entre) seguindo o caminho para um diretório. O Python agora irá procurar nesse diretório ao tentar importar módulos. Dentro do diretório criado na etapa 1, haverá um diretório chamadoDropbox/
(com D maiúsculo). Copie esse diretório para o diretório que você adicionou ao seu$PYTHONPATH
(por exemplo, se você escreveuexport PYTHONPATH=$PYTHONPATH:~/python/modules
, copie oDragbox/
diretório para criar~/python/modules/Dragbox/
).Provavelmente uma prática pior, mas você pode copiar o mesmo diretório para um diretório que já esteja no seu arquivo
$PYTHONPATH
. Por exemplo, você pode copiá-lo para criar um arquivo/usr/lib/python2.7/site-packages/
.
Se você seguiu essas etapas, o Dragbox deve estar funcionando! Agora você pode executar man dragbox
para saber mais sobre como usá-lo e iniciá-lo simplesmente digitando dragbox
.
Responder3
Acabei de resolver o problema sozinho.
Muito possivelmente, a maneira mais fácil é usar a caixa de diálogo "Abrir arquivo...". Você pode simplesmente arrastar e soltar na caixa de diálogo do arquivo gtk, como um gerenciador de arquivos.
Pode ser necessário abrir uma janela separada para garantir que a caixa de diálogo não roube a tela.
É isso. Tão fácil.
Responder4
Você pode iniciar a caixa de diálogo do arquivo GTK usando uma ferramenta de linha de comando e zenity
arrastar e soltar a partir daí.
Exemplo:
zenity --file-selection