SSH에서도 이미지 ‘제대로’ 보기: fim 활용법

터미널에서 이미지 보는 법, 생각보다 ‘제대로’ 된 해답: fim(Fbi IMproved)
서버에 SSH로 붙어 있는데 이미지 한 장만 확인해야 할 때, 괜히 scp로 내려받고 GUI 뷰어 켜는 게 번거로울 때가 많아요.
이럴 때 키보드만으로 빠르게 이미지를 훑고, 필요하면 ASCII 아트로까지 볼 수 있는 도구가 바로 fim이에요.
1) fim이 뭐길래: “유니버설 이미지 뷰어”의 의미
fim은 GNU/Linux 철학에 영감을 받은 범용(universal) 이미지 뷰어예요.
Vim처럼 키보드 중심으로 조작하고, mutt 같은 TUI(텍스트 UI)와도 잘 어울리도록 설계돼요. 그래서 “이미지 뷰어인데 Vim 감성”이 꽤 강합니다.
또 하나 중요한 포인트는 출력 방식이 하나가 아니라는 점이에요. 실행 환경에 따라 GTK3/SDL/리눅스 프레임버퍼/ASCII 아트(libcaca, aalib) 등 다양한 모드로 이미지를 띄울 수 있어요. 즉, X/Wayland가 있든 없든 상황에 맞춰 ‘어쨌든 보여주는’ 게 fim의 강점입니다.
2) 출력 모드 선택: GTK3·SDL·프레임버퍼·ASCII 아트까지
fim은 시작 시 자동으로 가장 적절한 출력 디바이스(output device) 를 고르거나, 사용자가 -o로 강제할 수 있어요.
예를 들어 Wayland면 WAYLAND_DISPLAY를 고려해 GTK/SDL 우선으로 잡고, SSH 환경이면 ASCII 아트 쪽을 우선하는 식이에요. 이게 실제 운영환경에서 꽤 실용적입니다.
주요 모드는 아래처럼 정리할 수 있어요.
-o gtk: GTK3 기반의 창 모드(메뉴 포함). 최신 0.7.0에서 큰 개선 포인트였어요.-o sdl: SDL 기반 창 모드. 가볍고 범용적으로 잘 동작해요.-o fb: 리눅스 프레임버퍼(framebuffer) 로 바로 출력. GUI 없는 콘솔에서도 진짜 ‘로컬 화면’에 띄웁니다.-o ca/-o aa: ASCII 아트 출력.ca는 컬러(libcaca),aa는 흑백(aalib) 쪽이에요.

3) 기본 사용법과 키 조작: “사진 폴더를 키보드로 훑기”
가장 기본은 파일 또는 폴더를 열고 키로 탐색하는 흐름이에요.
수천 장 사진이 있어도 마우스 없이 n/p로 넘기고 +/-로 확대/축소하면서 빠르게 감상/검수할 수 있죠. 특히 원격 서버나 라즈베리파이 같은 장비에서 가치가 커요.
자주 쓰는 기본 조작은 이런 식입니다.
fim DSC_0001.JPG DSC_0002.JPG: 파일 여러 개 열기fim -R ~/Pictures/: 디렉터리 재귀 탐색(사진 컬렉션에 특히 유용)- 키 조작(기본):
n(다음),p(이전),+/-(확대/축소),r(회전),m(미러),f(플립)
Vim스럽게 숫자를 붙여 반복도 돼요. 예를 들어 2+는 두 번 확대처럼 동작합니다. 이런 반복 입력은 대량 검수에서 시간을 꽤 줄여줘요.
4) 사진 설명/메타데이터까지 ‘오버레이’로: --load-image-descriptions-file
fim의 진짜 재미는 단순 뷰어를 넘어서 설명 파일(description file) 로 메타데이터를 얹어볼 수 있다는 점이에요.
예를 들어 files.dsc를 만들어서 “파일명 + 탭(Tab) + 설명” 형식으로 적어두면, fim에서 이미지 위에 캡션처럼 띄워줘요. 아카이브 정리, 연구 자료 분류, 행사 사진 셀렉 등에 딱 맞습니다.
사용 흐름은 이렇게 가져가면 좋아요.
- 설명 파일 만들기:
ls | sed 's/$/\t/g' > files.dsc - 예시 라인:
DSC_0001.JPG A big dog. - 실행:
fim --load-image-descriptions-file files.dsc sample.jpg
그리고 상태줄(status line)도 ~/.fimrc에서 _display_status_fmt, _info_fmt_str 같은 변수로 커스터마이징할 수 있어요. EXIF(촬영정보 메타데이터)도 읽어와 변수로 잡히기 때문에, 노출/조리개/ISO 등을 원하는 포맷으로 조합해 띄우는 게 가능합니다.

5) 고급 탐색: limit로 “Naples만 보기”, 마킹으로 “선정 리스트 만들기”
설명 파일에서 변수도 설정할 수 있다는 게 핵심이에요. 예를 들어 #!fim:city=Naples 같은 줄로 이후 파일들에 i:city 값을 달아둘 수 있어요.
그 다음 limit "city" "Naples"처럼 치면 해당 조건에 맞는 사진만 임시로 필터링해서 탐색할 수 있죠. “아카이브에서 특정 도시/작가/카테고리만 보기” 같은 상황에서 엄청 편합니다.
여기에 마킹(marking) 기능까지 붙이면 워크플로우가 깔끔해져요.
- 사진 보다가
Enter로 마음에 드는 컷을 마킹 limit "!"로 마킹된 것만 다시 모아 검토- 종료 시 표준 출력(stdout)으로 마킹 목록을 뽑아 후처리(공유/압축/업로드) 로 연결
즉, fim은 “뷰어”라기보다 선별/분류까지 가능한 키보드형 브라우저에 가깝습니다.
6) 실전 시나리오: SSH·mutt 연동, 그리고 설치/빌드 팁
메일 클라이언트 mutt를 쓰는 분이면 연동이 특히 깔끔해요. ~/.mailcap에 아래처럼만 넣어두면 이미지 첨부를 fim으로 열 수 있어요.
- 기본:
image/*; fim %s - SSH 감지해 ASCII 아트로:
image/*;( [ "$SSH_CLIENT" != "" ] && fim -o aa %s ) || ( fim %s )
설치/빌드는 최신 스냅샷(예: 0.7.1)을 받아 ./configure && make && make install 흐름으로 진행돼요. 그리고 0.7.0부터는 GTK3 창 모드(-o gtk)가 추가됐고, 0.7.1에서는 help 검색 강화, SDL/GTK 자잘한 버그 픽스 등 안정화가 이뤄졌습니다. 운영환경에서 쓸 거면 0.7.x 라인을 기준으로 잡는 게 좋아요.
마지막으로 프레임버퍼 모드(-o fb)는 /dev/fb0 접근 권한이 필요해서, 권한/그룹/udev 설정 이슈가 흔해요. 서버나 임베디드 장비에서 쓸 땐 이 부분을 먼저 체크해두면 삽질을 크게 줄일 수 있습니다.
마무리: “이미지 확인”을 자동화/분류까지 확장해보세요
fim은 단순히 “터미널에서 이미지 보기”를 넘어서, 설명 파일 + 변수 + 필터링(limit) + 마킹으로 사진/자료 흐름을 ‘작업’ 단위로 만들어줘요.
오늘은 일단 fim -R ~/Pictures/로 폴더 하나 열어보고, 마음에 들면 files.dsc를 만들어 캡션/분류까지 붙여 보는 걸 추천해요. 익숙해지면, 서버에서 이미지 검수나 아카이브 정리 속도가 확실히 달라질 거예요.






