¿Actualizar / volver a cargar la pestaña activa del navegador desde la línea de comandos?


28

Estoy tratando de configurar una cadena de herramientas personalizada donde el navegador (Firefox o, preferiblemente, Chrome) a menudo / con frecuencia / constantemente se ve obligado a actualizar desde la línea de comandos.

(La idea es ver instantáneamente los cambios visuales en el html / webapp que estoy editando en un marco de Emacs adyacente, sin tener que presionar constantemente el navegador para realizar una actualización manual).

Lo más cerca que he llegado hasta ahora es correr google-chrome FILE_PATH. Sin embargo, esto abre una nueva pestaña cada vez.

¿Hay otros enfoques?


1
Intentaría comenzar desde algo como Auto Recargar .
manatwork

Ah, gracias por esto. Primero pensé que esto era una opción
prohibida,

Aparentemente, Firefox puede ser controlado a distancia , pero no pude hacerlo funcionar. Quizás tengas mejor suerte.
amenthes

Respuestas:


13

Algo para jugar

Utiliza xdotool , que le permite ejecutar acciones de escritorio / ventanas. Si proporciona el nombre del navegador como argumento, encontrará y volverá a cargar la página actual. Puede configurar un navegador predeterminado, por lo que no necesita suministrar uno cada vez, y puede cambiar si envía un CTRL-R para recargar, o SHIFT-CTRL-R para recargar sin caché.

Se debe dar la vuelta a su navegador, vuelva a cargar la página, a continuación, voltereta hacia atrás a lo que se llama ventana de este. Utilizo esto a menudo al poner el navegador en segundo plano, con la ventana del editor configurada en 'ON-TOP' para que siempre esté visible, active este script o lo llame desde su editor, y le devolverá el foco cuando lo haga.

Soy un usuario de vim, y pude ver hacer un autocomando para activar automáticamente este script cada vez que se escribió un archivo determinado, por lo que el navegador se actualizará cuando sea apropiado, sé que puede hacer lo mismo.

#!/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 cosas geniales! Tenga en cuenta que el --nameparámetro coincide con la cadena que se muestra en la barra de título de la ventana, por lo que no siempre puede contener el nombre del navegador como en este ejemplo.
rebus

@rebus ¿qué pasa con --class o --classname?
Aquarius Power

6

La respuesta de @ lornix no funcionó para mí (no estoy seguro de por qué, posiblemente mi administrador de ventanas no permite que xdotool cambie las ventanas). Escribí una versión modificada que debería ser más robusta:

  1. No hace el cambio innecesario entre ventanas
  2. Se limita a ventanas visibles
  3. Actualiza todas las ventanas visibles.

(También usa F5 en lugar de Ctrl-R, pero eso es solo porque tengo Ctrl-R vinculado a otra cosa).

#!/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

Debo agregar que esto no parece funcionar con cromo, y no tengo absolutamente ninguna idea de por qué.
dshepherd

¡Me encanta ver un script de bash bien escrito! Por cierto, el cromo funciona si usa windowfocus antes de la tecla . Por supuesto, debe restaurar el enfoque anterior.
hackerb9


2

Para OS X puedes usar este bit de applecript:

activate application "Firefox"
tell application "System Events" to keystroke "r" using command down
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.