Linux 와 macOS 에서 CopyQ 를 사용 중이다. Linux 끼리는 설정 파일을 공유하여 어느 기기에서든 동일한 상황에서 작업을 할 수 있는데, 과연 ‘이종 교배(??)도 가능할까?’라는 단순한 상상에서 이 글이 탄생되었다.
CopyQ 의 기본 설정파일 경로는 ~/.config/copyq
이다. 여기를 잠시 살펴보자면..
$ ls -al total 128 -rw-r--r-- 1 nemomac staff 36B 2 11 23:25 copyq-filter.ini -rw-r--r-- 1 nemomac staff 2.4K 2 12 15:03 copyq_geometry.ini -rw-r--r-- 1 nemomac staff 49K 2 12 15:02 copyq_tab_JmNsaXBib2FyZA==.dat -rw-r--r-- 1 nemomac staff 155B 2 12 15:03 copyq_tabs.ini drwxr-xr-x 2 nemomac staff 64B 2 7 20:50 themes
리눅스엔 이 디렉토리에 copyq.conf 가 있고, 이게 주 설정 파일이다. 그런데, macOS 엔 이게 없고, 부수 파일들만 있다.
살짝 구글을 뒤지다가, 제작자에게 도움을 요청했다.
설정 파일 위치는 다음 명령으로 알아낼 수 있다고 한다.
$ /Applications/CopyQ.app/Contents/MacOS/copyq info config /Users/userID/Library/Preferences/com.copyq.copyq.plist
macOS 에선 plist 형식으로 설정파일이 저장되고, 저 파일은 Binary 형식이다. 이래서는 리눅스와 공생은 불가능하다.
텍스트 형식으로 설정파일을 사용할 수는 없는걸까?
제작자는, 설정 파일 위치는 바꿀 수 있다고 하는데, 이렇게 위치를 바꿨을 때 생성되는 설정 파일이 일반 텍스트 형식으로 저장되는 지는 기억이 안난다고 했다.
하여, 우물을 직접 파고 확인해봤다.
macOS 에선, 환경변수를 지정하는 것도 꽤 복잡하다. 우분투에서는 .profile 등에 넣어주면 간단한데, 여기는… 복잡하다.
여러 글을 봤지만, 가장 마지막으로 본 다음 글을 참고해서 이 어려운(?)일을 해내고야 말았다.
기본은 이렇다. macOS 에선, 환경 변수를 지정해주기 위해서 launchd 라는 서비스를 사용하고, 설정 파일로는 plist 형식이 필요하다. (Binary 는 아니고 Plain Text)
단순히 환경변수만을 지정해줄 수도 있고, 환경변수를 지정함과 동시에 프로그램을 실행할 수도 있다.
환경변수만을 지정해주려면 이렇게 한다.
Label setenv.CopyQ ProgramArguments /bin/launchctl setenv COPYQ_SETTINGS_PATH /Users/userID/.config/copyq RunAtLoad ServiceIPC
환경변수와 함께 실행까지 해주려면 이렇게.
EnvironmentVariables COPYQ_SETTINGS_PATH /Users/nemomac/.config/copyq_plaintext Label Run.Copyq ProgramArguments /Applications/CopyQ.app/Contents/MacOS/copyq RunAtLoad ServiceIPC
그냥 환경변수만 주고, CopyQ 는 자동실행되게끔 하면 될 듯 한데, 이게 되질 않았다. 아마도 CopyQ 가 먼저 실행되고나서 환경변수 할당이 이뤄지는 듯 하다. 이 순서를 바꿀 수 있다면 가장 좋긴하겠는데.. (더 이상 이걸 파는 건, 정신건강(!)에 큰 문제를 줄 수도 있겠기에 여기까지만 하기로 한다.)
어쨌든, 환경변수만 설정해주면 새로 지정해준 위치에 설정파일이 생기지 않고, 기본값으로 CopyQ 가 실행되고, 기본 위치를 그대로 사용한다.
따라서 환경변수를 지정해주고 CopyQ 도 실행해주는 방식을 취할 수 밖에 없었다.
파일명은 적절히 주면 되는 듯 한데, plist 파일명에 다들 마침표가 포함되어 있어서 run_copyq.plist
정도로 할당했다.
파일 위치는 전역 위치도 있고, 사용자 위치도 있는데, ~ 을 택했다.
정확한 위치는 다음과 같다.
~/Library/LaunchAgents
여기에 run_copyq.plist 등을 만들고, 위처럼 내용을 넣어주면 된다.
그리고 재부팅!
CopyQ 가 뜬 걸 확인하면 위에서 한 작업이 헛수고가 아니었는지를 알 수 있겠지만, 다음 명령으로 좀 더 정확하게 알아볼 수도 있다.
$ launchctl list | grep Copyq - 0 Run.Copyq
이 방식의 한가지 문제점은, 혹시나 CopyQ 를 사용자가 종료 시켰을 경우, 다시금 CopyQ 를 실행했을 때 원래 설정을 따라간다는데에 있다.
이걸 위해서는 환경변수용 plist 도 따로 하나 더 만들어놓는 것도 나쁘진 않을 듯 하지만, 살짝 중복이 되는 방식이라, 썩 내키진 않네.
뭔가 방법은 있을텐데??
다음 글들을 참고했다.