コマンドラインからアクティブなブラウザタブを更新/再読み込みしますか?


28

ブラウザ(Firefoxまたは、できればChrome)がコマンドラインから頻繁に/頻繁に/常に強制的に更新されるカスタムツールチェーンを設定しようとしています。

(アイデアは、隣接するEmacsフレームで編集中のhtml / webappの視覚的な変化を即座に確認することです-手動で更新するために常にブラウザに移動する必要はありません。)

私が今まで来た一番近いのは走ることgoogle-chrome FILE_PATHです。ただし、これにより毎回新しいタブが開きます。

他のアプローチはありますか?


1
Auto Reloadのようなものから始めようとします。
マナトワーク

ああ、ありがとうございます。Macのみであるため、最初はこれは禁止
guard /

Firefoxはどうやらリモート制御可能ですが、動作させることができませんでした。たぶんあなたはより良い運があります。
15

回答:


13

遊ぶもの

それは使用していますxdotoolあなたのスクリプトウィンドウ/デスクトップの操作をすることができます。引数としてブラウザの名前を指定すると、現在のページが検索されてリロードされます。デフォルトのブラウザを設定できるので、毎回ブラウザを指定する必要がなく、CTRL-Rを送信してリロードするか、SHIFT-CTRL-Rをキャッシュなしでリロードするかを変更できます。

それはする必要があり、ブラウザに反転ページをリロードし、どんな窓にフリップバックは、あなたがこれをから呼び出されました。私はこれを頻繁に使用します。ブラウザーをバックグラウンドに配置し、エディターウィンドウを 'ON-TOP'に設定して常に表示されるようにします。このスクリプトをホットキーにするか、エディターから呼び出します。

私はvimユーザーであり、特定のファイルが書き込まれるたびにこのスクリプトを自動的にトリガーするオートコマンドを作成できるので、必要に応じてブラウザが更新されます。

#!/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クールなもの!--nameパラメータはウィンドウのタイトルバーに表示される文字列と一致するため、この例のようにブラウザの名前が常に含まれているとは限らないことに注意してください。
REBUS

@rebus --classまたは--classnameはどうですか?
アクエリアスパワー14年

6

@lornixの答えは私にとってはうまくいきませんでした(なぜか、ウィンドウマネージャがxdotoolでウィンドウを切り替えることができない可能性があります)。より堅牢な修正版を作成しました。

  1. ウィンドウ間の不要な切り替えを行いません
  2. 自身を可視ウィンドウに制限します
  3. 表示されているすべてのウィンドウを更新します

(また、Ctrl-Rの代わりにF5を使用しますが、それは、Ctrl-Rが他の何かにバインドされているからです。)

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

よく書かれたbashスクリプトを見るのが大好きです!ちなみに、keyの前にwindowfocusを使用すると、chromeが機能ます。もちろん、その後、以前のフォーカスを復元する必要があります。
hackerb9

6

Firefoxを使用している場合、自動再読み込みは、ファイルが変更されるたびに再読み込みする拡張機能です。ファイル、ディレクトリ、またはlocalhostを追加し、正規表現ベースのフィルターを編集して、目的を達成できます。Chromeでこれを補完するものは知りません。リンク:https : //addons.mozilla.org/en-US/firefox/addon/auto-reload/


1
悲しいことに、もう機能しません。
グリンゴサーブ

2

OS Xの場合、このビットのapplescriptを使用できます。

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.