コマンドラインからアクティブなブラウザタブを更新または再ロードしますか?

コマンドラインからアクティブなブラウザタブを更新または再ロードしますか?

ブラウザ(Firefox、または好ましくはChrome)がコマンドラインで頻繁に/頻繁に/継続的に更新されるカスタムツールバーを設定しようとしています。

(アイデアは、手動で更新するためにブラウザに切り替えることなく、隣接するEmacsフレームで編集中のhtml / webappの視覚的な変更をすぐに確認することです。)

これまで私がやってきたものの中で一番近いのは走りだgoogle-chrome FILE_PATH。ただし、これにより毎回新しいタブが開きます。

別の方法がありますか?

答え1

遊ぶことがある

それを使うxdoツール、ウィンドウ/デスクトップタスクをスクリプトできます。ブラウザ名をパラメータとして指定すると、現在のページを見つけて再読み込みします。毎回提供する必要がないようにデフォルトのブラウザを設定し、キャッシュを使用せずに再ロードするには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}
#

答え2

@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

答え3

Firefoxを使用している場合、自動更新はファイルが変更されるたびにファイルを再ロードする拡張機能です。ファイル、ディレクトリ、またはローカルホストを追加し、正規表現ベースのフィルタを編集して目的の効果を得ることができます。 Chromeに追加されたものがあるかどうかわかりません。関連:https://addons.mozilla.org/en-US/firefox/addon/auto-reload/

答え4

OS Xでは、次のAppleScriptを使用できます。

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

たとえば、端末で実行すると、次のようになります。

osascript \
  -e 'activate application "Firefox"' \
  -e 'tell application "System Events" to keystroke "r" using command down'

関連情報