저는 MacBookPro(2012, Retina 디스플레이 이전 마지막 버전)에 외부 모니터를 사용하고 있습니다.
외부 모니터에 연결하지 않고도 맥북의 해상도는 1440x900으로 생활감이 좋습니다.
집에서는 동일한 해상도의 외부 모니터(및 미러 디스플레이)에 연결합니다. 생활이 아주 좋습니다.
그러나 학교에 와서 연구실(및 미러 디스플레이)에 설치하면 아래 스크린샷에서 볼 수 있듯이 겉보기 최대 해상도가 1280x900인 외부 모니터에 연결됩니다.
문제는 해상도 너비가 줄어들면서 전체 화면을 차지하기 위해 확대된 모든 애플리케이션(왼쪽 상단에 녹색 버튼 포함)이 여전히 너비가 1440픽셀을 차지할 수 있다고 생각하는 경향이 있다는 것입니다. 이로 인해 외부 모니터에 의해 다음 응용 프로그램이 차단되는 결과가 발생합니다.
이제 이 외부 모니터에 맞게 크기를 조정하기 위해 모든 응용 프로그램의 열려 있는 모든 창을 순환해야 합니다. 게다가 집에 돌아가면 1440x900 해상도에 대해 이 과정을 반복해야 합니다.
이 모든 수동 크기 조정을 피할 수 있는 방법이 있습니까(자동화되거나 해상도 변경을 감지할 때 자동으로 이 작업을 수행하는 애플스크립트일 수도 있음)?
저는 Mac OS X 10.7.5(Lion)를 사용하고 있습니다.
답변1
귀하의 문제에 대한 직접적인 해결책, 즉 미러링할 때 응용 프로그램이 더 작은 화면의 실제 크기를 알 수 있도록 하는 방법이 확실하지 않습니다.
그러나 나는 두 개의 유틸리티(슬프게도 무료는 아님)의 조합을 사용하여 두 개의 사무실과 집(각각 MacBook Pro에 서로 다른 모니터 조합이 연결되어 있음) 사이의 이동을 관리합니다.
그들은:
마련하다 (작성자: Trifle Apps)
머무르다 (by 무선 개)
따라서 정렬을 사용하면 창을 정확한 위치(원하는 대로 키보드 단축키, 핫 코너 또는 시각적 그리드)로 더 빠르게 이동할 수 있으며 다중 모니터를 인식할 수 있습니다. Stay는 구성별로 이러한 준비를 저장합니다. 따라서 모니터 X가 창 A와 B가 모두 특정 크기라는 것을 알게 되면 다음에 기억하고 모니터 Y에서 다른 경우 해당 모니터를 연결할 때 변경됩니다.
둘 다 무료 평가판을 제공하므로 한 번 사용해 보고 도움이 되는지 확인할 수 있습니다. 무료 솔루션을 제공해 드리지 못해 죄송합니다!
업데이트
저는 이제 Spectacle(에릭 차르니) 대신 정렬합니다. 도네이션웨어인데, 경험상 더 안정적인 것 같습니다. Arrange보다 덜 정교하지만 필요한 모든 기능을 수행합니다.
답변2
숙박은 무료가 아니며 모든 앱을 항상 처리하지 않습니다(버그가 있습니다).
와 함께도움, 나는 작업을 완벽하게 수행하는 다음 애플스크립트를 생각해낼 수 있었습니다.
property blacklist : {"Finder", "Preview", "Console", "AppleScript Editor", "Spotify", "TaskCoach"}
property buttonApps : {"LyX", "Eclipse"}
property buttonMaps : {{name:"LyX", Button:1, pname:"lyx"}, {name:"Eclipse", Button:2, pname:"eclipse"}}
tell application "Finder" to set theBounds to bounds of window of desktop
tell application "System Events"
set bids to bundle identifier of processes where background only is false
end tell
repeat with bid in bids
tell application id bid
if name is not in blacklist then
set appName to name as string
if name is "Terminal" then
set newBounds to {0, 0, (item 3 of theBounds) - 10, item 4 of theBounds}
repeat with theWindow in windows
if visible of theWindow is true then
say appName
set bounds of theWindow to newBounds
end if
end repeat
else if name is not in buttonApps then
repeat with theWindow in windows
if visible of theWindow is true then
set bounds of theWindow to theBounds
end if
end repeat
else if name is in buttonApps then
-- get the buttonNumber
repeat with buttonApp in buttonMaps
if (name of buttonApp as string) is appName then
set theButton to Button of buttonApp
end if
end repeat
tell application "System Events"
repeat with theProcess in (processes where bundle identifier is bid)
try
tell theProcess to tell window 1 to click button theButton
end try
end repeat
end tell
end if
end if
end tell
end repeat