일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- asahi linux
- macos
- 아이폰
- Linux
- Mac
- iOS 13
- asahi
- 터치바
- 맥북프로
- 버그
- catalina
- Fedora
- beta
- 에어팟
- high sierra
- 정식버전
- 모하비
- 컨트롤러
- 맥
- 시에라
- 업데이트
- 3D프린터
- 3D 프린터
- 애플
- AirPods
- tevo
- Tarantula
- mojave
- sierra
- IOS
- Today
- Total
elsa in mac
터미널 File Manager의 떠오르는 샛별 - Yazi 본문
이번 포스트에서는 ranger 나 nnn 을 능가하는 속도와 편리함을 지원하는 Terminal 기반 File Manager인 Yazi를 소개합니다.
Yazi는 어원이 중국어로 상상속의 동물, 즉 신수를 의미합니다. 용의 머리에 악어의 몸통을 갖고 있는 동물로 오리와 관련이 있는 것은 중국어의 발음이 유사하기 때문인 것 같습니다.
yazi는 Rust로 작성된 terminal 기반의 File Manager로 non-blocking async I/O 기술을 기반으로 합니다. 기본적으로 multi-thread pre-caching 기술을 이용하기 때문에, Yazi 내부에서 파일 유형에 따른 preview 성능이 월등히 뛰어납니다. 여러가지 기능들이 자체적인 기능에 더 해, 이미 검증되고 많이 익숙한 CLI 도구들과 연계되어 사용되기 때문에 기존 도구에 익숙한 사용자들이 매우 쉽게 배우고 사용할 수 있습니다.
아래의 영상은 wezterm 에서 ranger와 Yazi의 4K 이미지 preview 성능을 비교 한 것입니다.
wezterm 터미널에서 yazi(위) 와 ranger (아래) 의 성능 비교
위의 스샷 영상을 보면, wezterm 에서 yazi와 ranger의 preview 성능을 비교할 수 있습니다. 기본적으로 PDF의 경우 yazi는 PDF 첫 페이지를 이미지로 보여주지만, ranger는 text를 추출하여 text 파일로 표시홥니다. 이 경우 yazi가 좀 더 직관적입니다. 이미지 파일의 경우 4K 해상도로 꽤나 용량이 큰 편인데, Yazi 의 경우에는 pre-caching 기능을 사용하기 때문에 매우 빠르게 반응 하는 것을 확인할 수 있습니다. 반면, ranger의 경우에는 해당 파일이 선택되었을 때, 로딩을 하기 때문에 상대적으로 답답한 반응을 보여 줍니다.(이래서는 사실 프리뷰 기능이 무용지물 수준..) preview의 크기를 좀 더 작게 할 경우에는 훨씬 더 빠르게 사용할 수 있습니다.
Yazi의 경우, kitty, sixel, uberzug 이미지 프로토콜을 모두 지원하기 때문에, kitty, Konsole, iTerm2, Wezterm, foot, VSCode, 등 매우 많은 터미널 에뮬레이터들에서 image/pdf/video preview 기능을 사용할 수 있습니다.
yazi는 여러 다양한 CLI와 연동하여 다양한 기능을 사용할 수 있습니다. 전반적인 지원 기능을 원활히 사용하려면 다음과 같은 CLI도구들을 설치해야 합니다.
file
eza
zoxide
poppler , (fedora의 경우 poppler-utils 추가)
fzf
fd
rg (ripgrep)
chafa
jq
7-zip
ImageMagick
zoxide와 의 연동은 디렉토리 간 이동을 매우 빠르고 편리하게 이용할 수 있도록 해 줍니다. z 키를 누르면 입력창이 뜨고, 이동할 디렉토리 명을 키인하면, 통계적으로 가장 빈번하게 이용한 디렉토리 목록을 보여주기 때문에 신속하게 이동할 수 있습니다.
관련된 dependency를 확인하려면, yazi --debug를 사용하면 확인할 수 있습니다.
❯ yy --debug
Yazi
Version: 0.3.3 (fc0d88e 2024-09-06)
Debug : false
OS : linux-aarch64 (unix)
Ya
Version: 0.3.3 (fc0d88e 2024-09-06)
Emulator
Emulator.via_env: ("xterm-256color", "WezTerm")
Emulator.via_csi: Ok(WezTerm)
Emulator.detect : WezTerm
Adapter
Adapter.matches: Iterm2
Desktop
XDG_SESSION_TYPE : Some("wayland")
WAYLAND_DISPLAY : Some("wayland-1")
DISPLAY : None
SWAYSOCK : None
HYPRLAND_INSTANCE_SIGNATURE: Some("727f1b54cd1ba48774092a5d54acc0e55f3ffe0f_1725624919_42305664")
WAYFIRE_SOCKET : None
SSH
shared.in_ssh_connection: false
WSL
WSL: false
Variables
SHELL : Some("/usr/bin/zsh")
EDITOR : Some("nvim")
VISUAL : None
YAZI_FILE_ONE : None
YAZI_CONFIG_HOME : None
Text Opener
default: Some(Opener { run: "${EDITOR:-vi} \"$@\"", block: true, orphan: false, desc: "$EDITOR", for_: None, spread: true })
block : Some(Opener { run: "${EDITOR:-vi} \"$@\"", block: true, orphan: false, desc: "$EDITOR", for_: None, spread: true })
Multiplexers
TMUX : false
tmux version : 3.5
ZELLIJ_SESSION_NAME: None
Zellij version : No such file or directory (os error 2)
Dependencies
file : 5.45
ueberzugpp : No such file or directory (os error 2)
ffmpegthumbnailer: 2.2.2
magick : 7.1.1-33
fzf : 0.54.3
fd : 10.1.0
rg : 14.1.0
chafa : 1.10.3
zoxide : 0.9.4
7z : No such file or directory (os error 2)
7zz : 24.08
jq : 1.7.1
--------------------------------------------------
When reporting a bug, please also upload the `yazi.log` log file - only upload the most recent content by time.
You can find it in the "/home/elsa/.local/state/yazi" directory.
Yazi 는 theme 와 plugin 기능을 갖고 있기 때문에, Custom UI 및 기능확장성이 유연합니다.
설치 방법
설치는 사용하는 OS(window, linux, mac)와 distro에 따라 다양합니다.
필자의 경우, fedora-asahi limix를 사용하고 있기 때문에, "build from source" 방법을 사욜했습니다.
> git clone https://github.com/sxyazi/yazi.git
> cd yazi
> cargo build --release --locked
> cd target/release
> sudo cp -Rf yazi /usr/local/bin
> sudo cp -Rf ya /usr/local/bin
Configuration
설정은, 지정된 설정파일을 통해 수정할 수 있는데, yazi.toml, keymap.toml, theme.toml 이렇게 3개의 파일로 구성됩니다. 해당 파일들은 Linux의 경우에는 ~/.config/yazi 폴더 내에 위치해야 하며, 기본 설정 파일은 여기서 다운로드를 받거나 참조하면 됩니다. 기본 binding key 들은 여기를 참조하시기 바랍니다.
PDF 프리뷰의 경우, PDF의 첫장이 보이면, 마우스 포인트를 옮기고 scroll up/down을 이용하여 전체 페이지를 볼 수 있습니다.
bash나 zsh를 사용하는 사용자라면, ~/.zshrc 나 ~/.bashrc 의 맨 마지막에 아래의 코드를 붙여 넣은 후, 저장하고, source ~/.zshrc 나 source ~/.bashrc 를 해 줍니다.
function y() {
local tmp="$(mktemp -t "yazi-cwd.XXXXXX")"
yazi "$@" --cwd-file="$tmp"
if cwd="$(cat -- "$tmp")" && [ -n "$cwd" ] && [ "$cwd" != "$PWD" ]; then
builtin cd -- "$cwd"
fi
rm -f -- "$tmp"
}
터미널 프롬프트에서 yazi 대신 y로 yazi를 실행한 후, 특정 directory에서 q 버튼을 눌러 yazi를 나가게 되면, 해당 디렉토리로 나갈 수 있습니다.
'Terminal' 카테고리의 다른 글
Linux, Chromium 에서 가끔씩 한글의 자모가 분리되는 문제를 해결하는 방법 (0) | 2024.09.11 |
---|---|
zsh, powerlevel10k 프롬프트 사용 시, 터미널 창 resize에 따라 화면이 깨지는 현상 방지법 (0) | 2024.09.09 |
터미널 에뮬레이터를 바꾸다... Wezterm (2) | 2024.09.02 |
Terminal 사용을 좀 더 편리하게 해주는 CLI 도구들 (1) | 2024.01.10 |
nvim - Neorg의 링크(Link) 표시 설정 방법 (0) | 2023.12.29 |