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
-
instale
python3-pyperclip
exdotool
:sudo apt install python3-pyperclip xdotool
-
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.
-
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)
-
os scripts precisam de
python3-pyperclip
exdotool
:sudo apt install python3-pyperclip xdotool
-
Copie o script acima em um arquivo vazio, salve-o como
toggle_selected.py
-
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
- O script usa
xdotool
para praticamente pressionar Ctrl + C -
Posteriormente, o script (internamente) cria uma lista de arquivos selecionados:
pyperclip.paste().splitlines()
-
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)
-
O
time.sleep(1)
finalmente é garantir que a pressão da tecla "real" não interfira com o pressionamento de tecla simulado porxdotool
.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