Atualiza / recarrega a aba ativa do navegador a partir da linha de comando?

26

Estou tentando configurar um conjunto de ferramentas personalizado onde o navegador (Firefox ou, preferencialmente, o Chrome) é frequentemente / constantemente / constantemente forçado a atualizar a partir da linha de comando.

(A idéia é ver instantaneamente as mudanças visuais no html / webapp que estou editando em um quadro Emacs adjacente - sem ter que constantemente tabular para o navegador para fazer uma atualização manual.)

O mais próximo que cheguei até agora foi executar google-chrome FILE_PATH . No entanto, isso abre uma nova guia toda vez.

Existem outras abordagens?

    
por thomanil 25.04.2012 / 09:03

4 respostas

12

Algo para brincar

Ele usa xdotool , que permite fazer scripts de ações do Windows / desktop. Se você fornecer o nome do navegador como um argumento, ele localizará e recarregará a página atual. Você pode definir um navegador padrão, portanto, não precisa fornecer um a cada vez, e pode alterar se envia um CTRL-R para recarregar ou SHIFT-CTRL-R para recarregar sem cache.

O deve mudar para o seu navegador, recarregar a página e voltar para a janela de onde você chamou isso. Eu uso isso frequentemente colocando o navegador em segundo plano, com a janela do editor configurada para 'ON-TOP', para que fique sempre visível, crie um hot-key para esse script ou chame-o do editor, e ele retornará seu foco quando terminar. / p>

Sou usuário do vim e pude ver um comando automático para acionar esse script automaticamente sempre que um determinado arquivo fosse gravado, para que o navegador fosse atualizado quando apropriado, sei que você pode fazer o mesmo.

#!/bin/bash
#
# L Nix <[email protected]>
# reload browser window
#
# whether to use SHIFT+CTRL+R to force reload without cache
RELOAD_KEYS="CTRL+R"
#RELOAD_KEYS="SHIFT+CTRL+R"
#
# set to whatever's given as argument
BROWSER=$1
#
# if was empty, default set to name of browser, firefox/chrome/opera/etc..
if [ -z "${BROWSER}" ]; then
    BROWSER=firefox
fi
#
# get which window is active right now
MYWINDOW=$(xdotool getactivewindow)
#
# bring up the browser
xdotool search --name ${BROWSER} windowactivate --sync
# send the page-reload keys (C-R) or (S-C-R)
xdotool search --name ${BROWSER} key --clearmodifiers ${RELOAD_KEYS}
#
# sometimes the focus doesn't work, so follow up with activate
xdotool windowfocus --sync ${MYWINDOW}
xdotool windowactivate --sync ${MYWINDOW}
#
    
por 13.07.2012 / 06:54
6

Se você estiver usando o Firefox, o Auto Reload é uma extensão em que é recarregado sempre que o arquivo é alterado. Você pode adicionar arquivos, diretórios ou localhost e editar filtros baseados em regex para obter o que deseja. Não conheço nenhum complemento para isso no Chrome. link: link

    
por 27.07.2012 / 14:42
2

A resposta do @lornix não funcionou bem para mim (não sei por que, possivelmente, o meu gerenciador de janelas não deixa o xdotool mudar de janela). Eu escrevi uma versão modificada que deveria ser mais robusta:

  1. Não faz a troca desnecessária entre janelas
  2. Limita-se a janelas visíveis
  3. Atualiza todas as janelas visíveis

(Também usa F5 ao invés de Ctrl-R, mas é só porque eu tenho o Ctrl-R ligado a outra coisa.)

#!/bin/bash

set -o errexit
set -o nounset

keystroke="CTRL+F5"

# set to whatever's given as argument, defaults to firefox
BROWSER="${1:-firefox}"

# find all visible browser windows
browser_windows="$(xdotool search --sync --all --onlyvisible --name ${BROWSER})"

# Send keystroke
for bw in $browser_windows; do
    xdotool key --window "$bw" "$keystroke"
done
    
por 03.11.2015 / 14:48
1

Para o OS X, você pode usar esse pouco de applescript:

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
    
por 16.12.2014 / 17:18