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


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.