efetivamente , o que você quer é abrir um novo URL em uma janela sem fechar a janela atual manualmente (se bem entendi), nem ter que fechar as abas manualmente.
Solução básica
A solução poderia ser executar um comando que combina duas coisas:
- abre uma nova janela a partir da linha de comando com o url como argumento
- fecha automaticamente a janela atual
Dessa forma, o pid do navegador não será alterado e você não precisará fechar manualmente as guias e / ou janelas.
O pequeno script abaixo faz exatamente isso, usando o firefox. O motivo para usar o firefox é que (por exemplo) o chrome tem vários pids por definição, tornando o processo mais complicado.
instalando o wmctrl
O script usa wmctrl para localizar e fechar as janelas atuais do Firefox, você pode ter que instalá-lo primeiro:
sudo apt-get install wmctrl
O script
#!/usr/bin/env python3
import subprocess
import socket
import sys
url =sys.argv[1]
def get_info(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.call(["/bin/bash", "-c", command])
currpid = get_info("pidof firefox")
browserwindow = [l.split()[0] for l in get_info("wmctrl -l -p").splitlines() if currpid in l]
run_command("firefox -new-window "+url)
for i in browserwindow:
run_command("wmctrl -ic "+i)
Como usar
Copie o script em um arquivo vazio, salve-o como firejump.py
. Abra uma janela do firefox (qualquer endereço, apenas uma janela) e execute o script pelo comando:
python3 /path/to/firejump.py <new_url>
Desativar aviso para fechar a janela atual
Para que o procedimento seja executado sem o aviso irritante do firefox de que você está fechando as guias ou janelas atuais: desative os avisos desmarcando-o nas preferências:
Soluçãomaisavançada
SevocêrealmenteprecisarpularumalistademilharesdeURL,podeserútilestenderoscriptumpouco(consulteoscriptabaixo)edeixá-lopularautomaticamenteparaopróximoURLdeumalistacriadaemumarquivodetextoeexecuteoscriptcomumacombinaçãodeteclasparairparaopróximoURL.
Comousar
- Copieoscriptabaixoemumtexfilevazio,salve-ocomo
jump_list.py
- crienamesmapastaumarquivodetextochamado(exatamente):
urls.txt
preenchaoarquivocomseusURLs,umporlinha:
www.something.comwww.another_thing.comwww.yet_another_thing.nlwww.itshardtostop.be
eassimpordiante
AbraumajaneladoFirefox(qualquerendereço,apenasumajanela).
Agora,quandovocêexecutaoscript,ofirefoxabreoprimeirourl.
Execute-onovamenteeeleirápularparaopróximourleassimpordiante,atéqueoúltimoURLdalistatenhapassado.
Explicação
Oscriptlêaslinhasnoarquivourls.txt
poríndice.Elemonitoraoíndice(usadoporúltimo)emumarquivoqueoscriptcrianoprópriodiretóriodoscript.Todavezqueoscriptéexecutado,onúmeroéaumentadoemumatéqueaúltimalinhasejaatingida.
Oscript
#!/usr/bin/env python3
import subprocess
import os
curr_path = os.path.dirname(os.path.abspath(__file__))
def get_info(command):
return subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").strip()
def run_command(command):
subprocess.call(["/bin/bash", "-c", command])
def write_totrack(file, next_url):
with open(file, "wt") as wrt:
wrt.write(next_url)
def read_file(file):
with open(file) as src:
return src.read()
keep_track = curr_path+"/"+"next_visit.txt"
url_list = read_file(curr_path+"/"+"urls.txt").splitlines()
if not os.path.exists(keep_track):
next_url = "1"; index = 0
write_totrack(keep_track, next_url)
else:
index = int(read_file(keep_track))
next_url = index+1
write_totrack(keep_track, str(next_url))
if index < len(url_list):
curr_url = url_list[index]
currpid = get_info("pidof firefox")
browserwindow = [l.split()[0] for l in get_info("wmctrl -l -p").splitlines() if currpid in l]
run_command("firefox -new-window "+curr_url)
for i in browserwindow:
run_command("wmctrl -ic "+i)
else:
pass
Execute o script por:
python3 /path/to/jump_list.py
Adicione a $ PATH
Mais elegante seria salvar o script em ~/bin
, torná-lo executável, remover a extensão de idioma e executá-lo pelo comando:
jump_list
Adicionar às teclas de atalho
Para realmente deixá-lo confortável, adicione-o a uma combinação de atalhos: Configurações do sistema > "Teclas de atalho" > "Atalhos personalizados"