基礎的なLinuxカスタマイズ

アプリケーション

アプリケーションは、ディストリビューションのパッケージマネージャに無数にあります。他OSで使われるツールの代替ソフトには以下のようなものがあります。

  • ブラウザ: Chrome, Chromium, Firefoxがあります
  • オフィススイート: LibreOfficeです。オンラインツールで支障なければ Google GSuiteは他OSと同様に動作します。Microsoft OfficeやMacのiWorkはありません

また、Webサービスについては、OS間の違いはほぼありません。

決定的に動作しないものは、eTaxソフトやeLTaxなどの政府系アプリケーションです。現状、Windowsに深く依存しており、MacやLinuxには解決がありません。eTaxソフトはWine7である程度動きますが、通達の改定に伴う帳票のインストーラが起動しません。

オープンソースの開発ツールについては、x86/x64 Linuxであれば基本的に最新のツールを利用できるでしょう。MacOSのように奇妙なBSD系バージョンということがなく、kubernetes/dockerもネイティブ動作する点は最大のメリットです。

キー置換

Debian, Ubuntuでは、/etc/default/keyboardXKBOPTIONSに設定すると、X/wayland/コンソールを問わず有効に動作します。

XKBOPTIONS="ctrl:nocaps"

CapsLockをCtrlにするまとめに他にも多彩な設定方法が紹介されていて参考になります。

LinuxはControlキーを多用するため、使いやすい位置にあることが重要です。キーボード配列は製品ごとに多彩ですが、CapsLockはほぼ"A"の左にあるため、この設定でCLIキー操作に統一感が出ます。

Wayland向けの複雑なカスタマイズ

Capsの機能変更程度であれば、XKBOPTIONSで足りますが、それ以上にカスタマイズするにはキーリマップツールを使います。
各種ディストリビューションでWaylandが普及しつつありますが、Wayland向けのキーリマップはこれといってデファクトスタンダードがないようです。

ソリューションの1つとして xremapをsystemdから起動すると動作します。
GitHubのReleasesページから環境別(Gnome/Sway/X11/ほか)のバイナリをダウンロードして、PATHのとおったディレクトリに置きます。

systemdのユニットファイルは 各ユーザー向けのサンプルをもとに作成し、~/.config/systemd/user/xremap.serviceに置きます。

[Unit]
Description=xremap

[Service]
KillMode=process
ExecStart=/usr/bin/xremap /home/<user>/.xremap
ExecStop=/usr/bin/killall xremap
Restart=always
#Environment=DISPLAY=:0.0

[Install]
WantedBy=graphical.target

なお、この方法で起動するには、あらかじめ Dynamic bindingのOption 2で紹介されている権限追加が必要です。 ~/.xremapの書式は、GitHubに掲載されているconfig.ymlに従います。CapsLockをCtrlに替える設定は以下の記述で動作しています。

modmap:
- remap:
    CapsLock: Control_L

ユーザー向けユニットはsystemctl --userで操作できます。

$ systemctl --user enable xremap

IME

fcitx5-mozcまたはibus-mozcが Wayland/X11 で動作します。
fcitxには、fcitx5とfcitxがありますが、Wayland対応はfcitx5が必要です。

Ubuntuの場合、「設定」->「地域と言語」で設定できます。入力ソースは複数選べます。この設定の反映には再ログインが必要です。

アプリごとに入力言語を分ける

「ブラウザでは頻繁に日本語を入力するが、ターミナルはほぼ直接英語」というようなケースでは、アプリごとに入力言語状態が分かれている必要があります。

これは、たとえばiBusの設定ツールで「Advanced」->「Share the same input method among all applications」をオフにすると可能です。
その場合、iBusのInput Methodには「日本語 - Mozc」と「英語 - English(US)」のように、必要な言語モードを有効にする必要があります。

Mozcにも複数の入力モードがあるのが分かりにくいポイントです。
Mozcの入力モードは全アプリで共有しているため、Mozc側は「ひらがな」に固定しておき切り替え操作しないようにします。

Mozcのデフォルトモードはconfigの active_on_launchで指定できます。
このconfigが導入されたバージョンはUbuntu22.10以降に含まれます。以前のバージョンの場合、Mozcのリビルドが必要です。

Mozcの設定は「Mozcの設定」アプリで行えます。ステータスバーの入力モード欄の「ツール」からも起動できます。
「キー設定の選択」欄でキーバインドを編集します。コマンドの「直接入力/IMEを有効化」「入力文字列なし/IMEを無効化」に任意のキーバインドを追加することでiBusと干渉しない設定にできます。

GUIで設定するもの

アプリ、ウインドウ操作

マウス操作する範囲では、GnomeやKDEなどのデフォルト設定でさしつかえなく操作できます。
キーボードショートカットで起動するアプリや入力キーなどは、希望どおりでないケースが多いでしょう。 キーバインドの設定についても、Gnome/KDEの設定ツールに統合されています。

アプリランチャーは標準の起動メニューから選択のうえ設定する形式になっているため、自分でビルドしたツールをインストールする場合には、まずアプリケーションメニューに追加します。

デバイス

初期のディストリビューションではconfigや接続スクリプトなどをすべて作成する必要がありましたが、以下のようなデバイス類はLinuxでもプラグアンドプレイでGUIから設定可能になっています。

  • WiFi
  • Bluetooth
  • 印刷
  • リムーバブル・ストレージ
  • ディスプレイ接続
  • VPNクライアント

これらは、ドライバが非対応の特殊なチップを避けることがポイントと言えるでしょう。

KDEの描画スケールが狂っている場合

GNOME、KDEとも基本的にはシステム設定ツールに画面描画サイズのスケーリング設定があるはずなのですが、KDEシステム設定のディスプレイとモニタに該当メニューが表示されないケースがありました。
概観->フォントの「フォントのDPIを指定」を手動で変更することで、おおむね表示スケールを調整できます。

日本語ロケール

インストール時に日本語を選択できれば、マルチバイト対応はほぼ問題なくなっていますが、文字化けやIMEの日本語入力が消失する場合はロケールデータが入っていないケースがあります。日本語ロケールは、ja_JP.UTF-8が一般的でしょう。Debianでは、以下のいずれかにja_JP.UTF-8のデータが含まれている必要があります。

  • /usr/lib/locale/ja_JP.UTF-8/
  • /usr/lib/locale/locale-archive(有効なロケール一式をパックしたファイル)

/etc/locale.genの設定を編集してja_JP.UTF-8を有効にしたうえで、 locale-genコマンドを実行すると生成できます。ロケール生成についてはディストリビューションごとに手順はやや異なるでしょう。

フォントについては、 日本語フリーフォントで説明しています。

ターミナルエミュレータ

TrueColorターミナル

ターミナルじたいの色数は、設定で試行錯誤するよりTrueColorに対応しているアプリをインストールして使うと良いでしょう。gnome-terminalやxfce4-terminal, alacrittyなどはTrue Colorに対応しています。

TrueColor対応のはなしに網羅的な解説があり、参考になります。Tmuxを使う場合、.tmux.confに追加設定が必要になるでしょう。set | grep TERMを実行すると$TERMの値を確認でき、$TERM=alacrittyの際、以下の設定でtmux上でもTrueColorになりました。

set-option -g default-terminal "screen-256color"
set-option -ga terminal-overrides ',alacritty:Tc'

また一部の日本語表示が崩れるケースについては、 ターミナルの文字重複を緩和するで解説しているとおりフォント設定で解決する手があります。

Alacrittyのタブ拡張

Alacrittyがタブを提供しない方針であることは広く知られた事実です。
X Windowの環境では、タブだけを提供するツールtabbedでラップすることで、外側にタブを追加できます。tabbedはDebian/Ubuntuでは suckless-tools パッケージが提供しています。

$ tabbed -c alacritty --embed

tmuxと似たような意図ですが、tmuxがリモートとローカルで動作する構成では、キーバインドがネストしてしまう(操作は可能)ため、ローカルを他のツールにすると干渉を回避できます。

tmuxをデフォルトシェルに

tmuxは単一画面で複数のコンソールセッションを提供します。
また、OSC52に対応したターミナルを使うと、コピーモードでコピーした文字列がOSのクリップボードに入り、便利です。

ターミナルをtmux上で利用する場合、デフォルトシェルとしてtmuxを指定する手があります。/etc/passwdのユーザー設定でtmuxのPATHを指定することで変更できます。また、Xfceなどのウインドウマネージャでは、GUIのユーザー設定でログインシェルを選択できます。

Alacrittyのようにマルチタブを提供していないターミナルエミュレータを機能補完できます。
tmux上で実際に利用するシェルは、tmux.confに設定します。

set-option -g default-shell "/bin/bash"
中馬崇尋
Chuma Takahiro