Odśwież / przeładuj aktywną kartę przeglądarki z wiersza poleceń?

28

Próbuję skonfigurować niestandardowy zestaw narzędzi, w którym przeglądarka (Firefox lub, najlepiej, Chrome) jest często / często / stale zmuszana do odświeżania z wiersza poleceń.

(Chodzi o to, aby natychmiast zobaczyć zmiany wizualne w edytorze HTML / aplikacji internetowej, które edytuję, w sąsiedniej ramce Emacsa - bez konieczności ciągłego przechodzenia do przeglądarki w celu ręcznego odświeżenia.)

Najbliżej, do jakiej do tej pory doszedłem, jest ucieczka google-chrome FILE_PATH. Jednak za każdym razem otwiera się nowa karta.

Czy są inne podejścia?

thomanil
źródło
1
Chciałbym zacząć od czegoś takiego jak Auto Reload .
manatwork
Ach, dziękuję za to. Po raz pierwszy pomyślałem, że nie da się
thomanil
Firefox można najwyraźniej kontrolować zdalnie , ale nie mogłem go uruchomić. Może masz więcej szczęścia.
amenthes

Odpowiedzi:

13

Coś do zabawy

Wykorzystuje xdotool , który pozwala na pisanie skryptów dla akcji Windows / Desktop. Jeśli podasz nazwę przeglądarki jako argument, znajdzie ona i załaduje ponownie bieżącą stronę. Możesz ustawić domyślną przeglądarkę, aby nie trzeba było jej dostarczać za każdym razem, i możesz zmienić, czy wysyłasz CTRL-R, aby przeładować, czy SHIFT-CTRL-R, aby przeładować bez pamięci podręcznej.

To powinno odwrócić do przeglądarki, odświeżyć stronę, a następnie z powrotem do tego, co klapka okna nazwałeś to od. Używam tego często, umieszczając przeglądarkę w tle, z oknem edytora ustawionym na „NA GÓRĘ”, aby zawsze było widoczne, naciśnij klawisz skrótu tego skryptu lub wywołaj go z edytora, a on zwróci fokus po zakończeniu.

Jestem użytkownikiem vima i widziałem, jak automatyczne polecenie uruchamia ten skrypt za każdym razem, gdy zapisywany jest dany plik, więc przeglądarka odświeża się w razie potrzeby, wiem, że możesz zrobić to samo.

#!/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}
#
lornix
źródło
+1 fajne rzeczy! Zauważ, że --nameparametr pasuje do ciągu wyświetlanego na pasku tytułu okna, więc nie zawsze może zawierać nazwę przeglądarki, jak w tym przykładzie.
rebus
@rebus co z --class lub --classname?
Aquarius Power
6

Odpowiedź @ lornix nie działała dla mnie (nie jestem pewien dlaczego, być może mój menedżer okien nie pozwala xdotool przełączać okien). Napisałem zmodyfikowaną wersję, która powinna być bardziej niezawodna:

  1. Nie powoduje niepotrzebnego przełączania między oknami
  2. Ogranicza się do widocznych okien
  3. Odświeża wszystkie widoczne okna

(Używa również F5 zamiast Ctrl-R, ale to tylko dlatego, że mam Ctrl-R związany z czymś innym.)

#!/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
dshepherd
źródło
Powinienem dodać, że wydaje się, że nie działa z chromem i absolutnie nie mam pojęcia, dlaczego.
dshepherd
Uwielbiam widzieć dobrze napisany skrypt bash! Nawiasem mówiąc, chrom działa, jeśli używasz Windowfocus przed klawiszem . Oczywiście musisz przywrócić poprzedni fokus.
hackerb9
6

Jeśli używasz przeglądarki Firefox, funkcja Auto Reload jest rozszerzeniem, w którym ładuje się ponownie po każdej zmianie pliku. Możesz dodawać pliki, katalogi lub localhost i edytować filtry oparte na wyrażeniach regularnych, aby osiągnąć to, co chcesz. Nie znam żadnego komplementarnego do tego w Chrome. link: https://addons.mozilla.org/en-US/firefox/addon/auto-reload/

RamaPrakasha
źródło
1
Niestety nie działa.
Gringo Suave,
2

W systemie OS X możesz użyć tego fragmentu AppleScript:

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
Wolph
źródło