<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Linuxmetel</id>
	<title>ArchWiki - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.archlinux.jp/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Linuxmetel"/>
	<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/Linuxmetel"/>
	<updated>2026-04-06T20:02:38Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Pacman/%E3%83%92%E3%83%B3%E3%83%88%E3%81%A8%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF&amp;diff=34580</id>
		<title>Pacman/ヒントとテクニック</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Pacman/%E3%83%92%E3%83%B3%E3%83%88%E3%81%A8%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF&amp;diff=34580"/>
		<updated>2023-10-28T11:00:20Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: LANG=C が必要なコマンドがあることの注意の追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:パッケージマネージャー]]&lt;br /&gt;
[[en:Pacman/Tips and tricks]]&lt;br /&gt;
[[es:Pacman (Español)/Tips and tricks]]&lt;br /&gt;
[[fa:Pacman tips]]&lt;br /&gt;
[[fr:Pacman/Trucs et Astuces]]&lt;br /&gt;
[[it:Pacman (Italiano)/Tips and tricks]]&lt;br /&gt;
[[pt:Pacman (Português)/Tips and tricks]]&lt;br /&gt;
[[ru:Pacman (Русский)/Tips and tricks]]&lt;br /&gt;
[[zh-hans:Pacman (简体中文)/Tips and tricks]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|pacman}}&lt;br /&gt;
{{Related|ミラー}}&lt;br /&gt;
{{Related|パッケージの作成}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
以下のヒントや pacman 自体の柔軟性を広げる汎用的な手法については、[[Core Utilities]] や [[Bash]] を見てください。日本語環境において、このページのコマンドのいくつかは &#039;&#039;LANG=C&#039;&#039; を前に付ける必要があります。&lt;br /&gt;
&lt;br /&gt;
== メンテナンス ==&lt;br /&gt;
&lt;br /&gt;
{{Note|このセクションで使われている &#039;&#039;comm&#039;&#039; (&#039;&#039;sort&#039;&#039; でソートして入力する必要があります) の代わりに、{{ic|grep -Fxf}} や {{ic|grep -Fxvf}} を使うこともできます。}}&lt;br /&gt;
&lt;br /&gt;
[[システムメンテナンス]]も参照。&lt;br /&gt;
&lt;br /&gt;
=== パッケージをリストアップ ===&lt;br /&gt;
&lt;br /&gt;
==== With version ====&lt;br /&gt;
&lt;br /&gt;
バグを報告したりインストールしたパッケージについて説明するときは、インストール済みのパッケージとそのバージョンのリストを貼り付けると便利です。&lt;br /&gt;
&lt;br /&gt;
* 明示的にインストールしたパッケージを全てリストアップ: {{ic|pacman -Qe}}。&lt;br /&gt;
* &#039;&#039;group&#039;&#039; グループに含まれるパッケージを全てリストアップ: {{ic|pacman -Sq group}}。&lt;br /&gt;
* 依存パッケージではない、明示的にインストールしたネイティブのパッケージ (同期データベースに存在するパッケージ) を全てリストアップ: {{ic|pacman -Qent}}。&lt;br /&gt;
* 外部からインストールしたパッケージ (手動でダウンロード・インストールしたパッケージ) をリストアップ: {{ic|pacman -Qm}}。&lt;br /&gt;
* ネイティブなパッケージ (同期データベースからインストールしたパッケージ) をリストアップ: {{ic|pacman -Qn}}。&lt;br /&gt;
* 正規表現でパッケージをリストアップ: {{ic|pacman -Qs &#039;&#039;regex&#039;&#039;}}。&lt;br /&gt;
* 正規表現でカスタム出力形式を使ってパッケージをリストアップ: {{ic|expac -s &amp;quot;%-30n %v&amp;quot; &#039;&#039;regex&#039;&#039;}} ({{Pkg|expac}} が必要です)。&lt;br /&gt;
&lt;br /&gt;
==== 容量でソート ====&lt;br /&gt;
&lt;br /&gt;
インストールしたパッケージのリストを容量で並び替えたい場合 (&lt;br /&gt;
どのパッケージが最大かを把握するのは、ハードドライブの空き容量を増やしたいときに有用です。&lt;br /&gt;
各パッケージ単独の容量を取得するか、パッケージとその依存関係の容量を取得するかの二つのオプションがあります。&lt;br /&gt;
&lt;br /&gt;
===== パッケージ単独 =====&lt;br /&gt;
&lt;br /&gt;
次のコマンドで、インストールされたパッケージ全てとそれぞれの容量をリストアップします:&lt;br /&gt;
 $ pacman -Qi | awk &#039;/^Name/{name=$3} /^Installed Size/{print $4$5, name}&#039; | sort -h&lt;br /&gt;
&lt;br /&gt;
===== パッケージとその依存関係 =====&lt;br /&gt;
&lt;br /&gt;
パッケージとその依存関係の合計容量を表示するのは、次の方法があります。&lt;br /&gt;
* {{Pkg|expac}} をインストールして {{ic|&amp;lt;nowiki&amp;gt;expac -H M &#039;%m\t%n&#039; | sort -h&amp;lt;/nowiki&amp;gt;}} を実行。&lt;br /&gt;
* {{ic|-c}} オプションを付けて {{Pkg|pacgraph}} を実行。&lt;br /&gt;
&lt;br /&gt;
複数のパッケージのダウンロード容量をリストアップするには ({{ic|&#039;&#039;packages&#039;&#039;}} を空にすると全てのパッケージの情報が出力されます):&lt;br /&gt;
&lt;br /&gt;
 $ expac -S -H M &#039;%k\t%n&#039; &#039;&#039;packages&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Pkg|base}} や {{Grp|base-devel}} に存在しない明示的にインストールしたパッケージの容量と説明をリストアップするには:&lt;br /&gt;
&lt;br /&gt;
 $ expac -H M &amp;quot;%011m\t%-20n\t%10d&amp;quot; $(comm -23 &amp;lt;(pacman -Qqen | sort) &amp;lt;(pacman -Qqg base base-devel | sort)) | sort -n&lt;br /&gt;
&lt;br /&gt;
アップグレード対象のパッケージとそのダウンロード容量をリストアップするには:&lt;br /&gt;
 $ pacman -Quq|xargs expac -S -H M &#039;%k\t%n&#039; | sort -sh&lt;br /&gt;
&lt;br /&gt;
==== 日付を使う ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|expac}} を使って最後にインストールした20のパッケージをリストアップするには、次のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ expac --timefmt=&#039;%Y-%m-%d %T&#039; &#039;%l\t%n&#039; | sort | tail -n 20&lt;br /&gt;
&lt;br /&gt;
もしくはエポック秒を使って (1970-01-01 UTC):&lt;br /&gt;
&lt;br /&gt;
 $ expac --timefmt=%s &#039;%l\t%n&#039; | sort -n | tail -n 20&lt;br /&gt;
&lt;br /&gt;
==== 指定したグループやリポジトリに存在しないパッケージ ====&lt;br /&gt;
&lt;br /&gt;
{{Note|依存パッケージとしてインストールされたが、既にどのパッケージからも必要とされていないパッケージを確認したい場合は[[#使用していないパッケージの削除 (孤立したパッケージ)|使用していないパッケージの削除 (孤立したパッケージ)]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|base}} や {{Grp|base-devel}} グループに存在しない明示的にインストールしたパッケージをリストアップ:&lt;br /&gt;
&lt;br /&gt;
 $ comm -23 &amp;lt;(pacman -Qeq | sort) &amp;lt;(pacman -Qgq base base-devel | sort)&lt;br /&gt;
&lt;br /&gt;
{{Pkg|base}} や {{Grp|base-devel}} グループに存在せず、他のパッケージによって必要とされていないインストール済みパッケージをリストアップ:&lt;br /&gt;
&lt;br /&gt;
 $ comm -23 &amp;lt;(pacman -Qqt | sort) &amp;lt;(pacman -Sqg base base-devel | sort)&lt;br /&gt;
&lt;br /&gt;
上記と同じで、説明を付けてリストアップ:&lt;br /&gt;
&lt;br /&gt;
 $ expac -HM &#039;%-20n\t%10d&#039; $(comm -23 &amp;lt;(pacman -Qqt | sort) &amp;lt;(pacman -Qqg base base-devel | sort))&lt;br /&gt;
&lt;br /&gt;
指定したリポジトリ &#039;&#039;repo_name&#039;&#039; に存在しないインストール済みパッケージをリストアップ:&lt;br /&gt;
&lt;br /&gt;
 $ comm -23 &amp;lt;(pacman -Qtq | sort) &amp;lt;(pacman -Slq &#039;&#039;repo_name&#039;&#039; | sort)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;repo_name&#039;&#039; リポジトリに含まれているインストール済みパッケージをリストアップ:&lt;br /&gt;
&lt;br /&gt;
 $ comm -12 &amp;lt;(pacman -Qtq | sort) &amp;lt;(pacman -Slq &#039;&#039;repo_name&#039;&#039; | sort)&lt;br /&gt;
&lt;br /&gt;
{{Pkg|base}} グループにはなく、Arch Linux ISO には含まれているパッケージをリストアップ:&lt;br /&gt;
 $ comm -23 &amp;lt;(curl https://git.archlinux.org/archiso.git/tree/configs/releng/packages.x86_64) &amp;lt;(pacman -Qqg base | sort)&lt;br /&gt;
&lt;br /&gt;
==== 開発版パッケージ ====&lt;br /&gt;
&lt;br /&gt;
開発版や不安定版のパッケージを全てリストアップするには、次のコマンドを実行します:&lt;br /&gt;
 $ pacman -Qq | grep -Ee &#039;-(bzr|cvs|darcs|git|hg|svn)$&#039;&lt;br /&gt;
&lt;br /&gt;
==== パッケージの依存パッケージ ====&lt;br /&gt;
&lt;br /&gt;
パッケージの依存パッケージの一覧を入手したい場合、最も簡単な方法は以下のコマンドの出力を見ることです:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qi &#039;&#039;package&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
自動化させるには、pacman の出力をパースするというエラーの発生しやすい方法を取るのではなく、{{Pkg|expac}} を使ってください:&lt;br /&gt;
&lt;br /&gt;
 $ expac -S &#039;%D&#039; &#039;&#039;package&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== パッケージの閲覧 ===&lt;br /&gt;
&lt;br /&gt;
インストールされているすべてのパッケージを、各パッケージのインスタントプレビューで参照するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qq | fzf --preview &#039;pacman -Qil {}&#039; --layout=reverse --bind &#039;enter:execute(pacman -Qil {} | less)&#039;&lt;br /&gt;
&lt;br /&gt;
これは [[fzf]] を使用して、右側にパッケージ情報が表示されたすべてのパッケージを一覧表示する2ペインビューを表示します。&lt;br /&gt;
&lt;br /&gt;
パッケージのリストをフィルタリングするための文字を入力します。矢印キー(または{{ic|Ctrl-j}}/{{ic|Ctrl-k}})を使用してナビゲートします。{{ic|Enter}} を押して、&#039;&#039;less&#039;&#039; の下にパッケージ情報を表示します。&lt;br /&gt;
&lt;br /&gt;
fzf を使用して、同様の方法で &#039;&#039;pacman&#039;&#039; にすべてのパッケージ(インストールされているものとまだインストールされていないものの両方)を参照するには、次を使用します。&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Slq | fzf --preview &#039;pacman -Si {}&#039; --layout=reverse&lt;br /&gt;
&lt;br /&gt;
ナビゲーションのキーバインディングは同じですが、{{ic|Enter}} は同じようには機能しません。&lt;br /&gt;
&lt;br /&gt;
=== パッケージに含まれているファイルを容量を付けてリストアップ ===&lt;br /&gt;
&lt;br /&gt;
特定のパッケージが異常な容量を消費していて、どのファイルが容量を食っているのか調べたいときに便利なコマンドです。&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qlq &#039;&#039;package&#039;&#039; | grep -v &#039;/$&#039; | xargs du -h | sort -h&lt;br /&gt;
&lt;br /&gt;
=== どのパッケージにも所有されていないファイルを特定する ===&lt;br /&gt;
&lt;br /&gt;
どのパッケージにも所有されていない謎のファイルが存在する場合 ([[Arch Linux の安定化#パッケージマネージャを使ってソフトウェアをインストールする|パッケージマネージャを使わずにソフトウェアをインストール]]した場合など)、ファイルを見つけ出して消去すると良いでしょう。以下の手順で見つけ出せます:&lt;br /&gt;
&lt;br /&gt;
# 所有者を確認したいファイルのソート済みリストを作成: {{bc|&amp;lt;nowiki&amp;gt;$ find /etc /opt /usr | sort &amp;gt; all_files.txt&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# pacman によって追跡されているファイルのソート済みリストを作成 (そしてディレクトリの末尾のスラッシュを削除): {{bc|&amp;lt;nowiki&amp;gt;$ pacman -Qlq | sed &#039;s|/$||&#039; | sort &amp;gt; owned_files.txt&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
# 後者のファイルには存在しない行を確認: {{bc|$ comm -23 all_files.txt owned_files.txt}}&lt;br /&gt;
&lt;br /&gt;
どのパッケージにも含まれない重要なファイル (実行時に生成されるファイルやカスタム設定など) も存在するため、安全に消去できるファイルを選び出す方法としては不適切です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{Pkg|lostfiles}} スクリプトは上記と同じようなことを実行しますが、出力から偽陽性のファイルを取り除くための包括的なブラックリストを使用します。}}&lt;br /&gt;
&lt;br /&gt;
=== パッケージによって作成された所有されていないファイルの追跡 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのシステムは、次のようないくつかの [http://ftp.rpm.org/max-rpm/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-GHOST-DIRECTIVEghost] ファイルをゆっくりと収集します。通常の操作の過程で状態ファイル、ログ、インデックスなどとして。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pacutils}} の {{ic|pacreport}} を使用して、{{ic|/etc/pacreport.conf}} を介してこれらのファイルとそれらの関連付けを追跡できます({{man|1|pacreport|FILES}} を参照&lt;br /&gt;
&lt;br /&gt;
例は次のようになります (簡略化):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacreport.conf|2=&lt;br /&gt;
[Options]&lt;br /&gt;
IgnoreUnowned = usr/share/applications/mimeinfo.cache&lt;br /&gt;
&lt;br /&gt;
[PkgIgnoreUnowned]&lt;br /&gt;
alsa-utils = var/lib/alsa/asound.state&lt;br /&gt;
bluez = var/lib/bluetooth&lt;br /&gt;
ca-certificates = etc/ca-certificates/trust-source/*&lt;br /&gt;
dbus = var/lib/dbus/machine-id&lt;br /&gt;
glibc = etc/ld.so.cache&lt;br /&gt;
grub = boot/grub/*&lt;br /&gt;
linux = boot/initramfs-linux.img&lt;br /&gt;
pacman = var/lib/pacman/local&lt;br /&gt;
update-mime-database = usr/share/mime/magic&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、root ユーザーとして {{ic|pacreport --unowned-files}} を使用すると、関連するパッケージがインストールされなくなった場合(または新しいファイルが作成された場合)に、所有されていないファイルが一覧表示されます。&lt;br /&gt;
&lt;br /&gt;
さらに、[https://github.com/Cyber​​Shadow/aconfmgr aconfmgr]({{AUR|aconfmgr-git}})を使用すると、スクリプトを使用して、変更されたファイルや孤立したファイルを追跡できます。&lt;br /&gt;
&lt;br /&gt;
=== 使用していないパッケージの削除 (孤立したパッケージ) ===&lt;br /&gt;
&lt;br /&gt;
孤立したパッケージとは、依存関係としてインストールされ、どのパッケージにも必要なくなったパッケージです。&lt;br /&gt;
&lt;br /&gt;
これらは {{ic|pacman -Rs &#039;&#039;package&#039;&#039;}} の代わりに {{ic|pacman -R &#039;&#039;package&#039;&#039;}} を使ってパッケージをアンインストールしたり、[[makedepends]] としてパッケージをインストールしたり、パッケージが新しいバージョンで依存関係を削除したりすることで、時間とともにシステムに蓄積されます。&lt;br /&gt;
&lt;br /&gt;
孤立したファイルとその設定ファイルを再帰的に削除するには:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Qtdq | pacman -Rns -&lt;br /&gt;
&lt;br /&gt;
孤立したパッケージが見つからなかった場合、出力は {{ic|error: argument &#039;-&#039; specified with empty stdin}} となります。これは {{ic|pacman -Rns}} に引数が渡されていないので予想されます。このエラーは {{Pkg|moreutils}} パッケージの {{man|1|ifne}} を2番目のコマンドの前に付けることで回避できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|引数 {{ic|-Qt}} は真の孤立したパッケージのみをリストします。他のパッケージによって &#039;&#039;オプションで&#039;&#039; 必要とされるパッケージを含めるには、{{ic|-t}} フラグを 2 回渡します (&#039;&#039;すなわち&#039;&#039;、{{ic|-Qtt}})}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;pacman&#039;&#039; のポストトランザクション [[Pacman#Hooks|hook]] に {{ic|pacman -Qtd}} コマンドを追加すると、トランザクションがパッケージを取りこぼした時に通知されます。これはパッケージがリポジトリから削除された時に通知するのに便利です。削除されたパッケージは (明示的にインストールされていない限り) ローカルインストールでも孤立したパッケージになります。孤立したパッケージが見つからない時に &amp;quot;failed to execute command&amp;quot; エラーを避けるには、フックで {{ic|Exec}} に以下のコマンドを使います: {{ic|&amp;lt;nowiki&amp;gt;/usr/bin/bash -c &amp;quot;/usr/bin/pacman -Qtd || /usr/bin/echo &#039;=&amp;gt; None found.&#039;&amp;quot;&amp;lt;/nowiki&amp;gt;}}、{{AUR|pacman-log-orphans-hook}} パッケージはそのようなフックをより冗長な命令で提供します。}}&lt;br /&gt;
&lt;br /&gt;
=== より多くの不要なパッケージを検出する ===&lt;br /&gt;
&lt;br /&gt;
場合によっては、上記の方法では、不要なパッケージをすべて検出する ことはできません。例えば、依存性のサイクル (&amp;quot;循環依存&amp;quot;とも呼ばれる)、過剰な依存性 (複数回満たされる)、明示的でないオプションなどです。&lt;br /&gt;
&lt;br /&gt;
このようなパッケージを検出するには:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qqd | pacman -Rsu --print -&lt;br /&gt;
&lt;br /&gt;
リスト内のすべてのパッケージを一度に削除する場合は、{{ic|--print}} 引数を指定せずにコマンドを実行します。&lt;br /&gt;
&lt;br /&gt;
=== 必須パッケージ以外の全てのパッケージを削除する ===&lt;br /&gt;
&lt;br /&gt;
必須パッケージを除くすべてのパッケージを削除する必要がある場合、1つの方法は、必要ではないパッケージのインストール理由を依存関係として設定してから、不要な依存関係をすべて削除することです。&lt;br /&gt;
&lt;br /&gt;
まず、&#039;&#039;明示的にインストール&#039;&#039; されたすべてのパッケージについて、インストール理由を &#039;&#039;依存関係としてインストール&#039;&#039; に変更します。&lt;br /&gt;
&lt;br /&gt;
 # pacman -D --asdeps $(pacman -Qqe)&lt;br /&gt;
&lt;br /&gt;
次に、インストール理由を、必須パッケージのみの &#039;&#039;明示的にインストール&#039;&#039; に変更します。これらのパッケージをターゲットにしないために、&#039;&#039;削除したくない&#039;&#039; パッケージは次のようになります。&lt;br /&gt;
&lt;br /&gt;
 # pacman -D --asexplicit base linux linux-firmware&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* 削除されないようにするために、上記のコマンドに追加のパッケージを追加することができます。完全に機能する基本システムに必要な他のパッケージの詳細については、 [[インストールガイド#必須パッケージのインストール]] を参照してください。&lt;br /&gt;
* これはブートローダのパッケージも削除対象とされます。システムはまだ起動できるはずですが、ブートパラメータはこれ無しでは変更できないかもしれません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、[[Pacman ヒント#使用していないパッケージの削除 (孤立したパッケージ)]] の手順に従って、&#039;&#039;依存関係&#039;&#039; でインストールされたすべてのパッケージを削除します。&lt;br /&gt;
&lt;br /&gt;
=== 複数のパッケージの依存パッケージリストを取得 ===&lt;br /&gt;
&lt;br /&gt;
依存パッケージはアルファベット順でソートされ、重複するパッケージは削除されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ローカルにインストールしたパッケージのツリーを表示したいだけの場合、{{ic|pacman -Qi}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Si &#039;&#039;packages&#039;&#039; | awk -F&#039;[:&amp;lt;=&amp;gt;]&#039; &#039;/^Depends/ {print $2}&#039; | xargs -n1 | sort -u&lt;br /&gt;
&lt;br /&gt;
もしくは、{{Pkg|expac}} を使用して:&lt;br /&gt;
&lt;br /&gt;
 $ expac -l &#039;\n&#039; %E -S &#039;&#039;packages&#039;&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
=== 変更されたバックアップファイルをリストアップ ===&lt;br /&gt;
&lt;br /&gt;
システムの設定ファイルをバックアップしたい場合は {{ic|/etc/}} にある全てのファイルをコピーすれば良いですが、普通は変更を加えたファイルだけをバックアップすればそれで足ります。変更が加えられた[[Pacnew と Pacsave ファイル#パッケージのバックアップファイル|バックアップファイル]]は次のコマンドで閲覧できます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Qii | awk &#039;/^MODIFIED/ {print $2}&#039;&lt;br /&gt;
&lt;br /&gt;
root で上記のコマンドを実行することで root からしか読み取れないファイル ({{ic|/etc/sudoers}} など) も出力に含まれるようになります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|バックアップファイルだけでなく、pacman が認識している全ての変更済みファイルをリストアップしたい場合は[[#パッケージから変更された全てのファイルをリストアップ|パッケージから変更された全てのファイルをリストアップ]]を見てください。}}&lt;br /&gt;
&lt;br /&gt;
=== pacman データベースをバックアップ ===&lt;br /&gt;
&lt;br /&gt;
次のコマンドでローカルの pacman データベースをバックアップできます:&lt;br /&gt;
&lt;br /&gt;
 $ tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local&lt;br /&gt;
&lt;br /&gt;
バックアップした pacman データベースファイルは USB スティックや外付けハードドライブ、CD-R などのオフラインメディアに保存してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|pacman_database.tar.bz2}} ファイルを {{ic|/}} ディレクトリに移動して以下のコマンドを実行することでデータベースを復元できます:&lt;br /&gt;
&lt;br /&gt;
 # tar -xjvf pacman_database.tar.bz2&lt;br /&gt;
&lt;br /&gt;
{{Note|pacman データベースファイルが破損していて、バックアップファイルが存在しない場合でも、pacman データベースを再構築できる望みはあります。[[# pacman のローカルデータベースを復元する|pacman のローカルデータベースを復元する]]を見てください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{AUR|pakbak-git}} パッケージには上記の作業を自動的に行うスクリプトと [[systemd]] サービスが入っています。{{ic|/etc/pakbak.conf}} で設定が可能です。}}&lt;br /&gt;
&lt;br /&gt;
=== 変更履歴を簡単に確認 ===&lt;br /&gt;
&lt;br /&gt;
メンテナがパッケージを更新するとき、大抵の場合コミットにはコメントが付けられます。{{AUR|pacolog}} をインストールすることでコマンドラインからコミットメッセージを確認することができます。{{ic|pacolog &amp;lt;package&amp;gt;}} を実行すると、公式リポジトリや AUR のパッケージの最近のコミットメッセージを出力します。&lt;br /&gt;
&lt;br /&gt;
== インストールとリカバリ ==&lt;br /&gt;
&lt;br /&gt;
パッケージを取得・復活させる別の方法。&lt;br /&gt;
&lt;br /&gt;
=== パッケージを CD/DVD や USB スティックからインストールする ===&lt;br /&gt;
&lt;br /&gt;
パッケージやパッケージグループをダウンロードするには:&lt;br /&gt;
&lt;br /&gt;
 # cd ~/Packages&lt;br /&gt;
 # pacman -Syw base base-devel grub-bios xorg gimp --cachedir .&lt;br /&gt;
 # repo-add ./custom.db.tar.gz ./*&lt;br /&gt;
&lt;br /&gt;
ダウンロードしたら &amp;quot;Packages&amp;quot; フォルダを CD/DVD に焼くか USB スティック、外部 HDD などにコピーしてください。&lt;br /&gt;
&lt;br /&gt;
インストールするには:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.&#039;&#039;&#039; メディアをマウントする:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /mnt/repo&lt;br /&gt;
 # mount /dev/sr0 /mnt/repo    # CD/DVD の場合&lt;br /&gt;
 # mount /dev/sdxY /mnt/repo   # USB スティックの場合。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2.&#039;&#039;&#039; {{ic|pacman.conf}} を編集して他のリポジトリ (例: extra, core など) の&#039;&#039;前に&#039;&#039;リポジトリを追加してください。この手順は重要です。これで標準のリポジトリに優先して CD/DVD/USB のファイルがインストールされるようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|# nano /etc/pacman.conf|2=&lt;br /&gt;
[custom]&lt;br /&gt;
SigLevel = PackageRequired&lt;br /&gt;
Server = file:///mnt/repo/Packages}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3.&#039;&#039;&#039; 最後に、pacman データベースを同期して新しいリポジトリを使えるようにしてください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu&lt;br /&gt;
&lt;br /&gt;
=== カスタムローカルリポジトリ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;pacman&#039;&#039; に含まれる &#039;&#039;repo-add&#039;&#039; スクリプトを使うことで、個人的なリポジトリのデータベースを生成することができます。詳しい使い方は {{ic|repo-add --help}} を実行して見て下さい。&lt;br /&gt;
&lt;br /&gt;
パッケージデータベースは tar ファイルです (任意で圧縮できます)。有効な拡張子は、&#039;&#039;.db&#039;&#039; か &#039;&#039;.files&#039;&#039; の後に、アーカイブ拡張子 &#039;&#039;.tar&#039;&#039;、&#039;&#039;.tar.gz&#039;&#039;、&#039;&#039;.tar.bz2&#039;&#039;、&#039;&#039;.tar.xz&#039;&#039;、&#039;&#039;.tar.zst&#039;&#039;、&#039;&#039;.tar.Z&#039;&#039; のうちどれかを付け加えたものになります。(&#039;&#039;repo-add&#039;&#039; を使用する際に) このファイルが存在している必要はありませんが、親ディレクトリはすべて存在していなければなりません。&lt;br /&gt;
&lt;br /&gt;
新しいパッケージをデータベースに追加する、あるいはデータベース内にすでにある古いバージョンのパッケージを置き換えるには、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ repo-add &#039;&#039;/path/to/repo.db.tar.gz /path/to/package-1.0-1-x86_64.pkg.tar.zst&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;repo-add&#039;&#039; を使用する際は、データベースとパッケージが同一のディレクトリ内に存在している必要はありません。ただし、そのデータベースを &#039;&#039;pacman&#039;&#039; で使用する際は、データベースとパッケージが一緒に存在している必要があるので注意してください。また、リポジトリに含めるビルド済みパッケージをすべて1つのディレクトリに入れておけば、シェルのグロブ拡張を使って複数のパッケージを一度に追加/更新することができます:&lt;br /&gt;
&lt;br /&gt;
 $ repo-add &#039;&#039;/path/to/repo.db.tar.gz /path/to/*.pkg.tar.zst&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|&#039;&#039;repo-add&#039;&#039; は、コマンドラインで渡された順番でエントリをデータベースに追加します。同じパッケージの複数のバージョンが渡された場合、正しいバージョンが最後に追加されるよう注意しなければなりません。特に、シェルによって使用される辞書順はロケール依存であり、&#039;&#039;pacman&#039;&#039; によって使用される {{man|8|vercmp}} の順序とは異なるので注意してください。}}&lt;br /&gt;
&lt;br /&gt;
複数のアーキテクチャをサポートしようと考えている場合、エラーが起こらないように注意する必要があります。各アーキテクチャに独自のディレクトリツリーが存在している必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ tree ~/customrepo/ {{!}} sed &amp;quot;s/$(uname -m)/&#039;&#039;arch&#039;&#039;/g&amp;quot;|&lt;br /&gt;
/home/archie/customrepo/&lt;br /&gt;
└── &#039;&#039;arch&#039;&#039;&lt;br /&gt;
    ├── customrepo.db -&amp;gt; customrepo.db.tar.xz&lt;br /&gt;
    ├── customrepo.db.tar.xz&lt;br /&gt;
    ├── customrepo.files -&amp;gt; customrepo.files.tar.xz&lt;br /&gt;
    ├── customrepo.files.tar.xz&lt;br /&gt;
    └── personal-website-git-b99cce0-1-&#039;&#039;arch&#039;&#039;.pkg.tar.zst&lt;br /&gt;
&lt;br /&gt;
1 directory, 5 files&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;repo-add&#039;&#039; 実行ファイルは、パッケージが適切であるかどうかをチェックします。パッケージが適切でない場合、以下のようなエラーメッセージが出力されます:&lt;br /&gt;
&lt;br /&gt;
 ==&amp;gt; ERROR: &#039;/home/archie/customrepo/&#039;&#039;arch&#039;&#039;/foo-&#039;&#039;arch&#039;&#039;.pkg.tar.zst&#039; does not have a valid database archive extension.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;repo-remove&#039;&#039; はパッケージデータベースからパッケージを削除するために使用されます。パッケージの名前のみをコマンドラインで指定します。&lt;br /&gt;
&lt;br /&gt;
 $ repo-remove &#039;&#039;/path/to/repo.db.tar.gz pkgname&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ローカルリポジトリを作成できたら、リポジトリを {{ic|pacman.conf}} に追加してください。カスタムリポジトリの例は {{ic|pacman.conf}} 内にあります。リポジトリ名は、データベースのファイル名からファイル拡張子を除いたものになります。上記の例では、リポジトリ名は単に &#039;&#039;repo&#039;&#039; となります。リポジトリの場所を参照するには、{{ic|file://}} URL を使うか、{{ic|&amp;lt;nowiki&amp;gt;http://localhost/path/to/directory&amp;lt;/nowiki&amp;gt;}} を使って HTTP 経由で行ってください。&lt;br /&gt;
&lt;br /&gt;
もし良ければ、カスタムリポジトリを[[非公式ユーザーリポジトリ|非公式ユーザリポジトリのリスト]]に追加して、コミュニティがその恩恵を受けられるようにしましょう。&lt;br /&gt;
&lt;br /&gt;
=== pacman のキャッシュをネットワークで共有する ===&lt;br /&gt;
&lt;br /&gt;
LAN 上で複数の Arch マシンを使っている場合、パッケージを共有することでダウンロード回数を劇的に減らすことができます。使用しているアーキテクチャが異なるマシン (i686 と x86_64) でキャッシュを共有してはいけません。問題が発生します。&lt;br /&gt;
&lt;br /&gt;
==== 読み取り専用キャッシュ ====&lt;br /&gt;
&lt;br /&gt;
{{Note|1=pacman がサーバーから 3 つのパッケージをダウンロードできない場合、代わりに別のミラーが使用されます。https://bbs.archlinux.org/viewtopic.php?id=268066 を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
迅速な解決策を探している場合は、他のコンピューターが最初のミラーとして使用できる [https://gist.github.com/willurd/5720255 基本的な一時 Web サーバー] を実行するだけです。&lt;br /&gt;
&lt;br /&gt;
まず最初に、提供するディレクトリで pacman データベースを利用できるようにします。&lt;br /&gt;
&lt;br /&gt;
 # ln -s /var/lib/pacman/sync/*.db /var/cache/pacman/pkg/&lt;br /&gt;
&lt;br /&gt;
次に、このディレクトリの提供を開始します。たとえば、[[Python]] [https://docs.python.org/3/library/http.server.html#http-server-cli http.server] モジュールの場合:&lt;br /&gt;
 $ python -m http.server -d /var/cache/pacman/pkg/&lt;br /&gt;
&lt;br /&gt;
{{Tip|デフォルトでは、Python {{ic|http.server}} は任意のインターフェイスのポート {{ic|8000}} を待受します。別のポートを使用するか、特定のアドレスにのみバインドするには、パラメータと引数を追加するだけです:&lt;br /&gt;
&lt;br /&gt;
 $ python -m http.server -d /var/cache/pacman/pkg/ --bind 127.0.0.1 8080&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、各クライアントマシンで {{ic|/etc/pacman.d/mirrorlist}} を [[ヘルプ:読み方|追加, 追記, 作成, 編集|編集]] して、このサーバーを最上位のエントリとして追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacman.d/mirrorlist|2=&lt;br /&gt;
Server = http://&#039;&#039;server-ip&#039;&#039;:&#039;&#039;port&#039;&#039;&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|この階層は存在しないため、クエリは失敗します、他のエントリの場合と同様に、このカスタムサーバーに {{ic|/repos/$repo/os/$arch}} を追加しないでください。}}&lt;br /&gt;
&lt;br /&gt;
よりスタンドアロンのソリューションをお探しの場合は、{{Pkg|da​​rkhttpd}} が非常に最小限の Web サーバーを提供します。前の {{ic|python}} コマンドを次のように置き換えます。&lt;br /&gt;
&lt;br /&gt;
 $ sudo -u http darkhttpd /var/cache/pacman/pkg --no-server-id&lt;br /&gt;
&lt;br /&gt;
便宜上、darkhttpd を &#039;&#039;systemd&#039;&#039; サービスとして実行することもできます。[[systemd#ユニットファイル]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
Rust で書かれた小規模な Web サーバーである {{Pkg|miniserve}} も使用できます。&lt;br /&gt;
&lt;br /&gt;
 $ miniserve /var/cache/pacman/pkg&lt;br /&gt;
&lt;br /&gt;
次に、 miniserve が利用可能な最初の URL を使用して、上記のように {{ic|/etc/pacman.d/mirrorlist}} を編集します。&lt;br /&gt;
&lt;br /&gt;
すでに他の目的で Web サーバーを実行している場合は、代わりにそれをローカルリポジトリサーバーとして再利用できます。たとえば、すでに [[nginx]] でサイトを提供している場合は、ポート 8080 で待受する &#039;&#039;nginx&#039;&#039; サーバーブロックを追加できます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/nginx/nginx.conf|&lt;br /&gt;
server {&lt;br /&gt;
    listen 8080;&lt;br /&gt;
    root /var/cache/pacman/pkg;&lt;br /&gt;
    server_name myarchrepo.localdomain;&lt;br /&gt;
    try_files $uri $uri/;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この変更を加えた後は、必ず {{ic|nginx.service}} の [[再起動]] を行ってください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|どの Web サーバーを使用する場合でも、ファイアウォール設定 (存在する場合) で、設定されたポートへの目的のトラフィックの到達が許可され、不要なトラフィックが許可されていないことを確認してください。[[セキュリティ#ネットワークとファイアウォール]]を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
==== 読み取り専用キャッシュのオーバーレイマウント ====&lt;br /&gt;
&lt;br /&gt;
ローカルネットワーク上の1台のマシンを{{ic|/var/cache/pacman/pkg}} ディレクトリの [[Overlayfs|overlay mount]] 読み取り専用パッケージキャッシュとして使うことができます。このような設定は、このサーバーに他のマシンでも使われる最新のパッケージが適度に包括的にインストールされている場合に有利です。これは低帯域幅のアップストリーム接続の端にある多くのマシンを管理するのに便利です。&lt;br /&gt;
&lt;br /&gt;
例として、このメソッドを使用するには:&lt;br /&gt;
&lt;br /&gt;
 # mkdir /tmp/remote_pkg /mnt/workdir_pkg /tmp/pacman_pkg&lt;br /&gt;
 # sshfs &#039;&#039;remote_username&#039;&#039;@&#039;&#039;remote_pkgcache_addr&#039;&#039;:/var/cache/pacman/pkg /tmp/remote_pkg -C&lt;br /&gt;
 # mount -t overlay overlay -o lowerdir=/tmp/remote_pkg,upperdir=/var/cache/pacman/pkg,workdir=/mnt/workdir_pkg /tmp/pacman_pkg&lt;br /&gt;
&lt;br /&gt;
{{Note|作業ディレクトリは、上位ディレクトリと同じマウントされたデバイス上の空のディレクトリである必要があります。[[Overlayfs#使用方法]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|1={{ic|/tmp/pacman_pkg}} オーバーレイディレクトリをリストすると、&amp;quot;Stale file handle&amp;quot; などのエラーが発生する場合は、オプション {{ic|1=-o redirect_dir=off -oindex=off}} を使用してオーバーレイマウントを試してください。}}&lt;br /&gt;
&lt;br /&gt;
この後、オプション {{ic|--cachedir /tmp/pacman_pkg}} を使用して &#039;&#039;pacman&#039;&#039; を実行します。例:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu --cachedir /tmp/pacman_pkg&lt;br /&gt;
&lt;br /&gt;
==== 分散読み取り専用キャッシュ ====&lt;br /&gt;
&lt;br /&gt;
パッケージキャッシュを提供するネットワーク上の他のコンピューターを自動的に検出するための Arch 固有のツールがあります。{{Pkg|pacredir}}、[[pacserve]]、{{AUR|pkgdistcache}}、または {{AUR|paclan}} を試してください。  pkgdistcache は、プレーンな UDP の代わりに Avahi を使用します。これは、WiFi とイーサネット間のブリッジではなくルーティングを行う特定のホームネットワークでより適切に機能する可能性があります。&lt;br /&gt;
&lt;br /&gt;
歴史的には、[https://bbs.archlinux.org/viewtopic.php?id=64391 PkgD] と [https://github.com/toofishes/multipkg multipkg] がありましたが、現在はメンテナンスされていません。&lt;br /&gt;
&lt;br /&gt;
==== 読み書き可能キャッシュ ====&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[pacserve]] を使うことで以下の方法をもっと簡単に実現できます。}}&lt;br /&gt;
&lt;br /&gt;
複数のコンピュータ間でパッケージを共有するには、ネットワークベースのマウントプロトコルを使って {{ic|/var/cache/pacman/}} を共有します。このセクションでは shfs または sshfs を使ってパッケージキャッシュと関連するライブラリディレクトリを同一ローカルネットワーク上の複数のコンピュータで共有する方法を示します。ネットワークで共有されるキャッシュは、ファイルシステムの選択やその他の要因で、遅くなることがあります。&lt;br /&gt;
&lt;br /&gt;
まず、ネットワークをサポートするファイルシステムをインストールしてください。例えば [[sshfs]], [[shfs]], ftpfs, [[Samba|smbfs]], [[NFS|nfs]] など。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* sshfs や shfs を使う場合、[[SSH 鍵]]を読んで下さい。&lt;br /&gt;
* デフォルトでは、smbfs はファイル名にコロンを使えないので、クライアントは問題のあるパッケージをダウンロードしなおしてしまいます。クライアント側で {{ic|mapchars}} マウントオプションを使用することで解決します。}}&lt;br /&gt;
&lt;br /&gt;
それから、サーバーの {{ic|/var/cache/pacman/pkg}} をクライアントマシンの {{ic|/var/cache/pacman/pkg}} にマウントすることでパッケージを共有できます。&lt;br /&gt;
&lt;br /&gt;
==== rsync で同期 ====&lt;br /&gt;
&lt;br /&gt;
ローカル環境でのもう1つのアプローチは、 [[rsync]] です。 キャッシュするサーバーを選択し、 [[Rsync#rsync デーモン|rsync デーモン]] を有効にします。 クライアントでは、rsync プロトコルを介してこの共有と双方向で同期します。 コロンを含むファイル名は、 rsync プロトコルでは問題ありません。&lt;br /&gt;
&lt;br /&gt;
​クライアントのドラフトの例では、共有名に {{ic|uname-m}} と入力し使用することで、アーキテクチャに依存する同期が保証されます。&lt;br /&gt;
  # rsync rsync://server/share_$(uname -m)/ /var/cache/pacman/pkg/ ...&lt;br /&gt;
  # pacman ...&lt;br /&gt;
  # paccache ...&lt;br /&gt;
  # rsync /var/cache/pacman/pkg/ rsync://server/share_$(uname -m)/  ...&lt;br /&gt;
&lt;br /&gt;
==== nginx を使用する動的なリバースプロキシキャッシュ ====&lt;br /&gt;
&lt;br /&gt;
[[nginx]] を使って公式の上流ミラーへのリクエストをプロキシして結果をローカルディスクにキャッシュすることができます。その後、ファイルへのリクエストは全てローカルのキャッシュから供給されるようになり、大量のサーバーを更新するときでもインターネットのトラフィックを簡単に最小限に抑えることができます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法には欠点があります。パッケージファイルの相対パスが同じミラーを使う必要があり同じパスを使うようにキャッシュを設定しなければなりません。この例では、相対パスが {{ic|/archlinux/$repo/os/$arch}} のミラーを使用して {{ic|mirrorlist}} のキャッシュの {{ic|Server}} 設定も同じ相対パスとします。}}&lt;br /&gt;
&lt;br /&gt;
この例では、キャッシュサーバーを {{ic|&amp;lt;nowiki&amp;gt;http://cache.domain.local:8080/&amp;lt;/nowiki&amp;gt;}} で実行してパッケージを {{ic|/srv/http/pacman-cache/}} に保存します。&lt;br /&gt;
&lt;br /&gt;
キャッシュのディレクトリを作成して nginx からファイルが書き込めるようにパーティションを設定:&lt;br /&gt;
&lt;br /&gt;
  # mkdir /srv/http/pacman-cache&lt;br /&gt;
  # chown http:http /srv/http/pacman-cache&lt;br /&gt;
&lt;br /&gt;
次に、nginx を [https://gist.github.com/anonymous/97ec4148f643de925e433bed3dc7ee7d 動的キャッシュ] として設定 (コマンドについてはコメントを読んでください)。&lt;br /&gt;
&lt;br /&gt;
最後に、他の Arch Linux サーバーを更新して {{ic|mirrorlist}} ファイルに以下の行を追加して新しいキャッシュを使うように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacman.d/mirrorlist|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Server = http://cache.domain.local:8080/archlinux/$repo/os/$arch&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|時間と共にディレクトリは膨れ上がるため、古いパッケージを消去できるようにする必要があります。({{ic|pacman}} に含まれている) {{ic|paccache}} を使うことでお好きな基準で消去を自動化することが可能です。例えば、{{ic|find /srv/http/pacman-cache/ -type d -exec paccache -v -r -k 2 -c {} \;}} はキャッシュディレクトリに最新から1つ前のバージョンまでパッケージを保持します。}}&lt;br /&gt;
&lt;br /&gt;
==== Pacoloco プロキシキャッシュサーバー ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/anatol/pacoloco Pacoloco] は、 pacman リポジトリ用の使いやすいプロキシキャッシュサーバです。​ {{AUR|pacoloco-git}} としてインストールできます。​構成ファイルを開き、pacman ミラーを追加します。:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacoloco.yaml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
port: 9129&lt;br /&gt;
repos:&lt;br /&gt;
  mycopy:&lt;br /&gt;
    urls:&lt;br /&gt;
      - http://mirror.lty.me/archlinux&lt;br /&gt;
      - http://mirrors.kernel.org/archlinux&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|pacoloco.service}} を [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86 再起動] すると、プロキシリポジトリが {{ic|http://&amp;lt;myserver&amp;gt;:9129/repo/mycopy}} で利用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== Flexo プロキシキャッシュサーバー ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/nroi/flexo Flexo] pacman リポジトリ用のさらに別のプロキシキャッシュサーバーです。 Flexo は AUR で利用できます:{{AUR|flexo-git}} インストールしたら、 systemd で {{ic|flexo.service}} サービスを [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86 スタート]します。&lt;br /&gt;
&lt;br /&gt;
Flexo はデフォルトではポート 7878 で動作します。 ​{{ic|/etc/pacman.d/mirrorlist}} の先頭に {{ic|1=Server = http://&#039;&#039;myserver&#039;&#039;:7878/$repo/os/$arch}} と入力し、pacman が Flexo を介してパッケージをダウンロードできるようにします。&lt;br /&gt;
&lt;br /&gt;
==== 同期プログラムを使用して pacman パッケージ キャッシュを同期する ====&lt;br /&gt;
&lt;br /&gt;
[[Syncthing]] または [[Resilio Sync]] を使用して、&#039;&#039;pacman&#039;&#039; キャッシュディレクトリ (つまり、{{ic|/var/cache/pacman/pkg}}) を同期します。&lt;br /&gt;
&lt;br /&gt;
==== 不要なキャッシュパージの防止 ====&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|pacman -Sc}} は、コマンドが発行されたマシンにインストールされていないパッケージに対応するパッケージ tarball をキャッシュから削除します。&#039;&#039;pacman&#039;&#039; は、キャッシュを共有するすべてのマシンにどのようなパッケージがインストールされるかを予測できないため、削除すべきではないファイルを削除してしまうことになります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;古い&#039;&#039; tarball のみが削除されるようにキャッシュをクリーンアップするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacman.conf|2=&lt;br /&gt;
[options]&lt;br /&gt;
CleanMethod = KeepCurrent&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルシステムからパッケージを再作成 ===&lt;br /&gt;
&lt;br /&gt;
ファイルシステムからパッケージを再作成するには、(pacman に含まれている) &#039;&#039;bacman&#039;&#039; を使います。システム上のファイルがそのまま使われるため、作成されるパッケージにはファイルへの変更も一緒に含まれてしまいます。再作成したパッケージの配布は非推奨です。[[ABS]] や [[Arch Rollback Machine]] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&#039;&#039;bacman&#039;&#039; は {{ic|makepkg.conf}} の {{ic|PACKAGER}}, {{ic|PKGDEST}}, {{ic|PKGEXT}} オプションを使用します。環境変数をエクスポートすることで圧縮ツールのオプションを指定することができます。例えば {{ic|1=XZ_OPT=&amp;quot;-T 0&amp;quot;}} は &#039;&#039;xz&#039;&#039; の並列圧縮を有効化します。}}&lt;br /&gt;
&lt;br /&gt;
別のツールとして {{AUR|fakepkg}} も存在します。並列化をサポートしており複数のパッケージを入力することができます。&#039;&#039;bacman&#039;&#039; ではどちらもサポートされていません。&lt;br /&gt;
&lt;br /&gt;
=== インストール済みパッケージのリスト ===&lt;br /&gt;
&lt;br /&gt;
明示的にインストールされたすべてのパッケージのリストを保持しておくと、たとえばシステムをバックアップしたり、新しいシステムへのインストールを高速化したりするのに役立ちます:&lt;br /&gt;
&lt;br /&gt;
 $ pacman -Qqe &amp;gt; pkglist.txt&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* オプション {{ic|-t}} を使用すると、他の明示的にインストールされたパッケージですでに必要なパッケージは言及されません。 このリストから再インストールする場合、それらはインストールされますが、依存関係としてのみです。&lt;br /&gt;
* オプション {{ic|-n}} を使用すると、外部パッケージ([[AUR]] など)がリストから省略されます。&lt;br /&gt;
* {{ic|comm -13 &amp;lt;(pacman -Qqdt {{!}} sort) &amp;lt;(pacman -Qqdtt {{!}} sort) &amp;gt; optdeplist.txt}} を使用して、インストールされているオプションの依存関係のリストも作成します。 {{ic|--asdeps}} で再インストールします。&lt;br /&gt;
* {{ic|pacman -Qqem&amp;gt; Foreignpkglist.txt}} を使用して、明示的にインストールされた AUR およびその他の外部パッケージのリストを作成します。}}&lt;br /&gt;
&lt;br /&gt;
明示的にインストールされたパッケージの最新リストを保持するために(たとえば、バージョン管理された {{ic|/etc/}} と組み合わせて)、[[Pacman#フック|hook]] を設定できます。 例:&lt;br /&gt;
&lt;br /&gt;
 [Trigger]&lt;br /&gt;
 Operation = Install&lt;br /&gt;
 Operation = Remove&lt;br /&gt;
 Type = Package&lt;br /&gt;
 Target = *&lt;br /&gt;
 &lt;br /&gt;
 [Action]&lt;br /&gt;
 When = PostTransaction&lt;br /&gt;
 Exec = /bin/sh -c &#039;/usr/bin/pacman -Qqe &amp;gt; /etc/pkglist.txt&#039;&lt;br /&gt;
&lt;br /&gt;
=== リストからパッケージをインストールする ===&lt;br /&gt;
&lt;br /&gt;
以前に保存されたパッケージのリストからパッケージをインストールするには、すでに最新のインストール済みパッケージを再インストールせずに、を実行します。:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S --needed - &amp;lt; pkglist.txt&lt;br /&gt;
&lt;br /&gt;
ただし、AURからのものやローカルにインストールされたものなどの外部パッケージがリストに含まれている可能性があります。 外部パッケージをリストから除外するには、前のコマンドラインを次のように拡張できます:&lt;br /&gt;
&lt;br /&gt;
 # pacman -S --needed $(comm -12 &amp;lt;(pacman -Slq | sort) &amp;lt;(sort pkglist.txt))&lt;br /&gt;
&lt;br /&gt;
最終的に、システムのインストール済みパッケージがリストと一致することを確認し、リストに記載されていないすべてのパッケージを削除します:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Rsu $(comm -23 &amp;lt;(pacman -Qq | sort) &amp;lt;(sort pkglist.txt))&lt;br /&gt;
&lt;br /&gt;
{{Tip|これらのタスクは自動化できます。 例えば、これらを参照 {{AUR|bacpac}}, {{AUR|packup}}, {{AUR|pacmanity}}, {{AUR|pug}} }}&lt;br /&gt;
&lt;br /&gt;
=== パッケージから変更された全てのファイルをリストアップ ===&lt;br /&gt;
&lt;br /&gt;
ファイルが破損している可能性があるが (例: ソフトウェアあるいはハードウェアの故障)、ファイルが確実に破損しているとは言えない場合、パッケージのハッシュサムを比較すると良いでしょう。{{Pkg|pacutils}} で比較することができます:&lt;br /&gt;
&lt;br /&gt;
 # paccheck --md5sum --quiet&lt;br /&gt;
&lt;br /&gt;
データベースのリカバリについては [[#pacman のローカルデータベースを復元する|pacman のローカルデータベースを復元する]]を参照。{{ic|mtree}} ファイルも[[#.pkg ファイルに含まれているファイルを閲覧する|該当するパッケージファイルから {{ic|.MTREE}} として抽出]]できます。&lt;br /&gt;
&lt;br /&gt;
{{Note|悪意のある変更がされている可能性がある場合は気をつけてください。セキュリティ上、ライブメディアを使用したりハッシュサムを別のところから持ってくるなどの用心をすることを推奨します。}}&lt;br /&gt;
&lt;br /&gt;
=== 全てのパッケージの再インストール ===&lt;br /&gt;
&lt;br /&gt;
全てのネイティブのパッケージを再インストールするには、次を使って下さい:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Qnq | pacman -S -&lt;br /&gt;
&lt;br /&gt;
外部の (AUR) パッケージは別に再インストールする必要があります。外部のパッケージは {{ic|pacman -Qmq}} で一覧できます。&lt;br /&gt;
&lt;br /&gt;
デフォルトで Pacman はインストールの理由(明示的にインストールしたか、依存でインストールしたか)を維持します。&lt;br /&gt;
&lt;br /&gt;
=== pacman のローカルデータベースを復元する ===&lt;br /&gt;
&lt;br /&gt;
[[pacman/ローカルデータベースの復元]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 既存のインストールから USB キーを復元する ===&lt;br /&gt;
&lt;br /&gt;
USB キーに Arch をインストールしていて壊してしまった場合 (例: ファイルの書き込み中に取り出してしまった場合など)、全てのパッケージを再インストールして元に戻せる可能性があります (USB キーが {{ic|/newarch}} にマウントされている場合):&lt;br /&gt;
&lt;br /&gt;
 # pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman&lt;br /&gt;
&lt;br /&gt;
=== .pkg ファイルに含まれているファイルを閲覧する ===&lt;br /&gt;
&lt;br /&gt;
例えば、{{Pkg|systemd}} パッケージに含まれている {{ic|/etc/systemd/logind.conf}} の中身をみたい場合:&lt;br /&gt;
&lt;br /&gt;
 $ tar -xOf /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz etc/systemd/logind.conf&lt;br /&gt;
&lt;br /&gt;
もしくは {{pkg|vim}} を使って圧縮ファイルを閲覧することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ vim /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz&lt;br /&gt;
&lt;br /&gt;
=== 古いパッケージのライブラリを使っているアプリケーションを探す ===&lt;br /&gt;
&lt;br /&gt;
パッケージをインストールしても、(デーモンやサーバーなど) ずっと実行し続けているプログラムが古いパッケージのライブラリのコードを使用している可能性があります。古いライブラリにセキュリティのバグが存在する場合、プログラムを実行し続けるのは得策ではありません。&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで古いパッケージのコードを使用しているプログラムを全て見つけることができます:&lt;br /&gt;
&lt;br /&gt;
 # lsof +c 0 | grep -w DEL | awk &#039;1 { print $1 &amp;quot;: &amp;quot; $NF }&#039; | sort -u&lt;br /&gt;
&lt;br /&gt;
実行中のプログラムの名前と削除あるいは置換された古いライブラリが出力されます。&lt;br /&gt;
&lt;br /&gt;
=== 必要な言語のコンテンツのみをインストールする  ===&lt;br /&gt;
&lt;br /&gt;
多くのパッケージは、ドキュメントと翻訳をいくつかの言語でインストールしようとします。 一部のプログラムは、 {{AUR|localepurge}} などの不要なファイルを削除するように設計されています。これは、パッケージがインストールされた後に実行され、不要なロケールファイルを削除します。 より直接的なアプローチは、 {{ic|pacman.conf}} の {{ic|NoExtract}} ディレクティブを介して提供され、これらのファイルがインストールされないようにします。&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=一部のユーザーは、[https://bbs.archlinux.org/viewtopic.php?id=250846 Xorg] の下でも、ロケールを削除すると [[Special:Permalink/460285#Dangerous NoExtract example|意図しない結果]] が発生したと指摘しました。}}&lt;br /&gt;
&lt;br /&gt;
次の例では、英語 (US) ファイルをインストールするか、または何もインストールしません。:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pacman.conf|2=&lt;br /&gt;
NoExtract = usr/share/help/* !usr/share/help/C/*&lt;br /&gt;
NoExtract = usr/share/gtk-doc/html/*&lt;br /&gt;
NoExtract = usr/share/locale/* usr/share/X11/locale/*/* usr/share/i18n/locales/* opt/google/chrome/locales/* !usr/share/X11/locale/C/*&lt;br /&gt;
NoExtract = !*locale*/en*/* !usr/share/*locale*/locale.*&lt;br /&gt;
NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n* !usr/share/*locales/iso*&lt;br /&gt;
NoExtract = usr/share/i18n/charmaps/* !usr/share/i18n/charmaps/UTF-8.gz&lt;br /&gt;
NoExtract = !usr/share/*locales/trans*&lt;br /&gt;
NoExtract = usr/share/man/* !usr/share/man/man*&lt;br /&gt;
NoExtract = usr/share/vim/vim*/lang/*&lt;br /&gt;
NoExtract = usr/lib/libreoffice/help/en-US/*&lt;br /&gt;
NoExtract = usr/share/kbd/locale/*&lt;br /&gt;
NoExtract = usr/share/*/translations/*.qm usr/share/qt/translations/*.pak !*/en-US.pak # Qt apps&lt;br /&gt;
NoExtract = usr/share/*/locales/*.pak opt/*/locales/*.pak usr/lib/*/locales/*.pak !*/en-US.pak # Electron apps&lt;br /&gt;
NoExtract = opt/onlyoffice/desktopeditors/dictionaries/* !opt/onlyoffice/desktopeditors/dictionaries/en_US/*&lt;br /&gt;
NoExtract = usr/share/ibus/dicts/emoji-*.dict !usr/share/ibus/dicts/emoji-en.dict&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 接続状況が悪い場合でもパッケージをインストールする ===&lt;br /&gt;
&lt;br /&gt;
悪い接続状況 (携帯電話を使用する電車など) からパッケージをインストールしようとする場合は、{{ic|--disable-download-timeout}} オプションを使用して、次のようなエラーが発生する可能性を減らします。&lt;br /&gt;
&lt;br /&gt;
 error: failed retrieving file [...] Operation too slow. Less than 1 bytes/sec transferred the last 10 seconds&lt;br /&gt;
&lt;br /&gt;
もしくは、&lt;br /&gt;
&lt;br /&gt;
 error: failed retrieving file [...] Operation timed out after 10014 milliseconds with 0 out of 0 bytes received&lt;br /&gt;
&lt;br /&gt;
== パフォーマンス ==&lt;br /&gt;
&lt;br /&gt;
{{Out of date|このページは、pacman が並列ダウンロードをネイティブにサポートする前に書かれました。v6 以降、複数のパッケージを同時にダウンロードするオプションは以下だけではないことを言及すべきです。}}&lt;br /&gt;
&lt;br /&gt;
=== ダウンロード速度を向上させる ===&lt;br /&gt;
&lt;br /&gt;
{{Note|ダウンロード速度が極端に遅い場合、使っている[[ミラー]]が ftp.archlinux.org ではないことを確認してください。[https://www.archlinux.org/news/302/ 2007年の3月からこのサーバーには速度制限がかかっています]。}}&lt;br /&gt;
&lt;br /&gt;
パッケージをダウンロードするとき pacman は {{ic|/etc/pacman.d/mirrorlist}} に書かれている順番通りにミラーを使用します。リストの一番上のミラーがデフォルトで使用されますが、それが最速のミラーだとは限りません。一番高速なミラーを選択する方法は[[ミラー]]を見てください。&lt;br /&gt;
&lt;br /&gt;
Pacman に初めから入っているファイルダウンローダの代わりに、他のアプリケーションを使ってパッケージをダウンロードすることで Pacman のパッケージダウンロード速度を上げることができます。&lt;br /&gt;
&lt;br /&gt;
どんな場合でも、変更を行う前に最新の Pacman を使っていることを確認してください:&lt;br /&gt;
&lt;br /&gt;
 # pacman -Syu&lt;br /&gt;
&lt;br /&gt;
==== Powerpill ====&lt;br /&gt;
&lt;br /&gt;
Powerpill は Pacman の完全なラッパーで並行・分割ダウンロードを使うことによってダウンロード処理を高速化します。通常の Pacman は一度にひとつのパッケージしかダウンロードしないので、ダウンロードが完了するまで次のダウンロードが始まりません。Powerpill は異なるアプローチを取ります: 同時に可能な限り多くのパッケージをダウンロードしようとします。&lt;br /&gt;
&lt;br /&gt;
[[Powerpill|Powerpill の wiki ページ]]に基本的な設定・使用方法と、パッケージと上流のリンクがあります。&lt;br /&gt;
&lt;br /&gt;
==== wget ====&lt;br /&gt;
&lt;br /&gt;
pacman に初めから入っている機能よりもパワフルなプロキシ設定が必要な場合、wget はとても使い勝手がよいです。&lt;br /&gt;
&lt;br /&gt;
{{ic|wget}} を使うには、まず {{ic|pacman -S wget}} で wget をインストールして、それから {{ic|/etc/pacman.conf}} を編集して次の行を {{ic|[options]}} セクションでアンコメントしてください:&lt;br /&gt;
&lt;br /&gt;
 XferCommand = /usr/bin/wget -c -q --show-progress --passive-ftp -O %o %u&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/pacman.conf}} に {{ic|wget}} パラメータを記述する代わりに、{{ic|wget}} の設定ファイルを直接修正することも可能です (システム全体のファイルは {{ic|/etc/wgetrc}}、ユーザー別のファイルは {{ic|$HOME/.wgetrc}})。&lt;br /&gt;
&lt;br /&gt;
==== aria2 ====&lt;br /&gt;
&lt;br /&gt;
[[aria2]] はレジューム機能と分割 HTTP/HTTPS/FTP ダウンロードをサポートしている軽量なダウンロードユーティリティです。[http://aria2.sourceforge.net/ aria2] を使えば同時に複数の HTTP/HTTPS/FTP 接続を Arch ミラーにすることができ、ファイル・パッケージの取得の際のダウンロード速度が上昇します。&lt;br /&gt;
&lt;br /&gt;
{{Note|Pacman の XferCommand で aria2c を使っても複数パッケージの同時ダウンロードは行われません。Pacman はひとつのパッケージごとに XferCommand を呼び出し、それが完了してから次を呼び出すからです。同時に複数のパッケージをダウンロードするには、上の [[#Powerpill|powerpill]] のセクションを見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|aria2}} をインストールして {{ic|/etc/pacman.conf}} を編集し、以下の行を {{ic|[options]}} セクションに追加してください:&lt;br /&gt;
&lt;br /&gt;
 XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --log-level=error --max-tries=2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 --timeout=5 --dir=/ --out %o %u&lt;br /&gt;
&lt;br /&gt;
{{Tip|1=設定を簡単にして他の設定オプションを追加する [https://bbs.archlinux.org/viewtopic.php?pid=1491879#p1491879 aria2 を pacman で使用する別の設定] も存在します。}}&lt;br /&gt;
&lt;br /&gt;
aria2c で使用できるオプションについては {{ic|man aria2c}} の [http://aria2.sourceforge.net/manual/en/html/aria2c.html#options OPTIONS] を見てください。&lt;br /&gt;
&lt;br /&gt;
* {{ic|-d, --dir}}: [[pacman]] によって指定されるダウンロードしたファイルを保存するディレクトリ。&lt;br /&gt;
* {{ic|-o, --out}}: ダウンロードしたファイルの出力ファイル名。&lt;br /&gt;
* {{ic|%o}}: pacman によって指定されるローカルのファイル名を表す変数。&lt;br /&gt;
*{{ic|%u}}: pacman によって指定されるダウンロード URL を表す変数。&lt;br /&gt;
&lt;br /&gt;
==== 他のアプリケーション ====&lt;br /&gt;
&lt;br /&gt;
Pacman で利用できるダウンロードアプリケーションは他にもあります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|snarf}}: {{ic|1=XferCommand = /usr/bin/snarf -N %u}}&lt;br /&gt;
* {{ic|lftp}}: {{ic|1=XferCommand = /usr/bin/lftp -c pget %u}}&lt;br /&gt;
* {{ic|axel}}: {{ic|1=XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u}}&lt;br /&gt;
* {{ic|hget}}: {{ic|1=XferCommand = /usr/bin/hget %u -n 2 -skip-tls false}} (詳細については [https://github.com/huydx/hget Githubプロジェクトページのドキュメントを読んで下さい])&lt;br /&gt;
* {{ic|saldl}}: {{ic|1=XferCommand = /usr/bin/saldl -c6 -l4 -s2m -o %o %u}} (詳細については [https://github.com/huydx/hget Githubプロジェクトページのドキュメントを読んで下さい])&lt;br /&gt;
&lt;br /&gt;
== ユーティリティ ==&lt;br /&gt;
* {{App|Arch-Update|Gnome-Shell のアップデートインジケータ。|https://github.com/RaphaelRochet/arch-update|{{AUR|gnome-shell-extension-arch-update}}}}&lt;br /&gt;
* {{App|Lostfiles|孤立したファイルを検知するスクリプト。|https://github.com/graysky2/lostfiles|{{Pkg|lostfiles}}}}&lt;br /&gt;
* {{App|[[Arch Linux の安定化#pacmatic の使用|Pacmatic]]|アップグレードの前に Arch ニュースをチェックして、設定ファイルの変更を警告する pacman ラッパ。|http://kmkeen.com/pacmatic|{{Pkg|pacmatic}}}}&lt;br /&gt;
* {{App|pacutils|libalpm ベースのプログラムのヘルパーライブラリ。|https://github.com/andrewgregory/pacutils|{{AUR|pacutils-git}}}}&lt;br /&gt;
* {{App|[[pkgfile]]|あるファイルを使っているパッケージが何かを見つけるツール。|https://github.com/falconindy/pkgfile|{{Pkg|pkgfile}}}}&lt;br /&gt;
* {{App|[[pkgtools]]|Arch Linux パッケージ用のスクリプトコレクション。|https://github.com/Daenyth/pkgtools|{{AUR|pkgtools}}}}&lt;br /&gt;
* {{App|[[Powerpill]]|[[aria2]] や [[Reflector]] を通じて並列分割ダウンロードを行い pacman のダウンロード処理を高速化。|https://xyne.archlinux.ca/projects/powerpill/|{{AUR|powerpill}}}}&lt;br /&gt;
* {{App|repoctl|ローカルリポジトリの管理を補助するツール。|https://github.com/cassava/repoctl|{{AUR|repoctl}}}}&lt;br /&gt;
* {{App|repose|Arch Linux リポジトリ作成ツール。|https://github.com/vodik/repose|{{Pkg|repose}}}}&lt;br /&gt;
* {{App|[[Snapper#pacman のトランザクションをスナップショットで記録|snap-pac]]|openSUSE の YaST のように pacman で自動的に snapper のスナップショットを作成するツール。|https://github.com/wesbarnett/snap-pac|{{Pkg|snap-pac}}}}&lt;br /&gt;
* {{App|vrms-arch|仮想 Richard M. Stallman がインストールされた不自由なパッケージを報告します。|https://github.com/orospakr/vrms-arch|{{AUR|vrms-arch}}}}&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルフロントエンド ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|PackageKit は既定でシステムのパーミッションを {{ic|wheel}} グループに開放するので、一般的な用途ではおすすめできません。{{Bug|50459}} および {{Bug|57943}} を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
* {{App|Apper|PackageKit を使用し C++ で書かれた Qt 5 アプリケーションパッケージマネージャ。[https://www.freedesktop.org/wiki/Distributions/AppStream/ AppStream metadata] をサポート。|https://userbase.kde.org/Apper|{{Pkg|apper}}}}&lt;br /&gt;
* {{App|Discover|KDE のパッケージ管理ツールのコレクション。PackageKit を使用。[https://www.freedesktop.org/wiki/Distributions/AppStream/ AppStream metadata]、[[Flatpak]] および [[Fwupd]] をサポート。|https://userbase.kde.org/Discover|{{Pkg|discover}}}}&lt;br /&gt;
* {{App|GNOME packagekit|GTK ベースのパッケージ管理ツール。|https://www.freedesktop.org/software/PackageKit/|{{Pkg|gnome-packagekit}}}}&lt;br /&gt;
* {{App|GNOME Software|Gnome ソフトウェアアプリ (GNOME の精選ソフトウェアコレクション)。|https://wiki.gnome.org/Apps/Software|{{pkg|gnome-software}}}}&lt;br /&gt;
* {{App|pcurses|curses フロントエンドのパッケージ管理ツール。|https://github.com/schuay/pcurses|{{Pkg|pcurses}}}}&lt;br /&gt;
* {{App|tkPacman|Tcl/Tk と X11 にしか依存せず、CLI の &#039;&#039;pacman&#039;&#039; を使ってパッケージデータベースを操作できるソフトウェア。|https://sourceforge.net/projects/tkpacman|{{AUR|tkpacman}}}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3&amp;diff=34244</id>
		<title>スクリーンキャプチャ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3&amp;diff=34244"/>
		<updated>2023-10-11T17:34:10Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* スクリーンショットソフトウェア */ shutter が AUR から公式リポジトリに移っているようなので修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:システム管理]]&lt;br /&gt;
[[Category:マルチメディア]]&lt;br /&gt;
[[cs:Taking a screenshot]]&lt;br /&gt;
[[en:Taking a screenshot]]&lt;br /&gt;
[[es:Taking a screenshot]]&lt;br /&gt;
[[fr:Capture d&#039;écran]]&lt;br /&gt;
[[ru:Taking a screenshot]]&lt;br /&gt;
[[zh-hans:Taking a screenshot]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|キーボードショートカット#カスタマイズ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では、[[Wikipedia:ja:スクリーンショット|スクリーンショット]]と[[Wikipedia:ja:スクリーンキャスト|スクリーンキャスト]]のソフトウェアを一覧にして解説しています。&lt;br /&gt;
&lt;br /&gt;
== スクリーンショットソフトウェア ==&lt;br /&gt;
&lt;br /&gt;
=== 専用のソフトウェア ===&lt;br /&gt;
&lt;br /&gt;
* {{App|CoreShot|X11 用のシンプルで軽量なスクリーンキャプチャユーティリティ。C-Suite |https://cubocore.org/|{{AUR|coreshot}}}}&lt;br /&gt;
* {{App|Deepin Screenshot|とても使いやすいスクリーンショットツール。機能: スクリーンショットツールを発動するホットキー、選択した領域のスクリーンショットの取得、スクリーンショットに文章や線画を簡単に追加。Python/Qt5 ベース。|https://www.deepin.org/|{{Pkg|deepin-screenshot}}}}&lt;br /&gt;
* {{App|Escrotum|pygtk を使用して画面をキャプチャ。scrot の影響を受けています。|https://github.com/Roger/escrotum|{{AUR|escrotum-git}}}}&lt;br /&gt;
* {{App|Flameshot|インタラクティブにスクリーンショットを取得できる Qt5 ベースのソフトウェア。取得したいエリアを選択して様々なツールで落書きしたりカスタマイズする機能があります。|https://github.com/lupoDharkael/flameshot|{{Pkg|flameshot}}}}&lt;br /&gt;
* {{App|gnome-screenshot|dconf, gtk3, libcanberra にしか依存しないため GNOME 以外でも使えます。|http://gnome.org|{{Pkg|gnome-screenshot}}}}&lt;br /&gt;
* {{App|gscreenshot|シンプルな GTK スクリーンショットユーティリティ。遅延時間を設定したり範囲選択・クリップボードにコピーする機能があります。|https://github.com/thenaterhood/gscreenshot|{{AUR|gscreenshot}}}}&lt;br /&gt;
* {{App|imgur-screenshot|スクリーンショットを取得して [http://imgur.com imgur] にアップロードするツール。|https://github.com/jomo/imgur-screenshot|{{AUR|imgur-screenshot-git}}}}&lt;br /&gt;
* {{App|KShare|ShareX の影響を受けているクロスプラットフォームのユーティリティ。Qt で書かれています。|https://kshare.arsenarsen.com|{{AUR|kshare}}}}&lt;br /&gt;
* {{App|Lightscreen|退屈なスクリーンショットの保存とカタログ化を自動化するシンプルなツール。表には現れないバックグラウンドプロセスとして動作し、(複数の) ホットキーで呼び出してスクリーンショットファイルをユーザーの設定にあわせてディスクに保存する。|http://lightscreen.com.ar|{{AUR|lightscreen}}}}&lt;br /&gt;
* {{App|maim|スクリーンショットを取得するシンプルなコマンドラインユーティリティ。scrot を置き換えるものとして様々な点で scrot よりも優れています。|https://github.com/naelstrof/maim|{{Pkg|maim}}}}&lt;br /&gt;
* {{App|screencloud|画面全体のスクリーンショットや領域を選択して撮影し、[http://imgur.com imgur]+auth にスクリーンショットをアップロードできるツール。プラグインとシステムトレイが付属。|http://screencloud.net/|{{AUR|screencloud}}}}&lt;br /&gt;
* {{App|screengrab|スクリーンショットを手軽に取得するためのクロスプラットフォームのアプリケーション (Qt)。|http://screengrab.doomer.org/|{{Pkg|screengrab}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Scrot|Scrot]]|X 向けのシンプルなコマンドラインスクリーンショットユーティリティ。|http://freecode.com/projects/scrot|{{Pkg|scrot}}}}&lt;br /&gt;
* {{App|Shutter|リッチなスクリーンショット・編集プログラム。|http://shutter-project.org/|{{Pkg|shutter}}}}&lt;br /&gt;
* {{App|Spectacle|スクリーンショットを撮るための [[KDE]] のアプリケーション。デスクトップ全体、単一のウィンドウ、ウィンドウの一部、四角形またはフリーハンドで指定した領域の画面をキャプチャすることができます。{{Grp|kdegraphics}}{{Broken package link|パッケージが存在しません}} に含まれています。|https://github.com/KDE/spectacle/|{{Pkg|spectacle}}}}&lt;br /&gt;
* {{App|Xfce4 Screenshooter|画面全体、アクティブウィンドウ、または選択領域のキャプチャを行えます。スクリーンショットを撮るまでの待機時間とスクリーンショットを撮った後の動作を設定できます: PNG ファイルに保存、クリップボードにコピー、別のアプリケーションで開く、無料の画像ホスティングサービスである Imgur や ZimageZ にアップロード。{{Grp|xfce4-goodies}} に含まれています。|https://goodies.xfce.org/projects/applications/xfce4-screenshooter|{{Pkg|xfce4-screenshooter}}}}&lt;br /&gt;
* {{App|xwd|X Window System イメージダンプユーティリティ。|http://xorg.freedesktop.org/|{{Pkg|xorg-xwd}}}}&lt;br /&gt;
&lt;br /&gt;
==== xwd ====&lt;br /&gt;
&lt;br /&gt;
{{man|1|xwd}} is provided by {{Pkg|xorg-xwd}}.&lt;br /&gt;
&lt;br /&gt;
ルートウィンドウのスクリーンショットを撮るには:&lt;br /&gt;
&lt;br /&gt;
 $ xwd -root -out screenshot.xwd&lt;br /&gt;
&lt;br /&gt;
{{Tip|スクリーンショットを撮る前に遅延を取得するには、{{ic|sleep}} コマンドを使用します。例: {{ic|sleep 5;  xwd ...}}}}&lt;br /&gt;
&lt;br /&gt;
==== scrot ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|scrot}} を使用すると、CLI からスクリーンショットを取得できるようになり、ユーザー定義可能な遅延時間などの機能が提供されます。特に指示がない限り、ファイルは現在の作業ディレクトリに保存されます。&lt;br /&gt;
&lt;br /&gt;
 $ scrot -t 20 -d 5&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは、Web 投稿用にサムネイル (元の 20%) とともに日付付きの &#039;&#039;.png&#039;&#039; ファイルを保存します。この場合、キャプチャする前に 5 秒の遅延を発生させます。&lt;br /&gt;
&lt;br /&gt;
ファイルに保存するときに、標準の日付と時刻の書式設定を使用することもできます。例えば、&lt;br /&gt;
&lt;br /&gt;
 $ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png&lt;br /&gt;
&lt;br /&gt;
スクリーンショットを現在の年、月、日、時、分、秒を含むファイル名でホーム ディレクトリ内の &amp;quot;screenshots&amp;quot; というフォルダーに保存します。&lt;br /&gt;
&lt;br /&gt;
詳細については、{{man|1|scrot}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のウィンドウ マネージャー ({{AUR|dwm}}、{{Pkg|xmonad}}、およびおそらくその他) では、ウィンドウマネージャーのキーボード ショートカット経由で実行すると、{{ic|scrot -s}} が正しく動作しませんが、scrot の呼び出しの前に短い一時停止を追加することで、{{ic|sleep 0.2;  scrot -s}} 回避できます。}}&lt;br /&gt;
&lt;br /&gt;
==== escrotum ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|escrotum-git}} scrot からインスピレーションを得た、PyGTK を使用した画面キャプチャ&lt;br /&gt;
&lt;br /&gt;
ウィンドウを更新して選択モードを使用すると scrot に不具合が生じるため作成されました。&lt;br /&gt;
&lt;br /&gt;
コマンドラインインターフェイスは scrot とほぼ同じなので、代替として使用できます。&lt;br /&gt;
&lt;br /&gt;
==== maim ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|maim}} は、改善された scrot であることを目指しています。&lt;br /&gt;
&lt;br /&gt;
全画面をファイルに保存します。&lt;br /&gt;
&lt;br /&gt;
 $ maim &#039;&#039;filename&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
選択を求めてからファイルに保存します。&lt;br /&gt;
&lt;br /&gt;
 $ maim --select &#039;&#039;filename&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xdotool}} がインストールされていると仮定して、アクティブなウィンドウをファイルに保存します。&lt;br /&gt;
&lt;br /&gt;
 $ maim --window $(xdotool getactivewindow) &#039;&#039;filename&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xclip}} がインストールされていると仮定して、選択を求め、カーソルを使用せずに保存し、クリップボードに保存します。&lt;br /&gt;
&lt;br /&gt;
 $ maim -s | xclip -selection clipboard -t image/png -i&lt;br /&gt;
&lt;br /&gt;
=== デスクトップ環境による方法 ===&lt;br /&gt;
&lt;br /&gt;
==== Spectacle ====&lt;br /&gt;
&lt;br /&gt;
[[KDE]] を使っている場合、{{ic|Spectacle}} を使用すると良いでしょう。{{ic|Prnt Scr}} で使うことができます。&lt;br /&gt;
&lt;br /&gt;
Spectacle は {{Pkg|spectacle}} に入っています。&lt;br /&gt;
&lt;br /&gt;
==== Xfce Screenshooter ====&lt;br /&gt;
&lt;br /&gt;
[[Xfce]] を使っている場合 {{Pkg|xfce4-screenshooter}} をインストールしてキーボードバインディングを追加することができます:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Xfce Menu &amp;gt; Settings &amp;gt; Keyboard &amp;gt; Application Shortcuts&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Screenshot プロンプトをスキップしたい場合は、オプションのターミナルに {{ic|$ xfce4-screenshooter -h}} と入力してください。&lt;br /&gt;
&lt;br /&gt;
==== GNOME ====&lt;br /&gt;
&lt;br /&gt;
[[GNOME]] ユーザーは {{ic|Prnt Scr}} を押すか &#039;&#039;Apps &amp;gt; Accessories &amp;gt; Take Screenshot&#039;&#039; でスクリーンショットが取れます。{{Pkg|gnome-screenshot}} をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
==== Cinnamon ====&lt;br /&gt;
&lt;br /&gt;
[[Cinnamon]] はデフォルトでスクリーンショットユーティリティがインストールされません。{{Pkg|gnome-screenshot}} をインストールするとスクリーンショットが有効になり、&#039;&#039;Menu &amp;gt; Accessories &amp;gt; Screenshot&#039;&#039; または {{ic|Prnt Scr}} を押すことで撮影できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== 他のデスクトップ環境やウィンドウマネージャ ====&lt;br /&gt;
&lt;br /&gt;
[[LXDE]] などのデスクトップ環境や [[Openbox]] や [[Compiz]] などのウィンドウマネージャの場合、上述のコマンドをホットキーに追加してスクリーンショットを撮影することができます。例えば:&lt;br /&gt;
 $ import -window root ~/Pictures/$(date &#039;+%Y%m%d-%H%M%S&#039;).png&lt;br /&gt;
上のコマンドを {{ic|Prnt Scr}} キーに追加すれば Compiz でスクリーンショットを取得して Pictures フォルダに日付を付けて保存できます。Openbox の {{ic|rc.xml}} ファイルではコンマを使えないので、Openbox でこのコマンドを {{ic|Prnt Scr}} キーに指定するには、{{ic|rc.xml}} ファイルのキーボードセクションに以下を追加する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|rc.xml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Screenshot --&amp;gt;&lt;br /&gt;
    &amp;lt;keybind key=&amp;quot;Print&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;action name=&amp;quot;Execute&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;sh -c &amp;quot;import -window root ~/Pictures/$(date &#039;+%Y%m%d-%H%M%S&#039;).png&amp;quot;&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/keybind&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
上記の {{ic|Print}} が動作しない場合、[[特別なキーボードキー]]をみて、別の&#039;&#039;キーシム&#039;&#039;や&#039;&#039;キーコード&#039;&#039;を使って下さい。&lt;br /&gt;
[[LXDE]] などのデスクトップ環境や [[Openbox]] や [[Compiz]] などのウィンドウマネージャの場合、上述のコマンドをホットキーに追加してスクリーンショットを撮影することができます。例えば:&lt;br /&gt;
 $ import -window root ~/Pictures/$(date &#039;+%Y%m%d-%H%M%S&#039;).png&lt;br /&gt;
上のコマンドを {{ic|Prnt Scr}} キーに追加すれば Compiz でスクリーンショットを取得して Pictures フォルダに日付を付けて保存できます。Openbox の {{ic|rc.xml}} ファイルではコンマを使えないので、Openbox でこのコマンドを {{ic|Prnt Scr}} キーに指定するには、{{ic|rc.xml}} ファイルのキーボードセクションに以下を追加する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|rc.xml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;!-- Screenshot --&amp;gt;&lt;br /&gt;
    &amp;lt;keybind key=&amp;quot;Print&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;action name=&amp;quot;Execute&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;command&amp;gt;sh -c &amp;quot;import -window root ~/Pictures/$(date &#039;+%Y%m%d-%H%M%S&#039;).png&amp;quot;&amp;lt;/command&amp;gt;&lt;br /&gt;
      &amp;lt;/action&amp;gt;&lt;br /&gt;
    &amp;lt;/keybind&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
上記の {{ic|Print}} が動作しない場合、[[特別なキーボードキー]]をみて、別の&#039;&#039;キーシム&#039;&#039;や&#039;&#039;キーコード&#039;&#039;を使って下さい。&lt;br /&gt;
&lt;br /&gt;
=== スクリーンショットユーティリティが含まれているパッケージ ===&lt;br /&gt;
&lt;br /&gt;
==== ImageMagick/GraphicsMagick ====&lt;br /&gt;
&lt;br /&gt;
See [[ImageMagick#Screenshot taking]].&lt;br /&gt;
&lt;br /&gt;
==== GIMP ====&lt;br /&gt;
&lt;br /&gt;
GIMP を使ってスクリーンショットを取得することもできます (&#039;&#039;File &amp;gt; Create &amp;gt; Screenshot&#039;&#039;...)。&lt;br /&gt;
&lt;br /&gt;
==== imlib2 ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|imlib2}} にはスクリーンショットを取得するためのバイナリ {{ic|imlib2_grab}} が含まれています。フルスクリーンのスクリーンショットを取得するには、次を入力:&lt;br /&gt;
&lt;br /&gt;
 $ imlib2_grab screenshot.png&lt;br /&gt;
&lt;br /&gt;
==== FFmpeg ====&lt;br /&gt;
&lt;br /&gt;
[[FFmpeg#スクリーンキャプチャ]]を参照。&lt;br /&gt;
&lt;br /&gt;
== 一般的な方法 ==&lt;br /&gt;
&lt;br /&gt;
=== ImageMagick/GraphicsMagick ===&lt;br /&gt;
&lt;br /&gt;
{{ic|import}} コマンドを使うことで現在のシステムのスクリーンショットを簡単に取得できます:&lt;br /&gt;
 $ import -window root screenshot.jpg&lt;br /&gt;
&lt;br /&gt;
{{ic|import}} は {{Pkg|imagemagick}} パッケージに入っています。&lt;br /&gt;
&lt;br /&gt;
{{ic|-window}} オプションを付けずに {{ic|import}} を実行するとウィンドウや任意の領域をインタラクティブに選択することが可能です。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;&#039;graphicsmagick&#039;&#039;&#039; を使いたい場合は、&amp;quot;gm&amp;quot; を前に付けて下さい、例: {{ic|$ gm import -window root screenshot.jpg}}。}}&lt;br /&gt;
&lt;br /&gt;
==== 複数の X 画面のスクリーンショット ====&lt;br /&gt;
&lt;br /&gt;
twinview または dualhead で使っている場合、2回スクリーンショットを取得して {{Ic|imagemagick}} を使って貼り付けます:&lt;br /&gt;
{{bc|&lt;br /&gt;
import -window root -display :0.0 -screen /tmp/0.png&lt;br /&gt;
import -window root -display :0.1 -screen /tmp/1.png&lt;br /&gt;
convert +append /tmp/0.png /tmp/1.png screenshot.png&lt;br /&gt;
rm /tmp/{0,1}.png&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Xinerama ヘッドのスクリーンショット ====&lt;br /&gt;
&lt;br /&gt;
Xinerama による multi-head セットアップでは仮想スクリーンが一つしかありません。物理的なスクリーンの高さに違いがあると、スクリーンショットにデッドスペースが出来てしまいます。こういう場合、それぞれの物理的なスクリーンごとにスクリーンショットを取得すると良いでしょう。Xinerama の情報が X サーバーから取り出せていれば、以下のスクリプトが動作します:&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xdpyinfo -ext XINERAMA | sed &#039;/^  head #/!d;s///&#039; |&lt;br /&gt;
while IFS=&#039; :x@,&#039; read i w h x y; do&lt;br /&gt;
        import -window root -crop ${w}x$h+$x+$y head_$i.png&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== アクティブなウィンドウ/フォーカスしたウィンドウのスクリーンショット ====&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは現在フォーカスされているウィンドウのスクリーンショットを取得します。EWMH/NetWM 準拠の X ウィンドウマネージャで動作します。スクリーンショットを上書きしないように、ファイル名に取得時刻を使っています。&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
activeWinLine=$(xprop -root | grep &amp;quot;_NET_ACTIVE_WINDOW(WINDOW)&amp;quot;)&lt;br /&gt;
activeWinId=${activeWinLine:40}&lt;br /&gt;
import -window &amp;quot;$activeWinId&amp;quot; /tmp/$(date +%F_%H%M%S_%N).png&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
もしくは、次のコマンドは EWMH をサポートしているかどうかに関わらず動作します:&lt;br /&gt;
 $ import -window &amp;quot;$(xdotool getwindowfocus -f)&amp;quot; /tmp/$(date +%F_%H%M%S_%N).png&lt;br /&gt;
&lt;br /&gt;
{{Note|(dwb や zathura) プログラムのスクリーンショットが空になる場合は、{{ic|xdotool}} コマンドに {{ic|-frame}} を付けたり {{ic|-f}} を削除してみてください。}}&lt;br /&gt;
&lt;br /&gt;
=== xwd ===&lt;br /&gt;
&lt;br /&gt;
ルートウィンドウのスクリーンショットを取得:&lt;br /&gt;
 $ xwd -root -out screenshot.xwd&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|import}} でアクティブウィンドウのスクリーンショットを取得する方法でも {{ic|xwd}} を使うことができます。}}&lt;br /&gt;
&lt;br /&gt;
=== scrot ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|scrot}} を使えば CLI からスクリーンショットを撮ることができ、シャッターを押すまでの待機時間をユーザーが定義できるなどの機能があります。特に指定がなければ、カレントディレクトリにファイルが保存されます。&lt;br /&gt;
 $ scrot -t 20 -d 5&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは日付が入った {{ic|.png}} ファイルが作成され、ウェブ投稿用にサムネイルも作られます (元の画像の 20%)。上の例ではキャプチャするまで5秒間待ちます。&lt;br /&gt;
&lt;br /&gt;
ファイルに保存するときに標準的な日付のフォーマットを使うこともできます、例えば:&lt;br /&gt;
 $ scrot ~/screenshots/%Y-%m-%d-%T-screenshot.png&lt;br /&gt;
&lt;br /&gt;
このコマンドではホームディレクトリの &amp;quot;screenshots&amp;quot; という名前のフォルダに、現在の年・月・日・時間・分・秒がファイル名のスクリーンショットが保存されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|1|scrot}} を見て下さい。[https://github.com/kaihendry/Kai-s--HOME/tree/master/bin] のようにファイルのアップロードを自動化することもできます。&lt;br /&gt;
&lt;br /&gt;
{{Note|一部のウィンドウマネージャでは ([[dwm]] や [[xmonad]] など)、{{ic|scrot -s}} がウィンドウマネージャのキーボードショートカットで正しく動作しないことがあります。scrot を実行する前に短いポーズを挟むことで問題を解決できます: {{ic|sleep 0.2; scrot -s}}。}}&lt;br /&gt;
&lt;br /&gt;
=== escrotum ===&lt;br /&gt;
&lt;br /&gt;
{{AUR|escrotum-git}} は pygtk を使って画面をキャプチャします。scrot にインスパイアされています。&lt;br /&gt;
&lt;br /&gt;
選択モードを使った時に scrot ではウィンドウのリフレッシュでバグが発生するので開発されました。&lt;br /&gt;
&lt;br /&gt;
コマンドラインインターフェースは scrot とほぼ同じなので、そのまま同じように使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== maim ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|maim}} は scrot の向上版を目指しています。&lt;br /&gt;
&lt;br /&gt;
scrot の欠点を補っており [https://github.com/naelstrof/slop slop] で領域のスクリーンショットを取得します。&lt;br /&gt;
&lt;br /&gt;
=== FFmpeg ===&lt;br /&gt;
&lt;br /&gt;
[[FFmpeg]] は X11 のスクリーンをキャプチャできる x11grab デバイスを提供しています。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの&#039;&#039;横幅&#039;&#039;x&#039;&#039;高さ&#039;&#039;を指定してスクリーンショットを取得:&lt;br /&gt;
&lt;br /&gt;
 $ ffmpeg -f x11grab -video_size &#039;&#039;width&#039;&#039;x&#039;&#039;height&#039;&#039; -i $DISPLAY -vframes 1 screen.png&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでは PNG コーデック (ロスレスでスクリーンショットに向いている) を使っていますが、他の画像コーデックも使うことができます。&lt;br /&gt;
&lt;br /&gt;
同じデバイスを使ってスクリーンキャストも可能です (ディスプレイのリフレッシュレートを &#039;&#039;rate&#039;&#039; HZ で指定):&lt;br /&gt;
&lt;br /&gt;
 $ ffmpeg -f x11grab -video_size &#039;&#039;width&#039;&#039;x&#039;&#039;height&#039;&#039; -framerate &#039;&#039;rate&#039;&#039; -i $DISPLAY -c:v libx264 -preset ultrafast cast.mkv&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでは、エンコード速度が一番高速な x264 コーデックを使っていますが、他のコーデックも使えます。ただし (ディスクのパフォーマンスが足りなかったりエンコードが遅かったりして) フレームの書き込みが遅すぎると、フレームが抜け落ちて出力された動画は飛び飛びになります。&lt;br /&gt;
&lt;br /&gt;
=== Weston ===&lt;br /&gt;
&lt;br /&gt;
Wayland のコンポジットマネージャである [[Weston]] では、{{ic|Super+s}} を押すことでスクリーンショットを撮影することができ、Weston の現在の作業ディレクトリに保存されます。スクリーンキャストもサポートされています。録画の開始と停止は {{ic|Super+r}} を押すことで行われ、Weston の現在の作業ディレクトリに {{ic|capture.wcap}} という名前のファイルが作成されます。{{ic|wcap-decode --yuv4mpeg2 capture.wcap}} を実行することでキャプチャを YUV フォーマットにデコードできます。このコマンドの出力をファイルに書き込んだり、FFmpeg にパイプして更に処理を加えることもできます。&lt;br /&gt;
&lt;br /&gt;
== スクリーンキャスト ソフトウェア ==&lt;br /&gt;
&lt;br /&gt;
[[FFmpeg#スクリーンキャプチャ]] と [[Wikipedia:Comparison of screencasting software]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
スクリーンキャストユーティリティは、デスクトップや個々のウィンドウのビデオを作成することができます。&lt;br /&gt;
&lt;br /&gt;
* {{App|Byzanz|GIF アニメーションを作成するシンプルなスクリーンキャストツール。|https://gitlab.gnome.org/Archive/byzanz|{{Pkg|byzanz}}}}&lt;br /&gt;
* {{App|Deepin Screen Recorder|Deepin デスクトップ用のスクリーンレコーダーアプリケーション。|https://www.deepin.org/en/original/deepin-screen-recorder/|{{Pkg|deepin-screen-recorder}}}}&lt;br /&gt;
* {{App|FFcast|Bash で書かれた FFmpeg ベースのスクリーンキャストツール。|https://github.com/lolilolicon/FFcast|{{AUR|ffcast}}}}&lt;br /&gt;
* {{App|Gpu Screen Recorder|Nvidia ShadowPlay に匹敵する、パフォーマンスを大幅に向上させるためだけに GPU でビデオをキャプチャするスクリーンレコーダー。ライブストリーミングとリプレイバッファもサポートします。現在は NVIDIA に限定されています。|https://git.dec05eba.com/gpu-screen-recorder-gtk/about/|{{AUR|gpu-screen-recorder-gtk-git}}}}&lt;br /&gt;
* {{App|Green Recorder|Linux システム用のシンプルかつ機能的なデスクトップレコーダー。|https://github.com/dvershinin/green-recorder|{{AUR|green-recorder}}}}&lt;br /&gt;
* {{App|Kazam|デザインを念頭に置いたスクリーンキャストプログラム。マルチスクリーン設定を処理します。|https://launchpad.net/kazam|{{AUR|kazam}}}}&lt;br /&gt;
* {{App|Kooha|最小限の GTK インターフェースを備えたシンプルなスクリーンレコーダー。|https://github.com/SeaDve/Kooha|{{Pkg|kooha}}}}&lt;br /&gt;
* {{App|menyoki|コマンドラインでスクリーンショット {ショット、キャスト} を実行し、ImageOpsを実行します。|https://github.com/orhun/menyoki|{{Pkg|menyoki}}}}&lt;br /&gt;
* {{App|[[Open Broadcaster Software]]|ビデオ録画およびライブストリーミングアプリケーション。|https://obsproject.com/|{{Pkg|obs-studio}}}}&lt;br /&gt;
:* {{AUR|obs-gnome-screencast}} – GNOME スクリーンキャスト機能用のプラグイン、Wayland をサポート&lt;br /&gt;
* {{App|[[Wikipedia:Peek_(software)|Peek]]|GIF、APNG、WebM、または MP4 アニメーションを生成するシンプルなスクリーンキャストツール。|https://github.com/phw/peek|{{Pkg|peek}}}}&lt;br /&gt;
* {{App|RecApp|GTK で書かれたユーザーフレンドリーなスクリーンキャスター。無料の GStreamer モジュールを使用し、FFmpeg に依存しません。|https://github.com/amikha1lov/RecApp|{{AUR|recapp-git}}}} &lt;br /&gt;
* {{App|RecordItNow|KDE 4 用のプラグインベースのデスクトップレコーダー。|http://recorditnow.sourceforge.net/|{{AUR|recorditnow}}}}&lt;br /&gt;
* {{App|[[RecordMyDesktop]]|CLI、GTK、または Qt インターフェイスを使用してデスクトップを ogg 形式に記録する使いやすいユーティリティです。(開発はアクティブではありません)|http://recordmydesktop.sourceforge.net/|CLI: {{Pkg|recordmydesktop}}, GTK: {{AUR|gtk-recordmydesktop}}, Qt: {{AUR|qt-recordmydesktop}}}}&lt;br /&gt;
* {{App|screencast|FFmpeg を使用して X11 デスクトップを記録するためのコマンドラインインターフェイス。オフライン記録とライブストリーミングをサポートします。|https://github.com/dbermond/screencast/|{{AUR|screencast}}}}&lt;br /&gt;
* {{App|Screencast|基本的な OS 向けに設計されたシンプルなスクリーンキャストレコーダー。|https://github.com/artemanufrij/screencast|{{AUR|pantheon-screencast}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SimpleScreenRecorder|SimpleScreenRecorder]]|X11 および OpenGL をサポートする C++/Qt5 で書かれた機能豊富なスクリーンレコーダー。|https://www.maartenbaert.be/simplescreenrecorder/|{{AUR|simplescreenrecorder}}}}&lt;br /&gt;
* {{App|Spectacle|スクリーン {ショット,キャスト} 用の [[KDE]] アプリケーション。Wayland 上のデスクトップ全体、単一の画面、または単一のウィンドウのビデオ (音声なし) をキャプチャできます。{{Grp|kde-graphics}} の一部。|https://invent.kde.org/graphics/spectacle|{{Pkg|spectacle}}}}&lt;br /&gt;
* {{App|VokoScreen|GStreamer を使用したシンプルなスクリーンキャスト GUI ツール。|https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html|{{Pkg|vokoscreen}}}}&lt;br /&gt;
* {{App|Wayfarer|GNOME / Wayland / Pipewire 用の GTK4 スクリーンレコーダー。|https://github.com/stronnag/wayfarer|{{AUR|wayfarer}}}}&lt;br /&gt;
* {{App|[[Wikipedia:XVidCap|XVidCap]]|X Window System の画面出力を音声ナレーション付きでスクリーンキャストまたはデジタル録音するためのアプリケーション。|http://xvidcap.sourceforge.net/|{{AUR|xvidcap}}}}&lt;br /&gt;
&lt;br /&gt;
== Wayland ==&lt;br /&gt;
&lt;br /&gt;
wlroots ベースのコンポジタで画面をキャプチャするには、スクリーンショットの場合は {{Pkg|grim}} または {{AUR|swayshot}}、ビデオの場合は {{Pkg|wf-recorder}} (または {{AUR|wf-recorder-git}}) を使用します。{{AUR|wlrobs-hg}} は、wlroot ベースのコンポジタでのスクリーンキャプチャーを可能にする {{Pkg|obs-studio}}プラグインです。必要に応じて、{{Pkg|slurp}} を使用してキャプチャする画面の部分を選択できます。&lt;br /&gt;
&lt;br /&gt;
画面全体のスクリーンショットを撮ります。&lt;br /&gt;
&lt;br /&gt;
 $ grim screenshot.png&lt;br /&gt;
&lt;br /&gt;
現在のウィンドウのスクリーンショットを撮る。&lt;br /&gt;
&lt;br /&gt;
 $ grim -g &amp;quot;$(swaymsg -t get_tree | jq -r &#039;.. | select(.focused?) | .rect | &amp;quot;\(.x),\(.y) \(.width)x\(.height)&amp;quot;&#039;)&amp;quot; screenshot.png&lt;br /&gt;
&lt;br /&gt;
画面の一部のスクリーンショットを撮ります。&lt;br /&gt;
&lt;br /&gt;
 $ grim -g &amp;quot;$(slurp)&amp;quot; screenshot.png&lt;br /&gt;
&lt;br /&gt;
画面の一部のスクリーンショットを取得し、{{Pkg|wl-clipboard}} を使用してクリップボードに出力します。&lt;br /&gt;
&lt;br /&gt;
 $ grim -g &amp;quot;$(slurp)&amp;quot; - | wl-copy&lt;br /&gt;
&lt;br /&gt;
画面全体のビデオをキャプチャする。&lt;br /&gt;
&lt;br /&gt;
 $ wf-recorder -f recording.mp4&lt;br /&gt;
&lt;br /&gt;
画面の一部のビデオをキャプチャする。&lt;br /&gt;
&lt;br /&gt;
 $ wf-recorder -g &amp;quot;$(slurp)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* [https://github.com/de-arl/slurpshot slurpshot] を使用してスクリプトを撮るインタラクティブなスクリーンショットです {{Pkg|bemenu}}&lt;br /&gt;
* {{Pkg|swappy}} キャプチャ後のスクリーンショット編集および描画ツールを使用するには {{ic|grim -g &amp;quot;$(slurp)&amp;quot; - {{!}} swappy -f -}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、上記の一部のプログラムは Wayland (例:{{Pkg|ksnip}}、{{AUR|green-recorder}}) で動作します。&lt;br /&gt;
&lt;br /&gt;
===スクリーンキャスト===&lt;br /&gt;
&lt;br /&gt;
==== GNOME スクリーンキャストより ====&lt;br /&gt;
&lt;br /&gt;
{{AUR|green-recorder}}、{{AUR|obs-gnome-screencast}}、および {{AUR|obs-xdg-portal-git}} は、GNOME スクリーンキャスト機能を使用した Wayland でのスクリーンレコーディングをサポートしています。&lt;br /&gt;
&lt;br /&gt;
==== 仮想 Web カメラのビデオフィード経由 ====&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* このメソッドは {{AUR|zoom}} ({{Pkg|xorg-xwayland}} で実行されるデスクトップ・クライアント) および {{Pkg|chrome}} ({{Pkg|firefox}} で実行される [https://bigbluebutton.org/ BigBlueButton]) でテストされています ({{Pkg|firefox}} では解像度が非常に低くなります) {{AUR|skypeforlinux-stable-bin}} は仮想ビデオデバイス {{ic|VirtualVideoDevice}} を検出しますが、空白の画面を出力します。&lt;br /&gt;
* この例では {{ic|wf-recorder}} を使用していますが、出力を仮想デバイスに送信するだけで、任意のソフトウェアを使用できます。}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|wf-recorder}} (または {{AUR|wf-recorder-git}}) および {{Pkg|v4l2loopback-dkms}} をインストールします。次のパラメータを指定して {{ic|v4l2loopback}} カーネルモジュールをロードします。&lt;br /&gt;
&lt;br /&gt;
 # modprobe v4l2loopback exclusive_caps=1 card_label=VirtualVideoDevice&lt;br /&gt;
&lt;br /&gt;
新しい仮想ビデオデバイス {{ic|VirtualVideoDevice}} が作成されたことを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ v4l2-ctl --list-devices|&lt;br /&gt;
...&lt;br /&gt;
VirtualVideoDevice (platform:v4l2loopback-000):&lt;br /&gt;
	/dev/video2&lt;br /&gt;
...    &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|wf-recorder}} を使用して画面の記録を開始し、{{ic|v4l2loopback}} によって作成された新しい仮想ビデオデバイス {{ic|VirtualVideoDevice}} に出力を送ります。&lt;br /&gt;
&lt;br /&gt;
 $ wf-recorder --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p&lt;br /&gt;
&lt;br /&gt;
ビデオ出力をズーム [https://github.com/ammen99/wf-recorder/pull/43] と互換性を持たせるには、{{ic|yuv420p}} 色空間が必要です。&lt;br /&gt;
&lt;br /&gt;
上記の仮想ビデオデバイスをビデオ通話/ビデオ会議アプリケーションの &amp;quot;ウェブカメラ&amp;quot; として選択できるようになりました (デバイスの名前は {{ic|VirtualVideoDevice}}) {{ic|ffplay}} ({{Pkg|ffmpeg}}の一部) 、{{Pkg|mpv}}、または {{ic|gst-launch}} ({{Pkg|gstreamer}} の一部) を使用して、仮想ビデオデバイスが実際にスクリーン共有を出力していることを確認できます。&lt;br /&gt;
&lt;br /&gt;
 $ ffplay /dev/video2&lt;br /&gt;
&lt;br /&gt;
 $ mpv av://v4l2:/dev/video2&lt;br /&gt;
&lt;br /&gt;
 $ gst-launch-1.0 -v v4l2src device=/dev/video2 ! glimagesink&lt;br /&gt;
&lt;br /&gt;
Firefox がビデオストリームを読み取ることができず、&amp;quot;AbortError: Starting video failed&amp;quot; のようなメッセージを出力する場合は、プリロードを試してください {{ic|v4l2compat.so}}:&lt;br /&gt;
 $ LD_PRELOAD=/usr/lib/v4l1compat.so firefox&lt;br /&gt;
&lt;br /&gt;
===== 個々のアプリケーションの共有 =====&lt;br /&gt;
&lt;br /&gt;
{{Warning|ウィンドウのサイズを変更しても、共有されている領域は変更されないため、このメソッドには個々のアプリケーション共有の適切な実装は含まれません。}}&lt;br /&gt;
&lt;br /&gt;
前述のように、{{ic|wf-recorder}} では、まず {{Pkg|slurp}} で領域を選択することで、画面の一部のみを記録できます。この機能を使用して、仮想ビデオデバイスを介して特定のリージョンまたはアプリケーションウィンドウを共有するには、次の変更されたコマンドで画面の記録を開始します。&lt;br /&gt;
&lt;br /&gt;
 $ wf-recorder &#039;&#039;&#039;-g &amp;quot;$(slurp)&amp;quot;&#039;&#039;&#039; --muxer=v4l2 --codec=rawvideo --file=/dev/video2 -x yuv420p&lt;br /&gt;
&lt;br /&gt;
画面の領域を選択すると、上記のように仮想ビデオデバイス {{ic|/dev/video2}} からビデオフィードにアクセスできるようになります。&lt;br /&gt;
&lt;br /&gt;
==== WebRTC プロトコル経由 ====&lt;br /&gt;
&lt;br /&gt;
{{Warning|このメソッドでは、出力全体の共有のみが許可され、個々のアプリケーション [https://github.com/emersion/xdg-desktop-portal-wlr/wiki/FAQ#will-this-let-me-share-individual-windows] の共有は許可されません。}}&lt;br /&gt;
&lt;br /&gt;
こちらを参照 [[PipeWire#WebRTC 画面共有]].&lt;br /&gt;
&lt;br /&gt;
これで Chromium と Firefox からスクリーンシェアにアクセスできるようになります。こちらを参照、 [https://mozilla.github.io/webrtc-landing/gum_test.html Mozilla&#039;s getUserMedia/getDisplayMedia Test Page]&lt;br /&gt;
&lt;br /&gt;
== ターミナル ==&lt;br /&gt;
&lt;br /&gt;
=== ansi コードで出力 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|util-linux}} パッケージに含まれている、{{ic|script}} コマンドを使うことができます。{{ic|$ script}} と入力すればその瞬間から、全ての出力は (ansi コードを含めて) {{ic|typescript}} ファイルに保存されるようになります。&lt;br /&gt;
&lt;br /&gt;
終わったら、{{ic|exit}} と入力するだけで {{ic|typescript}} が作成されます。作成されたファイルは [[AUR]] の {{AUR|ansi2html}} パッケージを使って html に変換できます。&lt;br /&gt;
&lt;br /&gt;
{{ic|typescript}} ファイルを {{ic|typescript.html}} に変換するには、次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ ansi2html --bg=dark &amp;lt; typescript &amp;gt; typescript.html&lt;br /&gt;
&lt;br /&gt;
また、コマンドによっては直接 ansi2html にパイプで渡すこともできます:&lt;br /&gt;
&lt;br /&gt;
 $ ls --color|ansi2html --bg=dark &amp;gt;output.html&lt;br /&gt;
&lt;br /&gt;
どんなコマンドでも使えるというわけではないので、その場合は、{{ic|script}} を使う必要があります。&lt;br /&gt;
&lt;br /&gt;
=== フレームバッファ ===&lt;br /&gt;
&lt;br /&gt;
[[フレームバッファ]]をインストールして、{{Pkg|fbgrab}} か {{Pkg|fbdump}} を使用して、スクリーンショットを撮ります。&lt;br /&gt;
&lt;br /&gt;
=== 仮想コンソール ===&lt;br /&gt;
&lt;br /&gt;
[[Uvesafb]] をインストールして {{Pkg|fbgrab}} または {{Pkg|fbdump}} を使ってスクリーンショットを取得してください。&lt;br /&gt;
&lt;br /&gt;
単にコンソールの文章を取得したいだけで画像は要らない場合、{{Pkg|util-linux}} パッケージに含まれている {{ic|setterm}} を使うことができます。以下のコマンドは仮想コンソール 1 のテキストをカレントディレクトリの screen.dump ファイルに保存します:&lt;br /&gt;
 # setterm -dump 1 -file screen.dump&lt;br /&gt;
&lt;br /&gt;
{{ic|/dev/vcs1}} の中身を読まないといけないので root 権限が必要です。&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=KMSCON&amp;diff=34238</id>
		<title>KMSCON</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=KMSCON&amp;diff=34238"/>
		<updated>2023-10-11T10:57:02Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* インストール */ kmscon 9.0.0が 2022 年にリリースされていたので修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ターミナルエミュレータ]]&lt;br /&gt;
[[en:KMSCON]]&lt;br /&gt;
[[zh-hans:KMSCON]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|KMS}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|fbterm}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://github.com/dvdhrm/kmscon プロジェクトの GitHub ページ]より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Kmscon は linux のカーネルモード設定 (KMS) を使ったシンプルなターミナルエミュレータです。カーネルの VT 実装をユーザスペースのコンソールで置き換えようという試みです。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 機能 ==&lt;br /&gt;
&lt;br /&gt;
Kmscon はカーネル内蔵の linux コンソールの互換品として機能します。以下の機能が存在します:&lt;br /&gt;
&lt;br /&gt;
* vt220 から vt510 までの完全な実装。&lt;br /&gt;
* 国際化の完全サポート:&lt;br /&gt;
** Kmscon は CJK を含む、Unicode 文字を全て表示できます。&lt;br /&gt;
** Kmscon は libxkbcommon を使って国際化キーボードを扱えるため、X キーボードでサポートされている全てのキーボードレイアウトを利用することが可能です。&lt;br /&gt;
* ハードウェアアクセラレーションを使ったレンダリング。&lt;br /&gt;
* Multi-seat 可能。&lt;br /&gt;
&lt;br /&gt;
{{Note|root で kmscon コンソールにログインするには、{{ic|pam_securetty}} モジュールを無効にする必要があります。{{ic|/etc/pam.d/login}} 内の適切な行を削除・コメントアウトしてください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
その名前にかかわらず、KMS は kmscon に絶対必要というわけではありません。Kmscon は次のビデオバックエンドをサポートしています: fbdev (Linux fbdev ビデオバックエンド), drm2d (Linux DRM ソフトウェアレンダリングバックエンド), drm3d (Linux DRM ハードウェアレンダリングバックエンド)。あなたの環境でこの中のどれかひとつでも利用できるようにしてください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|kmscon}} もしくは開発版の {{AUR|kmscon-git}} をインストールしてください。あるいは {{AUR|kmscon-patched-git}} をインストールすることもできます。このパッチされたバージョンには依存パッケージの {{AUR|libtsm-patched-git}} と合わせて複数の修正や改善kmscon 9.0.0が含まれています。&lt;br /&gt;
&lt;br /&gt;
TTY1 で kmscon を使えるようにするには、以下を実行してください:&lt;br /&gt;
{{bc|&lt;br /&gt;
# systemctl disable getty@tty1.service&lt;br /&gt;
# systemctl enable kmsconvt@tty1.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
全ての仮想端末で kmscon を有効にする場合は、root で、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# ln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.service&lt;br /&gt;
}}&lt;br /&gt;
これで {{pkg|systemd}} がそれぞれの VT で agetty の代わりに kmscon を起動するようになります。より正確に言うと、このコマンドは systemd-logind が新しい VT で getty@.service の代わりに kmsconvt@.service を使うようにさせます。getty@.service を使っている他のユニットやスクリプトにはこの変更が適用されません。&lt;br /&gt;
&lt;br /&gt;
何らかの理由で kmscon が実行できないときは、代わりに getty@.service が起動されます。そのため問題が生じても動作を継続するためのフォールバックが常に存在します。さらに、VT が利用できない場合、このユニットは何も起動しません。&lt;br /&gt;
&lt;br /&gt;
{{Warning|If you&#039;ve replaced agetty on all terminals, take care to ensure &#039;&#039;kmscon&#039;&#039; presents you with a prompt before rebooting your machine, otherwise you may have to recover through a live CD.}}&lt;br /&gt;
&lt;br /&gt;
== CJK サポート ==&lt;br /&gt;
&lt;br /&gt;
Kmscon はデフォルトのフォントエンジン {{pkg|pango}} を通して CJK 文字のレンダリングをサポートしています。ただし、モノスペースフォントのエイリアスを適切な CJK フォントにマップするよう {{pkg|fontconfig}} を設定する必要があります。日本語ユーザーは、以下のテンプレートで日本語を表示できます:&lt;br /&gt;
{{hc|/etc/fonts/conf.d/99-kmscon.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE fontconfig SYSTEM &amp;quot;fonts.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fontconfig&amp;gt;&lt;br /&gt;
&amp;lt;match&amp;gt;&lt;br /&gt;
        &amp;lt;test name=&amp;quot;family&amp;quot;&amp;gt;&amp;lt;string&amp;gt;monospace&amp;lt;/string&amp;gt;&amp;lt;/test&amp;gt;&lt;br /&gt;
        &amp;lt;edit name=&amp;quot;family&amp;quot; mode=&amp;quot;prepend&amp;quot; binding=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;string&amp;gt;DejaVu Sans Mono&amp;lt;/string&amp;gt;&lt;br /&gt;
                &amp;lt;string&amp;gt;IPAGothic&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;/edit&amp;gt;&lt;br /&gt;
&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/fontconfig&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{Pkg|ttf-dejavu}} と {{Pkg|otf-ipafont}} をインストールしてください。両方とも[[公式リポジトリ]]に含まれています。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Xorg と kmscon の切り替えに問題が発生する ===&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] と kmscon の切り替えに問題が発生する場合は ExecStart に {{ic|--hwaccel --drm}} を追加するとよいかもしれません。&lt;br /&gt;
  ExecStart=/usr/bin/kmscon &amp;quot;--vt=%I&amp;quot; --seats=seat0 --no-switchvt --font-name Terminus --font-size 12 --hwaccel --drm&lt;br /&gt;
&lt;br /&gt;
=== 音声を制御できない ===&lt;br /&gt;
&lt;br /&gt;
バージョン 7 で、オーディオをコントロールできない場合、ユーザーを &#039;&#039;&#039;audio&#039;&#039;&#039; [[ユーザーとグループ#グループ管理|グループ]]に追加してください。ただしグループに追加すると[[Advanced Linux Sound Architecture#インストール|問題]]が発生します。&lt;br /&gt;
&lt;br /&gt;
=== Vim で端末の出力が消去されない ===&lt;br /&gt;
&lt;br /&gt;
Vim を開いたときに端末の出力が消えない場合があります。ファイルの編集は可能ですがテキストが変更するまで表示されません。回避策として、{{ic|1=TERM=vt220}} [[環境変数]]を設定してみてください。もしくは、{{Pkg|vi}} や [[Neovim]] などの vi ライクなテキストエディタを使ってください。&lt;br /&gt;
{{Note|{{ic|TERM}} を {{ic|vt220}} に設定した場合、カラーのサポートが利用できません。}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=KMSCON&amp;diff=34237</id>
		<title>KMSCON</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=KMSCON&amp;diff=34237"/>
		<updated>2023-10-11T10:52:10Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* インストール */ https://wiki.archlinux.org/title/KMSCON よりパッケージの参照を更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ターミナルエミュレータ]]&lt;br /&gt;
[[en:KMSCON]]&lt;br /&gt;
[[zh-hans:KMSCON]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|KMS}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|fbterm}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://github.com/dvdhrm/kmscon プロジェクトの GitHub ページ]より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Kmscon は linux のカーネルモード設定 (KMS) を使ったシンプルなターミナルエミュレータです。カーネルの VT 実装をユーザスペースのコンソールで置き換えようという試みです。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 機能 ==&lt;br /&gt;
&lt;br /&gt;
Kmscon はカーネル内蔵の linux コンソールの互換品として機能します。以下の機能が存在します:&lt;br /&gt;
&lt;br /&gt;
* vt220 から vt510 までの完全な実装。&lt;br /&gt;
* 国際化の完全サポート:&lt;br /&gt;
** Kmscon は CJK を含む、Unicode 文字を全て表示できます。&lt;br /&gt;
** Kmscon は libxkbcommon を使って国際化キーボードを扱えるため、X キーボードでサポートされている全てのキーボードレイアウトを利用することが可能です。&lt;br /&gt;
* ハードウェアアクセラレーションを使ったレンダリング。&lt;br /&gt;
* Multi-seat 可能。&lt;br /&gt;
&lt;br /&gt;
{{Note|root で kmscon コンソールにログインするには、{{ic|pam_securetty}} モジュールを無効にする必要があります。{{ic|/etc/pam.d/login}} 内の適切な行を削除・コメントアウトしてください。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
その名前にかかわらず、KMS は kmscon に絶対必要というわけではありません。Kmscon は次のビデオバックエンドをサポートしています: fbdev (Linux fbdev ビデオバックエンド), drm2d (Linux DRM ソフトウェアレンダリングバックエンド), drm3d (Linux DRM ハードウェアレンダリングバックエンド)。あなたの環境でこの中のどれかひとつでも利用できるようにしてください。&lt;br /&gt;
&lt;br /&gt;
{{AUR|kmscon}} もしくは開発版の {{AUR|kmscon-git}} をインストールしてください。あるいは {{AUR|kmscon-patched-git}} をインストールすることもできます。このパッチされたバージョンには依存パッケージの {{AUR|libtsm-patched-git}} と合わせて、オリジナルのバージョン（2014年以降アップデートがない）には含まれない複数の修正や改善（24-bit カラーのサポート等）が含まれています。&lt;br /&gt;
&lt;br /&gt;
TTY1 で kmscon を使えるようにするには、以下を実行してください:&lt;br /&gt;
{{bc|&lt;br /&gt;
# systemctl disable getty@tty1.service&lt;br /&gt;
# systemctl enable kmsconvt@tty1.service&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
全ての仮想端末で kmscon を有効にする場合は、root で、以下を実行してください:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# ln -s /usr/lib/systemd/system/kmsconvt\@.service /etc/systemd/system/autovt\@.service&lt;br /&gt;
}}&lt;br /&gt;
これで {{pkg|systemd}} がそれぞれの VT で agetty の代わりに kmscon を起動するようになります。より正確に言うと、このコマンドは systemd-logind が新しい VT で getty@.service の代わりに kmsconvt@.service を使うようにさせます。getty@.service を使っている他のユニットやスクリプトにはこの変更が適用されません。&lt;br /&gt;
&lt;br /&gt;
何らかの理由で kmscon が実行できないときは、代わりに getty@.service が起動されます。そのため問題が生じても動作を継続するためのフォールバックが常に存在します。さらに、VT が利用できない場合、このユニットは何も起動しません。&lt;br /&gt;
&lt;br /&gt;
{{Warning|If you&#039;ve replaced agetty on all terminals, take care to ensure &#039;&#039;kmscon&#039;&#039; presents you with a prompt before rebooting your machine, otherwise you may have to recover through a live CD.}}&lt;br /&gt;
&lt;br /&gt;
== CJK サポート ==&lt;br /&gt;
&lt;br /&gt;
Kmscon はデフォルトのフォントエンジン {{pkg|pango}} を通して CJK 文字のレンダリングをサポートしています。ただし、モノスペースフォントのエイリアスを適切な CJK フォントにマップするよう {{pkg|fontconfig}} を設定する必要があります。日本語ユーザーは、以下のテンプレートで日本語を表示できます:&lt;br /&gt;
{{hc|/etc/fonts/conf.d/99-kmscon.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE fontconfig SYSTEM &amp;quot;fonts.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;fontconfig&amp;gt;&lt;br /&gt;
&amp;lt;match&amp;gt;&lt;br /&gt;
        &amp;lt;test name=&amp;quot;family&amp;quot;&amp;gt;&amp;lt;string&amp;gt;monospace&amp;lt;/string&amp;gt;&amp;lt;/test&amp;gt;&lt;br /&gt;
        &amp;lt;edit name=&amp;quot;family&amp;quot; mode=&amp;quot;prepend&amp;quot; binding=&amp;quot;strong&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;string&amp;gt;DejaVu Sans Mono&amp;lt;/string&amp;gt;&lt;br /&gt;
                &amp;lt;string&amp;gt;IPAGothic&amp;lt;/string&amp;gt;&lt;br /&gt;
        &amp;lt;/edit&amp;gt;&lt;br /&gt;
&amp;lt;/match&amp;gt;&lt;br /&gt;
&amp;lt;/fontconfig&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
{{Pkg|ttf-dejavu}} と {{Pkg|otf-ipafont}} をインストールしてください。両方とも[[公式リポジトリ]]に含まれています。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Xorg と kmscon の切り替えに問題が発生する ===&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] と kmscon の切り替えに問題が発生する場合は ExecStart に {{ic|--hwaccel --drm}} を追加するとよいかもしれません。&lt;br /&gt;
  ExecStart=/usr/bin/kmscon &amp;quot;--vt=%I&amp;quot; --seats=seat0 --no-switchvt --font-name Terminus --font-size 12 --hwaccel --drm&lt;br /&gt;
&lt;br /&gt;
=== 音声を制御できない ===&lt;br /&gt;
&lt;br /&gt;
バージョン 7 で、オーディオをコントロールできない場合、ユーザーを &#039;&#039;&#039;audio&#039;&#039;&#039; [[ユーザーとグループ#グループ管理|グループ]]に追加してください。ただしグループに追加すると[[Advanced Linux Sound Architecture#インストール|問題]]が発生します。&lt;br /&gt;
&lt;br /&gt;
=== Vim で端末の出力が消去されない ===&lt;br /&gt;
&lt;br /&gt;
Vim を開いたときに端末の出力が消えない場合があります。ファイルの編集は可能ですがテキストが変更するまで表示されません。回避策として、{{ic|1=TERM=vt220}} [[環境変数]]を設定してみてください。もしくは、{{Pkg|vi}} や [[Neovim]] などの vi ライクなテキストエディタを使ってください。&lt;br /&gt;
{{Note|{{ic|TERM}} を {{ic|vt220}} に設定した場合、カラーのサポートが利用できません。}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libvirt&amp;diff=30489</id>
		<title>Libvirt</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libvirt&amp;diff=30489"/>
		<updated>2023-03-10T15:14:24Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* UEFI サポート */ https://wiki.archlinux.org/index.php?title=Libvirt&amp;amp;oldid=767309 より翻訳を更新 &amp;amp; 操作に出てくるボタン等の表示を翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:libvirt}}&lt;br /&gt;
[[Category:仮想化]]&lt;br /&gt;
[[en:Libvirt]]&lt;br /&gt;
[[zh-hans:Libvirt]]&lt;br /&gt;
[[zh-hant:Libvirt]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|QEMU}}&lt;br /&gt;
{{Related|KVM}}&lt;br /&gt;
{{Related|VirtualBox}}&lt;br /&gt;
{{Related|Xen}}&lt;br /&gt;
{{Related|VMware}}&lt;br /&gt;
{{Related|OVMF による PCI パススルー}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://wiki.libvirt.org/page/FAQ#Libvirt_FAQ libvirt: The virtualization API] より:&lt;br /&gt;
:Libvirt は仮想マシンや、ストレージ・ネットワークインターフェイスの管理などの仮想化機能を管理するための便利な手段を提供するソフトウェアのコレクションです。ソフトウェアには API ライブラリ、デーモン (libvirtd)、コマンドラインユーティリティ (virsh) が含まれています。&lt;br /&gt;
&lt;br /&gt;
:libvirt の目標は様々な仮想化プロバイダ/ハイパーバイザを管理する共通の手段を提供することにあります。&lt;br /&gt;
&lt;br /&gt;
:libvirt の主な特徴は以下の通りです:&lt;br /&gt;
:*&#039;&#039;VM 管理&#039;&#039;: 起動・停止・一時停止・保存・復旧・移行などの様々なドメイン操作。ディスク・ネットワークインターフェイス・メモリ・CPU など多数のデバイスのホットプラグ制御。&lt;br /&gt;
:*&#039;&#039;リモートマシンのサポート&#039;&#039;: libvirt デーモンが走ってるマシンなら libvirt の機能は全て使うことができます。リモートマシンも例外ではありません。リモートで接続するための様々なネットワーク転送をサポートしています。一番シンプルなのは SSH で、細かい設定を必要としません。&lt;br /&gt;
:*&#039;&#039;ストレージ管理&#039;&#039;: libvirt デーモンを動かしているホストを使って様々なタイプのストレージを管理できます: 様々なフォーマットのファイルイメージを作成 (qcow2, vmdk, raw, ...)、NFS 共有のマウント、既存の LVM ボリュームグループの列挙、新しい LVM ボリュームグループや論理ボリュームの作成、ディスクデバイスのパーティション、iSCSI 共有のマウントなど。&lt;br /&gt;
:*&#039;&#039;ネットワークインターフェイス管理&#039;&#039;: libvirt デーモンを動かしているホストを使って物理・論理ネットワークインターフェイスを管理できます。既存のインターフェイスを列挙するだけでなく、インターフェイス・ブリッジ・仮想 LAN・ボンドデバイスを設定 (作成) できます。&lt;br /&gt;
:*&#039;&#039;仮想 NAT とルートベースネットワーク&#039;&#039;: libvirt デーモンを動かしているホストを使って仮想ネットワークを管理・作成できます。Libvirt の仮想ネットワークはファイアウォールのルールを使うことでルーターとして動作し、VM からホストマシンのネットワークに透過的にアクセスすることを可能にします。&lt;br /&gt;
&lt;br /&gt;
libvirt には [[QEMU|KVM/QEMU]], [[Xen]], [[LXC]], [http://openvz.org OpenVZ], [[VirtualBox]] などの[[:カテゴリ:仮想化|仮想化]]バックエンドを、リモート・ローカルを問わず管理するために、統一の抽象化レイヤーが備わっています ([http://libvirt.org/drivers.html その他])。&lt;br /&gt;
&lt;br /&gt;
長期的に安定した C の API を用意することで、[http://libvirt.org/apps.html 様々なツール] で &#039;&#039;libvirtd&#039;&#039; デーモンに接続して多数の仮想化エンジンを管理することが可能です。libvirt デフォルトのクライアントは &#039;&#039;virsh&#039;&#039; と呼ばれています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
デーモン・クライアントアーキテクチャをとっているため、&#039;&#039;libvirt&#039;&#039; をインストールする必要があるのは仮想化システムをホストするマシンだけです。サーバーとクライアントは同じ物理マシンにすることができます。&lt;br /&gt;
&lt;br /&gt;
=== サーバー ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|libvirt}} パッケージと、どれか一つハイパーバイザを[[インストール]]してください:&lt;br /&gt;
&lt;br /&gt;
* [http://libvirt.org/drvqemu.html libvirt KVM/QEMU ドライバー] は基本の &#039;&#039;libvirt&#039;&#039; ドライバーなので [[QEMU#KVM を有効にする|KVM が有効]]になっていれば、完全に仮想化された、ハードウェアによる支援を受けたゲストを使うことができます。詳しくは [[QEMU]] の記事を見て下さい。&lt;br /&gt;
&lt;br /&gt;
* 他にも仮想化バックエンドとして [[LXC]], [[VirtualBox]], [[Xen]] などが存在します。インストール方法はそれぞれのページを参照してください。&lt;br /&gt;
:{{Note|[http://libvirt.org/drvlxc.html libvirt LXC ドライバー] は {{Pkg|lxc}} に含まれている [[LXC]] のユーザースペースツールに依存していません。そのため、このドライバーを使う場合はパッケージをインストールする必要はありません。}}&lt;br /&gt;
:{{Warning|[[Xen]] のサポートはデフォルトでは利用できない状態になっています。[[ABS]] を使って {{Pkg|libvirt}} の [[PKGBUILD]] を修正して {{ic|--without-xen}} オプションを外してビルドする必要があります。VirtualBox は安定的に Xen をサポートする予定がないため {{ic|--without-vbox}} に置き換えても良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
他にサポートされているハイパーバイザは [http://libvirt.org/drivers.html こちら] に記載されています。&lt;br /&gt;
&lt;br /&gt;
ネットワークに接続するために、以下をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.libvirt.org/page/VirtualNetworking#The_default_configuration デフォルト] の NAT/DHCP ネットワークの場合 {{Pkg|ebtables}} と {{Pkg|dnsmasq}}。&lt;br /&gt;
* ブリッジネットワークの場合 {{Pkg|bridge-utils}}。&lt;br /&gt;
* [[SSH]] によるネットワーク管理の場合 {{Pkg|openbsd-netcat}}。&lt;br /&gt;
&lt;br /&gt;
=== クライアント ===&lt;br /&gt;
&lt;br /&gt;
クライアントは仮想マシンを管理するために使用するユーザーインターフェイスです。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;virsh&#039;&#039; はドメインを管理・設定するためのコマンドラインプログラムです。{{Pkg|libvirt}} パッケージに含まれています。&lt;br /&gt;
* {{Pkg|virt-manager}} は仮想マシンを管理するためのグラフィカルユーザーインターフェイスです。&lt;br /&gt;
* {{Pkg|virt-viewer}} は仮想化されたゲスト OS のグラフィカルな画面を操作するための軽量なインターフェイスです。&lt;br /&gt;
* {{Pkg|gnome-boxes}} はリモートや仮想システムにアクセスするためのシンプルな GNOME 3 アプリケーションです。&lt;br /&gt;
* {{AUR|virt-manager-qt5}}{{Broken package link|パッケージが存在しません}} は virt-manager の Qt 版です。&lt;br /&gt;
* {{AUR|libvirt-sandbox}} はアプリケーションのサンドボックスツールキットです。&lt;br /&gt;
&lt;br /&gt;
libvirt に対応しているソフトウェアのリストは [http://libvirt.org/apps.html こちら] にあります。&lt;br /&gt;
&lt;br /&gt;
==設定==&lt;br /&gt;
&lt;br /&gt;
システムレベルの管理をする場合、少なくとも、[[#認証を設定|認証を設定]]して、[[#デーモンを起動|デーモンを起動]]する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Note|ユーザーセッションの管理をする場合、デーモンの設定は必要ありません。ただし、認証はローカルに限定され、フロントエンドは &#039;&#039;libvirtd&#039;&#039; デーモンのローカルインスタンスを起動します。}}&lt;br /&gt;
&lt;br /&gt;
=== 認証を設定 ===&lt;br /&gt;
&lt;br /&gt;
[http://libvirt.org/auth.html#ACL_server_config libvirt: Connection authentication] より:&lt;br /&gt;
:&#039;&#039;libvirt&#039;&#039; デーモンではクライアントの接続に使用する認証メカニズムを管理者が選択することができます。基本的に libvirt デーモンのメイン設定ファイルである {{ic|/etc/libvirt/libvirtd.conf}} で設定します。libvirt のソケットごとに別々の認証メカニズムを設定できます。今のところ {{ic|none}}, {{ic|polkit}}, {{ic|sasl}} の中から選べます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|libvirt}} は依存パッケージとして {{Pkg|polkit}} をインストールするので、{{ic|unix_sock_auth}} パラメータのデフォルト値としては [[#polkit を使う|polkit]] が使われます ([http://libvirt.org/auth.html#ACL_server_polkit ソース])。また、[[#ファイルベースのパーミッションで認証|ファイルベースのパーミッション]]を使うこともできます。&lt;br /&gt;
&lt;br /&gt;
==== polkit を使う ====&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|polkit}} による認証を正しく動作させるにはシステムを再起動する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;libvirt&#039;&#039; デーモンは {{ic|/usr/share/polkit-1/actions/org.libvirt.unix.policy}} で2つの [[Polkit#アクション|polkit アクション]]を提供します:&lt;br /&gt;
* 完全なアクセス管理のための {{ic|org.libvirt.unix.manage}} (RW デーモンソケット)&lt;br /&gt;
* アクセスの監視のための {{ic|org.libvirt.unix.monitor}} (読み取り専用ソケット).&lt;br /&gt;
&lt;br /&gt;
RW デーモンソケットのデフォルトポリシーを使うには管理者として認証する必要があります。[[sudo]] 認証と似ていますが、クライアントアプリケーションを root で動かす必要があるというわけではありません。また、デフォルトポリシーではどんなアプリケーションでも RO ソケットに接続することはできます。&lt;br /&gt;
&lt;br /&gt;
Arch では {{ic|wheel}} グループのユーザーを管理者として認識します: これは {{ic|/etc/polkit-1/rules.d/50-default.rules}} で定義されています ([[Polkit#管理者の識別]] を参照)。そのためユーザーを {{ic|wheel}} グループに追加さえすれば、新しいグループやルールファイルを作成する必要はありません。({{Pkg|virt-manager}} などで) RW ソケットに接続する時にユーザーのパスワードを入力するように求められます。&lt;br /&gt;
&lt;br /&gt;
{{Note|パスワードの入力を要求するときは[[Polkit#認証エージェント|認証エージェント]]を使用します。コンソールを使っている場合、デフォルトの {{ic|pkttyagent}} エージェントが上手く動作しないことがあります。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|認証でパスワードを入力しなくてもよいように設定したい場合、[[Polkit#パスワードプロンプトの迂回]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
libvirt 1.2.16 から {{ic|libvirt}} グループのメンバーはデフォルトで RW デーモンソケットにパスワードを入力しなくてもアクセスすることができます [http://libvirt.org/git/?p=libvirt.git;a=commit;h=e94979e901517af9fdde358d7b7c92cc055dd50c]。libvirt グループを作成してユーザーをグループに追加するのが一番簡単です。RW デーモンソケットにアクセスするときに認証するグループを変更したい場合、以下のファイルを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/polkit-1/rules.d/50-libvirt.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
/* Allow users in kvm group to manage the libvirt&lt;br /&gt;
daemon without authentication */&lt;br /&gt;
polkit.addRule(function(action, subject) {&lt;br /&gt;
    if (action.id == &amp;quot;org.libvirt.unix.manage&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
        subject.isInGroup(&amp;quot;kvm&amp;quot;)) {&lt;br /&gt;
            return polkit.Result.YES;&lt;br /&gt;
    }&lt;br /&gt;
});&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そして[[ユーザーとグループ#ユーザー管理の他の例|ユーザー]]を {{ic|kvm}} グループに追加して再ログインしてください。&#039;&#039;kvm&#039;&#039; は好きなグループに置き換えることができます。グループが存在することと、ユーザーがグループに属していることを確認してください (詳しくは[[ユーザーとグループ]]を参照)。グループの変更を適用するには再ログインが必要です。&lt;br /&gt;
&lt;br /&gt;
==== ファイルベースのパーミッションで認証 ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;libvirt&#039;&#039; グループのユーザーが仮想マシンを管理できるようにファイルベースのパーミッションを定義するには、以下の行をアンコメントします:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#unix_sock_group = &amp;quot;libvirt&amp;quot;&lt;br /&gt;
#unix_sock_ro_perms = &amp;quot;0777&amp;quot;  # set to 0770 to deny non-group libvirt users&lt;br /&gt;
#unix_sock_rw_perms = &amp;quot;0770&amp;quot;&lt;br /&gt;
#auth_unix_ro = &amp;quot;none&amp;quot;&lt;br /&gt;
#auth_unix_rw = &amp;quot;none&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ガイドによっては libvird の特定のディレクトリのパーミッションを変更すると管理がしやすくなると書かれていることがありますが、パッケージをアップデートする際に変更したパーミッションは元に戻ってしまうので注意してください。システムディレクトリを編集するときは、root ユーザーを使うようにしてください。&lt;br /&gt;
&lt;br /&gt;
===デーモンを起動===&lt;br /&gt;
&lt;br /&gt;
[[Systemd#ユニットを使う|systemd]] を使って {{ic|libvirtd.service}} と {{ic|virtlogd.service}} を起動してください。任意で {{ic|libvirtd.service}} を[[有効化]]してください。{{ic|libvirtd.service}} が有効化された場合、{{ic|virtlogd.socket}} と {{ic|virtlockd.socket}} も有効化されるため、{{ic|virtlogd.service}} を有効化する必要はありません。&lt;br /&gt;
&lt;br /&gt;
=== TCP/IP ソケットの暗号化の解除 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|この設定をすると、信頼されたネットワーク内における、リモートドメインの接続速度が向上します。セキュリティ的には完全な無防備なので注意してください。テスト目的であったり、セキュアでプライベート、信頼されたネットワークでおいてのみ使って下さい。SASL を有効にしないため、全ての TCP 通信は&#039;&#039;クリアテキスト&#039;&#039;になります。通常はどんなときでも SASL を有効にするようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/libvirt/libvirtd.conf}} を編集:&lt;br /&gt;
{{hc|/etc/libvirt/libvirtd.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
listen_tls = 0&lt;br /&gt;
listen_tcp = 1&lt;br /&gt;
auth_tcp=none&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
また、{{ic|/etc/conf.d/libvirtd}} を編集してサーバーをリスニングモードで起動する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/conf.d/libvirtd|2=LIBVIRTD_ARGS=&amp;quot;--listen&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
=== ホストネームを使って仮想マシンにアクセス ===&lt;br /&gt;
&lt;br /&gt;
ブリッジネットワークを使ってホストからゲストにアクセスするには、{{Pkg|libvirt}} に含まれている {{ic|libvirt}} NSS モジュールを有効にしてください。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/nsswitch.conf}} を編集:&lt;br /&gt;
{{hc|/etc/nsswitch.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
hosts: files libvirt dns myhostname&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|ping}} や {{ic|ssh}} などのコマンドで仮想マシンのホストネームを使うことができるようになりますが、{{ic|host}} や {{ic|nslookup}} などのコマンドは DNS に依存するため使えない可能性があります。{{ic|getent hosts &amp;lt;vm-hostname&amp;gt;}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
== テスト ==&lt;br /&gt;
&lt;br /&gt;
システムレベルでデーモンが正しく動作しているかテスト:&lt;br /&gt;
&lt;br /&gt;
 $ virsh -c qemu:///system&lt;br /&gt;
&lt;br /&gt;
ユーザーセッションで libvirt が正しく動作するかテスト:&lt;br /&gt;
&lt;br /&gt;
 $ virsh -c qemu:///session&lt;br /&gt;
&lt;br /&gt;
== 管理 ==&lt;br /&gt;
&lt;br /&gt;
Libvirt の管理は3つのツールで行うことができます: 一つは GUI {{ic|virt-manager}} で、二つはコマンドラインツールです: {{ic|virsh}} と {{ic|guestfish}} ({{Pkg|libguestfs}} に含まれています)。&lt;br /&gt;
&lt;br /&gt;
=== virsh ===&lt;br /&gt;
&lt;br /&gt;
virsh はゲスト&#039;&#039;ドメイン&#039;&#039; (仮想マシン) の管理のためのプログラムですが、仮想化管理のスクリプトにも使えます。ほとんどの virsh コマンドは実行するのに root 権限を必要とします。ただしドメインの作成や実行などは (VirtualBox と同じように) 通常ユーザーで実行することができます。&lt;br /&gt;
&lt;br /&gt;
Virsh にはインタラクティブなターミナルが含まれており、コマンドを何も指定しないで実行したときに起動します (オプションは指定することができます): {{ic|virsh}}。インタラクティブターミナルはタブ補完をサポートしています。&lt;br /&gt;
&lt;br /&gt;
コマンドラインから:&lt;br /&gt;
&lt;br /&gt;
 $ virsh [option] &amp;lt;command&amp;gt; [argument]...&lt;br /&gt;
&lt;br /&gt;
インタラクティブターミナルから:&lt;br /&gt;
&lt;br /&gt;
 virsh # &amp;lt;command&amp;gt; [argument]...&lt;br /&gt;
&lt;br /&gt;
ヘルプを見るには:&lt;br /&gt;
&lt;br /&gt;
 $ virsh help [option*] or [group-keyword*]&lt;br /&gt;
&lt;br /&gt;
=== ストレージプール ===&lt;br /&gt;
&lt;br /&gt;
プールはストレージ&#039;&#039;ボリューム&#039;&#039;を保存しておく場所です。libvirt における&#039;&#039;ボリューム&#039;&#039;は、他のハイパーバイザでは&amp;quot;仮想ディスク&amp;quot;または&amp;quot;仮想マシンイメージ&amp;quot;と定義されていることがあります。プールの場所はディレクトリでも、ネットワークファイルシステムでも、パーティションでもかまいません ([[LVM]] を含む)。プールは有効・無効を切り替えたり領域を予約することができます。&lt;br /&gt;
&lt;br /&gt;
システムレベルでは、デフォルトで {{ic|/var/lib/libvirt/images/}} が有効になります。ユーザーセッションでは {{ic|virt-manager}} は {{ic|$HOME/VirtualMachines}} を作成します。&lt;br /&gt;
&lt;br /&gt;
有効または無効なストレージプールを確認:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-list --all&lt;br /&gt;
&lt;br /&gt;
==== virsh を使って新しいプールを作成 ====&lt;br /&gt;
&lt;br /&gt;
ストレージプールを追加したい場合、以下がコマンド形式、ディレクトリの追加、LVM ボリュームの追加の例です:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-define-as name type [source-host] [source-path] [source-dev] [source-name] [&amp;lt;target&amp;gt;] [--source-format format]&lt;br /&gt;
 $ virsh pool-define-as &#039;&#039;poolname&#039;&#039; dir - - - - /home/&#039;&#039;username&#039;&#039;/.local/libvirt/images&lt;br /&gt;
 $ virsh pool-define-as &#039;&#039;poolname&#039;&#039; fs - -  &#039;&#039;/dev/vg0/images&#039;&#039; - &#039;&#039;mntpoint&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドはプールの情報を定義します。ビルドするには:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-build     &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
 $ virsh pool-start     &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
 $ virsh pool-autostart &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
削除するには:&lt;br /&gt;
&lt;br /&gt;
 $ virsh pool-undefine  &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|LVM ストレージプールの場合:&lt;br /&gt;
* ボリュームグループはストレージプール専用にするほうが良いでしょう。&lt;br /&gt;
* LVM ボリュームグループの名前はプールの名前と変えて下さい。ストレージプールを削除したときに LVM グループも削除されてしまいます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== virt-manager を使って新しいプールを作成 ====&lt;br /&gt;
&lt;br /&gt;
まず、既存のサーバーに接続してください。そこで、右クリックして &#039;&#039;Details&#039;&#039; を選んで下さい。&#039;&#039;Storage&#039;&#039; に行き左下の &#039;&#039;+&#039;&#039; アイコンを押して下さい。それからはウィザードに従って下さい。&lt;br /&gt;
&lt;br /&gt;
=== ストレージボリューム ===&lt;br /&gt;
&lt;br /&gt;
プールを作成したら、プールの中にボリュームを作成することができます。新しいドメイン (仮想マシン) を作成する場合、ドメインの作成時にボリュームを作成できるのでこの手順はスキップできます。&lt;br /&gt;
&lt;br /&gt;
==== virsh を使って新しいボリュームを作成 ====&lt;br /&gt;
&lt;br /&gt;
ボリュームの作成、確認、リサイズ、削除:&lt;br /&gt;
&lt;br /&gt;
 $ virsh vol-create-as      &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039; 10GiB --format aw|bochs|raw|qcow|qcow2|vmdk&lt;br /&gt;
 $ virsh vol-upload  --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039; &#039;&#039;volumepath&#039;&#039;&lt;br /&gt;
 $ virsh vol-list           &#039;&#039;poolname&#039;&#039;&lt;br /&gt;
 $ virsh vol-resize  --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039; 12GiB&lt;br /&gt;
 $ virsh vol-delete  --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039;&lt;br /&gt;
 $ virsh vol-dumpxml --pool &#039;&#039;poolname&#039;&#039; &#039;&#039;volumename&#039;&#039;  # for details&lt;br /&gt;
&lt;br /&gt;
==== virt-manager の補助記憶 ====&lt;br /&gt;
&lt;br /&gt;
新しいバージョンの {{ic|virt-manager}} では新しいディスクを作成するときに補助記憶を指定することができます。新しい仮想システムをプロビジョニングする場合にベースイメージを基にして新しいドメインを作ることができるため、時間と容量の両方を節約できてとても便利です。ただし現在のバージョンの {{ic|virt-manager}} にはバグ (https://bugzilla.redhat.com/show_bug.cgi?id=1235406) が存在し、補助イメージが {{ic|qcow2}} タイプの場合に {{ic|virt-manager}} が間違ったタイプの補助イメージを選択してしまいます。この場合、補助タイプとして {{ic|raw}} が選択されます。補助記憶から新しいイメージが読み取れなくなり、補助記憶を用意する意味が完全に失われます。&lt;br /&gt;
&lt;br /&gt;
この問題の回避策として {{ic|qemu-img}} を使うことで直接補助記憶を指定することができます。バグが修正されるまでは、補助記憶を使いたい場合、以下のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ qemu-img create -f qcow2 -o backing_file=&amp;lt;path to backing image&amp;gt;,backing_fmt=qcow2 &amp;lt;disk name&amp;gt; &amp;lt;disk size&amp;gt;&lt;br /&gt;
&lt;br /&gt;
作成したイメージを新しいドメインのベースとすることで COW ボリュームとして補助記憶が使用され時間と容量が節約されます。&lt;br /&gt;
&lt;br /&gt;
=== ドメイン ===&lt;br /&gt;
&lt;br /&gt;
libvirt では仮想マシンは&#039;&#039;ドメイン&#039;&#039;と呼ばれます。コマンドラインから使う場合、{{ic|virsh}} でドメインを確認・作成・停止・シャットダウンできます。{{ic|virt-viewer}} を使って {{ic|virsh}} で起動したドメインを確認することも可能です。ドメインの作成は {{ic|virt-manager}} でグラフィカルに行うか {{ic|virt-install}} ({{pkg|virt-install}} パッケージに含まれているコマンドラインプログラム) を使います。&lt;br /&gt;
&lt;br /&gt;
新しいドメインを作成するときは、インストールメディアを使用します。ドメインの作成後にロードします。ストレージプールから {{ic|.iso}} を参照したり、光学ドライブを参照することができます。&lt;br /&gt;
&lt;br /&gt;
有効または無効なドメインを確認:&lt;br /&gt;
&lt;br /&gt;
 # virsh list --all&lt;br /&gt;
&lt;br /&gt;
{{Note|[[SELinux]] はデフォルトで {{ic|/var/lib/libvirt/images/}} にボリュームが保存されることを必要とします。SELinux を使っていてボリュームに問題が起こる場合、ボリュームがそのディレクトリにあるか確認、またはあなたが使用している非デフォルトのディレクトリの適当なラベリングを追加してください。}}&lt;br /&gt;
&lt;br /&gt;
==== virt-install を使って新しいドメインを作成 ====&lt;br /&gt;
&lt;br /&gt;
ドメイン (仮想マシン) を細かく設定したい場合、[[#virt-manager を使って新しいドメインを作成|virt-manager を使って新しいドメインを作成]]する方が簡単です。しかしながら、基本的な設定は {{ic|virt-install}} で行うことができます。最低でも指定する必要があるのは {{ic|--name}}, {{ic|--memory}}, ゲストストレージ ({{ic|--disk}}, {{ic|--filesystem}} または {{ic|--nodisks}}), インストール方法 ({{ic|.iso}} または CD) です。オプションについて詳しくは {{man|1|virt-install}} を見てください。&lt;br /&gt;
&lt;br /&gt;
Arch Linux のインストール (2GiB, qcow2 フォーマットのボリューム作成; ユーザーネットワーク):&lt;br /&gt;
&lt;br /&gt;
 $ virt-install  \&lt;br /&gt;
   --name arch-linux_testing \&lt;br /&gt;
   --memory 1024             \ &lt;br /&gt;
   --vcpus=2,maxvcpus=4      \&lt;br /&gt;
   --cpu host                \&lt;br /&gt;
   --cdrom $HOME/Downloads/arch-linux_install.iso \&lt;br /&gt;
   --disk size=2,format=qcow2 \&lt;br /&gt;
   --network user            \&lt;br /&gt;
   --virt-type kvm&lt;br /&gt;
&lt;br /&gt;
Fedora testing (Xen ハイパーバイザ, 非デフォルトのプール, オリジナルの表示を使わない):&lt;br /&gt;
&lt;br /&gt;
 $ virt-install  \&lt;br /&gt;
   --connect xen:///     \&lt;br /&gt;
   --name fedora-testing \&lt;br /&gt;
   --memory 2048         \&lt;br /&gt;
   --vcpus=2             \&lt;br /&gt;
   --cpu=host            \&lt;br /&gt;
   --cdrom /tmp/fedora20_x84-64.iso      \&lt;br /&gt;
   --os-type=linux --os-variant=fedora20 \&lt;br /&gt;
   --disk pool=testing,size=4            \&lt;br /&gt;
   --network bridge=br0                  \&lt;br /&gt;
   --graphics=vnc                        \&lt;br /&gt;
   --noautoconsole&lt;br /&gt;
 $ virt-viewer --connect xen:/// fedora-testing&lt;br /&gt;
&lt;br /&gt;
Windows:&lt;br /&gt;
&lt;br /&gt;
 $ virt-install \&lt;br /&gt;
   --name=windows7           \&lt;br /&gt;
   --memory 2048             \&lt;br /&gt;
   --cdrom /dev/sr0          \&lt;br /&gt;
   --os-variant=win7         \&lt;br /&gt;
   --disk /mnt/storage/domains/windows7.qcow2,size=20GiB \&lt;br /&gt;
   --network network=vm-net  \&lt;br /&gt;
   --graphics spice&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|--os-variant}} の引数を取得するには {{ic|1=osinfo-query --fields=name,short-id,version os}} を実行してください。ドメインの仕様を定義するのに役立ちます。ただし、{{ic|--memory}} と {{ic|--disk}} を入力する必要があります。仕様が必要な場合は適当な {{ic|/usr/share/libosinfo/db/oses/&#039;&#039;os&#039;&#039;.xml}} を見て下さい。インストール後、[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Virtualization_Host_Configuration_and_Guest_Installation_Guide/form-Virtualization_Host_Configuration_and_Guest_Installation_Guide-Para_virtualized_drivers-Mounting_the_image_with_virt_manager.html VirtIO ドライバー] が含まれている [http://www.spice-space.org/download.html Spice Guest Tools] をインストールすると良いでしょう。Windows の VirtIO ネットワークドライバーは {{Aur|virtio-win}} にもあります。ドライバーはゲストの {{ic|.xml}} 設定のデバイスセクションに {{ic|1=&amp;lt;model type=&#039;virtio&#039; /&amp;gt;}} で指定します。詳細は [[QEMU#Windows ゲストを用意する|QEMU]] の記事を読んで下さい。}}&lt;br /&gt;
&lt;br /&gt;
既存のボリュームをインポート:&lt;br /&gt;
&lt;br /&gt;
 $ virt-install  \&lt;br /&gt;
   --name demo  \&lt;br /&gt;
   --memory 512 \&lt;br /&gt;
   --disk /home/user/VMs/mydisk.img \&lt;br /&gt;
   --import&lt;br /&gt;
&lt;br /&gt;
==== virt-manager を使って新しいドメインを作成 ====&lt;br /&gt;
&lt;br /&gt;
まずハイパーバイザに接続します (例: QEMU/KVM &#039;&#039;システム&#039;&#039;またはユーザー&#039;&#039;セッション&#039;&#039;)。接続を右クリックして &#039;&#039;New&#039;&#039; を選択して、ウィザードに従って下さい。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;ステップ4&#039;&#039; で、&#039;&#039;Allocate entire disk now&#039;&#039; のチェックを外すことができます -- VM がディスクの全てを使用していないときに容量を節約します。ただし、ディスクのフラグメンテーションが増加する可能性があるので、VM ホストのディスクの合計空き容量に&#039;&#039;注意してください&#039;&#039;、VM にディスク容量を追加で割り当てるほうが簡単だからです。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;ステップ5&#039;&#039; では、&#039;&#039;Advanced options&#039;&#039; を開いて &#039;&#039;Virt Type&#039;&#039; を &#039;&#039;kvm&#039;&#039; に設定してください。追加のハードウェア設定が必要な場合、&#039;&#039;Customize configuration before install&#039;&#039; オプションを選んで下さい。&lt;br /&gt;
&lt;br /&gt;
==== ドメインの管理 ====&lt;br /&gt;
&lt;br /&gt;
ドメインを起動:&lt;br /&gt;
&lt;br /&gt;
 $ virsh start &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virt-viewer --connect qemu:///session &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ドメインを上品にシャットダウン、または強制的にオフにする:&lt;br /&gt;
&lt;br /&gt;
 $ virsh shutdown &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virsh destroy  &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
libvirtd の起動時にドメインを自動実行:&lt;br /&gt;
&lt;br /&gt;
 $ virsh autostart &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virsh autostart &#039;&#039;domain&#039;&#039; --disable&lt;br /&gt;
&lt;br /&gt;
ホストのシャットダウン時にドメインもシャットダウン:&lt;br /&gt;
&lt;br /&gt;
: {{ic|libvirt-guests.service}} systemd サービスを使うことでホストのシャットダウン時に自動的にゲストの実行をサスペンド (もしくは) シャットダウンさせることができます。同じデーモンでホストの起動時に自動的にサスペンド (シャットダウン) されたゲストが復帰 (起動) されます。サービスのオプションは {{ic|/etc/conf.d/libvirt-guests}} をチェックしてください。&lt;br /&gt;
&lt;br /&gt;
ドメインの設定を編集:&lt;br /&gt;
&lt;br /&gt;
 $ virsh edit &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{note|QEMU によって直接起動した仮想マシンは libvirt ツールで管理できません。}}&lt;br /&gt;
&lt;br /&gt;
=== ネットワーク ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{ic|libvird}} systemd サービスが起動すると、&#039;&#039;default&#039;&#039; という名前の NAT ブリッジが作成されて外部ネットワークに接続できるようになります。&lt;br /&gt;
&lt;br /&gt;
他のネットワーク接続が必要な場合、ドメインとの接続を作成することができる4つのネットワークタイプが存在します:&lt;br /&gt;
&lt;br /&gt;
* bridge — 仮想デバイス。物理インターフェイスと直接データを共有します。ホストで&#039;&#039;固定&#039;&#039;ネットワークを使う場合や他のドメインに接続する必要がない場合、またはドメインに完全なインバウンドとアウトバウンドの通信が必要な場合やドメインを&#039;&#039;システムレベル&#039;&#039;で動作させる場合、ブリッジを使って下さい。ブリッジを追加する方法は[[ネットワークブリッジ]]を参照。作成後、ゲストの {{ic|.xml}} 設定ファイルで指定する必要があります。&lt;br /&gt;
* network — 仮想ネットワーク。他のドメインと共有することができます。ホストが&#039;&#039;動的&#039;&#039;ネットワーク (例: NetworkManager) やワイヤレスを使う場合仮想ネットワークを使って下さい。&lt;br /&gt;
* macvtap — ホストの物理インターフェイスに直接接続。&lt;br /&gt;
* user — ローカルのネットワーク。ユーザー&#039;&#039;セッション&#039;&#039;の場合に使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|virsh}} にはネットワークを作成するための様々なオプションが存在していますが、({{ic|virt-manager}} などの) グラフィカルユーザーインターフェイスを使ったり [[#virt-install を使って新しいドメインを作成|virt-install でドメインを作成]]するときにネットワーク接続を作成する方が簡単です。&lt;br /&gt;
&lt;br /&gt;
{{note|libvirt は {{pkg|dnsmasq}} で DHCP や DNS を管理し、仮想ネットワークごとにインスタンスを起動します。また、適切なルーティングが行われるように iptables ルールを追加して、{{ic|ip_forward}} カーネルパラメータを有効にします。libvirt を使うのにホストで dnsmasq を実行する必要はありません (libvirt の dnsmasq インスタンスと干渉する可能性があります)。}}&lt;br /&gt;
&lt;br /&gt;
==== IPv6 ====&lt;br /&gt;
&lt;br /&gt;
設定ツールを使って IPv6 アドレスを追加した際に、以下のようなエラーが表示されることがあります:&lt;br /&gt;
 Check the host setup: enabling IPv6 forwarding with RA routes without accept_ra set to 2 is likely to cause routes loss. Interfaces to look at: &#039;&#039;eth0&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
以下のファイルを作成することで問題を解決できます ({{ic|&#039;&#039;eth0&#039;&#039;}} は物理インターフェイスの名前に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/libvirt-bridge.conf|2=&lt;br /&gt;
net.ipv6.conf.eth0.accept_ra = 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定したらマシンを再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== スナップショット ===&lt;br /&gt;
&lt;br /&gt;
スナップショットは現時点でのドメインのディスク・メモリ・デバイスの状態を取得して、将来のために保存します。OS の&amp;quot;クリーン&amp;quot;なコピーを保存することから、ドメインが破壊される前にドメインの状態を保存することまで、様々な理由で使われます。スナップショットは一意な名前で識別されます。&lt;br /&gt;
&lt;br /&gt;
スナップショットはボリュームの中に保存されるためボリュームが次の形式である必要があります: qcow2 または raw。スナップショットは差分を使用するので大量の容量を使用することはありません。&lt;br /&gt;
&lt;br /&gt;
==== スナップショットの作成 ====&lt;br /&gt;
&lt;br /&gt;
スナップショットが取得されると新しいブロックデバイスとして保存されオリジナルのスナップショットはオフラインになります。スナップショットは他のスナップショットから選択したりマージすることができます (ドメインをシャットダウンする必要はありません)。&lt;br /&gt;
&lt;br /&gt;
動作中のドメインのボリュームを確認 (動作中のドメインは {{ic|virsh list}} で確認できます):&lt;br /&gt;
&lt;br /&gt;
{{hc|# virsh domblklist &#039;&#039;domain&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Target     Source&lt;br /&gt;
 ------------------------------------------------&lt;br /&gt;
 vda        /vms/domain.img&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
ボリュームの物理プロパティを確認するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|# qemu-img info /vms/domain.img|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 image: /vms/domain.img&lt;br /&gt;
 file format: qcow2&lt;br /&gt;
 virtual size: 50G (53687091200 bytes)&lt;br /&gt;
 disk size: 2.1G&lt;br /&gt;
 cluster_size: 65536&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
disk-only スナップショットを作成 ({{ic|--atomic}} オプションはスナップショットの作成が失敗した場合にボリュームに変更が加わっていないことを確認します):&lt;br /&gt;
&lt;br /&gt;
 # virsh snapshot-create-as &#039;&#039;domain&#039;&#039; snapshot1 --disk-only --atomic&lt;br /&gt;
&lt;br /&gt;
スナップショットを確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# virsh snapshot-list &#039;&#039;domain&#039;&#039;|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Name                 Creation Time             State&lt;br /&gt;
 ------------------------------------------------------------&lt;br /&gt;
 snapshot1           2012-10-21 17:12:57 -0700 disk-snapshot&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=cp -sparse=true}} や {{ic|rsync -S}} を使ってオリジナルのイメージをコピーしてオリジナルのイメージをスナップショットにマージできます:&lt;br /&gt;
&lt;br /&gt;
 # virsh blockpull --domain &#039;&#039;domain&#039;&#039; --path /vms/&#039;&#039;domain&#039;&#039;.snapshot1&lt;br /&gt;
&lt;br /&gt;
{{ic|domain.snapshot1}} が新しいボリュームになります。マージが完了したらオリジナルのボリューム ({{ic|domain.img}} とスナップショットのメタデータは削除できます。{{ic|virsh blockcommit}} が {{ic|blockpull}} と反対の動作をするようになる予定ですが現在開発中です ({{ic|snapshot-revert}} 機能を含む、来年リリース予定)。&lt;br /&gt;
&lt;br /&gt;
=== 他の管理 ===&lt;br /&gt;
&lt;br /&gt;
非デフォルトのハイパーバイザに接続:&lt;br /&gt;
&lt;br /&gt;
 $ virsh --connect xen:///&lt;br /&gt;
 virsh # uri&lt;br /&gt;
 xen:///&lt;br /&gt;
&lt;br /&gt;
SSH で QEMU ハイパーバイザに接続してログイン:&lt;br /&gt;
&lt;br /&gt;
 $ virsh --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system&lt;br /&gt;
 $ LIBVIRT_DEBUG=1 virsh --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system&lt;br /&gt;
&lt;br /&gt;
SSH でグラフィカルコンソールに接続:&lt;br /&gt;
&lt;br /&gt;
 $ virt-viewer  --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system &#039;&#039;domain&#039;&#039;&lt;br /&gt;
 $ virt-manager --connect qemu+ssh://&#039;&#039;username&#039;&#039;@&#039;&#039;host&#039;&#039;/system &#039;&#039;domain&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|(Arch 以外の) RHEL リモートサーバーに接続するときに問題が発生する場合、{{bug|30748}} と {{bug|22068}} に書かれている方法を試してみて下さい。}}&lt;br /&gt;
&lt;br /&gt;
VirtualBox ハイパーバイザに接続 (libvirt における VirtualBox のサポートはまだ安定していないため libvirtd がクラッシュする可能性があります):&lt;br /&gt;
&lt;br /&gt;
 $ virsh --connect vbox:///system&lt;br /&gt;
&lt;br /&gt;
ネットワークの設定:&lt;br /&gt;
&lt;br /&gt;
 $ virsh -c qemu:///system net-list --all&lt;br /&gt;
 $ virsh -c qemu:///system net-dumpxml default&lt;br /&gt;
&lt;br /&gt;
== Python 接続コード ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|libvirt-python}} パッケージによって {{ic|/usr/lib/python2.7/site-packages/libvirt.py}} に {{Pkg|python2}} API が提供されます。&lt;br /&gt;
&lt;br /&gt;
一般的なサンプルは {{ic|/usr/share/doc/libvirt-python-&#039;&#039;your_libvirt_version&#039;&#039;/examples/}} にあります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|qemu}} と {{Pkg|openssh}} を使う非公式のサンプル:&lt;br /&gt;
&lt;br /&gt;
 #! /usr/bin/env python2&lt;br /&gt;
 # -*- coding: utf-8 -*-&lt;br /&gt;
 import socket&lt;br /&gt;
 import sys&lt;br /&gt;
 import libvirt&lt;br /&gt;
 if (__name__ == &amp;quot;__main__&amp;quot;):&lt;br /&gt;
    &amp;lt;nowiki&amp;gt;conn = libvirt.open(&amp;quot;qemu+ssh://xxx/system&amp;quot;)&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
    print &amp;quot;Trying to find node on xxx&amp;quot;&lt;br /&gt;
    domains = conn.listDomainsID()&lt;br /&gt;
    for domainID in domains:&lt;br /&gt;
        domConnect = conn.lookupByID(domainID)&lt;br /&gt;
        if domConnect.name() == &#039;xxx-node&#039;:&lt;br /&gt;
            print &amp;quot;Found shared node on xxx with ID &amp;quot; + str(domainID)&lt;br /&gt;
            domServ = domConnect&lt;br /&gt;
            break&lt;br /&gt;
&lt;br /&gt;
== UEFI サポート ==&lt;br /&gt;
&lt;br /&gt;
Libvirt は QEMU と [https://github.com/tianocore/edk2 OVMF] で UEFI 仮想マシンをサポートしています。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|edk2-ovmf}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
その後 {{ic|libvirtd}} を[[再起動]]してください。&lt;br /&gt;
&lt;br /&gt;
これで UEFI 仮想マシンを作成する準備が整いました。{{Pkg|virt-manager}} で新しい仮想マシンを作成してください。&#039;新しい仮想マシンの作成&#039; ウィザードの最後のページで、以下のようにしてください:&lt;br /&gt;
&lt;br /&gt;
* &#039;インストールの前に設定をカスタマイズする&#039; をクリックして &#039;完了&#039; を選択してください。&lt;br /&gt;
* &#039;概要&#039; タブで &#039;ファームウェア&#039; フィールドを変更して &#039;UEFI x86_64&#039; オプションを選択してください。&lt;br /&gt;
* &#039;インストールの開始&#039; をクリックしてください。&lt;br /&gt;
* 起動画面で linuxefi コマンドによってインストーラーが起動され、システムの中で efibootmgr を実行することで UEFI OS が実行していることが確認できます。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://fedoraproject.org/wiki/Using_UEFI_with_QEMU fedora の wiki ページ] を参照。&lt;br /&gt;
&lt;br /&gt;
== PulseAudio ==&lt;br /&gt;
&lt;br /&gt;
[[PulseAudio]] デーモンは通常のユーザーアカウントで動作し、同じユーザーからの接続だけを許可します。[[libvirt]] を使って root で QEMU を動作させた場合は困ることになります。通常ユーザーで QEMU を動作させるには {{ic|/etc/libvirt/qemu.conf}} を編集して {{ic|user}} オプションでユーザー名を指定してください:&lt;br /&gt;
&lt;br /&gt;
 user = &amp;quot;dave&amp;quot;&lt;br /&gt;
&lt;br /&gt;
また、PulseAudio バックエンドを使用してサーバーに接続するように QEMU を設定する必要があります。{{ic|virsh edit}} を使ってデーモンの設定に以下のセクションを追加してください:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;qemu:commandline&amp;gt;&lt;br /&gt;
    &amp;lt;qemu:env name=&#039;QEMU_AUDIO_DRV&#039; value=&#039;pa&#039;/&amp;gt;&lt;br /&gt;
    &amp;lt;qemu:env name=&#039;QEMU_PA_SERVER&#039; value=&#039;/run/user/1000/pulse/native&#039;/&amp;gt;&lt;br /&gt;
  &amp;lt;/qemu:commandline&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{ic|1000}} はあなたのユーザー ID に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://libvirt.org/drvqemu.html libvirt 公式ウェブサイト]&lt;br /&gt;
* [https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Virtualization_Deployment_and_Administration_Guide/index.html Red Hat の仮想化の導入および管理ガイド]&lt;br /&gt;
* [https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/7/html/Virtualization_Tuning_and_Optimization_Guide/index.html Red Hat の仮想化のチューニングと最適化ガイド]&lt;br /&gt;
* [http://docs.slackware.com/howtos:general_admin:kvm_libvirt Slackware KVM and libvirt]&lt;br /&gt;
* [http://www-01.ibm.com/support/knowledgecenter/linuxonibm/liaat/liaatkvm.htm IBM KVM]&lt;br /&gt;
* [https://jamielinux.com/docs/libvirt-networking-handbook/ libvirt Networking Handbook]&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Rofi&amp;diff=29762</id>
		<title>Rofi</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Rofi&amp;diff=29762"/>
		<updated>2023-02-06T14:18:02Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* 既知の問題#インプットメソッド */ インプットメソッドが動作しないことについて&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:rofi}}&lt;br /&gt;
[[Category:アプリケーションランチャー]]&lt;br /&gt;
[[en:Rofi]]&lt;br /&gt;
[[pl:Rofi]]&lt;br /&gt;
[[pt:Rofi]]&lt;br /&gt;
[[ru:Rofi]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|アプリケーション一覧/その他#アプリケーションランチャー}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/DaveDavenport/rofi Rofi] は [https://github.com/seanpringle/simpleswitcher simpleswitcher] のクローンとして [https://github.com/seanpringle Sean Pringle] によって開発が始まり [https://github.com/DaveDavenport Dave Davenport] によって拡張されたウィンドウスイッチャ・実行ダイアログ・SSH ランチャです。[[dmenu]] を置き換えることができます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] ディスプレイ サーバーで使用する {{Pkg|rofi}} パッケージを [[インストール]] して下さい。 &lt;br /&gt;
&lt;br /&gt;
メインブランチの [[Wayland]] コンポジタのマージサポートは、 [https://github.com/davatorium/rofi/pull/1139] で無制限に停止しています。[[Wayland]] をサポートするには、代わりに {{AUR|rofi-lbonn-wayland}} または {{AUR|rofi-lbonn-wayland-git}} をインストールしてください。これらのパッケージには、Layer Shell プロトコルをサポートする Wayland コンポジターが必要であることに注意してください。これには、Sway などの wlroots ベースのコンポジターや一部の Mir ベースのコンポジターが含まれますが、Gnome 用のコンポジターなどの mutter は含まれていません。&lt;br /&gt;
&lt;br /&gt;
rofi とその使用法の詳細については、{{man|1|rofi}} の man ページを参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
現在、オプションを設定する方法が三つあります。&lt;br /&gt;
&lt;br /&gt;
* ローカル設定。通常、XDGにより {{ic|~/.config/rofi/config.rasi}} にあります。&lt;br /&gt;
* コマンドラインオプション&lt;br /&gt;
&lt;br /&gt;
 $ rofi -combi-modi window,drun,ssh -theme solarized -font &amp;quot;hack 10&amp;quot; -show combi&lt;br /&gt;
&lt;br /&gt;
次のような設定ファイルで表します:&lt;br /&gt;
&lt;br /&gt;
 configuration {&lt;br /&gt;
  modi: &amp;quot;window,drun,ssh,combi&amp;quot;;&lt;br /&gt;
  font: &amp;quot;hack 10&amp;quot;;&lt;br /&gt;
  combi-modi: &amp;quot;window,drun,ssh&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
 @theme &amp;quot;solarized&amp;quot;&lt;br /&gt;
&lt;br /&gt;
{{ic|config.rasi}} ファイルのオプション一覧を取得するには {{ic|rofi -dump-config}} を実行してください。{{ic|rofi -dump-config &amp;gt; ~/.config/rofi/config.rasi}} を実行し、直接あなたの {{ic|config}} ファイルに書き込むことができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|i3 の設定にカンマを入れると問題が発生する可能性があるので注意してください。キーをバインドして rofi を起動するには、設定ファイルを使用するか、カンマを {{ic|#}} で置き換えてください。例:{{ic|rofi -combi-modi window#drun#ssh}}}}&lt;br /&gt;
&lt;br /&gt;
=== アイコン ===&lt;br /&gt;
 &lt;br /&gt;
アイコンを使用して、対応するエントリとともに表示することができます。 {{pkg|papirus-icon-theme}} がインストールされ、 {{ic|-show-icons}} を使用し、{{ic|-icon-theme}} でアイコンテーマを定義している場合は、次の操作を実行することで、 rofi でアイコンを使用できます。&lt;br /&gt;
&lt;br /&gt;
 $ rofi -combi-modi window,drun,ssh -theme solarized -font &amp;quot;hack 10&amp;quot; -show combi -icon-theme &amp;quot;Papirus&amp;quot; -show-icons&lt;br /&gt;
&lt;br /&gt;
== カスタムテーマ ==&lt;br /&gt;
&lt;br /&gt;
以下のコマンドで rofi のテーマのプレビューと適用ができます&lt;br /&gt;
&lt;br /&gt;
  rofi-theme-selector&lt;br /&gt;
&lt;br /&gt;
カスタマイズは、{{ic|~/.config/rofi/config.rasi}} ファイル に保存されます。&lt;br /&gt;
&lt;br /&gt;
=== 投稿されたテーマ ===&lt;br /&gt;
&lt;br /&gt;
Rofi にはいくつかの公式テーマが付属しており、[https://github.com/DaveDavenport/rofi-themes rofi-themes] リポジトリにはさらに多くのユーザーテーマがあります。&lt;br /&gt;
&lt;br /&gt;
公式テーマをロードするか、 .rasi ユーザーテーマをダウンロードして、コマンドラインの {{ic|~/.config/rofi/example.rasi}} または構成ファイルに配置します。&lt;br /&gt;
&lt;br /&gt;
  rofi &amp;lt;options&amp;gt; -theme example&lt;br /&gt;
&lt;br /&gt;
または構成ファイル内&lt;br /&gt;
&lt;br /&gt;
  theme: &amp;quot;example&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
== 既知の問題 ==&lt;br /&gt;
=== インプットメソッド ===&lt;br /&gt;
日本語入力等に用いる[[インプットメソッド]]が rofi 内では上手く動作しません。&amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[https://github.com/davatorium/rofi/issues/483 rofi issue #483]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt;, &amp;lt;nowiki&amp;gt;[&amp;lt;/nowiki&amp;gt;[https://github.com/davatorium/rofi/pull/1735 rofi pull #1735]&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; 回避策として、別の場所で書いた文字列をドラックによって選択し、 [[クリップボード#セレクション|PRIMARY セレクション]]を通して Ctrl+Shift+c によって rofi 内に貼り付けることができます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== Rofi を dmenu の代替として使う ===&lt;br /&gt;
&lt;br /&gt;
[[dmenu]] として (シンボリック リンクを介して) 呼び出された場合、&#039;&#039;rofi&#039;&#039; は &#039;&#039;dmenu&#039;&#039; のように機能します。次に、スクリプトから &#039;&#039;dmenu&#039;&#039; を呼び出すプログラム ([[pass]] からの &#039;&#039;passmenu&#039;&#039; など) は、&#039;&#039;dmenu&#039;&#039; の代わりに &#039;&#039;rofi&#039;&#039; を使用します。&#039;&#039;dmenu&#039;&#039; モードでの {{ic|rofi}} の正確な動作は、{{man|5|rofi-dmenu}} で説明されています。&lt;br /&gt;
&lt;br /&gt;
[[dmenu]] の外観に近づけるために、{{Pkg|rofi}} パッケージにデフォルトで同梱されているファイル {{ic|/usr/share/rofi/themes/dmenu.rasi}} を rofi 構成ディレクトリにコピーします。(通常は {{ic|~/.config/rofi}}) を有効にし、{{ic|config.rasi}} の末尾に {{ic|@theme dmenu}} を追加するか、{{ic|-theme dmenu}} コマンドラインのオプションを追加します。&lt;br /&gt;
&lt;br /&gt;
=== rofi からシェルコマンドを実行 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|-run-shell-command &#039;{terminal} -e &#039;&#039;SHELL&#039;&#039; -ic &amp;quot;{cmd} &amp;amp;&amp;amp; read&amp;quot;}} を定義します。{{ic|&#039;&#039;SHELL&#039;&#039;}} は使用しているシェルです (例:Bash、zsh) これにより、入力バーにコマンドを入力し、続いて {{ic|Shift+Enter}} を入力できます。  ターミナルは、次にキーを押すまで開いたままになります。&lt;br /&gt;
&lt;br /&gt;
これは、i3 の推奨されるエスケープシーケンスの例です。&lt;br /&gt;
&lt;br /&gt;
 bindsym $mod+d exec --no-startup-id rofi -show drun -run-shell-command &#039;{terminal} -e zsh -ic &amp;quot;{cmd} &amp;amp;&amp;amp; read&amp;quot;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Unicode 文字選択の統合 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|rofimoji}} は &#039;&#039;rofi&#039;&#039; と統合された Unicode 絵文字/文字選択ピッカーです [https://github.com/fdw/rofimoji#readme 使い方] と [https://github.com/fdw/rofimoji#configuration 設定] については、 [https://github.com/fdw/rofimoji#usage project&#039;s README] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 絵文字選択メニュー ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rofi&#039;&#039; と統合された絵文字ピッカーの {{Pkg|rofi-emoji}} をインストールします。  [https://github.com/Mange/rofi-emoji#readme 使用方法] については、[https://github.com/Mange/rofi-emoji#readme プロジェクトの README] を参照してください。&lt;br /&gt;
&lt;br /&gt;
絵文字に関するレンダリングの問題が発生した場合 (たとえば、長方形としてレンダリング)、される場合 {{AUR|ttf-symbola}}、{{Pkg|noto-fonts-cjk}}、および/または {{Pkg|noto-fonts-emoji}} などをインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
=== 電源管理メニューとしての Rofi ===&lt;br /&gt;
&lt;br /&gt;
Rofi を使用して、systemd で電源管理操作を実行できます。[https://github.com/jluttine/rofi-power-menu rofi-power-menu リポジトリ] をクローンします。これを起動するには、&amp;quot;rofi-power-menu&amp;quot; 実行可能ファイルの場所を rofi に伝える必要があります。たとえば、実行可能ファイルが {{ic|$HOME/.rofi-power-menu}} にある場合:&lt;br /&gt;
&lt;br /&gt;
 $ rofi -show p -modi p:$HOME/.rofi-power-menu&lt;br /&gt;
&lt;br /&gt;
実行可能ファイルを PATH に入れ、その名前だけを渡すこともできます。&lt;br /&gt;
&lt;br /&gt;
デフォルトのシンボルを表示するには、{{Pkg|ttf-nerd-fonts-symbols-2048-em}} をインストールする必要がある場合があります。&lt;br /&gt;
&lt;br /&gt;
詳細については、リポジトリの README ファイルを参照してください。&lt;br /&gt;
&lt;br /&gt;
=== クリップボードマネージャーとしての Rofi ===&lt;br /&gt;
&lt;br /&gt;
Rofi は、[[Greenclip]] を使用して X11 クリップボード マネージャーとして使用できます。{{AUR|rofi-greenclip}} パッケージをインストールします。&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29761</id>
		<title>Greenclip</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29761"/>
		<updated>2023-02-06T10:42:09Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* 設定例 */ max_selection_size_bytes も設定ファイルに必須のようなので&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:アプリケーションランチャー]]&lt;br /&gt;
[[en:Greenclip]]&lt;br /&gt;
[[es:Greenclip]]&lt;br /&gt;
[https://github.com/erebe/greenclip Greenclip] はシンプルな[[クリップボードマネージャ]]です。[[Haskell]] で書かれており [[Rofi]] と統合して動作するように作られています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|rofi-greenclip}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
起動時にサービスを開始できるようにします:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user enable greenclip.service&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
デーモンを生成:&lt;br /&gt;
 $ /usr/bin/greenclip daemon&lt;br /&gt;
&lt;br /&gt;
あるいはサービスを起動・有効化:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user start greenclip.service&lt;br /&gt;
&lt;br /&gt;
[[rofi]] の中でリストとしてエントリを表示:&lt;br /&gt;
 $ rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
選択したエントリが[[クリップボード]]に保存されます。&lt;br /&gt;
&lt;br /&gt;
クリップボードの履歴を全て消去するには:&lt;br /&gt;
 $ greenclip clear&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
バージョン 4.0 以降では、設定ファイルは {{ic|~/.config/greenclip.toml}} に [[Wikipedia:ja:TOML|TOML]] 形式で置きます。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/greenclip.toml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[greenclip]&lt;br /&gt;
max_history_length = 250&lt;br /&gt;
max_selection_size_bytes = 0&lt;br /&gt;
history_file = &amp;quot;~/.cache/greenclip.history&amp;quot;&lt;br /&gt;
enable_image_support = true&lt;br /&gt;
image_cache_directory = &amp;quot;~/tmp/greenclip&amp;quot;&lt;br /&gt;
use_primary_selection_as_input = false&lt;br /&gt;
blacklisted_applications = []&lt;br /&gt;
trim_space_from_selection = true&lt;br /&gt;
# version 4.0 より static history は設定ファイル内&lt;br /&gt;
static_history = [&lt;br /&gt;
 &#039;&#039;&#039;¯\_(ツ)_/¯&#039;&#039;&#039;,&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== i3-wm でクリップボードの記録ができない ===&lt;br /&gt;
&lt;br /&gt;
i3設定ファイルに下記を入れてください。サービス起動は必要ありません。&lt;br /&gt;
[[https://github.com/erebe/greenclip/issues/70 greenclip issue #70]]&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|&lt;br /&gt;
# clipboard tool&lt;br /&gt;
exec --no-startup-id greenclip daemon&amp;gt;/dev/null&lt;br /&gt;
bindsym $mod+c exec --no-startup-id rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29760</id>
		<title>Greenclip</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29760"/>
		<updated>2023-02-06T10:31:39Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* 設定例 */ ファイル名の更新をしていなかったので修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:アプリケーションランチャー]]&lt;br /&gt;
[[en:Greenclip]]&lt;br /&gt;
[[es:Greenclip]]&lt;br /&gt;
[https://github.com/erebe/greenclip Greenclip] はシンプルな[[クリップボードマネージャ]]です。[[Haskell]] で書かれており [[Rofi]] と統合して動作するように作られています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|rofi-greenclip}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
起動時にサービスを開始できるようにします:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user enable greenclip.service&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
デーモンを生成:&lt;br /&gt;
 $ /usr/bin/greenclip daemon&lt;br /&gt;
&lt;br /&gt;
あるいはサービスを起動・有効化:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user start greenclip.service&lt;br /&gt;
&lt;br /&gt;
[[rofi]] の中でリストとしてエントリを表示:&lt;br /&gt;
 $ rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
選択したエントリが[[クリップボード]]に保存されます。&lt;br /&gt;
&lt;br /&gt;
クリップボードの履歴を全て消去するには:&lt;br /&gt;
 $ greenclip clear&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
バージョン 4.0 以降では、設定ファイルは {{ic|~/.config/greenclip.toml}} に [[Wikipedia:ja:TOML|TOML]] 形式で置きます。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/greenclip.toml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[greenclip]&lt;br /&gt;
max_history_length = 250&lt;br /&gt;
history_file = &amp;quot;~/.cache/greenclip.history&amp;quot;&lt;br /&gt;
enable_image_support = true&lt;br /&gt;
image_cache_directory = &amp;quot;~/tmp/greenclip&amp;quot;&lt;br /&gt;
use_primary_selection_as_input = false&lt;br /&gt;
blacklisted_applications = []&lt;br /&gt;
trim_space_from_selection = true&lt;br /&gt;
# version 4.0 より static history は設定ファイル内&lt;br /&gt;
static_history = [&lt;br /&gt;
 &#039;&#039;&#039;¯\_(ツ)_/¯&#039;&#039;&#039;,&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== i3-wm でクリップボードの記録ができない ===&lt;br /&gt;
&lt;br /&gt;
i3設定ファイルに下記を入れてください。サービス起動は必要ありません。&lt;br /&gt;
[[https://github.com/erebe/greenclip/issues/70 greenclip issue #70]]&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|&lt;br /&gt;
# clipboard tool&lt;br /&gt;
exec --no-startup-id greenclip daemon&amp;gt;/dev/null&lt;br /&gt;
bindsym $mod+c exec --no-startup-id rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29759</id>
		<title>Greenclip</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29759"/>
		<updated>2023-02-06T10:30:56Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* 設定 */ 先程の編集のリンクにミスがあったので修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:アプリケーションランチャー]]&lt;br /&gt;
[[en:Greenclip]]&lt;br /&gt;
[[es:Greenclip]]&lt;br /&gt;
[https://github.com/erebe/greenclip Greenclip] はシンプルな[[クリップボードマネージャ]]です。[[Haskell]] で書かれており [[Rofi]] と統合して動作するように作られています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|rofi-greenclip}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
起動時にサービスを開始できるようにします:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user enable greenclip.service&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
デーモンを生成:&lt;br /&gt;
 $ /usr/bin/greenclip daemon&lt;br /&gt;
&lt;br /&gt;
あるいはサービスを起動・有効化:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user start greenclip.service&lt;br /&gt;
&lt;br /&gt;
[[rofi]] の中でリストとしてエントリを表示:&lt;br /&gt;
 $ rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
選択したエントリが[[クリップボード]]に保存されます。&lt;br /&gt;
&lt;br /&gt;
クリップボードの履歴を全て消去するには:&lt;br /&gt;
 $ greenclip clear&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
バージョン 4.0 以降では、設定ファイルは {{ic|~/.config/greenclip.toml}} に [[Wikipedia:ja:TOML|TOML]] 形式で置きます。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/greenclip.cfg|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[greenclip]&lt;br /&gt;
max_history_length = 250&lt;br /&gt;
history_file = &amp;quot;~/.cache/greenclip.history&amp;quot;&lt;br /&gt;
enable_image_support = true&lt;br /&gt;
image_cache_directory = &amp;quot;~/tmp/greenclip&amp;quot;&lt;br /&gt;
use_primary_selection_as_input = false&lt;br /&gt;
blacklisted_applications = []&lt;br /&gt;
trim_space_from_selection = true&lt;br /&gt;
# version 4.0 より static history は設定ファイル内&lt;br /&gt;
static_history = [&lt;br /&gt;
 &#039;&#039;&#039;¯\_(ツ)_/¯&#039;&#039;&#039;,&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== i3-wm でクリップボードの記録ができない ===&lt;br /&gt;
&lt;br /&gt;
i3設定ファイルに下記を入れてください。サービス起動は必要ありません。&lt;br /&gt;
[[https://github.com/erebe/greenclip/issues/70 greenclip issue #70]]&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|&lt;br /&gt;
# clipboard tool&lt;br /&gt;
exec --no-startup-id greenclip daemon&amp;gt;/dev/null&lt;br /&gt;
bindsym $mod+c exec --no-startup-id rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29758</id>
		<title>Greenclip</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Greenclip&amp;diff=29758"/>
		<updated>2023-02-06T10:27:51Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* 設定 */  version 4.0 以降で設定ファイル形式が toml になったので更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:アプリケーションランチャー]]&lt;br /&gt;
[[en:Greenclip]]&lt;br /&gt;
[[es:Greenclip]]&lt;br /&gt;
[https://github.com/erebe/greenclip Greenclip] はシンプルな[[クリップボードマネージャ]]です。[[Haskell]] で書かれており [[Rofi]] と統合して動作するように作られています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|rofi-greenclip}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
起動時にサービスを開始できるようにします:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user enable greenclip.service&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
デーモンを生成:&lt;br /&gt;
 $ /usr/bin/greenclip daemon&lt;br /&gt;
&lt;br /&gt;
あるいはサービスを起動・有効化:&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user start greenclip.service&lt;br /&gt;
&lt;br /&gt;
[[rofi]] の中でリストとしてエントリを表示:&lt;br /&gt;
 $ rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
選択したエントリが[[クリップボード]]に保存されます。&lt;br /&gt;
&lt;br /&gt;
クリップボードの履歴を全て消去するには:&lt;br /&gt;
 $ greenclip clear&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
バージョン 4.0 以降では、設定ファイルは {{ic|~/.config/greenclip.toml}} に [[ja:TOML|TOML]] 形式で置きます。&lt;br /&gt;
&lt;br /&gt;
=== 設定例 ===&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/greenclip.cfg|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[greenclip]&lt;br /&gt;
max_history_length = 250&lt;br /&gt;
history_file = &amp;quot;~/.cache/greenclip.history&amp;quot;&lt;br /&gt;
enable_image_support = true&lt;br /&gt;
image_cache_directory = &amp;quot;~/tmp/greenclip&amp;quot;&lt;br /&gt;
use_primary_selection_as_input = false&lt;br /&gt;
blacklisted_applications = []&lt;br /&gt;
trim_space_from_selection = true&lt;br /&gt;
# version 4.0 より static history は設定ファイル内&lt;br /&gt;
static_history = [&lt;br /&gt;
 &#039;&#039;&#039;¯\_(ツ)_/¯&#039;&#039;&#039;,&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== i3-wm でクリップボードの記録ができない ===&lt;br /&gt;
&lt;br /&gt;
i3設定ファイルに下記を入れてください。サービス起動は必要ありません。&lt;br /&gt;
[[https://github.com/erebe/greenclip/issues/70 greenclip issue #70]]&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/i3/config|&lt;br /&gt;
# clipboard tool&lt;br /&gt;
exec --no-startup-id greenclip daemon&amp;gt;/dev/null&lt;br /&gt;
bindsym $mod+c exec --no-startup-id rofi -modi &amp;quot;clipboard:greenclip print&amp;quot; -show clipboard&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83&amp;diff=29472</id>
		<title>デスクトップ環境</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E7%92%B0%E5%A2%83&amp;diff=29472"/>
		<updated>2023-01-20T11:11:44Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:デスクトップ環境]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:Desktop environment]]&lt;br /&gt;
[[es:Desktop environment]]&lt;br /&gt;
[[fa:Desktop environment]]&lt;br /&gt;
[[fi:Desktop environment]]&lt;br /&gt;
[[it:Desktop environment]]&lt;br /&gt;
[[pt:Desktop environment]]&lt;br /&gt;
[[ru:Desktop environment]]&lt;br /&gt;
[[uk:Desktop environment]]&lt;br /&gt;
[[zh-hans:Desktop environment]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|デスクトップ環境の比較}}&lt;br /&gt;
{{Related|:Category:Freedesktop.org}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:デスクトップ環境|デスクトップ環境]] (DE) は、共通のグラフィカルユーザインターフェイス (GUI) を共有するプログラム群で構成される[[Wikipedia:ja:デスクトップ・メタファー|デスクトップ・メタファー]]の実装です。&lt;br /&gt;
&lt;br /&gt;
== 概要 ==&lt;br /&gt;
&lt;br /&gt;
デスクトップ環境は、アイコン、ツールバー、壁紙、デスクトップウィジェットのようなグラフィカルユーザーインターフェイスの一般的な要素を提供する様々なコンポーネントをバンドルしています。さらに、ほとんどのデスクトップ環境には総合的なアプリケーションとユーティリティが含まれています。最も重要なことは、デスクトップ環境は独自の[[ウィンドウマネージャ]]を提供していますが、通常それらは互換性のある他のものに置き換えることができるということです。&lt;br /&gt;
&lt;br /&gt;
ユーザは様々な方法で自由に GUI 環境を構築することができます。デスクトップ環境は、GUI 環境を構築するための完全かつ便利な手段を提供するに過ぎません。ユーザーは複数のデスクトップ環境から自由にアプリケーションを取捨選択することもできます。例えば、[[KDE]] ユーザーは、(KDE の Konqueror ウェブブラウザが気に入らなかった場合) [[Epiphany]] ウェブブラウザなどの [[GNOME]] アプリケーションをインストールできます。このアプローチの欠点は、デスクトップ環境に含まれたアプリケーションの多くは DE 各々のライブラリにかなり依存しているということです。結果として、さまざまなデスクトップ環境からアプリケーションをインストールすると更に大量のライブラリのインストールの必要性を招きます。ディスク容量を節約したいユーザは、このような混合環境を避けたり、外部のライブラリにあまり依存していない代替環境を選んだりします。&lt;br /&gt;
&lt;br /&gt;
なお、デスクトップ環境により提供されているアプリケーションは、それぞれのネイティブ環境にあわせて作られる傾向があります。外観上、異なったウィジェットツールキットがまざった混合環境では外見不一致になることがあります（つまり、インターフェースが別々のアイコン・ウィジェットスタイルを使うことになります）。ユーザーエクスペリエンス上、混合環境は振る舞いが等しくならないかもしれません（例: アイコンのダブルクリックに対するシングルクリック、ドラッグアンドドロップ機能）し混乱や意図しない振る舞いの原因となりえます。&lt;br /&gt;
&lt;br /&gt;
== デスクトップ環境の一覧 ==&lt;br /&gt;
&lt;br /&gt;
=== 公式サポート ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Budgie]]|Budgie は最近のユーザーを考慮して設計されたデスクトップ環境で、シンプリシティとエレガンスに焦点を置いています。|https://blog.buddiesofbudgie.org|{{Pkg|budgie-desktop}}}}&lt;br /&gt;
* {{App|[[Cinnamon]]|Cinnamon は伝統的なユーザーエクスペリエンスを得られるように力が入れられています。Cinnamon は Gnome 3 のフォークです。|https://github.com/linuxmint/Cinnamon|{{Pkg|cinnamon}}}}&lt;br /&gt;
* {{App|Cutefish|Cutefish は新しい、モダンなデスクトップ環境です。|https://cutefish-ubuntu.github.io|{{Grp|cutefish}}}}&lt;br /&gt;
* {{App|[[Deepin]]|Deepin デスクトップインターフェイスとアプリは直感的でエレガントなデザインを特徴としています。画面の遷移や共有、検索などをするだけで、喜びを。|https://www.deepin.org/|{{grp|deepin}}}}&lt;br /&gt;
* {{App|[[Enlightenment]]|Enlightenment デスクトップシェルは効率的なウィンドウマネージャを提供します。Enlightenment Foundation Libraries による他の重要なデスクトップコンポーネント、ファイルマネージャ、デスクトップアイコン、ウィジェットなども含まれます。テーマ機能を持ちつつ、古いハードウェアや組み込みデバイスでも動きます。|https://www.enlightenment.org/|{{Pkg|enlightenment}}}}&lt;br /&gt;
* {{App|[[GNOME]]|GNOME デスクトップ環境は、モダンなセッション (&#039;&#039;GNOME&#039;&#039;) とクラシックなセッション (&#039;&#039;GNOME Classic&#039;&#039;) の両方を持つ、魅力的かつ直感的なデスクトップです。|https://www.gnome.org/|{{grp|gnome}}}}&lt;br /&gt;
* {{App|[[GNOME Flashback]]|GNOME Flashback は元は GNOME フォールバックモードと呼ばれていた GNOME 3 用のシェルです。デスクトップレイアウトや使っている技術は GNOME2 と似ています。|https://wiki.gnome.org/Projects/GnomeFlashback|{{Pkg|gnome-flashback}}}}&lt;br /&gt;
* {{App|[[KDE Plasma]]|KDE Plasma デスクトップ環境は馴染み深い作業環境です。Plasma はモダンなデスクトップコンピューティングに必要なツールをすべて提供するので、使い始めてすぐに生産性を高めることができます。|https://www.kde.org/plasma-desktop|{{grp|plasma}}}}&lt;br /&gt;
* {{App|[[LXDE]]|Lightweight X11 Desktop Environment は速くて省エネルギーなデスクトップ環境です。モダンなインターフェース、多言語サポート、標準キーボードショートカットに加えて、タブファイルブラウズなどの付加的な機能を持っています。基礎から軽量にするよう作られているので、LXDE は他の環境よりも CPU や RAM の消費量が少なくみつもれます。|https://lxde.org/|GTK 2: {{grp|lxde}}, GTK 3: {{grp|lxde-gtk3}}}}&lt;br /&gt;
* {{App|[[LXQt]]|LXQt は LXDE (Lightweight Desktop Environment) の Qt 移植であり後継バージョンです。LXDE-Qt と Razor-qt のプロジェクトが統合して作られました: 軽量、モジュール式、極めて高速でユーザーフレンドリーなデスクトップ環境です。|https://lxqt.github.io/|{{grp|lxqt}}}}&lt;br /&gt;
* {{App|[[MATE]]|伝統的なやりかたを好む Linux ユーザーにとって直感的で魅力的なデスクトップを提供します。GNOME 2 のフォークとして開発が開始されましたが、現在では GTK+ 3 が使われてます。|https://mate-desktop.org/|{{grp|mate}}}}&lt;br /&gt;
* {{App|[[Sugar]]|Sugar 学習用プラットフォームは5歳から12歳までの子供たちにリッチメディアを通して勉学の助けにすることを目的とした活動のためのコンピュータ環境です。Sugar は高等な教育の機会をすべての子供に与えるための世界的な支援によって成り立っています。現在では世界中の、40カ国以上、25の言語をしゃべる、100万人近くの子供たちによって使われています。Sugar は現在多くの地域で見過ごされている、質の高い教育を通じて充実した生活をおくれるように人々を手助けしています。|https://sugarlabs.org/|{{Pkg|sugar}} + {{Grp|sugar-fructose}}}}&lt;br /&gt;
* {{App|UKUI|UKUI は GTK と Qt をベースに開発されている軽量なデスクトップ環境で、Ubuntu kylin に標準搭載されています。|https://www.ukui.org/|{{Grp|ukui}}}}&lt;br /&gt;
* {{App|[[Xfce]]|Xfce は 伝統的な [[Wikipedia:ja:UNIX哲学|UNIX 哲学]]、モジュール性と効率性の体現者です。現代的なデスクトップ環境として期待される機能を持った多くのコンポーネントが含まれていますが、どれも比較的に軽量に抑えられています。コンポーネントは分割してパッケージ化され、最適なパーソナル環境を作るために必要なものだけをピックアップすることができます。|https://xfce.org/|{{grp|xfce4}}}}&lt;br /&gt;
&lt;br /&gt;
=== 非公式サポート ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[CDE]]|Common Desktop Environment は Unix および OpenVMS 用のデスクトップ環境で、Motif ウィジェットツールキットをベースとしています。かつては UNIX98 Workstation Product Standard に含まれており、商用の Unix ワークステーションと一緒に&amp;quot;クラシック&amp;quot;な Unix デスクトップとして長い間使われていました。旧式の環境でありながら、依然として整備されており Linux システムのサポートも続けられています。|https://sourceforge.net/projects/cdesktopenv/|{{AUR|cdesktopenv}}}}&lt;br /&gt;
* {{App|[[Equinox Desktop Environment|EDE]]|&amp;quot;Equinox Desktop Environment&amp;quot; はシンプルで極限の軽量・高速を目指して作られている DE です。|https://edeproject.org/|{{AUR|ede}}}}&lt;br /&gt;
* {{App|KDE 1|最近のシステムで動作するように移植されました。ほとんどノスタルジアのためですが、今でも実際に動作し、日々の作業環境として利用できます。AUR に KDE 1 のアプリケーションがあり、その数は増えています。|https://invent.kde.org/historical/kde1-kdebase|{{AUR|kde1-kdebase-git}}}}&lt;br /&gt;
* {{App|[[Liri]]|Liri は近代的なデザインと機能が特徴のデスクトップ環境です。Liri は [https://github.com/hawaii-desktop Hawaii], [https://github.com/papyros Papyros], [https://github.com/liri-project Liri Project] がマージして生まれました。開発状況はまだ実験的な段階です。|https://liri.io/|{{AUR|liri-shell-git}}}}&lt;br /&gt;
* {{App|[[Lumina]]|Lumina は Qt 5 で書かれた FreeBSD 向けの軽量なデスクトップ環境です。ウィンドウの管理には [[Fluxbox]] を使っています。|https://lumina-desktop.org/|{{AUR|lumina-desktop}}}}&lt;br /&gt;
* {{App|[[Moksha]]|Enlightenment のフォークで、Ubuntu ベースの Bodhi Linux でデフォルトのデスクトップ環境として使われています。|https://www.bodhilinux.com/moksha-desktop/|{{AUR|moksha-git}}}}&lt;br /&gt;
* {{App|[[Pantheon]]|Pantheon は elementary OS ディストリビューションのデフォルトデスクトップ環境として作成されました。Vala と GTK3 ツールキットを使ってゼロから書かれています。ユーザビリティや外観には GNOME Shell や macOS と似通っているところがあります。|https://elementary.io/|{{AUR|pantheon-session-git}}}}&lt;br /&gt;
* {{App|PaperDE|Qt/Wayland と wayfire の上に構築されたデスクトップ環境です。|https://cubocore.org/paperde.html|{{AUR|paperde}}}}&lt;br /&gt;
* {{App|Phosh|Phosh は GNOME ベースの [[Wayland]] シェルユーザインターフェイスで、モバイル端末で便利です。|https://gitlab.gnome.org/World/Phosh/phosh|{{AUR|phosh}}}}&lt;br /&gt;
* {{App|Plasma Mobile|Plasma Mobile はモバイル端末に焦点を当てたデスクトップ環境です。KDE Plasma スタックと [[Wayland]] の上に構築されています。|https://invent.kde.org/plasma/plasma-mobile|{{AUR|plasma-mobile}}}}&lt;br /&gt;
* {{App|theDesk|theDesk は、出来る限りユーザーの邪魔をしないように設計されたデスクトップ環境です。ウィジェットツールキットとして Qt 5 を、ウィンドウマネージャとして KWin を使用します。|https://github.com/vicr123/thedesk|{{AUR|thedesk}}}}&lt;br /&gt;
* {{App|[[Trinity]]|Trinity Desktop Environment (TDE) プロジェクトは KDE 3.5 のスタイルを維持するという目的から始まった Unix ライクなオペレーティングシステム向けのデスクトップ環境です。|https://www.trinitydesktop.org/|[[Trinity]] を参照}}&lt;br /&gt;
* {{App|Maui Shell|Maui Shell は、デスクトップ、タブレット、携帯電話のための収束型シェルです。|https://github.com/Nitrux/maui-shell|{{AUR|maui-shell-git}}}}&lt;br /&gt;
&lt;br /&gt;
== カスタム環境 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;完全な&#039;&#039;グラフィカル環境を構築するのに一番簡単な方法がデスクトップ環境です。しかし、ユーザーは人気のあるデスクトップ環境（とその依存コンポーネント）を使わずにも様々な方法でグラフィカル環境を作成・カスタマイズすることができます。一般的に、カスタム環境の作成は、最適な[[ウィンドウマネージャ]]や[[Wayland#コンポジタ|コンポジタ]]、[[アプリケーション一覧#タスクバー|タスクバー]]、その他雑多なアプリケーション (最小限度必要なソフトウェアとして[[ターミナルエミュレータ]]、[[アプリケーション一覧#ファイルマネージャ|ファイルマネージャ]]、[[テキストエディタ]]など) の選択によります。&lt;br /&gt;
&lt;br /&gt;
通常デスクトップ環境により提供される他のコンポーネントとしては:&lt;br /&gt;
&lt;br /&gt;
* [[Xorg#コンポジット|デスクトップコンポジタ (Xorg)]]&lt;br /&gt;
* [[デスクトップ通知#スタンドアロン|通知デーモン]]&lt;br /&gt;
* [[ディスプレイマネージャ#ディスプレイマネージャ一覧|ディスプレイマネージャ]]&lt;br /&gt;
* [[アプリケーション一覧#スクリーンロック|スクリーンロッカー]]&lt;br /&gt;
* [[アプリケーション一覧#アプリケーションランチャー|アプリケーションランチャー]]&lt;br /&gt;
* [[アプリケーション一覧#音量調整|オーディオ制御]]&lt;br /&gt;
* [[バックライト#バックライトユーティリティ|バックライト制御]]&lt;br /&gt;
* [[MPRIS#コントロールユーティリティ|メディア制御]]&lt;br /&gt;
* [[Polkit#認証エージェント|Polkit 認証エージェント]]&lt;br /&gt;
* [[電源管理]]&lt;br /&gt;
* [[スクリーンショットの取得|スクリーンキャプチャ]]&lt;br /&gt;
* [[バックライト#色補正|スクリーンの色温度]]&lt;br /&gt;
* [[アプリケーション一覧#壁紙設定|壁紙設定]]&lt;br /&gt;
* [[アプリケーション一覧#ログアウトダイアログ| ログアウトダイアログ]]&lt;br /&gt;
* [[デフォルトアプリケーション]]&lt;br /&gt;
&lt;br /&gt;
=== 別のウィンドウマネージャを使う ===&lt;br /&gt;
&lt;br /&gt;
使用しているデスクトップ環境の記事が存在する場合、その記事の &#039;&#039;別のウィンドウマネージャを使う&#039;&#039; のセクション (あるいは類似のセクション) を見てください。あるいは、公式のドキュメントを参照してください。&lt;br /&gt;
&lt;br /&gt;
* [[Budgie#別のウィンドウマネージャを使う]]&lt;br /&gt;
* [[Cinnamon#別のウィンドウマネージャを使う]]&lt;br /&gt;
* [[GNOME#別のウィンドウマネージャを使用する]]&lt;br /&gt;
* [[KDE#別のウィンドウマネージャを使う]]&lt;br /&gt;
* [[LXDE#別のウィンドウマネージャを使う]]&lt;br /&gt;
* [[LXQt#別のウィンドウマネージャを使う]]&lt;br /&gt;
* [[MATE#別のウィンドウマネージャを使う]]&lt;br /&gt;
* [[Xfce#別のウィンドウマネージャを使う]]&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|Desktop environment|2022-08-12|738653}}&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=SageMath&amp;diff=27318</id>
		<title>SageMath</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=SageMath&amp;diff=27318"/>
		<updated>2022-09-16T15:06:54Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* TeX Live が SageTex を認識しない場合 */ 改行が入っていなかったので挿入&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:数値解析]]&lt;br /&gt;
[[en:SageMath]]&lt;br /&gt;
[[ko:SageMath]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Matlab}}&lt;br /&gt;
{{Related|Octave}}&lt;br /&gt;
{{Related|Mathematica}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[http://www.sagemath.org SageMath] (旧名 &#039;&#039;&#039;Sage&#039;&#039;&#039;) は数式処理や数値計算を行うためのプログラムでメインの言語として [[Python]] を使っています。Maple, Matlab, Mathematica といった商用プログラムの代わりとなることを目指しています。&lt;br /&gt;
&lt;br /&gt;
Sage は以下をサポートしています:&lt;br /&gt;
* &#039;&#039;&#039;微積分学&#039;&#039;&#039;: [[Wikipedia:Maxima (software)|Maxima]] と [[Wikipedia:SymPy|SymPy]] を使用。&lt;br /&gt;
* &#039;&#039;&#039;線形代数&#039;&#039;&#039;: [[Wikipedia:GNU Scientific Library|GSL]], [[Wikipedia:SciPy|SciPy]], [[Wikipedia:NumPy|NumPy]] を使用。&lt;br /&gt;
* &#039;&#039;&#039;統計処理&#039;&#039;&#039;: [[Wikipedia:R (programming language)|R]] (through RPy) と SciPy を使用。&lt;br /&gt;
* &#039;&#039;&#039;グラフ&#039;&#039;&#039;: [[Wikipedia:matplotlib|matplotlib]] を使用。&lt;br /&gt;
* [[Wikipedia:IPython|IPython]] を使用する&#039;&#039;&#039;インタラクティブシェル&#039;&#039;&#039;。&lt;br /&gt;
* [[Wikipedia:Python Imaging Library|PIL]], [[Wikipedia:SQLAlchemy|SQLAlchemy]] などの &#039;&#039;&#039;Python モジュール&#039;&#039;&#039;へのアクセス。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|sagemath}} にはコマンドラインバージョンが含まれています。&lt;br /&gt;
* {{Pkg|sagemath-doc}} には HTML ドキュメントやコマンドラインのインラインヘルプが含まれています。&lt;br /&gt;
&lt;br /&gt;
{{Note|多くの Sage パッケージは、{{pkg|sagemath}} パッケージの [[pacman#パッケージのインストール|オプションの依存関係]] または [[AUR]] で利用できるため、通常の Arch パッケージとして追加でインストールする必要があります。それらの機能の利点。 {{ic|sage -i}} を使用してインストールする必要はないことに注意してください。実際、pacman を使用して SageMath をインストールした場合、このコマンドは機能しません。}}&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
Sage は、数値計算用に多少の [http://doc.sagemath.org/html/ja/tutorial/afterword.html#section-mathannoy 改良] が施された Python をスクリプト言語として主に使用します。&lt;br /&gt;
&lt;br /&gt;
=== Sage コマンドライン ===&lt;br /&gt;
Sage はコマンドラインから起動できます:&lt;br /&gt;
 $ sage&lt;br /&gt;
&lt;br /&gt;
Sage コマンドラインに関する情報は [http://doc.sagemath.org/html/en/reference/repl/index.html このページ] を見てください。&lt;br /&gt;
&lt;br /&gt;
コマンドラインは IPython シェルがベースになっていて、Sage では全ての [http://doc.sagemath.org/html/ja/tutorial/interactive_shell.html 設定] を使用することができます。IPython のチュートリアルを読みたい場合はコミュニティによってメンテナンスされている [http://wiki.ipython.org/Cookbook IPython Cookbook] を見てください。&lt;br /&gt;
&lt;br /&gt;
ただし、プロットなど、場合によっては使いづらいことがあります。何かをプロットしたい場合、例えば:&lt;br /&gt;
 sage: plot(sin,(x,0,10))&lt;br /&gt;
Sage は外部アプリケーションでブラウザウィンドウを開きます。&lt;br /&gt;
&lt;br /&gt;
=== Sage Notebook ===&lt;br /&gt;
{{Note|SageMath の Flask notebook はメンテナンスモードとなっており Jupyter notebook に置き換わって廃止される予定です。新しいワークシートを作成するときは Jupyter notebook を使うことを推奨します。{{pkg|sage-notebook-exporter}} アプリケーションで Flask ノートブックを Jupyter に変換できます。}}&lt;br /&gt;
&lt;br /&gt;
高度な利用方法で Sage を使うときに適しているインタフェースは Notebook です。コマンドラインから Notebook サーバーを起動するには、次を実行:&lt;br /&gt;
 $ sage -n&lt;br /&gt;
&lt;br /&gt;
ノートブックは http://localhost:8080 からブラウザでアクセスすることができ、ログインを要求します。&lt;br /&gt;
&lt;br /&gt;
しかしながら、インターネットを介さずにサーバーを個人用に動かしている場合、ログインは面倒です。次のコマンドを使うことで、ログインを必要とせずに、Notebook を起動してブラウザで自動的にポップアップさせることができます:&lt;br /&gt;
 $ sage -c &amp;quot;notebook(automatic_login=True)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Sage Notebook に関する完全なチュートリアルは [http://doc.sagemath.org/html/en/reference/notebook/index.html Sage のドキュメント] を見てください。{{ic|notebook()}} コマンドの詳細は [http://doc.sagemath.org/html/en/reference/notebook/index.html このページ] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== Jupyter Notebook ===&lt;br /&gt;
SageMath の {{Pkg|sagemath-jupyter}} には [https://jupyter.org/ Jupyter] notebook のカーネルが含まれています。カーネルを使うには、{{Pkg|ipython2-notebook}}{{Broken package link|パッケージが存在しません}} と {{Pkg|mathjax}} をインストールして、次のコマンドで notebook を起動してください:&lt;br /&gt;
 $ jupyter notebook&lt;br /&gt;
そして &amp;quot;New...&amp;quot; ドロップダウンメニューから &amp;quot;SageMath&amp;quot; を選択します。SageMath の Jupyter notebook は {{ic|%display latex}} コマンドを使って [[LaTeX]] で出力することができ {{Pkg|jmol}} がインストールされている場合 3D プロットもサポートします。&lt;br /&gt;
&lt;br /&gt;
=== Cantor ===&lt;br /&gt;
[http://edu.kde.org/applications/mathematics/cantor/ Cantor] は KDE Edu Project に含まれているアプリケーションです。Maxima, Sage, Octave, Scilab などの様々な数式処理アプリケーションのフロントエンドとして使うことができます。Cantor で Sage を使用する方法は Sage wiki の [http://wiki.sagemath.org/Cantor Cantor のページ] を見てください。&lt;br /&gt;
&lt;br /&gt;
Cantor は[[公式リポジトリ]]から {{Pkg|cantor}} パッケージでインストールすることができ、このパッケージは {{Grp|kde-applications}} や {{Grp|kde-education}} グループに含まれています。&lt;br /&gt;
&lt;br /&gt;
=== ドキュメント ===&lt;br /&gt;
ローカルのドキュメントは HTML や PDF などの複数のフォーマットにコンパイルすることができます。Sage の全てのリファレンスを作成するには、次のコマンドを (root で) 実行してください:&lt;br /&gt;
 # sage --docbuild reference html&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;reference&#039;&#039; ツリー全体の HTML ドキュメントが作成されます (1時間以上かかるかもしれません)。ドキュメントツリーの一部を作成することもできますが、何が必要なのか自分で調べておく必要があります。それまでは、[http://doc.sagemath.org/ オンラインリファレンス] を見るのが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
ドキュメントのリストは {{ic|sage --docbuild --documents}} を見てください。サポートされているフォーマットのリストは {{ic|sage --docbuild --formats}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== 任意のアドオン ==&lt;br /&gt;
=== SageTeX ===&lt;br /&gt;
システムに [[TeX Live]] をインストールしている場合、[http://doc.sagemath.org/html/ja/tutorial/sagetex.html SageTeX] に興味を覚えるかもしれません。Sage のコードを LaTeX ファイルの中に含めることができるようになるパッケージです。TeX Live は自動的に SageTeX に対応するようになっているので何も考えないで使いはじめることができます。&lt;br /&gt;
&lt;br /&gt;
シンプルな例として、以下は Sage の 2D プロットを TEX ドキュメントに含める例です ({{ic|pdflatex}} を使用するとします):&lt;br /&gt;
* ドキュメントの前に {{ic|sagetex}} パッケージを記述&lt;br /&gt;
 \usepackage{sagetex}&lt;br /&gt;
&lt;br /&gt;
* {{ic|sagesilent}} 環境を作成してコードを挿入:&lt;br /&gt;
 \begin{sagesilent}&lt;br /&gt;
 dob(x) = sqrt(x^2 - 1) / (x * arctan(sqrt(x^2 - 1)))&lt;br /&gt;
 dpr(x) = sqrt(x^2 - 1) / (x * log( x + sqrt(x^2 - 1)))&lt;br /&gt;
 p1 = plot(dob,(x, 1, 10), color=&#039;blue&#039;)&lt;br /&gt;
 p2 = plot(dpr,(x, 1, 10), color=&#039;red&#039;)&lt;br /&gt;
 ptot = p1 + p2&lt;br /&gt;
 ptot.axes_labels([&#039;$\\xi$&#039;,&#039;$\\frac{R_h}{\\max(a,b)}$&#039;])&lt;br /&gt;
 \end{sagesilent}&lt;br /&gt;
&lt;br /&gt;
* プロットを作成 (例: {{ic|float}} 環境の中):&lt;br /&gt;
 \begin{figure}&lt;br /&gt;
 \begin{center}&lt;br /&gt;
 \sageplot[width=\linewidth]{ptot}&lt;br /&gt;
 \end{center}&lt;br /&gt;
 \end{figure}&lt;br /&gt;
&lt;br /&gt;
* 以下を実行してドキュメントをコンパイル:&lt;br /&gt;
 $ pdflatex &amp;lt;doc.tex&amp;gt;&lt;br /&gt;
 $ sage &amp;lt;doc.sage&amp;gt;&lt;br /&gt;
 $ pdflatex &amp;lt;doc.tex&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 出力されたドキュメントを確認してください。&lt;br /&gt;
&lt;br /&gt;
SageTeX の完全なドキュメントは [http://www.ctan.org/pkg/sagetex CTAN] にあります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== TeX Live が SageTex を認識しない場合 ===&lt;br /&gt;
&lt;br /&gt;
TeX Live のインストールで SageTex パッケージが見つからない場合は、以下の手順を試してみてください (root として、またはローカルフォルダを使用します)&lt;br /&gt;
* ファイルを texmf ディレクトリにコピーします:&lt;br /&gt;
 # cp /opt/sage/local/share/texmf/tex/* /usr/share/texmf/tex/&lt;br /&gt;
* TeX Liveをリフレッシュする。&lt;br /&gt;
* TeX Live をを更新します:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
# texhash /usr/share/texmf/&lt;br /&gt;
texhash: Updating /usr/share/texmf/.//ls-R... &lt;br /&gt;
texhash: Done.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://www.sagemath.org/ 公式ウェブサイト]&lt;br /&gt;
* [http://doc.sagemath.org/ Sage のドキュメント]&lt;br /&gt;
* [http://planet.sagemath.org/ Planet Sage]&lt;br /&gt;
* [http://wiki.sagemath.org/ Sage Wiki]&lt;br /&gt;
* [http://www.sagemath.org/links-components.html Software Used by Sage]&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E9%9B%BB%E6%BA%90%E7%AE%A1%E7%90%86&amp;diff=26462</id>
		<title>電源管理</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E9%9B%BB%E6%BA%90%E7%AE%A1%E7%90%86&amp;diff=26462"/>
		<updated>2022-07-18T13:36:38Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: /* ACPI イベント */ HUP シグナル送信のコマンドを追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:電源管理]]&lt;br /&gt;
[[en:Power management]]&lt;br /&gt;
[[es:Power management]]&lt;br /&gt;
[[it:Shutdown Pressing Power Button]]&lt;br /&gt;
[[zh-hans:Power management]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|サスペンドとハイバネート}}&lt;br /&gt;
{{Related|Display Power Management Signaling}}&lt;br /&gt;
{{Related|CPU 周波数スケーリング}}&lt;br /&gt;
{{Related|ハイブリッドグラフィック}}&lt;br /&gt;
{{Related|カーネルモジュール}}&lt;br /&gt;
{{Related|sysctl}}&lt;br /&gt;
{{Related|udev}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
電源管理とはシステムが使われていない場合に電力の供給を切ったり低電力状態にする機能のことです。このページでは Arch Linux における電源管理の全体的な外観を説明します。&lt;br /&gt;
&lt;br /&gt;
ハードウェアの電源管理の設定を直接変更するときはカーネルの設定を使います:&lt;br /&gt;
* [[カーネルパラメータ]]&lt;br /&gt;
* [[カーネルモジュール]]&lt;br /&gt;
* [[udev]] ルール&lt;br /&gt;
&lt;br /&gt;
また、カーネルと対話してイベントを処理する電源管理ツールが多数あります: [[#ユーザースペースツール]] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|ひとつの設定箇所・ツールで設定した電力設定が他の設定箇所・ツールで上書きされる可能性もあるので注意してください。}}&lt;br /&gt;
&lt;br /&gt;
== ユーザースペースツール ==&lt;br /&gt;
&lt;br /&gt;
以下のツールを使うことで手動で多数の設定を行うかわりになります。どのツールも多かれ少なかれ同じような動作をするので、衝突をさけるためにツールはどれか一つだけを実行してください。[[:Category:電源管理|電源管理カテゴリ]]を見ることで Arch Linux にどんな電源管理の選択肢が存在するかわかります。&lt;br /&gt;
&lt;br /&gt;
以下は省電力設定をするために作られた人気のあるスクリプトやツールです:&lt;br /&gt;
&lt;br /&gt;
=== コンソール ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[acpid]]|ACPI の電源管理イベントを届けるデーモン。netlink をサポート。|https://sourceforge.net/projects/acpid2/|{{pkg|acpid}}}}&lt;br /&gt;
* {{App|[[Laptop Mode Tools]]|ノートパソコンの省電力設定をするユーティリティ。多少設定が要りますが省電力設定ユーティリティのデファクトスタンダードとされています。|https://github.com/rickysarraf/laptop-mode-tools|{{AUR|laptop-mode-tools}}}}&lt;br /&gt;
* {{App|libsmbios|Dell SMBIOS テーブルを操作するためのライブラリおよびツール。|https://github.com/dell/libsmbios|{{Pkg|libsmbios}}}}&lt;br /&gt;
* {{App|[[powertop]]|消費電力や電源管理の問題を診断して省電力設定を補助するツール。|https://01.org/powertop/|{{Pkg|powertop}}}}&lt;br /&gt;
* {{App|[[systemd]]|システムおよびサービスマネージャ。|https://freedesktop.org/wiki/Software/systemd/|{{Pkg|systemd}}}}&lt;br /&gt;
* {{App|[[TLP]]|Linux 向けの先進的な電源管理。|https://linrunner.de/tlp|{{Pkg|tlp}}}}&lt;br /&gt;
&lt;br /&gt;
=== グラフィカル ===&lt;br /&gt;
&lt;br /&gt;
* {{App|batterymon-clone|シンプルなバッテリモニタートレイアイコン。|https://github.com/jareksed/batterymon-clone|{{AUR|batterymon-clone}}}}&lt;br /&gt;
* {{App|batsignal|libnotify を使用してバッテリレベルの低下を警告する軽量バッテリモニタ。|https://github.com/electrickite/batsignal|{{AUR|batsignal}}}}&lt;br /&gt;
* {{App|cbatticon|システムトレイにある軽量で高速なバッテリアイコン。|https://github.com/valr/cbatticon|{{Pkg|cbatticon}}}}&lt;br /&gt;
* {{App|GNOME power manager|GNOME のシステム電力情報および統計|https://gitlab.gnome.org/GNOME/gnome-power-manager|{{Pkg|gnome-power-manager}}}}&lt;br /&gt;
* {{App|KDE Power Devil|Plasma 用の電源管理モジュール。|https://invent.kde.org/plasma/powerdevil|{{Pkg|powerdevil}}}}&lt;br /&gt;
* {{App|LXQt Power Management|LXQt 用の電源管理モジュール。|https://github.com/lxqt/lxqt-powermanagement|{{Pkg|lxqt-powermanagement}}}}&lt;br /&gt;
* {{App|MATE Power Management|MATE 用電源管理ツール|https://github.com/mate-desktop/mate-power-manager|{{Pkg|mate-power-manager}}}}&lt;br /&gt;
* {{App|MATE Power Statistics|MATE のシステム電力情報と統計|https://github.com/mate-desktop/mate-power-manager|{{Pkg|mate-power-manager}}}}&lt;br /&gt;
* {{App|powerkit|デスクトップに依存しない電源マネージャー。|https://github.com/rodlie/powerkit|{{AUR|powerkit}}}}&lt;br /&gt;
* {{App|Xfce Power Manager|Xfce 用の Power Manager。|https://docs.xfce.org/xfce/xfce4-power-manager/start|{{Pkg|xfce 4-power-manager}}}}&lt;br /&gt;
* {{App|vattery|システムトレイ内のラップトップバッテリのステータスを表示する、 Vala で書かれたバッテリ監視アプリケーション。|https://www.jezra.net/projects/vattery.html|{{AUR|vattery}}}}&lt;br /&gt;
&lt;br /&gt;
== systemd による電源管理 ==&lt;br /&gt;
&lt;br /&gt;
=== ACPI イベント ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; は電源関連の [[Wikipedia:Advanced_Configuration_and_Power_Interface|ACPI]] イベントを扱えます。{{ic|/etc/systemd/logind.conf}} や {{ic|/etc/systemd/logind.conf.d/*.conf}} のオプションを使って設定できます。詳細は {{man|5|logind.conf}} も参照して下さい。個別の電源マネージャを持たないシステムでは、この方法は [[acpid]] デーモンの代わりになりえます。ちなみに、[[acpid]] は ACPI イベントに対応するために使われるデーモンです。&lt;br /&gt;
&lt;br /&gt;
定めることができる動作は {{ic|ignore}}, {{ic|poweroff}}, {{ic|reboot}}, {{ic|halt}}, {{ic|suspend}}, {{ic|hibernate}}, {{ic|hybrid-sleep}}, {{ic|suspend-then-hibernate}}, {{ic|lock}}, {{ic|kexec}} のいずれかです。ハイバーネートとサスペンドの場合は [[サスペンドとハイバネート]] を見て適切に設定して下さい。これらの動作が設定されていない場合は、&#039;&#039;systemd&#039;&#039; はデフォルトの動作を行います。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=1&lt;br /&gt;
!イベントハンドラ&lt;br /&gt;
!説明&lt;br /&gt;
!デフォルトの挙動&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|HandlePowerKey}}&lt;br /&gt;
|パワーキーが押された時にトリガされます。&lt;br /&gt;
|{{ic|poweroff}}&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|HandleSuspendKey}}&lt;br /&gt;
|サスペンドキーが押された時にトリガされます。&lt;br /&gt;
|{{ic|suspend}}&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|HandleHibernateKey}}&lt;br /&gt;
|ハイバーネートキーあるいはボタンが押された時にトリガされます。&lt;br /&gt;
|{{ic|hibernate}}&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|HandleLidSwitch}}&lt;br /&gt;
|ラップトップPCなどの蓋が閉じられた時にトリガされます。例外は下を見てください。&lt;br /&gt;
|{{ic|suspend}}&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|HandleLidSwitchDocked}}&lt;br /&gt;
|PCがドッキングステーションや他のディスプレイに接続されている状況で、蓋が閉じられた時にトリガされます。&lt;br /&gt;
|{{ic|ignore}}&lt;br /&gt;
|-&lt;br /&gt;
|{{ic|HandleLidSwitchExternalPower}}&lt;br /&gt;
|システムが外部電源に接続されている状況で、蓋が閉じられた時にトリガされます。&lt;br /&gt;
|{{ic|HandleLidSwitch}}に設定されている動作&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
変更を適用するには {{ic|systemd-logind}} に対して、 {{ic|HUP}} シグナルを発行して下さい:&lt;br /&gt;
&lt;br /&gt;
 # systemctl kill -s HUP systemd-logind&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== 電源マネージャ ====&lt;br /&gt;
&lt;br /&gt;
[[デスクトップ環境]]には電源マネージャが含まれていることがあります。現在のバージョンの systemd では、{{ic|Handle*}} オプションは電源マネージャによって &amp;quot;inhibited&amp;quot; (一時的にオフ) にされない限りシステム全体に適用されます。停止されなければ、systemd がシステムをサスペンドした状態で終わることができ、立ち上がった時に他の電源マネージャによってもう一度停止されます。&lt;br /&gt;
&lt;br /&gt;
最新の [[KDE]], [[GNOME]], [[Xfce]] の電源マネージャは &amp;quot;inhibited&amp;quot; コマンドを実行します。[[acpid]] など他のプログラムで ACPI イベントを管理したい場合は、{{ic|Handle}} オプションを {{ic|ignore}} に設定する必要があります。詳しくは {{man|1|systemd-inhibit}} を参照。&lt;br /&gt;
&lt;br /&gt;
==== xss-lock ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|xss-lock}} は systemd の {{ic|suspend}}, {{ic|hibernate}}, {{ic|lock-session}}, {{ic|unlock-session}} イベントで適切なアクションを実行します (ロッカーの起動など)。&#039;&#039;xss-lock&#039;&#039; は [[DPMS]] イベントにも反応します。&lt;br /&gt;
&lt;br /&gt;
xss-lock を[[自動起動]]するときは以下のようなコマンドを使います:&lt;br /&gt;
&lt;br /&gt;
 xss-lock -- i3lock -n -i &#039;&#039;background_image.png&#039;&#039; &amp;amp;&lt;br /&gt;
&lt;br /&gt;
xss-lock によってサスペンド時に CPU 消費率が 100% になる場合、[https://bitbucket.org/raymonad/xss-lock/commits/1e158fb20108058dbd62bd51d8e8c003c0a48717 commit 1e158f] にあるように {{AUR|xss-lock-git}} を使うことで問題が解決します。&lt;br /&gt;
&lt;br /&gt;
=== サスペンドとハイバネート ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd&#039;&#039; はカーネルに入っているサスペンド・レジューム機能を使ってサスペンド (suspend to RAM)・ハイバネート・ハイブリッドサスペンドを行うコマンドを提供しています。また、サスペンドの前後の行動をカスタマイズするフックを追加する仕組みも存在します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;systemd&#039;&#039; はデフォルトの&#039;&#039;カーネル&#039;&#039;バックエンドに加えて、他のサスペンドバックエンド ([[Uswsusp]]) を使ってコンピュータをサスペンドしたりハイバネートすることもできます。例えば [[Uswsusp#systemd を使う]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|systemctl suspend}} は何も設定しなくても動きますが、あなたの環境で {{ic|systemctl hibernate}} を使うには[[サスペンドとハイバネート#ハイバネーション]]の指示に従う必要があります。&lt;br /&gt;
&lt;br /&gt;
==== ハイブリッドスリープ ====&lt;br /&gt;
&lt;br /&gt;
{{ic|systemctl hybrid-sleep}} はハイバネートとサスペンドを同時に行います。サスペンドとハイバネートのメリット・デメリットを組み合わせたものになります。突然コンピュータの電源が喪失 (コンセントが抜けたりバッテリーが切れる) しても、ハイバネートから復帰するため便利です。電源喪失がない場合、サスペンドから復帰するため、ハイバネートから復帰するよりも高速に復帰します。ただし、&amp;quot;hybrid-sleep&amp;quot; はハイバネートを機能させるためにメモリをスワップする必要があるので、普通の {{ic|systemctl suspend}} よりもスリープするのにかかる時間が長くなります。ハイブリッドスリープの別の方法として[[#遅延ハイバネーション|遅延ハイバネーション]]があります。&lt;br /&gt;
&lt;br /&gt;
==== サスペンドやハイバネーションの代わりに常にハイブリッドスリープを使う ====&lt;br /&gt;
&lt;br /&gt;
サスペンドやハイバネートが要求されたときでもハイブリッドスリープを行うように systemd を設定することができます。&lt;br /&gt;
&lt;br /&gt;
デフォルトのサスペンドとハイバネートのアクションは {{ic|/etc/systemd/sleep.conf}} ファイルで設定します。両方ともハイブリッドスリープを実行するように設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/sleep.conf|2=&lt;br /&gt;
[Sleep]&lt;br /&gt;
# suspend=hybrid-sleep&lt;br /&gt;
SuspendMode=suspend&lt;br /&gt;
SuspendState=disk&lt;br /&gt;
# hibernate=hybrid-sleep&lt;br /&gt;
HibernateMode=suspend&lt;br /&gt;
HibernateState=disk&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|5|sleep.conf.d}} のマニュアルページを読んでください。&lt;br /&gt;
&lt;br /&gt;
=== スリープフック ===&lt;br /&gt;
&lt;br /&gt;
===== サスペンド/リジューム サービスファイル =====&lt;br /&gt;
&lt;br /&gt;
サービスファイルを suspend.target, hibernate.target, sleep.target にフックすることでサスペンド・ハイバネート前後に行うアクションを設定できます。ユーザー・システムアクションを行うにはファイルを分割する必要があります。ユーザーサービスファイルを作動させるには、{{ic|# systemctl enable suspend@&amp;lt;user&amp;gt; &amp;amp;&amp;amp; systemctl enable resume@&amp;lt;user&amp;gt;}}。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/suspend@.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=User suspend actions&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=%I&lt;br /&gt;
Type=forking&lt;br /&gt;
Environment=DISPLAY=:0&lt;br /&gt;
ExecStartPre= -/usr/bin/pkill -u %u unison ; /usr/local/bin/music.sh stop ; /usr/bin/mysql -e &#039;slave stop&#039;&lt;br /&gt;
ExecStart=/usr/bin/sflock&lt;br /&gt;
ExecStartPost=/usr/bin/sleep 1&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/resume@.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=User resume actions&lt;br /&gt;
After=suspend.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
User=%I&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStartPre=/usr/local/bin/ssh-connect.sh&lt;br /&gt;
ExecStart=/usr/bin/mysql -e &#039;slave start&#039;&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=suspend.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* [[アプリケーション一覧/セキュリティ#スクリーンロック|slock]] を使用する場合、スリープする前にサービスを起動してはいけません。デフォルトの simple サービスタイプを使って下さい。でないと、先に &#039;&#039;slock&#039;&#039; が起動して、ロックを解除しないとスリープに入らないようになってしまいます。forking タイプを指定しても解決しません。&lt;br /&gt;
* スクリーンがロックされる前にスクリーンロックが返ってきてしまい、サスペンドから復帰するときに画面が点滅することがあります。{{ic|1=ExecStartPost=/usr/bin/sleep 1}} で遅延を追加することで解決します。}}&lt;br /&gt;
&lt;br /&gt;
root アクションでは ({{ic|# systemctl enable root-suspend}} で有効にしてください):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/root-resume.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Local system resume actions&lt;br /&gt;
After=suspend.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/systemctl restart mnt-media.automount&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=suspend.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/root-suspend.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Local system suspend actions&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=-/usr/bin/pkill sshfs&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
サービスファイルについてのヒント (詳しくは {{man|5|systemd.service}}):&lt;br /&gt;
* {{ic|1=&amp;lt;nowiki&amp;gt;Type=oneshot&amp;lt;/nowiki&amp;gt;}} の場合、複数の {{ic|1=&amp;lt;nowiki&amp;gt;ExecStart=&amp;lt;/nowiki&amp;gt;}} 行を使うことができます。それ以外の場合は使える ExecStart は一行だけです。{{ic|ExecStartPre}} を使ったりコマンドをセミコロンで分割することでコマンドを追加することができます（最初の例を見て下さい -- セミコロンの前後にはスペースが必要です）。&lt;br /&gt;
* コマンドの前に &#039;-&#039; を付けるとエラーが起こっても（終了ステータスが0以外でも）無視され、コマンドは成功したとして扱われます。&lt;br /&gt;
* サービスファイルのトラブルシューティングのときにエラーを見つけるには [[Systemd#Journal|journalctl]] を使うのがベストです。&lt;br /&gt;
&lt;br /&gt;
===== サスペンド/レジューム サービスファイルの統合 =====&lt;br /&gt;
&lt;br /&gt;
サスペンド/レジューム サービスファイルを統合すれば、様々なフェイズ（スリープ・レジューム）やターゲット（サスペンド・ハイバネート・ハイブリッドスリープ）でやることをひとつのフックで行うことができます。&lt;br /&gt;
&lt;br /&gt;
例と説明:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/wicd-sleep.service|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Wicd sleep hook&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
StopWhenUnneeded=yes&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
ExecStart=-/usr/share/wicd/daemon/suspend.py&lt;br /&gt;
ExecStop=-/usr/share/wicd/daemon/autoconnect.py&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|1=&amp;lt;nowiki&amp;gt;RemainAfterExit=yes&amp;lt;/nowiki&amp;gt;}}: 起動後、明示的に止められるまでサービスは常時 active になります。&lt;br /&gt;
* {{ic|1=&amp;lt;nowiki&amp;gt;StopWhenUnneeded=yes&amp;lt;/nowiki&amp;gt;}}: active のとき、サービスは sleep.target が停止した後に止められます。&lt;br /&gt;
* sleep.target は suspend.target, hibernate.target, hybrid-sleep.target から呼ばれ sleep.target 自身は StopWhenUnneeded サービスなので、タスクごとにフックが正しく起動・停止することが保証されています。&lt;br /&gt;
&lt;br /&gt;
==== 遅延ハイバネーション ====&lt;br /&gt;
&lt;br /&gt;
遅延ハイバネーションではスリープフックを利用して通常通りにサスペンドしますが、その後にハイバネーションを実行するタイマーをセットします。ハイバネーションを最初に実行しないためスリープに入るのが {{ic|systemctl hybrid-sleep}} よりも早くなります。ただし、&amp;quot;hybrid-sleep&amp;quot; とは違って、サスペンド中にハイバネーションを使うことで電源喪失から保護するようなことはできません。そのため遅延ハイバネーションはデスクトップなどよりもノートパソコンで使うほうが適しています。ハイバネーションが遅延されるため、サスペンド中はノートパソコンのバッテリーだけが使われ、それからハイバネーションが実行されます。バッテリーがなくなるまでサスペンドし続ける &amp;quot;hybrid-sleep&amp;quot; よりも消費電力を抑えることが可能です。ノートパソコンにハードディスクが搭載されている場合、ハイバネートするためにサスペンドから復帰したとき、ノートパソコンを数秒間は動かさないほうがよいでしょう。遅延ハイバネーションは消費電力だけでなくセキュリティに関しても利点があります (例: 完全なディスク暗号化を使っている場合)。サンプルスクリプトは [https://superuser.com/questions/298672/linuxhow-to-hibernate-after-a-period-of-sleep こちら] にあります。systemd のスリープフックについては [https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279 こちらの投稿] も参照してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/suspend-to-hibernate.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Delayed hibernation trigger&lt;br /&gt;
Documentation=https://bbs.archlinux.org/viewtopic.php?pid=1420279#p1420279&lt;br /&gt;
Documentation=https://wiki.archlinux.org/index.php/Power_management&lt;br /&gt;
Conflicts=hibernate.target hybrid-sleep.target&lt;br /&gt;
Before=sleep.target&lt;br /&gt;
StopWhenUnneeded=true&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
Environment=&amp;quot;WAKEALARM=/sys/class/rtc/rtc0/wakealarm&amp;quot;&lt;br /&gt;
Environment=&amp;quot;SLEEPLENGTH=+2hour&amp;quot;&lt;br /&gt;
ExecStart=-/usr/bin/sh -c &#039;echo -n &amp;quot;alarm set for &amp;quot;; date +%%s -d$SLEEPLENGTH | tee $WAKEALARM&#039;&lt;br /&gt;
ExecStop=-/usr/bin/sh -c &#039;\&lt;br /&gt;
  alarm=$(cat $WAKEALARM); \&lt;br /&gt;
  now=$(date +%%s); \&lt;br /&gt;
  if [ -z &amp;quot;$alarm&amp;quot; ] || [ &amp;quot;$now&amp;quot; -ge &amp;quot;$alarm&amp;quot; ]; then \&lt;br /&gt;
     echo &amp;quot;hibernate triggered&amp;quot;; \&lt;br /&gt;
     systemctl hibernate; \&lt;br /&gt;
  else \&lt;br /&gt;
     echo &amp;quot;normal wakeup&amp;quot;; \&lt;br /&gt;
  fi; \&lt;br /&gt;
  echo 0 &amp;gt; $WAKEALARM; \&lt;br /&gt;
&#039;&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=sleep.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|Before}} と {{ic|Conflicts}} オプションはハイバネートでは動作させないようにするために必要です。そうしないと遅延ハイバネーションが実行されたときにサービスが2回実行されてしまいます。{{ic|WantedBy}} と {{ic|StopWhenUnneeded}} オプションはスリープの前に実行して復帰時に停止するように設定しています。サービスを[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
==== /usr/lib/systemd/system-sleep のフック ====&lt;br /&gt;
&lt;br /&gt;
Systemd は {{ic|/usr/lib/systemd/system-sleep/}} 内の全ての実行可能ファイルを実行するときに、2つの引数を渡します:&lt;br /&gt;
&lt;br /&gt;
* 引数 1: {{ic|pre}} か {{ic|post}}。マシンが停止するときと起動するとき。&lt;br /&gt;
* 引数 2: {{ic|suspend}} か {{ic|hibernate}} か {{ic|hybrid-sleep}}。呼び出されるものによる。&lt;br /&gt;
&lt;br /&gt;
systemd はスクリプトを（ひとつずつではなく）同時に実行します。&lt;br /&gt;
&lt;br /&gt;
カスタムスクリプトの出力は {{ic|systemd-suspend.service}}, {{ic|systemd-hibernate.service}}, {{ic|systemd-hybrid-sleep.service}} によって記録されます。出力を見るには systemd の [[Systemd#Journal|journal]] を使って下さい:&lt;br /&gt;
 # journalctl -b -u systemd-suspend&lt;br /&gt;
&lt;br /&gt;
{{Note|カスタムスクリプトを使うかわりに {{ic|sleep.target}}, {{ic|suspend.target}}, {{ic|hibernate.target}}, {{ic|hybrid-sleep.target}} を使ってユニットをスリープステートロジックにフックさせることもできます。}}&lt;br /&gt;
&lt;br /&gt;
カスタムスリープスクリプトの例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/system-sleep/example.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
case $1/$2 in&lt;br /&gt;
  pre/*)&lt;br /&gt;
    echo &amp;quot;Going to $2...&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
  post/*)&lt;br /&gt;
    echo &amp;quot;Waking up from $2...&amp;quot;&lt;br /&gt;
    ;;&lt;br /&gt;
esac}}&lt;br /&gt;
&lt;br /&gt;
スクリプトを実行可能にするのを忘れないで下さい:&lt;br /&gt;
 # chmod a+x /usr/lib/systemd/system-sleep/example.sh&lt;br /&gt;
&lt;br /&gt;
詳しくは {{man|7|systemd.special}} や {{man|8|systemd-sleep}} を見てください。&lt;br /&gt;
&lt;br /&gt;
== 省電力設定 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|[[ノートパソコン#電源管理]]ではノートパソコンでの電源管理（特にバッテリー状態の監視）を説明しています。}}&lt;br /&gt;
&lt;br /&gt;
このセクションでは省電力機能を使用するのに必要な設定を扱います。コンピュータが AC 電源またはバッテリーで動作しているかに関わらず、ここに記載されているほとんど全ての機能には使用する価値があります。パフォーマンスへの影響は軽微ですが、大抵壊れているハードウェアやドライバーのためにデフォルトでは有効になっていません。電力の使用量を減らすことは熱を減らすことでもあり、[[Wikipedia:ja:インテル ターボ・ブースト・テクノロジー|動的なオーバークロック]]によって、最近の Intel や AMD の CPU ではパフォーマンスの向上につながることもあります。&lt;br /&gt;
&lt;br /&gt;
udev ルールなどを使ってスクリプトや省電力設定を自分で作成したい場合は以下の設定を参考にすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Note|以下で記述しているルールのほとんどは [[TLP]] などのツールで管理することもでき、ツールを使いながら自分でも管理するのは不得策です。}}&lt;br /&gt;
&lt;br /&gt;
=== オーディオ ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、オーディオの省電力機能はほとんどのドライバーで無効になっています。{{ic|power_save}} パラメータを設定することで有効にすることができます。アイドルモードに移行するまでの時間を秒数で指定します。1秒後にサウンドカードをアイドル状態にするには、Intel の場合、以下を作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/audio_powersave.conf|2=options snd_hda_intel power_save=1}}&lt;br /&gt;
&lt;br /&gt;
ac97 の場合は以下を使って下さい:&lt;br /&gt;
&lt;br /&gt;
 options snd_ac97_codec power_save=1&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* サウンドカードの製造者や使われているカーネルドライバーの情報を取得するには、{{ic|lspci -k}} を実行してください。&lt;br /&gt;
* サウンドカードの電源状態を変更すると壊れたハードウェアでポップノイズがまじったり著しい遅延が発生することがあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
HDMI の音声出力を無効化することで消費電力を下げることもできます。適切なカーネルモジュールを[[ブラックリスト]]に追加してください (例: {{ic|snd_hda_codec_hdmi}})。&lt;br /&gt;
&lt;br /&gt;
=== バックライト ===&lt;br /&gt;
&lt;br /&gt;
[[バックライト]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== Bluetooth ===&lt;br /&gt;
&lt;br /&gt;
[[Bluetooth]] を完全に無効化するには、{{ic|btusb}} と {{ic|bluetooth}} モジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト]]に入れてください。&lt;br /&gt;
&lt;br /&gt;
一時的にだけ bluetooth をオフにするには、&#039;&#039;rfkill&#039;&#039; を使用します:&lt;br /&gt;
&lt;br /&gt;
 # rfkill block bluetooth&lt;br /&gt;
&lt;br /&gt;
もしくは udev ルールを使って:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-bluetooth.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# disable bluetooth&lt;br /&gt;
SUBSYSTEM==&amp;quot;rfkill&amp;quot;, ATTR{type}==&amp;quot;bluetooth&amp;quot;, ATTR{state}=&amp;quot;0&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== ウェブカメラ ===&lt;br /&gt;
&lt;br /&gt;
内蔵のウェブカメラを使わない場合、{{ic|uvcvideo}} モジュールを[[カーネルモジュール#ブラックリスト|ブラックリスト]]に入れてください。&lt;br /&gt;
&lt;br /&gt;
=== カーネルパラメータ ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは {{ic|/etc/sysctl.d/}} の設定を使います。このディレクトリはカーネルの sysctl パラメータと対応するディレクトリです。詳しくは [http://0pointer.de/blog/projects/the-new-configuration-files The New Configuration Files] や、より正確な {{man|5|sysctl.d}} を見てください。&lt;br /&gt;
&lt;br /&gt;
==== NMI watchdog の無効化 ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Non-maskable interrupt|NMI]] watchdog はカーネルパニックを引き起こすハードウェアのハングアップをキャッチするデバッグ機能です。システムによっては大量の割り込みが発生するため、消費電力の増加につながっていることがあります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/disable_watchdog.conf|2=kernel.nmi_watchdog = 0}}&lt;br /&gt;
&lt;br /&gt;
もしくは起動の初期で完全に無効化するには[[カーネルパラメータ|カーネル行]]に {{ic|1=nmi_watchdog=0}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
==== ライトバック時間 ====&lt;br /&gt;
&lt;br /&gt;
仮想メモリのダーティなライトバック時間を増やすことでディスク I/O がまとめられて、断続的なディスクの書き込みが減って、消費電力が抑えられます。この値を60秒に設定するには (デフォルトは5秒です):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/dirty.conf|2=vm.dirty_writeback_centisecs = 6000}}&lt;br /&gt;
&lt;br /&gt;
ジャーナルをサポートしているファイルシステム (ext4 や btrfs など) でジャーナルコミットでも同じことをするには、[[fstab]] でオプションとして {{ic|1=commit=60}} を使用します。&lt;br /&gt;
&lt;br /&gt;
I/O パフォーマンスや省電力に影響する他のパラメータは [[sysctl#仮想メモリ]] を参照。&lt;br /&gt;
&lt;br /&gt;
==== Laptop Mode ====&lt;br /&gt;
&lt;br /&gt;
ラップトップモードの&#039;ノブ&#039;については[https://www.kernel.org/doc/Documentation/laptops/laptop-mode.txt カーネルドキュメント]を見て下さい。&#039;&#039;&amp;quot;このノブの適切な値は5秒です。&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/sysctl.d/laptop.conf|2=vm.laptop_mode = 5}}&lt;br /&gt;
&lt;br /&gt;
=== ネットワークインターフェイス ===&lt;br /&gt;
&lt;br /&gt;
[[Wake-on-LAN]] は便利な機能ですが、利用しない場合はサスペンド中にマジックパケットが来るのを待つのに無駄な電力を消耗するだけです。全ての Ethernet インターフェイスで Wake-on-LAN を無効化:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-disable_wol.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;net&amp;quot;, KERNEL==&amp;quot;eth*&amp;quot;, RUN+=&amp;quot;/usr/bin/ethtool -s %k wol d&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
全ての無線インターフェイスで省電力機能を有効にするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-wifi-powersave.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;net&amp;quot;, KERNEL==&amp;quot;wlan*&amp;quot;, RUN+=&amp;quot;/usr/bin/iw dev %k set power_save on&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
上記の例では、{{ic|%k}} がマッチするデバイスのカーネル名を示します。例えば、ルールが {{ic|wlan0}} に適用可能とわかった場合、{{ic|%k}} は {{ic|wlan0}} に置き換えられます。特定のインターフェイスにだけルールを適用するには、パターン {{ic|eth*}} と修飾子 {{ic|%k}} を適当なインターフェイスの名前に置き換えて下さい。詳しくは、[http://www.reactivated.net/writing_udev_rules.html Writing udev rules] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|ここで、設定ファイルの名前は重要です。systemd v197 から {{ic|80-net-setup-link.rules}} によって[[ネットワーク設定#デバイス名|永続的なデバイス名]]が導入されたため、デバイスに {{ic|enp2s0}} というような名前で呼ばれるようになる前に適用されるように、ネットワークの powersave ファイルは辞書順で {{ic|80-net-setup-link.rules}} よりも前に来る名前を付けなくてはなりません。}}&lt;br /&gt;
&lt;br /&gt;
==== Intel ワイヤレスカード (iwlwifi) ====&lt;br /&gt;
&lt;br /&gt;
Intel 製ワイヤレスカードの省電力機能は {{ic|iwlwifi}} ドライバーに適切なパラメータを渡すことで有効にできます。{{ic|/etc/modprobe.d/iwlwifi.conf}} ファイルに以下の行を追加することで永続的に有効にできます:&lt;br /&gt;
&lt;br /&gt;
 options iwlwifi power_save=1 d0i3_disable=0 uapsd_disable=0&lt;br /&gt;
 options iwldvm force_cam=0&lt;br /&gt;
&lt;br /&gt;
上記の省電力オプションは実験的であり、システムが不安定になる可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== バスパワーの管理 ===&lt;br /&gt;
&lt;br /&gt;
==== Active State Power Management ====&lt;br /&gt;
&lt;br /&gt;
コンピュータが [[Wikipedia:Active State Power Management|ASPM]] をサポートしているという信頼が得られなかった場合、起動時に無効化されます:&lt;br /&gt;
&lt;br /&gt;
 $ lspci -vv | grep ASPM.*abled\;&lt;br /&gt;
&lt;br /&gt;
ASPM は BIOS によって扱われるため、ASPM が無効化される理由は以下の通りです [https://wireless.kernel.org/en/users/Documentation/ASPM]:&lt;br /&gt;
&lt;br /&gt;
# BIOS が何らかの理由で ASPM を無効化した (コンフリクトが起こるから？)。&lt;br /&gt;
# PCIE が L0s 以外の ASPM を必要とする (L0s は無効化され L1 だけが有効化される)。&lt;br /&gt;
# ASPM について BIOS がプログラムされていない。&lt;br /&gt;
# BIOS にバグが存在する。&lt;br /&gt;
&lt;br /&gt;
コンピュータが ASPM をサポートしていると信じられる場合は、{{ic|1=pcie_aspm=force}} [[カーネルパラメータ]]を使うことで強制的にオンにすることができます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* ASPM を強制するとフリーズやパニックが発生することがあります。ASPM が動作しなかったときにオプションを戻す手段があるか確認してください。&lt;br /&gt;
* ASPM をサポートしていないシステムで強制させると消費電力が逆に上昇することがあります。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|powersave}} に調整するには次を実行 (以下のコマンドは ASPM が有効になっていないと機能しません):&lt;br /&gt;
&lt;br /&gt;
 echo powersave | tee /sys/module/pcie_aspm/parameters/policy&lt;br /&gt;
&lt;br /&gt;
デフォルトでは以下のようになります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /sys/module/pcie_aspm/parameters/policy|[default] performance powersave}}&lt;br /&gt;
&lt;br /&gt;
==== PCI Runtime Power Management ====&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/pci_pm.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;pci&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==== デバイスの電源管理 ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;USB を含む&#039;&#039;、(ほぼ) 全てのデバイスの電源管理を有効化:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/dev_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Various subsystems runtime power management (by bus or class)&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEMS==&amp;quot;*&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Various subsystems power saving (by module)&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEMS==&amp;quot;*&amp;quot;, TEST==&amp;quot;parameters/power_save&amp;quot;, ATTR{parameters/power_save}=&amp;quot;1&amp;quot; &amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
影響を受けるデバイスを表示するには:&lt;br /&gt;
 ls /sys/bus/*/devices/*/power/control&lt;br /&gt;
 ls /sys/class/*/*/power/control&lt;br /&gt;
 ls /sys/module/*/parameters/power_save&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;USB を除く&#039;&#039;全てのシステムで電源管理を有効にするには、最初のルールをサブシステムごとのルールに置き換えます (/sys/bus/&#039;&#039;some_subsystem&#039;&#039;, /sys/class/&#039;&#039;some_subsystem&#039;&#039;):&lt;br /&gt;
 ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;some_subsystem&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==== USB の自動サスペンド ====&lt;br /&gt;
&lt;br /&gt;
Linux カーネルは USB デバイスが使用されていないときに USB デバイスを自動的にサスペンドさせることができます。これによって電力を相当カットできるときもありますが、USB の省電力機能に対応していない USB デバイスではおかしな挙動が起こる可能性もあります (特に USB マウスやキーボード)。ホワイトリストとブラックリストでフィルタリングする [[udev]] ルールを使うことで問題は軽減されます。&lt;br /&gt;
&lt;br /&gt;
最も単純であまり役に立たない、全ての USB デバイスで自動サスペンドを有効にする例:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-usb_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
自動サスペンドが動作するデバイスにだけ自動サスペンドを有効にするには、ベンダーとプロダクト ID でマッチングを行います (&#039;&#039;lsusb&#039;&#039; を使って値を取得):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-usb_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# whitelist for usb autosuspend&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{idVendor}==&amp;quot;05c6&amp;quot;, ATTR{idProduct}==&amp;quot;9205&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
もしくは、USB 自動サスペンドが使えないデバイスをブラックリストに入れて、他の全てのデバイスで自動サスペンドを有効にするには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/50-usb_power_save.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# blacklist for usb autosuspend&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTR{idVendor}==&amp;quot;05c6&amp;quot;, ATTR{idProduct}==&amp;quot;9205&amp;quot;, GOTO=&amp;quot;power_usb_rules_end&amp;quot;&lt;br /&gt;
&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, TEST==&amp;quot;power/control&amp;quot;, ATTR{power/control}=&amp;quot;auto&amp;quot;&lt;br /&gt;
LABEL=&amp;quot;power_usb_rules_end&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
自動サスペンドに入るデフォルトのアイドル遅延時間は {{ic|usbcore}} [[カーネルモジュール]]の {{ic|autosuspend}} パラメータによって制御されています。遅延時間をデフォルトの2秒から5秒に設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/modprobe.d/usb-autosuspend.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
options usbcore autosuspend=5&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|power/control}} と同じように、{{ic|power/autosuspend}} 属性を設定することで遅延時間はデバイスごとに細かく設定することができます。&lt;br /&gt;
&lt;br /&gt;
USB の電源管理に関する詳細は [https://www.kernel.org/doc/Documentation/usb/power-management.txt Linux カーネルドキュメント]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== SATA Active Link Power Management ====&lt;br /&gt;
&lt;br /&gt;
{{Note|以下の設定を行うとアイドル状態になっているドライブにアクセスするときに遅延が発生するようになります。AC 電源を使用するかどうかによって変えるべき設定です。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/hd_power_save.rules|2=ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;scsi_host&amp;quot;, KERNEL==&amp;quot;host*&amp;quot;, ATTR{link_power_management_policy}=&amp;quot;min_power&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|デバイスによっては SATA Active Link Power Management でデータが消失する可能性があります (例: [[Lenovo ThinkPad T440s|Lenovo T440s]] はこの問題を抱えていることが[http://lkml.indiana.edu/hypermail/linux/kernel/1401.2/02171.html 知られています])。バックアップを取っていない場合は設定を有効にしないでください。}}&lt;br /&gt;
&lt;br /&gt;
=== ハードディスクドライブ ===&lt;br /&gt;
&lt;br /&gt;
設定できるドライブのパラメータについては [[hdparm]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
多数のプログラムがディスクに頻繁に書き込みをおこなう場合は省電力は効率的ではありません。全てのプログラムを調査して、いつどのようにプログラムがディスクに書き込むを行うのか調べるのがディスクの使用量を減らす道です。{{Pkg|iotop}} を使えばどのプログラムがディスクに頻繁に書き込みしているかわかります。他のヒントは[[ソリッドステートドライブ#SSD の読み書きを最小化するヒント]]を見て下さい、ほとんどのヒントは SSD に限ったものではありません。&lt;br /&gt;
&lt;br /&gt;
[[Fstab#atime オプション|noatime]] オプションを設定するなどの小さなことも馬鹿にできません。十分な RAM がある場合、[[スワップ#Swappiness|swappiness]] を無効化したり制限することでディスクへの書き込みが減る可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== CD/DVD のスピンダウン ===&lt;br /&gt;
&lt;br /&gt;
[[udisks]] を使用してしばらくしてから CD/DVD ロムをスピンダウンさせるには:&lt;br /&gt;
&lt;br /&gt;
 # udisks --inhibit-polling /dev/sr0&lt;br /&gt;
&lt;br /&gt;
== ツールとスクリプト ==&lt;br /&gt;
&lt;br /&gt;
=== スクリプトと udev ルールを使う ===&lt;br /&gt;
&lt;br /&gt;
systemd ユーザーは {{ic|systemctl suspend}} や {{ic|systemctl hibernate}} でサスペンドとハイバネートを行うことができ、{{ic|/etc/systemd/logind.conf}} で acpi イベントを処理することができるので、[[pm-utils]] と [[acpid]] を削除するということに興味を引かれるかもしれません。systemd が行えないことがたったひとつだけ存在します (systemd-204 現在): システムが AC 電源またはバッテリーで動作しているのかで別れる電源管理です。このギャップをなくすには、AC アダプタが抜き差しされたときにスクリプトを実行する [[udev]] ルールを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/powersave.rules|2=&amp;lt;nowiki&amp;gt;&lt;br /&gt;
SUBSYSTEM==&amp;quot;power_supply&amp;quot;, ATTR{online}==&amp;quot;0&amp;quot;, RUN+=&amp;quot;/path/to/your/script true&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;power_supply&amp;quot;, ATTR{online}==&amp;quot;1&amp;quot;, RUN+=&amp;quot;/path/to/your/script false&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;pm-powersave&#039;&#039; が使用しているのと同じスクリプトを使うことができます。実行可能属性を付与して別の所に保存する必要があります (例えば {{ic|/usr/local/bin/}})。}}&lt;br /&gt;
&lt;br /&gt;
powersave スクリプトのサンプル: [[powerdown]], [https://github.com/Unia/powersave powersave]。&lt;br /&gt;
&lt;br /&gt;
上記の udev ルールはちゃんと動作するはずですが、電源設定がサスペンドやハイバネートをした後に更新されない場合、以下の内容で {{ic|/usr/lib/systemd/system-sleep/}} にスクリプトを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/system-sleep/00powersave|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
case $1 in&lt;br /&gt;
    pre) /path/to/your/script false ;;&lt;br /&gt;
    post)       &lt;br /&gt;
	if cat /sys/class/power_supply/AC0/online | grep 0 &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
	then&lt;br /&gt;
    		/path/to/your/script true	&lt;br /&gt;
	else&lt;br /&gt;
    		/path/to/your/script false&lt;br /&gt;
	fi&lt;br /&gt;
    ;;&lt;br /&gt;
esac&lt;br /&gt;
exit 0&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
忘れずに実行可能属性を付与してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|あなたのノートパソコンでは AC0 が異なっている可能性があります。その場合は変更してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 電源設定の表示 ===&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトは USB や PCI デバイスの電源設定などのプロパティを表示します。全ての設定を見るには root 権限が必要なので注意して下さい。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
for i in $(find /sys/devices -name &amp;quot;bMaxPower&amp;quot;)&lt;br /&gt;
do&lt;br /&gt;
	busdir=${i%/*}&lt;br /&gt;
	busnum=$(&amp;lt;$busdir/busnum)&lt;br /&gt;
	devnum=$(&amp;lt;$busdir/devnum)&lt;br /&gt;
	title=$(lsusb -s $busnum:$devnum)&lt;br /&gt;
&lt;br /&gt;
	printf &amp;quot;\n\n+++ %s\n  -%s\n&amp;quot; &amp;quot;$title&amp;quot; &amp;quot;$busdir&amp;quot;&lt;br /&gt;
&lt;br /&gt;
	for ff in $(find $busdir/power -type f ! -empty 2&amp;gt;/dev/null)&lt;br /&gt;
	do&lt;br /&gt;
		v=$(cat $ff 2&amp;gt;/dev/null|tr -d &amp;quot;\n&amp;quot;)&lt;br /&gt;
		[[ ${#v} -gt 0 ]] &amp;amp;&amp;amp; echo -e &amp;quot; ${ff##*/}=$v&amp;quot;;&lt;br /&gt;
		v=;&lt;br /&gt;
	done | sort -g;&lt;br /&gt;
done;&lt;br /&gt;
&lt;br /&gt;
printf &amp;quot;\n\n\n+++ %s\n&amp;quot; &amp;quot;Kernel Modules&amp;quot;&lt;br /&gt;
for mod in $(lspci -k | sed -n &#039;/in use:/s,^.*: ,,p&#039; | sort -u)&lt;br /&gt;
do&lt;br /&gt;
	echo &amp;quot;+ $mod&amp;quot;;&lt;br /&gt;
	systool -v -m $mod 2&amp;gt; /dev/null | sed -n &amp;quot;/Parameters:/,/^$/p&amp;quot;;&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== フタのスイッチのアクションの遅延 ===&lt;br /&gt;
&lt;br /&gt;
短期間に連続してフタのスイッチが反応した場合、&#039;&#039;logind&#039;&#039; はドッキングを検出するために90秒までサスペンドを遅延します [https://lists.freedesktop.org/archives/systemd-devel/2015-January/027131.html]。この遅延時間は systemd v220 から設定ができます [https://cgit.freedesktop.org/systemd/systemd/commit/?id=9d10cbee89ca7f82d29b9cb27bef11e23e3803ba]:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/logind.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
HoldoffTimeoutSec=30s&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== ノートパソコンをサスペンドする Fn キーが動作しない ===&lt;br /&gt;
&lt;br /&gt;
{{ic|logind.conf}} をどう設定してもスリープボタンが動作しない場合 (ボタンを押しても syslog にメッセージすら表示されない)、おそらく logind がキーボードデバイスを監視していません [https://lists.freedesktop.org/archives/systemd-devel/2015-February/028325.html]。次のコマンドを実行してください:&lt;br /&gt;
 # journalctl | grep &amp;quot;Watching system buttons&amp;quot;&lt;br /&gt;
すると以下のような表示がされます:&lt;br /&gt;
 May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event2 (Power Button)&lt;br /&gt;
 May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event3 (Sleep Button)&lt;br /&gt;
 May 25 21:28:19 vmarch.lan systemd-logind[210]: Watching system buttons on /dev/input/event4 (Video Bus)&lt;br /&gt;
キーボードデバイスがないことに気づいて下さい。したがってキーボードデバイスの ATTRS{name} を取得します [http://systemd-devel.freedesktop.narkive.com/Rbi3rjNN/patch-1-2-logind-add-support-for-tps65217-power-button]:&lt;br /&gt;
 # udevadm info -a /dev/input/by-path/*-kbd&lt;br /&gt;
 ...&lt;br /&gt;
 KERNEL==&amp;quot;event0&amp;quot;&lt;br /&gt;
 ...&lt;br /&gt;
 ATTRS{name}==&amp;quot;AT Translated Set 2 keyboard&amp;quot;&lt;br /&gt;
カスタム udev ルールを作成して &amp;quot;power-switch&amp;quot; タグを追加:&lt;br /&gt;
{{hc|/etc/udev/rules.d/70-power-switch-my.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ACTION==&amp;quot;remove&amp;quot;, GOTO=&amp;quot;power_switch_my_end&amp;quot;&lt;br /&gt;
SUBSYSTEM==&amp;quot;input&amp;quot;, KERNEL==&amp;quot;event*&amp;quot;, ATTRS{name}==&amp;quot;AT Translated Set 2 keyboard&amp;quot;, TAG+=&amp;quot;power-switch&amp;quot;&lt;br /&gt;
LABEL=&amp;quot;power_switch_my_end&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
サービスを再起動してルールをリロードしてください:&lt;br /&gt;
 # systemctl restart systemd-udevd&lt;br /&gt;
 # udevadm trigger&lt;br /&gt;
 # systemctl restart systemd-logind&lt;br /&gt;
これで syslog に {{ic|Watching system buttons on /dev/input/event0}} と表示されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.thinkwiki.org/wiki/How_to_reduce_power_consumption ThinkWiki:How to reduce power consumption]&lt;br /&gt;
* [http://ivanvojtko.blogspot.sk/2016/04/how-to-get-longer-battery-life-on-linux.html How to get longer battery life on Linux]&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=26212</id>
		<title>利用者:Linuxmetel</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=26212"/>
		<updated>2022-07-03T08:16:52Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Twitter: https://twitter.com/linuxmetel &amp;lt;br&amp;gt;&lt;br /&gt;
GitHub: https://github.com/linuxmetel&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=26211</id>
		<title>利用者:Linuxmetel</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=26211"/>
		<updated>2022-07-03T08:16:35Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Twitter: https://twitter.com/linuxmetel&lt;br /&gt;
GitHub: https://github.com/linuxmetel&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Mkinitcpio&amp;diff=26152</id>
		<title>Mkinitcpio</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Mkinitcpio&amp;diff=26152"/>
		<updated>2022-06-29T14:36:19Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: 自動検出ではなく autodetect の方が適切と思われる部分の修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:initramfs]]&lt;br /&gt;
[[Category:カーネル]]&lt;br /&gt;
[[Category:Arch プロジェクト]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[da:Mkinitcpio]]&lt;br /&gt;
[[de:Mkinitcpio]]&lt;br /&gt;
[[en:Mkinitcpio]]&lt;br /&gt;
[[es:Mkinitcpio]]&lt;br /&gt;
[[fr:mkinitcpio]]&lt;br /&gt;
[[id:Mkinitcpio]]&lt;br /&gt;
[[it:Mkinitcpio]]&lt;br /&gt;
[[ru:Mkinitcpio]]&lt;br /&gt;
[[zh-hans:Mkinitcpio]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Booster}}&lt;br /&gt;
{{Related|ブートデバッグ}}&lt;br /&gt;
{{Related|dracut}}&lt;br /&gt;
{{Related|カーネルモジュール}}&lt;br /&gt;
{{Related|initramfs の最小化}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://projects.archlinux.org/mkinitcpio.git/ mkinitcpio] は [[Wikipedia:Initial ramdisk|initial ramdisk]] 環境を作成するために使われる Bash スクリプトです。{{man|8|mkinitcpio}} より:&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;initial ramdisk は非常に小さい環境（初期ユーザー空間）であり、様々なカーネルモジュールをロードして [[init]] にコントロールを移す前に必要なことをセットアップします。これにより、root ファイルシステムを暗号化したりソフトウェア RAID アレイに root を載せることが可能になります。mkinitcpio はカスタムフックによって簡単に拡張することができ、自動時の自動検知など様々な機能を持っています。&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
伝統的には、[[Arch ブートプロセス|ブートプロセス]]の初めにハードウェアを検知したりタスクの初期化を行うのはカーネルで、それから root ファイルシステムがマウントされ {{ic|init}} にコントロールが移されます。しかしながら、先端技術が生まれるにつれ、こういった作業は複雑になりつつあります。&lt;br /&gt;
&lt;br /&gt;
今日、root ファイルシステムが載るハードウェアは SCSI から SATA、USB ドライブまで様々にわたり、それらハードウェアはそれぞれのマニュファクチャーによって作られたいろんなドライブコントローラによってコントロールされています。しかも、root ファイルシステムは暗号化されたり圧縮されたりする可能性もあります; ソフトウェア RAID アレイや論理ボリュームグループに含まれるかもしれません。複雑になったものをシンプルに扱う方法はユーザースペースへ管理を譲渡することです。&lt;br /&gt;
参照: [https://web.archive.org/web/20150430223035/http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ /dev/brain0 &amp;amp;raquo; Blog Archive &amp;amp;raquo; Early Userspace in Arch Linux]。&lt;br /&gt;
&lt;br /&gt;
mkinitcpio は Arch Linux デベロッパーとコミュニティの貢献によって開発されています。[https://projects.archlinux.org/mkinitcpio.git/ Git リポジトリ]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mkinitcpio}} パッケージは[[公式リポジトリ]]で利用可能で {{Pkg|linux}} パッケージの依存パッケージになっています。&lt;br /&gt;
&lt;br /&gt;
上級者は {{AUR|mkinitcpio-git}} パッケージで mkinitcpio の最新開発バージョンをインストールできます。&lt;br /&gt;
&lt;br /&gt;
{{Note|Git から mkinitcpio を使う時は [https://lists.archlinux.org/listinfo/arch-projects arch-projects メーリングリスト]を購読することが&#039;&#039;強く&#039;&#039;推奨されます！}}&lt;br /&gt;
&lt;br /&gt;
== イメージ作成とアクティベーション ==&lt;br /&gt;
&lt;br /&gt;
=== 自動生成 ===&lt;br /&gt;
&lt;br /&gt;
カーネルがインストールまたはアップグレードされるたびに、[https://wiki.archlinux.jp/index.php/Pacman#.E3.83.95.E3.83.83.E3.82.AF pacman フック] は {{ic|/etc/mkinitcpio.d/}} に保存されている &#039;&#039;.preset&#039;&#039; ファイルを自動的に生成します。たとえば、公式の安定した {{Pkg|linux}} カーネルパッケージの場合は {{ic|linux.preset}} です。プリセットは、さまざまなパラメーターや出力ファイルの場所を手動で指定するのではなく、初期ramdiskイメージを作成するために必要な情報のリストです。&lt;br /&gt;
デフォルトでは、2つのイメージを作成するための手順が含まれています。&lt;br /&gt;
&lt;br /&gt;
# mkinitcpio [[#設定]] で指定されたディレクティブに従って作成された &#039;&#039;デフォルト&#039;&#039; の RAM ディスクイメージ、および&lt;br /&gt;
# &#039;&#039;フォールバック&#039;&#039; RAM ディスクイメージ。作成時に &#039;&#039;autodetect&#039;&#039; フックがスキップされることを除いて上記と同じであるため、ほとんどのシステムをサポートするすべてのモジュールが含まれます。&lt;br /&gt;
&lt;br /&gt;
プリセットを作成した後、pacman フックは、プリセットで提供された情報を使用して2つのイメージを生成する &#039;&#039;mkinitcpio&#039;&#039; スクリプトを呼び出します。&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;&#039;.preset&#039;&#039; ファイルは、カーネルの更新後に initramfs を自動的に再生成するために使用されます。編集するときは注意してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 手動生成 ===&lt;br /&gt;
&lt;br /&gt;
スクリプトを手動で実行するには、手順について {{man|8|mkinitcpio}} のマニュアルページを参照してください。特に、カーネルパッケージによって提供されるプリセットを(再)生成するには、 {{ic|-p}}/{{ic|--preset}} オプションを使用してから、使用するプリセットを使用します。たとえば、 {{Pkg|linux}} パッケージの場合、次のコマンドを使用します。&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
既存のすべてのプリセットを(再)生成するには、 {{ic|-P}}/{{ic|--allpresets}} スイッチを使用します。これは通常、グローバル [[#設定]] の変更後にすべての initramfs イメージを再生成するために使用されます。&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio -P&lt;br /&gt;
&lt;br /&gt;
ユーザーは、さまざまな構成で initramfs イメージをいくつでも作成できます。目的のイメージは、それぞれの [[ブートローダー]] 設定ファイルで指定する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== カスタマイズされた生成 ===&lt;br /&gt;
&lt;br /&gt;
ユーザーは、代替の設定ファイルを使用してイメージを生成できます。たとえば、次の例では、 {{ic|/etc/mkinitcpio-custom.conf}}の指示に従って初期ramdiskイメージを生成し、 {{ic|/boot/initramfs-custom.img}} として保存します。&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio --config /etc/mkinitcpio-custom.conf --generate /boot/initramfs-custom.img&lt;br /&gt;
&lt;br /&gt;
現在実行中のカーネル以外のカーネルのイメージを生成する場合は、カーネルリリースバージョンをコマンドラインに追加します。インストールされているカーネルリリースは {{ic|/usr/lib/modules/}} にあり、構文は各カーネルのコマンド{{ic|uname-r}} の出力と一致しています。&lt;br /&gt;
&lt;br /&gt;
 # mkinitcpio --generate /boot/initramfs-custom2.img --kernel 5.7.12-arch1-1&lt;br /&gt;
&lt;br /&gt;
=== Unified カーネルイメージ ===&lt;br /&gt;
&lt;br /&gt;
バージョン31 以降の &#039;&#039;mkinitpcio&#039;&#039; では [[Unified カーネルイメージ]] を作成することもできます。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; の基本の設定ファイルは {{ic|/etc/mkinitcpio.conf}} です。さらに、カーネルパッケージによって提供されるプリセット定義が {{ic|/etc/mkinitcpio.d}} ディレクトリにあります (例: {{ic|/etc/mkinitcpio.d/linux.preset}})。&lt;br /&gt;
&lt;br /&gt;
{{Warning|デフォルトでは &#039;&#039;lvm2&#039;&#039;, &#039;&#039;mdadm&#039;&#039;, &#039;&#039;encrypt&#039;&#039; は有効化されていません。これらのフックが必要なときは注意してこのセクションを読んで下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|ノード名が同一でカーネルモジュールが異なる複数のディスクコントローラを使っている場合 (例: 2つの SCSI/SATA または2つの IDE コントローラ)、{{ic|/etc/mkinitcpio.conf}} で指定するモジュールの順番が正しいことを確認して下さい。再起動で root デバイスの場所が変わってしまって、カーネルパニックが発生する可能性があります。また、[[永続的なブロックデバイスの命名]]を使えば正しいデバイスを確実にマウントすることができます。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|PS/2 キーボードを使っている場合: init でキーボード入力を使えるようにするには、{{ic|HOOKS}} に &#039;&#039;keyboard&#039;&#039; フックを追加してください。マザーボードによっては (特に旧世代のマザーボード)、i8042 コントローラが自動で検出されないことがあります。稀ですが、キーボードがないということもありえます。事前にこの状態を検出することができます。PS/2 端子があって {{ic|i8042: PNP: No PS/2 controller found. Probing ports directly}} メッセージが表示される場合、&#039;&#039;atkbd&#039;&#039; を {{ic|MODULES}} に追加してください。}}&lt;br /&gt;
&lt;br /&gt;
ユーザーは設定ファイルの中にある6つの変数を修正することが可能です:&lt;br /&gt;
&lt;br /&gt;
; {{ic|MODULES}}: boot フックが実行される前にロードするべきカーネルモジュール。 &lt;br /&gt;
; {{ic|BINARIES}}: initramfs イメージに含める追加のバイナリ。&lt;br /&gt;
; {{ic|FILES}}: initramfs イメージに含める追加のファイル。&lt;br /&gt;
; {{ic|HOOKS}}: フックは initial ramdisk で実行するスクリプトです。&lt;br /&gt;
; {{ic|COMPRESSION}}: initramfs イメージを圧縮するのに使われます。&lt;br /&gt;
; {{ic|COMPRESSION_OPTIONS}}: {{ic|COMPRESSION}} プログラムに渡すコマンドラインオプション。この設定の使用はあまり推奨されません。mkinitcpio は圧縮プログラムに特殊な細工を施すので (例: xz には {{ic|1=--check=crc32}} を指定します)、誤って利用するとシステムが起動できなくなる可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== MODULES ===&lt;br /&gt;
&lt;br /&gt;
MODULES 行では何か他のことが行われる前にロードするモジュールを指定します。&lt;br /&gt;
&lt;br /&gt;
モジュールの後ろに {{ic|?}} を付けると、モジュールが見つからなかったときでもエラーを投げません。これは、フックや設定ファイルにリストアップされたモジュールを含んでコンパイルするカスタムカーネルで有益かもしれません。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* &#039;&#039;reiser4&#039;&#039; を使う場合、モジュールのリストに必ず追加するようにしてください。&lt;br /&gt;
* mkinitcpio の実行時ライブでないブートプロセスの間にファイルシステムが必要な場合 (例えば LUKS の暗号化キーファイルが &#039;&#039;ext2&#039;&#039; ファイルシステム上にあって mkinitcpio の実行時には &#039;&#039;ext2&#039;&#039; ファイルシステムはマウントしない場合)、そのファイルシステムのモジュールも MODULES リストに追加する必要があります。詳しくは [[Dm-crypt/システム設定#cryptkey]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
=== BINARIES と FILES ===&lt;br /&gt;
&lt;br /&gt;
ユーザーはオプションを使ってイメージにファイルを追加することができます。{{ic|BINARIES}} と {{ic|FILES}} はフックが実行される前に追加され、フックによって使用されるファイルを上書きすることがあります。{{ic|BINARIES}} は標準の {{ic|PATH}} に自動で配置され、依存関係がパースされます。つまり必要なライブラリも全て追加されます。{{ic|FILES}} は&#039;&#039;そのままの状態で&#039;&#039; (as-is) 追加されます。例:&lt;br /&gt;
&lt;br /&gt;
 FILES=(/etc/modprobe.d/modprobe.conf)&lt;br /&gt;
&lt;br /&gt;
 BINARIES=(kexec)&lt;br /&gt;
&lt;br /&gt;
{{ic|BINARIES}} と {{ic|FILES}} のどちらでも、スペースで区切ることで複数のエントリを追加することができます。&lt;br /&gt;
&lt;br /&gt;
=== HOOKS ===&lt;br /&gt;
&lt;br /&gt;
{{ic|HOOKS}} 設定は設定ファイルの中で一番重要な設定です。フックはイメージに追加されるものを記述する小さなスクリプトです。フックによっては、デーモンを起動したりスタックしたブロックデバイスを集めたりするためのランタイムコンポーネントを含んでいるものもあります。フックは名前によって参照され、設定ファイルの {{ic|HOOKS}} にある順番通りに実行されます。&lt;br /&gt;
&lt;br /&gt;
ほとんどのシンプルな、シングルディスクセットアップではデフォルトの {{ic|HOOKS}} 設定で十分なはずです。[[LVM]], [[mdadm]], [[dm-crypt]] などスタックした root デバイスやマルチブロックデバイスを使う時は、関連する wiki ページを見て必要な設定を調べて下さい。&lt;br /&gt;
&lt;br /&gt;
==== ビルドフック ====&lt;br /&gt;
&lt;br /&gt;
ビルドフックは {{ic|/usr/lib/initcpio/install/}} にあります。カスタムビルドフックは {{ic|/etc/initcpio/install/}} に配置します。これらのファイルは mkinitcpio の実行時に bash シェルによって実行されます。ビルドフックには２つの関数が含まれています: {{ic|build}} と {{ic|help}}。{{ic|build}} 関数にはイメージに追加するモジュール・ファイル・バイナリを記述します。これらのアイテムの追加を容易にする {{man|8|mkinitcpio}} による API が用意されています。{{ic|help}} 関数はフックの役割を出力します。&lt;br /&gt;
&lt;br /&gt;
すべてのフックを一覧するには:&lt;br /&gt;
&lt;br /&gt;
 $ mkinitcpio -L&lt;br /&gt;
&lt;br /&gt;
特定のフックのヘルプを出力するには mkinitcpio の {{ic|-H}}/{{ic|--hookhelp}} オプションを使って下さい、例えば:&lt;br /&gt;
&lt;br /&gt;
 $ mkinitcpio -H udev&lt;br /&gt;
&lt;br /&gt;
==== ランタイムフック ====&lt;br /&gt;
&lt;br /&gt;
ランタイムフックは {{ic|/usr/lib/initcpio/hooks/}} にあります。カスタムランタイムフックは {{ic|/etc/initcpio/hooks/}} に配置します。全てのランタイムフックには同じ名前のビルドフックが存在している必要があり、そのビルドフックは {{ic|add_runscript}} をコールしてランタイムフックをイメージに追加します。これらのファイルは初期ユーザ空間で busybox の ash シェルによって実行されます。cleanup フックを除いて全てのフックは {{ic|HOOKS}} 設定の順番で実行されます。ランタイムフックには複数の関数を含めることができます:&lt;br /&gt;
&lt;br /&gt;
{{ic|run_earlyhook}}: API ファイルシステムがマウントされカーネルコマンドラインがパースされたときに、この名前の関数が実行されます。一般的に udev など初期ユーザ空間が始まったときに必要になる追加のデーモンはこの関数に置きます。&lt;br /&gt;
&lt;br /&gt;
{{ic|run_hook}}: 初期のフックの後すぐに、この名前の関数が実行されます。一番普通のフックポイントで、スタックブロックデバイスのアセンブリなどのオペレーションはここで行なって下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|run_latehook}}: root デバイスがマウントされた後、この名前の関数が実行されます。root デバイスの後のセットアップや {{ic|/usr}} など他のファイルシステムのマウントなどに控えめに使われます。&lt;br /&gt;
&lt;br /&gt;
{{ic|run_cleanuphook}}: 出来る限り最後に、この名前の関数が実行されます。設定ファイルの {{ic|HOOKS}} の順番とは逆に実行されます。これらのフックは初期のフックによって起動したデーモンのシャットダウンなど、最後のクリーンアップに使われます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ランタイムフックは busyboxinit でのみ使用されます。 &#039;&#039;&#039;systemd&#039;&#039;&#039; フックは systemd ベースの init をトリガーします。これはランタイムフックを実行せず、代わりに systemd ユニットを使用します。}}&lt;br /&gt;
&lt;br /&gt;
==== 通常のフック ====&lt;br /&gt;
&lt;br /&gt;
通常のフックとイメージ生成への影響と関連するランタイムを示した表です。パッケージにカスタムフックを入れることができるので、この表は完全ではないことに注意してください。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ &#039;&#039;&#039;現行のフック&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! busybox init !! systemd init !! [[#ビルドフック|ビルドフック]] !! [[#ランタイムフック|ランタイムフック]] (busybox init のみ)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;base&#039;&#039;&#039; || 全ての initial directory をセットアップし基本のユーティリティとライブラリをインストールする。何をしようとしているのかわからない限りはこのフックを一番最初のフックにしておいてください。&#039;&#039;&#039;systemd&#039;&#039;&#039; フックを使用している場合、busybox のリカバリシェルが提供されます。 {{Note|initramfs の root アカウントが [https://github.com/archlinux/svntogit-packages/commit/776743d220cbb56e9abca2cc8bcef3a0ab7c8d0a locked] されてるため、リカバリシェルは使用できません。}}&lt;br /&gt;
| --&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;udev&#039;&#039;&#039; ||rowspan=&amp;quot;3&amp;quot;  style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;systemd&#039;&#039;&#039; || イメージに udevd, udevadm, そして udev ルールの小さなサブセットを追加します。 || dev デーモンを起動してカーネルからの uevent を処理します。デバイスノードを作成します。ブートプロセスの単純化として、必要なモジュールを明示的に指定する必要をなくすため、udev フックの使用が推奨されています。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;usr&#039;&#039;&#039; || {{ic|/usr}} の分割パーティションのサポートを追加。 || real root がマウントされた後に {{ic|/usr}} パーティションをマウントします。&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;resume&#039;&#039;&#039; || -- || &amp;quot;ハイバネート&amp;quot; (suspend to disk) 状態からの復帰を試みます。詳しい設定方法は[[ハイバネート]]を見てください。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;btrfs&#039;&#039;&#039; || {{Grey|--}} || root で [[Btrfs]] を有効にしてサブボリュームを使用するために必要なモジュールを設定します。シングルデバイスで Btrfs を使うだけならこのフックは不要です。 || udev フックが存在しないときに {{ic|btrfs device scan}} を実行してマルチデバイスの Btrfs root ファイルシステムを構築します。このフックを使うには {{Pkg|btrfs-progs}} パッケージが必要です。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;autodetect&#039;&#039;&#039; || sysfs のスキャンによってモジュールのホワイトリストを作成して initramfs を小さくします。含まれているモジュールが正しく、欠けているものがないか確認してください。自動検知の利点を活かすためにこのフックは他の subsystem フックより前に実行してください。&#039;autodetect&#039; より前に置かれたフックは完全にインストールされます。 || --&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;modconf&#039;&#039;&#039; || {{ic|/etc/modprobe.d}} と {{ic|/usr/lib/modprobe.d/}} から modprobe 設定ファイルをロードします。 || --&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;block&#039;&#039;&#039; || 全てのブロックデバイスモジュールを追加します。昔は &#039;&#039;fw&#039;&#039;, &#039;&#039;mmc&#039;&#039;, &#039;&#039;pata&#039;&#039;, &#039;&#039;sata&#039;&#039;, &#039;&#039;scsi&#039;&#039; , &#039;&#039;usb&#039;&#039;, &#039;&#039;virtio&#039;&#039; フックに分かれていました。 || --&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;net&#039;&#039;&#039; || {{R|&#039;&#039;未実装&#039;&#039;}} || ネットワークデバイスに必要なモジュールを追加します。PCMCIA net デバイスには &#039;&#039;pcmcia&#039;&#039; フックも追加してください。 || NFS の root ファイルシステムの管理を提供します。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;dmraid&#039;&#039;&#039; || style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;?&#039;&#039; || fakeRAID root デバイスのサポートを提供します。これを使うには {{Pkg|dmraid}} をインストールする必要があります。コントローラがサポートしている場合、fakeRAID では &#039;&#039;mdadm_udev&#039;&#039; フックと一緒に {{ic|mdadm}} を使うことが推奨されます。 || {{ic|dmraid}} を使用して fakeRAID ブロックデバイスを構築します。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;mdadm&#039;&#039;&#039; || {{Grey|--}} || {{ic|/etc/mdadm.conf}} からの RAID アレイの構築や、起動中の自動検出のサポートを提供します。これを使うには {{Pkg|mdadm}} のインストールが必須です。このフックよりも &#039;&#039;mdadm_udev&#039;&#039; フックが推奨されています。 || {{ic|mdassemble}} を使ってソフトウェア RAID ブロックデバイスを構築します。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;mdadm_udev&#039;&#039;&#039; || udev による RAID アレイの構築のサポートを提供します。これを使うには {{Pkg|mdadm}} のインストールが必要です。[[FakeRAID]] アレイでこのフックを使う場合、binaries セクションに {{ic|mdmon}} を含めて &#039;&#039;shutdown&#039;&#039; フックを追加することが推奨されます。再起動時に不必要な RAID を再ビルドしないためです。 || {{ic|udev}} と {{ic|mdadm}} を使ってソフトウェア RAID ブロックデバイスを動的に構築します。mdadm アセンブリの推奨方法です (上記の &#039;&#039;mdadm&#039;&#039; フックを使うよりも)。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;keyboard&#039;&#039;&#039; || キーボードデバイスに必要なモジュールを追加します。あなたが USB キーボードを使っていて、それを初期ユーザ空間で使う必要があるとき (暗号化のパスフレーズを入力したりインタラクティブシェルを使う場合) はこのフックを使って下さい。副作用としてキーボード以外の入力デバイス用のモジュールが追加されることがありますが、困ることはないはずです。&lt;br /&gt;
&lt;br /&gt;
{{Tip|異なるハードウェア構成で起動されるシステム(たとえば、外部キーボードと内部キーボードを備えたラップトップまたは [[Wikipedia:Headless computer|headless systems]]) の場合、このフックを &#039;&#039;&#039;autodetect&#039;&#039;&#039; の前に配置すると便利です。 常にすべてのキーボードドライバを含めるため。 それ以外の場合、外部キーボードは、イメージの作成時に接続されている場合にのみ、初期のユーザースペースで機能します。}}&lt;br /&gt;
|| --&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;keymap&#039;&#039;&#039; ||rowspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;sd-vconsole&#039;&#039;&#039; || {{ic|/etc/vconsole.conf}} から initramfs に指定したキーマップを追加します。システム暗号化 (特に[[Dm-crypt/システム全体の暗号化|完全なシステム暗号化]]) を使用する場合、{{ic|1=encrypt}} フックよりも前に追加するようにしてください。 || 初期ユーザ空間で {{ic|/etc/vconsole.conf}} から指定されたキーマップをロードします。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;consolefont&#039;&#039;&#039; || {{ic|/etc/vconsole.conf}} から initramfs に指定したコンソールフォントを追加します。 || 初期ユーザ空間で {{ic|/etc/vconsole.conf}} から指定されたコンソールフォントをロードします。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;encrypt&#039;&#039;&#039; || style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;sd-encrypt&#039;&#039;&#039; || {{ic|dm_crypt}} カーネルモジュールと {{ic|cryptsetup}} ツールをイメージに追加します。これを使うには {{Pkg|cryptsetup}} をインストールする必要があります。 || 暗号化された root パーティションを検知してアンロックします。設定については [[#ランタイムのカスタマイズ]] を見て下さい。&#039;&#039;&#039;sd-encrypt&#039;&#039;&#039; については [[Dm-crypt/システム設定#sd-encrypt フックを使う]]を見てください。&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;lvm2&#039;&#039;&#039; || style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;sd-lvm2&#039;&#039;&#039; || device mapper カーネルモジュールと {{ic|lvm}} ツールをイメージに追加します。これを使うには {{Pkg|lvm2}} をインストールする必要があります。 || 全ての LVM2 ボリュームグループを有効にします。root ファイルシステムが [[LVM]] 上にある場合は必須です。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;fsck&#039;&#039;&#039; || fsck バイナリとファイルシステム特有のヘルパーを追加します。&#039;&#039;autodetect&#039;&#039; フックの後ろに追加した場合、root ファイルシステムのヘルパーだけが追加されます。このフックの使用は強く推奨されており、{{ic|/usr}} パーティションを分割する場合は必須です。 || root デバイス (と分割している場合は {{ic|/usr}}) に対してマウントする前に fsck を実行します。ブートローダーのデフォルト設定で問題ありませんが、疑問がある場合は [https://bbs.archlinux.org/viewtopic.php?pid=1307895#p1307895 こちらの設定] を読んで下さい。&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| &#039;&#039;&#039;filesystems&#039;&#039;&#039; || イメージに必要なファイルシステムモジュールを含めます。ファイルシステムモジュールを MODULES で指定していない限りこのフックが必要になります。 || --&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== 廃止されたフック ====&lt;br /&gt;
{{Pkg|mkinitcpio}} 0.13.0 では、{{ic|usbinput}} フックは廃止され {{ic|keyboard}} フックを使うようになりました。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mkinitcpio}} 0.12.0 では、以下のフックが廃止されました。以下のフックのどれかを使っているときは、{{ic|block}} フックに置き換える必要があります。&lt;br /&gt;
&lt;br /&gt;
*{{ic|fw}}&lt;br /&gt;
*{{ic|mmc}}&lt;br /&gt;
*{{ic|pata}}&lt;br /&gt;
*{{ic|sata}}&lt;br /&gt;
*{{ic|scsi}}&lt;br /&gt;
*{{ic|usb}}&lt;br /&gt;
*{{ic|virtio}}&lt;br /&gt;
&lt;br /&gt;
詳しくは、Git コミット [https://projects.archlinux.org/mkinitcpio.git/commit/?id=97368c0e78f3a4fe4d62f7aedde88d4be13bfdba 97368c0e78] や [https://mailman.archlinux.org/pipermail/arch-projects/2012-November/003426.html arch-projects メーリングリスト]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== COMPRESSION ===&lt;br /&gt;
&lt;br /&gt;
カーネルは、 initramfs の圧縮にいくつかの形式をサポートしています: {{pkg|gzip}}、 {{pkg|bzip2}}、 lzma、 {{pkg|xz}}、 {{pkg|lzo}}、 {{pkg|lz4}} および {{pkg|zstd}} mkinitcpio はデフォルトで zstd 圧縮イメージを使用します。 zstd 圧縮はマルチスレッドモードで実行されます (検出されたコアと同じ数のスレッドを使用します。 {{ic|-T 0}} オプションを使用)&lt;br /&gt;
&lt;br /&gt;
提供されている {{ic|mkinitcpio.conf}} には、さまざまな {{ic|COMPRESSION}} オプションがコメントアウトされています。別の圧縮方法に切り替える場合は、コメントを解除し、対応する圧縮ユーティリティがインストールされていることを確認します。何も指定しない場合は、zstdのデフォルトのメソッドが使用されます。非圧縮イメージを作成する場合は、設定ファイルで {{ic|1=COMPRESSION=&#039;&#039;&#039;cat&#039;&#039;&#039;}} を指定するか、コマンドラインで {{ic|-z cat}} を使用します。&lt;br /&gt;
&lt;br /&gt;
{{Tip|高圧縮モード (-9) のイメージの圧縮比は通常の約2.5で、解凍速度が非常に速いため、 &#039;&#039;&#039;lz4&#039;&#039;&#039; はより遅いシングルスレッド圧縮を犠牲にして最も速い解凍速度を実現します。わずかに優れた圧縮の、lzo も解凍が速いです。zstd は、マルチスレッド圧縮と、そのオプションを使用した幅広い圧縮レベルを備えた汎用的なソリューションを提供します。 {{man|1|zstd|Operation modifiers}} を参照してください。 xz は、解凍速度がはるかに遅くなりますが、高圧縮プリセット (-9) で約5の縮小係数で最小サイズを実現します。}}&lt;br /&gt;
&lt;br /&gt;
=== COMPRESSION_OPTIONS ===&lt;br /&gt;
&lt;br /&gt;
{{ic|COMPRESSION}} で指定したプログラムに渡す追加のフラグを記述します、例:&lt;br /&gt;
&lt;br /&gt;
 COMPRESSION_OPTIONS=(-9)&lt;br /&gt;
&lt;br /&gt;
mkinitcpio はイメージを作成するときサポートされている圧縮方法に必要なフラグを渡すので、通常はこのオプションは必要ありません。なお、カーネルが作成された圧縮ファイルを解凍できないとき、このオプションを使っていないとシステムをブートできなくなる可能性があります。&lt;br /&gt;
&lt;br /&gt;
== ランタイムのカスタマイズ ==&lt;br /&gt;
&lt;br /&gt;
ランタイム設定オプションはカーネルコマンドラインを通して {{ic|init}} や特定のフックに渡すことができます。カーネルコマンドラインパラメータはブートローダによって与えられることがほとんどです。下で書かれているオプションをカーネルコマンドラインに追加することでデフォルトの挙動を変えることができます。詳しくは[[カーネルパラメータ]]や [[Arch ブートプロセス]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== init ===&lt;br /&gt;
&lt;br /&gt;
; {{ic|root}}: カーネルコマンドラインで指定する一番重要なパラメータであり、どのデバイスを root デバイスとしてマウントするかを決めます。mkinitcpio は柔軟に様々な形式を使うことができるようになっています、例:&lt;br /&gt;
 root=/dev/sda1                                                # /dev node&lt;br /&gt;
 root=LABEL=CorsairF80                                         # label&lt;br /&gt;
 root=UUID=ea1c4959-406c-45d0-a144-912f4e86b207                # UUID&lt;br /&gt;
 root=PARTUUID=14420948-2cea-4de7-b042-40f67c618660            # GPT partition UUID&lt;br /&gt;
&lt;br /&gt;
{{Note|以下のブートパラメーターは initramfs 環境における {{ic|init}} のデフォルトの挙動を変更します。詳しくは {{ic|/usr/lib/initcpio/init}} を参照。{{ic|systemd}} フックが使われている場合 {{ic|base}} フックの {{ic|init}} は置き換わるため機能しません。}}&lt;br /&gt;
&lt;br /&gt;
; {{ic|break}}: {{ic|&amp;lt;nowiki&amp;gt;break&amp;lt;/nowiki&amp;gt;}} や {{ic|&amp;lt;nowiki&amp;gt;break=premount&amp;lt;/nowiki&amp;gt;}} が指定された場合、(フックをロードした後、root ファイルシステムをマウントする前に) {{ic|init}} はブートプロセスを停止してトラブルシューティングに使うことができるインタラクティブシェルを起動します。{{ic|&amp;lt;nowiki&amp;gt;break=postmount&amp;lt;/nowiki&amp;gt;}} と指定することで root がマウントされた後にこのシェルを起動することもできます。シェルを終了すると通常通りに起動が行われます。&lt;br /&gt;
&lt;br /&gt;
; {{ic|disablehooks}}: {{ic|&amp;lt;nowiki&amp;gt;disablehooks=hook1{,hook2,...}&amp;lt;/nowiki&amp;gt;}} を追加すると実行時にフックを無効化します。例: {{bc|1=disablehooks=resume}}&lt;br /&gt;
&lt;br /&gt;
; {{ic|earlymodules}}: {{ic|&amp;lt;nowiki&amp;gt;earlymodules=mod1{,mod2,...}&amp;lt;/nowiki&amp;gt;}} という風に先にロードするモジュールを指定することでモジュールがロードされる順番を変更することができます (例えば、複数のネットワークインターフェイスの順番を適切に確定したいときなどに使います)。&lt;br /&gt;
&lt;br /&gt;
; {{ic|rootdelay&amp;amp;#61;N}}: {{ic|rootdelay}} を追加すると root ファイルシステムをマウントする前に {{ic|N}} 秒間だけ停止します (例えば、初期化に時間がかかる USB ハードドライブから起動するときなどに使います)。&lt;br /&gt;
&lt;br /&gt;
他のパラメータについては[[ブートデバッグ]]や {{man|8|mkinitcpio}} を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== RAID を使う ===&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|mdadm}} は推奨されません。更新時に {{ic|1===&amp;gt; WARNING: Hook &#039;mdadm&#039; is deprecated. Replace it with &#039;mdadm_udev&#039; in your config}} が表示されます。}}&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|/etc/mkinitcpio.conf}} 内の {{ic|HOOKS}} に {{ic|mdadm_udev}} または {{ic|mdadm}} フックを追加し、必要な RAID モジュール全て (例: raid456, ext4) を {{ic|MODULES}} に追加して下さい。&lt;br /&gt;
&lt;br /&gt;
{{ic|mdadm}} フックを使う場合、[[カーネルパラメータ]]で RAID アレイを設定する必要はありません。{{ic|mdadm}} フックは {{ic|/etc/mdadm.conf}} ファイルを使うか、またはブート時の init 段階でアレイを自動で検出します。&lt;br /&gt;
&lt;br /&gt;
{{ic|mdadm_udev}} フックを使うことで udev による構築も可能です。上流ではこの方法が推奨されています。{{ic|/etc/mdadm.conf}} は構築されたデバイスに名前を付けるために読み込まれます。&lt;br /&gt;
&lt;br /&gt;
=== net を使う ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|NFSv4 はまだサポートされていません ({{Bug|28287}})。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;必要なパッケージ:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|net}} は {{Pkg|mkinitcpio-nfs-utils}} パッケージを必要とします。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;カーネルパラメータ:&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
公式の[https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt カーネルドキュメント]に最新の情報が載っています。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ip=&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
このパラメータはカーネルに、デバイスの IP アドレスの設定方法と、IP ルーティングテーブルの設定方法を指定します。コロンで区切った9つの引数を指定できます: {{ic|1=ip=&amp;lt;client-ip&amp;gt;:&amp;lt;server-ip&amp;gt;:&amp;lt;gw-ip&amp;gt;:&amp;lt;netmask&amp;gt;:&amp;lt;hostname&amp;gt;:&amp;lt;device&amp;gt;:&amp;lt;autoconf&amp;gt;:&amp;lt;dns0-ip&amp;gt;:&amp;lt;dns1-ip&amp;gt;}}。&lt;br /&gt;
&lt;br /&gt;
カーネルコマンドラインにこのパラメータが存在しなかった場合、全てのフィールドが空とされて、[https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt カーネルドキュメント]に書かれているデフォルト設定が適用されます。一般的にはカーネルは自動設定を使って全てを設定しようとします。&lt;br /&gt;
&lt;br /&gt;
{{ic|&amp;lt;autoconf&amp;gt;}} パラメータは &#039;ip&#039; パラメータの唯一の値として指定できます (前の全ての &#039;:&#039; 文字を排除)。値が {{ic|1=ip=off}} や {{ic|1=ip=none}} の場合、自動設定は行われません。そうでないなら、自動的に設定されます。最も一般的な使い方は {{ic|1=ip=dhcp}} です。&lt;br /&gt;
&lt;br /&gt;
パラメータの説明は、[https://www.kernel.org/doc/Documentation/filesystems/nfs/nfsroot.txt カーネルドキュメント]を参照してください。&lt;br /&gt;
  &lt;br /&gt;
; 例&lt;br /&gt;
 ip=127.0.0.1:::::lo:none  --&amp;gt; Enable the loopback interface.&lt;br /&gt;
 ip=192.168.1.1:::::eth2:none --&amp;gt; Enable static eth2 interface.&lt;br /&gt;
 ip=:::::eth0:dhcp --&amp;gt; Enable dhcp protocol for eth0 configuration.&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|&amp;lt;device&amp;gt;}} パラメータにはカーネルのデバイス名を使用してください (例: &#039;&#039;eth0&#039;&#039;)、[[ネットワーク設定#デバイス名|udev]] のデバイス名 (例: &#039;&#039;enp2s0&#039;&#039;) では動作しません。}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;BOOTIF=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
複数のネットワークカードを使っているときは、このパラメータに起動するインターフェイスの MAC アドレスを含めることができます。インターフェイスの数字が変わってしまったり、pxelinux の IPAPPEND 2 や IPAPPEND 3 オプションを使うときに便利です。指定しなかった場合、eth0 が使われます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;例:&#039;&#039;&lt;br /&gt;
 BOOTIF=01-A1-B2-C3-D4-E5-F6  # Note the prepended &amp;quot;01-&amp;quot; and capital letters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;nfsroot=&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|nfsroot}} パラメータがコマンドラインで指定されなかった場合、デフォルトで {{ic|/tftpboot/%s}} が使われます。&lt;br /&gt;
&lt;br /&gt;
 nfsroot=[&amp;lt;server-ip&amp;gt;:]&amp;lt;root-dir&amp;gt;[,&amp;lt;nfs-options&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
パラメータの説明を見るには {{ic|mkinitcpio -H net}} を実行してください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;root=/dev/nfs&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|nfsroot}} パラメータを使わない場合、{{ic|1=root=/dev/nfs}} を設定して自動設定により NFS root から起動するようにする必要があります。&lt;br /&gt;
&lt;br /&gt;
=== LVM を使う ===&lt;br /&gt;
&lt;br /&gt;
root デバイスを [[LVM]] 上に置く場合は、[[LVM#mkinitcpio.conf の設定|lvm2 フックを mkinitcpio.conf に追加する]]必要があります。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化された root を使う ===&lt;br /&gt;
&lt;br /&gt;
[[Dm-crypt/システム全体の暗号化|root を暗号化]]している場合、{{ic|filesystems}} の前に {{ic|encrypt}} フックを追加する必要があり、他のフックも必要になります。ブートローダーによって特定のカーネルコマンドラインパラメータを指定しなくてはなりません: 詳しくは [[Dm-crypt/システム設定#mkinitcpio]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== /usr パーティションを分割する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr}} のパーティションを別にする場合、以下を行う必要があります:&lt;br /&gt;
&lt;br /&gt;
* {{ic|fsck}} フックを追加して、{{ic|/etc/fstab}} で {{ic|/usr}} の {{ic|passno}} を {{ic|0}} にする。起動時に {{ic|/usr}} を fsck したい場合は必須です。このフックが存在しないと、{{ic|/usr}} は永遠に fsck されません。&lt;br /&gt;
* systemd フックを使っていない場合、{{ic|usr}} フックを追加。ルートがマウントされた後に {{ic|/usr}} パーティションがマウントされるようになります。0.9.0 以前では、{{ic|/usr}} はルートの {{ic|/etc/fstab}} で確認されたら自動的にマウントされていました。[[Fstab]] を参照。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== イメージの展開 ===&lt;br /&gt;
&lt;br /&gt;
initramfs イメージの中に何が入っているか気になるときは、イメージを展開して中に入っているファイルを調べることができます。&lt;br /&gt;
&lt;br /&gt;
initramfs イメージは SVR4 CPIO アーカイブであり、{{ic|find}} と {{ic|bsdcpio}} コマンドによって生成されています。また、任意でカーネルが対応した圧縮方法によって圧縮されています。圧縮方法について詳しくは [[#COMPRESSION]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
mkinitcpio には {{ic|lsinitcpio}} というユーティリティが含まれており initramfs イメージの中身を一覧・展開することができます。&lt;br /&gt;
&lt;br /&gt;
イメージ内のファイルを一覧するには:&lt;br /&gt;
 $ lsinitcpio /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
作業ディレクトリにファイルを全て展開するには:&lt;br /&gt;
 $ lsinitcpio -x /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
イメージの重要なパーツについて読みやすいリストを取得することもできます:&lt;br /&gt;
 $ lsinitcpio -a /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
=== 展開して修正を加えたイメージの再圧縮 ===&lt;br /&gt;
上記のようにイメージを展開してから修正を加えたら、再圧縮に必要なコマンドを確認します。{{ic|/usr/bin/mkinitcpio}} を編集して以下のように行を変更してください (mkinitcpio v20-1 の場合は531行目):&lt;br /&gt;
 #MKINITCPIO_PROCESS_PRESET=1 &amp;quot;$0&amp;quot; &amp;quot;${preset_cmd[@]}&amp;quot;&lt;br /&gt;
 MKINITCPIO_PROCESS_PRESET=1 /usr/bin/bash -x &amp;quot;$0&amp;quot; &amp;quot;${preset_cmd[@]}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
そして通常のオプションで {{ic|mkinitcpio}} を実行 ({{ic|mkinitcpio -p linux}}) すると、最後の20行に以下のような表示がされます:&lt;br /&gt;
 + find -mindepth 1 -printf &#039;%P\0&#039;&lt;br /&gt;
 + LANG=C&lt;br /&gt;
 + bsdcpio -0 -o -H newc --quiet&lt;br /&gt;
 + gzip&lt;br /&gt;
&lt;br /&gt;
上記の出力が再圧縮するのに必要なコマンドになります。例:&lt;br /&gt;
 # find -mindepth 1 -printf &#039;%P\0&#039; | LANG=C bsdcpio -0 -o -H newc --quiet | gzip &amp;gt; /boot/initramfs-linux.img&lt;br /&gt;
&lt;br /&gt;
{{Warning|上書きするまえに自動生成された {{ic|/boot/initramfs-linux.img}} の名前を変更することで、簡単に元に戻すことができるようになります。何か問題が発生して起動できなくなった場合、フォールバックイメージやブート CD で起動して、{{ic|mkinitcpio}} を実行して元のイメージに戻してください。}}&lt;br /&gt;
&lt;br /&gt;
=== マウントされているのに &amp;quot;/dev must be mounted&amp;quot; と表示される ===&lt;br /&gt;
{{ic|/dev}} がマウントされているかどうか確認するのに mkinitcpio は {{ic|/dev/fd/}} が存在するかどうかを確かめます。問題がないようでしたら、手動で作成することができます:&lt;br /&gt;
 # ln -s /proc/self/fd /dev/&lt;br /&gt;
&lt;br /&gt;
当然 {{ic|/proc}} のマウントも必要です。mkinitcpio によって次にチェックされます。&lt;br /&gt;
&lt;br /&gt;
=== LUKS/LVM/resume セットアップで systemd フックを使う ===&lt;br /&gt;
伝統的な {{ic|encrypt}}/{{ic|lvm2}}/{{ic|resume}} の代わりに {{ic|systemd}}/{{ic|sd-encrypt}}/{{ic|sd-lvm2}} フックを使う場合、ブートローダーで別の initrd パラメータを渡す必要があります。詳しくはフォーラムの投稿を見て下さい [https://bbs.archlinux.org/viewtopic.php?pid=1480241]。&lt;br /&gt;
&lt;br /&gt;
=== Possibly missing firmware for module XXXX ===&lt;br /&gt;
&lt;br /&gt;
カーネルのアップデート後に initramfs を再生成する際、以下のような警告が表示されることがあります:&lt;br /&gt;
&lt;br /&gt;
 ==&amp;gt; WARNING: Possibly missing firmware for module: aic94xx&lt;br /&gt;
 ==&amp;gt; WARNING: Possibly missing firmware for module: wd719x &lt;br /&gt;
&lt;br /&gt;
ファームウェアモジュールをインストールしていない Arch Linux ユーザーなら誰でも表示されます。ファームウェアを使用するハードウェアを使っていない場合、上記のメッセージは無視してかまいません。&lt;br /&gt;
2022年1月30日現在において、aic94xx、wd719x、xhci_pciモジュールについては表示を抑えることができます。&lt;br /&gt;
aic94xxモジュール向けに{{AUR|aic94xx-firmware}}を、wd719xモジュール向けに{{AUR|wd719x-firmware}}を、xhci_pci向けに{{AUR|upd72020x-fw}}をそれぞれインストールしてください。&lt;br /&gt;
詳しくは[https://gist.github.com/imrvelj/c65cd5ca7f5505a65e59204f5a3f7a6d こちらの議論]を参照してください。&lt;br /&gt;
&lt;br /&gt;
殆どのファームウェアについては、&#039;&#039;linux-firmware&#039;&#039;パッケージを[[インストール]]することにより入手することができます。&lt;br /&gt;
他のパッケージについては、[[公式リポジトリ]]または[[AUR]]にてモジュール名を検索してください。&lt;br /&gt;
&lt;br /&gt;
=== 標準的なレスキュー手順 ===&lt;br /&gt;
&lt;br /&gt;
不適切な初期 RAM ディスクを使用すると、システムが起動できなくなることがよくあります。 したがって、以下のようなシステムレスキュー手順に従ってください。&lt;br /&gt;
&lt;br /&gt;
==== あるマシンでは起動できるが他のマシンでは起動できない ====&lt;br /&gt;
&#039;&#039;mkinitcpio&#039;&#039; の {{ic|autodetect}} フックは {{ic|/sys}} をスキャンしてロードされているカーネルモジュールを確認して不要な[[カーネルモジュール]]を排除します。{{ic|/boot}} ディレクトリを他のマシンに移動して、初期ユーザー空間でブートが失敗する場合、カーネルモジュールが存在しないために新しいハードウェアが検出されていないのが原因かもしれません。USB 2.0 と 3.0 では必要なカーネルモジュールが異なるので注意してください。&lt;br /&gt;
&lt;br /&gt;
修正するには、[[ブートローダー]]から [[#イメージ作成とアクティベーション|fallback]] イメージを選択してください (fallback は {{ic|autodetect}} によるフィルタリングがされていません)。起動したら、新しいマシンで &#039;&#039;mkinitcpio&#039;&#039; を実行して適切なモジュールでイメージを再生成してください。fallback イメージで起動できない場合、Arch Linux のライブ CD/USB で起動して、chroot し、新しいマシンで &#039;&#039;mkinitcpio&#039;&#039; を実行して下さい。それでも駄目な場合、initramfs にモジュールを[[#MODULES|手動]]で追加します。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* Linux カーネルドキュメントの [https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/plain/Documentation/filesystems/ramfs-rootfs-initramfs.txt?id=HEAD initramfs] &#039;&#039;What is rootfs?&#039;&#039; でページ内を検索してください&lt;br /&gt;
* Linux カーネルドキュメントの [https://doc.kusakata.com/admin-guide/initrd.html initrd]&lt;br /&gt;
* [[Wikipedia:ja:initrd]]&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=LightDM&amp;diff=26151</id>
		<title>LightDM</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=LightDM&amp;diff=26151"/>
		<updated>2022-06-29T10:31:22Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: URI の更新や、一部の翻訳など&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ディスプレイマネージャ]]&lt;br /&gt;
[[Category:Canonical]]&lt;br /&gt;
[[en:LightDM]]&lt;br /&gt;
[[es:LightDM]]&lt;br /&gt;
[[fr:LightDM]]&lt;br /&gt;
[[ru:LightDM]]&lt;br /&gt;
[[zh-hans:LightDM]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ディスプレイマネージャ}}&lt;br /&gt;
{{Related|GDM}}&lt;br /&gt;
{{Related|KDM}}&lt;br /&gt;
{{Related|LXDM}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/canonical/lightdm LightDM] はクロスデスクトップの[[ディスプレイマネージャ]]です。主な特徴は以下の通り:&lt;br /&gt;
* クロスデスクトップ - 様々なデスクトップに対応。&lt;br /&gt;
* 様々なディスプレイサーバーに対応 (X, Mir, ...)。&lt;br /&gt;
* 軽量 - メモリの使用量が少なくて高速に動作。&lt;br /&gt;
* ゲストセッションをサポート。&lt;br /&gt;
* リモートログインをサポート (XDMCP, VNC, XDMCP, pluggable)。&lt;br /&gt;
* 充実したテストスイート。&lt;br /&gt;
* 軽量なコードベース。&lt;br /&gt;
&lt;br /&gt;
LightDM の設計に関する詳細は [https://www.freedesktop.org/wiki/Software/LightDM/Design ここ] から見れます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
[[公式リポジトリ]]から {{Pkg|lightdm}} をインストールしてください。リリースバージョンについては、安定版は偶数 (1.8, 1.10) 開発版は奇数 (1.9, 1.11) が付けられています。開発ブランチは [[Arch User Repository|AUR]] から {{AUR|lightdm-devel}}　か {{AUR|lightdm-git}} をインストールすることで使えます。&lt;br /&gt;
&lt;br /&gt;
=== Greeter===&lt;br /&gt;
Greeter もインストールする必要があります。Greeter はユーザーにログイン情報の入力を求める GUI であり、セッションの選択なども行います。Greeter 無しで LightDM を使うことも可能ですが、その場合は自動ログインを設定しなくてはなりません。デフォルトの Greeter は {{Pkg|lightdm-gtk-greeter}} です。LightDM は他の Greeter が設定されていない場合、この Greeter を使用します。&lt;br /&gt;
&lt;br /&gt;
公式リポジトリには以下の Greeter が含まれています:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|lightdm-gtk-greeter}}: &#039;&#039;&#039;デフォルト&#039;&#039;&#039; の Greeter&lt;br /&gt;
* lightdm-deepin-greeter ({{Pkg|deepin-session-ui}}): [[Deepin Desktop Environment|Deepin]] プロジェクトからの Greeter。&lt;br /&gt;
* {{Pkg|lightdm-pantheon-greeter}}: elementary OS プロジェクトの Greeter。&lt;br /&gt;
* {{Pkg|lightdm-slick-greeter}}: GTK ベースの {{Pkg|lightdm-gtk-greeter}} に比べて見た目にフォーカスした Greeter。{{AUR|lightdm-unity-greeter}} からのフォークで、 Linux Mint ではデフォルトになっています。&lt;br /&gt;
* {{Pkg|lightdm-webkit2-greeter}}: テーマに WebKit2 を使用する Greeter。{{AUR|lightdm-webkit-greeter}} の後継。&lt;br /&gt;
* {{Pkg|lightdm-webkit-theme-litarvan}}: モダンかつ完全な Webkit2 の LightDM テーマ。&lt;br /&gt;
&lt;br /&gt;
他の Greeter は [[Arch User Repository|AUR]] からインストールすることができます:&lt;br /&gt;
&lt;br /&gt;
* {{AUR|lightdm-unity-greeter}}: Ubuntu の [[Unity]] で使われている Greeter。&lt;br /&gt;
* {{AUR|lightdm-mini-greeter}}: ミニマルなシングルユーザー Greeter。&lt;br /&gt;
* {{AUR|lightdm-webkit-theme-aether}}: A sleek, straightforward Arch Linux themed login screen written on lightdm and the lightdm-webkit2-greeter.&lt;br /&gt;
* {{AUR|lightdm-elephant-greeter-git}}: 小さくてシンプルな Greeter。デフォルトでは {{Pkg|cage}} Wayland コンポジタ内で動作します。&lt;br /&gt;
&lt;br /&gt;
設定ファイルの {{ic|[Seat:*]}} セクションを変更することでデフォルトの Greeter を変えることが可能です:&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|&lt;br /&gt;
[Seat:*]&lt;br /&gt;
…&lt;br /&gt;
greeter-session&amp;amp;#61;lightdm-yourgreeter-greeter&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/xgreeters}} ディレクトリの {{ic|.desktop}} ファイルを見ることで利用可能な Greeter が確認できます。以下の例では {{ic|lightdm-gtk-greeter}} と {{ic|lightdm-kde-greeter}} が使えることがわかります:&lt;br /&gt;
{{hc|$ ls -1 /usr/share/xgreeters/|lightdm-gtk-greeter.desktop&lt;br /&gt;
lightdm-kde-greeter.desktop}}&lt;br /&gt;
&lt;br /&gt;
== LightDM を有効にする ==&lt;br /&gt;
[[systemd#ユニットを使う|systemctl]] を使って {{ic|lightdm.service}} デーモンを有効にしてください、それで LightDM がブート時に起動するようになります。[[ディスプレイマネージャ#ディスプレイマネージャをロードする]]も参照。&lt;br /&gt;
&lt;br /&gt;
== コマンドラインツール ==&lt;br /&gt;
LightDM はコマンドラインツール {{ic|dm-tool}} を提供しています。これを使うことで現在のシートのロック、セッションの切り替えなどができます。&#039;最小主義の&#039;ウィンドウマネージャを使っている場合やテストに便利です。利用できるコマンドを表示するには、次を実行してください:&lt;br /&gt;
 $ dm-tool --help&lt;br /&gt;
&lt;br /&gt;
=== ユーザー切り替え ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|1=LightDM に組み込まれているスクリーンロッカーである {{ic|dm-tool lock}} や {{ic|dm-tool switch-to-greeter}} の使用は推奨されません [https://bbs.archlinux.org/viewtopic.php?pid=1712213#p1712213]。[[#light-locker を使って画面をロック|light-locker]]など[[アプリケーション一覧/セキュリティ#スクリーンロック|他のスクリーンロッカー]]を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
LightDM の &#039;&#039;dm-tool&#039;&#039; コマンドを使って別々の tty に複数のユーザーをログインさせることができます。以下のコマンドは現在のセッションをロックするシグナルを送信して LightDM の greeter への切り替えを行って、新しいユーザーがログインできるようにします:&lt;br /&gt;
 $ dm-tool switch-to-greeter&lt;br /&gt;
&lt;br /&gt;
== テスト ==&lt;br /&gt;
まず、[[公式リポジトリ]]から {{Pkg|xorg-server-xephyr}} を[[Pacman|インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
そして X アプリケーションとして LightDM を起動してください:&lt;br /&gt;
 $ lightdm --test-mode --debug&lt;br /&gt;
&lt;br /&gt;
== 任意の設定と調整 ==&lt;br /&gt;
LightDM は設定ファイル {{ic|/etc/lightdm/lightdm.conf}} に修正を加えることで設定を行います。&lt;br /&gt;
&lt;br /&gt;
また、Greeter にも設定ファイルが存在することがあります。例:&lt;br /&gt;
 &lt;br /&gt;
{{Pkg|lightdm-gtk-greeter}}: {{ic|/etc/lightdm/lightdm-gtk-greeter.conf}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|lightdm-webkit2-greeter}}: {{ic|/etc/lightdm/lightdm-webkit2-greeter.conf}}&lt;br /&gt;
&lt;br /&gt;
{{Pkg|lightdm-kde-greeter}}{{Broken package link|パッケージが存在しません}}: {{ic|/etc/lightdm/lightdm-kde-greeter.conf}}&lt;br /&gt;
&lt;br /&gt;
=== 背景画像・色を変更する ===&lt;br /&gt;
単色 (画像なし) を使いたい場合は {{ic|background}} 変数を十六進数の色コードに設定してください。例:&lt;br /&gt;
 background=#000000&lt;br /&gt;
&lt;br /&gt;
画像を使いたい場合は以下を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== GTK+ Greeter ====&lt;br /&gt;
{{Pkg|lightdm-gtk-greeter-settings}} を使うことで GUI で設定できます。&lt;br /&gt;
&lt;br /&gt;
greeter 画面の壁紙をカスタマイズするには {{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} を編集して {{ic|[greeter]}} セクションに {{ic|background}} 変数を定義する必要があります。例:&lt;br /&gt;
{{hc|/etc/lightdm/lightdm-gtk-greeter.conf|2=[greeter]&lt;br /&gt;
background=/usr/share/pixmaps/black_and_white_photography-wallpaper-1920x1080.jpg}}&lt;br /&gt;
&lt;br /&gt;
{{Note|LightDM ユーザーが画像ファイルにアクセスできるようにするため、{{ic|/usr/share/pixmaps}} に PNG や JPG ファイルを配置することが推奨されています。}}&lt;br /&gt;
&lt;br /&gt;
===== GTK3 ダークテーマ =====&lt;br /&gt;
GTK3 からテーマに &amp;quot;dark&amp;quot; カラーパレットが追加されていますが、lightdm-gtk-greeter はまだネイティブでサポートしていません。{{ic|/usr/share/xgreeters/lightdm-gtk-greeter.desktop}} の環境変数でテーマを上書きするようにしてください。例:&lt;br /&gt;
{{hc|/usr/share/xgreeters/lightdm-gtk-greeter.desktop|2=&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=LightDM GTK+ Greeter&lt;br /&gt;
Comment=This runs the GTK+ greeter, it should only be run from LightDM&lt;br /&gt;
Exec=env GTK_THEME=Adwaita:dark lightdm-gtk-greeter&lt;br /&gt;
Type=Application&lt;br /&gt;
X-Ubuntu-Gettext-Domain=lightdm&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Webkit2 Greeter ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|lightdm-webkit2-greeter}} の場合、ログイン画面で直接背景画像を選択することができます。起動するたびにランダムに画像を表示するオプションも存在します。デフォルトでは、画像は {{ic|/usr/share/backgrounds}} から読み込まれます。{{ic|lightdm-webkit2-greeter.conf}} を編集することで背景画像のディレクトリを変更できます。例:&lt;br /&gt;
{{hc|/etc/lightdm/lightdm-webkit2-greeter.conf|2=&lt;br /&gt;
[branding]&lt;br /&gt;
background_images = /usr/share/backgrounds&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|背景画像は LightDM ユーザーからアクセスできる場所にないと表示されないため {{ic|/home}} 下の場所を指定しないでください。}}&lt;br /&gt;
&lt;br /&gt;
==== Unity Greeter ====&lt;br /&gt;
{{AUR|lightdm-unity-greeter}} を使っている場合 {{ic|/usr/share/glib-2.0/schemas/com.canonical.unity-greeter.gschema.xml}} ファイルを編集して次を実行してください:&lt;br /&gt;
 # glib-compile-schemas /usr/share/glib-2.0/schemas/&lt;br /&gt;
&lt;br /&gt;
[https://bbs.archlinux.org/viewtopic.php?id=149945 この] ページを参照。&lt;br /&gt;
&lt;br /&gt;
==== KDE Greeter ====&lt;br /&gt;
&#039;&#039;System Settings &amp;gt; Login Screen (LightDM)&#039;&#039; に行き背景画像を変更してください。&lt;br /&gt;
&lt;br /&gt;
また、{{ic|lightdm-kde-greeter.conf}} の {{ic|Background}} 変数を編集する方法もあります:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm-kde-greeter.conf|2=&lt;br /&gt;
[greeter]&lt;br /&gt;
theme-name=classic&lt;br /&gt;
&lt;br /&gt;
[greeter-settings]&lt;br /&gt;
Background=/usr/share/archlinux/wallpaper/archlinux-underground.jpg&lt;br /&gt;
BackgroundKeepAspectRatio=true&lt;br /&gt;
GreetMessage=Welcome to %hostname%&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== アバターを変更する ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|KDE を使っている場合、KDE システム設定からアバターを変更できます。}}&lt;br /&gt;
&lt;br /&gt;
まず {{pkg|accountsservice}} パッケージ ([[公式リポジトリ]]にあります) がインストールされているか確認してください。それから、以下の手順で設定してください。&amp;lt;username&amp;gt; はあなたのログイン名に置き換えてください。.png ファイルの拡張子はファイル名に含めません。&lt;br /&gt;
&lt;br /&gt;
* {{ic|/var/lib/AccountsService/users/&amp;lt;username&amp;gt;}} を作成・編集して、次の行を加えて下さい:&lt;br /&gt;
&lt;br /&gt;
 [User]&lt;br /&gt;
 Icon=/var/lib/AccountsService/icons/&#039;&#039;username&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* 96x96 の PNG アイコンファイルを {{ic|/var/lib/AccountsService/icons/&#039;&#039;username&#039;&#039;}} に配置して下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|作成したファイルのパーミッションは 644 に設定して下さい。詳しくは [[chmod]] を参照。}}&lt;br /&gt;
&lt;br /&gt;
=== Arch の 64x64 アイコンを使う ===&lt;br /&gt;
[[Arch User Repository|AUR]] の {{AUR|archlinux-artwork}} パッケージには素晴らしいサンプルが含まれており {{ic|/usr/share/archlinux/icons}} にインストールされます。以下のように {{ic|/usr/share/icons/hicolor/64x64/devices}} にコピーすることが可能です:&lt;br /&gt;
 # find /usr/share/archlinux/icons -name &amp;quot;*64*&amp;quot; -exec cp {} /usr/share/icons/hicolor/64x64/devices \;&lt;br /&gt;
&lt;br /&gt;
コピーした後は、{{AUR|archlinux-artwork}} パッケージは削除してかまいません。&lt;br /&gt;
&lt;br /&gt;
=== 自動ログインを有効にする ===&lt;br /&gt;
LightDM の設定ファイルを編集して以下の行を変更してください:&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|2=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
autologin-user=&#039;&#039;username&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
パスワードを入力しないで自動的にログインするためにはユーザーが {{ic|autologin}} グループに入っている必要があります:&lt;br /&gt;
&lt;br /&gt;
 # groupadd -r autologin&lt;br /&gt;
 # gpasswd -a &#039;&#039;USERNAME&#039;&#039; autologin&lt;br /&gt;
&lt;br /&gt;
LightDM は {{ic|~/.dmrc}} に指定されたセッションを使ってログインします。このファイルを上書きするために、{{ic|lightdm.conf}} で {{ic|autologin-session}} を指定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|2=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
autologin-user=&#039;&#039;username&#039;&#039;&lt;br /&gt;
autologin-session=&#039;&#039;session&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|GNOME ユーザー (と gnome-keyring ユーザー) は、自動でロックが解除されるように、キーリングに空のパスワードを設定する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
=== システム・サービスユーザーを隠す ===&lt;br /&gt;
システムユーザーをログイン画面で表示されないようにするには、任意の依存パッケージ {{Pkg|accountsservice}} をインストールするか、ユーザーの名前を {{ic|/etc/lightdm/users.conf}} の {{ic|hidden-users}} に追加してください。前者の方法ではユーザーを追加・削除したときにリストを更新する必要はありません。&lt;br /&gt;
&lt;br /&gt;
=== SLiM からの移行 ===&lt;br /&gt;
[[xinitrc]] の中身を [[xprofile]] に移動し、[[ウィンドウマネージャ]]や[[デスクトップ環境]]を起動するコマンドを削除してください。&lt;br /&gt;
&lt;br /&gt;
=== ~/.xinitrc を使ってログイン ===&lt;br /&gt;
&lt;br /&gt;
カスタム起動スクリプトを使う場合は [[xprofile]] に移行することが推奨されますが、{{AUR|xinit-xsession}} をインストールすることで [[xinitrc]] を使うようにすることも可能です。{{ic|/usr/share/xsessions/}} に必要なファイルがインストールされ、LightDM を再起動したときにオプションが表示されるようになります。&lt;br /&gt;
&lt;br /&gt;
=== NumLock を ON にする ===&lt;br /&gt;
{{Pkg|numlockx}} パッケージをインストールして {{ic|/etc/lightdm/lightdm.conf}} を編集して次の行を加えて下さい:&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|2=[Seat:*]&lt;br /&gt;
greeter-setup-script=/usr/bin/numlockx on}}&lt;br /&gt;
&lt;br /&gt;
=== ユーザー切り替え ===&lt;br /&gt;
LightDM は様々なデスクトップ環境でのユーザー切り替えをサポートしています。ユーザー切り替えを有効にするにはシンボリックリンクを作成する必要があります:&lt;br /&gt;
 # ln -s /usr/lib/lightdm/lightdm/gdmflexiserver /usr/local/bin/gdmflexiserver&lt;br /&gt;
&lt;br /&gt;
他の方法については [[XScreenSaver#Lightdm]] の記事を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== デフォルトセッション ===&lt;br /&gt;
&lt;br /&gt;
他の DM と同じように、Lightdm は最後に選択された xsession を {{ic|~/.dmrc}} に保存します。詳しくは[[ディスプレイマネージャ#セッション設定]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ログインウィンドウの位置を変更 ===&lt;br /&gt;
&lt;br /&gt;
==== GTK+ greeter ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} を編集して {{ic|position}} 変数に値を入力する必要があります。{{ic|x}} と {{ic|y}} を入れることができ、絶対座標 (ピクセル) と相対座標 (パーセント) で指定できます。また、ウィンドウのアンカーの位置 ({{ic|start}}, {{ic|center}}, {{ic|end}}) を指定することもできます。値はカンマで区切ります。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
 position=200,start 50%,center&lt;br /&gt;
&lt;br /&gt;
=== VNC サーバー ===&lt;br /&gt;
Lightdm を使って vnc 経由で接続することも可能です。サーバーとクライアントに {{pkg|tigervnc}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
サーバー側で root を使って認証パスワードを設定:&lt;br /&gt;
&lt;br /&gt;
 # vncpasswd /etc/vncpasswd&lt;br /&gt;
&lt;br /&gt;
そして以下のように lightdm の設定ファイルを編集してください。{{ic|listen-address}} を使って vnc がローカルホストからの接続のみ listen するように設定します。[[TigerVNC#クライアント側|ssh とポートフォワーディング]]による接続のみ許可されます。SSH クライアントでは、トンネルの接続先として &amp;quot;localhost:5900&amp;quot; を使うようにしてください。デュアルスタックのネットワーク接続では &amp;quot;127.0.0.1:5900&amp;quot; や &amp;quot;::1:5900&amp;quot; は信頼性がありません。セキュアでない接続も許可するようにしたい場合、設定を無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|2=&lt;br /&gt;
[VNCServer]&lt;br /&gt;
enabled=true&lt;br /&gt;
command=Xvnc -rfbauth /etc/vncpasswd&lt;br /&gt;
port=5900&lt;br /&gt;
listen-address=localhost&lt;br /&gt;
width=1024&lt;br /&gt;
height=768&lt;br /&gt;
depth=24&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定したら [[TigerVNC#クライアント側]]に書かれているように ssh トンネルを開いてローカルホストに接続してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|VNC 接続を開いたときに画面に何も表示されない場合、別の lightdm greeter を試してみてください。}}&lt;br /&gt;
&lt;br /&gt;
=== light-locker を使って画面をロック ===&lt;br /&gt;
{{Pkg|light-locker}} は LightDM を使用してユーザーを認証するシンプルなスクリーンロッカーです。インストールして起動したら以下のコマンドでセッションをロックできます:&lt;br /&gt;
 $ light-locker-command -l&lt;br /&gt;
上記コマンドを使うにはセッションの最初に {{ic|light-locker}} を起動する必要があります。[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
画面が点滅して起動時に lightdm が現れない問題が起こる場合は、lightdm の設定ファイルに greeter を正しく定義しているか確認してください。GTK greeter を定義している場合は、{{ic|xsessions-directory}} (デフォルト: {{ic|/usr/share/xsessions}}) が存在していて少なくとも一つは .desktop ファイルが含まれていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
最後に使用したセッションが利用できなくなった時も同じ問題が lightdm の起動時に発生することがあります (例えば gnome を使った後 gnome-session パッケージを削除した場合): 一番簡単な回避策は削除したパッケージを一時的に戻すことです。もうひとつの解決策は:&lt;br /&gt;
 # dbus-send --system --type=method_call --print-reply --dest=org.freedesktop.Accounts /org/freedesktop/Accounts/User1000 org.freedesktop.Accounts.User.SetXSession string:xfce&lt;br /&gt;
このコマンドはセッション &amp;quot;xfce&amp;quot; を user 1000 ユーザーのデフォルトとして設定します。&lt;br /&gt;
&lt;br /&gt;
=== 電源メニュー (再起動、電源オフなど) が使えない ===&lt;br /&gt;
lightdm-1:1.6.0-6 より前に lightdm をインストールしている場合、次のバグが原因かもしれません: {{Bug|36613}}。修正するには次を実行してください:&lt;br /&gt;
 # chown polkitd:root /usr/share/polkit-1/rules.d&lt;br /&gt;
&lt;br /&gt;
=== 間違ったロケールが表示される ===&lt;br /&gt;
Lightdm でロケールが正しく表示されない場合はあなたが使用しているロケールを {{ic|/etc/environment}} に追加してください:&lt;br /&gt;
 LANG=ja_JP.utf8&lt;br /&gt;
&lt;br /&gt;
LightDM や greeter でシステムロケール以外の言語を使いたい場合、[[systemd#ユニットファイルの編集|ユニットファイルを編集]]して {{ic|1=Environment=}} オプションを追加してください。&lt;br /&gt;
&lt;br /&gt;
=== Xresources が正しく読み込まれない ===&lt;br /&gt;
LightDM には [[Xresources]] ファイルがプリプロセッサによってロードされないという上流のバグが存在します [https://bugs.launchpad.net/lightdm/+bug/1084885]。実際面で、これは {{ic|#define}} で設定された変数が後で呼ばれた時に展開されないということを意味しています。urxvt でカスタムカラーのセットを使った時にピンクの画面になることでこれを確認できます。修正するには、{{ic|/etc/lightdm/Xsession}} を開いて次の行を探して下さい:&lt;br /&gt;
 xrdb -nocpp -merge &amp;quot;$file&amp;quot;&lt;br /&gt;
次のように変更してください:&lt;br /&gt;
 xrdb -merge &amp;quot;$file&amp;quot;&lt;br /&gt;
これで Xresources が処理され変数が正しく展開されます。&lt;br /&gt;
&lt;br /&gt;
=== GTK greeter でアイコンが表示されない ===&lt;br /&gt;
{{Pkg|lightdm-gtk-greeter}} を greeter として使っていてプレースホルダ画像がアイコンとして表示される場合、正しいアイコンテーマとテーマを設定してください。次のファイルを確認してください:&lt;br /&gt;
{{hc|/etc/lightdm/lightdm-gtk-greeter.conf|&lt;br /&gt;
[greeter]&lt;br /&gt;
theme-name&amp;amp;#61;mate      # this should be the name of a directory under /usr/share/themes/&lt;br /&gt;
icon-theme-name&amp;amp;#61;mate # this should be the name of a fully featured icons set directory under /usr/share/icons/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ログインしようとすると LightDM がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
適当なユーザー名・パスワードを入力してログインしようとすると、LightDM がフリーズしデスクトップを起動できないことがあります。この問題を修正するには、{{Pkg|gdk-pixbuf2}} パッケージを再インストールしてください。[https://bbs.archlinux.org/viewtopic.php?id=179031 フォーラムへの投稿]を参照。&lt;br /&gt;
&lt;br /&gt;
=== LightDM が間違ったモニタに表示される ===&lt;br /&gt;
&lt;br /&gt;
マルチモニタを使っていると、LightDM が間違ったモニタに表示されることがあります (例: プライマリモニタが右側にある場合)。LightDM のログイン画面が特定のモニタで表示されるように指定するには、{{ic|/etc/lightdm/lightdm.conf}} を編集して &#039;&#039;display-setup-script&#039;&#039; パラメータを次のように変更してください: &lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|2=&lt;br /&gt;
display-setup-script=xrandr --output &#039;&#039;HDMI1&#039;&#039; --primary&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;HDMI1&#039;&#039; は実際のモニタの ID に置き換えてください、{{ic|xrandr}} コマンドの出力で確認できます。&lt;br /&gt;
&lt;br /&gt;
もしくは、GTK+ greeter を使用している場合、{{ic|/etc/lightdm/lightdm-gtk-greeter.conf}} を編集して以下のように &#039;&#039;active-monitor&#039;&#039; パラメータを追加することもできます:&lt;br /&gt;
{{hc|/etc/lightdm/lightdm-gtk-greeter.conf|2=&lt;br /&gt;
[greeter]&lt;br /&gt;
active-monitor=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
0 は適当なディスプレイの番号に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
=== LightDM が表示されない ===&lt;br /&gt;
&lt;br /&gt;
システムの起動が速すぎて、グラフィックドライバーが読み込まれるよりも先に LightDM サービスが起動してしまうことがあります。このような場合、{{ic|lightdm.conf}} ファイルに以下の設定を追加してください:&lt;br /&gt;
&lt;br /&gt;
 [LightDM]&lt;br /&gt;
 logind-check-graphical=true&lt;br /&gt;
&lt;br /&gt;
上記の設定で LightDM はグラフィックデバイスの準備が完了するのを待ってから Greeter を生成してセッションを開始します。&lt;br /&gt;
&lt;br /&gt;
=== Pulseaudio が自動的に起動しない ===&lt;br /&gt;
&lt;br /&gt;
[[PulseAudio#実行]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドでタップしてクリックできない ===&lt;br /&gt;
&lt;br /&gt;
設定によってはタップでクリックが機能しないことがあります。[[libinput]] を使用している場合、{{ic|/etc/lightdm/lightdm.conf}} を編集して以下のように &#039;&#039;greeter-setup-script&#039;&#039; オプションをセットして xinput によるタッチパッドのクリックを有効にしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|2=&lt;br /&gt;
greeter-setup-script=xinput set-prop &#039;&#039;&#039;&#039;&#039;device_number option_number setting_value&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|xinput}} を使用して入力デバイスのプロパティを設定する方法は [[Libinput#設定]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* {{Pkg|light-locker}} - LightDM を使用する画面ロッカー。&lt;br /&gt;
* [https://wiki.ubuntu.com/LightDM Ubuntu Wiki の記事]&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/LightDM/ja Gentoo Wiki の記事]&lt;br /&gt;
* [https://launchpad.net/lightdm Launchpad のページ]&lt;br /&gt;
* [http://www.mattfischer.com/blog/?tag=lightdm LightDM ブログ]&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=26150</id>
		<title>利用者:Linuxmetel</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=26150"/>
		<updated>2022-06-29T07:52:58Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: ページの白紙化&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=16389</id>
		<title>Emacs</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Emacs&amp;diff=16389"/>
		<updated>2020-05-23T03:16:49Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: 一部を翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:テキストエディタ]]&lt;br /&gt;
[[Category:コンソールアプリケーション]]&lt;br /&gt;
[[Category:GNU]]&lt;br /&gt;
[[de:Emacs]]&lt;br /&gt;
[[en:Emacs]]&lt;br /&gt;
[[es:Emacs]]&lt;br /&gt;
[[fr:Emacs]]&lt;br /&gt;
[[sr:Emacs]]&lt;br /&gt;
[[zh-hans:Emacs]]&lt;br /&gt;
[[Wikipedia:ja:Emacs|Emacs]] は拡張性があり、カスタマイズ可能な、セルフドキュメント方式のリアルタイム表示エディタです。Emacs のコアには、多数の Emacs の内蔵機能や拡張を実装するのに使われている言語である、[[Wikipedia:ja:Emacs Lisp|Emacs Lisp]] のインタプリタが存在します。GNU Emacs 22 から GTK がデフォルトの X ツールキットとして使われていますが、CLI 環境でも負けず劣らずに機能します。Emacs のテキスト編集機能はしばしば [[vim]] と比較されることがあります。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
Emacs には複数の種類があります (時々 &#039;&#039;emacsen&#039;&#039; と呼ばれます)。その中で最も一般的なのは [https://www.gnu.org/software/emacs/ GNU Emacs] です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|emacs}} パッケージを[[インストール]]してください。いつもターミナルで作業をする場合は、GTK+ がいらない {{Pkg|emacs-nox}} の方が良いでしょう (サウンドなどの装飾的な機能もありません)。&lt;br /&gt;
ただしテキストバージョンにはいくつか欠点が存在します: サポートしている色やフォント処理の機能 (実行中にサイズを変更したり、単一の文章で複数のサイズを使うなど) が少なくなっています。その上、emacs-nox には Speedbar や GUD (デバッグ環境) などの高度な機能について制限があり、複雑なフェイスを使おうとするとやや遅くなります (&amp;quot;フェイス&amp;quot;とは Emacs におけるテキストの外観のことです)。&lt;br /&gt;
&lt;br /&gt;
極めて重い依存パッケージをインストールすることなく Emacs の拡張機能を全て完全に使いたい場合、必要に応じて PKGBUILD をカスタマイズすることができます。{{ic|gtk3}} 以外を使えば gconf を排除することが可能です。画像や音声のサポートも同じように無効にできます。Emacs のソースフォルダで {{ic|./configure --help}} を実行して利用可能なオプションを表示してみて下さい。&lt;br /&gt;
{{hc|PKGBUILD|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# ...&lt;br /&gt;
  ./configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib \&lt;br /&gt;
    --localstatedir=/var --with-x-toolkit=gtk2 --with-xft \&lt;br /&gt;
    --without-gconf --without-sound&lt;br /&gt;
# ...&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
他に {{AUR|xemacs}}{{Broken package link|パッケージが存在しません}} もよく使われています。&lt;br /&gt;
&lt;br /&gt;
== Emacs の実行 ==&lt;br /&gt;
&lt;br /&gt;
emacs を起動する前に、終了の方法を知っておきましょう (特にターミナルで実行する場合): {{ic|Ctrl+x}}{{ic|Ctrl+c}} キーシーケンスを使って下さい。&lt;br /&gt;
&lt;br /&gt;
=== 通常の方法 ===&lt;br /&gt;
&lt;br /&gt;
Emacs を起動するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ emacs&lt;br /&gt;
&lt;br /&gt;
また、コンソールから使うには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw&lt;br /&gt;
&lt;br /&gt;
(.emacs を使わずに) 高速でロードして CLI で編集するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -Q -nw&lt;br /&gt;
&lt;br /&gt;
nox バージョンをインストールしている場合、&#039;emacs&#039; と &#039;emacs -nw&#039; は同じになります。&lt;br /&gt;
&lt;br /&gt;
ファイル名を指定することですぐにファイルを開くこともできます:&lt;br /&gt;
&lt;br /&gt;
 $ emacs filename.txt&lt;br /&gt;
&lt;br /&gt;
=== 色無し ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs はハイパーリンクが濃青で表示されるカラーテーマで起動します。Emacs をカラーテーマやスキームを使わずに起動するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -nw --color=no&lt;br /&gt;
&lt;br /&gt;
このコマンドでは全てのテキストがターミナルの前景色だけで表示されます。通常は黒背景に白字か、白背景に黒字となります。&lt;br /&gt;
&lt;br /&gt;
=== デーモンとして ===&lt;br /&gt;
&lt;br /&gt;
毎回 {{ic|.emacs}} ファイルをロードするため Emacs を起動するときには時間が多少かかります。また、別のインスタンスから同じファイルにアクセスしたいと思うときもあるかもしれません。バージョン23から、Emacs はユーザーが接続できるデーモンとして起動することが可能になっています。Emacs をデーモンとして実行するには:&lt;br /&gt;
&lt;br /&gt;
 $ emacs --daemon&lt;br /&gt;
&lt;br /&gt;
起動時にデーモンを実行してウィンドウをデーモンに接続すると良いでしょう。さらに、グラフィカル・コンソールクライアント&#039;&#039;両方を&#039;&#039;同意時にデーモンに接続して GUI を素早く起動することも可能です。&lt;br /&gt;
&lt;br /&gt;
デーモンに接続したいときは場合は次のコマンドを使って下さい (グラフィカル環境から実行したときはグラフィカルクライアントが、tty などのコンソールから実行したときはコンソールクライアントが起動します):&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境にいるときもコンソールクライアントを使いたい場合は次のコマンドを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 $ emacsclient -t&lt;br /&gt;
&lt;br /&gt;
さらに、{{ic|-a &amp;quot;&amp;quot;}} パラメータを追加することもできます。&lt;br /&gt;
これで、最初にコマンドを実行したときは、デーモンとして emacs が起動します。バックグラウンドで動き続けるので後で呼び出した時に起動時間が早くなります (バッファも残り続けます)。&lt;br /&gt;
&lt;br /&gt;
ターミナルや他のプログラムからクライアントを起動した場合、呼び出すプログラムを使うことで Emacs クライアントを閉じなくてもクライアントを使い続けることができます。そのためには、 {{ic|-n}} ({{ic|--no-wait}}) パラメータを使ってクライアントを起動します:&lt;br /&gt;
 $ emacsclient -nc&lt;br /&gt;
&lt;br /&gt;
Mutt や Git などのプログラムは (コミットメッセージを読むための) エディタが終了するまで待機するため、{{ic|-n}} パラメータを使うことはできません。デフォルトエディタが設定されている場合、他のエディタを指定する必要があるかもしれません (例: {{ic|emacsclient -a &amp;quot;&amp;quot; -t}})。&lt;br /&gt;
&lt;br /&gt;
以下のシェル設定が利用できます:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
alias emt=&#039;emacsclient -nc -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
alias emc=&#039;emacsclient -t -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
EDITOR=&#039;emacsclient -a &amp;quot;&amp;quot;&#039;&lt;br /&gt;
}}&lt;br /&gt;
ただしこれには注意事項があります: コマンドのスペースの関係で多数のプログラムが外部エディタをロードすることはできません。&lt;br /&gt;
&lt;br /&gt;
スクリプトを書くほうがもっと使い勝手が良く信頼性があります:&lt;br /&gt;
{{hc|/usr/local/bin/emc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
if [ -z &amp;quot;$DISPLAY&amp;quot; ]; then&lt;br /&gt;
    IS_GRAPHICAL=true&lt;br /&gt;
else&lt;br /&gt;
    IS_GRAPHICAL=$(emacs --batch -Q --eval=&#039;(if (fboundp &#039;&amp;quot;&#039;&amp;quot;&#039;tool-bar-mode) (message &amp;quot;true&amp;quot;) (message &amp;quot;false&amp;quot;))&#039; 2&amp;gt;&amp;amp;1)&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
if $IS_GRAPHICAL; then&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -nc &amp;quot;$@&amp;quot;&lt;br /&gt;
else&lt;br /&gt;
    emacsclient -a &amp;quot;&amp;quot; -t &amp;quot;$@&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
スクリプトは実行可能属性を付けて下さい:&lt;br /&gt;
 # chmod 755 /usr/local/bin/emc&lt;br /&gt;
&lt;br /&gt;
これで &#039;emc&#039; が期待通りに動作するようになります。このクライアントをデフォルトのエディタにしたいときは上記のスクリプトで {{ic|EDITOR}} 環境変数を設定すれば OK です。&lt;br /&gt;
&lt;br /&gt;
=== systemd ユニットとして ===&lt;br /&gt;
&lt;br /&gt;
Emacs 26.1 から systemd ユニットが含まれています。Emacs のインストール後に以下のように有効化してください:&lt;br /&gt;
&lt;br /&gt;
  $ systemctl --user enable --now emacs&lt;br /&gt;
&lt;br /&gt;
Emacs サーバーを実行したいユーザーで上記のコマンドを実行してください。サービスの起動後、Emacs の準備ができます。ユニットファイルは {{ic|/usr/lib/systemd/user/emacs.service}} に存在します。ユニットファイルの中身は以下のようになっています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/lib/systemd/user/emacs.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Emacs text editor&lt;br /&gt;
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=simple&lt;br /&gt;
ExecStart=/usr/bin/emacs --fg-daemon&lt;br /&gt;
ExecStop=/usr/bin/emacsclient --eval &amp;quot;(kill-emacs)&amp;quot;&lt;br /&gt;
Environment=SSH_AUTH_SOCK=%t/keyring/ssh&lt;br /&gt;
Restart=on-failure&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
systemd のユーザーユニットはログインシェル ({{ic|~/.bash_profile}} など) から環境変数を継承しないため、{{ic|~/.pam_environment}} に変数を設定すると良いでしょう。詳しくは [[Systemd/ユーザー]]を参照。&lt;br /&gt;
&lt;br /&gt;
emacs をデーモンとして起動する場合、{{ic|VISUAL}} と {{ic|EDITOR}} 環境変数を {{ic|emacsclient}} に設定することでプログラムからエディタを起動するときにエディタの新しいインスタンスを起動するかわりに emacsclient が使われるようになります。外部エディタを使用するプログラムとしてメールプログラム (メッセージを編集するため) や Git (コミットメッセージを編集するため)、less ({{ic|v}} コマンドで表示されたファイルを編集するため) などが存在します。emacsclient の {{ic|-n}} ({{ic|--nowait}}) オプションは使用しないでください。基本的にプログラムはエディタが終了したときに編集が完了したと認識するためです。&lt;br /&gt;
&lt;br /&gt;
GUI の Emacs のスタートメニューエントリなども emacs ではなく emacsclient が使われるように変更することを推奨します。&lt;br /&gt;
&lt;br /&gt;
== クイックスタート ==&lt;br /&gt;
&lt;br /&gt;
Emacs は複雑ですが、そのカスタマイズと拡張性のレベルによってもたらされる利益を理解し始めるのにそう時間はかからないでしょう。さらに、幅広い拡張を利用することで Emacs はあらゆる種類の文章編集のための強力な環境に姿を変えることができます。&lt;br /&gt;
&lt;br /&gt;
Emacs には素晴らしいチュートリアルが内蔵されており、スプラッシュ画面の最初のリンクをクリックしてアクセスできます。メニューから &#039;&#039;Help-&amp;gt;Emacs Tutorial&#039;&#039; を選択するか &#039;F1&#039; の後に &#039;t&#039; を押して下さい。このページは Emacs を始めるのに追加的なリソースになるように書かれています。&lt;br /&gt;
&lt;br /&gt;
初心者にもエキスパートにも役立つ、リファレンスカードのセットも Emacs に含まれています、{{ic|/usr/share/emacs/&amp;lt;version&amp;gt;/etc/refcards/}} を見て下さい (&amp;lt;version&amp;gt; はあなたの emacs のバージョンに置き換えて下さい)。&lt;br /&gt;
&lt;br /&gt;
=== 基本的な用語と慣習 ===&lt;br /&gt;
&lt;br /&gt;
始めは慣れないと思うかもしれませんが Emacs にはいくつか特別な用語法と約束事があり、必要に応じて紹介していきます。ただ、Emacs を使うにあたって当然知ってるべきとされるような、基本的な用語についてはあらかじめ説明しておいたほうが良いでしょう。&lt;br /&gt;
&lt;br /&gt;
真っ先に知るべきは&#039;&#039;バッファ&#039;&#039;の概念です。バッファは Emacs の中のデータを表します。例えば、Emacs でファイルを開いたとき、ディスクからファイルから読み込まれてバッファに中身が保存され、バッファを編集して後でディスクに上書き保存することができます。バッファはテキストに限られず、画像やウィジェットなども含めます。作業中でもバッファでアプリケーションを表示することすらできます。こういう考え方もできます: ディスク上のデータは&#039;ファイル&#039;であり、一方、Emacs 上のデータは&#039;バッファ&#039;である。&lt;br /&gt;
&lt;br /&gt;
Emacs におけるキーシーケンスの決まり事も見慣れないかもしれません。即ち:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x&#039;&#039;&#039; は Control-x を示します&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x&#039;&#039;&#039; は Meta-x を示します&lt;br /&gt;
&lt;br /&gt;
{{Note|&#039;Meta&#039; は多くの場合 Alt キーに相当します。また、Esc キーを使うことも可能です。}}&lt;br /&gt;
&lt;br /&gt;
例えば、Emacs を終了するには次のキーシーケンスを使います: &#039;&#039;&#039;C-x C-c&#039;&#039;&#039;。これは &amp;quot;Control を押しながら &#039;x&#039; を押す。手を離す。Control を押しながら &#039;c&#039; を押す&amp;quot; と読み替えることができます。Emacs にはメニューバーが存在しますが、キーシーケンスを使いこなせるように練習することを推奨します。以下から、Emacs で使われるキーバインディングと慣習について説明します。&lt;br /&gt;
&lt;br /&gt;
=== 移動 ===&lt;br /&gt;
&lt;br /&gt;
カーソルの移動は他のグラフィカルエディタとよく似ています。マウスや方向キーを使ってカーソルの位置 (Emacs では&#039;&#039;ポイント&#039;&#039;と呼ばれます) を変更することができます。一般的な移動コマンドは方向キーで出来ますが、Emacs には他にも便利なバインディングが存在します。1文字先に移動するには &#039;&#039;&#039;C-f&#039;&#039;&#039; を使用して、1文字前に移動するには &#039;&#039;&#039;C-b&#039;&#039;&#039; を使用します。&#039;&#039;&#039;C-n&#039;&#039;&#039; と &#039;&#039;&#039;C-p&#039;&#039;&#039; でそれぞれ次の行と前の行に移動できます。基本的に、マウスや方向キーを使うよりもこれらのキーシーケンスを使うことが推奨されています。&lt;br /&gt;
&lt;br /&gt;
当然、Emacs には、単語や文単位で移動できる、もっと高度な移動コマンドが用意されています。&#039;&#039;&#039;M-f&#039;&#039;&#039; は1単語先に移動して &#039;&#039;&#039;M-b&#039;&#039;&#039; は1単語前にポイント移動します。同じく、&#039;&#039;&#039;M-e&#039;&#039;&#039; は1文先にポイント移動して &#039;&#039;&#039;M-a&#039;&#039;&#039; は前に戻ります。&lt;br /&gt;
&lt;br /&gt;
ここまでは、紹介した全ての移動コマンドはポイントに関連しています。&#039;&#039;&#039;M-&amp;lt;&#039;&#039;&#039; を使うことでバッファの最初にポイントを移動することができ、逆に、&#039;&#039;&#039;M-&amp;gt;&#039;&#039;&#039; はバッファの最後に移動します。特定の行番号にポイントを移動するには、&#039;&#039;&#039;M-g g&#039;&#039;&#039; を使います。&#039;&#039;&#039;M-g g&#039;&#039;&#039; は移動したい行番号を尋ねます。また、現在の行の先頭と末尾に移動するには、&#039;&#039;&#039;C-a&#039;&#039;&#039; あるいは &#039;&#039;&#039;C-e&#039;&#039;&#039; を使って下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のコマンドを含む全てのコマンドのキーバインドは、現在有効になっているモードによって&#039;&#039;多少&#039;&#039;ながら変わってくる可能性があります。しかしながら、同一の機能を実行するのにコマンドを置き換えることはあまりありません。詳しくは[[#モード|モード]]を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== ファイルとバッファ ===&lt;br /&gt;
&lt;br /&gt;
Emacs にはファイルを操作するためのコマンドが用意されています。このセクションでは最もよく使われるコマンドを紹介します。ファイルを開くには &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; を使います (Emacs ではこのコマンドを &#039;find-file&#039; と呼びます)。指定されたファイルが存在しなかった場合、Emacs は空のバッファを開きます。バッファを保存するとバッファの中身が入ったファイルが作成されます。&#039;&#039;&#039;C-x C-s&#039;&#039;&#039; を使うことでバッファを保存できます。別のファイル名でバッファを保存するには、&#039;&#039;&#039;C-x C-w&#039;&#039;&#039; を使って下さい (this is a mnemonic for the command &#039;write-file&#039;)。新しいファイル名が尋ねられ、ディスクにファイルが書き込まれます。&#039;&#039;&#039;C-x s&#039;&#039;&#039; で全てのバッファを保存することも可能です。最後に保存されていた状態からバッファに変更が加えられている場合、保存を実行するかどうか訊くプロンプトが表示されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|ファイルに対応するバッファが既に開かれている場合 &#039;&#039;&#039;C-x C-f&#039;&#039;&#039; はディスクからファイルを読み込みません。ディスクからファイルを再度読み込むには、(1) まずバッファを閉じて (&#039;&#039;&#039;C-x k&#039;&#039;&#039;)、それからファイルを開くか (&#039;&#039;&#039;C-x C-f&#039;&#039;&#039;) あるいは (2) &#039;&#039;&#039;M-x revert-buffer&#039;&#039;&#039; を使ってディスク上のデータに戻して下さい。それか (3) &#039;&#039;&#039;C-x C-v&#039;&#039;&#039; でファイルを現在のバッファにロードするか (4) &#039;&#039;&#039;C-x RET r RET&#039;&#039;&#039; で同一コードでファイルを再読み込みしてください。}}&lt;br /&gt;
&lt;br /&gt;
&amp;quot;find-file&amp;quot; や &amp;quot;write-file&amp;quot; などのインタラクティブなコマンドでは Emacs ウィンドウの一番下の行に入力が求められます。この行のことは&#039;&#039;ミニバッファ&#039;&#039;と呼びます。ミニバッファでは基本的な編集コマンドを使うことができ、多くの *nix シェルで利用できるのと同じようなタブ補完機能があります。&#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; を2回連続で押すと補完リストが表示され、マウスを使ってリストから補完候補を選択することも可能です。ミニバッファでの補完はコマンドやファイル名など様々な形で使えます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファには履歴機能も存在します。前に入力したコマンドは &#039;&#039;&#039;Up Arrow&#039;&#039;&#039; または &#039;&#039;&#039;M-p&#039;&#039;&#039; を使うことで再呼び出しできます。&lt;br /&gt;
&lt;br /&gt;
ミニバッファは &#039;&#039;&#039;C-g&#039;&#039;&#039; を押すことでいつでも終了できます。&lt;br /&gt;
&lt;br /&gt;
ファイルを複数開いたら、ファイルを切り替える手段が必要です。Emacs 内に既に存在するバッファにファイルを開くと、Emacs はそのバッファに切り替えます。しかしながらこれは効率的とは言えません。Emacs には表示するバッファを選択する &#039;&#039;&#039;C-x b&#039;&#039;&#039; が存在します (タブ補完が使えます)。存在しないバッファの名前を入力すると、その名前で新しいバッファが作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|前のバッファに切り替えるには &#039;&#039;&#039;C-x b &amp;lt;RET&amp;gt;&#039;&#039;&#039; を使います。前のバッファがデフォルトだからです。}}&lt;br /&gt;
&lt;br /&gt;
全てのバッファのリストを &#039;&#039;&#039;C-x C-b&#039;&#039;&#039; で表示することができます。バッファが必要なくなったときは &#039;&#039;&#039;C-x k&#039;&#039;&#039; で削除することが可能です。&lt;br /&gt;
&lt;br /&gt;
=== 編集 ===&lt;br /&gt;
&lt;br /&gt;
Emacs には多数の編集コマンドが存在します。まだ紹介していない最も重要なコマンドはおそらく &#039;undo&#039; でしょう。&#039;&#039;&#039;C-_&#039;&#039;&#039; または &#039;&#039;&#039;C-/&#039;&#039;&#039; で実行することができます。基本的に移動コマンドには対応する削除コマンドが存在します。例えば &#039;&#039;&#039;M-&amp;lt;backspace&amp;gt;&#039;&#039;&#039; で後方の単語を削除することができ、{{ic|M-d}} で前方の単語を削除できます。行末または文章の終わりまで削除するにはそれぞれ {{ic|C-k}} または {{ic|M-k}} を使います。&lt;br /&gt;
&lt;br /&gt;
1行は80文字を超えていはいけないという経験則が存在します。1行の長さを長くしすぎないことで、特にウィンドウの縁で改行してしまうような場合に、可読性を維持することができます。改行の自動挿入 (または削除) は Emacs では詰め込み (&#039;&#039;filling&#039;&#039;) と呼ばれます。{{ic|M-q}} を使うことでパラグラフを折り返させることができます。&lt;br /&gt;
&lt;br /&gt;
文字列と単語はそれぞれ {{ic|C-t}} と {{ic|M-t}} で置き換えることが可能です。例えば {{ic|Hello World!}} を {{ic|World! Hello}} と置き換えられます。&lt;br /&gt;
&lt;br /&gt;
単語の大文字小文字はすぐに修正できます。{{ic|M-l}} は単語を小文字に変換し ({{ic|HELLO}} は {{ic|hello}})、{{ic|M-u}} は単語を大文字に変換します ({{ic|hello}} は {{ic|HELLO}})。そして {{ic|M-c}} は単語の最初の文字を大文字にして他の文字は小文字にします ({{ic|hElLo}} は {{ic|Hello}})。&lt;br /&gt;
&lt;br /&gt;
=== kill と yank とリージョン ===&lt;br /&gt;
&lt;br /&gt;
A region is a section of text between two positions.  One of those positions is referred to as &#039;&#039;mark&#039;&#039;, and the other is point.  &#039;&#039;&#039;C-&amp;lt;SPC&amp;gt;&#039;&#039;&#039; is used to set the position of mark, after which point can be moved to create a region.  Within GNU Emacs 23.1 onwards, this region is visible by default.  There are a number of commands which act upon regions, among the most commonly used are &#039;&#039;killing&#039;&#039; commands.&lt;br /&gt;
&lt;br /&gt;
In Emacs, cut and paste are referred to as &#039;&#039;kill&#039;&#039; and &#039;&#039;yank&#039;&#039;, respectively.  Many commands which delete more than one character (including many of those in the above section, such as &#039;&#039;&#039;C-k&#039;&#039;&#039; and &#039;&#039;&#039;M-d&#039;&#039;&#039;) actually cut the text and append it to what is known as the &#039;&#039;kill-ring&#039;&#039;.  The kill-ring is simply a list of killed text.  The kill-ring stores up to the last 60 kills by default.  Successive kills are concatenated and stored at the head of the list.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-w&#039;&#039;&#039; and &#039;&#039;&#039;M-w&#039;&#039;&#039; can be used to kill and copy a region, respectively.&lt;br /&gt;
&lt;br /&gt;
To insert killed text into a buffer (known as &#039;yanking&#039;), use &#039;&#039;&#039;C-y&#039;&#039;&#039;.  &#039;&#039;&#039;C-y&#039;&#039;&#039; can be used multiple times in succession to yank text repeatedly.  As mentioned, previous kills are stored in a list, however &#039;&#039;&#039;C-y&#039;&#039;&#039; only retrieves the first of them.  The earlier kills can be accessed via &#039;&#039;&#039;M-y&#039;&#039;&#039;.  This will remove the text inserted by &#039;yank&#039; initially, replacing it with the text killed earlier.  &#039;&#039;&#039;M-y&#039;&#039;&#039; must be used immediately following &#039;&#039;&#039;C-y&#039;&#039;&#039; and can be used in many times succession to cycle through the kill-ring.&lt;br /&gt;
&lt;br /&gt;
=== 検索と置換 ===&lt;br /&gt;
&lt;br /&gt;
Searching for a string is common practise in text-editing.  This can be performed using &#039;&#039;&#039;C-s&#039;&#039;&#039; (to search forward) or &#039;&#039;&#039;C-r&#039;&#039;&#039; (to search backward).  These commands prompt for the string for which to search.  Searching is performed incrementally, and so it will match the next (or previous) occurrence as you type.  次の検索結果に行くにはC-sを、前の検索結果に行くにはC-rをおします。  もし探しているものが見つかったのであれば、&#039;&#039;&#039;&amp;lt;RET&amp;gt;&#039;&#039;&#039; を押すことで検索を終了できます。  Alternatively, should you wish to return to the location you initiated the search, use &#039;&#039;&#039;C-g&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Once a search is completed (i.e., was not aborted with &#039;&#039;&#039;C-g&#039;&#039;&#039; or similar), the string which was searched for will be the default for any following search.  To make use of this, press &#039;&#039;&#039;C-s C-s&#039;&#039;&#039; or &#039;&#039;&#039;C-r C-r&#039;&#039;&#039; to search forward or backward again, respectively.&lt;br /&gt;
&lt;br /&gt;
I-search has some useful commands. Use &#039;&#039;&#039;M-e&#039;&#039;&#039; to edit the search field. Use&lt;br /&gt;
&#039;&#039;&#039;M-c&#039;&#039;&#039; to toggle case-sensitive matching.&lt;br /&gt;
&lt;br /&gt;
Regular Expression searches behave identically to the searching described above except for the command to initiate the search.  Use &#039;&#039;&#039;C-M-s&#039;&#039;&#039; or &#039;&#039;&#039;C-M-r&#039;&#039;&#039; to initiate a regexp search forward or backward, respectively.  Once a Regular Expression search has commenced, &#039;&#039;&#039;C-s&#039;&#039;&#039; and &#039;&#039;&#039;C-r&#039;&#039;&#039; can be used to search forward or backward, just as with string searches.&lt;br /&gt;
&lt;br /&gt;
In addition to searching, it is also possible to perform string and regular expression replacement (via &#039;&#039;&#039;M-%&#039;&#039;&#039; and &#039;&#039;&#039;C-M-%&#039;&#039;&#039;, respectively).  Prompts are provided for both the initial and replacement text, and then another prompt for the action to perform on the highlighted match.  Although many options are available (the full list is available by pressing &#039;&#039;&#039;?&#039;&#039;&#039;), the most commonly used are &#039;&#039;&#039;y&#039;&#039;&#039;, to perform replacement, &#039;&#039;&#039;n&#039;&#039;&#039;, to skip this match, and &#039;&#039;&#039;!&#039;&#039;&#039; to replace this, and all following matches.&lt;br /&gt;
&lt;br /&gt;
=== 前置引数 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-u&#039;&#039;&#039; corresponds to the &#039;universal-argument&#039; command.  Providing a &#039;universal-argument&#039; is a way to provide more information to a command (this information is referred to as a &#039;prefix argument&#039;). For instance&lt;br /&gt;
&lt;br /&gt;
 C-u 80 %&lt;br /&gt;
&lt;br /&gt;
will insert a line of percent signs. Or&lt;br /&gt;
&lt;br /&gt;
 C-u 4 M-d&lt;br /&gt;
&lt;br /&gt;
Will delete 4 words. In this case, we provided the amount of words desired to the command invoked by &#039;&#039;&#039;M-d&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can make it a little quicker by using the equivalent &#039;&#039;&#039;M-&amp;lt;number&amp;gt;&#039;&#039;&#039; as universal argument.&lt;br /&gt;
&lt;br /&gt;
 M-80 %&lt;br /&gt;
&lt;br /&gt;
=== インデント ===&lt;br /&gt;
&lt;br /&gt;
Indentation is usually performed with either &#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039;, to indent a single line, or with &#039;&#039;&#039;C-M-\&#039;&#039;&#039;, to indent a region. If the region is active (&#039;&#039;i.e.&#039;&#039; highlighted), then &#039;&#039;&#039;&amp;lt;TAB&amp;gt;&#039;&#039;&#039; will also indent region.&lt;br /&gt;
&lt;br /&gt;
Exactly how text is indented usually depends on the &#039;&#039;major-mode&#039;&#039; which is active.  Major-modes often define indentation styles specialising in indenting a certain type of text.  (See [[#モード|Modes]] for more information.)&lt;br /&gt;
&lt;br /&gt;
In some cases, a suitable major-mode may not exist for a file type, in which case, manual indentation may be necessary.  Create a region (see [[#kill と yank とリージョン|Killing, yanking and regions]]) then perform indentation with &#039;&#039;&#039;C-u &amp;lt;n&amp;gt; C-x &amp;lt;TAB&amp;gt;&#039;&#039;&#039; (where &#039;&amp;lt;n&amp;gt;&#039; is the number of columns which the text within the region should be indented). For example:&lt;br /&gt;
&lt;br /&gt;
Increase the region&#039;s indentation by four columns:&lt;br /&gt;
&lt;br /&gt;
 C-u 4 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Decrease the region&#039;s indentation by two columns.&lt;br /&gt;
&lt;br /&gt;
 C-u -2 C-x &amp;lt;TAB&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ウィンドウとフレーム ===&lt;br /&gt;
&lt;br /&gt;
Emacs is designed for convenient editing of many files at a time. This is achieved by dividing the Emacs interface into three levels.  Namely, buffers, which have already been introduced, as well as &#039;&#039;windows&#039;&#039; and &#039;&#039;frames&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;ウィンドウ&#039;&#039;&#039;とは、Emacsでバッファを表示している場所のことです。   A window can display only one buffer at a time, however one buffer can be displayed in many windows.  Beneath each window exists a &#039;&#039;mode-line&#039;&#039;, which displays information for that buffer.&lt;br /&gt;
&lt;br /&gt;
A &#039;&#039;&#039;frame&#039;&#039;&#039; is an Emacs &amp;quot;window&amp;quot; (in standard terminology.  i.e., &#039;window&#039; in the sense of the modern desktop paradigm) which contains a title bar, menu bar and one or more &#039;windows&#039; (in Emacs terminology.  i.e., the above definition of &#039;window&#039;).&lt;br /&gt;
&lt;br /&gt;
From now on the definition of these terms as they exist in Emacs will be used.&lt;br /&gt;
&lt;br /&gt;
To split the window  horizontally or vertically use &#039;&#039;&#039;C-x 2&#039;&#039;&#039; or &#039;&#039;&#039;C-x 3&#039;&#039;&#039;, respectively.  This has the effect of creating another window in the current frame.  To cycle between multiple windows, use &#039;&#039;&#039;C-x o&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The opposite of splitting a window, is deleting it.  To delete the current window, use &#039;&#039;&#039;C-x 0&#039;&#039;&#039; and &#039;&#039;&#039;C-x 1&#039;&#039;&#039; to delete all windows except the current.&lt;br /&gt;
&lt;br /&gt;
As with windows, it is also possible to create and delete frames.  &#039;&#039;&#039;C-x 5 2&#039;&#039;&#039; creates a frame.  With &#039;&#039;&#039;C-x 5 0&#039;&#039;&#039; to delete the current frame and &#039;&#039;&#039;C-x 5 1&#039;&#039;&#039; to delete all except the current frame.&lt;br /&gt;
&lt;br /&gt;
{{Note|These commands do not affect buffers.  For example, deleting a window does not kill the buffer it displays.}}&lt;br /&gt;
&lt;br /&gt;
=== モード ===&lt;br /&gt;
&lt;br /&gt;
Emacs モードは Emacs Lisp で書かれた拡張であり、接続されているバッファの挙動を制御します。大抵の場合、インデントやシンタックスハイライト、テキストを編集するときのキーバインドを提供します。洗練されたモードは Emacs を完全な IDE (統合開発環境) に変貌させます。Emacs は基本的にファイルの拡張子でモードをロードすべきか判断します。&lt;br /&gt;
&lt;br /&gt;
シェルスクリプトを編集するのに役立つモードとして sh-mode, line-number-mode, column-number-mode が存在します。同時に使用することができ、以下のコマンドで呼び出します:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x sh-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x column-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
line-number-mode はデフォルトで有効になっていますが、コマンドを再度実行することでオンとオフを切り替えられます:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;M-x line-number-mode &amp;lt;RET&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
sh-mode is a &#039;&#039;major-mode&#039;&#039;.  Major-modes adjust Emacs, and often also provide a specialised set of commands, for editing a particular type of text.  Only one major-mode can be active in each buffer.  In addition to syntax highlighting, and indentation support, sh-mode defines several commands to help write shell scripts.  The following shows a few of those commands:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-c (&#039;&#039;&#039;	 Insert a function definition&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-f&#039;&#039;&#039;	 Insert a &#039;for&#039; loop&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c TAB&#039;&#039;&#039;	 Insert an &#039;if&#039; statement&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-w&#039;&#039;&#039;	 Insert a &#039;while&#039; loop&lt;br /&gt;
 &lt;br /&gt;
 &#039;&#039;&#039;C-c C-l&#039;&#039;&#039;	 Insert an indexed loop from 1 to n&lt;br /&gt;
&lt;br /&gt;
&#039;line-number-mode&#039; と &#039;column-number-mode&#039; は&#039;&#039;マイナーモード&#039;&#039;です。マイナーモードはメジャーモードを拡張することができ、同時に任意の数のマイナーモードを有効にできます。&lt;br /&gt;
&lt;br /&gt;
=== マニュアル ===&lt;br /&gt;
&lt;br /&gt;
Emacs を本当にマスターしたいのであれば、一番よく読むべき文章はやはり公式マニュアルです:&lt;br /&gt;
* Emacs: the complete Emacs user manual.&lt;br /&gt;
* Emacs FAQ.&lt;br /&gt;
* Emacs Lisp Intro: if you never used any programming language before.&lt;br /&gt;
* Elisp: if you are already familiar with a programming language.&lt;br /&gt;
&lt;br /&gt;
You can access them as PDFs from [http://www.gnu.org/software/emacs/manual/ GNU.org] or directly from Emacs itself thanks to the embedded &#039;info&#039; reader: &#039;&#039;&#039;C-h i&#039;&#039;&#039;. Press &#039;&#039;&#039;m&#039;&#039;&#039; to choose a book.&lt;br /&gt;
&lt;br /&gt;
Some users prefer to read books using &#039;info&#039; because of its convenient shortcuts, its paragraphs adapting to window width and the font adapted to current screen resolution. Some find it less irritating to the eyes. Finally you can easily copy content from the book to any Emacs buffer, and you can even execute Lisp code snippets directly from the examples.&lt;br /&gt;
&lt;br /&gt;
You may want to read the &#039;&#039;&#039;Info&#039;&#039;&#039; book to know more about it: &#039;&#039;&#039;C-h i m info &amp;lt;RET&amp;gt;&#039;&#039;&#039;.&lt;br /&gt;
Press &#039;&#039;&#039;?&#039;&#039;&#039; while in info mode for a quick list of shortcuts.&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
前のセクションでは基本的な編集コマンドを説明していますが、それだけでは Emacs の可能性はわかりません。このセクションではより高度なテクニックや機能を紹介します。&lt;br /&gt;
&lt;br /&gt;
ただし全てを説明するとなると長くなりすぎます。そのためこのセクションはあくまで Emacs の雅やかな機能をいくつか&#039;&#039;デモ&#039;&#039;するだけにとどめます。&lt;br /&gt;
&lt;br /&gt;
全ての機能の詳細な説明は[[#ドキュメント|ドキュメント]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== TRAMP ===&lt;br /&gt;
&lt;br /&gt;
TRAMP (Transparent Remote Access, Multiple Protocols) は多数のプロトコルで、リモートファイルに透過的にアクセスすることができる拡張です。ファイル名を入力するときに、特定の形式を入力すると TRAMP が呼びだされます。例:&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/hosts}} を root 権限で開く前に root のパスワードを要求するには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /sudo::/etc/hosts&lt;br /&gt;
&lt;br /&gt;
SSH で &#039;myhost&#039; に &#039;myuser&#039; として接続して {{ic|~/example.txt}} ファイルを開くには:&lt;br /&gt;
&lt;br /&gt;
 C-x C-f /ssh:myuser@myhost:~/example.txt&lt;br /&gt;
&lt;br /&gt;
TRAMP のパスは &#039;/[protocol]:[[user@]host]:&amp;lt;file&amp;gt;&#039; という形式で指定します。TRAMP がサポートしているのは上記の例に限りません。詳しくは TRAMP の info マニュアルを参照してください。マニュアルは Emacs に付属しています。&lt;br /&gt;
&lt;br /&gt;
=== キーボードマクロとレジスタ ===&lt;br /&gt;
&lt;br /&gt;
This section will provide a practical demonstration of the use of a couple of more powerful editing features.  Namely, &#039;&#039;keyboard macros&#039;&#039; and &#039;&#039;registers&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The aim will be to produce a listing of a series of characters and their corresponding position in this list.  While it is possible to format each of them by hand, this would be slow and error-prone.  Alternatively, some of Emacs&#039; more powerful editing functionality could be leveraged.  Before describing a solution, some details behind the techniques which will be used follow.&lt;br /&gt;
&lt;br /&gt;
The first feature which will be introduced is &#039;&#039;registers&#039;&#039;.  Registers are used to store and retrieve a variety of data types ranging from numbers to window configurations.  Each register is given a name of a single character: this character is used to access the register.&lt;br /&gt;
&lt;br /&gt;
The other which will be demonstrated is &#039;&#039;keyboard macros&#039;&#039;.  A keyboard macro stores a sequence of commands so they can be easily repeated later.  These changes will now be performed step-by-step.&lt;br /&gt;
&lt;br /&gt;
Starting with a buffer containing our set of characters:&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
Prepare a register by invoking the `number-to-register&#039; command (&#039;&#039;&#039;C-x r n&#039;&#039;&#039;) then storing the number &#039;0&#039; in register &#039;k&#039;:&lt;br /&gt;
&lt;br /&gt;
 C-x r n k&lt;br /&gt;
&lt;br /&gt;
With point at the beginning of the buffer, start a keyboard macro (&#039;&#039;&#039;C-x (&#039;&#039;&#039;) and begin to format the characters:&lt;br /&gt;
&lt;br /&gt;
 C-x ( C-f M-4 .&lt;br /&gt;
&lt;br /&gt;
Insert (&#039;&#039;&#039;C-x r i&#039;&#039;&#039;) and increment (&#039;&#039;&#039;C-x r +&#039;&#039;&#039;) the register &#039;k&#039;. The prefix argument (&#039;&#039;&#039;C-u&#039;&#039;&#039;) is used to leave point positioned after the inserted text:&lt;br /&gt;
&lt;br /&gt;
 C-u C-x r i k C-x r + k&lt;br /&gt;
&lt;br /&gt;
Complete the formatting by inserting a newline.  Emacs can then repeat that process, beginning from the point where we started defining the keyboard macro, for the rest of the characters.  &#039;&#039;&#039;C-x e&#039;&#039;&#039; completes then invokes the keyboard macro.  The prefix argument, &#039;&#039;&#039;M-0&#039;&#039;&#039;, causes the macro to repeat until it comes across an error.  In this case it aborts once it reaches the end of the buffer.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;RET&amp;gt; M-0 C-x e&lt;br /&gt;
&lt;br /&gt;
The result:&lt;br /&gt;
&lt;br /&gt;
  A....0&lt;br /&gt;
  B....1&lt;br /&gt;
  C....2&lt;br /&gt;
  [...]&lt;br /&gt;
  x....49&lt;br /&gt;
  y....50&lt;br /&gt;
  z....51&lt;br /&gt;
&lt;br /&gt;
If you want to save your macro for later use, you must give it a name and save it to your configuration file:&lt;br /&gt;
 name-last-kbd-macro &lt;br /&gt;
 insert-kbd-macro&lt;br /&gt;
&lt;br /&gt;
All defined macros are stored in the macro ring. To cycle between macros, use&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-n&#039;&#039;&#039;  next macro&lt;br /&gt;
 &#039;&#039;&#039;C-x C-k C-p&#039;&#039;&#039;  previous macro&lt;br /&gt;
&lt;br /&gt;
You can also use registers to save virtually anything.&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r SPC&#039;&#039;&#039; Copy current point (position) to register&lt;br /&gt;
 &#039;&#039;&#039;C-x r w&#039;&#039;&#039;   Copy current window configuration to register.&lt;br /&gt;
 &#039;&#039;&#039;C-x r j&#039;&#039;&#039;   Restore register.&lt;br /&gt;
 &lt;br /&gt;
So if you often work with windows side by side, for different project, you can save the configuration for the different projects and easily switch from one view to the other.&lt;br /&gt;
&lt;br /&gt;
You can list used registers with the &#039;&#039;&#039;list-registers&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== 正規表現 ===&lt;br /&gt;
&lt;br /&gt;
Emacs Manual より: &amp;quot;正規表現 (&#039;&#039;regexp&#039;&#039; と略す) とは、一致する可能性がある一連の (無限個でもよい) 文字列を表現するパターンである&amp;quot;。このセクションでは正規表現自体には深くは立ち入りません (単純に説明しきれない)。そのかわり正規表現のパワーを簡単にデモンストレーションします。詳しい説明は Emacs Manual の [https://www.gnu.org/software/emacs/manual/html_node/elisp/Regular-Expressions.html#Regular-Expressions Regular Expressions] セクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
Given the same scenario presented above: A list of characters which are to be formatted to represent their respective position in the list. (see [[#キーボードマクロとレジスタ|Keyboard macros and registers]]).  Again, starting with a buffer containing.&lt;br /&gt;
&lt;br /&gt;
 ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&lt;br /&gt;
&lt;br /&gt;
At the beginning of the buffer, use &#039;&#039;&#039;C-M-%&#039;&#039;&#039; (if the key-sequence is difficult to perform, it may be more comfortable to use &#039;&#039;&#039;M-x query-replace-regexp&#039;&#039;&#039;).  At the prompt:&lt;br /&gt;
 \(.\)&lt;br /&gt;
which simply matches one character.  Then, when prompted for the replacement:&lt;br /&gt;
 \1....\#^J&lt;br /&gt;
{{Note|&#039;^J&#039; represents where a newline should be placed, it should not be entered into the prompt.  The newline must instead be inserted literally using &#039;&#039;&#039;C-q C-j&#039;&#039;&#039;.}}&lt;br /&gt;
The replacement expression reads: &amp;quot;Insert the matched text between the first set of parentheses (in this case, a single character), followed by 4 periods then insert an automatically incremented number followed by a newline.&lt;br /&gt;
&lt;br /&gt;
Finally, press &#039;&#039;&#039;!&#039;&#039;&#039; to apply this across the entire buffer.  All of the formatting that was performed in the previous section was performed with a single regexp replacement.&lt;br /&gt;
&lt;br /&gt;
=== 矩形選択 ===&lt;br /&gt;
&lt;br /&gt;
先進的なテキストエディタが当然備えているべき強力な機能として、テキストを矩形で選択・編集できるというのがあるでしょう。&lt;br /&gt;
&lt;br /&gt;
Emacs でも矩形選択は可能です。&#039;&#039;&#039;C-SPC&#039;&#039;&#039; で普通にテキストを選択してから、複数の矩形コマンドを使うことができます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r t&#039;&#039;&#039;  Replace rectangle with text.&lt;br /&gt;
 &#039;&#039;&#039;C-x r k&#039;&#039;&#039;  Kill (and save in kill-ring) rectangle.&lt;br /&gt;
 &#039;&#039;&#039;C-x r y&#039;&#039;&#039;  Yank rectangle.&lt;br /&gt;
 &#039;&#039;&#039;C-x r o&#039;&#039;&#039;  Blank out rectangle.&lt;br /&gt;
&lt;br /&gt;
たとえハイライトされていても、上記のコマンドが矩形の外のテキストに影響を与えることはありません。&lt;br /&gt;
&lt;br /&gt;
=== ブックマーク ===&lt;br /&gt;
&lt;br /&gt;
Emacs は開いたファイルのリストを記録できます。&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-x r m&#039;&#039;&#039; カレントバッファをブックマークに追加。&lt;br /&gt;
 &#039;&#039;&#039;C-x r b&#039;&#039;&#039; ブックマークからバッファを開く。&lt;br /&gt;
 &#039;&#039;&#039;C-x r l&#039;&#039;&#039; ブックマークの確認。&lt;br /&gt;
&lt;br /&gt;
=== Elisp インタプリタ ===&lt;br /&gt;
&lt;br /&gt;
Evaluate an elisp expression using &#039;&#039;&#039;eval-last-sexp&#039;&#039;&#039; (&#039;&#039;&#039;C-x C-e&#039;&#039;&#039;). Emacs always spawns a &#039;&#039;&#039;*scratch*&#039;&#039;&#039; buffer when started. It will not be saved to disk, feel free to add any text / code you want. It is especially useful for elisp evaluation. Note that this buffer starts using &#039;&#039;&#039;lisp-interaction-mode&#039;&#039;&#039; by default.&lt;br /&gt;
&lt;br /&gt;
Alternatively, Emacs provides a top-level elisp interpreter with the &#039;&#039;&#039;ielm&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== スマートなウィンドウ切り替え ===&lt;br /&gt;
&lt;br /&gt;
長い間使っていると &#039;&#039;&#039;C-x o&#039;&#039;&#039; による伝統的なウィンドウ切り替えは面倒かもしれません。&#039;&#039;&#039;windmove&#039;&#039;&#039; コマンドはもっと便利にウィンドウを切り替えることができます。{{ic|Shift}} を押しながら方向キーでウィンドウを指定するだけです。&lt;br /&gt;
&lt;br /&gt;
windmove キーを有効にするには、設定ファイルに以下を記述してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(when (fboundp &#039;windmove-default-keybindings)&lt;br /&gt;
  (windmove-default-keybindings))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== シェルコマンドの実行 ===&lt;br /&gt;
&lt;br /&gt;
Use &#039;&#039;&#039;M-!&#039;&#039;&#039; to call an external command. Use a prefix argument (&#039;&#039;&#039;C-u M-!&#039;&#039;&#039;) to output the result to current buffer at point.&lt;br /&gt;
&lt;br /&gt;
You can use &#039;&#039;&#039;M-|&#039;&#039;&#039; on a region to use it as input for a command. For instance&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C-u M-| sort -u RET&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
will sort region, remove duplicates and replace the region with the result.&lt;br /&gt;
&lt;br /&gt;
=== シェルバッファ ===&lt;br /&gt;
&lt;br /&gt;
You can spawn a shell buffer and execute commands just like you would do in any terminal.&lt;br /&gt;
A classic shell buffer can be spawned with the &#039;&#039;&#039;shell&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
Emacs features a very powerful shell entirely written in Emacs Lisp, the &#039;&#039;&#039;eshell&#039;&#039;&#039;. The major advantage over shells like csh or zsh is that the native shell language is elisp itself. So you can use all advanced feature of elisp for your shell functions.&lt;br /&gt;
&lt;br /&gt;
=== 対応する括弧のハイライト ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;show-paren&#039;&#039;&#039; モードを使うことができます。デフォルトでは、対応する括弧が表示されるまで少し遅延がありますが、&#039;&#039;&#039;show-paren-delay&#039;&#039;&#039; を 0 に設定することでなくすことができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(setq show-paren-delay 0)&lt;br /&gt;
(show-paren-mode 1)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== スペルチェック ===&lt;br /&gt;
&lt;br /&gt;
辞書を選択するには:&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-change-dictionary&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To check a single work use &#039;&#039;&#039;M-$&#039;&#039;&#039;.&lt;br /&gt;
You can start checking the whole buffer with&lt;br /&gt;
 &#039;&#039;&#039;M-x ispell-buffer&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You can enable on-the-fly spell checking by enabling the &#039;&#039;&#039;flyspell-mode&#039;&#039;&#039;. For source code files you can restrict the mode to comments by using the  &#039;&#039;&#039;flyspell-prog-mode&#039;&#039;&#039; instead. You will also need the &#039;&#039;aspell&#039;&#039; package for spelling in Emacs. There are corresponding packages for each language, so for English, you&#039;d also want &#039;&#039;aspell-en&#039;&#039; (as well as &#039;&#039;aspell&#039;&#039;).&lt;br /&gt;
&lt;br /&gt;
=== テーブル ===&lt;br /&gt;
&lt;br /&gt;
Emacs comes with some powerful functions to handle and generate tables for various languages. Let&#039;s show an example.&lt;br /&gt;
&lt;br /&gt;
 Fruits  Quantity&lt;br /&gt;
 Apples  5&lt;br /&gt;
 Melons  2&lt;br /&gt;
&lt;br /&gt;
Now select the previous content in a region, and run&lt;br /&gt;
 table-capture&lt;br /&gt;
&lt;br /&gt;
Use two spaces for the column delimiter, and a line break (&#039;&#039;&#039;C-q C-j&#039;&#039;&#039;) for the row delimiter.&lt;br /&gt;
This will lead to the following result.&lt;br /&gt;
&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Fruits|Quantity|&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Apples|5       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
 |Melons|2       |&lt;br /&gt;
 +------+--------+&lt;br /&gt;
&lt;br /&gt;
You can revert back the operation with &lt;br /&gt;
 table-release&lt;br /&gt;
There is a lot of handy &#039;&#039;table-*&#039;&#039; functions, like &#039;&#039;table-insert-row&#039;&#039;, &#039;&#039;table-span-cell&#039;&#039;, &#039;&#039;table-widen-cell&#039;&#039;, etc.&lt;br /&gt;
&lt;br /&gt;
Finally, the ultimate purpose of the &#039;&#039;table&#039;&#039; functions is to convert it to the desired markup language.&lt;br /&gt;
Use the &#039;&#039;table-generate-source&#039;&#039; for that.&lt;br /&gt;
For LaTeX, the previous table would result in&lt;br /&gt;
&lt;br /&gt;
 % This LaTeX table template is generated by emacs 24.2.1&lt;br /&gt;
 \begin{tabular}{|l|l|}&lt;br /&gt;
 \hline&lt;br /&gt;
 Fruits &amp;amp; Quantity \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Apples &amp;amp; 5 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 Melons &amp;amp; 2 \\&lt;br /&gt;
 \hline&lt;br /&gt;
 \end{tabular}&lt;br /&gt;
&lt;br /&gt;
Using the table mode you can also do some spreadsheet work like sum on rows and columns, but you will quickly find it limited. Besides it is quite slow. Have a look at the [[#予定表、スプレッドシート、文章作成|org-mode]] for much more powerful possibilities.&lt;br /&gt;
&lt;br /&gt;
=== 予定表、スプレッドシート、文章作成 ===&lt;br /&gt;
&lt;br /&gt;
Emacs can offer powerful office features thanks to the famous and powerful [http://orgmode.org/ Org mode]. This mode is part of the standard Emacs distribution.&lt;br /&gt;
&lt;br /&gt;
Org mode is originally a powerful TODO and Agenda agent, but has quickly evolved to a much wider set of features.&lt;br /&gt;
There is simply too much to tell about Org that we cannot aford even to skim over all the features. So we will only whet your appetite with a few exemples.&lt;br /&gt;
&lt;br /&gt;
Open a new file TODO.org file, Org mode should be loaded. If not, switch to it with &#039;&#039;&#039;M-x org-mode&#039;&#039;&#039;.&lt;br /&gt;
{{hc|TODO.org|&lt;br /&gt;
* First entry&lt;br /&gt;
** Subentry&lt;br /&gt;
   Some comments&lt;br /&gt;
*** Subsubentry&lt;br /&gt;
* Second entry&lt;br /&gt;
  - List item 1&lt;br /&gt;
  - List item 2&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Now a few useful bindings.&lt;br /&gt;
* &#039;&#039;&#039;TAB&#039;&#039;&#039; to cycle-fold current entry.&lt;br /&gt;
* &#039;&#039;&#039;S-TAB&#039;&#039;&#039; to cycle-fold all entries.&lt;br /&gt;
* &#039;&#039;&#039;M-RET&#039;&#039;&#039; to start a new item on the same level as the current one.&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;left&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;M-&amp;lt;right&amp;gt;&#039;&#039;&#039; to change level.&lt;br /&gt;
* &#039;&#039;&#039;M-&amp;lt;up&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;M-&amp;lt;down&amp;gt;&#039;&#039;&#039; to move item together with all its subsections.&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;left&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;S-&amp;lt;right&amp;gt;&#039;&#039;&#039; to change status. On list items it will change the item style.&lt;br /&gt;
* &#039;&#039;&#039;S-&amp;lt;up&amp;gt;&#039;&#039;&#039; and &#039;&#039;&#039;S-&amp;lt;down&amp;gt;&#039;&#039;&#039; to change priority.&lt;br /&gt;
* &#039;&#039;&#039;C-c ^&#039;&#039;&#039; to sort all subentries of the current entry.&lt;br /&gt;
* &#039;&#039;&#039;C-c .&#039;&#039;&#039; to add a timestamp to the current entry. Use {{ic|Shift}} and arrows to skip days or weeks. Use the mouse on the calendar or press {{ic|Enter}} on a specific day to choose it.&lt;br /&gt;
&lt;br /&gt;
The spreadsheet features are very comprehensive. Let&#039;s give an excerpt from the manual:&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
    Finally, just to whet your appetite for what can be done with the&lt;br /&gt;
 fantastic `calc.el&#039; package, here is a table that computes the Taylor&lt;br /&gt;
 series of degree `n&#039; at location `x&#039; for a couple of functions.&lt;br /&gt;
&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     |   | Func        | n | x   | Result                               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     | # | exp(x)      | 1 | x   | 1 + x                                |&lt;br /&gt;
     | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |&lt;br /&gt;
     | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |&lt;br /&gt;
     | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |&lt;br /&gt;
     | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |&lt;br /&gt;
     |---+-------------+---+-----+--------------------------------------|&lt;br /&gt;
     #+TBLFM: $5=taylor($2,$4,$3);n3&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
Org mode recognizes a table when the pipe &#039;&#039;&#039;|&#039;&#039;&#039; is the first non-whitespace character on line. In the previous text, no line was drawn. This is done automatically when &#039;&#039;&#039;TAB&#039;&#039;&#039; is pressed after an entry or the &#039;&#039;&#039;|-&#039;&#039;&#039; sequence. The result column was not written by hand neither, it is computed from the calc formula on the last line. Use &#039;&#039;&#039;C-u C-c C-c&#039;&#039;&#039; to recompute all values in a table.&lt;br /&gt;
&lt;br /&gt;
There is also some handy row and column manipulation bindings like those for the TODO file. {{ic|Alt}} plus arrows will move columns and arrows.&lt;br /&gt;
&lt;br /&gt;
For more in-depth details, refer to the official manual: &#039;&#039;&#039;C-h i m Org mode RET&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== リファクタリングとスマート補完 ===&lt;br /&gt;
&lt;br /&gt;
(Eclipse などの) IDE が大抵備えているプログラミング機能が必要な場合、[http://cedet.sourceforge.net/semantic.shtml Semantic] ツールが役に立ちます。Semantic は Emacs の標準ディストリビューションに含まれています。現在 C, C++, Scheme, Javascript, Java, HTML, Make がサポートされています。現在のサポート状況は [http://cedet.sourceforge.net/languagesupport.shtml CEDET のページ] で確認できます。&lt;br /&gt;
&lt;br /&gt;
Open a file in your favorite programming language supported by Semantic and turn on the Semantic minor mode with&lt;br /&gt;
 M-x semantic-mode&lt;br /&gt;
Semantic will work for a few seconds parsing the libraries included from your file (in C that would mostly be the standard library for instance).&lt;br /&gt;
&lt;br /&gt;
==== 機能 ====&lt;br /&gt;
&lt;br /&gt;
Once done, you can start using the great Semantic features:&lt;br /&gt;
;Smart completion&lt;br /&gt;
Press &#039;&#039;&#039;C-c , SPC&#039;&#039;&#039; to complete a symbol at point. If it is an argument, it will check for type correctness.&lt;br /&gt;
&lt;br /&gt;
;Jump to symbol&lt;br /&gt;
Press &#039;&#039;&#039;C-c , j&#039;&#039;&#039; to prompt for a symbol and jump to its definition. You can use auto-completion with &#039;&#039;&#039;TAB&#039;&#039;&#039;. Use a capital &#039;&#039;&#039;J&#039;&#039;&#039; to search for symbol accross files.&lt;br /&gt;
&lt;br /&gt;
;List symbol calls&lt;br /&gt;
Press &#039;&#039;&#039;C-c , g&#039;&#039;&#039; to prompt for a symbol and list the places where it is being referred to. You can use &#039;&#039;&#039;n&#039;&#039;&#039; and &#039;&#039;&#039;p&#039;&#039;&#039; to navigate through the resulting entries. Press &#039;&#039;&#039;RET&#039;&#039;&#039; to toggle details, and &#039;&#039;&#039;RET&#039;&#039;&#039; again on a reference to jump to it. Use a capital &#039;&#039;&#039;G&#039;&#039;&#039; in the first command to work across files.&lt;br /&gt;
&lt;br /&gt;
;Refactoring&lt;br /&gt;
First list use of the symbol you want to refactor with the aforementioned command. Now press &#039;&#039;&#039;(&#039;&#039;&#039; to start defining a macro on the symbol. This is actually much more powerful than refactoring since you can apply any function to the symbol and even act on its surrounding symbols. Press &#039;&#039;&#039;C-x )&#039;&#039;&#039; to finish the macro and &#039;&#039;&#039;E&#039;&#039;&#039; to call it.&lt;br /&gt;
&lt;br /&gt;
;Describe symbol&lt;br /&gt;
Call the following function to display details on a symbol.&lt;br /&gt;
 semantic-ia-show-summary&lt;br /&gt;
This can be very useful for complexe data structures and function prototypes. There is no binding by default.&lt;br /&gt;
&lt;br /&gt;
==== 設定 ====&lt;br /&gt;
&lt;br /&gt;
Here follows a sample configuration for use of Semantic with all supported programming languages: an example binding and a display configuration.&lt;br /&gt;
 ;; Semantic with ghost display (allows M-n and M-p to browse completion).&lt;br /&gt;
 (semantic-mode 1)&lt;br /&gt;
 (define-key my-keys-minor-mode-map (kbd &amp;quot;C-c , d&amp;quot;) &#039;semantic-ia-show-summary)&lt;br /&gt;
 (setq semantic-complete-inline-analyzer-displayor-class &#039;semantic-displayor-ghost)&lt;br /&gt;
&lt;br /&gt;
You can also add some specialization for a specific language. Here for C:&lt;br /&gt;
 (add-hook&lt;br /&gt;
  &#039;c-mode-hook&lt;br /&gt;
  (lambda ()&lt;br /&gt;
    (local-set-key (kbd &amp;quot;M-TAB&amp;quot;) &#039;semantic-complete-analyze-inline)&lt;br /&gt;
    (local-set-key &amp;quot;.&amp;quot; &#039;semantic-complete-self-insert)&lt;br /&gt;
    (local-set-key &amp;quot;&amp;gt;&amp;quot; &#039;semantic-complete-self-insert)))&lt;br /&gt;
&lt;br /&gt;
==== 文献 ====&lt;br /&gt;
&lt;br /&gt;
Emacs から直接 info マニュアルにアクセスすることが可能です: &#039;&#039;&#039;C-h i m Semantic RET&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
=== Emacs を git のマージツールとして使う ===&lt;br /&gt;
&lt;br /&gt;
By default, Git provides support for using Emacs&#039; Emerge mode as a merge tool. However you may prefer the Ediff mode. Unfortunately this mode is not supported by git for technical reasons. There is still a way to use it by evaluating some elisp code upon emacs call.&lt;br /&gt;
&lt;br /&gt;
{{hc|.gitconfig|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[mergetool.ediff]&lt;br /&gt;
    cmd = emacs --eval \&amp;quot; (progn (defun ediff-write-merge-buffer () (let ((file ediff-merge-store-file)) (set-buffer ediff-buffer-C) (write-region (point-min) (point-max) file) (message \\\&amp;quot;Merge buffer saved in: %s\\\&amp;quot; file) (set-buffer-modified-p nil) (sit-for 1))) (setq ediff-quit-hook &#039;kill-emacs ediff-quit-merge-hook &#039;ediff-write-merge-buffer) (ediff-merge-files-with-ancestor \\\&amp;quot;$LOCAL\\\&amp;quot; \\\&amp;quot;$REMOTE\\\&amp;quot; \\\&amp;quot;$BASE\\\&amp;quot; nil \\\&amp;quot;$MERGED\\\&amp;quot;))\&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[merge]&lt;br /&gt;
	tool = ediff&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
Note that the command has to be on a single line.&lt;br /&gt;
In the above example, we launch a new instance of Emacs. You might want to use emacsclient for quicker startup; it is not recommended though since the Ediff call is not really clean: it could mess with your current Emacs session.&lt;br /&gt;
&lt;br /&gt;
If you want an instant startup you can use the &#039;&#039;&#039;-q&#039;&#039;&#039; parameter. If you want to launch Emacs quickly while preserving at least a part of your configuration, you can call Emacs with&lt;br /&gt;
  emacs -q -l ~/.emacs-light&lt;br /&gt;
where the light configuration file loads only what you need for Ediff.&lt;br /&gt;
&lt;br /&gt;
See [http://kerneltrap.org/mailarchive/git/2007/7/1/250424 kerneltrap.org] and [https://stackoverflow.com/questions/1817370/using-ediff-as-git-mergetool stackoverflow] for more details on this trick and the Ediff issue.&lt;br /&gt;
&lt;br /&gt;
=== Caps Lock キーを Control キーとして使う ===&lt;br /&gt;
いわゆる &#039;emacs 小指&#039; にならないようにこちらの挙動を好むユーザーもいます。X で試用してみたいときは、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:nocaps&#039;&lt;br /&gt;
&lt;br /&gt;
また、キーを&#039;&#039;&#039;交換&#039;&#039;&#039;するには、次を実行:&lt;br /&gt;
 $ setxkbmap -option &#039;ctrl:swapcaps&#039;&lt;br /&gt;
&lt;br /&gt;
永続的に設定したくなったら、{{ic|.xinitrc}} ファイルに上のコマンドを追加してください。&lt;br /&gt;
&lt;br /&gt;
リージョンを小文字から大文字にする必要がある場合は、デフォルトの {{ic|C-x C-u}} キーバインディングを使って下さい、{{ic|upcase-region}} 関数が呼び出されます。&lt;br /&gt;
&lt;br /&gt;
Caps Lock がない場合は、両方の &amp;quot;Shift&amp;quot; にマッピングしてください:&lt;br /&gt;
 $ setxkbmap -option &amp;quot;shift:both_capslock&amp;quot;&lt;br /&gt;
&lt;br /&gt;
一部のデスクトップ環境にはキーボードのマッピングを変更するためのグラフィカルなツールが含まれています。例えば [[Plasma|Plasma 5]] ならシステム設定を開いて入力デバイスをクリックしてください。キーボードを選択して高度な設定タブから Caps Lock を Ctrl として使用するように設定できます。&lt;br /&gt;
&lt;br /&gt;
== カスタマイズ ==&lt;br /&gt;
&lt;br /&gt;
Emacs は {{ic|~/.emacs}} を編集するか &#039;&#039;&#039;M-x customize&#039;&#039;&#039; を使うことで設定をすることができます。このセクションでは手動で {{ic|~/.emacs}} を編集する方に焦点をあて、いくつかのカスタマイズ例を示すことで、一般的な Emacs の設定をデモンストレーションします。customize コマンドは調整を行うためのシンプルなインターフェイスを提供しますが、おそらく Emacs に慣れてくるにつれて制約を感じるようになるでしょう。&lt;br /&gt;
&lt;br /&gt;
All of the examples here can be performed while Emacs is running.  To evaluate the expression within Emacs, use:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-M-x&#039;&#039;&#039; with point anywhere within the expression.&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;C-x C-e&#039;&#039;&#039; with point following the last &#039;)&#039;&lt;br /&gt;
&lt;br /&gt;
For some users, typing &#039;yes&#039; and &#039;no&#039; in prompts can quickly become tiring.  To instead use the &#039;y&#039; and &#039;n&#039; keys at these prompts:&lt;br /&gt;
&lt;br /&gt;
 (defalias &#039;yes-or-no-p &#039;y-or-n-p)&lt;br /&gt;
&lt;br /&gt;
カーソルの点滅を止めるには、次を使用:&lt;br /&gt;
&lt;br /&gt;
 (blink-cursor-mode -1)&lt;br /&gt;
&lt;br /&gt;
同じく、前のセクションにある column-number-mode を有効にするには:&lt;br /&gt;
&lt;br /&gt;
 (column-number-mode 1)&lt;br /&gt;
&lt;br /&gt;
The similarities between the previous two commands are not a coincidence: blink-cursor-mode and column-number-mode are both minor-modes.  As a rule, minor-modes can be enabled given positive argument or disabled with a negative argument.  Should the argument be omitted, the minor-mode will be toggled on/off.&lt;br /&gt;
&lt;br /&gt;
Here are some more examples of minor-modes.  The following will disable the scroll bars, menu-bar and tool-bar, respectively.&lt;br /&gt;
&lt;br /&gt;
 (scroll-bar-mode -1)&lt;br /&gt;
 (menu-bar-mode -1)&lt;br /&gt;
 (tool-bar-mode -1)&lt;br /&gt;
&lt;br /&gt;
The variable, &#039;auto-mode-alist&#039;, can be modified to change the major-mode used by default for certain file names.  The following example will make the default major-mode for &#039;.tut&#039; and &#039;.req&#039; files &#039;text-mode&#039;.&lt;br /&gt;
&lt;br /&gt;
 (setq auto-mode-alist&lt;br /&gt;
   (append&lt;br /&gt;
     &#039;((&amp;quot;\\.tut$&amp;quot; . text-mode)&lt;br /&gt;
       (&amp;quot;\\.req$&amp;quot; . text-mode))&lt;br /&gt;
     auto-mode-alist))&lt;br /&gt;
&lt;br /&gt;
Settings can also be applied on a per-mode basis.  A common method for this is to add a function to a &#039;&#039;hook&#039;&#039;. For example, to force indentation to use spaces instead of tabs, but only in text-mode:&lt;br /&gt;
&lt;br /&gt;
 (add-hook &#039;text-mode-hook (lambda () (setq indent-tabs-mode nil)))&lt;br /&gt;
&lt;br /&gt;
Similarly, to only use spaces for indentation everywhere:&lt;br /&gt;
&lt;br /&gt;
 (setq-default indent-tabs-mode nil)&lt;br /&gt;
&lt;br /&gt;
Keybindings can be adjusted in two ways.  The first of which is &#039;define-key&#039;.  &#039;define-key&#039; creates a keybinding for a command but only in one mode.  The example below will make &#039;&#039;&#039;F8&#039;&#039;&#039; delete any whitespace from the end of each line of a &#039;text-mode&#039; buffer:&lt;br /&gt;
&lt;br /&gt;
 (define-key text-mode-map (kbd &amp;quot;&amp;lt;f8&amp;gt;&amp;quot;) &#039;delete-trailing-whitespace)&lt;br /&gt;
&lt;br /&gt;
The other method is &#039;global-set-key&#039;.  This is used to bind a key to a command everywhere.  To bind &#039;query-replace-regexp&#039; (&#039;&#039;&#039;C-M-%&#039;&#039;&#039;) to &#039;&amp;lt;f7&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
&lt;br /&gt;
Binding a command to an alternate key does not replace any existing bindings.  Which is to say, &#039;query-replace-regexp&#039; would be bound to both &#039;&#039;&#039;F7&#039;&#039;&#039; and &#039;&#039;&#039;C-M-%&#039;&#039;&#039; after the above example.&lt;br /&gt;
&lt;br /&gt;
Almost anything within Emacs can be configured.  Browsing through the [http://emacswiki.org/ Emacs Wiki] should give a solid place to start.&lt;br /&gt;
&lt;br /&gt;
=== マルチ設定 ===&lt;br /&gt;
&lt;br /&gt;
複数の設定を使い、Emacs にどれか一つをロードさせることができます。&lt;br /&gt;
&lt;br /&gt;
例えば、2つの設定ファイルを定義してみましょう。&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/plugins&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
This is the full configuration  we load for the daemon. But the &#039;&#039;plugins&#039;&#039; file is huge and slow to load. If we want to spawn a new Emacs instance that does not need the &#039;&#039;plugins&#039;&#039; features, it can be cumbersome to load it everytime in the long run.&lt;br /&gt;
&lt;br /&gt;
{{hc|.emacs-light|&lt;br /&gt;
(load &amp;quot;~/.emacs.d/main&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/functions&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/modes&amp;quot; nil t)&lt;br /&gt;
(load &amp;quot;~/.emacs.d/theme&amp;quot; nil t)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
And now we launch Emacs with&lt;br /&gt;
 emacs -q -l ~/.emacs-light&lt;br /&gt;
You can create an alias to ease the call.&lt;br /&gt;
&lt;br /&gt;
=== ローカル・カスタム変数 ===&lt;br /&gt;
&lt;br /&gt;
You can define variables in your configuration file that can be later one modified locally for a file.&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Now in any file you can define local variables in two ways, see [https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html the manual for complete details ]&lt;br /&gt;
&lt;br /&gt;
* Using {{ic| M-x add-file-local-variable-prop-line}}, which adds a commented line at the beginning similar to:&lt;br /&gt;
 // -*- my-compiler:g++; mode:c++ -*-&lt;br /&gt;
* Or you can use {{ic| M-x add-file-local-variable}} to add lines near the end of the file:&lt;br /&gt;
 // Local Variables:&lt;br /&gt;
 // my-compiler: g++&lt;br /&gt;
 // mode: c++&lt;br /&gt;
 // End:&lt;br /&gt;
&lt;br /&gt;
Note that for the values to take effect, you will need to call {{ic|M-x revert-buffer}}.&lt;br /&gt;
&lt;br /&gt;
Custom variables are considered unsafe by default. If you try to open a file that contains local variable redefining custom variables, Emacs will ask you for confirmation.&lt;br /&gt;
&lt;br /&gt;
You can declare the variable as secure, thus removing the Emacs prompt for confirmation. You need to specify a predicate that any new value has to verify so that it can be considered safe.&lt;br /&gt;
&lt;br /&gt;
 (defcustom my-compiler &amp;quot;gcc&amp;quot; &amp;quot;Some documentation&amp;quot; :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
In the previous example, if you attempt to set anything else than a string, Emacs will consider it insecure.&lt;br /&gt;
&lt;br /&gt;
=== カスタムカラーとテーマ ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;face&#039;&#039; を使うことで簡単に色をカスタマイズすることができます:&lt;br /&gt;
 (set-face-background  &#039;region                 &amp;quot;color-17&amp;quot;)&lt;br /&gt;
 (set-face-foreground  &#039;region                 &amp;quot;white&amp;quot;)&lt;br /&gt;
 (set-face-bold-p      &#039;font-lock-builtin-face t ) &lt;br /&gt;
&lt;br /&gt;
You can have let Emacs tell you the name of the face where the point is. Use the &#039;&#039;customize-face&#039;&#039; function for that. The facility will show you how to set colors, bold, underline, etc.&lt;br /&gt;
&lt;br /&gt;
Emacs in console can handle 256 colors, but you will have to use an appropriate terminal for that. For instance URxvt has support for 256 colors. You can use the &#039;&#039;list-colors-display&#039;&#039; for a comprehensive list of supported colors. This is highly terminal-dependent.&lt;br /&gt;
&lt;br /&gt;
=== SyncTeX サポート ===&lt;br /&gt;
&lt;br /&gt;
Emacs は強力な LaTeX エディタです。LaTeX モードを必要に応じて自由に編集・作成することができます。&lt;br /&gt;
&lt;br /&gt;
Still, there might be some challenges, like SyncTeX support. First you need to make sure your TeX distribution has it. If you installed TeX Live manually, you may need to install the &#039;&#039;synctex&#039;&#039; package.&lt;br /&gt;
 # umask 022 &amp;amp;&amp;amp; tlmgr install synctex&lt;br /&gt;
&lt;br /&gt;
SyncTeX support is viewer-dependent. Here we will use Zathura as an example, so the code needs to be adapted if you want to use another PDF viewer.&lt;br /&gt;
&lt;br /&gt;
 (defcustom tex-my-viewer &amp;quot;zathura --fork -s -x \&amp;quot;emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;%{input}\&amp;quot;&#039;\&amp;quot;&#039;\&amp;quot;)) (goto-line %{line}))&#039;\&amp;quot;&amp;quot; &lt;br /&gt;
   &amp;quot;PDF Viewer for TeX documents. You may want to fork the viewer&lt;br /&gt;
 so that it detects when the same document is launched twice, and&lt;br /&gt;
 persists when Emacs gets closed.&lt;br /&gt;
 &lt;br /&gt;
 Simple command:&lt;br /&gt;
 &lt;br /&gt;
   zathura --fork&lt;br /&gt;
 &lt;br /&gt;
 We can use&lt;br /&gt;
 &lt;br /&gt;
   emacsclient --eval &#039;(progn (switch-to-buffer  (file-name-nondirectory \&amp;quot;%{input}\&amp;quot;)) (goto-line %{line}))&#039;&lt;br /&gt;
 &lt;br /&gt;
 to reverse-search a pdf using SyncTeX. Note that the quotes and double-quotes matter and must be escaped appropriately.&amp;quot;&lt;br /&gt;
 :safe &#039;stringp)&lt;br /&gt;
&lt;br /&gt;
Here we define our custom variable. If you are using AucTeX or Emacs default LaTeX-mode, you will have to set the viewer accordingly.&lt;br /&gt;
&lt;br /&gt;
Now open a LaTeX source file with Emacs, compile the document, and launch the viewer. Zathura will spawn. If you press {{ic|Ctrl+Left click}} Emacs should place the point at the corresponding position.&lt;br /&gt;
&lt;br /&gt;
=== Systemd ファイルのシンタックスハイライト ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/holomorph/systemd-mode systemd-mode] を使うことができます。&lt;br /&gt;
&lt;br /&gt;
もしくは init ファイルに以下を追加することで、簡単に emacs で systemd のファイル (サービスやタイマーなど) をカラー表示できます:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.service\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.timer\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.target\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.mount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.automount\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.slice\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.socket\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.path\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.netdev\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.network\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
  (add-to-list &#039;auto-mode-alist &#039;(&amp;quot;\\.link\\&#039;&amp;quot; . conf-unix-mode))&lt;br /&gt;
&lt;br /&gt;
=== emacs-nox のクリップボードサポート ===&lt;br /&gt;
&lt;br /&gt;
emacs-nox で [[Xorg]] クリップボードを使うには、{{Pkg|xclip}} を[[インストール]]して以下の関数を {{ic|~/.emacs}} に追加してください [https://lists.gnu.org/archive/html/help-gnu-emacs/2014-08/msg00189.html]:&lt;br /&gt;
&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; use xclip to copy/paste in emacs-nox&lt;br /&gt;
(unless window-system&lt;br /&gt;
  (when (getenv &amp;quot;DISPLAY&amp;quot;)&lt;br /&gt;
    (defun xclip-cut-function (text &amp;amp;optional push)&lt;br /&gt;
      (with-temp-buffer&lt;br /&gt;
	(insert text)&lt;br /&gt;
	(call-process-region (point-min) (point-max) &amp;quot;xclip&amp;quot; nil 0 nil &amp;quot;-i&amp;quot; &amp;quot;-selection&amp;quot; &amp;quot;clipboard&amp;quot;)))&lt;br /&gt;
    (defun xclip-paste-function()&lt;br /&gt;
      (let ((xclip-output (shell-command-to-string &amp;quot;xclip -o -selection clipboard&amp;quot;)))&lt;br /&gt;
	(unless (string= (car kill-ring) xclip-output)&lt;br /&gt;
	  xclip-output )))&lt;br /&gt;
    (setq interprogram-cut-function &#039;xclip-cut-function)&lt;br /&gt;
    (setq interprogram-paste-function &#039;xclip-paste-function)&lt;br /&gt;
    ))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|以下を追加することでターミナルマウスサポートも有効にできます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
;; xterm mouse support&lt;br /&gt;
(require &#039;mouse)&lt;br /&gt;
(xterm-mouse-mode t)&lt;br /&gt;
}}&lt;br /&gt;
[http://www.opensource.apple.com/source/emacs/emacs-51/emacs/lisp/mwheel.el mwheel.el] を参照。}}&lt;br /&gt;
&lt;br /&gt;
== パッケージ ==&lt;br /&gt;
&lt;br /&gt;
Emacs の機能はサードパーティ製のパッケージで拡張できます。公式にサポートされているパッケージマネージャとして {{ic|package.el}} が組み込まれていますが、Emacs のコミュニティメンバーによって書かれたパッケージマネージャが他にも存在します。{{ic|package.el}} は {{ic|package-archives}} 変数を使ってパッケージを検索します。デフォルトでは [https://elpa.gnu.org/ Emacs Lisp Package Archive (ELPA)] が含まれています。{{ic|M-x list-packages}} で Emacs が認識している全てのパッケージが列挙されたバッファが作成されます。マニュアル ({{ic|[https://www.gnu.org/software/emacs/manual/html_node/emacs/Packages.html (info &amp;quot;(emacs) Packages&amp;quot;)]}}) にはさらに詳しい情報が載っています。&lt;br /&gt;
&lt;br /&gt;
サードパーティ製のパッケージのアーカイブを追加することもできます。[https://melpa.org/ MELPA] が広く使われています。&lt;br /&gt;
&lt;br /&gt;
人気の拡張の多くは {{ic|[community]}} リポジトリのパッケージや [[AUR]] からインストールできます。大抵の場合、パッケージの名前の前に &#039;emacs-&#039; が付きますが (例: {{Pkg|emacs-lua-mode}})、常にそうなっているわけではありません (例: {{AUR|auctex}})。&lt;br /&gt;
&lt;br /&gt;
{{Tip|Arch Linux の Wiki を編集している場合は [[Emacs Mediawiki]] パッケージが役に立ちます。}}&lt;br /&gt;
&lt;br /&gt;
パッケージによっては設定ファイルに変更を加えないと機能が有効にならない場合があります。例えば、{{AUR|auctex}} をインストールしたときは、設定ファイルに以下を追加:&lt;br /&gt;
&lt;br /&gt;
{{bc|&lt;br /&gt;
(load &amp;quot;auctex.el&amp;quot; nil t t)&lt;br /&gt;
(load &amp;quot;preview-latex.el&amp;quot; nil t t)}}&lt;br /&gt;
&lt;br /&gt;
パッケージのソースコードや README で有効化する方法が書かれているはずです。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Emacs が &#039;Undefined color: &amp;quot;WINDOW_FOREGROUND&amp;quot;&#039; というエラーメッセージで起動しない ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mcpp}} パッケージまたは {{Pkg|gcc}} パッケージをインストールする必要があります。&#039;&#039;xrdb&#039;&#039; は [[X resources]] を前処理するために C のプリプロセッサ &#039;&#039;cpp&#039;&#039; を使用します。C のプリプロセッサがインストールされていない場合、&#039;&#039;xrdb&#039;&#039; は C のプリプロセッサを実行しないため WINDOW_FOREGROUND が16進数のカラーコードに展開されません。&lt;br /&gt;
&lt;br /&gt;
=== カラー出力の問題 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、Emacs シェルはカラー表示に使われるエスケープシーケンスをそのまま表示してしまいます。つまり、カラー出力がされるべきところに変な記号が表示されます。&lt;br /&gt;
&lt;br /&gt;
この問題を解決するには以下を {{ic|~/.emacs}} に記述してください:&lt;br /&gt;
 (add-hook &#039;shell-mode-hook &#039;ansi-color-for-comint-mode-on)&lt;br /&gt;
&lt;br /&gt;
=== X ウィンドウでの文字の表示問題 ===&lt;br /&gt;
&lt;br /&gt;
X ウィンドウで emacs を起動した時にメインウィンドウの文字が全て黒縁の白四角になってしまう場合 (対応するフォントがインストールされていない文字を表示したときと同じような記号)、{{Pkg|xorg-fonts-75dpi}} や {{Pkg|xorg-fonts-100dpi}} をインストールして X ウィンドウを再起動してください。&lt;br /&gt;
&lt;br /&gt;
=== 起動が遅い ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#systemd ユニットとして|systemd ユニットとして]] Emacs を起動する方法でも起動時間を短縮できます。}}&lt;br /&gt;
&lt;br /&gt;
しばしば起動時間が遅くなる原因は2つあります。&lt;br /&gt;
&lt;br /&gt;
どちらが原因なのか調べるために、次のコマンドで Emacs を実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ emacs -q&lt;br /&gt;
&lt;br /&gt;
このコマンドでも Emacs の起動が遅い場合、[[#不適切なネットワーク設定|不適切なネットワーク設定]]を参照してください。そうでない場合は、ほぼ確実に .emacs に問題があります。&lt;br /&gt;
&lt;br /&gt;
* {{ic|/etc/hosts}} の設定が間違っていると、Emacs の起動が5秒以上遅くなることになります。詳しくはネットワーク設定ガイドの &#039;[[ネットワーク設定#ホストネームの設定|ホストネームの設定]]&#039; を見てください。&lt;br /&gt;
&lt;br /&gt;
* A simple way to search for the cause is to comment-out (i.e., prefix lines with &#039;;&#039;) suspect sections of your {{ic|~/.emacs}} (or {{ic|~/.emacs.d/init.el}}) then start Emacs again to see if there&#039;s any change.  Keep in mind use of &amp;quot;require&amp;quot; and &amp;quot;load&amp;quot; can slow the startup down, especially when used with larger extensions.  They should, as a rule, only be used when their target is either: needed once Emacs starts or provides little more than &amp;quot;autoloads&amp;quot; for an extension.  Otherwise, use the &#039;autoload function directly.  For example, instead of:&lt;br /&gt;
&lt;br /&gt;
 (require &#039;anything)&lt;br /&gt;
&lt;br /&gt;
you might use:&lt;br /&gt;
&lt;br /&gt;
 (autoload &#039;anything &amp;quot;anything&amp;quot; &amp;quot;Select anything&amp;quot; t)&lt;br /&gt;
&lt;br /&gt;
=== Cannot open load file: ... ===&lt;br /&gt;
&lt;br /&gt;
The most common cause of this error is the &#039;load-path&#039; variable not including the path to the directory within which the extension is located.  To solve this, add the appropriate path to the list to be searched prior to attempting to load the extension:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/path/to/directory/&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
When attempting to use packages for extensions and Emacs has been configured with a prefix other than &#039;/usr&#039;, the load-path will need to be updated.  Place the following in {{ic|~/.emacs}} prior to the instructions provided by the package:&lt;br /&gt;
&lt;br /&gt;
  (add-to-list &#039;load-path &amp;quot;/usr/share/emacs/site-lisp&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
If compiling Emacs by hand, keep in mind that the default prefix is &#039;/usr/local&#039;.&lt;br /&gt;
&lt;br /&gt;
=== デッドアクセントキーの問題: &#039;&amp;lt;dead-acute&amp;gt; is undefined&#039; ===&lt;br /&gt;
&lt;br /&gt;
このバグについて Google で検索すると、次のリンクが見つかります:&lt;br /&gt;
https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00167.html&lt;br /&gt;
&lt;br /&gt;
Explaining the problem: in recent versions of&lt;br /&gt;
b72&lt;br /&gt;
 Emacs, the normal way to use accent keys doesn&#039;t work as expected. Trying to accent a word like &#039;fiancé&#039; will produce the message above.&lt;br /&gt;
&lt;br /&gt;
A way to solve it is just put the line above on your startup file, {{ic|~/.emacs}}:&lt;br /&gt;
&lt;br /&gt;
   (require &#039;iso-transl)&lt;br /&gt;
&lt;br /&gt;
And no, it isn&#039;t a bug, but a feature of new Emacs versions. Reading the subsequent messages about it on the mail list, we found it (https://lists.gnu.org/archive/html/help-gnu-emacs/2009-05/msg00179.html):&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;It seems that nothing is loaded automatically because there is a choice betwee iso-transl and iso-acc. Both seem to provide an input method with C-x 8 or Alt-&amp;lt;accent&amp;gt; prefix, but what you and I are doing is just pressing a dead key (^, ´, `, ~, ¨) for the accent and then another key to &amp;quot;compose&amp;quot; the accented character. And there is no Alt key used in this! And according to documentation it seems be appropriate for 8-bit encodings, so it should be pretty useless in UTF-8. I reported this bug when it was introduced, but the bug seems to be classified as a feature ... Maybe it&#039;s just because the file is auto-loaded though pretty useless. &#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== C-M-% やその他のバインディングが emacs nox で動作しない ===&lt;br /&gt;
&lt;br /&gt;
これはターミナルが Xorg よりも制限的であることが原因です。ただし、ターミナルによっては多くのバインディングを扱うことができることがあります。2つの解決法が考えられます:&lt;br /&gt;
* グラフィカルバージョンを使用する。&lt;br /&gt;
* サポートされているバインディングに変更する。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
{{hc|.emacs|&lt;br /&gt;
(global-set-key (kbd &amp;quot;C-M-y&amp;quot;) &#039;query-replace-regexp)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Emacs がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
シングルスレッドであるがゆえに、Emacs は様々な操作でブロックします。フリーズが発生する状況は様々です。例えば、Emacs はあなたからの入力を待っているのかもしれません (例えばあるフレームでミニバッファを開いているのに他のフレームで作業しようとしている場合など)。あるいは、Emacs は完了するまで時間のかかるコードを実行中なのかもしれません。あるいはバグを踏んだという可能性もあります。Emacs プロセスを殺さずに Emacs のブロックを解除する方法は複数存在します。&lt;br /&gt;
&lt;br /&gt;
* {{ic|C-g}} を押してみる。Emacs が行っていることによっては、複数回押す必要があります。&lt;br /&gt;
* {{ic|ESC ESC ESC}} を押してみる。&lt;br /&gt;
* 他のターミナルで {{ic|killall -SIGUSR2 emacs}} を実行する。&lt;br /&gt;
&lt;br /&gt;
=== Emacs-nox の出力が汚い ===&lt;br /&gt;
&lt;br /&gt;
When working in a terminal, the color, indentation, or anything related to the output might become crazy. This is (probably?) because Emacs was sent a special character at some point which may conflict with the current terminal.&lt;br /&gt;
If this happens you can do {{ic|M-x redraw-display}}, which will redraw the terminal&#039;s display. If this problem happens frequently, you might want to bind the command to a key, e.g. by putting something like&lt;br /&gt;
 (global-set-key (kbd &amp;quot;&amp;lt;f7&amp;gt;&amp;quot;) &#039;redraw-display)&lt;br /&gt;
in your .emacs file.&lt;br /&gt;
&lt;br /&gt;
Graphical Emacs does not suffer from this issue.&lt;br /&gt;
&lt;br /&gt;
=== emacs ターミナルにおかしなエスケープ数字 (utf-8) が表示される ===&lt;br /&gt;
&lt;br /&gt;
{{ic|.bashrc}} または {{ic|.zshrc}} で以下の変数をエクスポートしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.bashrc|2=&lt;br /&gt;
export LANG=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export LC_ALL=&amp;quot;en_US.UTF-8&amp;quot;&lt;br /&gt;
export TERM=xterm-256color&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
小文字の utf を使っていることがエラーの原因です (例: en_US.utf-8)。&lt;br /&gt;
&lt;br /&gt;
利用可能なロケールは {{ic|locale -a}} で確認できます。&lt;br /&gt;
&lt;br /&gt;
=== tmux で emacs を使っているときに Shift + 矢印キーが動作しない ===&lt;br /&gt;
&lt;br /&gt;
まず [[tmux]] の設定で xterm-keys を有効にしてください:&lt;br /&gt;
{{hc|.tmux.conf|&lt;br /&gt;
setw -g xterm-keys on&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
しかしながら、この設定は他のキーコンビネーションを破壊します。それを修正するために、以下を emacs の設定に記述します:&lt;br /&gt;
{{hc|~/.emacs|&lt;br /&gt;
(defadvice terminal-init-screen&lt;br /&gt;
  ;; The advice is named `tmux&#039;, and is run before `terminal-init-screen&#039; runs.&lt;br /&gt;
  (before tmux activate)&lt;br /&gt;
  ;; Docstring.  This describes the advice and is made available inside emacs;&lt;br /&gt;
  ;; for example when doing C-h f terminal-init-screen RET&lt;br /&gt;
  &amp;quot;Apply xterm keymap, allowing use of keys passed through tmux.&amp;quot;&lt;br /&gt;
  ;; This is the elisp code that is run before `terminal-init-screen&#039;.&lt;br /&gt;
  (if (getenv &amp;quot;TMUX&amp;quot;)&lt;br /&gt;
    (let ((map (copy-keymap xterm-function-map)))&lt;br /&gt;
    (set-keymap-parent map (keymap-parent input-decode-map))&lt;br /&gt;
(set-keymap-parent input-decode-map map))))&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://github.com/tmux/tmux/blob/master/FAQ#L242 tmux FAQ] を参照。&lt;br /&gt;
&lt;br /&gt;
=== KDE でウィンドウのリサイズがおかしい ===&lt;br /&gt;
KDE ユーザーには Emacs のウィンドウが正しくリサイズされないという現象がおこることがあります。リサイズした部分が透過されマウスでクリックしても下のウィンドウがクリックされます。この挙動を修正するには、KDE の GTK3 テーマを oxygen-gtk 以外のテーマに変更してください。例えば、{{Pkg|gtk3}} に含まれている Emacs テーマを使って下さい。&lt;br /&gt;
&lt;br /&gt;
KDE で Emacs を完全に最大化するには、タイトルバーの Emacs アイコンをクリックして、More Actions &amp;gt; Special Window Settings を選択してください。そして &amp;quot;Size &amp;amp; Position&amp;quot; タブで &amp;quot;Obey geometry restrictions&amp;quot; を選択して、ドロップダウンメニューで &amp;quot;Force&amp;quot; を選んで右のラジオボタンで &amp;quot;No&amp;quot; を選んで下さい。&lt;br /&gt;
&lt;br /&gt;
== 派生 ==&lt;br /&gt;
&lt;br /&gt;
Emacs の実装は多数存在します。おそらく GNU/Emacs が一番ポピュラーです。&lt;br /&gt;
&lt;br /&gt;
軽量な Emacs 互換のテキストエディタは Arch のリポジトリや [[AUR]] にあります。&lt;br /&gt;
&lt;br /&gt;
=== mg ===&lt;br /&gt;
&lt;br /&gt;
mg (旧名 MicroGnuEmacs) は C で書かれた軽量な Emacs の実装です。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|mg}} パッケージから入手できますが、上流の [http://homepage.boetes.org/software/mg/ ページ] からソースをダウンロードすることも可能です。mg は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
=== zile ===&lt;br /&gt;
&lt;br /&gt;
公式ウェブ[https://www.gnu.org/software/zile/ ページ]によると &amp;quot;GNU Zile は軽量な Emacs クローンです。Zile は Zile Is Lossy Emacs の略となっています。Zile は出来る限り Emacs に近づくように書かれており、きっと全ての Emacs ユーザーの手に馴染むでしょう&amp;quot;。Zile は UTF-8 をサポートしていません。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|zile}} パッケージからインストールできます。&lt;br /&gt;
&lt;br /&gt;
最新の tarball は公式の GNU [http://ftp.sh.cvut.cz/MIRRORS/gnu/pub/gnu/zile/ ミラー] から落とせます。&lt;br /&gt;
&lt;br /&gt;
=== uemacs ===&lt;br /&gt;
&lt;br /&gt;
Linus Torvalds によるカスタム版 Micro-emacs。{{AUR|uemacs-git}} でインストール可能。&lt;br /&gt;
&lt;br /&gt;
最新 (2005) の tarball は [ftp://ftp.cs.helsinki.fi/pub/Software/Local/uEmacs-PK/ こちら] にあります。&lt;br /&gt;
&lt;br /&gt;
=== remacs ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;remacs&#039;&#039;&#039; はコミュニティによる Emacs の Rust 移植です。{{AUR|remacs-git}} パッケージでインストールできます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.gnu.org/software/emacs/ GNU Emacs ホームページ]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/manual/emacs.html GNU Emacs マニュアル]&lt;br /&gt;
* [http://www.emacswiki.org/cgi-bin/wiki/ Emacs Wiki]&lt;br /&gt;
* [http://wikemacs.org WikEmacs - 読みやすいが不完全な Emacs wiki]&lt;br /&gt;
* [http://www2.lib.uchicago.edu/keith/tcl-course/emacs-tutorial.html Emacs とそのショートカットの有用な紹介]&lt;br /&gt;
* [https://d0edfcdc0ccc1cd13cdab5eb986fb92e8660dbef.googledrive.com/host/0B6LMD0u8OhYYZEotN2QyR1hwR1k/ Emacs 教会 (Google ドライブ)]&lt;br /&gt;
* [https://www.gnu.org/software/emacs/refcards/pdf/refcard.pdf 公式リファレンスカード]&lt;br /&gt;
* [[EXWM]] - Emacs X Window Manager&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=16388</id>
		<title>利用者:Linuxmetel</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Linuxmetel&amp;diff=16388"/>
		<updated>2020-05-23T03:08:31Z</updated>

		<summary type="html">&lt;p&gt;Linuxmetel: ページの作成:「Arch系ではなく、Debian Sidユーザーですが、手伝えることがあれば手伝います。」&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Arch系ではなく、Debian Sidユーザーですが、手伝えることがあれば手伝います。&lt;/div&gt;</summary>
		<author><name>Linuxmetel</name></author>
	</entry>
</feed>