Skip to content

Alacritty

Alacritty is the fastest terminal emulator in existence. Using the GPU for rendering enables optimizations that simply aren't possible in other emulators. Alacritty currently supports macOS, Linux, and Windows.

Categories

Installation

cargo로 설치할 경우:

러스트 최신 버전 확인 및 업그레이드:

rustup update

종속성 설치 (Ubuntu 의 경우):

sudo apt install cmake pkg-config libfreetype6-dev libfontconfig1-dev libxcb-xfixes0-dev libxkbcommon-dev python3

(종속성은 설치 페이지를 참고하여 알아서 설치)

카고로 설치:

cargo install alacritty

설치 이후 작업들

Alacritty를 설치한 후 설정해야 할 몇 가지 추가 사항이 있습니다. 모든 포스트 빌드 지침은 당신이 여전히 Alacritty 저장소 안에 있다고 가정합니다.

Terminfo

Alacritty가 제대로 작동하는지 확인하려면 alacritty 또는 alacritty-direct terminfo를 사용해야 합니다. alacritty terminfo가 설치되어 있으면 자동으로 선택됩니다.

다음 명령이 오류 없이 반환되면 alacritty terminfo가 이미 설치된 것입니다.

infocmp alacritty

아직 없는 경우 다음 명령을 사용하여 전역으로 설치할 수 있습니다.

sudo tic -xe alacritty,alacritty-direct extra/alacritty.info

해당 파일은 릴리즈 페이지 또는 github 저장소에서 받을 수 있다.

이 후, infocmp alacritty를 치면 다음과 같은 결과를 확인할 수 있을 것이다.

$ infocmp alacritty
#   Reconstructed via infocmp from file: /etc/terminfo/a/alacritty
alacritty|alacritty terminal emulator,
    am, bce, ccc, hs, km, mc5i, mir, msgr, npc, xenl,
    colors#0x100, cols#80, it#8, lines#24, pairs#0x7fff,
    acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
    bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l,
    clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=\r,
    csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
    cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C,
    cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A,
    cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m,
    dl=\E[%p1%dM, dl1=\E[M, dsl=\E]2;\007, ech=\E[%p1%dX,
    ed=\E[J, el=\E[K, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l,
    fsl=^G, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH,
    ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n,
    indn=\E[%p1%dS,
    initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\,
    invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kDC=\E[3;2~,
    kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, kLFT=\E[1;2D,
    kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, kb2=\EOE, kbs=^?,
    kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
    kdch1=\E[3~, kend=\EOF, kent=\EOM, kf1=\EOP, kf10=\E[21~,
    kf11=\E[23~, kf12=\E[24~, kf13=\E[1;2P, kf14=\E[1;2Q,
    kf15=\E[1;2R, kf16=\E[1;2S, kf17=\E[15;2~, kf18=\E[17;2~,
    kf19=\E[18;2~, kf2=\EOQ, kf20=\E[19;2~, kf21=\E[20;2~,
    kf22=\E[21;2~, kf23=\E[23;2~, kf24=\E[24;2~,
    kf25=\E[1;5P, kf26=\E[1;5Q, kf27=\E[1;5R, kf28=\E[1;5S,
    kf29=\E[15;5~, kf3=\EOR, kf30=\E[17;5~, kf31=\E[18;5~,
    kf32=\E[19;5~, kf33=\E[20;5~, kf34=\E[21;5~,
    kf35=\E[23;5~, kf36=\E[24;5~, kf37=\E[1;6P, kf38=\E[1;6Q,
    kf39=\E[1;6R, kf4=\EOS, kf40=\E[1;6S, kf41=\E[15;6~,
    kf42=\E[17;6~, kf43=\E[18;6~, kf44=\E[19;6~,
    kf45=\E[20;6~, kf46=\E[21;6~, kf47=\E[23;6~,
    kf48=\E[24;6~, kf49=\E[1;3P, kf5=\E[15~, kf50=\E[1;3Q,
    kf51=\E[1;3R, kf52=\E[1;3S, kf53=\E[15;3~, kf54=\E[17;3~,
    kf55=\E[18;3~, kf56=\E[19;3~, kf57=\E[20;3~,
    kf58=\E[21;3~, kf59=\E[23;3~, kf6=\E[17~, kf60=\E[24;3~,
    kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~,
    kf8=\E[19~, kf9=\E[20~, khome=\EOH, kich1=\E[2~,
    kind=\E[1;2B, kmous=\E[M, knp=\E[6~, kpp=\E[5~,
    kri=\E[1;2A, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El,
    memu=\Em, oc=\E]104\007, op=\E[39;49m, rc=\E8,
    rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM,
    rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E(B, rmam=\E[?7l,
    rmcup=\E[?1049l\E[23;0;0t, rmir=\E[4l, rmkx=\E[?1l\E>,
    rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m,
    rs1=\Ec\E]104\007, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7,
    setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m,
    setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m,
    setb@, setf@,
    sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m,
    sgr0=\E(B\E[m, sitm=\E[3m, smacs=\E(0, smam=\E[?7h,
    smcup=\E[?1049h\E[22;0;0t, smir=\E[4h, smkx=\E[?1h\E=,
    smm=\E[?1034h, smso=\E[7m, smul=\E[4m, tbc=\E[3g,
    tsl=\E]2;, u6=\E[%i%d;%dR, u7=\E[6n,
    u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd,

Desktop Entry

많은 Linux 및 BSD 배포판은 시스템 메뉴에 응용 프로그램을 추가하기 위한 데스크탑 항목을 지원합니다. 그러면 Alacritty용 데스크톱 항목이 설치됩니다.

sudo cp target/release/alacritty /usr/local/bin # or anywhere else in $PATH
sudo cp extra/logo/alacritty-term.svg /usr/share/pixmaps/Alacritty.svg
sudo desktop-file-install extra/linux/Alacritty.desktop
sudo update-desktop-database

Alacritty의 로고에 문제가 있는 경우 github 저장소의 extra/logo/compat 디렉토리에서 사용할 수 있는 미리 렌더링된 PNG 및 단순화된 SVG로 교체할 수 있습니다.

Manual Page

매뉴얼 페이지를 설치하려면 추가 종속성 gzipscdoc가 필요합니다.

sudo mkdir -p /usr/local/share/man/man1
scdoc < extra/man/alacritty.1.scd | gzip -c | sudo tee /usr/local/share/man/man1/alacritty.1.gz > /dev/null
scdoc < extra/man/alacritty-msg.1.scd | gzip -c | sudo tee /usr/local/share/man/man1/alacritty-msg.1.gz > /dev/null
scdoc < extra/man/alacritty.5.scd | gzip -c | sudo tee /usr/local/share/man/man5/alacritty.5.gz > /dev/null
scdoc < extra/man/alacritty-bindings.5.scd | gzip -c | sudo tee /usr/local/share/man/man5/alacritty-bindings.5.gz > /dev/null

Shell completions

To get automatic completions for Alacritty's flags and arguments you can install the provided shell completions.

Zsh

zsh 완성을 설치하려면 $fpath가 참조하는 디렉토리에 extra/completions/_alacritty 파일을 배치하면 됩니다.

~/.zshrc를 통해 이러한 디렉토리를 아직 등록하지 않은 경우 다음과 같이 추가할 수 있습니다.

mkdir -p ${ZDOTDIR:-~}/.zsh_functions
echo 'fpath+=${ZDOTDIR:-~}/.zsh_functions' >> ${ZDOTDIR:-~}/.zshrc

Then copy the completion file to this directory:

cp extra/completions/_alacritty ${ZDOTDIR:-~}/.zsh_functions/_alacritty
Bash

To install the completions for bash, you can source the extra/completions/alacritty.bash file in your ~/.bashrc file.

If you do not plan to delete the source folder of alacritty, you can run

echo "source $(pwd)/extra/completions/alacritty.bash" >> ~/.bashrc

Otherwise you can copy it to the ~/.bash_completion folder and source it from there:

mkdir -p ~/.bash_completion
cp extra/completions/alacritty.bash ~/.bash_completion/alacritty
echo "source ~/.bash_completion/alacritty" >> ~/.bashrc

Event Print

alacritty --print-events

키보드/마우스 이벤트 같은거 출력하기 좋다.

Change font

# Font configuration
font:
  normal:
    # Font family
    #
    # Default:
    #   - (macOS) Menlo
    #   - (Linux/BSD) monospace
    #   - (Windows) Consolas
    family: 'DroidSansMono Nerd Font'

  # Point size
  size: 10.0

Import another yaml

import:
  - /path/to/alacritty.yml

Jump word

Alt+Left, Alt+Right 키 입력으로 커서를 워드단위 점프할 수 있게 한다.

key_bindings:
  - { key: Left,  mods: Alt, chars: "\x1bb" }
  - { key: Right, mods: Alt, chars: "\x1bf" }

Vim 에서 Function Key Mapping

tmux에서 vim을 실행했을 때 Function Key를 Ctrl과 함께 사용하면 <C-F1>와 같이 키맵이 바인딩 된다.

하지만 tmux 없이 실행하면 해당 키가 정상적으로 맵핑되지 않는다.

이 현상을 확인하기 위해 vim의 Insert Mode 에서 <c-v> 입력후 다른 키를 누르면 해당 키가 온전히 출력된다.

이 점을 활용해 테스트한 결과는 다음과 같다:

Meta keys

mapping range

-

<F1> ~ <F12>

Shift

<F13> ~ <F24>

Ctrl

<F25> ~ <F36>

Shift+Ctrl

<F37> ~ <F48>

위의 키맵을 활용하여 키맵을 적용하면 된다.

Troubleshooting

Font sizes differ on different screens

모니터 마다 폰트 크기가 다르게 출력되는 현상이 발생된다.

See also

Favorite site