web-dev-qa-db-ja.com

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

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

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

これまでのところ、最も近いのはgoogle-chrome FILE_PATHを実行することです。ただし、これにより毎回新しいタブが開きます。

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

28
thomanil

何かと遊ぶ

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

それはすべきブラウザに切り替え、ページをリロードしてから、呼び出し元のウィンドウに切り替えます。私はこれを頻繁に使用します。ブラウザーをバックグラウンドで配置し、エディターウィンドウを 'ON-TOP'に設定して常に表示されるようにします。このスクリプトをホットキーで押すか、エディターから呼び出します。完了すると、フォーカスが戻ります。

私はvimユーザーです。特定のファイルが書き込まれるたびに、このコマンドを自動的にトリガーするオートコマンドを作成しているのを見ることができたので、ブラウザーが適切に更新されるので、同じことができます。

#!/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}
#
13
lornix

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

6
RamaPrakasha

@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
6
dshepherd

OS Xの場合、次のapplescriptを使用できます。

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
2
Wolph