15
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rust製の高速ターミナル「Alacritty」とhammerspoonを組み合わせてiTerm2を超える爆速環境構築 on macOS

Last updated at Posted at 2020-07-21

Alacrittyとは

Rust製のターミナルで、OpenGLを使ったGPUレンダリングを用いて描画するため、とても高速なターミナルです。

https://github.com/alacritty/alacritty

今回はAlacrittyの導入とhammerspoonというhotkeyを設定できるツールを用いてiTerm2の強力機能HotKeyも模倣した高速ターミナルの設定をしていきます。
ちなみに、このAlacrittyはtmuxを使ったカーソル移動をほぼ必須としているため、ターミナルの分割機能等は存在しません。(iTerm2でいう Command + V等)

メリット

  • 早い、特に大きなファイルをvimで開くとき明らかに速度が違うしj,kでのカーソル移動がサクサク
  • ターミナルの設定をコードで管理できるので、dotfilesの管理が捗る
  • tmuxとの親和性が高い

デメリット

  • iTerm2と比べるとhammerspoon + alacrittyの組み合わせはワンテンポ開くのが遅いかも
  • 日本語入力がインラインで行えない(現バージョンではまだ、エンターを押すまで入力されない)

導入

ソフトウェアのインストール

まずは必要なものをインストールしましょう。どちらもbrewで公開されているのでこちらからインストールします。

$ brew cask install hammerspoon alacritty

インストール後にApplicationから起動するとセキュリティの警告が出ると思うので、「環境設定」→「セキュリティとプライバシー」から許可して開いてください。
また、hammerspoonは「環境設定」→「アクセシビリティ」にチェックを入れておいてください。

*今回はtmuxとvimの環境構築については触れませんが、ネット上に素晴らしいconfigファイルがたくさん転がっているので自分のconfigを育てていってください。

Hotkeyの設定

次にhammerspoonでhotkeyを設定して開けるようにしていきます。
設定ファイルは$HOME/.hammerspoon/init.luaに書きます。

僕はCtrl+Tにバインドを設定しています。お好みで1行目をいじってください。

hs.hotkey.bind({"ctrl"}, "t", function()
  local alacritty = hs.application.find('alacritty')
  if alacritty:isFrontmost() then
    alacritty:hide()
  else
    hs.application.launchOrFocus("/Applications/Alacritty.app")
  end
end)

alacrittyの設定ファイル

  1. $XDG_CONFIG_HOME/alacritty/alacritty.yml
  2. $XDG_CONFIG_HOME/alacritty.yml
  3. $HOME/.config/alacritty/alacritty.yml
  4. $HOME/.alacritty.yml

設定ファイルは上記の優先順位で読み込まれます。
ファイルを作成したら以下の内容を書きます。

# tmuxを起動
shell:
  program: /usr/local/bin/zsh
  args:
    - -l
    - -c
    - "tmux attach || tmux"

window:
  decolations: buttonless # mac only
  startup_mode: SimpleFullscreen # mac only

# font設定
font:
  size: 12.5
  normal:
    family: HackGen
  bold:
    family: HackGen
  italic:
    family: HackGen

key_bindings:
  - { key: Q, mods: Control, chars: "\x11" } # 暫定対応 masterブランチでは解決済みらしい

上から順に説明します。
shellでは、使用するshellとtmuxでの起動を行っています。ターミナルを立ち上げるたびにtmuxコマンドを叩かなくていいので幸せになれます。

windowではフルスクリーンの設定をしています。
僕はターミナル以外のボタンやバーは表示されないようにしたいのでこのような設定になりました。

fontでは文字通りfont-familyの設定とfont-sizeの設定ができます。

key-bindsですがここに書いているものはバグを回避するためのキーバインドです。tmuxのprefixをCtrl+Qにしているのですが、なぜか2回押さないと反応しないバグがあるらしく、キーバインドで回避しています。
masterブランチでは解決しているらしいので、気が向いた方はbrewでなくそちらから入れてみたらいいかもしれません。

さいごに

これまではiTerm2 + nvim + tmuxの組み合わせで開発していましたが、alacrittyに乗り換えようと思います。
ターミナル自体が爆速なのもそうですが、macOSだけでなくlinuxとwindowsでも使えるのでdotfilesに保管してそのまま使えるのはとても大きいですね。

15
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?