본문 바로가기
리눅스

Yazi (file namager)

by 다움위키 2025. 3. 19.

원문 보기: https://dawoum.duckdns.org/wiki/Yazi_(file_namager)

 

Yazi ("오리"를 의미)는 비-블로킹 비동기 I/O를 기반으로 Rust (programming language)로 작성된 터미널 파일 관리기입니다.

그것은 효율적이고 사용자 친화적이고, 사용자 정의-가능한 파일 관리 경험을 제공하는 것을 목표로 합니다.

Introduction

데비안에서 사용할 수 있는 많은 파일 관리기가 있습니다.

보통, 데스크탑 시스템이 개발될 때, 파일 관리기는 대부분 개발되기 때문에, 데스크탑마다 하나 이상의 파일 관리기가 있습니다.

예를 들어, GNOME의 기본 파일 관리기 Nautilus (file manager), KDE PlasmaDolphin (file manager)가 있고, 마찬가지로, XfceThunar, Cinnamon의 Nemo, 등이 있습니다.

한편, 터미널 창 내부에서 간단히 작업할 수 있는 파일 관리기가 필요할 수 있고, 전통적인 Midnight Commander를 비롯하여, nnn과 같은 것도 있습니다.

더불어, vi의 플럭인으로 제공하는 것들도 있으며, 예를 들어, NeovimNvChad의 구성에서 NvChadTree는 Nerd 폰트를 사용하여 아이콘을 표시해 주고, 파일 삭제가 가능합니다.

어쨌든, 터미널에서도 아이콘이 표시되고 미리보기가 가능한 좀 더 기능이 많은 파일 관리기가 필요할 수 있고, 그런 것들 중에서 하나가 yazi입니다.

Pre-requisties

Yazi를 사용하기 위해, 다음 프로그램을 설치해야 합니다:

  • file (파일 유형 탐색을 위해)

Yazi는 추가 기능을 활성화하기 위해 명령-줄 도구를 사용하여 선택적으로 확장될 수 있으며, 가능한 설치하는 것이 좋습니다:

  • nerd-fonts (아이콘 표시)
  • ffmpeg (비디어 썸네일 표시)
  • 7-Zip (압축 해제와 미리보기)
  • jq (JSON 미리보기)
  • poppler (PDF 미리보기)
  • fd (파일 검색)
  • rg (파일 컨텐츠 검색)
  • fzf (빠른 파일 하위-트리 탐색)
  • zoxide (역사적 디렉토리 탐색)
  • ImageMagick (SVG, Font, HEIC, 및 JPEG XL 미리보기)
  • xclip / wl-clipboard / xsel (리눅스 클립보드 지원)

Installation

데비안에서 패키지를 제공하지 않기 때문에, 직접 소스로부터 패키지를 만들 수 있습니다. 이때, 컴파일 정보나 설치할 파일과 그 위치 목록은 아치 리눅스의 패키징에서 참조할 수 있습니다.

이제 소스를 받아서, 설치 스크립트를 만듭니다:

#!/bin/bash

pkgname=yazi
pkgver=25.3.2
pkgrel=1

pkgdir=yazi_25.3.2-1_amd64

build() {
  YAZI_GEN_COMPLETIONS=true cargo build --release --no-default-features
  YAZI_GEN_COMPLETIONS=true cargo build --release -p "$pkgname-cli"
}

package() {
  install -Dm755 "target/release/$pkgname" "$pkgdir/usr/bin/$pkgname"
  install -Dm755 "target/release/ya" "$pkgdir/usr/bin/ya"
  install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENCE"
  install -Dm644 "README.md" "$pkgdir/usr/share/doc/$pkgname/README.md"
  install -Dm644 "assets/yazi.desktop" "$pkgdir/usr/share/applications/yazi.desktop"

  local r
  for r in 16 24 32 48 64 128 256; do
    install -dm755 "$pkgdir/usr/share/icons/hicolor/${r}x${r}/apps"
    magick assets/logo.png -resize "${r}x${r}" "$pkgdir/usr/share/icons/hicolor/${r}x${r}/apps/yazi.png"
  done

# install preset
  install -Dm644 "yazi-config/preset"/* -t "$pkgdir/usr/share/doc/yazi/preset"

  install -Dm644 "$pkgname-boot/completions/$pkgname.bash" "$pkgdir/usr/share/bash-completion/completions/$pkgname"
  install -Dm644 "$pkgname-boot/completions/$pkgname.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d/"
  install -Dm644 "$pkgname-boot/completions/_$pkgname" -t "$pkgdir/usr/share/zsh/site-functions/"

  install -Dm644 "$pkgname-cli/completions/ya.bash" "$pkgdir/usr/share/bash-completion/completions/ya"
  install -Dm644 "$pkgname-cli/completions/ya.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d/"
  install -Dm644 "$pkgname-cli/completions/_ya" -t "$pkgdir/usr/share/zsh/site-functions/"
}

build 
package 

mkdir -p "$pkgdir"/DEBIAN

스크립트를 실행하고, control 파일을 만들고, 패키지로 묶고, 설치합니다:

  • bash yazi.install
  • gvim yazi_25.3.2-1_amd64/DEBIAN/control
  • dpkg-deb --build --root-owner-group yazi_25.3.2-1_amd64
  • sudo dpkg -i yazi_25.3.2-1_amd64.deb

구현된 기능이 동작하기 위해, 다음 패키지를 설치할 필요가 있습니다:

  • apt install ffmpeg 7zip jq poppler-utils fd-find ripgrep fzf zoxide imagemagick
  • yazi

또한, 앞에서 언급했듯이, 미리보기 기능을 사용하기 위해, 지원되는 터미널, 예를 들어, Ghostty, Kitty, WezTerm, Konsole, 등을 사용할 수 있습니다.

더불어, Alacritty와 같은 터미널을 위해, X11/Wayland에서 Ueberzugpp를 사용해서 기능을 사용할 수 있다고 알려져 있지만, Z shell에서 시스템이 멈추는 듯한 현상이 있었고, 반면에 Fish (unix shell)에서 제대로 작동합니다.

Binary packaging

만약 컴파일이 잘 되지 않거나, 귀찮으면, 개발자 제공하는 바이너리를 패키지로 묶을 수 있습니다. 이와 관련하여, 아치 패키징을 참고할 필요가 있습니다:

우선 내려 받을 파일은 다음에서 찾을 수 있습니다:

이중에서 가능한 최근 것을 사용할 필요가 있는데, 왜냐하면 아직도 활발히 개발되고 있기 때문입니다. 어쨌든, 해당 버전 중에서 yazi-x86_64-unknown-linux-gnu.zip 파일을 받습니다.

이제, 압축해제하고, 설치 스크립트를 만듭니다:

  • unzip yazi-x86_64-unknown-linux-gnu.zip
  • cd yazi-x86_64-unknown-linux-gnu
  • gvim yazi-bin.install
#!/bin/bash 

pkgname=yazi-bin
pkgver=25.3.2
pkgrel=1

pkgdir=yazi-bin_25.3.2-1_amd64

package() {
  install -Dm755 ya "$pkgdir/usr/bin/ya"
  install -Dm755 yazi "$pkgdir/usr/bin/yazi"

  install -Dm644 "LICENSE" "$pkgdir/usr/share/licenses/$pkgname/LICENCE"
  install -Dm644 "README.md" "$pkgdir/usr/share/doc/$pkgname/README.md"

  install -Dm644 "completions/_ya" -t "$pkgdir/usr/share/zsh/site-functions/"
  install -Dm644 "completions/_yazi" -t "$pkgdir/usr/share/zsh/site-functions/"
  install -Dm644 "completions/ya.bash" "$pkgdir/usr/share/bash-completion/completions/ya"
  install -Dm644 "completions/yazi.bash" "$pkgdir/usr/share/bash-completion/completions/yazi"
  install -Dm644 "completions/ya.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d/"
  install -Dm644 "completions/yazi.fish" -t "$pkgdir/usr/share/fish/vendor_completions.d"
}

package 

mkdir -p "$pkgdir"/DEBIAN

스크립트를 실행하고, control 파일을 만들고, 패키지로 묶고, 설치합니다:

  • bash yazi-bin.install
  • gvim yazi-bin_25.3.2-1_amd64/DEBIAN/control
  • dpkg-deb --build --root-owner-group yazi-bin_25.3.2-1_amd64
  • sudo dpkg -i yazi-bin_25.3.2-1_amd64.deb

두 패키지는 서로 같이 설치되지 못하기 때문에, control 파일에 Conflicts를 넣는 것이 좋습니다.

Configurations

Yazi에 대해 3개의 구성 파일이 있습니다:

  • yazi.toml - 기본 구성.
  • keymap.toml - 키-바인딩 구성.
  • theme.toml - 색상 체계 구성.

이 3개의 구성 파일은 패키지의 내부에 포함되어 있고, 개발자 공간에서도 찾을 수 있습니다.

기본값을 덮어쓰기 위해, 아래 디렉토리 내부에 같은 이름의 파일을 생성하십시오. 예를 들어,

  • ~/.config/yazi/yazi.toml

Functions

Z shell에서

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"
}

Fish에서

function y
	set tmp (mktemp -t "yazi-cwd.XXXXX")
	yazi $argv --cwd-file="$tmp"
	if set cwd (cat -- "$tmp"); and [ -n "$cwd" ]; and [ "$cwd" != "$PWD" ]
		cd -- "$cwd"
	end
	rm -f -- "$tmp"
end

Screenshots