๋๋ก๋ ์ ๊ณต๊ฐ์ ๋ง๋ค๊ณ ์ ๊ณต๊ฐ์ ์ฐฝ์ ๋์ ธ์ผ ํฉ๋๋ค. ์์์ ์ผ๋ก ์ด๊ฒ์ ์ฒ๋ฆฌํ ์ ์๋ค๋ฉด (๋์๊ฒ) ์ ์ฉํ ๊ฒ์ ๋๋ค.
์ ๊ณต๊ฐ์ ์ถ๊ฐํ๊ธฐ ์ํด ์ง๊ธ๊น์ง ์ฐพ์ ์ต๊ณ ์ ์ํฌํ๋ก:
AppleScript ๋ฐ Accessibility Inspector๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ์ผ๋ฉฐ Apple์ ๊ฐ๋ฐ์ ๋ฌธ์ ๋ฐ Amethyst ์์ค์์ ์ฝ๊ฐ์ ํผ์์ ์ธ ๊ฒ์์ ์ํํ์ฌ ๊ฐ๋ฅํ ์๋ฃจ์ ์ด๋ ๊ด๋ จ ๊ธฐ๋ฅ์ ์ฐพ์ ์ ์๋์ง ํ์ธํ์ต๋๋ค. ํ์ง๋ง ํ์คํ ๋ด ์ด๋ณด์์ ๊ธฐ์ ์ ๋ถ์กฑํ๊ณ ๋๋ ์คํจํ์ต๋๋ค :)
์ด๊ฒ ๊ฐ๋ฅํด? ๊ทธ๋ ๋ค๋ฉด ๊ธฐ๊บผ์ด ์ฌ๋ฐ๋ฅธ ๋ฐฉํฅ์ผ๋ก ๊ณ์ ๋์๊ฐ๊ณ ์ถ์ต๋๋ค. ๋น๋ก ๊ทธ๊ฒ์ด ๋ฐํ์ง๋๋ผ๋ ์์์ ์ ์ฌ์ฉํ์ฌ ์ด ์์ ์ ์ํํ ์๋ ์์ ๊ฒ์ ๋๋ค.
ํ , ์ด๊ฒ์ ๋ํด ๋ณด๋ ค๋ฉด Apple์ API์ ๋ํด ๋ ๊น์ด ํ๊ณ ๋ค์ด์ผ ํ ๊ฒ์ ๋๋ค. ๊ฐ์ฅ ๊ฐ๋ ฅํ ์๋ฃจ์ ์ ์ฐฝ์ ๋ค๋ฅธ ๊ณต๊ฐ์ผ๋ก ์ด๋ํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํ๊ฒ ์ฒ๋ฆฌํ๋ ๊ฒ์ ๋๋ค(๋ง์ฐ์ค๋ฅผ ์กฐ์ํ์ฌ ์ฐฝ์ ํด๋ฆญํ๊ณ ๋๋๊ทธํ๋ ๋์์ ๋จ์ถํค๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ๊ณต๊ฐ์ผ๋ก ์ด๋) ์ด๊ฒ์ ๋ค์ ์ฐ์ํ์ง ์์ผ๋ฉฐ ์ด๊ฒ์ด ๋ค๋ฅธ ํ๋ฉด ํฌ๊ธฐ/์ค์ ์ผ๋ก ์ด๋ป๊ฒ ๋ณํ๋๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง ํ ๊ฐ์ง ํด๊ฒฐ์ฑ ์ ๋น์ทํ ์์ ์ ์ํํ๋ ๊ฒ์ ๋๋ค.
์ฆ
๊ณต๊ฐ์ ๋ํ ๊ฐ์ธ API๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ณต๊ฐ์ ๋ง๋๋ ๋ฐฉ๋ฒ๋ ์์ ์ ์์ง๋ง ํด๋น ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Ian์ด ๊ฐ์ธ API๋ฅผ ์ฌ์ฉํ๊ธฐ๋ฅผ ์ํ์ง ์๊ธฐ ๋๋ฌธ์ Amethyst์ ๋ณํฉ๋์ง ์์ต๋๋ค.
@๋ ์ค๋๋ฅดํธ ,
SO ์์ด ๋ต๋ณ ์ AppleScript ๋ฐ MouseTools๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ณต๊ฐ์ ๋ง๋ค์ง ๋ง ๋ถํ์ํ ์ข ์์ฑ์ ํผํ๊ณ ์ถ์ต๋๋ค.
delay 0.5 -- time to release command if the script is run with command-R
tell application "System Events"
key code 126 using control down -- control-up
delay 1
do shell script "MouseTools -x 1900 -y 60;sleep 1;MouseTools -leftClickNoRelease;MouseTools -releaseMouse"
key code 53 -- escape
end tell
^ MouseTools ๋ฐ ํ๋ฉด ํฌ๊ธฐ ์ข ์์ฑ์ ํด๊ฒฐํ๊ธฐ ์ํด ์ ๊ทผ์ฑ ๊ฒ์ฌ๊ธฐ๋ฅผ ๋๋ฌ๋ณด๊ณ ๋ํ๊ธฐ ๊ธฐํธ์ ๋ํ ๋ฒํผ ์ค๋ช ์ด "๋ฐ์คํฌํฑ ์ถ๊ฐ"๋ผ๋ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ด ์ค๋ช ์ ๊ณ ์ ํ๊ฒ ๋ณด์ด์ง๋ง AppleScript์ ๋ค์์ ํตํด ๋ฒํผ์ ์ฐพ๋๋ก ์ง์ํ๋ ๋ฐฉ๋ฒ์ ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ณต๋ฐฑ ๋ค์ ํด๋น ์ค๋ช ์ด ํ์๋๊ณ ๋ํ๊ธฐ ๊ธฐํธ๊ฐ ๋ํ๋ฉ๋๋ค. ์ด ์์ ์ ์ํํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๊น?
SO์ ๋ ๋ค๋ฅธ ๋ต๋ณ ์ com.apple.spaces.plist
๋ฅผ ์์ ํ์ฌ ๊ณต๋ฐฑ์ ์ถ๊ฐํ ๋ค์ Finder ํ๋ก์ธ์ค๋ฅผ ๋ค์ ์์ํ๋๋ก ์ ์ํ์ง๋ง ์ด๊ฒ์ด ๋๋ฌด ๋ง์ ํดํน์ผ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. :)
์๊ฐ?
์ด๊ฒ๊ณผ ๊ด๋ จ๋ ๊ฒ์ ์์ฒญ๋ ๊ณต๊ฐ์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ ๋์ง๊ธฐ ์ ์ ๊ณต๊ฐ ๋ฐ๋ก ๊ฐ๊ธฐ์ ๋ํ ๋์ง๊ธฐ ์ด์ ์ฐฝ์์ ๊ณต๊ฐ์ ๋ง๋๋ ๊ฒ์ ๋๋ค.
Mojave์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๊ณต๊ฐ ์์ฑ์ ์๋ํํ ์ ์์์ต๋๋ค.
tell application "System Events"
do shell script "/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
click button 1 of group "Spaces Bar" of group 1 of group "Mission Control" of process "Dock"
do shell script "/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
end tell
์ด ์ ๊ทผ ๋ฐฉ์์์๋ Mission Control ํค ๋ฐ์ธ๋ฉ์ ์ค์ ํ ํ์๋ ์์ง๋ง ์ ๋๋ฉ์ด์
์ด ์์๋๊ณ ์ค์ง๋ ๋ ์ฐฝ์ ๋ช ์ด ๋์ ์ถ์๋ฉ๋๋ค. ํด๋ฆญ ํ delay 0.5
์ถ๊ฐํ๋ฉด ์ ๋๋ฉ์ด์
์ด ์ ๊ณต๊ฐ ์์ฑ์ ํ์ํ๊ธฐ์ ์ถฉ๋ถํ ์๊ฐ์ด ์ฃผ์ด์ง๋๋ค.
@codehearts ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด
> pbpaste | osascript
35:121: execution error: System Events got an error: sh: /Applications/Mission Control.app/Contents/MacOS/Mission Control: No such file or directory (127)
"/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
๋ฅผ /System/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
๋์ฒดํ๋ฉด ๋ค์์์ ์๋ํฉ๋๋ค.
> sw_vers -productVersion
10.15.2
@codehearts ์คํฌ๋ฆฝํธ๋ ๋ด Mac ๋ฒ์ ์์ ์๋ํฉ๋๋ค: 10.14.6
-- ์ด ํจ์๋ฅผ Amethyst์ ํจํค์งํ๋ ๊ฒ์ด ์ข์ ๊ฒ์
๋๋ค. ํ์ฌ ๊ทธ๊ฒ์ Mac์์ ๋์๊ฒ ๊ณจ์นซ๊ฑฐ๋ฆฌ์
๋๋ค(๋ชจ๋ ์ผ์ด ํค๋ณด๋๋ฅผ ํตํด ์ผ๊ด๋๊ฒ ์ํ๋๋ Linux์์ i3๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋น๊ต)
์์์ ์ด ์ผ๋ฐ์ด๋ฅผ 100% ๋์ฒดํ ์ ์๋ ์ ์ผํ ๋ ๊ฐ์ง ๊ธฐ๋ฅ์ ๋ฌด์ธ๊ฐ๋ฅผ ๋์ง๊ณ ์ถ์ ๋ ์ ๊ณต๊ฐ์ ๋ง๋๋ ๊ฒ์ ๋๋ค(1๋ฒ ๊ณต๊ฐ์์ 7๋ฒ ๊ณต๊ฐ์ผ๋ก ์ฑ์ ๋์ง๋ฉด ๋น ๊ณต๊ฐ 5๊ฐ๋ฅผ ๋ง๋๋ ๋์ ๋ ๋ฒ์งธ ๊ณต๊ฐ์ ๋ง๋ญ๋๋ค). ๋ง์ง๋ง ๋จ์ ์ฑ์ ์ด๋ํ ๋ ๋น ๊ณต๊ฐ ์๋ ์๋ฉธ
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@codehearts ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ๋ฉด
"/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
๋ฅผ/System/Applications/Mission\\ Control.app/Contents/MacOS/Mission\\ Control"
๋์ฒดํ๋ฉด ๋ค์์์ ์๋ํฉ๋๋ค.