Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save ales-tsurko/cc8cb59f6d5a1aa95512e81e3dfe64ff to your computer and use it in GitHub Desktop.
Save ales-tsurko/cc8cb59f6d5a1aa95512e81e3dfe64ff to your computer and use it in GitHub Desktop.
Install Alacritty on Ubuntu
#!/bin/bash
# This installs alacritty terminal on ubuntu (https://github.com/jwilm/alacritty)
# You have to have rust/cargo installed for this to work
# Install required tools
sudo apt-get install -y cmake libfreetype6-dev libfontconfig1-dev xclip
# Download, compile and install Alacritty
git clone https://github.com/jwilm/alacritty
cd alacritty
cargo build --release
# Add Man-Page entries
sudo mkdir -p /usr/local/share/man/man1
gzip -c extra/alacritty.man | sudo tee /usr/local/share/man/man1/alacritty.1.gz > /dev/null
# Add shell completion for bash and zsh
mkdir -p ~/.bash_completion
cp extra/completions/alacritty.bash ~/.bash_completion/alacritty
echo "source ~/.bash_completion/alacritty" >> ~/.bashrc
sudo mkdir -p /usr/share/zsh/functions/Completion/X/
sudo cp extra/completions/_alacritty /usr/share/zsh/functions/Completion/X/_alacritty
# Copy default config into home dir
cp alacritty.yml ~/.alacritty.yml
# Create desktop file
mkdir -p ~/.local/share/applications/
cp extra/linux/Alacritty.desktop ~/.local/share/applications/
# Copy binary to path
sudo cp target/release/alacritty /usr/local/bin
# Remove temporary dir
cd ..
rm -rf alacritty
@YV31
Copy link

YV31 commented Oct 2, 2020

Thanks! Helped a lot.

@miraklez
Copy link

On Ubuntu need also :
$ sudo apt install libxcb-composite0-dev libx11-xcb-dev

@Unrud
Copy link

Unrud commented Nov 3, 2020

Some improvements:

# Add shell completion for bash (system-wide)
sudo mkdir -p /usr/local/share/bash-completion/completions/
sudo cp extra/completions/alacritty.bash /usr/local/share/bash-completion/completions/alacritty

# Add shell completion for fish
sudo mkdir -p /usr/local/fish/completions/
sudo cp extra/completions/alacritty.fish /usr/local/fish/completions/

# Add desktop file (system-wide)
sudo mkdir -p /usr/local/share/applications/
sudo cp extra/linux/Alacritty.desktop /usr/local/share/applications/

# Add icons
sudo mkdir -p /usr/local/share/icons/hicolor/{scalable,symbolic}/apps/
sudo cp extra/logo/alacritty-term.svg /usr/local/share/icons/hicolor/scalable/apps/Alacritty.svg
sudo cp extra/logo/alacritty-simple.svg /usr/local/share/icons/hicolor/symbolic/apps/Alacritty-symbolic.svg

Instead of cargo install --path alacritty/ I suggest using cargo build --release. The former automatically installs the binary to ~/.cargo/bin/alacritty.

@darthmall
Copy link

On Ubuntu 18.04 I also had to apt install libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev.

Also, if you're installing this for just your user in ~/.local/share/ instead of /usr/share/ I had to make a few edits to the .desktop file. I had to remove the the TryExec (although changing it to an absolute path might also work) and I had to change the Exec values to the absolute path to ~/.local/bin/alacritty instead of just alacritty.

@darthmall
Copy link

Another useful thing you can do is make Alacritty available as your default terminal:

$ sudo update-alternatives --install $(which x-terminal-emulator) x-terminal-emulator $(which alacritty) 40
$ sudo update-alternatives --config x-terminal-emulator

The second command should present you with a list of terminals you have available for your default terminal. Just select Alacritty and it should open as your default terminal.

@ales-tsurko
Copy link
Author

ales-tsurko commented Nov 25, 2020

@Unrud

Instead of cargo install --path alacritty/ I suggest using cargo build --release. The former automatically installs the binary to ~/.cargo/bin/alacritty.

This is surprising... cargo build --release usually just normal cargo build command but for release target (i.e. with optimizations). So it should put the build artifacts inside target at the source root or $CARGO_TARGET_DIR if it's specified. Are you sure in this?

UPD

Hmm But doing cargo install --path alacritty/ doesn't make sense as well, because at the end we copy the binary from target/releaseanyway (which is built by cargo build --release as a part of cargo install). Will update the script.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment