En caso de que uses una aplicación que NO reaccione a AXZoomWindow de manera estándar (como BBEdit) o que tengas diferentes configuraciones "favoritas" para ventanas de diferentes aplicaciones (me gusta Mail) menos ancho que Safari), escribí un script que maximiza la ventana frontal de una aplicación y lo REAJUSTA a sus preferencias individuales.
Aquí hay algunos problemas que resolví y tuve que resolver:
1.) "proceso frontal" cuando se llama en una secuencia de comandos es "Eventos del sistema" o "ScriptEditor" : establezca visible a 0.
(NO se aplica a los accesos directos de Karabiner).
2.) Max. Los valores del escritorio están definidos por size of scroll area 1 of process "Finder"
3.) La altura de la barra de menú en mi sistema es 22px, así que tuve que restarlos en varios lugares
4.) Combiné valores para posición y amp; tamaño en una variable mutua por aplicación - ¡Reemplaza con la tuya!
5.) Con el fin de direccionar solo las aplicaciones que desea "Zoom", hay "maxMin" para excluir a otros -
agrega o elimina aplicaciones como quieras
6.) Por supuesto, deberá registrar el script / aplicación con "Acceso de asistencia" (Seguridad / Preferencias del sistema)
7.) O bien, ataje este script como un "Servicio" (a través de Automator) en Sys-Prefs, Teclado, atajos, ...
8.)… o use el ingenioso elemento clave Karabiner Remapper con una simple "modificación compleja":
"from": {"key_code": "m", "modifiers": {"mandatory": ["left_option"]} },
"to": [{"shell_command": "osascript ~/.config/myScpts/maxMin_zoom.app"}], **
"type": "basic"
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
(** path and name: your choice)
que ofrece un atajo adecuado en el momento; me conformé con "Opt-M", ya que la mayoría de los combos "Z" están en uso.
Aquí está el guión (DELETE lines 2 & 3 for Karabiner):
tell application "System Events"
set visible of first process whose frontmost is 1 to 0
delay 0.2
set dTopSize to size of scroll area 1 of process "Finder" as list
set maxPos to {0, 22}
set realApp to first process whose frontmost is true
set froAppName to (name of first process whose frontmost is true) as string
set maxMin to true
if (froAppName is "BBEdit") then
set appBounds to {0, 22, 888, (item 2 of dTopSize) - 22}
else if (froAppName is "Safari") then
set appBounds to {38, 22, 1372, (item 2 of dTopSize) - 22}
else if (froAppName is "Mail") then
set appBounds to {53, 22, 1314, (item 2 of dTopSize) - 22}
else
set maxMin to false
end if
if maxMin then
if item 1 of (size of window 1 of realApp as list) is not equal to ¬
item 1 of dTopSize then
set position of window 1 of realApp to maxPos
set size of window 1 of realApp to {(item 1 of dTopSize), ¬
(item 2 of dTopSize) - 22}
else
set size of window 1 of realApp to {item 3 of appBounds, ¬
item 4 of appBounds}
set position of window 1 of realApp to {item 1 of appBounds, ¬
item 2 of appBounds}
end if
end if
tell realApp to set frontmost to true
end tell