21 グラフィカルユーザインタフェース #
SUSE Linux Enterprise Serverには、X.orgサーバとGNOMEデスクトップが含まれています。この章では、すべてのユーザのグラフィカルユーザインタフェースの環境設定について説明します。
21.1 Xウィンドウシステム #
X.orgサーバは、X11プロトコルを実装するための事実上の標準です。Xはネットワークベースであり、あるホスト上で起動されたアプリケーションを、任意のネットワーク(LANやインターネット)を介して接続されている他のホスト上で表示できるようにします。
通常、Xウィンドウシステムに設定は必要ありません。ハードウェアは、Xの起動時に動的に検出されるため、xorg.conf
の使用はお勧めしません。それでも、Xの動作を変更するためにカスタムオプションを指定する必要がある場合は、/etc/X11/xorg.conf.d/
にある設定ファイルを変更できます。
IBM Zには、X.Orgがサポートする入出力デバイスはありません。そのため、このセクションで取り上げられている設定手順は使用できません。IBM Zの詳細については、第5章 「IBM ZおよびLinuxONEでのインストール」を参照してください。
X11に関する詳細情報を入手するには、xorg-docs
パッケージをインストールしてください。man 5 xorg.conf
には、手動設定の形式に関する詳細情報が記載されています(必要な場合)。X11開発の詳細情報は、プロジェクトのホームページhttp://www.x.orgで参照できます。
ドライバは、xf86-video-*
パッケージにあります(たとえば、xf86-video-ati
)。パッケージで配布されるドライバの大半については、関連するマニュアルページに詳細が記載されてます。たとえば、ati
ドライバを使用する場合は、man 4 ati
でドライバの詳細を参照できます。
サードパーティのドライバ情報は、/usr/share/doc/packages/<package_name>
に記載されています。たとえば、x11-video-nvidiaG04
の場合、パッケージのインストール後は、/usr/share/doc/packages/x11-video-nvidiaG03
でマニュアルを参照できます。
21.2 フォントのインストールと設定 #
Linuxのフォントは次の2つに分類できます。
- アウトラインフォントまたはベクトルフォント
グリフの形状に関する描画命令として数学的記述が含まれています。このため、品質を損なうことなく各グリフを任意のサイズに拡大縮小できます。このようなフォント(グリフ)を使用するには、数学的記述をラスタ(グリッド)に変換する必要があります。このプロセスを「フォントのラスタライズ」と呼びます。「フォントヒンティング」 (フォント内に組み込まれている)は、特定のサイズのレンダリング結果を向上および最適化します。ラスタライズとヒンティングは、FreeTypeライブラリによって行われます。
Linuxで一般的な形式は、PostScript Type 1とType 2、TrueType、およびOpenTypeです。
- ビットマップフォントまたはラスタフォント
特定のフォントサイズ用にデザインされたピクセルの配列で構成されます。ビットマップフォントは非常に高速でレンダリングも容易です。ただし、ベクトルフォントと比較した場合、ビットマップフォントは品質を損なわずに拡大縮小することはできません。そのため、これらのフォントは通常、複数のサイズで配布されます。現在でも、Linuxコンソールや一部の端末ではビットマップフォントが使用されています。
Linuxでは、PCF (Portable Compiled Format)またはBDF (Glyph Bitmap Distribution Format)が最も一般的な形式です。
これらのフォントの外観は、主に次の2つの側面による影響を受けます。
適切なフォントファミリを選択する
ユーザが読みやすい結果を実現するアルゴリズムでフォントをレンダリングする
最後の点は、ベクトルフォントにのみ関係があります。上述の2つの点は主観に大きく左右されますが、何らかのデフォルト値を作成する必要があります。
Linuxのフォントレンダリングシステムは、異なる関係を持つ複数のライブラリで構成されます。基本のフォントレンダリングライブラリはFreeTypeで、サポートされている形式のフォントグリフを最適化されたビットマップグリフに変換します。レンダリングプロセスはアルゴリズムとそのパラメータによって制御されます(特許の問題が絡む場合があります)。
FreeTypeを使用するすべてのプログラムまたはライブラリは、Fontconfigライブラリを参照する必要があります。このライブラリは、ユーザとシステムからフォント設定を収集します。ユーザが自分のFontconfig設定を修正した場合、このような変更によってアプリケーションはFontconfig対応になります。
アラビア語、ハン語、またはパスパなどのスクリプトおよびその他の高レベルのテキスト処理に必要な、より洗練されたOpenType形成は、HarfbuzzまたはPangoを使用して行われます。
21.2.1 インストール済みフォントの表示 #
システムにインストールされているフォントの概要を表示するには、rpm
コマンドまたはfc-list
コマンドを使用します。どちらのコマンドでも適切な回答が得られますが、システムおよびユーザの設定によっては異なるリストが返されることがあります。
rpm
システムにインストールされている、フォントが格納されたソフトウェアパッケージを参照するには、
rpm
を起動します。tux >
rpm -qa '*fonts*'すべてのフォントパッケージがこの式を満たす必要があります。ただし、このコマンドは、
fonts-config
のような誤検知を返す場合があります(これはフォントではなく、フォントも含みません)。fc-list
アクセスできるフォントファミリ、およびそれらのフォントがシステムまたはホームのどちらにインストールされているかに関する概要を参照するには、
fc-list
を起動します。tux >
fc-list ':' family注記:fc-list
コマンドfc-list
コマンドは、Fontconfigライブラリのラッパーです。Fontconfig (正確にはそのキャッシュ)に対して、多くの有用な情報を問い合わせることができます。詳細については、man 1 fc-list
を参照してください。
21.2.2 フォントの表示 #
インストールされているフォントファミリのデザインを知りたい場合は、ftview
コマンド(ft2demos
パッケージ)を使用するか、http://fontinfo.opensuse.org/にアクセスします。たとえば、FreeMonoフォントを14ポイントで表示するには、ftview
を次のように使用します。
tux >
ftview 14 /usr/share/fonts/truetype/FreeMono.ttf
さらに詳しい情報が必要な場合は、http://fontinfo.opensuse.org/にアクセスして、サポートされているスタイル(通常のフォント、太字、斜体など)と言語を参照します。
21.2.3 フォントの問い合わせ #
パターンを指定した場合にどのフォントが使用されるかを問い合わせるには、fc-match
コマンドを使用します。
たとえば、インストール済みのフォントをパターンに含めると、fc-match
は、ファイル名、フォントファミリ、およびスタイルを返します。
tux >
fc-match 'Liberation Serif'
LiberationSerif-Regular.ttf: "Liberation Serif" "Regular"
目的のフォントがシステムに存在しない場合は、Fontconfigの照合ルールが実行され、利用可能なフォントの中で最もそのフォントに似ているフォントを見つけようとします。つまり、要求は次のように置換されます。
tux >
fc-match 'Foo Family'
DejaVuSans.ttf: "DejaVu Sans" "Book"
Fontconfigは「エイリアス」をサポートしており、名前は別のファミリ名に置換されます。代表的な例は、「sans-serif」、「serif」、「monospace」などの汎用名です。これらのエイリアスは、実際のファミリ名で置換することも、ファミリ名の優先リストで置換することもできます。
tux >
for font in serif sans mono; do fc-match "$font" ; done
DejaVuSerif.ttf: "DejaVu Serif" "Book"
DejaVuSans.ttf: "DejaVu Sans" "Book"
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
現在インストールされているフォントによっては、使用中のシステムでの結果は異なる場合があります。
Fontconfigは、指定された要求に従って「常に」、できる限り類似性の高い実際のファミリを返します(少なくともファミリが1つインストールされている場合)。「類似性」は、Fontconfigの内部メトリクスと、ユーザまたは管理者のFontconfig設定に依存します。
21.2.4 フォントのインストール #
新しいフォントをインストールする主な方法は次のとおりです。
*.ttf
や*.otf
などのフォントファイルを既知のフォントディレクトリに手動でインストールする。システム全体で使用できるようにする場合は、標準のディレクトリ/usr/share/fonts
を使用します。自分のホームディレクトリにインストールする場合は、~/.config/fonts
を使用します。標準のディレクトリ以外を使用する場合は、Fontconfigで別のディレクトリを選択できます。Fontconfigにディレクトリを認識させるには、
<dir>
要素を使用します。詳細については、21.2.5.2項 「Fontconfig XMLの詳細」を参照してください。zypper
を使用してフォントをインストールする。SUSEディストリビューションであっても、M17N:fontsリポジトリであっても、多くのフォントはすでにパッケージとして利用可能です。次のコマンドを使用して、リポジトリをリストに追加します。たとえば、SLE 15にリポジトリを追加するには、次の手順に従います。tux >
sudo
zypper ar http://download.opensuse.org/repositories/M17N:/fonts/SLE_15/FONT_FAMILY_NAMEを検索するには、次のコマンドを使用します。
tux >
zypper se 'FONT_FAMILY_NAME*fonts'
21.2.5 フォントの外観の設定 #
レンダリングメディアおよびフォントサイズによっては、満足できる結果が得られないことがあります。たとえば、近年の平均的なモニタの解像度は100dpiであるため、ピクセルが大きくなりすぎ、グリフが綺麗に表示されません。
アンチエイリアス(グレースケールスムージング)、ヒンティング(グリッドフィッティング)、またはサブピクセルレンダリング(1方向の解像度を3倍にする)など、低解像度に対応するアルゴリズムはいくつもあります。これらのアルゴリズムはフォントの形式によっても異なることがあります。
サブピクセルレンダリングは、SUSEディストリビューションでは使用されません。FreeType2はこのアルゴリズムをサポートしていますが、このアルゴリズムは、2019年末に有効期限が切れる複数の特許で保護されています。したがって、サブピクセルレンダリングがコンパイルされたFreeType2ライブラリがシステムにない限り、Fontconfigのサブピクセルレンダリングオプションを設定しても効果はありません。
Fontconfigでは、レンダリングアルゴリズムをすべてのフォントに対して個別に選択することも、フォントのセットに対して選択することもできます。
21.2.5.1 sysconfig
によるフォントの設定 #
SUSE Linux Enterprise Serverには、Fontconfig上にsysconfig
層があります。これは、フォント設定を試してみる場合の開始点として便利です。デフォルト設定を変更するには、設定ファイル/etc/sysconfig/fonts-config
を編集します(またはYaST sysconfigモジュールを使用します)。ファイルの編集後、fonts-config
を実行します。
tux >
sudo
/usr/sbin/fonts-config
アプリケーションを再起動して結果を表示します。次の点に注意してください。
一部のアプリケーションでは再起動は必要ありません。たとえば、Firefoxは随時Fontconfig設定を再読み込みします。新たに作成したタブや再ロードしたタブには、新しいフォント設定が後で適用されます。
パッケージをインストールまたは削除するたびに
fonts-config
スクリプトが自動的に呼び出されます(呼び出されない場合は、フォントソフトウェアパッケージのバグです)。fonts-config
コマンドラインオプションで、すべてのsysconfig変数を一時的に上書きできます。詳細については、fonts-config --help
を参照してください。
いくつかのsysconfig変数は変更することができます。man 1 fonts-config
またはYaST sysconfigモジュールのヘルプを参照してください。次に、変数の例を示します。
- レンダリングアルゴリズムの使用方法
検討対象:
FORCE_HINTSTYLE
、FORCE_AUTOHINT
、FORCE_BW
、FORCE_BW_MONOSPACE
、USE_EMBEDDED_BITMAPS
、およびEMBEDDED_BITMAP_LANGAGES
- 汎用エイリアスの優先リスト
使用対象:
PREFER_SANS_FAMILIES
、PREFER_SERIF_FAMILIES
、PREFER_MONO_FAMILIES
、およびSEARCH_METRIC_COMPATIBLE
次のリストは設定例を示しています。これは「最も読みやすい」フォント(コントラストが高い)から「最も美しい」フォント(スムージングが強い)の順にソートされています。
- ビットマップフォント
ビットマップフォントを優先させる場合は、
PREFER_*_FAMILIES
変数を使用します。これらの変数については、ヘルプセクションの例に従ってください。これらのフォントは白黒でレンダリングされスムージングされない点、およびビットマップフォントはいくつかのサイズしか用意されていない点に注意してください。次の設定SEARCH_METRIC_COMPATIBLE="no"
を使用して、メトリック互換性主導型のファミリ名の置換を無効にすることを検討します。
- 白黒にレンダリングされるスケーラブルフォント
アンチエイリアスなしでレンダリングされるスケーラブルフォントは、ビットマップフォントと同様の結果になる可能性がありますが、フォントの拡大縮小機能は維持されます。Liberationファミリのような適切にヒンティングされたフォントを使用します。ただし、残念ながら、適切にヒンティングされたフォントは多くありません。この方法を強制するには、次の変数を設定します。
FORCE_BW="yes"
- 白黒にレンダリングされる等幅フォント
等幅フォントは、アンチエイリアスのみを使用せずにレンダリングします。そうでない場合は、デフォルト設定を使用します。
FORCE_BW_MONOSPACE="yes"
- デフォルト設定
すべてのフォントはアンチエイリアスを使用してレンダリングされます。適切にヒンティングされたフォントは「バイトコードインタープリタ」 (BCI)でレンダリングされ、それ以外はautohinter (
hintstyle=hintslight
)でレンダリングされます。関連するsysconfig変数はすべてデフォルト設定のままにします。- CFFフォント
CFF形式のフォントを使用します。現在、FreeType2には数々の点で改良が重ねられており、このフォントは、デフォルトのTrueTypeフォントよりも可読性が高いと考えることができます。
PREFER_*_FAMILIES
の例に従って、このフォントを試してみてください。場合によっては、次の設定を使用して、より濃く太いフォントにできます。SEARCH_METRIC_COMPATIBLE="no"
その理由は、このフォントは、デフォルトでは
hintstyle=hintslight
でレンダリングされているためです。次の設定の使用も検討してください。SEARCH_METRIC_COMPATIBLE="no"
- Autohinterの排他的使用
適切にヒンティングされたフォントに対しても、FreeType2のautohinterを使用します。これにより、太く(場合によっては不鮮明な)、コントラスの低い文字形状になります。これを有効にするには、次の変数を設定します。
FORCE_AUTOHINTER="yes"
ヒンティングのレベルを制御するには、
FORCE_HINTSTYLE
を使用します。
21.2.5.2 Fontconfig XMLの詳細 #
Fontconfigの環境設定のフォーマットは、eXtensible Markup Language (XML)です。ここで取り上げるいくつかの例は、完全なリファレンスではなく概要です。詳しい情報とその他の例については、man 5 fonts-conf
または/etc/fonts/conf.d/
を参照してください。
中央のFontconfig設定ファイルは/etc/fonts/fonts.conf
で、他の例と/etc/fonts/conf.d/
ディレクトリ全体が含まれます。Fontconfigをカスタマイズする場合、変更を挿入できる場所は2つあります。
システム全体の変更.
/etc/fonts/local.conf
ファイルを編集します(デフォルトで空のfontconfig
要素が含まれています)。ユーザ固有の変更.
~/.config/fontconfig/fonts.conf
ファイルを編集します。Fontconfig設定ファイルは、~/.config/fontconfig/conf.d/
ディレクトリに保存します。
ユーザ固有の変更は、システム全体の設定よりも優先されます。
~/.fonts.conf
ファイルには非推奨のマークが付いているため、今後は使用しないことをお勧めします。代わりに~/.config/fontconfig/fonts.conf
を使用してください。
すべての設定ファイルにはfontconfig
要素が必要です。そのため、最小限のファイルは次のようになります。
<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <!-- Insert your changes here --> </fontconfig>
デフォルトのディレクトリでは不十分な場合は、各ディレクトリを指定したdir
要素を挿入します。
<dir>/usr/share/fonts2</dir>
Fontconfigは、「再帰的」にフォントを検索します。
次のFontconfigスニペットでフォントレンダリングアルゴリズムを選択できます(例21.1「レンダリングアルゴリズムを指定する」を参照)。
<match target="font"> <test name="family"> <string>FAMILY_NAME</string> </test> <edit name="antialias" mode="assign"> <bool>true</bool> </edit> <edit name="hinting" mode="assign"> <bool>true</bool> </edit> <edit name="autohint" mode="assign"> <bool>false</bool> </edit> <edit name="hintstyle" mode="assign"> <const>hintfull</const> </edit> </match>
さまざまなフォントプロパティをテストできます。たとえば、フォントファミリ(例を参照)、サイズの間隔、スペーシング、フォント形式などについて、<test>
要素をテストできます。<test>
を完全に破棄した場合、すべての<edit>
要素が各フォントに適用されます(グローバルな変更)。
- ルール1
<alias> <family>Alegreya SC</family> <default> <family>serif</family> </default> </alias>
- ルール2
<alias> <family>serif</family> <prefer> <family>Droid Serif</family> </prefer> </alias>
- ルール3
<alias> <family>serif</family> <accept> <family>STIXGeneral</family> </accept> </alias>
例21.2「エイリアスとファミリ名の置換」のルールは、「優先ファミリリスト」 (PFL)を作成します。要素に応じて異なるアクションが実行されます。
まとめると、スニペットがルール1 - ルール2 - ルール3という順序で記述されている場合、ユーザが「Alegreya SC」を要求すると、表21.1「FontconfigルールからのPFLの作成」で説明されているようにPFLが作成されます。
Fontconfigのメトリクスでは、ファミリ名は、他のパターン(スタイルやサイズなど)に比べて最も高い優先度を持ちます。Fontconfigは、システムに現在インストールされているファミリを確認します。「Alegreya SC」がインストールされている場合、Fontconfigはそれを返します。インストールされていない場合、「Droid Serif」などを要求します。
注意してください。Fontconfigスニペットの順序を変更すると、Fontconfigが異なる結果を返す可能性があります。表21.2「順序を変更したFontconfigルールからのPFL生成結果」を参照してください。
<default>
のエイリアスは、このグループ(インストールされていない場合)の分類または組み込みであると考えてください。この例が示すように、<default>
は常にこのグループの<prefer>
および<accept>
のエイリアスより前に配置する必要があります。
<default>
の分類は、汎用のエイリアスのserif、sans-serif、および等幅に限定されません。複雑な例については、/usr/share/fontconfig/conf.avail/30-metric-aliases.conf
を参照してください。
例21.3「エイリアスとファミリ名の置換」に示す次のFontconfigスニペットは、serif
グループを作成します。このグループのすべてのファミリは、前のフォントがインストールされていない場合、他のフォントを置換できます。
<alias> <family>Alegreya SC</family> <default> <family>serif</family> </default> </alias> <alias> <family>Droid Serif</family> <default> <family>serif</family> </default> </alias> <alias> <family>STIXGeneral</family> <default> <family>serif</family> </default> </alias> <alias> <family>serif</family> <accept> <family>Droid Serif</family> <family>STIXGeneral</family> <family>Alegreya SC</family> </accept> </alias>
優先度は、<accept>
エイリアス内の順序によって決まります。同様に、それよりも強い<prefer>
エイリアスを使用できます。
例21.2「エイリアスとファミリ名の置換」を例21.4「エイリアスとファミリ名の置換」で拡張します。
- ルール4
<alias> <family>serif</family> <accept> <family>Liberation Serif</family> </accept> </alias>
- ルール5
<alias> <family>serif</family> <prefer> <family>DejaVu Serif</family> </prefer> </alias>
例21.4「エイリアスとファミリ名の置換」の拡張された設定では、PFLは次のように展開されます。
同じ汎用名に対して複数の
<accept>
宣言が存在する場合、最後に解析された宣言が「優先」されます。システム全体の設定を作成する場合、可能であれば、ユーザ(/etc/fonts/conf.d/*-user.conf
)の「後」に<accept>
を使用しないでください。同じ汎用名に対して複数の
<prefer>
宣言が存在する場合、最後に解析された宣言が「優先」されます。可能であれば、システム全体の設定では、ユーザの「前」に<prefer>
を使用しないでください。同じ汎用名に対しては、すべての
<prefer>
宣言が<accept>
宣言よりも優先されます。ユーザが<prefer>
だけでなく<accept>
も使用できるようにする場合、管理者はシステム全体の設定で<prefer>
を使用しないようにする必要があります。一方、ユーザは通常<prefer>
を使用するため、これが悪影響を及ぼさないようにする必要があります。また、システム全体の設定の<prefer>
の使用も確認します。
21.3 管理者用のGNOME設定 #
21.3.1 dconf
システム #
GNOMEデスクトップの設定は、dconf
で管理されます。ユーザが個人用設定を変更し、システム管理者がすべてのユーザ用のデフォルト値または必須値を設定することが可能な階層構造のデータベースまたはレジストリです。GNOME 2のgconf
システムの代わりにdconf
が使用されます。
グラフィカルユーザインタフェースでdconfオプションを表示するには、dconf-editor
を使用します。コマンドラインで設定オプションにアクセスして変更を行うには、
dconf
を使用します。
GNOME Tweaks
ツールは、通常のGNOME設定以外の追加の設定オプション用の使いやすいユーザインタフェースを提供します。このツールは、GNOMEアプリケーションメニューから、またはコマンドラインからgnome-tweak-tool
を使用して起動できます。
21.3.2 システム全体の設定 #
グローバルdconf
設定パラメータは、/etc/dconf/db/
ディレクトリで設定できます。これには、GDMの設定やユーザ用の特定の設定オプションのロックが含まれます。
例として次の手順を使用し、システム全体の設定を作成します。
/etc/dconf/db/
内に.d
で終わる新しいディレクトリを作成します。このディレクトリには、設定オプションを含む任意の量のテキストファイルを格納することができます。この例では、次の内容のファイル/etc/dconf/db/network/00-proxy
を作成します。# This is a comment [system/proxy/http] host='10.0.0.1' enabled=true
新しい設定ディレクティブをdconfデータベース形式に解析します。
tux >
sudo
dconf update
ファイル
/etc/dconf/profiles/user
を作成して、デフォルトユーザプロファイルに新しいネットワーク
設定データベースを追加します。次に、以下の内容を追加します。system-db:network
ファイル
/etc/dconf/profiles/user
は、使用されるGNOMEデフォルトです。他のプロファイルは、環境変数DCONF_PROFILE
で定義できます。オプション: ユーザのプロキシ設定をロックするには、ファイル
/etc/dconf/db/network/locks/proxy
を作成します。次に、変更できないキーと共にこのファイルに行を追加します。/system/proxy/http/host /system/proxy/http/enabled
グラフィカルなdconf-editor
を使用して1人のユーザのプロファイルを作成し、次にdconf dump /
を使用してすべての設定オプションを一覧表示することができます。この場合、設定オプションは、グローバルプロファイルに格納することができます。
グローバル設定の詳細については、https://wiki.gnome.org/Projects/dconf/SystemAdministratorsを参照してください。
21.3.3 詳細情報 #
詳細については、http://help.gnome.org/admin/を参照してください。