从命令行刷新/重新加载活动浏览器选项卡?

tho*_*nil 33 command-line chrome firefox browser

我正在尝试设置一个自定义工具链,其中浏览器(Firefox 或最好是 Chrome)经常/经常/不断地被迫从命令行刷新。

(这个想法是立即看到我在相邻 Emacs 框架中编辑的 html/webapp 中的视觉变化 - 无需不断地切换到浏览器进行手动刷新。)

到目前为止,我最接近的是 run google-chrome FILE_PATH。但是,这每次都会打开一个新选项卡。

还有其他方法吗?

lor*_*nix 18

玩的东西

它使用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}
#
Run Code Online (Sandbox Code Playgroud)


dsh*_*erd 8

@lornix 的回答对我来说不太适用(我不确定为什么,可能我的窗口管理器不让 xdotool 切换窗口)。我写了一个应该更健壮的修改版本,它:

  1. 不会在窗口之间进行不必要的切换
  2. 将自身限制为可见窗口
  3. 刷新所有可见窗口

(它也使用 F5 而不是 Ctrl-R,但这只是因为我将 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
Run Code Online (Sandbox Code Playgroud)


小智 6

如果您使用的是 Firefox,Auto Reload 是一个扩展,每当文件更改时它都会重新加载。您可以添加文件、目录或本地主机并编辑基于正则表达式的过滤器,以便实现您想要的。我不知道 Chrome 对此有何补充。链接:https : //addons.mozilla.org/en-US/firefox/addon/auto-reload/