2016年3月22日火曜日

systemd-bootを使ってみる

systemd 220-2から、systemdにsystemd-bootというブートローダーが組み込まれていたようなので使ってみます。

2016年3月15日火曜日

Arch LinuxにPlasmaデスクトップとfcitx-mozcを導入

Arch LinuxにPlasmaを入れます。


ディスプレイマネージャーのインストール

$ sudo pacman -S sddm


Plasmaデスクトップのインストール

$ sudo pacman -S plasma-meta


KDEアプリケーションのインストール

$ sudo pacman -S kde-applications-meta



KDEアプリケーションの日本語化
$ sudo pacman -S kde-l10n-ja


fcitxのインストール

$ sudo pacman -S fcitx



fcitxの統合
$ sudo pacman -S fcitx-im
All を選択

GTK2、GTK3、Qt4、QT5用のモジュールが入ります。無くても一応使えますが変換が確定されるまで文字が入力されません。



mozcのインストール
$ sudo pacman -S fcitx-mozc

レポジトリにfcitx-mozcしかないのでfcitxを使います。



fcitxの有効化
$ sudo vi /etc/xprofile

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx



Plasmaとの統合
$ sudo pacman -S kcm-fcitx


これでKDEシステム設定からfcitxの設定ができるようになります。



LibreOfficeなどのKDE,Qt以外のアプリケーションでも未確定文字が表示されるように設定します。

KDEシステム設定地域の設定入力メソッドアドオンの管理拡張オプションの表示をチェック→Fcitx XIM Frontendの設定→XIMでOn The Spotスタイルを使うにチェックを入れ、fcitxを再起動


フォント

Plasma 5.5からデフォルトフォントがNoto FontになったのでNoto Fontsをインストールします。


SDDMの有効化

$ sudo systemctl enable sddm


再起動

$ sudo systemctl reboot

SDDMが起動するはずなのでログインするとPlasmaが起動します。


テーマの統一

DM、GTK、QtでテーマがバラバラなのでPlasma標準のBreezeで統一します。



テーマが入ってなかったらインストール
$ sudo pacman -S breeze breeze-gtk breeze-icons breeze-kde4



SDDMテーマ
KDEシステム設定→ワークスペース→起動と終了→Login Screen(SDDM)
    テーマ: Breeze
    詳細設定→カーソルテーマ: Breeze



GTKアプリケーションテーマ
KDEシステム設定→外観→アプリケーションスタイル→GNOMEアプリケーションスタイル(GTK)→
    GTK Themes→
       Select a GTK2 Theme: Breeze
       Select a GTK3 Theme: Breeze
       Font: Noto Sans 10
    Icon Themes→
       Icon theme: Breeze
       Fallback theme: Breeze

Qtアプリケーションテーマ
$ qtconfig-qt4

外観タブ→
    GUIスタイル: Breeze
フォントタブ→
    デフォルトフォント: Noto Sans Regular 10



これでGTKアプリケーションでもQtアプリケーションでも見た目での違いがほとんど分からなくなりました。

2016年3月7日月曜日

fontconfigの設定

Linuxでのフォント設定はfontconfigによって行われています。

fontconfigは、自動でその文字を表示できるようにフォントを選んでくれるのですが、フォントが複数ある場合自分の思うようにフォントが表示されないことがあります。

今回は、Noto Fontsをシステム標準のフォントに設定します。



一般的にはテーマからフォントの指定などを行うのが一般的だと思いますが、中にはそれに従わないアプリケーションもあります。

例えば、Firefoxではインターフェイスはデスクトップ環境のフォント設定に従うのですが、Webページのほうはフォントが指定されています。





Linuxでは一般的に明朝体にserif,ゴシック体にsans,等幅フォントにmonospaceが初期設定になっています。

fontconfigは、日本語フォントがあるとこれらのフォントを置き換えてくれます。

fontconfigはVLゴシックやipaフォントなどのメジャーなフォントは自動で標準のフォントに設定してくれるようになっていますが、Noto Fontsなどの新しいフォントやマイナーなフォントは自動では設定してくれません。

その、優先順位は/etc/fonts/font.avail/65-nonlatin.conf に記述されており、fontconfigはそれに従います。

この順序は今のところ、日本語フォントだけを抽出すると MSゴシック>梅ゴシック>VLゴシック>IPAMona>IPAゴシック>さざなみゴシック>東風ゴシック というようになっています。

このファイルを直接書き換えても良いのですが、fontconfigのアップデートで書き換えられてしまったり、アップデートに追従できなくなる恐れがあります。

fontconfigの設定を手動で書き換えたい場合、 /etc/fonts/local.conf にその内容を記述することで有効化することができます。フォント設定として、local.conf は最優先されます。

local.conf に、serifはNoto Serif、sansはNoto Sans、monospaceはNoto Mono、と明示的に設定することで、アプリケーションごとに統一したフォントを利用できます。



Noto Fontsのインストール
$ cd /tmp
$ wget https://noto-website-2.storage.googleapis.com/pkgs/Noto-hinted.zip
$ unzip -d /usr/share/fonts/Noto-hinted Noto-hinted.zip
$ sudo chmod u+rw go+r /usr/share/fonts/Noto-hinted/*
$ fc-cache -vf



設定ファイルの作成

システム全体の設定をするなら /etc/fonts/local.conf 、ユーザーごとなら ~/.config/fontconfig/fonts.conf を編集します。フォントの設定をしていないならファイルがないので新規に作成します。
$ sudo vi /etc/fonts/local.conf

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
    <alias>
        <family>serif</family>
        <prefer>
            <family>Noto Serif</family>
        </prefer>
    </alias>
    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Noto Sans</family>
            <family>Noto Sans CJK JP</family>
        </prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer>
            <family>Noto Sans Mono CJK JP</family>
        </prefer>
    </alias>
</fontconfig>

この設定だと、sansは Noto Sans→Noto Sans CJK JP→fontconfigに任せる というように参照してくれます。




Noto Fontsは大丈夫ですが、IPAフォントなどで日本語フォントの表示が汚い場合、ヒンディングと埋め込みビットマップの無効化を行う必要があります。

/etc/fonts/conf.avail/内に設定ファイルがいろいろあるので、/etc/fonts/conf.d/内に設定ファイルのシンボリックリンクを置くことで有効化されます。



最終的にlocal.confはこうなりました。
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
    <match target="font">
        <edit mode="assign" name="antialias">
            <bool>true</bool>
        </edit>
        <edit mode="assign" name="embeddedbitmap">
            <bool>false</bool>
        </edit>
        <edit mode="assign" name="hinting">
            <bool>true</bool>
        </edit>
        <edit mode="assign" name="hintstyle">
            <const>hintnone</const>
        </edit>
        <edit name="hintstyle" mode="assign">
            <const>hintfull</const>
        </edit>
        <edit mode="assign" name="lcdfilter">
            <const>lcddefault</const>
        </edit>
        <edit name="lcdfilter" mode="assign">
            <const>lcddefault</const>
        </edit>
        <edit mode="assign" name="rgba">
            <const>rgb</const>
        </edit>
    </match>
    <alias>
        <family>serif</family>
        <prefer>
            <family>Noto Serif</family>
        </prefer>
    </alias>
    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Noto Sans</family>
            <family>Noto Sans CJK JP</family>
        </prefer>
    </alias>
    <alias>
        <family>monospace</family>
        <prefer>
            <family>Noto Sans Mono CJK JP</family>
        </prefer>
    </alias>
</fontconfig>






ファイル保存後リアルタイムに反映されるはずですが、反映されない場合は再起動します。