Nautilus: Ação personalizada em arquivos selecionados via atalho de teclado

3
  1. eu abro um diretório contendo cerca de 100 arquivos no nautilus
  2. Eu seleciono N (talvez 10) arquivos, observando a pré-visualização do arquivo.
  3. Agora, gostaria de acessar o atalho e meu script personalizado deve ser chamado.
  4. Meu script personalizado recebe os nomes dos arquivos e faz o que eu quero.

Como posso registrar uma ação personalizada no gnome / ubuntu / nautilus que recebe os nomes dos arquivos que são selecionados no nautilus?

Nova entrada de contexto no menu de contexto do nautilus

Se você escrever um script em ~ / .local / share / nautilus / scripts, obterá uma nova entrada no menu de contexto. Como chamar esse script por meio de um atalho?

Antecedentes

Esta é uma pergunta de acompanhamento para Nautilus: Marcar arquivos em diretório como favorito

Versão

Eu uso o Ubuntu 16.04

    
por guettli 13.03.2017 / 13:55

1 resposta

3

Execução de ações em arquivos selecionados

A resposta abaixo irá primeiro responder literalmente à sua pergunta;

% bl0ck_qu0te%

No entanto, a resposta aceita na pergunta vinculada usa scripts nautilus , que recebem arquivos como argumentos do nautilus. Isso não funciona a partir de um atalho , apenas quando clicados com o botão direito do mouse em in . Em [2] , portanto, adicionei a funcionalidade dos scripts da pergunta vinculada à resposta, portanto, você só precisa executar um deles (em [2] ) em um atalho.

[1] Para 16.04 e superior *, executando um script com arquivos selecionados como argumentos

Você pode simplesmente usar o script curto abaixo. Ele "lerá" os arquivos atualmente selecionados e executará seu script com os arquivos como argumentos.

#!/usr/bin/env python3
import subprocess
import pyperclip
import time

time.sleep(1)
subprocess.call(["xdotool", "key", "Control_L+c"])

for item in pyperclip.paste().splitlines():
    subprocess.Popen(["/path/to/script", item])

Para usar

  1. instale python3-pyperclip e xdotool :

    sudo apt install python3-pyperclip xdotool
    
  2. Copie o script acima em um arquivo vazio, salve-o como run_withselected.py Replace no script

    "/path/to/script" 
    

    pelo caminho real para o script que você deseja executar. Use caminhos absolutos entre aspas.

  3. Adicione a uma tecla de atalho: Escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

    python3 /path/to/run_withselected.py
    

[2] No entanto

Observe que o script nautilus vinculado da outra resposta não será executado desta forma, já que ele recupera seus argumentos de outra maneira do nautilus diretamente . Eu, portanto, combinei a funcionalidade do script da questão vinculada, com a acima.

Você não precisa mais do (s) outro (s) script (s) da outra resposta.

Designe arquivos alterando o nome

selecione arquivos

pressioneoatalhoparamarcar(alternar)osarquivos

#!/usr/bin/env python3 import subprocess import pyperclip import shutil import os import time time.sleep(1) def npath(p, f): return os.path.join(p, f) subprocess.call(["xdotool", "key", "Control_L+c"]) for item in pyperclip.paste().splitlines(): data = item.rsplit("/", 1); path = data[0]; name = data[1] newname = name[2:] if name.startswith("*0") else "*0"+name shutil.move(npath(path, name), npath(path, newname))

B. Designe arquivos criando um link em um diretório "favoritos"

selecione arquivos

pressioneoatalhoparacriar(alternar)umlinkem"Meus_Favoritos"

#!/usr/bin/env python3 import subprocess import pyperclip import shutil import os import time fav = os.path.join(os.environ["HOME"], "My_Favorites") try: os.mkdir(fav) except FileExistsError: pass time.sleep(1) subprocess.call(["xdotool", "key", "Control_L+c"]) for item in pyperclip.paste().splitlines(): name = item.rsplit("/", 1)[-1] link = os.path.join(fav, name) try: os.symlink(item, link) except FileExistsError: os.remove(link)

Para usar (qualquer um)

  1. os scripts precisam de python3-pyperclip e xdotool :

    sudo apt install python3-pyperclip xdotool
    
  2. Copie o script acima em um arquivo vazio, salve-o como toggle_selected.py

  3. Adicione a tecla de atalho: escolha: Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados". Clique no botão "+" e adicione o comando:

    python3 /path/to/toggle_selected.py
    

Explicação

  1. O script usa xdotool para praticamente pressionar Ctrl + C
  2. Posteriormente, o script (internamente) cria uma lista de arquivos selecionados:

    pyperclip.paste().splitlines()
    
  3. Esses arquivos são usados subsequentemente como argumentos para renomear os arquivos:

    for item in pyperclip.paste().splitlines():
        data = item.rsplit("/", 1); path = data[0]; name = data[1]
        newname = name[2:] if name.startswith("*0") else "*0"+name
        shutil.move(npath(path, name), npath(path, newname))
    

    ou crie um link simbólico:

    for item in pyperclip.paste().splitlines():
        name = item.rsplit("/", 1)[-1]
        try:
            os.symlink(item, os.path.join(fav, name))
        except FileExistsError:
            os.remove(link)
    
  4. O time.sleep(1) finalmente é garantir que a pressão da tecla "real" não interfira com o pressionamento de tecla simulado por xdotool .

    Notas

    • Na resposta vinculada, o script segundo cria o link, mas não alterna. Eu fiz a resposta "B" também alternar a existência do symlink.
    • Se fosse para um aplicativo publicado, eu combinaria A e B em um script e decidiria qual ação executar em um arquivo de configurações. Eu poderia acrescentar isso depois.

* 14.04

... exigirá um procedimento diferente para instalar o pyperclip:

sudo apt-get install python3-pip xdotool
sudo pip3 install pyperclip
    
por Jacob Vlijm 18.03.2017 / 09:23