Pregunta:
tl; dr Estoy buscando una forma de detectar cuándo se ha movido un marco de Emacs de un monitor a otro en una configuración de varios monitores.
Tengo un código en mi ~/.emacs
que establece el tamaño de fuente predeterminado para todos los búferes mostrados en un marco en función del tamaño físico y la resolución del monitor que aloja el marco de Emacs. En una configuración de varios monitores, me gustaría ejecutar la lógica de tamaño de fuente cuando un marco se mueve de un monitor a otro con dimensiones físicas rez + posiblemente diferentes.
No he encontrado una manera de hacer esto en Emacs estándar (he estado buscando principalmente en los ganchos disponibles) ni he encontrado ningún código de comunidad que pueda, por ejemplo, agregar un gancho para los eventos de cambio de monitor.
Respuesta:
Una forma de hacer esto es guardar el monitor original para cada fotograma (usando frame-monitor-attributes
) y luego ejecutar un temporizador, donde verifica el monitor actual.
Si ejecuta un temporizador inactivo y lo ejecuta algunos cronometrados cada segundo, no creo que ralentice mucho Emacs al mismo tiempo, será casi instantáneo.
En su pregunta, dijo que su código "establece el tamaño de fuente predeterminado para todos los búferes mostrados en un marco". No creo que este sea un buen enfoque, ya que un búfer se puede hacer visible en más de un cuadro. Una mejor solución sería cambiar la fuente predeterminada del marco usando set-default-font
.
(Un enfoque diferente sería definir una función para mover el marco por usted y, al mismo tiempo, cambiar el tamaño de fuente, etc.)