Aggiorna / ricarica la scheda del browser attivo dalla riga di comando?


28

Sto cercando di impostare una toolchain personalizzata in cui il browser (Firefox o, preferibilmente, Chrome) è spesso / frequentemente / costantemente costretto ad aggiornare dalla riga di comando.

(L'idea è di vedere immediatamente i cambiamenti visivi nel html / webapp che sto modificando in un frame Emacs adiacente - senza dover fare costantemente clic sul browser per fare un aggiornamento manuale.)

Il più vicino a cui sono arrivato finora è correre google-chrome FILE_PATH. Tuttavia, questo apre una nuova scheda ogni volta.

Ci sono altri approcci?


1
Vorrei provare a iniziare da qualcosa come Ricarica automatica .
arte

Ah grazie per questo. Per la prima volta ho pensato che fosse un non-gioco dal momento che è solo per Mac, ma sembra che ci sia qualcosa di più multipiattaforma su github.com/guard/guard-livereload
thomanil

Apparentemente Firefox può essere controllato a distanza , ma non sono riuscito a farlo funzionare. Forse hai più fortuna.
amenthes,

Risposte:


13

Qualcosa con cui giocare

Utilizza xdotool , che consente di eseguire script di azioni su Windows / desktop. Se fornisci il nome del browser come argomento, troverà e ricaricherà la pagina corrente. È possibile impostare un browser predefinito, quindi non è necessario fornirne uno ogni volta e si può cambiare se si invia un CTRL-R per ricaricare o SHIFT-CTRL-R per ricaricare senza cache.

Si dovrebbe capovolgere al vostro browser, ricaricare la pagina, poi back flip a qualsiasi finestra che si chiama così da. Lo uso spesso mettendo il browser in background, con la finestra dell'editor impostata su 'ON-TOP' in modo che sia sempre visibile, tasto di scelta rapida questo script o chiamalo dal tuo editor e tornerà a fuoco quando ha finito.

Sono un utente di VIM e ho potuto vedere creare un autocomando per attivare automaticamente questo script ogni volta che veniva scritto un determinato file, quindi il browser si aggiornava quando appropriato, so che puoi fare lo stesso.

#!/bin/bash
#
# L Nix <lornix@lornix.com>
# 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}
#

+1 Cose interessanti! Si noti che il --nameparametro corrisponde alla stringa visualizzata nella barra del titolo della finestra, pertanto potrebbe non contenere sempre il nome del browser come in questo esempio.
rebus,

@rebus che dire di --class o --classname?
Aquarius Power,

6

La risposta di @lornix non ha funzionato del tutto per me (non sono sicuro del perché, forse il mio gestore di finestre non consente a xdotool di cambiare finestra). Ho scritto una versione modificata che dovrebbe essere più robusta:

  1. Non fa il passaggio non necessario tra le finestre
  2. Si limita alle finestre visibili
  3. Aggiorna tutte le finestre visibili

(Inoltre usa F5 invece di Ctrl-R, ma è solo perché ho Ctrl-R associato a qualcos'altro.)

#!/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

Dovrei aggiungere che questo non sembra funzionare con il cromo e non ho assolutamente idea del perché.
pastore,

Adoro vedere una sceneggiatura bash ben scritta! A proposito, il cromo funziona se si utilizza windowfocus prima della chiave . Ovviamente, devi ripristinare il focus precedente.
hackerb9


2

Per OS X puoi usare questo bit di applecript:

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.