Copie um arquivo de um script nautilus para a área de transferência

2

Eu tenho um script nautilus que gera um arquivo com base nos arquivos selecionados na janela do nautilus. Este arquivo archive é criado no diretório /tmp . Eu quero uma maneira de copiar este arquivo para a área de transferência a partir do script, para que o usuário possa ir para o desktop ou diretório pessoal e colá-lo.

Eu tentei fazer isso com xclip e xsel , mas eles não parecem replicar uma operação de cópia de arquivos, mas copiam o conteúdo de um arquivo.

xclip -in -selection c generated-archive
echo -n generated-archive | xsel --clipboard --input

Nenhum deles faz o que eu preciso.

Então, quero saber se isso é possível e, se for, como devo proceder?

Obrigado.

    
por Shrikant Sharat 29.01.2011 / 19:08

2 respostas

2

Parece que o Nautilus rastreia seu estado interno com relação às mudanças na área de transferência, o que significa que qualquer mudança de estado na área de transferência (incluindo a substituição de uma seqüência idêntica) cancela automaticamente a pasta pendente estado, portanto, nada acontece quando uma área de transferência carregada externamente contém um caminho de arquivo válido ...

O Nautilus apenas reconhece um arquivo copy / cut que foi iniciado a partir do próprio Nautilus.
Isso é exatamente o que você observou ... com alguma explicação sobre o porquê ... Eu notei na fonte Nautilus 'cut-n-paste-code' que contém muito sobre os estados salvos.

# In Nautilus, manually "copy" a file (to the clipboard) using Ctrl+C

xsel -ob |xxd      # hex-display clipboard contents of the clipboard
echo "### At this point, Nautilus **paste** works."
read               # pause
xsel -ob |xsel -ib # Replace clipboard with itself
xsel -ob |xxd      # hex-display clipboard contents again
echo "### At this point, Nautilus **paste** does NOT work."

Depois de copiar / recortar manualmente, você pode executar ações sem fim (no Nautilus ou depois) e o Ctrl + V colar no Nautilus funcionará, mas assim que você modificar a área de transferência, não vai 'colar' ...

    
por 24.04.2011 / 01:46
0

você deve entender que quando você copia um arquivo para a área de transferência no nautilus, tudo o que você está fazendo é colocar o caminho de arquivo absoluto na área de transferência (você pode usar um gerenciador de área de transferência para verificar isso). Então você simplesmente precisa que seu script coloque o caminho do arquivo na área de transferência e você alcançará o resultado que está procurando. Experimente!

    
por 07.03.2011 / 16:43