錯誤試行

PCや生活の試行錯誤の成果を報告するブログ

Ubuntu16.04 LTSを自作PC(Skylake世代)にインストール

※↑ もくじジェネレータ for はてダ(一部改変) で自動生成

インストールの経緯

マザーボードを変えるなどして永らく使用していた自作PCが突然フリーズしたりPOST画面で止まるなどといった症状が頻発するようになった。これまではPC内部のダスター清掃を行って改善していたが、ここに至って症状の改善がみられずマザーボードの寿命と考えられたため、今回自作PCを新規に作成の上OSも最近のUbuntuに更新することにした。

バージョン選択

安定使用を考えたいことから、当初Ubutu14.04LTSの導入を考えたが現行のSkylake世代に対応しているのはUbuntu16.04 LTSからである模様*1。試しにUbuntu14.04LTSをインストールしたところ、GPUの能力が引き出せず最低限のグラフィック描画能力となってしまい、また音も鳴らない。このためUbuntu16.04LTS以外に選択の余地はないと考えられた。

インストール

  • UEFIインストールについて
  • インストールの最中に「UEFIインストールを強行しますか」と出るが「戻る」を選択してUEFIインストールは行なわないこととした。UEFIインストールすると、GPTパーティションとなって、このディスクから起動する際に、従来のGRUB時代のシステムが起動メニューに表示されず起動できなくなってしまうため。
    UEFIインストールするメリットとしては起動システムに2TB以上のパーティションが設定できる点。起動システム以外の(データ用などの)ストレージについては従来のGRUBインストールでも2TB以上のパーティションが設定できる。

UI関連

デスクトップ環境はデフォルトのUnityのまま。Ubuntu11.10でUnityが導入され使い始めた当初は違和感があったが、長く使い続けるにつれ特に不満を感じなくなった。

  • ハイコントラストテーマの適用
    標準のテーマは白っぽくて目が痛いので、配色がハイコントラストのテーマを使用したいが、システム設定→外観→テーマを確認してみると、「黒」地に「白」ハイコントラストの配色が存在しない。そこでUbuntu12.04で使用していたハイコントラストのテーマを流用することにする。
    Ubutu12.04の/usr/share/themes/HighContrastInverseと/usr/share/icons/HighContrastInverseを、16.04の/usr/share/themes/と/usr/share/icons/にそれぞれコピーし、gnome-tweak-toolパッケージを入れて概観→テーマ→GTK+で「HighContrastInverse」を指定することで、ハイコントラストのテーマが適用される。

    (追記 2020/6/1)
    ハイコントラストのテーマを適用すると、Firefox Quantumでリンクの配色が変更できなくなる。未訪問が白、訪問済が緑で固定となって、未訪問の場合にリンクかどうかが分かりにくくなる。配色を変更するには、userContent.cssまたは拡張機能Stylishを使って、スタイルシートから設定する必要がある。
    userContent.cssの設定についてはユーザスタイルシートによるカスタマイズ(1) - えむもじらを参照。
    cssについては以下のように設定する。

    a:link {
    color: green !important;
    }
    a:visited {
    color: red !important;
    }
    


  • 半透明化
    compizconfig-settings-manager,compiz-pluginsパッケージをインストールし、compizconfig-settings-managerを「ccsm」で起動、アクセシビリティ→不透明度・明度・彩度を選び、不透明度タブのWindow Specific Settingsからウィンドウにany,ウィンドウの値に80のように設定する。ウィンドウを指定して透明度を変えたい場合はウィンドウクラスを調べ、ウィンドウにclass=Firefoxのように指定する。ウィンドウクラスを調べるにはwmctrlパッケージをインストールし、端末からwmctrl -xlを実行する。ウィンドウの値は下げるほど透明に近くなる。決してウィンドウにanyを指定したままウィンドウの値を0にしてはいけない(何も見えなくなる)。

  • オーバーレイスクロールバーの無効化
    オーバーレイスクロールバーはどうも使い勝手が悪く感じる。以下を実行することで無効化できるとのこと。

     gsettings set com.canonical.desktop.interface scrollbar-mode normal
    


  • タスク切り替え
    タスク切り替えでアプリ毎にウィンドウがまとめられてしまい、2つ以上のウィンドウを持つアプリの場合にウィンドウ切り替えがクイックにできないのが不便。
    ccsm→ウインドウマネジメント→Static Application Switcher(or アプリケーションスイッチャー)を有効にすると、アプリが同じでも通常通りにウィンドウ単位での切り替えが可能になる。

キーカスタマイズ

何はともあれキーカスタマイズ。

  • キーバインド変更(Emacsキーバインド)
  • UIをEmacsキーバインドで操作できるようにする。 gconf-editor→/desktop/gnome/interface/gtk_key_themeをEmacsにする。
  • xkbで無変換キーをALTに設定
    キーカスタマイズと言えばxmodmapだったが、Ubuntu16.04では入力システムがiBusに変わったためにxmodmapがうまく動作しないらしく、Ubuntu16.04で任意のキーの入れ替え - 仙豆のレシピにて、xmodmapでキーの入れ替えを設定しても日本語入力のON/OFFを一度でもするとxmodmapで設定したものが消えるという不具合が報告されていた。
    また、xkbでキーバインドを変更する – Happy My Lifeによると「Xmodmapは事実上の廃止状態で、Ubuntu 13.10以降ではxkbを利用するのが正攻法」とのことで設定方法が示されていた。以下サイトより引用。

    1. ~/.xkb/keymapフォルダにベースとなる設定ファイルを格納
    2. ~/.xkb/symbolsフォルダに変更するキーバインドを定義したファイルを格納
    3. 起動時に設定が反映されるように設定

    紹介の手順に従って~/.xkb/keymap/以下にベースのファイルを作成し、「無変換」を「右ALT」にしたいので~/.xkb/symbols/(適当な名前のファイル)を以下のように設定した。

    partial modifier_keys
    xkb_symbols "swapkeys" {
      replace key <MUHE> { [ Alt_R ] };
    };
    


    • 副作用1(タスクスワップの不具合)
    • 当初、置き換えキーに左ALT(Alt_L)を指定したところ、Alt+Tabでタスクを切り替えするときにALTを離しても押したままの状態になって、再度ALTを押し直さないとタスク切り替えのポップアップウィンドウが消えないという煩わしい状態になった。この不具合は、xkbでの置き換えキーを右ALT(Alt_R)に指定することで改善した。
    • 副作用2(EmacsとUnityのHUD)
    • EmacsでAlt-vを(上記xkbのカスタマイズで「無変換-v」)押してPageUpした際に、すぐAltから手を離すとUnityのコマンド入力のHUDが表示されるという煩わしい状態になった。ランチャーにはGnome doといったランチャーアプリやコマンドラインを使うので、システム設定→キーボード→ショートカット→Launchers→「HUDを表示するキー」を無効に変更した。この不具合は上述のxkbによるキーカスタマイズをしていなければ発生しない。 以下の「ワンショットモディファイヤの実現」で使用している、「窓使いの憂鬱」を使ってもxkbと同様のキーカスタマイズが可能だと思われるが試していない。
  • 窓使いの憂鬱でワンショットモディファイヤを実現
    ワンショットモディファイヤとは、「そのキーを単体で押す(正確には押して離す)とそのキー本来の働きをするが、他のキーと組み合わせて押すとモディファイヤキーとして働く」という機能で、モディファイヤキーとはCtrl・Shift・Altキーのこと。日本語入力にSKKを使用しているユーザーはShiftキーを頻繁に押すことになるため、この機能は是非導入しておきたい。
    Ubuntuでワンショットモディファイヤを実現するには、「私家版窓使いの憂鬱(Linux対応版)」を使うと簡単に実現できそうである。Ubuntu 14.04にMozcと窓使いの憂鬱をインストールする - Symfowareで、Ubuntu14以降で「私家版窓使いの憂鬱(Linux対応版)」を使う方法と自動起動させる設定が紹介されている。Ubuntu16でもこの方法で動作するので適用する。
    リンク先の手順の通り窓使いの憂鬱をダウンロードして、以下を実行する。

    ./configure --with-boost-libdir=/usr/lib/x86_64-linux-gnu/
    

    makeに失敗するが、msgstream.hの「setp」を「this->setp」で全置換すればmakeが通るとのこと。
    セミコロンをShiftキーのワンショットモディファイヤとするには、~/.mayuに以下のように記述する。

    include "109.mayu"
    keymap Global
    mod shift += !!Semicolon
    


  • iBusでのxkbカスタマイズの無効化問題
    iBusでは入力メソッドを切り替えると.xmodmapや.xkbが無効になってしまう不具合がある。
    今回はiBusを呼び出す際のシェルスクリプトで対応した(以下の「日本語入力」中「iBusの改悪について」を参照)が、この不具合への対応がUbuntu 15.04: キーボードのカスタマイズ設定 - 児童小銃Ubuntu 16.04: キーボードのカスタマイズ設定 - 児童小銃)で紹介されていたので、再設定が必要になったときに確認してみたい。

日本語入力

    日本語入力には慣れ親しんだSKKを使用したい。
  • 入力メソッドにscimが使えない
  • 長年愛用してきたインプットメソッドのscimだったが、Ubuntu16では直接入力モードに入ることができない不具合があり使えなかった。同様にfcitxもうまく入力ができなかったのでiBusを使うこととした。
  • 使いにくいiBusをカスタマイズ
  • これまで使ったことの無かったiBusというインプットメソッドだが、Ubuntu16.04でインストールできるiBus1.5では「IMEの直接入力と日本語入力の切り替え」という概念が無くなり、「IMEの種類そのものを切り替える」という考え方になったとのことで、従来のような「日本語入力のオン/オフ」という操作が存在しない。
    標準のままだと日本語入力と直接入力との切り替えに支障があるようで、グローバルホットキーにシェルスクリプトを設定することで対応する方法がiBus1.5でも快適にIMEをON・OFFする 〜VimやVimperatorを念頭に〜 | PCと遊ぶ日々の記録に紹介されていた。
    これを参照して変換キーと無変換キーに、以下の内容のシェルスクリプトを設定することで対応することとした。また、iBusで入力メソッドを切り替えると.xkbの設定が無効になる不具合もあったため、IMEのオンオフを切り替えるたびに設定し直すようにした(2行目)。
    imeon.sh(変換キーに設定)

    ibus engine skk # ibus-skkの有効なキーボードレイアウトを選択
    xkbcomp -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY # xkb設定を再読み込み
    

    imeoff.sh(無変換キーに設定)

    ibus engine xkb:jp::jpn  # 日本語変換が有効でない日本語レイアウトを選択
    xkbcomp -I$HOME/.xkb $HOME/.xkb/keymap/mykbd $DISPLAY # xkb設定を再読み込み
    

  • アプリケーションごとにIMEの状態を保持する
    iBusIMEの状態がすべてのアプリで共有され、アプリごとにIMEの状態を保持してくれない。これでは不便。
    システム設定→テキスト入力→使用する入力ソースに「日本語(SKK)(IBus)」「日本語」のように登録しておき、「ウィンドウごとに異なるソースを使用する」→「新しいウィンドウでは現在の入力ソースを使用する」を選んでおく。これによりウィンドウ別で「IMEの状態を保持」することができる。
    IMEの状態をオフにしておきたいアプリ(Emacsなど)では「次のソースへ切り替え」に指定したショートカットキーを押して入力ソースを「日本語」にする。が、面倒なのでwmctrlでactivateにした上で、上のimeoff.shを呼び出すグローバルホットキーを設定している。

アプリ

参照サイト

記事中の情報は以下のサイトなどから得た。