매뉴바 정리 앱 Vanilla

gif

맥북을 사용하면서 느끼는 한계점 중 하나는 화면 크기의 제한입니다. 메뉴바에 아이콘은 쌓여가는데 메뉴바의 크기는 제한돼 있는 것이죠. 그래서 바텐더 같은 앱이 나왔죠.

Vanilla도 바텐더와 마찬가지로 메뉴바 항목을 정리해주는 어플리케이션입니다. 바텐더가 윈도우처럼 별도의 스페이스를 만들어서 아이콘을 숨겨준다면 Vanilla는 좀 더 macOS스럽게(그런 게 있다면 말이죠) 아이콘을 숨겨줍니다.

무료 체험판에서는 가장 기본적인 기능-메뉴바 항목 숨기기-을 지원하며, $5를 결제해서 Pro버전을 사용할 경우 로그인 항목과 키보드 단축키 등의 고급 설정을 지원합니다. 설치 후에 3명 이상이 제공된 링크를 통해 Vanilla를 내려받으면 라이센스를 무료로 주는 프로모션도 있으니 $5 라는 금액이 그다지 비싸다는 생각은 안 듭니다. 개인적으로는 키보드 단축키가 굉장히 편합니다.

단점이라면 출시된 지 일 년은 넘었음에도1 간간이 숨겨진 아이콘들이 튀어나오는 등 그래픽 쪽에서 불안정한 면이 있습니다. 그럼에도 가격 등의 측면을 고려해봤을 때 가성비적인 측면에서 바텐더의 훌륭한 대체제가 될 것 같습니다. 어쨌든 가장 기본적인 기능은 무료로 제공되니까요.

  1. 17년 5월 3일에 <a href=”“https://www.reddit.com/r/macapps/comments/68u82u/vanilla_a_bartender_alternative/”>reddit</a>에 글이 올라온 게 있었습니다. 


이미지 너비 수정

image

어째서인지 작은 이미지 스타일을 적용하려고 해도 영 안 되길래 뭔가 했는데 알고 보니 value 값에 "" 이 붙는 바람에 그랬다는 후문.


misemonzi_bot 후기

근 두 달 여를 끌어온 misemonzi_bot을 마무리 짓게 됐습니다. 딱히 추가적으로 배운 점은 없는데 몇 가지 놓친 점이 있어서 반성 겸(?) 적어볼까 합니다.

경로 문제

그냥 터미널에서 파이선을 돌릴 때는 상대 경로로도 잘 작동하던 코드들이 구동 주체가 launchd가 되니 기본 경로를 최상위 경로로 잡으면서 예상과 다른 위치의 파일을 참조하려 하더군요.

때문에 파일을 참조할 때 경로를 전부 절대 경로로 잡아주어야 했습니다.

잔상 문제

imagemagick에서 input option-dispose previous 플래그를 주면 배경이 투명한 움짤 gif에서도 잔상이 남는 문제 없이 변환할 수 있습니다. 참조

다만 이 경우에는 애초에 gif 파일을 내려받으면서 배경을 제거하는 과정에서도 잔상 제거 작업을 해주어야 했는데 이 부분을 간과하고 넘어갔습니다. 찾느라 한참 걸렸네요.

크기 조절

파일 크기가 너무 커져서1 화질을 낮추고 크기를 작게 만들려고 했는데 화질을 낮추니 (당연히) 이미지 크기고 줄어버리더군요. 강제로 이미지 너비를 고정했더니 이번에는 이미지 파일 용량에 변화가 없었구요. (당연하게도 늘어난 픽셀만큼 값을 저장해야 하니까요.)

그냥 작게 줄이는 걸로 타협을 보았습니다.

  1. 거의 23Mb 언저리에서 나오는데 랩탑이야 그렇다 하더라도 모바일에서는 가볍게 처리하기는 영 빡빡한 크기죠. 


imagemagick

imagemagick

imagemagick이라는 꽤 걸출한 패키지가 있습니다. 요점을 말하자면 commandline에서 이미지 수정과 관련해서 쓰는 패키지인데요. commandline인 만큼 매번 쓸 때마다 기억에 의존해서만 작업하기에 무리가 있어서 슬슬 작업한 내역에 관해서 정리를 할 필요성을 느끼고 있습니다.

기본

convert [input option] input.file [output option] output.file

이미지 붙이기

convert -append image1.png image2.jpg image3.tiff result.gif

input option append를 사용해서 이어붙일 수 있습니다. 언젠가 적었던 것 같아서 찾아보니 2016년에 적은 글이 있군요. +append는 좌우로 -append는 상하로 붙이게 됩니다.

이미지 색 변경하기

convert -fuzz 15% -fill 'color-to-change-to' -opaque 'color-to-change-from' input.file output.file

opaque 플래그와 fill 플래그를 이용해서 전자의 색깔을 후자로 변경할 수 있습니다. whiteblack 같은 단어도 인지하고 #434343 이나 rgb(254,254,254) 처럼 hex 코드와 rgb 값도 인식합니다.

fuzz 플래그를 이용해서 오차 허용 범위를 지정할 수도 있습니다.

- via replace color in images - ImageMagick

- via php - How I can replace colors with Imagemagick? - Stack Overflow

gif 분해하기

convert input.gif -coalsce output-%04d.gif

gif는 기본적으로 여러장의 이미지를 묶어서 순차적으로 보여주는 것이기 때문에 각각의 이미지로 분해할 수 있습니다. 예시 코드의 경우 각각의 이미지를 output-0001.gif 의 형태로 분해하라는 뜻입니다.

bash의 for 문과 결합하면 대량의 이미지를 처리할 수 있어서 편합니다.

gif 배경 투명화하기

convert -dispose previous input-*.gif output.gif

사실 이미지 색 변경하기의 연장선상에 서있는 항목이긴 한데 단순히 묶어버리면 이전의 이미지가 남아있어서 잔상이 생기게 됩니다. 이 경우 묶는 과정에서 input optiondispose 플래그에 previous 값을 주면 이전 이미지를 없애고 묶어주기 때문에 잔상이 발생하지 않습니다.

또 한 가지는 움짤 → 움짤에서는 적용이 되지 않고 gif 움짤을 분해한 뒤 이걸 다시 묶는 과정에서 -dispose previous 플래그를 주어야 합니다.

- via How to avoid Imagemagick’s convert overlay of frames in a gif - Stack Overflow

이미지 크기 조절하기

convert input.gif -resample (int) output.gif

이미지의 ppi를 조절해주는 명령어입니다. (int) 자리에 원하는 숫자를 넣어서 이미지의 크기를 조절할 수 있습니다.

convert input.gif -scale width[xheight] output.gif

이미지의 가로 사이즈를 비율에 맞춰서 늘립니다. widthxheight의 형태로 설정할 경우 비율을 무시하고 크기를 변경하게 됩니다.

via

- imagemagick documentation - resample

- imagemagick documentation - scale

- imagemagick commandline - resample

- imagemagick commandline - scale

이미지 사이에 공간 넣기

포럼에서 언급된 바와 같이 이미지 사이에 공간을 넣는 방법은 -splice 를 사용하거나 작은 이미지를 넣는 방법이 있습니다.

우선 작은 이미지를 넣는 방법은 아래와 같은 코드를 사용합니다.

convert image1.png image2.jpg -size 10x10 xc:Red +swap -background White -gravity Center +append result.png

위 코드는 image1.pngimage2.jpg 뒤에 빨간색 10 * 10 이미지를 생성한 뒤 두번째 이미지와 자리를 바꾸고 흰 배경 위에 중앙 정렬을 함으로써 이미지 사이에 간격을 만들게 됩니다. 이 경우 이미지 사이에는 10 * 10 크기의 빨간 네모가 자리하게 되며 이미지 위 아래로 남는 부분은 흰색으로 처리되게 됩니다. 따라서 배경색과 네모의 색을 같게 함으로써 이미지 사이에 간격을 두는 효과를 만들 수 있습니다.

만일 합칠 이미지가 두 개 이상인 경우에는 -splice 를 사용하는 아래 코드를 사용하게 됩니다.

convert image1.png image2.jg image3.tiff -background red -splice 10x0+0+0 -gravity center +append +gravity -chop 10X0+0+0 result.png

이 코드는 매 이미지의 앞에 10 크기의 splice 를 준 뒤 결과물의 맨 앞에서 10 크기 만큼 잘라내는 방법을 사용합니다. 따라서 이미지 사이 간격을 10을 주게 되는 효과를 발생시키며 위 코드의 경우 간격 사이 색은 빨강으로 칠해지게 됩니다.

via