🗂

Ubuntuをインストールしたらやりたいことリスト

に公開

UbuntuをPCにクリーンインストールするのはいいが、
最初は、ほぼ何もソフトが入っていない状態(それがいいのだが)

だから、何かしらのセットアップは行いたい。

ただ、普段Macとかに慣れていると、
久しぶりにUbuntuとかを触ると、
何をすればいいか忘れる...

なので、本記事ではUbuntuを入れたら
最低限設定したいことをまとめようと思う。

目次

日本語入力

日本語環境で作業する場合、最初に設定すべきなのは日本語入力です。Ubuntuでは「Mozc」が一般的です。

sudo apt update
sudo apt install -y ibus-mozc
sudo apt install -y mozc-utils-gui

インストール後の設定手順:

  1. 再起動する
  2. Settings(設定)を開く
  3. 「Region & Language」→「Input Sources」を選択
  4. 「+」ボタンをクリック
  5. 「Japanese (Mozc)」を選択して「Add」をクリック

これで Alt+` (バッククォート)で日本語入力と英語入力を切り替えられるようになります。

入力方式のカスタマイズが必要な場合は、「Mozc設定」を開いて調整できます:

/usr/lib/mozc/mozc_tool --mode=config_dialog

CapsLockの無効化してCtrlキーにする

さて、毎度のことですが、宇宙一使いみちがわからないCapsLockを
無効化する作業をしようと思います。

あと、もともとMacのキー配列に慣れてしまった私は、
無変換キーと変換キーの存在意義もよくわからないので、
Ctrlあたりに変えたいと思います。

まずは、各キーのキーコードを調べたいので、

xev

でキーコードを調べます。
CapsLockを押してみます

Screenshot from 2024-07-21 14-10-10.png

keycodeが66ということがわかります。

次に、Xmodmapを使ってキー配列を変更します。
設定ファイルは、~/.Xmodmapなので、

clear Lock
keycode 49 = Control_L
keycode 66 = Control_L
keycode 100 = Zenkaku_Hankaku
keycode 102 = Zenkaku_Hankaku
keycode 111 = Shift_R
add control = Control_L

以下のコマンドで適用します:

xmodmap ~/.Xmodmap

これで再起動したら反映されるはずなのですが、
環境によってはCapsLockが頑固に機能し続けることがあります。

そのような場合は、Gnome Tweaksを使用する方法が確実です:

sudo apt install gnome-tweaks

インストール後、以下のコマンドで起動します:

gnome-tweaks

「Keyboard & Mouse」→「Additional Layout Options」→「Caps Lock behavior」で
「Make Caps Lock an additional Ctrl」を選択します。

Screenshot from 2024-07-21 15-15-45.png

これで再起動すれば、CapsLockキーがCtrlキーとして機能するようになります。

永続的に設定するには、~/.profileまたは~/.bashrcに以下を追加するのも良いでしょう:

# CapsLockをCtrlにマッピング
setxkbmap -option ctrl:nocaps

US配列からJIS配列への変更

新規インストールのUbuntuは、デフォルトでUS配列キーボードとして設定されていることがあります。JIS配列のキーボードを使用している場合、以下の手順で変更できます。

GUIから変更する方法

  1. 「Settings」(設定)を開く
  2. 「Region & Language」を選択
  3. 「Input Sources」の部分で「+」ボタンをクリック
  4. 「Japanese」→「Japanese (OADG 109A)」を選択
  5. 「Add」をクリック
  6. 既存の「English (US)」または他の入力ソースを選択して「-」ボタンをクリックして削除

コマンドラインから変更する方法

# 利用可能なキーボードレイアウトの確認
localectl list-x11-keymap-layouts

# JIS配列に変更
sudo localectl set-x11-keymap jp

# 現在の設定を確認
localectl status

キーボードレイアウトの変更を即時反映させるためには、一度ログアウトして再ログインするか、システムを再起動してください。

文字化けやキー配列の問題が発生した場合

稀にキーボード設定が正しく反映されない場合は、以下のコマンドでXサーバーの設定を更新します:

sudo dpkg-reconfigure keyboard-configuration
# 画面の指示に従ってJISキーボードを選択
sudo service keyboard-setup restart

firefoxが気に入らなければ好きなブラウザを入れる

個人的にはFirefoxは結構好きなブラウザなので、
正直Firefoxをそのまま使うというのもありなのですが
(そのほうがなんとなくLinuxっぽい気もするし)、
Batの小銭稼ぎのために、
ここはやはりBraveを入れとこうと思います。

Braveのインストール

公式サイトからインストール方法を確認できます:
https://brave.com/linux/

sudo apt-get update
sudo apt install curl

# 署名キーの追加
sudo curl -fsSLo /usr/share/keyrings/brave-browser-archive-keyring.gpg https://brave-browser-apt-release.s3.brave.com/brave-browser-archive-keyring.gpg

# リポジトリの追加
echo "deb [signed-by=/usr/share/keyrings/brave-browser-archive-keyring.gpg] https://brave-browser-apt-release.s3.brave.com/ stable main" | sudo tee /etc/apt/sources.list.d/brave-browser-release.list

# パッケージリストの更新とインストール
sudo apt update
sudo apt install brave-browser

Braveはブックマークをエクスポート/インポートできるので、以前の環境からブックマークを引き継ぐ場合はHTMLファイルを経由すると簡単です。

Google Chromeのインストール

Chromeを使いたい場合は以下のようにインストールできます:

cd ~/Downloads
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
# 依存関係の問題が発生した場合
sudo apt install -f

ブラウザをデフォルトに設定

お気に入りのブラウザをデフォルトブラウザに設定しましょう:

# デフォルトブラウザの設定(GUIを起動)
xdg-settings set default-web-browser brave-browser.desktop
# または
xdg-settings set default-web-browser google-chrome.desktop

virtualboxの設定

virtualboxを入れます。

インストール手順

sudo apt update
sudo apt install virtualbox virtualbox-ext-pack

しかし、ただ入れるだけで、
起動を押すとまれに画像のようなエラーになります。
スクリーンショット 2024-12-01 9.08.38.png

エラーメッセージ通り、

sudo /sbin/vboxconfig

を実行するも、環境によってはエラーになることがあります。

そもそも、moduleが読み込まれているか確認すると、

sudo modprobe vboxdrv

これでmodule not found的なエラーになれば、
カーネルモジュールが足りなそうなので、

sudo apt update
sudo apt install linux-headers-$(uname -r) build-essential dkms

このコマンドで必要なパッケージを再度入れます。

それでもう一度/sbin/vboxconfigがエラー無しで実行できれば、
無事virtualboxが起動できるはずです。

VirtualBoxユーザーグループの設定

VirtualBoxを一般ユーザーで快適に使用するには、ユーザーをvboxusersグループに追加します:

sudo usermod -aG vboxusers $USER

この変更を反映させるためには、一度ログアウトして再ログインするか、システムを再起動してください。

VirtualBox Extension Packのインストール

USB 3.0サポートやリモートデスクトップなどの機能を使うには、Extension Packが必要です:

# 最新のExtension Packをダウンロード(バージョンは適宜変更)
wget https://download.virtualbox.org/virtualbox/7.0.14/Oracle_VM_VirtualBox_Extension_Pack-7.0.14.vbox-extpack

# インストール
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-7.0.14.vbox-extpack

gitの設定

まずはインストール

sudo apt install git

基本設定

git config --global user.name 'user_name'
git config --global user.email "user@example.com"

ちゃんと設定できているか確認

git config --list

Gitのエイリアス設定

よく使うGitコマンドをショートカット化すると便利です:

git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Git SSHの設定

次にgitのssh設定をしたい。
まずはsshキーを作成

ssh-keygen -t ed25519 -C "your_email@example.com"

さてこいつの中身をコピーしたい。
Macとかならpbcopyで終了なのだが、
linuxの場合違うアプローチが必要だ。

linuxの場合、xselというものが使えるので
インストールする

sudo apt install xsel

インストールしたら、クリップボードに公開鍵をコピーする。

cat ~/.ssh/id_ed25519.pub | xsel --clipboard --input

追加したらGithubのsshキーの項目に追加する。
追加したら、

ssh -T git@github.com

これでHiと返ってくれば、
git cloneとかでsshで持ってこれる

Gitの設定ファイル作成

より詳細な設定は~/.gitconfigファイルで管理できます:

[user]
    name = Your Name
    email = your_email@example.com
[core]
    editor = nvim
    excludesfile = ~/.gitignore_global
[color]
    ui = auto
[pull]
    rebase = false
[init]
    defaultBranch = main

グローバルの.gitignoreファイルも作成しておくと便利です:

touch ~/.gitignore_global
echo ".DS_Store" >> ~/.gitignore_global
echo "*.swp" >> ~/.gitignore_global
echo ".vscode/" >> ~/.gitignore_global
echo "node_modules/" >> ~/.gitignore_global

vim/neovimの設定

もちろん、neovimとかの設定をしないことには
何も始まらない。

vimmerであれば、dotfileみたいなリボジトリを持っているであろうから、
そいつをcloneして、各々設定を適用させる。

Neovimのインストール

sudo apt install neovim

init.luaとかの設定ファイルをcpする
※私の環境の例

mkdir -p ~/.config/nvim
cp init.lua ~/.config/nvim/
mkdir -p ~/.config/nvim/lua
cp -r lua ~/.config/nvim/

さてこれでnvimを起動すればプラグインとかインストールして終わりかと思いきや、
何やらエラーが。lazy.nvimは0.8以上のneovimのバージョンが必要だが、
aptでインストールしたneovimは0.6系のことが多いです。

最新版Neovimのインストール

古いneovimを削除して最新版をインストールします:

# 古いバージョンを削除
sudo apt-get remove neovim

# 最新版をダウンロードしてインストール
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
sudo rm -rf /opt/nvim
sudo tar -C /opt -xzf nvim-linux64.tar.gz

使っているシェルの設定ファイル(UbuntuとかならデフォルトはBash)
.bashrcとかに下記を追記してパスを通します:

export PATH="$PATH:/opt/nvim-linux64/bin"

sourceコマンドで設定ファイルを再読み込みします:

source ~/.bashrc  # または ~/.zshrc

プラグインマネージャの設定

Neovimでは様々なプラグインマネージャが使えますが、最近はlazy.nvimが人気です:

-- ~/.config/nvim/init.lua の例
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({
    "git", "clone", "--filter=blob:none",
    "https://github.com/folke/lazy.nvim.git", "--branch=stable",
    lazypath,
  })
end
vim.opt.rtp:prepend(lazypath)

-- プラグインの設定
require("lazy").setup({
  -- プラグインをここに追加
  { "nvim-treesitter/nvim-treesitter" },
  { "neovim/nvim-lspconfig" },
  -- 他にも必要なプラグイン
})

Neovimの依存パッケージのインストール

nvimを実行したときにエラーが出る場合は、必要な依存パッケージをインストールします:

sudo apt update && sudo apt install build-essential

これでNo C compiler found関連のエラーは解消されるはずです。

nodejs

coc.nvimなどのプラグインはNode.jsに依存しているため、Node.jsの設定も必要です。

nvmによるNode.jsのインストール

Node Version Manager (nvm)を使うと、異なるバージョンのNode.jsを簡単に管理できます:

# nvmのインストール
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

# シェルを再起動するか、設定を読み込み直す
source ~/.bashrc  # または ~/.zshrc

# 利用可能なNode.jsのバージョンを確認
nvm ls-remote

# 最新のLTS版をインストール
nvm install --lts

# デフォルトのNode.jsバージョンを設定
nvm alias default lts/*

これでnode is not executableのようなエラーは解消されるはずです。

Node.jsのグローバルパッケージ

開発に便利なパッケージもいくつかインストールしておくと良いでしょう:

npm install -g yarn
npm install -g typescript
npm install -g eslint
npm install -g prettier

ripgrep(rg)、fd導入

nvimで:checkhealthコマンドを実行すると、
外部ツールとかで足りていないものがわかる。

代表的なものだと、telescope.nvimで使う、
ripgrepやfdとかなので、まずはこれらを入れて、
telescope.nvimの力を引き出します。

ripgrep(rg)のインストール

ripgrepは高速な検索ツールです:

curl -LO https://github.com/BurntSushi/ripgrep/releases/download/14.1.0/ripgrep_14.1.0-1_amd64.deb
sudo dpkg -i ripgrep_14.1.0-1_amd64.deb

または、aptからもインストールできます(バージョンは少し古いかもしれません):

sudo apt install ripgrep

fd-findのインストール

fdはファイル検索ツールです:

sudo apt install fd-find

ただし、これだけではfdコマンドではなくfdfindコマンドとしてインストールされます。
fdコマンドとして使用するためには、シンボリックリンクを作成します:

mkdir -p ~/.local/bin
ln -sf $(which fdfind) ~/.local/bin/fd

# PATHを追加
if ! grep -q "HOME/.local/bin" ~/.zshrc; then
    echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.zshrc
fi

~/.local/binにパスを通すのを忘れないでください:

# ~/.bashrcまたは~/.zshrcに追加
export PATH="$PATH:$HOME/.local/bin"

その他の便利なツール

開発効率を高める他のツールもインストールしておくと便利です:

# jqはJSONデータを処理するためのコマンドラインツール
sudo apt install jq

# batはシンタックスハイライト付きのcatコマンド
sudo apt install bat

# exa/lsdはlsコマンドの代替
sudo apt install exa

# htopはtopコマンドの改良版
sudo apt install htop

tmuxの設定

tmuxはターミナルマルチプレクサで、複数のターミナルセッションを効率的に管理できます。

インストール

sudo apt install tmux

基本設定

設定ファイルを作成します:

# 既存の設定ファイルをコピーするか、新規作成
cp tmux.conf ~/.tmux.conf  # 既存のファイルがある場合
# または
touch ~/.tmux.conf  # 新規作成

# 設定を読み込み
tmux source-file ~/.tmux.conf

基本的な設定例:

# ~/.tmux.conf
# プレフィックスキーをC-aに変更
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# ウィンドウとペインのインデックスを1から始める
set -g base-index 1
setw -g pane-base-index 1

# マウス操作を有効化
set -g mouse on

# ステータスバーの色を設定
set -g status-style fg=white,bg=black

# 256色端末を使用
set -g default-terminal "screen-256color"

# コピーモードでvimキーバインドを使用
setw -g mode-keys vi

tmuxプラグインマネージャの設定

プラグイン管理には、Tmux Plugin Manager (TPM)を使用すると便利です:

# TPMのインストール
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

# ~/.tmux.confに以下を追加
cat << 'EOF' >> ~/.tmux.conf
# プラグイン管理
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

# 自動保存と復元
set -g @continuum-restore 'on'

# プラグインの初期化(この行は必ず設定ファイルの最後に記述)
run '~/.tmux/plugins/tpm/tpm'
EOF

# 設定の再読み込み
tmux source-file ~/.tmux.conf

インストール後、prefix + I(デフォルトではCtrl+b、設定変更後はCtrl+a、その後にI)を押すとプラグインがインストールされます。

zshの設定

Zshは拡張性の高いシェルで、様々なカスタマイズが可能です。

インストールと基本設定

# zshのインストール
sudo apt install zsh

# デフォルトシェルに設定
chsh -s /bin/zsh

# 現在のシェルを確認
echo $SHELL

シェルの変更を確認するには一度ログアウトして再ログインする必要があります。

oh-my-zshのインストール

oh-my-zshはZshの設定を簡単に管理するためのフレームワークです:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

これを実行すると、既存の.zshrcファイルがバックアップされ、新しい設定ファイルが作成されます。

powerlevel10kテーマのインストール

powerlevel10kは見た目が良く、機能も豊富なZshテーマです:

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

.zshrcファイルを編集してテーマを設定します:

sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc

# powerlevel10k設定ファイルの読み込みを追加
cat << 'EOF' >> ~/.zshrc

# powerlevel10k設定ファイル
if [ -f ~/.p10k.zsh ]; then
  source ~/.p10k.zsh
fi
EOF

次回ログイン時(またはsource ~/.zshrc実行時)に設定ウィザードが起動します。

便利なZshプラグインの有効化

oh-my-zshには多数のプラグインが付属しています。.zshrcファイルを編集して有効化します:

# プラグインの設定部分を見つけて編集(例)
sed -i 's/plugins=(git)/plugins=(git z docker docker-compose npm node yarn)/' ~/.zshrc

tmuxとの連携設定

Zshとtmuxを連携させ、ターミナル起動時に自動的にtmuxを起動するように設定できます:

cat << 'EOF' >> ~/.zshrc

# tmux自動起動設定
if [[ -z "$ZSHRC_EXECUTED" ]]; then
  export ZSHRC_EXECUTED=1
  # 初回シェル時のみ tmux実行
  if [ -z "$TMUX" ]; then
    tmux new-session -A -s main
  fi
  source ~/.zshrc
fi
EOF

zoxideのインストール

zoxideはディレクトリの移動を効率化するツールです。

curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | zsh

.zshrcに下記を追記します:

eval "$(zoxide init zsh)"

fzfと組み合わせることで、より強力な機能が使えます:

sudo apt install fzf

これでzコマンドとziコマンドが使えるようになります。使い方の例:

  • z Documents - Documentsディレクトリに移動
  • zi - インタラクティブにディレクトリを選択して移動

Ruby、rbenvの設定

Rubyの開発環境を整えるには、バージョン管理ツールのrbenvが便利です。

rbenvのインストール

git clone https://github.com/rbenv/rbenv.git ~/.rbenv

パスを設定します:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc
source ~/.zshrc

注意: rbenvの初期化コマンドが既に存在する場合は正常に動作しません。既存の設定がある場合は削除してから追加してください。

ruby-buildプラグインのインストール

git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

依存パッケージのインストール

Rubyのコンパイルに必要なパッケージをインストールします:

sudo apt install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev libgdbm-compat-dev

Rubyのインストールと設定

# 利用可能なRubyのバージョンを確認
rbenv install -l

# 特定のバージョンをインストール
rbenv install 3.3.4

# グローバルバージョンを設定
rbenv global 3.3.4

# Rubyのバージョンを確認
ruby -v

インストール時にzlib.hがないなどのエラーが出る場合は、必要なライブラリをインストールします:

sudo apt install zlib1g-dev libffi-dev libssl-dev libyaml-dev

Bundlerのインストール

gem install bundler
rbenv rehash

Dockerの設定

コンテナ技術は現代の開発環境では欠かせません。Dockerを設定しましょう。

Docker Engineのインストール

公式ドキュメントに従ってインストールします:

# GPGキーのインストール
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# リポジトリの設定
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Dockerパッケージのインストール
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Dockerをsudoなしで実行できるようにする

Dockerコマンドをsudoなしで実行するには、ユーザーをdockerグループに追加します:

sudo groupadd docker
sudo usermod -aG docker $USER

変更を適用するには、ログアウトして再ログインするか、以下のコマンドを実行します:

newgrp docker

Docker Composeのインストール

最新のDockerには Docker Compose プラグインが含まれていますが、別途インストールする場合は以下を実行します:

# Docker Composeをダウンロード
DOCKER_COMPOSE_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)
sudo curl -L "https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 実行権限を付与
sudo chmod +x /usr/local/bin/docker-compose

# バージョン確認
docker-compose --version

Dockerの自動起動設定

システム起動時にDockerサービスを自動的に起動するようにします:

sudo systemctl enable docker
sudo systemctl start docker

Dockerの動作確認

Dockerが正しくインストールされたか確認します:

# Hello Worldコンテナを実行
docker run hello-world

# Ubuntu コンテナを対話モードで実行
docker run -it ubuntu bash

Homebrewの導入

LinuxでもHomebrewを使うことで、macOSと同様のパッケージ管理が可能になります。

インストール手順

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

インストール後、シェルの設定ファイルにパスを追加します:

# zshの場合
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.zshrc
source ~/.zshrc

# bashの場合
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
source ~/.bashrc

依存パッケージのインストール

sudo apt-get install build-essential
brew install gcc

Homebrewの基本的な使い方

# パッケージのインストール
brew install package_name

# パッケージの検索
brew search keyword

# 情報表示
brew info package_name

# インストール済みパッケージの一覧表示
brew list

# パッケージの更新
brew upgrade package_name

# Homebrewの更新
brew update

alacrittyの導入設定

Alacrittyは高速で軽量なGPUアクセラレーションを活用したターミナルエミュレータです。

Rustのインストール

AlacrittyはRustで書かれているため、まずRustをインストールします:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
rustup override set stable
rustup update stable

依存パッケージのインストール

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

Alacrittyのビルドとインストール

# ソースコードのクローン
git clone https://github.com/alacritty/alacritty.git
cd alacritty

# ビルド
cargo build --release

# ターミナル情報の設定
sudo tic -xe alacritty,alacritty-direct extra/alacritty.info

# バイナリと設定ファイルのインストール
sudo cp target/release/alacritty /usr/local/bin
sudo mkdir -p /usr/local/share/man/man1
sudo cp extra/alacritty.man /usr/local/share/man/man1/alacritty.1
gzip -f /usr/local/share/man/man1/alacritty.1
sudo mkdir -p /usr/local/share/man/man5
sudo cp extra/alacritty-msg.man /usr/local/share/man/man1/alacritty-msg.1
gzip -f /usr/local/share/man/man1/alacritty-msg.1

# デスクトップエントリーの追加
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の設定

Alacrittyの設定ファイルを作成します:

mkdir -p ~/.config/alacritty

最低限の設定ファイル~/.config/alacritty/alacritty.ymlを作成します:

font:
  normal:
    family: Hack
    style: Regular
  bold:
    family: Hack
    style: Bold
  italic:
    family: Hack
    style: Italic
  size: 12.0

window:
  dimensions:
    columns: 100
    lines: 30
  padding:
    x: 2
    y: 2
  decorations: full

colors:
  primary:
    background: '#282c34'
    foreground: '#abb2bf'
  cursor:
    text: '#1d1f21'
    cursor: '#ffffff'

key_bindings:
  - { key: V, mods: Control, action: Paste }
  - { key: C, mods: Control, action: Copy }
  - { key: Q, mods: Control, action: Quit }

Alacrittyをデフォルトターミナルに設定

sudo update-alternatives --install /usr/bin/x-terminal-emulator x-terminal-emulator /usr/local/bin/alacritty 50
sudo update-alternatives --config x-terminal-emulator

表示されるメニューでAlacrittyを選択します。

AlbertとCopyQによるAlfredに代わるランチャーとクリップボード

Macの「Alfred」のような機能を実現するために、AlbertとCopyQを組み合わせて使います。

Albertのインストール

最初に、Ubuntuのバージョンを確認します:

lsb_release -a

バージョンに合わせたリポジトリを追加してインストールします(Ubuntu 22.04の例):

echo 'deb http://download.opensuse.org/repositories/home:/manuelschneid3r/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/home:manuelschneid3r.list
curl -fsSL https://download.opensuse.org/repositories/home:manuelschneid3r/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_manuelschneid3r.gpg > /dev/null
sudo apt update
sudo apt install albert

初回起動時に設定ウィザードが表示されるので、ホットキーなどを設定します。
ホットキーが機能しない場合は、Ubuntuのシステム設定でキーボードショートカットを追加します:

# システム設定 > キーボードショートカット > カスタムショートカット
# コマンド: albert toggle
# ショートカット: Alt+Space(好みに応じて)

CopyQのインストール

CopyQはクリップボード履歴を管理するためのツールです:

sudo apt-get install copyq

Albertの設定とCopyQの連携

Albertを起動し、設定画面を開きます:

  1. 「Extensions」タブを選択
  2. 「Applications」拡張機能を有効にする
  3. 「External extensions」拡張機能を有効にする
  4. 「External extensions」の設定で、CopyQのコマンドを追加:
    • トリガーワード: cp
    • コマンド: copyq toggle

これで、Albertのランチャーで「cp」と入力することでCopyQを簡単に呼び出せるようになります。

CopyQの自動起動設定

システム起動時にCopyQを自動的に起動するように設定します:

mkdir -p ~/.config/autostart
cat > ~/.config/autostart/copyq.desktop << EOF
[Desktop Entry]
Type=Application
Name=CopyQ
Comment=Advanced clipboard manager
Exec=copyq
Icon=copyq
Terminal=false
EOF

fusumaによるジェスチャー設定

fusumaを使うと、MacBookのトラックパッドのようなマルチタッチジェスチャーをUbuntuで実現できます。

インストール手順

sudo apt update
sudo apt install libinput-tools ruby
sudo apt install xdotool
sudo gem install fusuma

ユーザー権限の設定

sudo gpasswd -a $USER input

この変更を適用するためには、一度ログアウトして再ログインする必要があります。

設定ファイルの作成

mkdir -p ~/.config/fusuma

~/.config/fusuma/config.ymlファイルを作成します:

swipe:
  2:
    left:
      command: 'xdotool key alt+Left'  # 前に戻る
    right:
      command: 'xdotool key alt+Right' # 次に進む

  3:
    left:
      command: 'xdotool key ctrl+alt+Right'
    right:
      command: 'xdotool key ctrl+alt+Left'
    up:
      command: 'xdotool key super'
    down:
      command: 'xdotool key super+a'

  4:
    left:
      command: 'xdotool key ctrl+alt+Left'
    right:
      command: 'xdotool key ctrl+alt+Right'
    up:
      command: 'xdotool key ctrl+t'  # 新しいタブを開く
    down:
      command: 'xdotool key ctrl+w'  # タブを閉じる

pinch:
  in:
    command: 'xdotool key ctrl+minus'
  out:
    command: 'xdotool key ctrl+plus'

threshold:
  swipe: 0.3
  pinch: 0.1

fusumaの起動

fusuma -d

デバッグモードで動作を確認:

fusuma -v

systemdによるfusumaの自動起動設定

fusumaをsystemdサービスとして登録します:

sudo tee /etc/systemd/system/fusuma.service > /dev/null << EOF
[Unit]
Description=Fusuma Gesture Recognizer
After=display-manager.service

[Service]
ExecStart=/usr/local/bin/fusuma -d
Restart=always
RestartSec=5
Environment=DISPLAY=:0
Environment=XAUTHORITY=/home/$USER/.Xauthority
User=$USER
Group=$USER

[Install]
WantedBy=graphical-target.target
EOF

# サービスを有効化して起動
sudo systemctl daemon-reload
sudo systemctl enable fusuma.service
sudo systemctl start fusuma.service

# ステータス確認
sudo systemctl status fusuma.service

systemdでの起動がうまくいかない場合は、シェルの設定ファイルで起動するように設定できます:

# ~/.zshrcまたは~/.bashrcに追加
if [ $SHLVL = 1 ]; then
  fusuma -d
  tmux
fi

DaVinci Resolve

DaVinci Resolveは高機能な動画編集ソフトです。

ダウンロードとインストール

まずは公式サイトからzipファイルをダウンロードします。

cd ~/Downloads/
unzip ./DaVinci_Resolve_18.6.6_Linux.zip
chmod +x ./DaVinci_Resolve_18.6.6_Linux.run

依存パッケージのインストール

インストール前に必要なパッケージをインストールします:

sudo apt update
sudo apt install fuse libapr1 libaprutil1 libxcb-composite0 libxcb-cursor0 libxcb-damage0 libxcb-xinerama0 libxcb-xinput0 ocl-icd-libopencl1

インストールの実行

sudo ./DaVinci_Resolve_18.6.6_Linux.run -i

NVIDIA GPUドライバのインストール

DaVinci ResolveはNVIDIA GPUでのパフォーマンスが最適化されています:

# NVIDIAドライバをインストール
sudo apt install nvidia-driver-460

# インストール後は再起動
sudo reboot

# ドライバの状態を確認
nvidia-smi
lspci | grep -i nvidia

より新しいドライバが必要な場合は、NVIDIAのリポジトリを追加してインストールします:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install nvidia-driver-525  # または最新のバージョン

OBS Studio

OBS Studioは画面録画や配信に最適なオープンソースソフトウェアです。

インストール手順

# 依存パッケージのインストール
sudo apt-get install ffmpeg

# リポジトリの追加
sudo add-apt-repository ppa:obsproject/obs-studio

# インストール
sudo apt update
sudo apt-get install obs-studio

XorgセッションでのOBS使用

Wayland環境ではOBSの画面キャプチャ機能に制限があるため、Xorgセッションでの使用をお勧めします。ログイン画面でXorgセッションを選択できます。

画面設定の調整

画面サイズが正しく表示されない場合は、出力サイズを変更します:

  1. OBS Studioを起動
  2. キャンバス上で右クリック
  3. 「出力サイズ変更」を選択
  4. 適切な解像度(例:1920x1080)を選択

systemctlによる自動起動設定

Linuxでは、systemdを使用してサービスを管理することで、システム起動時に自動的にプログラムを起動できます。

サービスファイルの作成方法

基本的なサービスファイルは以下のような構造になっています:

[Unit]
Description=サービスの説明
After=network.target

[Service]
Type=simple
ExecStart=/path/to/executable
Restart=on-failure
User=username
Group=groupname

[Install]
WantedBy=multi-user.target

自動起動の例: VSCode Server

リモート開発用のVSCode Serverを自動起動する例:

sudo tee /etc/systemd/system/code-server.service > /dev/null << EOF
[Unit]
Description=VSCode Server
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/code-server --bind-addr 0.0.0.0:8080 --user-data-dir /home/$USER/.vscode-server
Restart=on-failure
User=$USER

[Install]
WantedBy=multi-user.target
EOF

# サービスを有効化
sudo systemctl daemon-reload
sudo systemctl enable code-server.service
sudo systemctl start code-server.service

自動起動の例: MongoDB

データベースサーバーを自動起動する例:

sudo tee /etc/systemd/system/mongodb.service > /dev/null << EOF
[Unit]
Description=MongoDB Database Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
Restart=on-failure

[Install]
WantedBy=multi-user.target
EOF

# サービスを有効化
sudo systemctl daemon-reload
sudo systemctl enable mongodb.service
sudo systemctl start mongodb.service

serviceファイルの管理コマンド

# サービスの状態確認
sudo systemctl status service-name

# サービスの起動
sudo systemctl start service-name

# サービスの停止
sudo systemctl stop service-name

# サービスの再起動
sudo systemctl restart service-name

# 自動起動の有効化
sudo systemctl enable service-name

# 自動起動の無効化
sudo systemctl disable service-name

デスクトップにアイコンを追加する方法

Ubuntuでは、アプリケーションのショートカットをデスクトップやアプリケーションメニューに追加できます。

.desktopファイルの作成

デスクトップエントリファイルは通常/usr/share/applications/または~/.local/share/applications/に配置します。

基本的な.desktopファイルの形式:

[Desktop Entry]
Type=Application
Name=アプリケーション名
Comment=説明文
Exec=実行コマンド
Icon=アイコンのパス
Terminal=false
Categories=カテゴリ;

例: Chromeのデスクトップショートカット

cat > ~/.local/share/applications/chrome.desktop << EOF
[Desktop Entry]
Type=Application
Name=Google Chrome
Comment=Access the Internet
Exec=/usr/bin/google-chrome-stable %U
Icon=google-chrome
Terminal=false
Categories=Network;WebBrowser;
EOF

デスクトップへのショートカット作成

アプリケーションメニューからデスクトップにドラッグ&ドロップするか、以下のコマンドを使用します:

# アプリケーションメニューの.desktopファイルをデスクトップにコピー
cp ~/.local/share/applications/application-name.desktop ~/Desktop/

# デスクトップのショートカットに実行権限を付与
chmod +x ~/Desktop/application-name.desktop

アイコンの作成例: VSCode

cat > ~/.local/share/applications/vscode.desktop << EOF
[Desktop Entry]
Name=Visual Studio Code
Comment=Code Editing. Redefined.
GenericName=Text Editor
Exec=/usr/bin/code --no-sandbox --unity-launch %F
Icon=/usr/share/pixmaps/vscode.png
Type=Application
StartupNotify=false
StartupWMClass=Code
Categories=Utility;TextEditor;Development;IDE;
MimeType=text/plain;inode/directory;application/x-code-workspace;
Actions=new-empty-window;
Keywords=vscode;

[Desktop Action new-empty-window]
Name=New Empty Window
Exec=/usr/bin/code --no-sandbox --new-window %F
Icon=/usr/share/pixmaps/vscode.png
EOF

# デスクトップにショートカットをコピー
cp ~/.local/share/applications/vscode.desktop ~/Desktop/
chmod +x ~/Desktop/vscode.desktop

設定が消えたとき

時々Ubuntuではシステム設定が消えてしまうことがあります。以下はその対処法です。

GNOMEコントロールセンターの復元

設定アプリが消えてしまった場合:

sudo apt install --reinstall gnome-control-center
gnome-control-center

dconfのリセット

特定の設定だけが問題がある場合、dconfをリセットすることができます:

# 特定の設定をリセット(例:GNOME Shellの設定)
dconf reset -f /org/gnome/shell/

# または特定のキーをリセット
dconf reset /org/gnome/desktop/interface/gtk-theme

デスクトップ環境全体の再インストール

深刻な問題が発生した場合は、デスクトップ環境を再インストールできます:

# GNOMEデスクトップを再インストール
sudo apt install --reinstall ubuntu-desktop gnome-shell

パッケージの整合性確認と修復

# パッケージの状態を確認
sudo apt update
sudo apt --fix-broken install
sudo apt autoremove

# 依存関係の修復
sudo apt install -f

一括設定用シェルスクリプト

ここでは、この記事で紹介したほとんどの設定を自動化するシェルスクリプトを提供します。

#!/bin/bash
# Ubuntu初期設定スクリプト

# スクリプトを中断するとすべての処理が停止するように
set -e

# ルート権限のチェック
if [ "$(id -u)" -eq 0 ]; then
    echo "このスクリプトはroot権限で実行しないでください。sudo権限のある一般ユーザーで実行してください。"
    exit 1
fi

# カレントディレクトリをスクリプトのディレクトリに変更
cd "$(dirname "$0")"

# カラー設定
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[0;33m'
NC='\033[0m' # No Color

echo -e "${GREEN}Ubuntu初期設定を開始します...${NC}"

# ユーザー名の取得
USERNAME=$(whoami)

# ----------------------------------------
# システムアップデート
# ----------------------------------------
echo -e "${YELLOW}システムを更新しています...${NC}"
sudo apt update && sudo apt upgrade -y

# ----------------------------------------
# 基本パッケージのインストール
# ----------------------------------------
echo -e "${YELLOW}基本パッケージをインストールしています...${NC}"
sudo apt install -y build-essential git curl wget unzip software-properties-common apt-transport-https ca-certificates gnupg xsel xdotool gnome-tweaks

# ----------------------------------------
# 日本語入力の設定
# ----------------------------------------
echo -e "${YELLOW}日本語入力(Mozc)をインストールしています...${NC}"
sudo apt install -y ibus-mozc mozc-utils-gui
# IBus設定の更新
dconf write /desktop/ibus/general/preload-engines "['mozc-jp']"
dconf write /desktop/ibus/general/use-system-keyboard-layout true

# ----------------------------------------
# CapsLockをCtrlキーに変更
# ----------------------------------------
echo -e "${YELLOW}CapsLockをCtrlキーに変更しています...${NC}"
cat > ~/.Xmodmap << EOF
clear Lock
keycode 66 = Control_L
add control = Control_L
EOF
xmodmap ~/.Xmodmap 2>/dev/null || true

# GNOME Tweaksでも設定
if command -v gnome-tweaks >/dev/null 2>&1; then
    # dconfを使用して設定
    dconf write /org/gnome/desktop/input-sources/xkb-options "['ctrl:nocaps']"
fi

# ----------------------------------------
# ZshとOh-My-Zshのインストール
# ----------------------------------------
echo -e "${YELLOW}Zshをインストールしています...${NC}"
sudo apt install -y zsh
echo -e "${YELLOW}Oh My Zshをインストールしています...${NC}"
# Oh My Zshのインストール(既にある場合はスキップ)
if [ ! -d "$HOME/.oh-my-zsh" ]; then
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended
fi

# Powerlevel10kのインストール
if [ ! -d "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" ]; then
    git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
fi

# .zshrcの設定
if [ -f "$HOME/.zshrc" ]; then
    # テーマを設定
    sed -i 's/ZSH_THEME=.*/ZSH_THEME="powerlevel10k\/powerlevel10k"/' ~/.zshrc
    
    # プラグインを設定
    sed -i 's/plugins=.*/plugins=(git z docker docker-compose npm node yarn)/' ~/.zshrc
    
    # powerlevel10kの設定を追加
    if ! grep -q "p10k.zsh" ~/.zshrc; then
        cat >> ~/.zshrc << 'EOF'

# powerlevel10k設定ファイル
if [ -f ~/.p10k.zsh ]; then
  source ~/.p10k.zsh
fi
EOF
    fi
fi

# ----------------------------------------
# Neovimのインストール(最新版)
# ----------------------------------------
echo -e "${YELLOW}Neovimをインストールしています...${NC}"
if command -v nvim >/dev/null 2>&1; then
    echo "Neovimは既にインストールされています"
else
    curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux64.tar.gz
    sudo rm -rf /opt/nvim
    sudo tar -C /opt -xzf nvim-linux64.tar.gz
    sudo ln -sf /opt/nvim-linux64/bin/nvim /usr/local/bin/nvim
    rm nvim-linux64.tar.gz
    
    # パスを追加
    if ! grep -q "nvim-linux64" ~/.zshrc; then
        echo 'export PATH="$PATH:/opt/nvim-linux64/bin"' >> ~/.zshrc
    fi
fi

# Neovimの基本設定ディレクトリを作成
mkdir -p ~/.config/nvim

# ----------------------------------------
# Node.jsのインストール(nvm経由)
# ----------------------------------------
echo -e "${YELLOW}Node.jsをインストールしています...${NC}"
if [ ! -d "$HOME/.nvm" ]; then
    curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
    
    # nvmの環境変数を設定
    export NVM_DIR="$HOME/.nvm"
    [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
    
    # 最新のLTS版をインストール
    nvm install --lts
    nvm alias default lts/*
fi

# ----------------------------------------
# 開発ツールのインストール(ripgrep, fd-find)
# ----------------------------------------
echo -e "${YELLOW}開発ツールをインストールしています...${NC}"
sudo apt install -y ripgrep fd-find jq htop bat

# fdコマンドのシンボリックリンク作成
mkdir -p ~/.local/bin
ln -sf $(which fdfind) ~/.local/bin/fd

# PATHを追加
if ! grep -q "HOME/.local/bin" ~/.zshrc; then
    echo 'export PATH="$PATH:$HOME/.local/bin"' >> ~/.zshrc
fi

# ----------------------------------------
# tmuxのインストール
# ----------------------------------------
echo -e "${YELLOW}tmuxをインストールしています...${NC}"
sudo apt install -y tmux

# tmux設定ファイルの作成
cat > ~/.tmux.conf << 'EOF'
# プレフィックスキーをC-aに変更
set -g prefix C-a
unbind C-b
bind C-a send-prefix

# ウィンドウとペインのインデックスを1から始める
set -g base-index 1
setw -g pane-base-index 1

# マウス操作を有効化
set -g mouse on

# ステータスバーの色を設定
set -g status-style fg=white,bg=black

# 256色端末を使用
set -g default-terminal "screen-256color"

# コピーモードでvimキーバインドを使用
setw -g mode-keys vi
EOF

# tmux plugin managerのインストール
if [ ! -d "$HOME/.tmux/plugins/tpm" ]; then
    git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
    
    # プラグイン設定を追加
    cat >> ~/.tmux.conf << 'EOF'

# プラグイン管理
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-continuum'

# 自動保存と復元
set -g @continuum-restore 'on'

# プラグインの初期化
run '~/.tmux/plugins/tpm/tpm'
EOF
fi

# ----------------------------------------
# zoxideのインストール
# ----------------------------------------
echo -e "${YELLOW}zoxideをインストールしています...${NC}"
curl -sSfL https://raw.githubusercontent.com/ajeetdsouza/zoxide/main/install.sh | bash

# zshrcに設定を追加
if ! grep -q "zoxide init" ~/.zshrc; then
    echo 'eval "$(zoxide init zsh)"' >> ~/.zshrc
fi

# fzfのインストール
sudo apt install -y fzf

# ----------------------------------------
# Rubyのセットアップ(rbenv経由)
# ----------------------------------------
echo -e "${YELLOW}Rubyをセットアップしています...${NC}"
if [ ! -d "$HOME/.rbenv" ]; then
    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    git clone https://github.com/rbenv/ruby-build.git "$(~/.rbenv/bin/rbenv root)"/plugins/ruby-build
    
    # rbenvの初期化を.zshrcに追加
    if ! grep -q "rbenv init" ~/.zshrc; then
        echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
        echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc
    fi
    
    # パスを設定
    export PATH="$HOME/.rbenv/bin:$PATH"
    eval "$(~/.rbenv/bin/rbenv init - zsh)"
    
    # Rubyのビルド依存パッケージをインストール
    sudo apt install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev libgdbm-compat-dev
    
    # 最新安定版のRubyをインストール
    rbenv install $(rbenv install -l | grep -v - | tail -1)
    rbenv global $(rbenv install -l | grep -v - | tail -1)
    
    # Bundlerをインストール
    gem install bundler
    rbenv rehash
fi

# ----------------------------------------
# Dockerのインストール
# ----------------------------------------
echo -e "${YELLOW}Dockerをインストールしています...${NC}"
# すでにDockerがインストールされているか確認
if ! command -v docker >/dev/null 2>&1; then
    # GPGキーのインストール
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
    # リポジトリの設定
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # Dockerパッケージのインストール
    sudo apt-get update
    sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    # ユーザーをdockerグループに追加
    sudo groupadd docker 2>/dev/null || true
    sudo usermod -aG docker $USERNAME
    
    # Docker自動起動を有効化
    sudo systemctl enable docker
    sudo systemctl start docker
fi

Discussion