macOS: Double Commander 에서 mp3tag/foobar2000 연동.

원래 하고 싶었던 건, Finder 에 메뉴(Context Menu/macOS 용어로는 Services)를 추가하기였으나, 그게 여의(如意)칠 않아서 D.C 를 이용하는 방법에 더 시간 투자를 했다.

사실, Services 를 사용하는 법도 어렵진 않다. Applescript 를 쓴다면 조금 더 강력하게 할 수도 있을 듯은 하지만, 꼭 그렇게 하지 않고도, Automator 를 사용하고, Shell script 를 사용한다면 대충은 원하는 결과를 얻을 수 있다.

D.C 를 사용한다면, 적어도 리눅스와 macOS 에서는 거의 동일한 스크립트로 같은 결과를 얻을 수 있으니, 한번만 제대로 작성해놓으면 추후에는 수고를 아낄 수 있는 장점도 있다.

서론은 이쯤까지 하고, mp3tag 등을 실행하는 스크립트를 정리해본다.


#!/bin/sh

# mp3tag 실행용

# Wine 실행경로를 PATH 에 추가
export PATH="/Applications/Wine Stable.app/Contents/Resources/wine/bin":$PATH


# 디렉토리명을 와인용으로 변환. winepath 는 유닉스 디렉토리 <---> 윈도우 디렉토리간 변환해주는 프로그램. (WineHQ FAQ 에서 알아냄.)
# 여기서 $1 매개변수를 쓰기 위해서 D.C 등의 Parameter 를 적절히 지정해줘야 한다. 상황에 따라 파일명 포함 전체경로명, 또는 전체경로명이 필요하다.
# "$1" 로 겹따옴표로 묶어줘야 공백으로 인한 문자열 분할(Split) 현상이 생기지 않는다.

# 디렉토리 알아내고(dirname), Wine용으로 변환

tempF="$1"

folderw=$(winepath -w "$tempF" 2> /dev/null)

# 사용자 홈디렉토리를 알아낸 후, .wine 폴더 경로 추가.
USER_HOME=$HOME'/.wine'

export WINEPREFIX="$USER_HOME"
export WINEARCH="win32"
export LC_ALL="ko_KR.UTF-8"

# Wine 을 사용, MS 윈도우 프로그램 호출
wine "C:\Program Files\Mp3tag\Mp3tag.exe" "/fp:$folderw" &

exit 0
#!/bin/sh

# Finder 에서 Wine foobar2000 을 실행하기 위한 스크립트.

# Wine 실행경로를 PATH 에 추가
export PATH="/Applications/Wine Stable.app/Contents/Resources/wine/bin":$PATH


# 디렉토리명을 와인용으로 변환. winepath 는 유닉스 디렉토리 <---> 윈도우 디렉토리간 변환해주는 프로그램. (WineHQ FAQ 에서 알아냄.)
# "$1" 로 겹따옴표로 묶어줘야 공백으로 인한 문자열 분할(Split) 현상이 생기지 않는다.

# 디렉토리 알아내고(dirname), Wine용으로 변환

tempF="$1"

folderw=$(winepath -w "$tempF" 2> /dev/null)

# 사용자 홈디렉토리를 알아낸 후, .wine 폴더 경로 추가.
USER_HOME=$HOME'/.wine'

export WINEPREFIX="$USER_HOME"
export WINEARCH="win32"
export LC_ALL="ko_KR.UTF-8"

# Wine 을 사용, MS 윈도우 프로그램 호출

# Option Parameter(/add) 와 그 인수(Z:\\...)를 아래처럼 따옴표로 분리해 써줘야 제대로 인식한다.
# 이런식으로 한꺼번에 쓰면 오류 발생. ("/add $folderw")

# Add 는, 디렉토리내 모든 음원파일을 추가..
#wine "C:\Program Files\foobar2000\foobar2000.exe" "/add" "$folderw" &

# 그냥 디렉토리만 넘기면, 현재 재생목록은 지우고 새로 재생목록을. 뭐가 의미가 있으려나?
wine "C:\Program Files\foobar2000\foobar2000.exe" "$folderw" &

# 위와 같이 /add 를 붙이고 안붙이고가 다르므로, 굳이 원한다면 메뉴를 2개 만들어도 된다.

exit 0

이렇게 하고, D.C 에서 설정은 아래와 같이 해준다.

mp3tag 설정
foobar2000 설정

설정 시에, 경로를 $HOME 을 이용해서 써주면, 다른 기계(다른 macOS, 또는 리눅스)에서 사용할 때도 경로를 고칠 필요가 없으니 편리하다.

중요한 부분은 Parameter 인데, %p, 또는 %d 를 적절히 넘겨준다.
mp3tag 은 어차피 디렉토리 단위로 작업을 하므로 %p 나 %d 나 차이가 없다.
foobar2000 은, 파일별로 불러올 수가 있기에, 차이는 있는데, 그렇게까지 하려면 스크립트가 좀 더 복잡해져야 하기에.. foobar2000 을 그런 용도로 사용하려는 게 아니기에, 그냥 디렉토리만 넘기는 쪽으로 방향을 잡았다.

만약, 파일별로 선택을 한 다음 그 파일들만을 foobar2000 에서 열고 싶다면, 선택한 파일들을 추려내어 추가해주는 방식이 스크립트에 들어가야 한다. for 문을 사용하면 될텐데, 지금은 그렇게까지 할 이유가 없다.

아이콘은, 일단은 우분투 와인에서 만들어진 것들을 복사해다 넣었다.
와인을 통해 MS 윈도우 프로그램을 설치하면, 아이콘 파일들이 어딘가엔가 저장이 된다. 아마도 macOS 용 와인도 그럴텐데 아직 방식은 잘 모르겠다.

macOS 에도 비슷한 문제가 존재할 지는 아직 잘 모르겠는데, ZIP 압축이 갖는 코드에 관련한 문제로, MS 윈도우에서 한국어가 포함된 파일을 압축한 뒤, 리눅스에서 풀면 글자가 깨지는 문제가 있다. 이를 위해 몇가지 방법을 사용했고, python 을 이용한 스크립트도 만들었었는데, 그냥 와인용 반디집을 사용하기로 해왔다.

masOC 에도 같은 문제가 있다면, 여기에도 반디집을 비슷한 방식으로 추가해주면 되겠다.

이 정도면, macOS 도 리눅스와 거의 유사한 환경에서 사용할 수 있게 됐다.
생각보단 적응이 빨랐군. 물론, 그만큼 시간과 노력과 정성(?)이 들어가긴 했지..

안녕하세요. 글 남겨주셔서 고맙습니다.