Eu uso o Nautilus, no Ubuntu, como meu navegador de arquivos, por isso não posso falar por nenhum outro navegador.
A maneira como o Nautilus manipula a colagem de um arquivo via Ctrl-v
é bastante local para o Nautilus, ie. O Nautilus apenas reconhece Ctrl-v como cola um arquivo em resposta a um comando copiar arquivo que foi emitido enquanto está na nautilus . Isso significa que você não pode usar Ctrl-v para colar um arquivo cujo caminho você copiou em outro aplicativo.
No entanto, se for conveniente para você, Ctrl + Shift + v pode ser vinculado a um script que é executado em nautilus-scripts-manager
. Com este script, você pode fazer praticamente o que quiser.
nautilus-scripts-manager
fornece acesso a algumas informações fundamentais sobre o diretório atual e quais arquivos / diretórios estão selecionados. Uma coisa que eu particularmente gosto sobre "scripts nautilus" é que ele adiciona seus scripts ao item de menu File
(assim como ao menu de contexto). Isso permite que você defina uma ligação de chave que seja local para Nautilus 3 ou Nautilus 2 .
Aqui está um exemplo aproximado, usando seu exemplo xclip-pastefiles
já mencionado. Observe que, como está agora, é necessário configurar o xclip-copyfiles
antes de executar este script Ctrl-Shift-v colar .
Depois de executar a configuração xclip-copyfiles
, basta navegar para uma janela do Nautilus e selecionar o diretório de destino (ou um arquivo nesse diretório) e pressionar a combinação de teclas do seu script: Ctrl-Shift-v
#!/bin/bash
# Note: 'leafpad' is a simple text editor which doubles as a quick-and-easy testing messsage-box
dir=$(echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" |sed -n 1p)
if [[ -n "$dir" ]] ;then
# target dir from 'Nautilus Scripts' (1st priority)
if [[ -e "$dir" ]] ;then
[[ -d "$dir" ]] || dir="${dir%/*}"
[[ -d "$dir" ]] || dir=
fi
else
# target dir from $1 (2nd priority)
dir="$1"
if [[ -e "$dir" ]] ;then
[[ -d "$dir" ]] || dir="${dir%/*}"
[[ -d "$dir" ]] || dir=
fi
fi
if [[ -z "$dir" ]] ;then
# target dir from clipboard (if not in $NAUTILUS_SCRIPT.. or $1)
dir="$(xclip -o -sel c)"
if [[ -e "$dir" ]] ;then
[[ -d "$dir" ]] || dir="${dir%/*}"
[[ -d "$dir" ]] || dir=
else
dir=
fi
fi
[[ -d "$dir" ]] || { echo "$(basename "$0"): target directory not found in clipboard" |leafpad; exit 1; }
{ cd "$dir"
echo "Current Directory:"
echo " $dir"
echo "======="
echo xclip-pastefile # run your command ('echo' is for testing)
} 2>&1 |leafpad