(Estou no Arch Linux, usando o i3 como meu wm e o xterm como meu emulador de terminal, embora não saiba se isso é relevante.)
Ocasionalmente, um site solicita que eu arraste um arquivo com o mouse da área de trabalho para a janela do navegador da Internet. Quase sempre, existe uma alternativa, mas recentemente encontrei algo que quero fazer que requer arrastar e soltar. Infelizmente, eu não tenho um gerenciador de arquivos. Navego no sistema de arquivos do meu computador apenas através do bash.
Existe uma maneira de eu 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áficos exclusivamente para soltar arquivos no meu navegador da Web, mas gostaria de evitar essa solução.
fonte
Respostas:
Eu tive exatamente o mesmo problema há alguns meses e acabei de escrever uma ferramenta para fazer isso por mim. Quando vi isso e descobri que outra pessoa tinha a mesma coceira, limpei-a para que alguém que não fosse eu conseguisse fazê-la funcionar e terminei minha lista de tarefas. O código está disponível agora: https://github.com/mwh/dragon
Para obtê-lo, execute
Isso lhe dará um
dragon
executável independente - você pode movê-lo para onde quiser.make install
vai colocá-lo$HOME/.local/bin
.De qualquer forma, você pode:
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 fale o protocolo padrão de arrastar e soltar.
Se você quer ir para o outro lado, e as coisas arrastar no a ele, o uso
--target
- que vai ser impresso na saída padrão, ou disponíveis para arrastar para fora outra vez com se você usar--keep
também.Para construir você vai precisar de um compilador C e os cabeçalhos de desenvolvimento GTK + 3 - se você estiver em Arch você vai ter aqueles que estão instalando GTK +, mas em outras distribuições você pode ter que
apt-get install build-essentials libgtk3-dev
ouyum install gtk3-devel
ou similar em primeiro lugar. Fora isso, é totalmente independente, sem bibliotecas constituintes ou qualquer coisa, e você pode simplesmente colocar o executável onde quiser.Meu caso de uso é basicamente arrastar apenas alguns arquivos (geralmente apenas um), sem se importar particularmente com o modo como eles aparecem; portanto, se isso não estiver alinhado com o que você deseja, Dragbox (que eu não vi até recentemente) ainda pode ser melhor para você. Ainda ontem, eu adicionei o suporte para usá-lo como um alvo de arrasto, para que essa parte não tenha tido muito uso do meu lado. Fora isso, porém, estou usando isso com sucesso há um tempo. Existem outros modos e opções descritos no arquivo leia-me.
fonte
dragon-drag-and-drop-git
.Obrigado a @derobert por me recomendar o aplicativo Dragbox.
Dragbox faz 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 ele funciona perfeitamente. No entanto, chegar a esse ponto foi uma dor. Pelo que sei, o Dragbox suporta oficialmente apenas sistemas Debian. Não consegui encontrá-lo em nenhum lugar que funcionasse nativamente para Arch. Então, escrevi um guia passo a passo para fazer o Dragbox funcionar no Arch Linux. Isso é quase exatamente o que eu fiz na minha máquina, com algumas modificações para seguir as melhores práticas. Se houver algum erro em algum lugar, você pode procurar no histórico de edições desta resposta para ver exatamente o que fiz na minha máquina.
git clone https://github.com/engla/dragbox.git
dragbox
criado dentro do seu diretório de trabalho atual. Ir para dentro.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../autogen.sh
,./configure
,make
emake install
.make install
deve ser feito com privilégios de root (por exemplosudo make install
)./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 está funcionando agora, 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 semelhante uma linha de leituraexport PYTHONPATH=$PYTHONPATH:
imediatamente (como em, nem mesmo um espaço no meio) seguiu o meu caminho para um diretório. O Python agora 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 esse mesmo diretório para um diretório já existente no seu
$PYTHONPATH
. Por exemplo, você pode copiá-lo para criar/usr/lib/python2.7/site-packages/
.Se você seguiu essas etapas, o Dragbox deve estar funcionando! Agora você pode executar
man dragbox
para aprender mais sobre como usá-lo e iniciá-lo simplesmente digitandodragbox
.fonte
/usr/bin/env python2
é a maneira recomendada atualmente, desde que o PEP 394 foi adotado.Dragbox
diretório paraPYTHONPATH
algum lugar (como no python2site-packages
, no sistema ou por usuário). Essa linha é executada apenas quandodragbox
não é possível importar esse pacote.pacman
gerenciar os arquivos para que você não precise mexer no sistema, caso deseje atualizá-lo ou removê-lo.Você pode navegar facilmente pelo sistema de arquivos no seu navegador, usando a sintaxe:
Abra o caminho em uma guia vazia e de lá você pode arrastar e soltar seu arquivo. Pelo menos com chrome / chromium, não há outros navegadores aqui para experimentar.
fonte
chrome://flags
o lugar certo para procurar algo assim? É para onde estou olhando no momento.Apenas resolvi 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 aí. Tão fácil.
fonte