명령 행에서 활성 브라우저 탭을 새로 고치거나 다시로드 하시겠습니까?


28

브라우저 (Firefox 또는 선호하는 경우 Chrome)가 종종 / 자주 / 꾸준히 명령 줄에서 새로 고쳐지는 사용자 정의 도구 체인을 설정하려고합니다.

(아이디어는 수동으로 새로 고치기 위해 브라우저를 계속 탭하지 않고도 인접한 Emacs 프레임에서 편집중인 html / webapp의 시각적 변경 사항을 즉시 확인할 수 있습니다.)

내가 지금까지 온 가장 가까운 것은 실행하는 것 google-chrome FILE_PATH입니다. 그러나 이렇게하면 매번 새 탭이 열립니다.

다른 접근법이 있습니까?


1
Auto Reload 와 같은 것으로 시작하려고합니다 .
manatwork

아 감사합니다. 나는 이것이 맥이기 때문에 처음에는 이것이없는 것이라고 생각했지만 github.com/guard/guard-livereload에
thomanil

Firefox는 분명히 원격 제어 가능 하지만 작동하지 못했습니다. 운이 좋을 수도 있습니다.
amenthes

답변:


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 --class 또는 --classname은 어떻습니까?
물병 자리 힘

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 를 사용하면 크롬이 작동합니다 . 물론 이전 초점을 복원해야합니다.
hackerb9


2

OS X의 경우이 비트의 애플 스크립트를 사용할 수 있습니다.

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.