lf에서 Kitty와 Tmux를 사용하여 이미지 표시
발행: (2026년 1월 4일 오전 12:45 GMT+9)
3 min read
원문: Dev.to
Source: Dev.to
Overview
lf(터미널 파일 관리자)를 Kitty와 Tmux와 함께 사용할 때, 이미지 미리보기를 전환할 때 화면에 그래픽 아티팩트가 남아 인터페이스가 읽기 어려워지는 문제가 발생합니다.
해결 방법은 세 가지 요소에 의존합니다:
- lf의
redraw명령 - 외부 클리너 스크립트 없이
- lf의
on-select이벤트
핵심 아이디어는 파일을 선택할 때마다 lf에게 자체를 다시 그리도록 요청함으로써 터미널을 깨끗이 지우고 미리보기가 정상적으로 표시되게 하는 것입니다.
Configuration (lfrc)
~/.config/lf/lfrc(또는 해당 lfrc 위치)에 다음을 추가합니다:
set previewer ~/.local/bin/lfpreview
cmd on-select &{{
exec lf -remote 'send redraw'
}}
set previewer는 lf에게 미리보기 스크립트를 지정합니다.on-select명령은 파일이 선택될 때마다 원격redraw요청을 트리거합니다.
Preview Script (lfpreview)
다음 내용을 가지고 ~/.local/bin/lfpreview 파일을 만들고 실행 권한을 부여합니다:
#!/bin/sh
draw() {
kitten icat --stdin no --transfer-mode memory \
--place "${w}x${h}@${x}x${y}" "$1" /dev/tty
}
file="$1"
w="$2"
h="$3"
x="$4"
y="$5"
case "$(file -Lb --mime-type "$file")" in
image/*)
draw "$file"
;;
application/pdf)
pdftoppm -f 1 -singlefile "$file" "/tmp/lfoutput"
draw "/tmp/lfoutput.ppm"
;;
*)
less "$1"
;;
esac
exit 1 # do not cache
chmod +x ~/.local/bin/lfpreview
How it works
- Images – Kitty의
icat을 사용해 바로 표시합니다. - PDFs –
pdftoppm으로 첫 페이지를 이미지로 변환한 뒤 표시합니다. - Other files –
less로 엽니다.
스크립트 마지막의 exit 1은 lf에게 미리보기를 캐시하지 말라는 신호입니다. 이를 생략하면 새로 고침 메커니즘이 캐시된 미리보기를 재사용하게 되어 파일을 선택할 때마다 이미지가 다시 그려지지 않습니다.
Adjustments
이 설정은 일반적인 사용 사례에 맞게 동작하지만, 다음과 같은 부분을 조정해야 할 수도 있습니다:
- 시스템에 따라
kitten icat이나pdftoppm의 경로가 다를 경우 경로를 수정합니다. case문에 추가 MIME 타입을 넣어 다른 파일 형식을 처리합니다.
필요에 따라 스크립트를 확장하여 자신의 워크플로에 맞게 활용하세요.