<?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=Shota</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=Shota"/>
	<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/Shota"/>
	<updated>2026-04-06T11:24:08Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=AVR&amp;diff=38573</id>
		<title>AVR</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=AVR&amp;diff=38573"/>
		<updated>2024-08-17T06:05:33Z</updated>

		<summary type="html">&lt;p&gt;Shota: 英語版に同期し翻訳ステータスを付与&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:開発]]&lt;br /&gt;
[[en:AVR]]&lt;br /&gt;
[[Wikipedia:AVR_microcontrollers|AVR]] は Microchip Technology 社 (以前は Atmel 社でしたが買収されました)によって開発されているマイクロコントローラ (MCU) の一種です。 AVR は [[Arduino]] プロジェクトに代表される様に、とりわけホビーや教育用途で広まっています。このページでは、これらのMCUの8ビットシリーズを扱います。&lt;br /&gt;
&lt;br /&gt;
== ツールチェイン ==&lt;br /&gt;
&lt;br /&gt;
ツールチェインと GNU コンパイラのために {{Pkg|avr-gcc}} を[[インストール]]して下さい。&lt;br /&gt;
&lt;br /&gt;
== プログラマー (書込器） ==&lt;br /&gt;
AVR チップへ作成したプログラムを書き込むためには、プログラマーと、それを行うソフトウェアが必要です。有名なプログラマーには [https://www.fischl.de/usbasp USBasp]や[https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATAVRISP2 AVRISP mkII]、[https://www.microchip.com/DevelopmentTools/ProductDetails/ATATMEL-ICE Atmel-ICE]、[https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATSTK500 STK500]があります。 LPT ポートで動く単純な DIY プログラマーである [https://www.olimex.com/Products/AVR/Programmers/AVR-PG2B AVR-PG2B] などもあります。 {{Pkg|avrdude}} は、これらも含めて多くのプログラマーをサポートします。&lt;br /&gt;
&lt;br /&gt;
=== udev ルール ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|avrdue}} を root 権限なしで動かすには次の様な [[Udev]] ルールを作ってください。この udev ルールによって、指定の USB デバイスを取り扱う権限を他のグループに移します ({{ic|uucp}} がこの手の処理によく使われます)。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-avrprogrammer.rules|2=&lt;br /&gt;
 # Set group for a programmer matching with vendor and product IDs&lt;br /&gt;
 SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;your Vendor ID&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;your Product ID&#039;&#039;&amp;quot;, GROUP=&amp;quot;uucp&amp;quot;, MODE=&amp;quot;0666&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
イタリック表記の部分は、使っているプログラマーのベンダーとプロダクト ID ({{Pkg|usbutils}} パッケージにある {{ic|lsusb}} コマンドを使って特定できます) に置き換えて、また、{{ic|uucp}} グループはあなたの補助グループに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
AVR チップのために C 言語のプログラムをコンパイルするには、 {{ic|avr-gcc}} が使えます。ここでは例として、  ATmega8A を 8 MHz で動かすことを考えます。目的の MCU (サポートされる MCU のリストは {{man|1=1|2=avr-gcc|3=mmcu=}} にあります) と動作周波数を指定する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ avr-gcc -DF_CPU=8000000UL -mmcu=atmega8a -std=gnu99 main.c -o main.elf&lt;br /&gt;
&lt;br /&gt;
avrdude は、直接 ELF ファイルを読む事ができますが、 次の様に Intel HEX 形式に変換することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ avr-objcopy -O ihex -j .text -j .data main.elf main.hex&lt;br /&gt;
&lt;br /&gt;
書き込むファイルができたら、 書き込み先の flash ROM を指定して、 avrdude を実行します。ここでは AVRISP mkII を例に取って、安全のため書き込み周波数を 125 kHz に小さくして書き込みます:&lt;br /&gt;
&lt;br /&gt;
 $ avrdude -p atmega8 -c avrispmkII -B 125kHz -U flash:w:main.hex&lt;br /&gt;
&lt;br /&gt;
これで完了です。 他には、 avrdude は EEPROM や fuse への書き込みもサポートします。例えば、low fuse と high fuse それぞれに 0x9F と 0xD1 を書き込むには、次のようにします:&lt;br /&gt;
&lt;br /&gt;
 $ avrdude -p atmega8 -c avrispmkII -B 125kHz -U lfuse:w:0x9F:m -U hfuse:w:0xD1:m&lt;br /&gt;
&lt;br /&gt;
ISP プログラミングの時には、 MCU の動作周波数の 1/8 を越えないように気を付けてください。多くの新しいチップでは 1 MHz の設定で販売されているので、 125 kHz の書き込み速度にするのがよいでしょう。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 最適化 ===&lt;br /&gt;
&lt;br /&gt;
AVR は小さな flash ROM サイズと非力な CPU で構成されているので、 ROM サイズの縮小や性能の向上のために最適化も考慮すると良いでしょう。 GCC の最適化レベルの指定 {{ic|-Os}} や他の機能 {{ic|-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums}} を使う事がよく知られた方法です。必要のないライブラリへの参照を除くためやガベージコレクションを使うためには、 {{ic|-ffunction-sections -fdata-sections -Wl,--gc-sections}} があります。&lt;br /&gt;
&lt;br /&gt;
=== Makefile のサンプル ===&lt;br /&gt;
&lt;br /&gt;
大きなプロジェクトを管理することは面倒で、 Makefile による管理は非常に有効です。 [https://www.avrfreaks.net/sites/default/files/Makefile.txt AVRfreaks] を元にしたサンプルを、ここで紹介します。&lt;br /&gt;
&lt;br /&gt;
 CC = avr-gcc&lt;br /&gt;
 OBJCOPY = avr-objcopy&lt;br /&gt;
 SIZE = avr-size&lt;br /&gt;
 NM = avr-nm&lt;br /&gt;
 AVRDUDE = avrdude&lt;br /&gt;
 REMOVE = rm -f&lt;br /&gt;
 &lt;br /&gt;
 MCU = atmega8a&lt;br /&gt;
 F_CPU = 8000000&lt;br /&gt;
 &lt;br /&gt;
 LFUSE = 0x9f&lt;br /&gt;
 HFUSE = 0xd1&lt;br /&gt;
 &lt;br /&gt;
 TARGET = firmware&lt;br /&gt;
 SRC = main.c lcd.c twi.c&lt;br /&gt;
 OBJ = $(SRC:.c=.o)&lt;br /&gt;
 LST = $(SRC:.c=.lst)&lt;br /&gt;
 &lt;br /&gt;
 FORMAT = ihex&lt;br /&gt;
 &lt;br /&gt;
 OPTLEVEL = s&lt;br /&gt;
 &lt;br /&gt;
 CDEFS = &lt;br /&gt;
 &lt;br /&gt;
 CFLAGS = -DF_CPU=$(F_CPU)UL&lt;br /&gt;
 CFLAGS += $(CDEFS)&lt;br /&gt;
 CFLAGS += -O$(OPTLEVEL)&lt;br /&gt;
 CFLAGS += -mmcu=$(MCU)&lt;br /&gt;
 CFLAGS += -std=gnu99&lt;br /&gt;
 CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums&lt;br /&gt;
 CFLAGS += -ffunction-sections -fdata-sections&lt;br /&gt;
 CFLAGS += -Wall -Wstrict-prototypes&lt;br /&gt;
 CFLAGS += -Wa,-adhlns=$(&amp;lt;:.c=.lst)&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS = -Wl,--gc-sections&lt;br /&gt;
 LDFLAGS += -Wl,--print-gc-sections&lt;br /&gt;
 &lt;br /&gt;
 AVRDUDE_MCU = atmega8&lt;br /&gt;
 AVRDUDE_PROGRAMMER = avrispmkII&lt;br /&gt;
 AVRDUDE_SPEED = -B 1MHz&lt;br /&gt;
 &lt;br /&gt;
 AVRDUDE_FLAGS = -p $(AVRDUDE_MCU)&lt;br /&gt;
 AVRDUDE_FLAGS += -c $(AVRDUDE_PROGRAMMER)&lt;br /&gt;
 AVRDUDE_FLAGS += $(AVRDUDE_SPEED)&lt;br /&gt;
 &lt;br /&gt;
 MSG_LINKING = Linking:&lt;br /&gt;
 MSG_COMPILING = Compiling:&lt;br /&gt;
 MSG_FLASH = Preparing HEX file:&lt;br /&gt;
 &lt;br /&gt;
 all: gccversion $(TARGET).elf $(TARGET).hex size&lt;br /&gt;
 &lt;br /&gt;
 .SECONDARY: $(TARGET).elf&lt;br /&gt;
 .PRECIOUS: $(OBJ)&lt;br /&gt;
 &lt;br /&gt;
 %.hex: %.elf&lt;br /&gt;
         @echo&lt;br /&gt;
         @echo $(MSG_FLASH) $@&lt;br /&gt;
         $(OBJCOPY) -O $(FORMAT) -j .text -j .data $&amp;lt; $@&lt;br /&gt;
 &lt;br /&gt;
 %.elf: $(OBJ)&lt;br /&gt;
         @echo&lt;br /&gt;
         @echo $(MSG_LINKING) $@&lt;br /&gt;
         $(CC) -mmcu=$(MCU) $(LDFLAGS) $^ --output $(@F)&lt;br /&gt;
 &lt;br /&gt;
 %.o : %.c&lt;br /&gt;
         @echo $(MSG_COMPILING) $&amp;lt;&lt;br /&gt;
         $(CC) $(CFLAGS) -c $&amp;lt; -o $(@F)&lt;br /&gt;
 &lt;br /&gt;
 gccversion:&lt;br /&gt;
         @$(CC) --version&lt;br /&gt;
 &lt;br /&gt;
 size: $(TARGET).elf&lt;br /&gt;
         @echo&lt;br /&gt;
         $(SIZE) -C --mcu=$(AVRDUDE_MCU) $(TARGET).elf&lt;br /&gt;
 &lt;br /&gt;
 analyze: $(TARGET).elf&lt;br /&gt;
         $(NM) -S --size-sort -t decimal $(TARGET).elf&lt;br /&gt;
 &lt;br /&gt;
 isp: $(TARGET).hex&lt;br /&gt;
         $(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(TARGET).hex&lt;br /&gt;
 &lt;br /&gt;
 fuses:&lt;br /&gt;
         $(AVRDUDE) $(AVRDUDE_FLAGS) -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m&lt;br /&gt;
 &lt;br /&gt;
 release: fuses isp&lt;br /&gt;
 &lt;br /&gt;
 clean:&lt;br /&gt;
         $(REMOVE) $(TARGET).hex $(TARGET).elf $(OBJ) $(LST) *~&lt;br /&gt;
&lt;br /&gt;
=== 制御レジスタ値の計算 ===&lt;br /&gt;
&lt;br /&gt;
プロジェクト開発速度の向上のために、 {{AUR|avrcalc}} ユーティリティが使えます。これはタイマーや周波数などの制御レジスタのパラメータの計算に役立ちます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [[Arduino]]&lt;br /&gt;
* https://www.microchip.com/design-centers/8-bit/avr-mcus&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|AVR|2024-08-17|790657}}&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=AVR&amp;diff=38572</id>
		<title>AVR</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=AVR&amp;diff=38572"/>
		<updated>2024-08-17T06:02:50Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 使い方 */ MCU リストへのリンクを追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:開発]]&lt;br /&gt;
[[en:AVR]]&lt;br /&gt;
[[Wikipedia:AVR_microcontrollers|AVR]] は Microchip Technology 社 (以前は Atmel 社でしたが買収されました)によって開発されているマイクロコントローラ (MCU) の一種です。 AVR は [[Arduino]] プロジェクトに代表される様に、とりわけホビーや教育用途で広まっています。このページでは、これらのMCUの8ビットシリーズを扱います。&lt;br /&gt;
&lt;br /&gt;
== ツールチェイン ==&lt;br /&gt;
&lt;br /&gt;
ツールチェインと GNU コンパイラのために {{Pkg|avr-gcc}} を[[インストール]]して下さい。&lt;br /&gt;
&lt;br /&gt;
== プログラマー (書込器） ==&lt;br /&gt;
AVR チップへ作成したプログラムを書き込むためには、プログラマーと、それを行うソフトウェアが必要です。有名なプログラマーには [https://www.fischl.de/usbasp USBasp]や[https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATAVRISP2 AVRISP mkII]、[https://www.microchip.com/DevelopmentTools/ProductDetails/ATATMEL-ICE Atmel-ICE]、[https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATSTK500 STK500]があります。 LPT ポートで動く単純な DIY プログラマーである [https://www.olimex.com/Products/AVR/Programmers/AVR-PG2B AVR-PG2B] などもあります。 {{Pkg|avrdude}} は、これらも含めて多くのプログラマーをサポートします。&lt;br /&gt;
&lt;br /&gt;
=== udev ルール ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|avrdue}} を root 権限なしで動かすには次の様な [[Udev]] ルールを作ってください。この udev ルールによって、指定の USB デバイスを取り扱う権限を他のグループに移します ({{ic|uucp}} がこの手の処理によく使われます)。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-avrprogrammer.rules|2=&lt;br /&gt;
 # Set group for a programmer matching with vendor and product IDs&lt;br /&gt;
 SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;your Vendor ID&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;your Product ID&#039;&#039;&amp;quot;, GROUP=&amp;quot;uucp&amp;quot;, MODE=&amp;quot;0666&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
イタリック表記の部分は、使っているプログラマーのベンダーとプロダクト ID ({{Pkg|usbutils}} パッケージにある {{ic|lsusb}} コマンドを使って特定できます) に置き換えて、また、{{ic|uucp}} グループはあなたの補助グループに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
AVR チップのために C 言語のプログラムをコンパイルするには、 {{ic|avr-gcc}} が使えます。ここでは例として、  ATmega8A を 8 MHz で動かすことを考えます。目的の MCU (サポートされる MCU のリストは {{man|1=1|2=avr-gcc|3=mmcu=}} にあります) と動作周波数を指定する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ avr-gcc -DF_CPU=8000000UL -mmcu=atmega8a -std=gnu99 main.c -o main.elf&lt;br /&gt;
&lt;br /&gt;
avrdude は、直接 ELF ファイルを読む事ができますが、 次の様に Intel HEX 形式に変換することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ avr-objcopy -O ihex -j .text -j .data main.elf main.hex&lt;br /&gt;
&lt;br /&gt;
書き込むファイルができたら、 書き込み先の flash ROM を指定して、 avrdude を実行します。ここでは AVRISP mkII を例に取って、安全のため書き込み周波数を 125 kHz に小さくして書き込みます:&lt;br /&gt;
&lt;br /&gt;
 $ avrdude -p atmega8 -c avrispmkII -B 125kHz -U flash:w:main.hex&lt;br /&gt;
&lt;br /&gt;
これで完了です。 他には、 avrdude は EEPROM や fuse への書き込みもサポートします。例えば、low fuse と high fuse それぞれに 0x9F と 0xD1 を書き込むには、次のようにします:&lt;br /&gt;
&lt;br /&gt;
 $ avrdude -p atmega8 -c avrispmkII -B 125kHz -U lfuse:w:0x9F:m -U hfuse:w:0xD1:m&lt;br /&gt;
&lt;br /&gt;
ISP プログラミングの時には、 MCU の動作周波数の 1/8 を越えないように気を付けてください。多くの新しいチップでは 1 MHz の設定で販売されているので、 125 kHz の書き込み速度にするのがよいでしょう。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 最適化 ===&lt;br /&gt;
&lt;br /&gt;
AVR は小さな flash ROM サイズと非力な CPU で構成されているので、 ROM サイズの縮小や性能の向上のために最適化も考慮すると良いでしょう。 GCC の最適化レベルの指定 {{ic|-Os}} や他の機能 {{ic|-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums}} を使う事がよく知られた方法です。必要のないライブラリへの参照を除くためやガベージコレクションを使うためには、 {{ic|-ffunction-sections -fdata-sections -Wl,--gc-sections}} があります。&lt;br /&gt;
&lt;br /&gt;
=== Makefile のサンプル ===&lt;br /&gt;
&lt;br /&gt;
大きなプロジェクトを管理することは面倒で、 Makefile による管理は非常に有効です。 [https://www.avrfreaks.net/sites/default/files/Makefile.txt AVRfreaks] を元にしたサンプルを、ここで紹介します。&lt;br /&gt;
&lt;br /&gt;
 CC = avr-gcc&lt;br /&gt;
 OBJCOPY = avr-objcopy&lt;br /&gt;
 SIZE = avr-size&lt;br /&gt;
 NM = avr-nm&lt;br /&gt;
 AVRDUDE = avrdude&lt;br /&gt;
 REMOVE = rm -f&lt;br /&gt;
 &lt;br /&gt;
 MCU = atmega8a&lt;br /&gt;
 F_CPU = 8000000&lt;br /&gt;
 &lt;br /&gt;
 LFUSE = 0x9f&lt;br /&gt;
 HFUSE = 0xd1&lt;br /&gt;
 &lt;br /&gt;
 TARGET = firmware&lt;br /&gt;
 SRC = main.c lcd.c twi.c&lt;br /&gt;
 OBJ = $(SRC:.c=.o)&lt;br /&gt;
 LST = $(SRC:.c=.lst)&lt;br /&gt;
 &lt;br /&gt;
 FORMAT = ihex&lt;br /&gt;
 &lt;br /&gt;
 OPTLEVEL = s&lt;br /&gt;
 &lt;br /&gt;
 CDEFS = &lt;br /&gt;
 &lt;br /&gt;
 CFLAGS = -DF_CPU=$(F_CPU)UL&lt;br /&gt;
 CFLAGS += $(CDEFS)&lt;br /&gt;
 CFLAGS += -O$(OPTLEVEL)&lt;br /&gt;
 CFLAGS += -mmcu=$(MCU)&lt;br /&gt;
 CFLAGS += -std=gnu99&lt;br /&gt;
 CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums&lt;br /&gt;
 CFLAGS += -ffunction-sections -fdata-sections&lt;br /&gt;
 CFLAGS += -Wall -Wstrict-prototypes&lt;br /&gt;
 CFLAGS += -Wa,-adhlns=$(&amp;lt;:.c=.lst)&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS = -Wl,--gc-sections&lt;br /&gt;
 LDFLAGS += -Wl,--print-gc-sections&lt;br /&gt;
 &lt;br /&gt;
 AVRDUDE_MCU = atmega8&lt;br /&gt;
 AVRDUDE_PROGRAMMER = avrispmkII&lt;br /&gt;
 AVRDUDE_SPEED = -B 1MHz&lt;br /&gt;
 &lt;br /&gt;
 AVRDUDE_FLAGS = -p $(AVRDUDE_MCU)&lt;br /&gt;
 AVRDUDE_FLAGS += -c $(AVRDUDE_PROGRAMMER)&lt;br /&gt;
 AVRDUDE_FLAGS += $(AVRDUDE_SPEED)&lt;br /&gt;
 &lt;br /&gt;
 MSG_LINKING = Linking:&lt;br /&gt;
 MSG_COMPILING = Compiling:&lt;br /&gt;
 MSG_FLASH = Preparing HEX file:&lt;br /&gt;
 &lt;br /&gt;
 all: gccversion $(TARGET).elf $(TARGET).hex size&lt;br /&gt;
 &lt;br /&gt;
 .SECONDARY: $(TARGET).elf&lt;br /&gt;
 .PRECIOUS: $(OBJ)&lt;br /&gt;
 &lt;br /&gt;
 %.hex: %.elf&lt;br /&gt;
         @echo&lt;br /&gt;
         @echo $(MSG_FLASH) $@&lt;br /&gt;
         $(OBJCOPY) -O $(FORMAT) -j .text -j .data $&amp;lt; $@&lt;br /&gt;
 &lt;br /&gt;
 %.elf: $(OBJ)&lt;br /&gt;
         @echo&lt;br /&gt;
         @echo $(MSG_LINKING) $@&lt;br /&gt;
         $(CC) -mmcu=$(MCU) $(LDFLAGS) $^ --output $(@F)&lt;br /&gt;
 &lt;br /&gt;
 %.o : %.c&lt;br /&gt;
         @echo $(MSG_COMPILING) $&amp;lt;&lt;br /&gt;
         $(CC) $(CFLAGS) -c $&amp;lt; -o $(@F)&lt;br /&gt;
 &lt;br /&gt;
 gccversion:&lt;br /&gt;
         @$(CC) --version&lt;br /&gt;
 &lt;br /&gt;
 size: $(TARGET).elf&lt;br /&gt;
         @echo&lt;br /&gt;
         $(SIZE) -C --mcu=$(AVRDUDE_MCU) $(TARGET).elf&lt;br /&gt;
 &lt;br /&gt;
 analyze: $(TARGET).elf&lt;br /&gt;
         $(NM) -S --size-sort -t decimal $(TARGET).elf&lt;br /&gt;
 &lt;br /&gt;
 isp: $(TARGET).hex&lt;br /&gt;
         $(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(TARGET).hex&lt;br /&gt;
 &lt;br /&gt;
 fuses:&lt;br /&gt;
         $(AVRDUDE) $(AVRDUDE_FLAGS) -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m&lt;br /&gt;
 &lt;br /&gt;
 release: fuses isp&lt;br /&gt;
 &lt;br /&gt;
 clean:&lt;br /&gt;
         $(REMOVE) $(TARGET).hex $(TARGET).elf $(OBJ) $(LST) *~&lt;br /&gt;
&lt;br /&gt;
=== 制御レジスタ値の計算 ===&lt;br /&gt;
&lt;br /&gt;
プロジェクト開発速度の向上のために、 {{AUR|avrcalc}} ユーティリティが使えます。これはタイマーや周波数などの制御レジスタのパラメータの計算に役立ちます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [[Arduino]]&lt;br /&gt;
* https://www.microchip.com/design-centers/8-bit/avr-mcus&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=AVR&amp;diff=38571</id>
		<title>AVR</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=AVR&amp;diff=38571"/>
		<updated>2024-08-17T05:56:07Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* udev の問題 */  のタイトルを /* udev ルール */ に修正して、内容を英語版に合わせて更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[カテゴリ:開発]]&lt;br /&gt;
[[en:AVR]]&lt;br /&gt;
[[Wikipedia:AVR_microcontrollers|AVR]] は Microchip Technology 社 (以前は Atmel 社でしたが買収されました)によって開発されているマイクロコントローラ (MCU) の一種です。 AVR は [[Arduino]] プロジェクトに代表される様に、とりわけホビーや教育用途で広まっています。このページでは、これらのMCUの8ビットシリーズを扱います。&lt;br /&gt;
&lt;br /&gt;
== ツールチェイン ==&lt;br /&gt;
&lt;br /&gt;
ツールチェインと GNU コンパイラのために {{Pkg|avr-gcc}} を[[インストール]]して下さい。&lt;br /&gt;
&lt;br /&gt;
== プログラマー (書込器） ==&lt;br /&gt;
AVR チップへ作成したプログラムを書き込むためには、プログラマーと、それを行うソフトウェアが必要です。有名なプログラマーには [https://www.fischl.de/usbasp USBasp]や[https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATAVRISP2 AVRISP mkII]、[https://www.microchip.com/DevelopmentTools/ProductDetails/ATATMEL-ICE Atmel-ICE]、[https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/ATSTK500 STK500]があります。 LPT ポートで動く単純な DIY プログラマーである [https://www.olimex.com/Products/AVR/Programmers/AVR-PG2B AVR-PG2B] などもあります。 {{Pkg|avrdude}} は、これらも含めて多くのプログラマーをサポートします。&lt;br /&gt;
&lt;br /&gt;
=== udev ルール ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|avrdue}} を root 権限なしで動かすには次の様な [[Udev]] ルールを作ってください。この udev ルールによって、指定の USB デバイスを取り扱う権限を他のグループに移します ({{ic|uucp}} がこの手の処理によく使われます)。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-avrprogrammer.rules|2=&lt;br /&gt;
 # Set group for a programmer matching with vendor and product IDs&lt;br /&gt;
 SUBSYSTEM==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;your Vendor ID&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;your Product ID&#039;&#039;&amp;quot;, GROUP=&amp;quot;uucp&amp;quot;, MODE=&amp;quot;0666&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
イタリック表記の部分は、使っているプログラマーのベンダーとプロダクト ID ({{Pkg|usbutils}} パッケージにある {{ic|lsusb}} コマンドを使って特定できます) に置き換えて、また、{{ic|uucp}} グループはあなたの補助グループに置き換えてください。&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
AVR チップのために C 言語のプログラムをコンパイルするには、 {{ic|avr-gcc}} が使えます。ここでは例として、  ATmega8A を 8 MHz で動かすことを考えます。目的の MCU と動作周波数を指定する必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ avr-gcc -DF_CPU=8000000UL -mmcu=atmega8a -std=gnu99 main.c -o main.elf&lt;br /&gt;
&lt;br /&gt;
avrdude は、直接 ELF ファイルを読む事ができますが、 次の様に Intel HEX 形式に変換することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ avr-objcopy -O ihex -j .text -j .data main.elf main.hex&lt;br /&gt;
&lt;br /&gt;
書き込むファイルができたら、 書き込み先の flash ROM を指定して、 avrdude を実行します。ここでは AVRISP mkII を例に取って、安全のため書き込み周波数を 125 kHz に小さくして書き込みます:&lt;br /&gt;
&lt;br /&gt;
 $ avrdude -p atmega8 -c avrispmkII -B 125kHz -U flash:w:main.hex&lt;br /&gt;
&lt;br /&gt;
これで完了です。 他には、 avrdude は EEPROM や fuse への書き込みもサポートします。例えば、low fuse と high fuse それぞれに 0x9F と 0xD1 を書き込むには、次のようにします:&lt;br /&gt;
&lt;br /&gt;
 $ avrdude -p atmega8 -c avrispmkII -B 125kHz -U lfuse:w:0x9F:m -U hfuse:w:0xD1:m&lt;br /&gt;
&lt;br /&gt;
ISP プログラミングの時には、 MCU の動作周波数の 1/8 を越えないように気を付けてください。多くの新しいチップでは 1 MHz の設定で販売されているので、 125 kHz の書き込み速度にするのがよいでしょう。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== 最適化 ===&lt;br /&gt;
&lt;br /&gt;
AVR は小さな flash ROM サイズと非力な CPU で構成されているので、 ROM サイズの縮小や性能の向上のために最適化も考慮すると良いでしょう。 GCC の最適化レベルの指定 {{ic|-Os}} や他の機能 {{ic|-funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums}} を使う事がよく知られた方法です。必要のないライブラリへの参照を除くためやガベージコレクションを使うためには、 {{ic|-ffunction-sections -fdata-sections -Wl,--gc-sections}} があります。&lt;br /&gt;
&lt;br /&gt;
=== Makefile のサンプル ===&lt;br /&gt;
&lt;br /&gt;
大きなプロジェクトを管理することは面倒で、 Makefile による管理は非常に有効です。 [https://www.avrfreaks.net/sites/default/files/Makefile.txt AVRfreaks] を元にしたサンプルを、ここで紹介します。&lt;br /&gt;
&lt;br /&gt;
 CC = avr-gcc&lt;br /&gt;
 OBJCOPY = avr-objcopy&lt;br /&gt;
 SIZE = avr-size&lt;br /&gt;
 NM = avr-nm&lt;br /&gt;
 AVRDUDE = avrdude&lt;br /&gt;
 REMOVE = rm -f&lt;br /&gt;
 &lt;br /&gt;
 MCU = atmega8a&lt;br /&gt;
 F_CPU = 8000000&lt;br /&gt;
 &lt;br /&gt;
 LFUSE = 0x9f&lt;br /&gt;
 HFUSE = 0xd1&lt;br /&gt;
 &lt;br /&gt;
 TARGET = firmware&lt;br /&gt;
 SRC = main.c lcd.c twi.c&lt;br /&gt;
 OBJ = $(SRC:.c=.o)&lt;br /&gt;
 LST = $(SRC:.c=.lst)&lt;br /&gt;
 &lt;br /&gt;
 FORMAT = ihex&lt;br /&gt;
 &lt;br /&gt;
 OPTLEVEL = s&lt;br /&gt;
 &lt;br /&gt;
 CDEFS = &lt;br /&gt;
 &lt;br /&gt;
 CFLAGS = -DF_CPU=$(F_CPU)UL&lt;br /&gt;
 CFLAGS += $(CDEFS)&lt;br /&gt;
 CFLAGS += -O$(OPTLEVEL)&lt;br /&gt;
 CFLAGS += -mmcu=$(MCU)&lt;br /&gt;
 CFLAGS += -std=gnu99&lt;br /&gt;
 CFLAGS += -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums&lt;br /&gt;
 CFLAGS += -ffunction-sections -fdata-sections&lt;br /&gt;
 CFLAGS += -Wall -Wstrict-prototypes&lt;br /&gt;
 CFLAGS += -Wa,-adhlns=$(&amp;lt;:.c=.lst)&lt;br /&gt;
 &lt;br /&gt;
 LDFLAGS = -Wl,--gc-sections&lt;br /&gt;
 LDFLAGS += -Wl,--print-gc-sections&lt;br /&gt;
 &lt;br /&gt;
 AVRDUDE_MCU = atmega8&lt;br /&gt;
 AVRDUDE_PROGRAMMER = avrispmkII&lt;br /&gt;
 AVRDUDE_SPEED = -B 1MHz&lt;br /&gt;
 &lt;br /&gt;
 AVRDUDE_FLAGS = -p $(AVRDUDE_MCU)&lt;br /&gt;
 AVRDUDE_FLAGS += -c $(AVRDUDE_PROGRAMMER)&lt;br /&gt;
 AVRDUDE_FLAGS += $(AVRDUDE_SPEED)&lt;br /&gt;
 &lt;br /&gt;
 MSG_LINKING = Linking:&lt;br /&gt;
 MSG_COMPILING = Compiling:&lt;br /&gt;
 MSG_FLASH = Preparing HEX file:&lt;br /&gt;
 &lt;br /&gt;
 all: gccversion $(TARGET).elf $(TARGET).hex size&lt;br /&gt;
 &lt;br /&gt;
 .SECONDARY: $(TARGET).elf&lt;br /&gt;
 .PRECIOUS: $(OBJ)&lt;br /&gt;
 &lt;br /&gt;
 %.hex: %.elf&lt;br /&gt;
         @echo&lt;br /&gt;
         @echo $(MSG_FLASH) $@&lt;br /&gt;
         $(OBJCOPY) -O $(FORMAT) -j .text -j .data $&amp;lt; $@&lt;br /&gt;
 &lt;br /&gt;
 %.elf: $(OBJ)&lt;br /&gt;
         @echo&lt;br /&gt;
         @echo $(MSG_LINKING) $@&lt;br /&gt;
         $(CC) -mmcu=$(MCU) $(LDFLAGS) $^ --output $(@F)&lt;br /&gt;
 &lt;br /&gt;
 %.o : %.c&lt;br /&gt;
         @echo $(MSG_COMPILING) $&amp;lt;&lt;br /&gt;
         $(CC) $(CFLAGS) -c $&amp;lt; -o $(@F)&lt;br /&gt;
 &lt;br /&gt;
 gccversion:&lt;br /&gt;
         @$(CC) --version&lt;br /&gt;
 &lt;br /&gt;
 size: $(TARGET).elf&lt;br /&gt;
         @echo&lt;br /&gt;
         $(SIZE) -C --mcu=$(AVRDUDE_MCU) $(TARGET).elf&lt;br /&gt;
 &lt;br /&gt;
 analyze: $(TARGET).elf&lt;br /&gt;
         $(NM) -S --size-sort -t decimal $(TARGET).elf&lt;br /&gt;
 &lt;br /&gt;
 isp: $(TARGET).hex&lt;br /&gt;
         $(AVRDUDE) $(AVRDUDE_FLAGS) -U flash:w:$(TARGET).hex&lt;br /&gt;
 &lt;br /&gt;
 fuses:&lt;br /&gt;
         $(AVRDUDE) $(AVRDUDE_FLAGS) -U lfuse:w:$(LFUSE):m -U hfuse:w:$(HFUSE):m&lt;br /&gt;
 &lt;br /&gt;
 release: fuses isp&lt;br /&gt;
 &lt;br /&gt;
 clean:&lt;br /&gt;
         $(REMOVE) $(TARGET).hex $(TARGET).elf $(OBJ) $(LST) *~&lt;br /&gt;
&lt;br /&gt;
=== 制御レジスタ値の計算 ===&lt;br /&gt;
&lt;br /&gt;
プロジェクト開発速度の向上のために、 {{AUR|avrcalc}} ユーティリティが使えます。これはタイマーや周波数などの制御レジスタのパラメータの計算に役立ちます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [[Arduino]]&lt;br /&gt;
* https://www.microchip.com/design-centers/8-bit/avr-mcus&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38362</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38362"/>
		<updated>2024-08-14T01:38:38Z</updated>

		<summary type="html">&lt;p&gt;Shota: 翻訳ステータスの追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;device_name&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;device_name&#039;&#039;}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]。&lt;br /&gt;
&lt;br /&gt;
=== 入力時のタッチパッドの有効化 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、[[libinput]] はタイピング中にタッチパッドを無効化します。[[Inkscape]] におけるマウス入力付きキーバインディング動作など、いくつかのソフトウェアにおいて問題になります。次のように {{ic|/etc/X11/xorg.conf.d/30-touchpad.conf}} へ {{ic|InputClass}} セクションを加える事でこの無効化動作を避ける事ができます:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     ...&lt;br /&gt;
     Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
=== 慣性スクロールが KDE で使えない ===&lt;br /&gt;
&lt;br /&gt;
慣性スクロールの機能は現在実装されていません ([https://bugs.kde.org/show_bug.cgi?id=456383 KDE bug 456383])。Chromium-ベースのブラウザ上については、[https://chrome.google.com/webstore/detail/smoothscroll/nbokbjkabcmbfdlbddjidfmibcpneigj SmoothScroll] の拡張機能をインストールする事で使えるようになります。&lt;br /&gt;
&lt;br /&gt;
=== タブレットモードでキーがスタックする ===&lt;br /&gt;
&lt;br /&gt;
いくつかのタブレット PC (Lenovo Yoga など) において、タブレットモードへの切り替わり時にキー入力が停止しタブレットモードを抜けるまでスタックします。libinput の quirks ファイルを編集する事で解決できる場合があります。詳細は [https://gitlab.freedesktop.org/libinput/libinput/-/issues/914 Issue 914] を見てください。&lt;br /&gt;
&lt;br /&gt;
For example, find the name of the keyboard device:&lt;br /&gt;
例えば、キーボードデバイスの名前が次の場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|# libinput list-devices|&lt;br /&gt;
...&lt;br /&gt;
Device:           AT Translated Set 2 keyboard&lt;br /&gt;
Kernel:           /dev/input/event3&lt;br /&gt;
Capabilities:     keyboard &lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次の様に上書き用のファイルを作ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libinput/local-overrides.quirks|2=&lt;br /&gt;
[Lenovo Thinkpad Yoga]&lt;br /&gt;
MatchName=AT Translated Set 2 keyboard&lt;br /&gt;
ModelTabletModeNoSuspend=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ModelTabletModeNoSuspend=0}} によってキースタックの問題となる振る舞いを無効化します。 [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html Device quirks] に、設定ファイルのフォーマットやデバイス名の指定方法が記載されています。いくつかのデバイスについては既存の quirks エントリーを使って上書き用のファイルを作れます。デフォルトの quirks ファイルは {{ic|/usr/share/libinput/}} にあります。&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] Linux における入力デバイスの取り扱いの経緯と現状 (2020年時点) の概説&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] libinput の概説&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TranslationStatus|libinput|2024-08-14|808708}}&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38361</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38361"/>
		<updated>2024-08-14T01:32:26Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* タブレットモードでキーがスタックする */ エスケープシーケンス忘れ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;device_name&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;device_name&#039;&#039;}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]。&lt;br /&gt;
&lt;br /&gt;
=== 入力時のタッチパッドの有効化 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、[[libinput]] はタイピング中にタッチパッドを無効化します。[[Inkscape]] におけるマウス入力付きキーバインディング動作など、いくつかのソフトウェアにおいて問題になります。次のように {{ic|/etc/X11/xorg.conf.d/30-touchpad.conf}} へ {{ic|InputClass}} セクションを加える事でこの無効化動作を避ける事ができます:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     ...&lt;br /&gt;
     Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
=== 慣性スクロールが KDE で使えない ===&lt;br /&gt;
&lt;br /&gt;
慣性スクロールの機能は現在実装されていません ([https://bugs.kde.org/show_bug.cgi?id=456383 KDE bug 456383])。Chromium-ベースのブラウザ上については、[https://chrome.google.com/webstore/detail/smoothscroll/nbokbjkabcmbfdlbddjidfmibcpneigj SmoothScroll] の拡張機能をインストールする事で使えるようになります。&lt;br /&gt;
&lt;br /&gt;
=== タブレットモードでキーがスタックする ===&lt;br /&gt;
&lt;br /&gt;
いくつかのタブレット PC (Lenovo Yoga など) において、タブレットモードへの切り替わり時にキー入力が停止しタブレットモードを抜けるまでスタックします。libinput の quirks ファイルを編集する事で解決できる場合があります。詳細は [https://gitlab.freedesktop.org/libinput/libinput/-/issues/914 Issue 914] を見てください。&lt;br /&gt;
&lt;br /&gt;
For example, find the name of the keyboard device:&lt;br /&gt;
例えば、キーボードデバイスの名前が次の場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|# libinput list-devices|&lt;br /&gt;
...&lt;br /&gt;
Device:           AT Translated Set 2 keyboard&lt;br /&gt;
Kernel:           /dev/input/event3&lt;br /&gt;
Capabilities:     keyboard &lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次の様に上書き用のファイルを作ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libinput/local-overrides.quirks|2=&lt;br /&gt;
[Lenovo Thinkpad Yoga]&lt;br /&gt;
MatchName=AT Translated Set 2 keyboard&lt;br /&gt;
ModelTabletModeNoSuspend=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|1=ModelTabletModeNoSuspend=0}} によってキースタックの問題となる振る舞いを無効化します。 [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html Device quirks] に、設定ファイルのフォーマットやデバイス名の指定方法が記載されています。いくつかのデバイスについては既存の quirks エントリーを使って上書き用のファイルを作れます。デフォルトの quirks ファイルは {{ic|/usr/share/libinput/}} にあります。&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38360</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38360"/>
		<updated>2024-08-14T01:29:31Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* Keys stuck after entering tablet mode */ を訳出&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;device_name&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;device_name&#039;&#039;}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]。&lt;br /&gt;
&lt;br /&gt;
=== 入力時のタッチパッドの有効化 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、[[libinput]] はタイピング中にタッチパッドを無効化します。[[Inkscape]] におけるマウス入力付きキーバインディング動作など、いくつかのソフトウェアにおいて問題になります。次のように {{ic|/etc/X11/xorg.conf.d/30-touchpad.conf}} へ {{ic|InputClass}} セクションを加える事でこの無効化動作を避ける事ができます:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     ...&lt;br /&gt;
     Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
=== 慣性スクロールが KDE で使えない ===&lt;br /&gt;
&lt;br /&gt;
慣性スクロールの機能は現在実装されていません ([https://bugs.kde.org/show_bug.cgi?id=456383 KDE bug 456383])。Chromium-ベースのブラウザ上については、[https://chrome.google.com/webstore/detail/smoothscroll/nbokbjkabcmbfdlbddjidfmibcpneigj SmoothScroll] の拡張機能をインストールする事で使えるようになります。&lt;br /&gt;
&lt;br /&gt;
=== タブレットモードでキーがスタックする ===&lt;br /&gt;
&lt;br /&gt;
いくつかのタブレット PC (Lenovo Yoga など) において、タブレットモードへの切り替わり時にキー入力が停止しタブレットモードを抜けるまでスタックします。libinput の quirks ファイルを編集する事で解決できる場合があります。詳細は [https://gitlab.freedesktop.org/libinput/libinput/-/issues/914 Issue 914] を見てください。&lt;br /&gt;
&lt;br /&gt;
For example, find the name of the keyboard device:&lt;br /&gt;
例えば、キーボードデバイスの名前が次の場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|# libinput list-devices|&lt;br /&gt;
...&lt;br /&gt;
Device:           AT Translated Set 2 keyboard&lt;br /&gt;
Kernel:           /dev/input/event3&lt;br /&gt;
Capabilities:     keyboard &lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次の様に上書き用のファイルを作ってください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libinput/local-overrides.quirks|2=&lt;br /&gt;
[Lenovo Thinkpad Yoga]&lt;br /&gt;
MatchName=AT Translated Set 2 keyboard&lt;br /&gt;
ModelTabletModeNoSuspend=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ModelTabletModeNoSuspend=0}} によってキースタックの問題となる振る舞いを無効化します。 [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html Device quirks] に、設定ファイルのフォーマットやデバイス名の指定方法が記載されています。いくつかのデバイスについては既存の quirks エントリーを使って上書き用のファイルを作れます。デフォルトの quirks ファイルは {{ic|/usr/share/libinput/}} にあります。&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38359</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38359"/>
		<updated>2024-08-14T01:21:13Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* Inertial scrolling does not work in KDE */  を訳出&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;device_name&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;device_name&#039;&#039;}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]。&lt;br /&gt;
&lt;br /&gt;
=== 入力時のタッチパッドの有効化 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、[[libinput]] はタイピング中にタッチパッドを無効化します。[[Inkscape]] におけるマウス入力付きキーバインディング動作など、いくつかのソフトウェアにおいて問題になります。次のように {{ic|/etc/X11/xorg.conf.d/30-touchpad.conf}} へ {{ic|InputClass}} セクションを加える事でこの無効化動作を避ける事ができます:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     ...&lt;br /&gt;
     Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
=== 慣性スクロールが KDE で使えない ===&lt;br /&gt;
&lt;br /&gt;
慣性スクロールの機能は現在実装されていません ([https://bugs.kde.org/show_bug.cgi?id=456383 KDE bug 456383])。Chromium-ベースのブラウザ上については、[https://chrome.google.com/webstore/detail/smoothscroll/nbokbjkabcmbfdlbddjidfmibcpneigj SmoothScroll] の拡張機能をインストールする事で使えるようになります。&lt;br /&gt;
&lt;br /&gt;
=== Keys stuck after entering tablet mode ===&lt;br /&gt;
&lt;br /&gt;
On some Tablet PCs (notably Lenovo Yogas), holding a keyboard key while entering the tablet mode can cause the key be stuck until the tablet mode is disabled. It is sometimes possible to fix this behavior by modifying libinput quirks files. See [https://gitlab.freedesktop.org/libinput/libinput/-/issues/914 Issue 914].&lt;br /&gt;
&lt;br /&gt;
For example, find the name of the keyboard device:&lt;br /&gt;
&lt;br /&gt;
{{hc|# libinput list-devices|&lt;br /&gt;
...&lt;br /&gt;
Device:           AT Translated Set 2 keyboard&lt;br /&gt;
Kernel:           /dev/input/event3&lt;br /&gt;
Capabilities:     keyboard &lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Then, create an override file:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libinput/local-overrides.quirks|2=&lt;br /&gt;
[Lenovo Thinkpad Yoga]&lt;br /&gt;
MatchName=AT Translated Set 2 keyboard&lt;br /&gt;
ModelTabletModeNoSuspend=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ModelTabletModeNoSuspend{{=}}0}} disables behavior that causes the bug. Consult [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html Device quirks] for information about configuration format and Match directives that select the device to configure. It is often possible to create an override file based on an existing quirks entry for your particular device. Default quirks files can be found in {{ic|/usr/share/libinput/}}.&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38353</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38353"/>
		<updated>2024-08-13T10:37:14Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 入力時のタッチパッドの有効化 */ 翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;device_name&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;device_name&#039;&#039;}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]。&lt;br /&gt;
&lt;br /&gt;
=== 入力時のタッチパッドの有効化 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、[[libinput]] はタイピング中にタッチパッドを無効化します。[[Inkscape]] におけるマウス入力付きキーバインディング動作など、いくつかのソフトウェアにおいて問題になります。次のように {{ic|/etc/X11/xorg.conf.d/30-touchpad.conf}} へ {{ic|InputClass}} セクションを加える事でこの無効化動作を避ける事ができます:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     ...&lt;br /&gt;
     Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
=== Inertial scrolling does not work in KDE ===&lt;br /&gt;
&lt;br /&gt;
The feature is currently not implemented, see [https://bugs.kde.org/show_bug.cgi?id=456383 KDE bug 456383]. As a workaround for Chromium-based browsers, install the [https://chrome.google.com/webstore/detail/smoothscroll/nbokbjkabcmbfdlbddjidfmibcpneigj SmoothScroll] extension.&lt;br /&gt;
&lt;br /&gt;
=== Keys stuck after entering tablet mode ===&lt;br /&gt;
&lt;br /&gt;
On some Tablet PCs (notably Lenovo Yogas), holding a keyboard key while entering the tablet mode can cause the key be stuck until the tablet mode is disabled. It is sometimes possible to fix this behavior by modifying libinput quirks files. See [https://gitlab.freedesktop.org/libinput/libinput/-/issues/914 Issue 914].&lt;br /&gt;
&lt;br /&gt;
For example, find the name of the keyboard device:&lt;br /&gt;
&lt;br /&gt;
{{hc|# libinput list-devices|&lt;br /&gt;
...&lt;br /&gt;
Device:           AT Translated Set 2 keyboard&lt;br /&gt;
Kernel:           /dev/input/event3&lt;br /&gt;
Capabilities:     keyboard &lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Then, create an override file:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libinput/local-overrides.quirks|2=&lt;br /&gt;
[Lenovo Thinkpad Yoga]&lt;br /&gt;
MatchName=AT Translated Set 2 keyboard&lt;br /&gt;
ModelTabletModeNoSuspend=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ModelTabletModeNoSuspend{{=}}0}} disables behavior that causes the bug. Consult [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html Device quirks] for information about configuration format and Match directives that select the device to configure. It is often possible to create an override file based on an existing quirks entry for your particular device. Default quirks files can be found in {{ic|/usr/share/libinput/}}.&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38352</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38352"/>
		<updated>2024-08-13T10:31:56Z</updated>

		<summary type="html">&lt;p&gt;Shota: 英語版から内容を同期 (未翻訳)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;device_name&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;device_name&#039;&#039;}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]。&lt;br /&gt;
&lt;br /&gt;
=== 入力時のタッチパッドの有効化 ===&lt;br /&gt;
&lt;br /&gt;
By default, [[libinput]] disables the mousepad when typing. This is conflicting for some software such as [[Inkscape]] which has keybindings that require mouse movement while a key is pressed. You can disable this by adding the following line to the {{ic|InputClass}} section of {{ic|/etc/X11/xorg.conf.d/30-touchpad.conf}}:&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     ...&lt;br /&gt;
     Option &amp;quot;DisableWhileTyping&amp;quot; &amp;quot;0&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
=== Inertial scrolling does not work in KDE ===&lt;br /&gt;
&lt;br /&gt;
The feature is currently not implemented, see [https://bugs.kde.org/show_bug.cgi?id=456383 KDE bug 456383]. As a workaround for Chromium-based browsers, install the [https://chrome.google.com/webstore/detail/smoothscroll/nbokbjkabcmbfdlbddjidfmibcpneigj SmoothScroll] extension.&lt;br /&gt;
&lt;br /&gt;
=== Keys stuck after entering tablet mode ===&lt;br /&gt;
&lt;br /&gt;
On some Tablet PCs (notably Lenovo Yogas), holding a keyboard key while entering the tablet mode can cause the key be stuck until the tablet mode is disabled. It is sometimes possible to fix this behavior by modifying libinput quirks files. See [https://gitlab.freedesktop.org/libinput/libinput/-/issues/914 Issue 914].&lt;br /&gt;
&lt;br /&gt;
For example, find the name of the keyboard device:&lt;br /&gt;
&lt;br /&gt;
{{hc|# libinput list-devices|&lt;br /&gt;
...&lt;br /&gt;
Device:           AT Translated Set 2 keyboard&lt;br /&gt;
Kernel:           /dev/input/event3&lt;br /&gt;
Capabilities:     keyboard &lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Then, create an override file:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/libinput/local-overrides.quirks|2=&lt;br /&gt;
[Lenovo Thinkpad Yoga]&lt;br /&gt;
MatchName=AT Translated Set 2 keyboard&lt;br /&gt;
ModelTabletModeNoSuspend=0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ModelTabletModeNoSuspend{{=}}0}} disables behavior that causes the bug. Consult [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html Device quirks] for information about configuration format and Match directives that select the device to configure. It is often possible to create an override file based on an existing quirks entry for your particular device. Default quirks files can be found in {{ic|/usr/share/libinput/}}.&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38351</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38351"/>
		<updated>2024-08-13T10:29:15Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* マウスホイールのスクロール速度の調整 */ 英語版に合わせた小さい修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt;&#039;&#039;device_name&#039;&#039;&amp;lt;nowiki&amp;gt;&#039;&amp;lt;/nowiki&amp;gt; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|&#039;&#039;device_name&#039;&#039;}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38350</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38350"/>
		<updated>2024-08-13T10:18:53Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* fusuma */ 英語版に同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
あるいは、AUR バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} [[Ruby#RubyGems|Ruby gem]] 以外にも、{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]] あるいは、{{pkg|xdotool}} (X 用) か {{pkg|ydotool}} (Wayland, X11 など汎用) をインストールする必要があります。更なる代替は [https://github.com/iberianpig/fusuma#alternatives-to-xdotool こちら]にリストされています。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|fusuma-plugin-sendkey}} [[Ruby#RubyGems|Ruby gem]]は X と Wayland 両方をサポートしています。}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      sendkey: &#039;LEFTALT+RIGHT&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFT&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    sendkey: &#039;LEFTALT+LEFTSHIFT+TAB&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    sendkey: &#039;LEFTALT+TAB&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
あるいは {{ic|xdotool}} では次のようにします: &lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      command: &#039;xdotool key alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      command: &#039;xdotool key alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    command: &#039;xdotool key ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    command: &#039;xdotool key ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|ydotool}} は {{ic|xdotool}} と同様です。&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎるので重要です。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。2本指のスワイプはサポートされていません [https://github.com/iberianpig/fusuma/issues/104#issuecomment-434742767]。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &#039;RAPOO Rapoo 2.4G Wireless Device&#039; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|RAPOO Rapoo 2.4G Wireless Device}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38349</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38349"/>
		<updated>2024-08-13T10:07:18Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* libinput-gestures */ Touchegg との干渉を追記 (英語版より)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
[[Touchegg]] を使っている場合は、干渉を避ける為に {{AUR|libinput-gestures}} はアンインストールしてください[https://github.com/JoseExposito/gnome-shell-extension-x11gestures/issues/41]。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
また、AUR には旧バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      shortcut: &#039;alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      shortcut: &#039;alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎてしまいます。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &#039;RAPOO Rapoo 2.4G Wireless Device&#039; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|RAPOO Rapoo 2.4G Wireless Device}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38348</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38348"/>
		<updated>2024-08-13T03:40:09Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* タッチパッドの無効化 */  を /* デバイスの無効化 */ に変更し構成を英語版に同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== デバイスの無効化 ===&lt;br /&gt;
&lt;br /&gt;
==== 環境変数を使う ====&lt;br /&gt;
&lt;br /&gt;
[[環境変数]] {{ic|LIBINPUT_IGNORE_DEVICE}} を使って指定のデバイスの初期化を避ける事ができます [https://wayland.freedesktop.org/libinput/doc/latest/device-configuration-via-udev.html#ignoring-devices]。次のような [[udev]] ルールを使って設定するのが最適です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/99-libinput-ignore.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add{{!}}change&amp;quot;, &#039;&#039;device_delineation&#039;&#039;, ENV{LIBINPUT_IGNORE_DEVICE}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device_delineation&#039;&#039; によってデバイスを指定します。例えば ibinput で全ての USB デバイスを無視させるには {{ic|lsusb}} から取得した ID &#039;&#039;vendor_id&#039;&#039; と &#039;&#039;product_id&#039;&#039; を使って {{ic|1=SUBSYSTEMS==&amp;quot;usb&amp;quot;, ATTRS{idVendor}==&amp;quot;&#039;&#039;vendor_id&#039;&#039;&amp;quot;, ATTRS{idProduct}==&amp;quot;&#039;&#039;product_id&#039;&#039;&amp;quot;}} とします。&lt;br /&gt;
&lt;br /&gt;
一度ファイルを用意したら、udev は自動的に設定の変更を反映するので ([[Udev#新しいルールをロードする]]を参照)、デバイスを再接続するだけで反映されます。&lt;br /&gt;
&lt;br /&gt;
==== xinput を使う ====&lt;br /&gt;
&lt;br /&gt;
タッチパッドを始めとするデバイスを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
有効化・無効化をトグルするには [https://github.com/lahwaacz/Scripts/blob/master/toggle-touchpad.sh] のようなスクリプトを書いてください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
また、AUR には旧バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      shortcut: &#039;alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      shortcut: &#039;alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎてしまいます。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &#039;RAPOO Rapoo 2.4G Wireless Device&#039; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|RAPOO Rapoo 2.4G Wireless Device}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38347</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38347"/>
		<updated>2024-08-13T03:25:05Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 設定 */ 「Via Udev Rule」以外を英語版に同期&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況 ([[#グラフィカルツール]]を参照)、あるいはデスクトップ環境非依存の [[udev]] ルールによって異なります。あなたのデスクトップ環境がまだサポートしていないオプション (例えば [[GNOME]] におけるタッチパッドスクロースの速度) を設定したい場合は、{{AUR|libinput-config-git}} が使えるかもしれません。サポートされているオプションは [https://gitlab.com/warningnonpotablewater/libinput-config libinput-config README] にまとめられています。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== Xorg の xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、デフォルトのインストールディレクトリにおいて synaptics の設定ファイルが {{ic|70-}} と大きい番号で始まる為 synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。&lt;br /&gt;
* 設定ファイルが無効になっているようであれば、そのファイルが非特権ユーザーからも読めるかどうかを確認してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルで好きな数だけセクションを定義することができます。{{man|5|xorg.conf|INPUTCLASS_SECTION}} にあるフィルターを使ってデバイスをフィルターできます。例えば、&lt;br /&gt;
* {{ic|MatchIsPointer &amp;quot;on&amp;quot;}} (トラックポイント)&lt;br /&gt;
* {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}&lt;br /&gt;
* {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} &lt;br /&gt;
入力デバイスは {{man|4|libinput|CONFIGURATOIN_DETAILS}} を見ながら設定できます。&lt;br /&gt;
一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあり、適用するには X を再起動する必要があったりするので注意してください。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** 設定パネルからマウスのオプションが選べます。{{ic|mate-mouse-properties}} からも設定できます。&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** {{pkg|xfce4-settings}} にあるマウスやタッチパッドのサブメニューから設定できます。&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドの無効化 ===&lt;br /&gt;
&lt;br /&gt;
タッチパッドを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
また、AUR には旧バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      shortcut: &#039;alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      shortcut: &#039;alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎてしまいます。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &#039;RAPOO Rapoo 2.4G Wireless Device&#039; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|RAPOO Rapoo 2.4G Wireless Device}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38346</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38346"/>
		<updated>2024-08-13T02:38:06Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* インストール */ 英語版に合わせて構成を修正。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] か [[Wayland]] をインストールしている場合、libinput は依存関係により自動的にインストールされているはずで、特別にインストールする必要はありません。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
* [[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージが依存関係によりインストールされているはずです。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換します。&lt;br /&gt;
** また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況によって変わります。[[#グラフィカルツール]]を参照。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス|入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、{{ic|70-synaptics.conf}} のファイル名によって synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルでお好きな数だけセクションを定義することができます。{{ic|MatchIsPointer &amp;quot;on&amp;quot;}}, {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}, {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}, {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} などを使って設定したいデバイスをフィルタリングしてください。詳しくは {{man|4|libinput}} を参照。一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあるので注意してください。&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** Mouse option available in the settings panel. Also accessible using {{ic|mate-mouse-properties}}&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** Configured from the Mouse and Touchpad submenu in {{pkg|xfce4-settings}}.&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドの無効化 ===&lt;br /&gt;
&lt;br /&gt;
タッチパッドを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
また、AUR には旧バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      shortcut: &#039;alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      shortcut: &#039;alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎてしまいます。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &#039;RAPOO Rapoo 2.4G Wireless Device&#039; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|RAPOO Rapoo 2.4G Wireless Device}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38345</id>
		<title>Libinput</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Libinput&amp;diff=38345"/>
		<updated>2024-08-13T02:32:57Z</updated>

		<summary type="html">&lt;p&gt;Shota: 英文に合わせて序文のマイナーな修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:入力デバイス]]&lt;br /&gt;
[[en:Libinput]]&lt;br /&gt;
[[es:Libinput]]&lt;br /&gt;
[[zh-hans:Libinput]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Xorg}}&lt;br /&gt;
{{Related|Synaptics タッチパッド}}&lt;br /&gt;
{{Related|Wayland}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[https://freedesktop.org/wiki/Software/libinput/ libinput] プロジェクトより:&lt;br /&gt;
&lt;br /&gt;
:libinput は Wayland コンポジタで入力デバイスを処理するためのライブラリで、汎用的な X.Org 入力ドライバーでもあります。デバイスの検出・管理、入力デバイスのイベントの処理・抽象化を担当し、ユーザーが期待する一般的な機能セットを提供することでコンポジタを改造する必要があるコードの量を減らします。&lt;br /&gt;
&lt;br /&gt;
X.Org の入力ドライバーは標準的な[[Xorg#入力デバイス|入力デバイス]]のほとんどサポートしています。特にプロジェクトが力を入れてるのは、タッチパッドやタッチスクリーンのタッチ機能 (マルチタッチやジェスチャー) の先進的なサポートです。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/ libinput のドキュメント] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[Wayland]] で libinput を使用する場合、特にインストールする必要があるものはありません。あなたが使用しているグラフィカル環境の依存パッケージとして {{pkg|libinput}} パッケージは既にインストールされているはずです。他に必要なドライバーはありません。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] で libinput を使用する場合、{{Pkg|xf86-input-libinput}} パッケージを[[インストール]]してください。xf86-input-libinput は libinput のラッパーで、X でも libinput で入力デバイスを扱えるようになります。evdev や synaptics の代わりのドライバーとしても使うことが可能です [https://freedesktop.org/wiki/Software/libinput/]。つまり、{{ic|xf86-input-}} で始まる X 用のドライバーパッケージを置換できます。&lt;br /&gt;
&lt;br /&gt;
また、{{Pkg|xorg-xinput}} をインストールすることで実行中に設定を変更することができます。&lt;br /&gt;
&lt;br /&gt;
== 設定 == &lt;br /&gt;
&lt;br /&gt;
[[Wayland]] 用の libinput 設定ファイルは存在しません。設定できるオプションは使用しているデスクトップ環境のサポート状況によって変わります。[[#グラフィカルツール]]を参照。&lt;br /&gt;
&lt;br /&gt;
[[Xorg]] 用のデフォルト設定ファイルは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} にインストールされます。キーボードやタッチパッド、トラックポイントやサポートされているタッチスクリーンなら特別な設定をしなくても自動で検出されます。&lt;br /&gt;
&lt;br /&gt;
=== xinput を使う ===&lt;br /&gt;
&lt;br /&gt;
まず、次を実行してください:&lt;br /&gt;
 # libinput list-devices&lt;br /&gt;
上記のコマンドは接続されているデバイスと、libinput によってサポートされている機能を出力します。&lt;br /&gt;
&lt;br /&gt;
グラフィカル環境を[[再起動]]すれば、他のドライバーが優先的に使用されるように設定されていないかぎり、デフォルト設定によって libinput によってデバイスが管理されるようになるはずです。&lt;br /&gt;
&lt;br /&gt;
設定できるオプションは {{man|4|libinput}} [[man ページ]]を参照してください。&#039;&#039;xinput&#039;&#039; ツールを使うことで使用している特定のデバイスのオプションを確認・変更することができます。&lt;br /&gt;
&lt;br /&gt;
デバイスとその番号を確認するには:&lt;br /&gt;
 $ xinput list&lt;br /&gt;
オプションを確認するには:&lt;br /&gt;
 $ xinput list-props &#039;&#039;device&#039;&#039;&lt;br /&gt;
オプションを設定するには:&lt;br /&gt;
 $ xinput set-prop &#039;&#039;device&#039;&#039; &#039;&#039;option-number&#039;&#039; &#039;&#039;setting&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
例えば、libinput の Click Method Enabled (303) のオプションを設定するには、以下のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 303 1 1&lt;br /&gt;
&lt;br /&gt;
または&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop 14 &amp;quot;libinput Click Method Enabled&amp;quot; 1 1&lt;br /&gt;
&lt;br /&gt;
=== Xorg 設定ファイルを使う ===&lt;br /&gt;
&lt;br /&gt;
オプションの永続的な設定については [[Xorg#.conf ファイルを使う]] を見て下さい。[[Logitech Marble Mouse#libinput を使う]]や下の[[#ボタンの再マッピング]]に設定例が載っています。&lt;br /&gt;
&lt;br /&gt;
通常、[[Xorg#入力デバイス|入力デバイス]]用に別のドライバーを同時にインストールすることができます。デバイスのドライバーを libinput を使うように切り替えたいときは、{{ic|/etc/X11/xorg.conf.d/}} にある昔の設定ファイルによって他のドライバーが優先されるようになっていないことを確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|libinput と synaptics を同時にインストールしてデフォルト設定を使っている場合 ({{ic|/etc/X11/xorg.conf.d}} に両方のファイルが存在しない場合)、{{ic|70-synaptics.conf}} のファイル名によって synaptics が優先されます。libinput を優先させたい場合、デフォルトの libinput 設定のシンボリックリンクを作成してください:&lt;br /&gt;
 # ln -s /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/40-libinput.conf&lt;br /&gt;
両方の設定ファイルが {{ic|/etc/X11/xorg.conf.d}} に存在する場合、libinput の設定ファイルは2番目になります。[[Xorg#.conf ファイルを使う]]を見てください。libinput を無効化したくなった場合、作成したシンボリックリンクを {{ic|/etc/X11/xorg.conf.d/}} から削除してください。}}&lt;br /&gt;
&lt;br /&gt;
どのデバイスが libinput によって管理されているか [[Xorg#共通|xorg のログファイル]]で確認できます。例えば、{{ic|/etc/X11/xorg.conf.d/}} に何も設定ファイルを置いていない (デバイスを自動で検出させている) ノートパソコンの場合、以下のようになります:&lt;br /&gt;
{{hc|$ grep -e &amp;quot;Using input driver &#039;libinput&#039;&amp;quot; &#039;&#039;/path/to/Xorg.0.log&#039;&#039;|&lt;br /&gt;
[    28.799] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.847] (II) Using input driver &#039;libinput&#039; for &#039;Video Bus&#039;&lt;br /&gt;
[    28.853] (II) Using input driver &#039;libinput&#039; for &#039;Power Button&#039;&lt;br /&gt;
[    28.860] (II) Using input driver &#039;libinput&#039; for &#039;Sleep Button&#039;&lt;br /&gt;
[    28.872] (II) Using input driver &#039;libinput&#039; for &#039;AT Translated Set 2 keyboard&#039;&lt;br /&gt;
[    28.878] (II) Using input driver &#039;libinput&#039; for &#039;SynPS/2 Synaptics TouchPad&#039;&lt;br /&gt;
[    28.886] (II) Using input driver &#039;libinput&#039; for &#039;TPPS/2 IBM TrackPoint&#039;&lt;br /&gt;
[    28.895] (II) Using input driver &#039;libinput&#039; for &#039;ThinkPad Extra Buttons&#039;}}&lt;br /&gt;
&lt;br /&gt;
もちろん、あるデバイスでは他のドライバーを使用して、他のデバイスでは libinput を使うようにすることもできます。使用するドライバーを決める要因は様々です。例えば、[[Synaptics タッチパッド]]ドライバーと比べて、libinput ドライバーにはタッチパッドの挙動をカスタマイズするためのオプションが少ないですが、マルチタッチイベントをよりプログラマティックに処理することができます (例: 手のひら検出)。従って、あるドライバーでハードウェアの問題を抱えるような場合、別のドライバーを試してみると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
カスタム設定ファイルは {{ic|/etc/X11/xorg.conf.d/}} に配置します。よく使われるファイル名は {{ic|30-touchpad.conf}} です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|利用可能な設定オプションや説明などは {{ic|/usr/share/X11/xorg.conf.d/40-libinput.conf}} や {{man|4|libinput}} のマニュアルページを参照してください。}}&lt;br /&gt;
&lt;br /&gt;
基本的な設定は以下のようになります:&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;devname&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    ...&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
単体の設定ファイルでお好きな数だけセクションを定義することができます。{{ic|MatchIsPointer &amp;quot;on&amp;quot;}}, {{ic|MatchIsKeyboard &amp;quot;on&amp;quot;}}, {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}}, {{ic|MatchIsTouchscreen &amp;quot;on&amp;quot;}} などを使って設定したいデバイスをフィルタリングしてください。詳しくは {{man|4|libinput}} を参照。一般的な設定オプションは以下の通りです:&lt;br /&gt;
* {{ic|&amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;}}: タップでクリック。&lt;br /&gt;
* {{ic|&amp;quot;ClickMethod&amp;quot; &amp;quot;clickfinger&amp;quot;}}: トラックパッドの中・右ボタンの領域が消えて、代わりに2本指のクリックが右クリックに、3本指のクリックが中クリックになります。詳しくは [https://wayland.freedesktop.org/libinput/doc/latest/clickpad-softbuttons.html#clickfinger-behavior ドキュメント] を参照。&lt;br /&gt;
* {{ic|&amp;quot;NaturalScrolling&amp;quot; &amp;quot;true&amp;quot;}}: ナチュラルスクロール (逆スクロール)。&lt;br /&gt;
* {{ic|&amp;quot;ScrollMethod&amp;quot; &amp;quot;edge&amp;quot;}}: エッジスクロール (縦スクロール)。&lt;br /&gt;
デバイスによっては上記の一部オプションが使えないこともあるので注意してください。&lt;br /&gt;
&lt;br /&gt;
=== グラフィカルツール ===&lt;br /&gt;
&lt;br /&gt;
複数の GUI ツールが存在します:&lt;br /&gt;
&lt;br /&gt;
* [[GNOME]]: &lt;br /&gt;
** コントロールセンターの &#039;Mouse &amp;amp; Touchpad&#039; に基本的な設定 UI が存在します。[[GNOME#マウスとタッチパッド]]も参照。&lt;br /&gt;
** {{pkg|gnome-tweaks}} には他にもいくつか設定が存在します。&lt;br /&gt;
* [[Cinnamon]]: &lt;br /&gt;
** GNOME UI と同じように設定することができます。&lt;br /&gt;
* [[MATE]]:&lt;br /&gt;
** Mouse option available in the settings panel. Also accessible using {{ic|mate-mouse-properties}}&lt;br /&gt;
* [[KDE|KDE Plasma]] 5: &lt;br /&gt;
** キーボード・マウス・コントローラーデバイスはシステム設定から設定できます。&lt;br /&gt;
* [[Xfce]]:&lt;br /&gt;
** Configured from the Mouse and Touchpad submenu in {{pkg|xfce4-settings}}.&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
=== ボタンの再マッピング ===&lt;br /&gt;
&lt;br /&gt;
例としてタッチパッドの2本指タップと3本指タップを置き換えるとします。デフォルトでは3本指タップでテキストを貼り付けることができますが、[[Xorg]] の設定ファイルで {{ic|TappingButtonMap}} オプションを設定することで2本指タップで貼り付けを行うように設定できます。1・2・3本指のタップを左・右・中に設定するには {{ic|TappingButtonMap}} を {{ic|lrm}} に、左・中・右にするには {{ic|lmr}} に設定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/30-touchpad.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;touchpad&amp;quot;&lt;br /&gt;
    Driver &amp;quot;libinput&amp;quot;&lt;br /&gt;
    MatchIsTouchpad &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;Tapping&amp;quot; &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;TappingButtonMap&amp;quot; &amp;quot;lmr&amp;quot;&lt;br /&gt;
EndSection}}&lt;br /&gt;
&lt;br /&gt;
デバイスがタッチパッドではない場合は {{ic|MatchIsTouchpad &amp;quot;on&amp;quot;}} を削除して {{ic|Identifier}} も変えてください。&lt;br /&gt;
&lt;br /&gt;
=== ボタンの手動再マッピング ===&lt;br /&gt;
&lt;br /&gt;
デバイスによってはボタンのマッピングを変えたいというときもあるでしょう。例えば、中ボタンがマウスホイールと一体となっている場合、マウスの親指ボタンを中ボタン (X11 では貼り付けに使われています) の代わりに使いたいと思うかもしれません。現在のボタンマッピングは次のコマンドで確認できます (&#039;&#039;device&#039;&#039; は {{ic|xinput list}} で確認できるデバイス名あるいはデバイス ID に置き換えてください):&lt;br /&gt;
 $ xinput get-button-map &#039;&#039;device&#039;&#039;&lt;br /&gt;
ボタン番号の順番は自由に変更することができます。例:&lt;br /&gt;
 $ xinput set-button-map &#039;&#039;device&#039;&#039; 1 6 3 4 5 0 7&lt;br /&gt;
上記の例では、6番目のボタンを中ボタンにマッピングして、元々の中ボタンは0を指定して無効にしています。[[Wayland]] でも上記の設定は使えますが、&#039;&#039;device&#039;&#039; の番号とボタンのマップの両方が異なっているので注意してください。Xorg と Wayland で設定を直接相互利用することはできません。&lt;br /&gt;
&lt;br /&gt;
{{Tip|({{Pkg|xorg-xev}} パッケージに含まれている) &#039;&#039;xev&#039;&#039; を使うことで実際のボタンがどの ID にマッピングされているか確認できます。}}&lt;br /&gt;
&lt;br /&gt;
デバイスによっては同じデバイス名で複数回、それぞれ異なる量のボタンが存在します。以下は [[xinitrc]] で Logitech Revolution MX マウスのボタンマッピングを変更する例です:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
for i in $(xinput list | grep &amp;quot;Logitech USB Receiver&amp;quot; | perl -n -e&#039;/id=(\d+)/ &amp;amp;&amp;amp; print &amp;quot;$1\n&amp;quot;&#039;)&lt;br /&gt;
	do if xinput get-button-map &amp;quot;$i&amp;quot; 2&amp;gt;/dev/null| grep -q 20; then&lt;br /&gt;
		xinput set-button-map &amp;quot;$i&amp;quot; 1 17 3 4 5 8 7 6 9 10 11 12 13 14 15 16 2 18 19 20&lt;br /&gt;
	fi&lt;br /&gt;
done&lt;br /&gt;
...&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッド感度の変更 ===&lt;br /&gt;
&lt;br /&gt;
libinput がタッチが押されたときと離されたときを認識する適切な閾値を探す方法は上流ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/touchpad-pressure-debugging.html#touchpad-pressure-hwdb] に書かれています。&lt;br /&gt;
&lt;br /&gt;
タッチパッドのカスタム圧力値は一時的なローカルデバイスクアークで設定できます。[https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html] を見てください。&lt;br /&gt;
&lt;br /&gt;
{{Note|クアークは内部的な API で将来的に libinput で動作するか保証がありません。バージョン 1.11 と 1.12 の間から、udev ルール [https://wayland.freedesktop.org/libinput/doc/1.11.3/udev_config.html#hwdb] が {{ic|.quirk}} ファイルによって置き換えられました [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html]。}}&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドの無効化 ===&lt;br /&gt;
&lt;br /&gt;
タッチパッドを無効化するには、まず {{ic|xinput list}} で名前を確認してから {{ic|xinput disable &#039;&#039;name&#039;&#039;}} で無効化してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* ID 番号を使うよりも名前を使うほうが安定して無効化できます。デバイスの番号は変わる可能性があります。&lt;br /&gt;
* 名前に空白が含まれる場合はクォートで囲ってください。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
設定を永続化する場合は[[自動起動]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== ジェスチャー ===&lt;br /&gt;
&lt;br /&gt;
libinput ドライバーにはスワイプやピンチなどの高度なマルチタッチイベントを処理できるロジックが含まれていますが [https://wayland.freedesktop.org/libinput/doc/latest/gestures.html]、[[デスクトップ環境]]や[[ウィンドウマネージャ]]がまだそれらのアクションを実装していない可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== libinput-gestures ====&lt;br /&gt;
&lt;br /&gt;
[[wikipedia:Extended_Window_Manager_Hints|EWMH]] ([https://www.freedesktop.org/wiki/Specifications/wm-spec/ wm-spec] を参照) 互換のウィンドウマネージャでは、代わりに [https://github.com/bulletmark/libinput-gestures libinput-gestures] ユーティリティを使うことができます。このプログラムは libinput のジェスチャーを ({{ic|libinput debug-events}} を使って) タッチパッドから読み込んで設定ファイルにあわせてジェスチャーをマッピングします。libinput に組み込まれている認識機能の範囲内で柔軟な設定が可能です。&lt;br /&gt;
&lt;br /&gt;
[https://github.com/bulletmark/libinput-gestures libinput-gestures] を使用するには、{{Aur|libinput-gestures}} パッケージをインストールしてください。デフォルト設定では、スワイプやピンチのジェスチャーが使えます。また、個人設定ファイルで自由にジェスチャーを定義できます。詳しくは [https://github.com/bulletmark/libinput-gestures/blob/master/README.md README] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== fusuma ====&lt;br /&gt;
&lt;br /&gt;
[https://github.com/iberianpig/fusuma Fusuma] は [[Ruby]] で書かれたマルチタッチジェスチャー認識ツールで、libinput-gestures の代替として使えます。&lt;br /&gt;
&lt;br /&gt;
{{ic|fusuma}} の [[Ruby#RubyGems|Ruby gem]] をインストールしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gem install fusuma&lt;br /&gt;
&lt;br /&gt;
また、AUR には旧バージョンが存在します: {{AUR|ruby-fusuma}}。&lt;br /&gt;
&lt;br /&gt;
それから {{ic|~/.config/fusuma/config.yml}} で以下のように設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/fusuma/config.yml|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
swipe:&lt;br /&gt;
  3: &lt;br /&gt;
    left: &lt;br /&gt;
      shortcut: &#039;alt+Right&#039;&lt;br /&gt;
    right: &lt;br /&gt;
      shortcut: &#039;alt+Left&#039;&lt;br /&gt;
    up: &lt;br /&gt;
      shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
    down: &lt;br /&gt;
      shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
pinch:&lt;br /&gt;
  in:&lt;br /&gt;
    shortcut: &#039;ctrl+shift+plus&#039;&lt;br /&gt;
  out:&lt;br /&gt;
    shortcut: &#039;ctrl+minus&#039;&lt;br /&gt;
&lt;br /&gt;
threshold:&lt;br /&gt;
  swipe: 0.5&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&lt;br /&gt;
interval:&lt;br /&gt;
  swipe: 0.2&lt;br /&gt;
  pinch: 0.2&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
スワイプの閾値を低くするとページをスワイプしすぎてしまいます。&lt;br /&gt;
&lt;br /&gt;
上記の設定は3本指のスワイプを使います。&lt;br /&gt;
&lt;br /&gt;
==== gebaar ====&lt;br /&gt;
[https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar] もジェスチャー認識ツールです。&lt;br /&gt;
Fusuma と違いピンチ (サポートは今後予定されています) やスワイプには対応していませんが、3/4指で上下左右にスワイプする以外に、Fusuma にはない斜めスワイプにも対応しています。&lt;br /&gt;
&lt;br /&gt;
gebaar のフォークは [https://github.com/Osleg/gebaar-libinput Gebaar] にあり、{{AUR|gebaar-libinput-git}} を使ってインストールすることができます。{{AUR|gebaar-libinput-git}} はピンチジェスチャーをサポートし、オリジナルの gebaar に機能が追加されています。このバージョンは現在活発に開発されており、オリジナルとは互換性のない設定変更が導入されていることに注意してください [https://github.com/Coffee2CodeNL/gebaar-libinput Gebaar]&lt;br /&gt;
&lt;br /&gt;
==== GnomeExtendedGestures ====&lt;br /&gt;
&lt;br /&gt;
GNOME との統合が必要な場合、[https://github.com/mpiannucci/GnomeExtendedGestures GnomeExtendedGestures] が存在します ({{Aur|gnome-shell-extension-extended-gestures-git}})。3本指の縦・横のジェスチャーを設定して gnome-shell のアクションを実行できます (アプリケーションの切り替えなど)。&lt;br /&gt;
&lt;br /&gt;
=== ボタンを押したままマウスでスクロールする ===&lt;br /&gt;
&lt;br /&gt;
マウスボタン(マウスにボタンがある場合は、右ボタンや中央ボタンなど)を押したままマウスを動かすことで、マウスやトラックボールでのスクロールを最適化する良い方法があります。マウスにマウスホイールがない場合 (トラックボールの場合が多い) に非常に便利です。そのためには、{{ic|ScrollMethod}} を {{ic|button}} に設定し、アクションの {{ic|ScrollButton}} オプションをマウスボタンを指定する必要があります。これを実現するための設定例を次に示します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/00-mouse.conf|&lt;br /&gt;
Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;system-mouse&amp;quot;&lt;br /&gt;
    MatchIsPointer &amp;quot;on&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollMethod&amp;quot; &amp;quot;button&amp;quot;&lt;br /&gt;
    Option &amp;quot;ScrollButton&amp;quot; &amp;quot;3&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== マウスホイールのスクロール速度の調整 ===&lt;br /&gt;
&lt;br /&gt;
マウスによっては、特に [[HiDPI]] デスクトップで使用する場合、ホイールのスクロールが遅すぎることがあります。[https://gitlab.freedesktop.org/xorg/driver/xf86-input-libinput/-/merge_requests/12 patch] が libinput にサブミットされましたが、受け付けられませんでした。このパッチにはサードパーティの [https://github.com/archlinuxcn/repo/tree/d0eb728b38450b47a4913539193a58fb523cc255/archlinuxcn/xf86-input-libinput-oldherl xf86-input-libinput] が組み込まれています。&lt;br /&gt;
&lt;br /&gt;
このパッチでは、マウスに新しいプロパティ {{ic|libinput Scroll Distance Scale}} が導入され、次のようなスケーリング係数を設定できます。&lt;br /&gt;
&lt;br /&gt;
 $ xinput --set-prop &#039;RAPOO Rapoo 2.4G Wireless Device&#039; &#039;libinput Scroll Distance Scale&#039; 2.5 2.5&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|RAPOO Rapoo 2.4G Wireless Device}} は、{{ic|xinput --list}} にリストされているマウスデバイスの名前です。{{ic|2.5 2.5}} は、それぞれx軸とy軸の倍率です。&lt;br /&gt;
&lt;br /&gt;
または、{{Aur|libinput-multiplier}} をインストールして [[Xorg]] を再起動し、y軸のスクロール距離を6倍に拡大します。&lt;br /&gt;
&lt;br /&gt;
 $echo 6&amp;gt;/tmp/libinput_discrete_deltay_multiplier&lt;br /&gt;
&lt;br /&gt;
フォーカス変更時に倍率を変更する場合 [https://github.com/tkkcc/libinput_patch#change-with-focused-window こちらを参照]&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|libinput debug-events}} を実行して問題をデバッグできないか確認してください。利用可能なオプションは {{man|1|libinput-debug-events}} を見てください。&lt;br /&gt;
&lt;br /&gt;
入力デバイスによってはカーネルのサポートが必要なことがありますが、それを確認するには {{Pkg|evemu}} パッケージに含まれている &#039;&#039;evemu-describe&#039;&#039; を使います:&lt;br /&gt;
&lt;br /&gt;
[http://ix.io/m6b software supported input trackpad driver] の出力を [https://github.com/whot/evemu-devices/blob/master/touchpads/SynPS2%20Synaptics%20TouchPad-with-scrollbuttons.events a supported trackpad] と比較して下さい (ABS_, ABS_MT, REL_X/Y)。クリックパッドの場合 {{ic|INPUT_PROP_BUTTONPAD}} プロパティも設定されます。&lt;br /&gt;
&lt;br /&gt;
=== タッチパッドが GNOME で動作しない ===&lt;br /&gt;
&lt;br /&gt;
以下のコマンドを実行してタッチパッドのイベントを GNOME デスクトップに送信してください:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad send-events enabled&lt;br /&gt;
&lt;br /&gt;
さらに、GNOME によって特定の設定が上書きされ、タップがオフになったり強制的にナチュラルスクロールになることがあります。そのような場合、GNOME の {{ic|gsettings}} コマンドラインツールを使うか、適当なグラフィカルフロントエンドを使って設定を行ってください。例えば、タップを有効にしてナチュラルスクロールを無効化したい場合、以下のようにタッチパッドの設定値を変更します:&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad tap-to-click true&lt;br /&gt;
 $ gsettings set org.gnome.desktop.peripherals.touchpad natural-scroll false&lt;br /&gt;
&lt;br /&gt;
== 参照 == &lt;br /&gt;
&lt;br /&gt;
* [https://wayland.freedesktop.org/libinput/doc/latest/index.html libinput Wayland ドキュメント]&lt;br /&gt;
* [https://archive.fosdem.org/2015/schedule/event/libinput/attachments/slides/591/export/events/attachments/libinput/slides/591/libinput_xorg.pdf FOSDEM 2015 - libinput] - Hans de Goede によるプロジェクトの目標と計画についての説明&lt;br /&gt;
*[http://who-t.blogspot.com.au/ Peter Hutterer のブログ] - プロジェクトのハッカーによる libinput 関連の記事&lt;br /&gt;
* [https://www.youtube.com/watch?v=HllUoT_WE7Y Talk by the primary libinput maintainer] outlining the history and state (as of 2020) of Linux input device handling&lt;br /&gt;
* [https://who-t.blogspot.com/2018/07/why-its-not-good-idea-to-handle-evdev.html Blog post by the libinput maintainer] outlining the rationale for libinput&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=St&amp;diff=36501</id>
		<title>St</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=St&amp;diff=36501"/>
		<updated>2024-03-10T09:55:22Z</updated>

		<summary type="html">&lt;p&gt;Shota: Update of other languages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:ターミナルエミュレータ]]&lt;br /&gt;
[[Category:Suckless]]&lt;br /&gt;
[[en:St]]&lt;br /&gt;
[[cs:St]]&lt;br /&gt;
[[pt:St]]&lt;br /&gt;
[[zh-hans:St]]&lt;br /&gt;
[http://st.suckless.org/ st] は [http://suckless.org suckless] による [[Xorg|X]] 向けのシンプルなターミナル実装です。[[xterm]] や [[urxvt]] を置き換える軽量なターミナルとして作られました。st は現在、256色、ほとんどの VT10X エスケープシーケンス、UTF-8、X11 コピー/ペースト、フォントのアンチエイリアス (fontconfig を使用)、フォールバックフォント、リサイズ、config.h によるショートカット、線画をサポートしています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
{{AUR|st}} または {{AUR|st-git}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
* [[Wayland]] では、st は Xwayland を使用します。Xwayland メモリフットプリントを回避して同様のターミナルを使用したい場合は、、{{AUR|wterm-git}} の使用を検討してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;st&#039;&#039; は、コンパイル時にコピーされる {{ic|config.h}} ファイルを介して構成されます。デフォルトは、ソースに含まれている{{ic|config.def.h}} です。独自の {{ic|config.h}} と [[PKGBUILD]] を自分でメンテナンスするようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== シェル ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;st&#039;&#039; のデフォルトシェルを変更するには、以下の行を編集:&lt;br /&gt;
&lt;br /&gt;
 static char shell[] = &amp;quot;/bin/sh&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
または、&#039;st&#039; の起動時にオプションの最後にシェルを指定します。&lt;br /&gt;
&lt;br /&gt;
 $ st &#039;&#039;options&#039;&#039; fish&lt;br /&gt;
&lt;br /&gt;
=== ターミナル ===&lt;br /&gt;
&lt;br /&gt;
ターミナルのタイプを変更するには、以下の行を編集:&lt;br /&gt;
&lt;br /&gt;
 static char *termname = &amp;quot;st-256color&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;st&#039;&#039; は {{ic|termname}} の値を {{ic|TERM}} 変数に設定します。&lt;br /&gt;
&lt;br /&gt;
=== フォント ===&lt;br /&gt;
&lt;br /&gt;
以下の行を自由に編集してください:&lt;br /&gt;
&lt;br /&gt;
 static char *font = &amp;quot;Liberation Mono:pixelsize=12:antialias=false:autohint=false&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
コマンドラインでフォントの名前を指定することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ st -f &amp;quot;Liberation Mono:size=12&amp;quot;&lt;br /&gt;
 $ st -f &#039;Liberation Mono-12&#039;&lt;br /&gt;
&lt;br /&gt;
フォント名は fc-list で見つけることができます。&lt;br /&gt;
&lt;br /&gt;
=== カーソル ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、マウスポインタは {{ic|XC_xterm;}} であり、見つけるのが難しいかもしれません。&lt;br /&gt;
&lt;br /&gt;
カーソルテーマの通常のテーマに変更するには、以下を編集します:&lt;br /&gt;
&lt;br /&gt;
 static unsigned int mouseshape = XC_left_ptr;&lt;br /&gt;
&lt;br /&gt;
=== カラー ===&lt;br /&gt;
&lt;br /&gt;
以下の行を編集することで&#039;&#039;前景&#039;&#039;・&#039;&#039;背景&#039;&#039;・&#039;&#039;カーソル&#039;&#039;の色を設定できます:&lt;br /&gt;
&lt;br /&gt;
 unsigned int defaultfg = 7;&lt;br /&gt;
 unsigned int defaultbg = 0;&lt;br /&gt;
 static unsigned int defaultcs = 256;&lt;br /&gt;
&lt;br /&gt;
上記の値は同一ファイルの {{ic|*colorname[]}} 配列を参照します。デフォルトの色を使うことも {{ic|#rrggbb}} という形式で色を追加することもできます。例:&lt;br /&gt;
&lt;br /&gt;
 static const char *colorname[] = {&lt;br /&gt;
    	/* 8 normal colors */&lt;br /&gt;
        &amp;quot;black&amp;quot;,&lt;br /&gt;
        &amp;quot;red3&amp;quot;,&lt;br /&gt;
        &amp;quot;green3&amp;quot;,&lt;br /&gt;
        &amp;quot;yellow3&amp;quot;,&lt;br /&gt;
        &amp;quot;blue2&amp;quot;,&lt;br /&gt;
        &amp;quot;magenta3&amp;quot;,&lt;br /&gt;
        &amp;quot;cyan3&amp;quot;,&lt;br /&gt;
        &amp;quot;gray90&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
        /* 8 bright colors */&lt;br /&gt;
        &amp;quot;gray50&amp;quot;,&lt;br /&gt;
        &amp;quot;red&amp;quot;,&lt;br /&gt;
        &amp;quot;green&amp;quot;,&lt;br /&gt;
        &amp;quot;yellow&amp;quot;,&lt;br /&gt;
        &amp;quot;#5c5cff&amp;quot;,&lt;br /&gt;
        &amp;quot;magenta&amp;quot;,&lt;br /&gt;
        &amp;quot;cyan&amp;quot;,&lt;br /&gt;
        &amp;quot;white&amp;quot;,&lt;br /&gt;
  &lt;br /&gt;
        [255] = 0,&lt;br /&gt;
  &lt;br /&gt;
        /* more colors can be added after 255 to use with DefaultXX */&lt;br /&gt;
        &amp;quot;#cccccc&amp;quot;,&lt;br /&gt;
        &amp;quot;#eeeeee&amp;quot;,&lt;br /&gt;
        &amp;quot;#111111&amp;quot;,&lt;br /&gt;
  };&lt;br /&gt;
  &lt;br /&gt;
 /*&lt;br /&gt;
  * Default colors (colorname index)&lt;br /&gt;
  * foreground, background, cursor&lt;br /&gt;
  */&lt;br /&gt;
 unsigned int defaultfg = 257;&lt;br /&gt;
 unsigned int defaultbg = 258;&lt;br /&gt;
 static unsigned int defaultcs = 256;&lt;br /&gt;
&lt;br /&gt;
カラーパレットの作成を容易にするツールが存在します。例えば、 [https://terminal.sexy terminal sexy] にはあらかじめ用意されたものがあり、&#039;&#039;st&#039;&#039; のフォーマットに直接エクスポートすることができます。([https://github.com/stayradiated/terminal.sexy/issues/22#issuecomment-430629424] を参照)。&lt;br /&gt;
&lt;br /&gt;
Solarized カラースキームのパッチがあります。インストールするには、[https://st.suckless.org/patches/solarized/] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== パッチ ===&lt;br /&gt;
&lt;br /&gt;
[https://st.suckless.org/patches/alpha/ suckless website] から入手できるパッチはたくさんあります。 パッチを適用するには、[https://www.gnu.org/software/diffutils/manual/html_node/Invoking-diff.html diff] をダウンロードし、 {{ic|patch -i patch.diff}} を使用して適用します。 これにより、デフォルトの設定ファイル {{ic|config.def.h}} が変更されます。 独自の {{ic|config.h}} を維持している場合は、 {{ic|config.h}} から {{ic|config.def.h}} に構成をコピーし、名前を {{ic|config.h}} に変更してから、 {{ic|make clean install}} を実行します。&lt;br /&gt;
&lt;br /&gt;
=== デスクトップエントリ ===&lt;br /&gt;
以下のような[[デスクトップエントリ]]を作成することで、指定したフォントで &#039;&#039;st&#039;&#039; を簡単に起動できます (例: {{Pkg|adobe-source-code-pro-fonts}}):&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.local/share/applications/simple-terminal.desktop|2=&lt;br /&gt;
[Desktop Entry]&lt;br /&gt;
Name=Simple Terminal&lt;br /&gt;
GenericName=Terminal&lt;br /&gt;
Comment=standard terminal emulator for the X window system&lt;br /&gt;
Exec=st -t &amp;quot;Suckless Terminal&amp;quot; -f &amp;quot;Source Code Pro:style=Semibold:size=12&amp;quot; -g &amp;quot;80x24&amp;quot;&lt;br /&gt;
Terminal=false&lt;br /&gt;
Type=Application&lt;br /&gt;
Encoding=UTF-8&lt;br /&gt;
Icon=terminal&lt;br /&gt;
Categories=System;TerminalEmulator;&lt;br /&gt;
Keywords=shell;prompt;command;commandline;cmd;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
上記のメニューエントリはアプリケーションリストのシステムツールに &#039;&#039;Simple Terminal&#039;&#039; として表示されます。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
==== キーボード ====&lt;br /&gt;
&lt;br /&gt;
一部のアプリケーションで {{ic|Delete}} が正しく機能しない場合は、以下を {{ic|~/.inputrc}} または {{ic|/etc/inputrc}} に追加します。&lt;br /&gt;
&lt;br /&gt;
 set enable-keypad on&lt;br /&gt;
&lt;br /&gt;
bash 上の IPython などの一部のアプリケーションで上記が動作しない場合、代わりに {{ic|enable-keypad}} をオフにして、st の [https://git.suckless.org/st/file/FAQ.html#l55 st FAQ] で紹介されているように、 {{ic|~/.bashrc}} に以下を追加してください。&lt;br /&gt;
&lt;br /&gt;
 printf &#039;\033[?1h\033=&#039; &amp;gt;/dev/tty&lt;br /&gt;
&lt;br /&gt;
=== Vim ===&lt;br /&gt;
==== &#039;&#039;vim&#039;&#039; のテキストの背景色が文字でない部分に表示されない ====&lt;br /&gt;
{{ic|config.h}} の {{ic|termname}} を {{ic|st-256color}} に設定して再コンパイルしてみてください。シェルの中で {{ic|TERM}} 変数は設定しないでください。{{ic|st-256color}} に設定すると問題が発生します。&lt;br /&gt;
&lt;br /&gt;
{{ic|.vimrc}} ファイルに以下の行を記述するという解決方法もあります:&lt;br /&gt;
&lt;br /&gt;
 if &amp;amp;term =~ &#039;256color&#039;&lt;br /&gt;
     &amp;quot; disable Background Color Erase (BCE) so that color schemes&lt;br /&gt;
     &amp;quot; render properly when inside 256-color tmux and GNU screen.&lt;br /&gt;
     &amp;quot; see also http://sunaku.github.io/vim-256color-bce.html&lt;br /&gt;
     set t_ut=&lt;br /&gt;
 endif&lt;br /&gt;
&lt;br /&gt;
==== 256color と truecolor が tmux などで機能しない ====&lt;br /&gt;
&lt;br /&gt;
まず、この [https://bbs.archlinux.org/viewtopic.php?pid=1755862#p1755862 スレッド] で説明されているように、 {{ic|~/.bashrc}} で {{ic|TERM}} の値を設定およびエクスポートしていないことを確認してください&lt;br /&gt;
{{note|{{ic|TERM}} を明示的に設定しないでください。 {{ic|tmux.conf}} で {{ic|default-terminal}} 設定を設定して正しく実行してください}}&lt;br /&gt;
&lt;br /&gt;
次に使用している vim のバージョンが &#039;&#039;&#039;{{ic|1=&amp;gt;=7.4.1799}}&#039;&#039;&#039; であることを確認します。これは、 {{ic|termguicolors}} が追加されたときです。&lt;br /&gt;
&lt;br /&gt;
最後に、以下を {{ic|~/.vimrc}} に追加します:&lt;br /&gt;
&lt;br /&gt;
 set t_8f=^[[38;2;%lu;%lu;%lum        &amp;quot; set foreground color&lt;br /&gt;
 set t_8b=^[[48;2;%lu;%lu;%lum        &amp;quot; set background color&lt;br /&gt;
 colorscheme Tomorrow-Night-Eighties&lt;br /&gt;
 set t_Co=256                         &amp;quot; Enable 256 colors&lt;br /&gt;
 set termguicolors                    &amp;quot; Enable GUI colors for the terminal to get truecolor&lt;br /&gt;
&lt;br /&gt;
{{note|{{ic|^[}} は、{{ic|t_8f}} と {{ic|t_8b}}の各値の前に付けるリテラルエスケープ(&amp;lt;Esc&amp;gt;)文字です。 これは単一の文字であり、{{ic | vim}}で再現できます。 &#039;&#039;&#039;INSERT&#039;&#039;&#039; モードで、{{ic|&amp;lt;C-v&amp;gt;-&amp;lt;Esc&amp;gt;}} を押します(Control+v を押してから Esc を押します)。 引き続き &#039;&#039;&#039;INSERT&#039;&#039;&#039; モードになります。 もう一度 &amp;lt;Esc&amp;gt; を押すと、 &#039;&#039;&#039;NORMAL&#039;&#039;&#039; モードに戻ります。&lt;br /&gt;
&lt;br /&gt;
{{tip|{{ic|colorscheme}}、{{ic|t_Co}}、{{ic|を設定する前に、{{ic|t_8f}} と {{ic|t_8b}} の値を設定することをお勧めします。 termguicolors}}.}}&lt;br /&gt;
&lt;br /&gt;
詳細については、{{ic|vim}} の {{ic|:help}} を参照してください: {{ic|xterm-true-color}}、{{ic|t_8f}}、{{ic|t_8b}}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== ページに絵文字が含まれているとクラッシュする ===&lt;br /&gt;
&lt;br /&gt;
[https://lists.suckless.org/dev/1707/31965.html グリフが関連付けられていない] カラー絵文字を含むページを読み込もうとすると、st がクラッシュする可能性があります。特に、 {{Pkg|ttf-joypixels}} などのフォントで見られる場合、別の端末から実行すると、次のようなものが返されます。&lt;br /&gt;
&lt;br /&gt;
 X Error of failed request:  BadLength (poly request too large or internal Xlib length error)&lt;br /&gt;
  Major opcode of failed request:  139 (RENDER)&lt;br /&gt;
  Minor opcode of failed request:  20 (RenderAddGlyphs)&lt;br /&gt;
  Serial number of failed request:  5118&lt;br /&gt;
  Current serial number in output stream:  5209&lt;br /&gt;
&lt;br /&gt;
これを修正するには、Unicode カバレッジ用に {{AUR|ttf-symbola}} をインストールするだけです。&lt;br /&gt;
&lt;br /&gt;
別の解決策は、 {{AUR|libxft-bgra}} パッケージをインストールすることです。 これによりカラー絵文字をサポートするパッチバージョンの libXft が提供されます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
*[http://st.suckless.org/ ホームページ]&lt;br /&gt;
*[http://git.suckless.org/st/plain/FAQ よくある質問]&lt;br /&gt;
*[http://git.suckless.org/st/ 公式 git リポジトリ]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2&amp;diff=32681</id>
		<title>アプリケーション一覧/マルチメディア</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%83%9E%E3%83%AB%E3%83%81%E3%83%A1%E3%83%87%E3%82%A3%E3%82%A2&amp;diff=32681"/>
		<updated>2023-07-04T05:47:43Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* Graphical image viewers */ nomacs が AUR に移動&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:アプリケーション]]&lt;br /&gt;
[[Category:マルチメディア]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:List of applications/Multimedia]]&lt;br /&gt;
[[es:List of applications/Multimedia]]&lt;br /&gt;
[[it:List of applications/Multimedia]]&lt;br /&gt;
[[ru:List of applications/Multimedia]]&lt;br /&gt;
[[uk:List of applications/Multimedia]]&lt;br /&gt;
[[zh-hans:List of applications/Multimedia]]&lt;br /&gt;
[[zh-hant:List of applications/Multimedia]]&lt;br /&gt;
{{List of Applications navigation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;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;
&lt;br /&gt;
See also [[Wikipedia:Comparison of image viewers]].&lt;br /&gt;
&lt;br /&gt;
===== Framebuffer image viewers =====&lt;br /&gt;
&lt;br /&gt;
* {{App|fbi|Linux フレームバッファコンソールの為の画像ビューア。|https://www.kraxel.org/blog/linux/fbida/|{{Pkg|fbida}}}}&lt;br /&gt;
* {{App|fbv|フレームバッファコンソール用のとてもシンプルな画像ファイルビューア。|http://s-tech.elsat.net.pl/fbv/|{{Pkg|fbv}}}}&lt;br /&gt;
* {{App|fim|広範囲にカスタマイズできるスクリプト可能なフレームバッファ画像ビューア、fbi ベース。|https://www.nongnu.org/fbi-improved/|{{AUR|fim}}}}&lt;br /&gt;
* {{App|jfbview|フレームバッファPDF/画像ビューア、Imlib2 ベース。Vim の様な操作性、回転とズーム、フィットの為のズーム、素早いマルチスレッドレンダリングなどの特徴があります。|https://github.com/jichu4n/jfbview|{{AUR|jfbview}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical image viewers =====&lt;br /&gt;
&lt;br /&gt;
* {{App|CoreImage|Simple lightweight easy to use image viewer based on Qt. Part of C-Suite.|https://cubocore.org/|{{AUR|coreimage}}}}&lt;br /&gt;
* {{App|Deepin Image Viewer|Deepin デスクトップ環境の画像ビューア。|https://www.deepin.org/en/original/deepin-image-viewer/|{{Pkg|deepin-image-viewer}}}}&lt;br /&gt;
* {{App|Ephoto|EFL ベースの軽量な画像ビューア。|https://www.enlightenment.org/about-ephoto|{{AUR|ephoto}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Eye_of_GNOME|Eye of GNOME]]|画像回覧・カタログ表示プログラム、GNOME デスクトップ環境の一部。|https://wiki.gnome.org/Apps/EyeOfGnome|{{Pkg|eog}}}}&lt;br /&gt;
* {{App|Eye of MATE|MATE デスクトップのシンプルな画像ビューア。|https://github.com/mate-desktop/eom|{{Pkg|eom}}}}&lt;br /&gt;
* {{App|EyeSight|Hawaii デスクトップ環境の画像ビューア。|https://github.com/hawaii-desktop/eyesight|{{AUR|eyesight}}}}&lt;br /&gt;
* {{App|[[feh]]|imlib2 を使う、高速で軽量な画像ビューア。|https://feh.finalrewind.org/|{{Pkg|feh}}}}&lt;br /&gt;
* {{App|GalaPix|OpenGL ベースの画像ビューア、大きな画像コレクションを同時に回覧・ズーム。|https://github.com/Galapix/galapix|{{AUR|galapix}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Geeqie|Geeqie]]|RAW ファイルのサポートなどの機能が追加されている画像ブラウザ・ビューア (GQview のフォーク)。|http://geeqie.org/|{{Pkg|geeqie}}}}&lt;br /&gt;
* {{App|GPicView|シンプルで高速な X 用画像ビューア、[[LXDE]] デスクトップの一部。|http://lxde.sourceforge.net/gpicview/|{{Pkg|gpicview}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Gwenview|Gwenview]]|KDE デスクトップ用の高速で簡単に使える画像ビューア。|https://apps.kde.org/gwenview|{{Pkg|gwenview}}}}&lt;br /&gt;
* {{App|ida|X11 application (Motif based) for viewing images.|https://www.kraxel.org/blog/linux/fbida/|{{Pkg|fbida}} + {{Pkg|libxpm}} + {{Pkg|openmotif}}}}&lt;br /&gt;
* {{App|imv|Wayland やアニメーション GIF にも対応している軽量な画像ビューア which uses FreeImage.|https://www.github.com/eXeC64/imv/|{{Pkg|imv}}}}&lt;br /&gt;
* {{App|Koko|Image viewer designed for desktop and touch devices.|https://apps.kde.org/koko/|{{AUR|koko}}}}&lt;br /&gt;
* {{App|KuickShow|Fast and convenient image viewer for KDE.|https://userbase.kde.org/KuickShow|{{Pkg|kuickshow}}}}&lt;br /&gt;
* {{App|LxImage-Qt|LXQt の画像ビューア。|https://github.com/lxde/lximage-qt|{{Pkg|lximage-qt}}}}&lt;br /&gt;
* {{App|meh|XLib だけを使用する small・単純・高速な画像ビューア。|https://www.johnhawthorn.com/meh/|{{AUR|meh-git}}}}&lt;br /&gt;
* {{App|Mirage|画像の切り取り・リサイズなどの機能、カスタムアクション、サムネイルパネルをサポートしている PyGTK 画像ビューア。|https://sourceforge.net/projects/mirageiv.berlios/|{{AUR|mirage}}}}&lt;br /&gt;
* {{App|nomacs|Qt 画像ビューア。機能豊富でありながら起動が速く、設定で様々なウィジェットを表示できます or only the image.|https://nomacs.org/|{{AUR|nomacs}}}}&lt;br /&gt;
* {{App|PhotoQt|シンプルで使いやすいインターフェイスを持つ、高速で細かい設定が可能な画像ビューア。|https://photoqt.org/|{{AUR|photoqt}}}}&lt;br /&gt;
* {{App|pqiv|GTK 3 based command-line image viewer with a minimal UI supporting images in compressed archives, rewrite of qiv.|https://github.com/phillipberndt/pqiv/|{{Pkg|pqiv}}}}&lt;br /&gt;
* {{App|qimgv|Fast and easy to use Qt5 image viewer. Supports webm/mp4 playback via mpv.|https://github.com/easymodo/qimgv/|{{AUR|qimgv}}}}&lt;br /&gt;
* {{App|qeh|Actually fast and simple image viewer. Like feh but faster and simpler, and support for more formats.|https://github.com/sandsmark/qeh/|{{AUR|qeh-git}}}}&lt;br /&gt;
* {{App|Quick Image Viewer|GTK と imlib2 を基にした非常に小さく高速な画像ビューア。|http://spiegl.de/qiv/|{{Pkg|qiv}}}}&lt;br /&gt;
* {{App|qView|Qt image viewer designed with minimalism and usability in mind.|https://interversehq.com/qview/|{{AUR|qview}}}}&lt;br /&gt;
* {{App|Ristretto|Xfce デスクトップ環境向けの高速で軽量な画像ビューア。|https://docs.xfce.org/apps/ristretto/start|{{Pkg|ristretto}}}}&lt;br /&gt;
* {{App|shufti|画像やファイルのディレクトリによってズームレベルや回転、ウィンドウサイズやデスクトップの位置・表示エリアの非破壊的な保存と復元ができるツール。|https://github.com/danboid/shufti|{{AUR|shufti}}}}&lt;br /&gt;
* {{App|[[sxiv]]|タイル型ウィンドウマネージャと上手く動作する imlib2 を使ったシンプルな画像ビューア。|https://github.com/muennich/sxiv|{{Pkg|sxiv}}}}&lt;br /&gt;
* {{App|Viewnior|画像の反転・回転・アニメーション機能と設定できるマウスアクション機能を持った最小主義の GTK 画像ビューア。|https://siyanpanayotov.com/project/viewnior|{{Pkg|viewnior}}}}&lt;br /&gt;
* {{App|Vimiv|vim ライクなキーバインドを備えた画像ビューア。Gtk3 ツールキットを使って Python 3 で書かれています。|https://karlch.github.io/vimiv/|{{Pkg|vimiv}}}}&lt;br /&gt;
* {{App|Vimiv (Qt port)|vim ライクなキーバインドを備えた画像ビューア。It is written in python3 and PyQt5.|https://karlch.github.io/vimiv-qt/|{{AUR|vimiv-qt}}}}&lt;br /&gt;
* {{App|vpv|Image viewer designed for scientific image visualization.|https://github.com/kidanger/vpv|{{AUR|vpv}}}}&lt;br /&gt;
* {{App|Xloadimage|クラシックな X 画像ビューア。|https://sioseis.ucsd.edu/xloadimage.html{{Dead link|2021|05|17|status=SSL error}}|{{Pkg|xloadimage}}}}&lt;br /&gt;
&lt;br /&gt;
==== Image organizers ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Image organizer]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Deepin Album|Photo manager for viewing and organizing pictures, for Deepin desktop.|https://github.com/linuxdeepin/deepin-album|{{Pkg|deepin-album}}}}&lt;br /&gt;
* {{App|[[Wikipedia:digiKam|digiKam]]|プラグイン方式の編集機能を備えている KDE ベースの画像管理ソフト。digiKam は RAW 現像や画像編集ができる他の似たアプリケーションよりも多くの機能があると主張しています。|https://www.digikam.org/|{{Pkg|digikam}}}}&lt;br /&gt;
* {{App|Frogr|Small application for the GNOME desktop that allows users to manage their accounts in the Flickr image hosting website.|https://wiki.gnome.org/Apps/Frogr|{{AUR|frogr}}}}&lt;br /&gt;
* {{App|GNOME Photos|GNOME で写真を表示・管理・共有。|https://wiki.gnome.org/Apps/Photos|{{Pkg|gnome-photos}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GThumb|gThumb]]|GNOME デスクトップ用の画像ビューア and browser。|https://wiki.gnome.org/Apps/Gthumb|{{Pkg|gthumb}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KPhotoAlbum|KPhotoAlbum]]|Digital image cataloging software that supports annotation, browsing, searching and viewing of digital images and videos.|https://www.kphotoalbum.org/|{{Pkg|kphotoalbum}}}}&lt;br /&gt;
* {{App|Memories|Image viewer and manager designed for elementary OS.|https://anufrij.org/memories/|{{AUR|showmypictures}}}}&lt;br /&gt;
* {{App|Pantheon Photos|Photo organizer for Pantheon.|https://launchpad.net/pantheon-photos|{{Pkg|pantheon-photos}}}}&lt;br /&gt;
* {{App|PhotoPrism|Personal Photo Management powered by Go and Google TensorFlow|https://photoprism.app/|{{AUR|photoprism}}}}&lt;br /&gt;
* {{App|Phototonic|Fast and functional image viewer and browser (Qt).|https://github.com/oferkv/phototonic/|{{Pkg|phototonic}}}}&lt;br /&gt;
* {{App|Pix|Image gallery and image viewer that can be used to open images with other applications like an image editor, add tags to the files, add annotations to pictures, rotate and share them.|https://apps.kde.org/pix/|{{Pkg|maui-pix}}}}&lt;br /&gt;
* {{App|Pix|Image viewer and browser based on gthumb. X-Apps Project.|https://github.com/linuxmint/pix|{{AUR|pix}}}}&lt;br /&gt;
* {{App|Rapid Photo Downloader|Download photos and videos from cameras, memory cards and portable storage devices.|https://www.damonlynch.net/rapid/|{{Pkg|rapid-photo-downloader}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Shotwell_(software)|Shotwell]]|GNOME デスクトップ環境のために作られたデジタル写真オーガナイザー。|https://wiki.gnome.org/Apps/Shotwell|{{Pkg|shotwell}}}}&lt;br /&gt;
&lt;br /&gt;
==== Image processing ====&lt;br /&gt;
&lt;br /&gt;
* {{App|CairoSVG|SVG to PNG, PDF, PS converter.|https://cairosvg.org/|{{Pkg|python-cairosvg}}}}&lt;br /&gt;
* {{App|Converseen|Qt-based batch image converter and resizer.|https://converseen.fasterland.net/|{{Pkg|converseen}}}}&lt;br /&gt;
* {{App|CropGUI|GTK utility for lossless cropping and rotation of jpeg files|https://github.com/jepler/cropgui|{{AUR|cropgui}}}}&lt;br /&gt;
* {{App|[[Wikipedia:dcraw|dcraw]]|多数のカメラの RAW 形式を変換。|https://dechifro.org/dcraw/|{{Pkg|dcraw}}}}&lt;br /&gt;
* {{App|[[Wikipedia:G&#039;MIC|G&#039;MIC]]|画像処理のためのフル機能のオープンソースフレームワーク。1d スカラ信号から 3d+t マルチスペクトル立体画像, including 2d color images まで様々なユーザーインターフェイスで画像データセットの変換・操作・フィルタリング・視覚化ができます。|https://www.gmic.eu/|{{Pkg|gmic}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GraphicsMagick|GraphicsMagick]]|API の保持とコマンドラインの安定を目指して作られた ImageMagick のフォーク。パフォーマンスを高めるためにマルチコアもサポートしており、そのパフォーマンスが買われて多くの商用サイト (Flickr, etsy) で使われています。|http://www.graphicsmagick.org/|{{Pkg|graphicsmagick}}}}&lt;br /&gt;
* {{App|[[ImageMagick]]|コマンドライン画像編集プログラム。100 以上のフォーマットの正確なコンバートをサポートしていることで知られています。基本的に API を使ってスクリプトを作りバックエンドで処理するのに使われます。|https://www.imagemagick.org/script/index.php|{{Pkg|imagemagick}}}}&lt;br /&gt;
* {{App|PosteRazor|Cut an image or PDF into pieces which can be printed and assembled to a poster|https://posterazor.sourceforge.io/|{{Pkg|posterazor}}}}&lt;br /&gt;
&lt;br /&gt;
===== Image compression =====&lt;br /&gt;
&lt;br /&gt;
====== Console ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Guetzli|Guetzli]]|A perceptual JPEG encoder, aiming for excellent compression density at high visual quality.|https://github.com/google/guetzli|{{Pkg|guetzli}}}}&lt;br /&gt;
* {{App|jpegoptim|JPEG optimization utility providing lossless and lossy compression.|https://www.kokkonen.net/tjko/projects.html#jpegoptim|{{Pkg|jpegoptim}}}}&lt;br /&gt;
* {{App|optipng|Lossless PNG compressor.|http://optipng.sourceforge.net/|{{Pkg|optipng}}}}&lt;br /&gt;
* {{App|oxipng|Lossless multithreaded PNG compressor.|https://github.com/shssoichiro/oxipng|{{Pkg|oxipng}}}}&lt;br /&gt;
* {{App|pngcrush|Tool for optimizing the compression of PNG files.|https://pmt.sourceforge.io/pngcrush/|{{Pkg|pngcrush}}}}&lt;br /&gt;
* {{App|pngquant|Lossy compression of PNG images.|https://pngquant.org/|{{Pkg|pngquant}}}}&lt;br /&gt;
* {{App|zopflipng|Highly efficient PNG optimisation tool using Google&#039;s zopfli library|https://github.com/google/zopfli|{{AUR|zopflipng-git}}}}&lt;br /&gt;
&lt;br /&gt;
====== Graphical ======&lt;br /&gt;
&lt;br /&gt;
* {{App|Curtail|GTK-based image compressor, supporting PNG and JPEG file types.|https://github.com/Huluti/Curtail|{{Pkg|curtail}}}}&lt;br /&gt;
* {{App|Image Optimizer|Simple lossless image optimizer built with Vala and Gtk for Elementary OS.|https://github.com/GijsGoudzwaard/Image-Optimizer|{{AUR|image-optimizer-git}}}}&lt;br /&gt;
* {{App|Trimage|Qt-based tool for optimizing PNG and JPG files.|https://trimage.org/|{{AUR|trimage}}}}&lt;br /&gt;
&lt;br /&gt;
==== ラスタ画像 editors ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of raster graphics editors]].&lt;br /&gt;
&lt;br /&gt;
* {{App|AzPainter|ペイントソフトウェア for illustration drawing.|https://gitlab.com/azelpg/azpainter|{{AUR|azpainter}}}}&lt;br /&gt;
* {{App|CorePaint|Simple bitmap painting tool to produce very simple graphics. Part of C-Suite.|https://cubocore.org/|{{AUR|corepaint}}}}&lt;br /&gt;
* {{App|Deepin Draw|Lightweight drawing tool for Deepin desktop.|https://github.com/linuxdeepin/deepin-draw|{{Pkg|deepin-draw}}}}&lt;br /&gt;
* {{App|Drawing|Drawing application for the GNOME desktop, using Cairo and GdkPixbuf for basic drawing operations.|https://github.com/maoschanz/drawing|{{Pkg|drawing}}}}&lt;br /&gt;
* {{App|Drawpile|Collaborative drawing program that allows multiple users to sketch on the same canvas simultaneously.|https://drawpile.net/|{{AUR|drawpile}}}}&lt;br /&gt;
* {{App|[[GIMP]]|[[Wikipedia:ja:Adobe Photoshop|Adobe Photoshop]] などのプロプライエタリエディタに似ている画像編集スイート。GIMP ([[GNU プロジェクト|GNU]] Image Manipulation Program) は 1990 年代半ばに開発がスタートし、今では多くの[[GIMP/CMYK サポート|プラグイン]]と追加機能を持っています。|https://www.gimp.org/|{{Pkg|gimp}}}}&lt;br /&gt;
* {{App|Glimpse|A fork of GIMP, usability-focused free software application capable of expert level image manipulation.|https://glimpse-editor.github.io/|{{AUR|glimpse-editor}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNU Paint|Gpaint]]|GNOME 用の [[Wikipedia:PC_Paintbrush|Paintbrush]] クローン。|https://www.gnu.org/software/gpaint/|{{AUR|gpaint}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GrafX2|GrafX2]]|Bitmap paint program specialized in 256 color drawing.|http://grafx2.chez.com/|{{Pkg|grafx2}}}}&lt;br /&gt;
* {{App|ImEditor|Simple and versatile image editor.|https://imeditor.github.io/|{{AUR|imeditor}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KolourPaint|KolourPaint]]|フリーの、KDE 用ラスタ画像エディタ。Windows 7 以前の Microsoft ペイントに似ていますが、透過などの追加機能を備えています。Part of {{Grp|kde-applications}} and {{Grp|kde-graphics}} groups.|http://kolourpaint.org/|{{Pkg|kolourpaint}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Krita|Krita]]|KDE プラットフォームのデジタルペインティング・イラストレーションソフトウェア。|https://krita.org/|{{Pkg|krita}}}}&lt;br /&gt;
* {{App|Milton|Infinite-canvas paint program.|https://www.miltonpaint.com/|{{AUR|milton}}}}&lt;br /&gt;
* {{App|mtPaint|パレットがインデックスされた画像やピクセルアート向けの画像編集プログラム。|http://mtpaint.sourceforge.net/|{{Pkg|mtpaint}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MyPaint|MyPaint]]|デジタルペインター向けのフリーグラフィックアプリケーション。|http://mypaint.org|{{Pkg|mypaint}}}}&lt;br /&gt;
* {{App|PhotoFlare|Simple but powerful image editor originally inspired by PhotoFiltre.|https://photoflare.io/|{{Pkg|photoflare}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Pinta (software)|Pinta]]|[[Wikipedia:ja:Paint.NET|Paint.NET]] に倣ったお絵かきプログラム。カジュアルユーザー向けのシンプルな GIMP 代替を提供することが目標。|https://pinta-project.com/|{{Pkg|pinta}}}}&lt;br /&gt;
* {{App|Pixelitor|Advanced image editor with support for layers, layer masks, text layers, multiple undo, blending modes, cropping, Gaussian blurring, unsharp masking, histograms, etc.|https://pixelitor.sourceforge.io/|{{AUR|pixelitor}}}}&lt;br /&gt;
* {{App|Swappy|Wayland native snapshot editing tool.|https://github.com/jtheoof/swappy|{{Pkg|swappy}}}}&lt;br /&gt;
* {{App|[[Wikipedia:XPaint|XPaint]]|多くの標準的なペイントプログラムが持っている機能を持ったカラー画像編集ツール。|https://sourceforge.net/projects/sf-xpaint/|{{AUR|xpaint}}}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:digiKam|digiKam]], Ephoto, GNOME Photos, [[Wikipedia:GThumb|gThumb]], ida, nomacs, Pantheon Photos, Phototonic and [[Wikipedia:Shotwell_(software)|Shotwell]] などの画像ビューア and organizers では基本的な画像編集もできます。&lt;br /&gt;
&lt;br /&gt;
==== Specialized photo editors ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:darktable|darktable]]|撮影ワークフローや RAW 現像をするためのアプリケーション。|https://www.darktable.org/|{{Pkg|darktable}}}}&lt;br /&gt;
* {{App|Filmulator|Simple raw photo editor based on the process of developing film.|https://filmulator.org/|{{AUR|filmulator}}}}&lt;br /&gt;
* {{App|FOSStriangulator|Tool for making triangulated illustrations out of photos.|https://github.com/FOSStriangulator/FOSStriangulator|{{AUR|fosstriangulator}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Hugin (software)|Hugin]]|Panorama photo stitcher.|http://hugin.sourceforge.net/|{{Pkg|hugin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:LightZone|LightZone]]|Professional-level digital darkroom and photo editor comparable to Photoshop Lightroom.|http://lightzoneproject.org/|{{AUR|lightzone}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Luminance HDR|Luminance HDR]]|HDR イメージングのワークフローを提供する、オープンソースのグラフィカルユーザーインターフェースアプリケーション。|http://qtpfsgui.sourceforge.net/|{{Pkg|luminancehdr}}}}&lt;br /&gt;
* {{App|[[Wikipedia:UFRaw|nUFRaw]]|Utility to read and manipulate raw images from digital cameras using DCRaw.|https://sourceforge.net/projects/nufraw/|{{Pkg|gimp-nufraw}}}}&lt;br /&gt;
* {{App|Oqapy|Photographic workflow application.|https://oqapy.eu/|{{AUR|oqapy}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Rawstudio|Rawstudio]]|Raw-image converter written in GTK.|https://rawstudio.org/|{{AUR|rawstudio}}}}&lt;br /&gt;
* {{App|[[Wikipedia:RawTherapee|RawTherapee]]|強力なクロスプラットフォームの raw 画像処理プログラム。|https://www.rawtherapee.com/|{{Pkg|rawtherapee}}}}&lt;br /&gt;
* {{App|Showfoto|Photo editor with powerful image editing tools.|https://www.digikam.org/|{{Pkg|digikam}}}}&lt;br /&gt;
&lt;br /&gt;
==== Photo geotagging ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Geotag|Match date/time information from photos with location information from a GPS unit or from a map.|http://geotag.sourceforge.net/|{{Pkg|geotag}}}}&lt;br /&gt;
* {{App|Geotagging|Photography geotagging tool to synchronize photos with gps track log (GPX).|https://github.com/jmlich/geotagging|{{AUR|geotagging}}}}&lt;br /&gt;
* {{App|GottenGeography|Easy to use photo geotagging application for the GNOME desktop.|https://launchpad.net/gottengeography|{{Pkg|gottengeography}}}}&lt;br /&gt;
* {{App|GPicSync|Inserts location in your pictures metadata from a GPS tracklog.|https://github.com/FrancoisSchnell/GPicSync|{{AUR|gpicsync}}}}&lt;br /&gt;
* {{App|GPSCorrelate|Correlate (geotagging) digital camera photos with GPS data in GPX format.|https://github.com/freefoote/gpscorrelate|{{Pkg|gpscorrelate}}}}&lt;br /&gt;
&lt;br /&gt;
==== ベクタ画像 editors ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of vector graphics editors]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Dia (software)|Dia]]|GTK ベースの作図プログラム。|https://wiki.gnome.org/Apps/Dia|{{Pkg|dia}}}}&lt;br /&gt;
* {{App|diagrams.net|Diagram drawing application built on web technology. Based on the [https://electronjs.org/ Electron] platform.|https://www.diagrams.net/|{{AUR|drawio-desktop}}}}&lt;br /&gt;
* {{App|Dot Matrix|The glyph playground of creativity from simple lines.|https://github.com/lainsce/dot-matrix/|{{AUR|dot-matrix}}}}&lt;br /&gt;
* {{App|Figma|Unofficial desktop application for Figma collaborative design tool. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/Figma-Linux/figma-linux|{{AUR|figma-linux}}}}&lt;br /&gt;
* {{App|Gravit Designer|Proprietary vector design application. Based on the [https://electronjs.org/ Electron] platform.|https://designer.io/|{{AUR|gravit-designer-bin}}}}&lt;br /&gt;
* {{App|[[Inkscape]]|ベクタ画像エディタ。[[Wikipedia:ja:Adobe Illustrator|Illustrator]], [[Wikipedia:ja:CorelDRAW|CorelDraw]], [[Wikipedia:Xara X|Xara X]] に似た機能を持ち SVG (Scalable Vector Graphics) ファイルフォーマットを使うことができます。Inkscape は多くの高度な SVG 機能をサポートしており（マーカー、クローン、アルファブレンドなど）、すっきりしたインターフェースを持っています。ノードの編集、複雑なパス操作、ビットマップのトレースなどを簡単に行えます。また、開かれた、コミュニティ貢献の開発によってユーザーと開発者のコミュニティは非常に活発です。|https://inkscape.org/|{{Pkg|inkscape}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Karbon (software)|Karbon]]|ベクタ画像エディタ、Calligra スイートの一部。|https://www.calligra.org/karbon/|{{Pkg|calligra}}}}&lt;br /&gt;
* {{App|[[LibreOffice|LibreOffice Draw]]|Vector graphics editor and diagramming tool included in the LibreOffice suite similar to Microsoft Visio.|https://www.libreoffice.org/discover/draw/|{{Pkg|libreoffice-still}} or {{Pkg|libreoffice-fresh}}}}&lt;br /&gt;
* {{App|Mockingbot|Proprietary prototyping &amp;amp; collaboration design tool. Based on the [https://electronjs.org/ Electron] platform.|https://mockingbot.com/|{{AUR|mockingbot}}}}&lt;br /&gt;
* {{App|[[OpenOffice|OpenOffice Draw]]|Vector graphics editor and diagramming tool included in the OpenOffice suite.|https://www.openoffice.org/product/draw.html|{{AUR|openoffice-bin}}}}&lt;br /&gt;
* {{App|Pencil Project|GUI プロトタイピング・モックアップツール。Based on the [https://electronjs.org/ Electron] platform.|https://pencil.evolus.vn/|{{AUR|pencil}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SK1 (program)|sK1]]|Adobe Illustrator や CorelDraw の代替、PostScript や PDF ですぐに出力できるようになっています。|https://sk1project.net/|{{AUR|sk1}}}}&lt;br /&gt;
* {{App|SvgVi|SVG viewer and editor using XML declarations.|https://gitlab.com/pwmc/svgvi|{{AUR|svgvi}}}}&lt;br /&gt;
* {{App|[[Wikipedia:yEd|yEd]]||多目的の proprietary ダイアグラム作成プログラム。フローチャート、ネットワーク図、UML ダイアグラム、BPMN ダイアグラム、マインドマップ、組織図、実体関連 (ER) 図。|https://www.yworks.com/products/yed|{{AUR|yed}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Xfig|Xfig]]|Interactive drawing tool.|http://mcj.sourceforge.net/|{{AUR|xfig}}}}&lt;br /&gt;
&lt;br /&gt;
==== Font editors ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of font editors]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Birdfont|Font editor which lets you create vector graphics and export TTF, EOT and SVG fonts.|https://birdfont.org/|{{Pkg|birdfont}}}}&lt;br /&gt;
* {{App|[[Wikipedia:FontForge|FontForge]]|Outline font editor.|https://fontforge.github.io/|{{Pkg|fontforge}}}}&lt;br /&gt;
* {{App|TruFont|Font-editing application.|https://trufont.github.io/|{{AUR|trufont}}}}&lt;br /&gt;
&lt;br /&gt;
==== 2D animation ====&lt;br /&gt;
* {{App|enve|Flexible, user expandable 2D animation software.|https://maurycyliebner.github.io/|{{AUR|enve-git}}}}&lt;br /&gt;
* {{App|Glaxnimate|Vector 2D animation software, mainly for Lottie and TGS formats, but have a good standard animated SVG export|https://glaxnimate.mattbas.org/|{{AUR|glaxnimate}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Toonz|OpenToonz]]|2D animation creation software.|https://opentoonz.github.io/e/|{{Pkg|opentoonz}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Pencil2D|Pencil2D]]|Easy, intuitive tool to make 2D hand-drawn animations.|https://www.pencil2d.org/|{{Pkg|pencil2d}}}}&lt;br /&gt;
* {{App|qStopMotion|Application for creating stop-motion animation movies. The users will be able to create stop-motions from pictures imported from a camera or from the harddrive and export the animation to different video formats such as mpeg or avi.|http://qstopmotion.org/|{{Pkg|qstopmotion}}}}&lt;br /&gt;
* {{App|Scribl|Application to create simple video lectures that combine audio with hand-drawn animation.|https://www.scribl.ink/|{{AUR|scribl}}}}&lt;br /&gt;
* {{App|Stopmotion|Application to create stop-motion animations. It helps you capture and edit the frames of your animation and export them as a single file.|http://linuxstopmotion.org/|{{AUR|stopmotion}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Synfig|Synfig Studio]]|2D animation software, designed as powerful industrial-strength solution for creating film-quality animation using a vector and bitmap artwork.|https://www.synfig.org/|{{Pkg|synfigstudio}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tupi (software)|TupiTube Desk]]|Desktop application to create and share 2D animations, focused on kids and teenagers.|https://www.maefloresta.com/|{{Pkg|tupitube}}}}&lt;br /&gt;
* {{App|Aseprite|Pixel art 2d animation|https://www.aseprite.org/|{{AUR|aseprite}}}}&lt;br /&gt;
* {{App|Pixelorama|Pixel art 2d animation|https://orama-interactive.itch.io/pixelorama|{{AUR|pixelorama}}}}&lt;br /&gt;
&lt;br /&gt;
The drawing application [[Wikipedia:Krita|Krita]] and the 3D editor [[Blender]] (Grease Pencil mode) have both 2D animation features too.&lt;br /&gt;
&lt;br /&gt;
==== 3D computer graphics ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of 3D computer graphics software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Art of Illusion|Java で書かれた 3D モデリング・レンダリングスタジオ。|http://www.artofillusion.org/|{{AUR|aoi}}}}&lt;br /&gt;
* {{App|[[Blender]]|3D モデリング、テキスチャ、アニメーションなどの機能を持った完全一体型の 3D グラフィック創作スイート。|https://www.blender.org/|{{Pkg|blender}}}}&lt;br /&gt;
* {{App|CloudCompare|3D point cloud and mesh processing software.|https://cloudcompare.org/|{{AUR|cloudcompare}}}}&lt;br /&gt;
* {{App|Dust3D|3D modeling software. It helps you create a 3D watertight base model in seconds. Use it to speed up your character modeling in game making, 3D printing, and so on.|https://dust3d.org/|{{AUR|dust3d}}}}&lt;br /&gt;
* {{App|F3D|A fast and minimalist KISS 3D viewer. Supported file formats: VTK (legacy and XML), STL, GLTF, PLY, OBJ, 3DS, …|https://f3d-app.github.io/f3d/|{{AUR|f3d}}}}&lt;br /&gt;
* {{App|Goxel|Open Source 3D voxel editor.|https://goxel.xyz/|{{Pkg|goxel}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MakeHuman|MakeHuman™]]|人間の体を作成するための Parametrical モデルのプログラム。|http://www.makehumancommunity.org/|{{AUR|makehuman}}}}&lt;br /&gt;
* {{App|MeshLab|System for processing and editing 3D triangular meshes.|https://www.meshlab.net/|{{AUR|meshlab}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Sweet_Home_3D|Sweet Home 3D]]|Interior design software application for the planning and development of floor plans|http://sweethome3d.com/|{{Pkg|sweethome3d}}}}&lt;br /&gt;
* {{App|[[Wikipedia:POV-Ray|POV-Ray]]|3D グラフィックを作成するスクリプトベースのレイトレーシングソフトウェア。|https://www.povray.org/|{{Pkg|povray}}}}&lt;br /&gt;
* {{App|VoxelShop|Extremely intuitive and powerful software to modify and create voxel objects.|https://blackflux.com/node/11{{Dead link|2021|05|17|status=SSL error}}|{{AUR|voxelshop}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Wings3d|Wings 3D]]|パワフルで使いやすい先進的なサブディビジョンモデラー。|http://www.wings3d.com/|{{AUR|wings3d}}}}&lt;br /&gt;
&lt;br /&gt;
==== Color pickers and palettes ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Agave|Colorscheme designer tool for GNOME.|https://web.archive.org/web/20170327063642/http://home.gna.org/colorscheme/|{{AUR|agave}}}}&lt;br /&gt;
* {{App|Chameleon|Simple color picker for X11 which outputs colors to stdout.|https://github.com/seebye/chameleon|{{AUR|chameleon-git}}}}&lt;br /&gt;
* {{App|ColorGrab|Cross-platform color picker.|https://github.com/nielssp/colorgrab|{{AUR|colorgrab}}}}&lt;br /&gt;
* {{App|Color Palette|Tool for viewing the GNOME color palette as defined by the design guidelines.|https://gitlab.gnome.org/World/design/palette|{{AUR|palette}}}}&lt;br /&gt;
* {{App|colorpicker|Click on a pixel on your screen and print its color value in RGB. Written for X11.|https://github.com/Jack12816/colorpicker|{{AUR|colorpicker}}}}&lt;br /&gt;
* {{App|Color Picker|Simplistic color picker for the Pantheon desktop.|https://github.com/RonnyDo/ColorPicker|{{AUR|color-picker}}}}&lt;br /&gt;
* {{App|Coulr|Color box to help developers and designers.|https://github.com/Huluti/Coulr|{{AUR|coulr}}}}&lt;br /&gt;
* {{App|Deepin Picker|Color picker tool for Deepin desktop.|https://www.deepin.org/en/original/deepin-picker/|{{Pkg|deepin-picker}}}}&lt;br /&gt;
* {{App|delicolour|Lightweight GTK 3 color finder.|https://github.com/eepp/delicolour|{{AUR|delicolour}}}}&lt;br /&gt;
* {{App|gcolor2|Simple GTK 2 color selector.|http://gcolor2.sourceforge.net/|{{Pkg|gcolor2}}}}&lt;br /&gt;
* {{App|Gcolor3|Simple GTK 3 color selector.|https://www.hjdskes.nl/projects/gcolor3/|{{Pkg|gcolor3}}}}&lt;br /&gt;
* {{App|GPick|Advanced color picker tool.|http://www.gpick.org/|{{Pkg|gpick}}}}&lt;br /&gt;
* {{App|KColorChooser|Simple application to select the color from the screen or from a pallete. Part of {{Grp|kde-graphics}}.|https://apps.kde.org/kcolorchooser/|{{Pkg|kcolorchooser}}}}&lt;br /&gt;
* {{App|Kontrast|Tool to check contrast for colors that allows verifying that your colors are correctly accessible. Part of {{Grp|kde-accessibility}}.|https://apps.kde.org/kontrast/|{{Pkg|kontrast}}}}&lt;br /&gt;
* {{App|MATE Color Selection|Choose colors from the palette or the screen. Run with {{ic|mate-color-select}}.|https://mate-desktop.org/|{{Pkg|mate-desktop}}}}&lt;br /&gt;
* {{App|Pick|Simple color picker tool for the Linux desktop.|https://www.kryogenix.org/code/pick|{{AUR|pick-colour-picker}}}}&lt;br /&gt;
* {{App|PrestoPalette|An artist&#039;s tool for creating harmonious color palettes.|https://github.com/PrestoPalette/PrestoPalette|{{AUR|prestopalette}}}}&lt;br /&gt;
* {{App|xcolor|Lightweight color picker for X11.|https://soft.github.io/xcolor/|{{Pkg|xcolor}}}}&lt;br /&gt;
&lt;br /&gt;
==== スクリーンキャプチャ ====&lt;br /&gt;
&lt;br /&gt;
[[スクリーンショットの取得#専用のソフトウェア]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Digital camera managers ====&lt;br /&gt;
&lt;br /&gt;
See [[gPhoto#Installation]].&lt;br /&gt;
&lt;br /&gt;
=== 音声 ===&lt;br /&gt;
&lt;br /&gt;
==== オーディオシステム ====&lt;br /&gt;
&lt;br /&gt;
See also the main article [[サウンドシステム]] and [[Wikipedia:ja:サウンドサーバ]].&lt;br /&gt;
&lt;br /&gt;
==== オーディオプレイヤー ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of audio player software]].&lt;br /&gt;
&lt;br /&gt;
Many applications in the [[#Video players]] section also support audio playback.&lt;br /&gt;
&lt;br /&gt;
===== Server =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Music Player Daemon]]|Audio player that has a server-client architecture. In order to interface with it, a separate client is needed.|https://www.musicpd.org/|{{Pkg|mpd}}}}&lt;br /&gt;
* {{App|[[:en:Funkwhale]]|self-hosted, modern, free and open-source music server, heavily inspired by Grooveshark. Instances can be federated.|https://funkwhale.audio/|{{AUR|funkwhale}}}}&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[cmus]]|多くの機能を持っている ncurses ベースのミュージックプレイヤー。|https://cmus.github.io/|{{Pkg|cmus}}}}&lt;br /&gt;
* {{App|Cplay|様々なオーディオプレイヤーに対応した curses フロントエンド (ogg123, mpg123, mpg321, splay, madplay, mikmod, xmp, sox)。|https://directory.fsf.org/wiki/Cplay|{{AUR|cplay}}}}&lt;br /&gt;
* {{App|davis|A CLI client for {{Pkg|mpd}}, written in Rust.|https://github.com/SimonPersson/davis}}&lt;br /&gt;
* {{App|Herrie|最小主義のコンソールベースのミュージックプレイヤー、ネイティブで AudioScrobbler をサポート。|https://github.com/EdSchouten/herrie|{{AUR|herrie}}}}&lt;br /&gt;
* {{App|[[MOC]]|ncurses コンソールオーディオプレイヤー。MP3, OGG, WAV フォーマットをサポート。|https://moc.daper.net/|{{Pkg|moc}}}}&lt;br /&gt;
* {{App|MPFC|Gstreamer ベースの curses インターフェイスを備えたオーディオプレーヤー。|https://code.google.com/archive/p/mpfc/|{{AUR|mpfc}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Mpg123|mpg123]]|Linux, FreeBSD, Solaris, HP-UX やその他多くの UNIX システムに対応している高速でフリーの MP3 コンソールオーディオプレイヤー (MP1 と MP2 もデコードします)。|https://www.mpg123.org/|{{Pkg|mpg123}}}}&lt;br /&gt;
* {{App|vitunes|Curses-based music player and playlist manager with vim-like keybindings.|http://vitunes.org/|{{AUR|vitunes}}}}&lt;br /&gt;
* {{App|whistle|curses ベースのコマンドライン音声プレイヤー。|https://github.com/ap0calypse/whistle/|{{AUR|whistle-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:XMMS2|XMMS2]]|人気のミュージックプレイヤーを完全に書き換えたもの。|https://xmms2.org|{{Pkg|xmms2}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
====== GStreamer-based ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Banshee (media player)|Banshee]]|[[Wikipedia:ja:iTunes|iTunes]] クローン、GTK と [[Mono]] で作られ、機能豊富です。Discontinued upstream.|https://gitlab.gnome.org/Archive/banshee|{{AUR|banshee}}}}&lt;br /&gt;
* {{App|Blanket|Improve focus and increase your productivity by listening to different sounds.|https://github.com/rafaelmardojai/blanket|{{Pkg|blanket}}}}&lt;br /&gt;
* {{App|Byte|Music player designed for elementary OS.|https://github.com/alainm23/byte|{{AUR|byte}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Clementine_(software)|Clementine]]|Qt5 にポートされた Amarok 1.4 クローン。 See also Strawberry (below).|https://www.clementine-player.org/|{{Pkg|clementine}}}}&lt;br /&gt;
* {{App|Cozy|Modern audio book player for Linux using GTK 3.|https://cozy.geigi.de/|{{AUR|cozy-audiobooks}}}}&lt;br /&gt;
* {{App|[[Exaile]]|Amarok の GTK クローン。|https://www.exaile.org/|{{AUR|exaile}}}}&lt;br /&gt;
* {{App|GNOME Music|GNOME の新しい音楽再生アプリケーション。エレガントな没入型のブラウザと、シンプルでわかりやすいコントロールを備えています。|https://wiki.gnome.org/Apps/Music|{{Pkg|gnome-music}}}}&lt;br /&gt;
* {{App|Guayadeque|巨大なコレクションを簡単に管理できるフル機能のメディアプレイヤー。GStreamer メディアフレームワークを使っています。|https://www.guayadeque.org/|{{AUR|guayadeque}}}}&lt;br /&gt;
* {{App|Lollypop|GNOME の音楽プレイヤー。|https://wiki.gnome.org/Apps/Lollypop|{{Pkg|lollypop}}}}&lt;br /&gt;
* {{App|Melody|Music player for listening to local music files, online radios and audio CD&#039;s.|https://anufrij.org/melody/|{{AUR|playmymusic}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Muine|Muine]]|C# で書かれた音楽プレイヤー。|https://gitlab.gnome.org/Archive/muine|{{AUR|muine}}}}&lt;br /&gt;
* {{App|Pantheon Music|Simple, fast, and good looking music player. The official elementary music player.|https://github.com/elementary/music|{{Pkg|pantheon-music}}}}&lt;br /&gt;
* {{App|Parlatype|Minimal audio player for manual speech transcription, for GNOME. It plays audio sources to transcribe them in your favorite text application.|https://www.parlatype.org/|{{AUR|parlatype}}}}&lt;br /&gt;
* {{App|Pragha|A lightweight two-panel GTK music manager written in C.|https://pragha-music-player.github.io/|{{Pkg|pragha}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Quod Libet (software)|Quod Libet]]|GTK, Python と GStreamer で書かれた音声プレイヤー。プレイリストで正規表現をサポートしています。|https://github.com/quodlibet/quodlibet/|{{Pkg|quodlibet}}}}&lt;br /&gt;
* {{App|[[Rhythmbox]]|iTunes の GTK クローン。GNOME のデフォルトプレイヤー。|https://wiki.gnome.org/Apps/Rhythmbox|{{Pkg|rhythmbox}}}}&lt;br /&gt;
* {{App|Sayonara|C++ で書かれた Qt フレームワークの小規模で高速な Linux 用の音声プレイヤー。|https://sayonara-player.com/|{{AUR|sayonara-player}}}}&lt;br /&gt;
* {{App|Strawberry|Fork of Clementine aimed at audio enthusiasts and music collectors. Uses Qt6.|https://www.strawberrymusicplayer.org/|{{Pkg|strawberry}}}}&lt;br /&gt;
* {{App|Tauon Music Box|Modern, comfortable and streamlined music player for the playback of your music collection.|https://tauonmusicbox.rocks/|{{AUR|tauon-music-box}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Phonon-based ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Amarok]]|機能が非常に多いことで有名な成熟した Qt ベースのプレイヤー。|https://amarok.kde.org/|{{AUR|amarok}}}}&lt;br /&gt;
* {{App|[[Wikipedia:JuK|JuK]]|オーディオジュークボックスアプリケーション。MP3, Ogg Vorbis, FLAC 音声ファイルをサポート。|https://juk.kde.org/|{{Pkg|juk}}}}&lt;br /&gt;
* {{App|Yarock|Modern looking music player, packed with features, that doesn’t depend on any specific desktop environment. Yarock is designed to provide an easy and pretty music browser based on cover art.|https://seb-apps.github.io/yarock/|{{AUR|yarock}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== Other ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Aqualung (software)|Aqualung]]|Advanced music player, which plays audio CDs, internet radio streams and podcasts as well as soundfiles in just about any audio format and has the feature of inserting no gaps between adjacent tracks.|https://aqualung.jeremyevans.net/|{{AUR|aqualung}}}}&lt;br /&gt;
* {{App|[[Audacious]]|Beep や古い XMMS に似ている [[Wikipedia:ja:Winamp|Winamp]] クローン。|https://audacious-media-player.org/|{{Pkg|audacious}}}}&lt;br /&gt;
* {{App|[[Wikipedia:DeaDBeeF|DeaDBeeF]]|多くの機能を持っている軽くて速い音楽プレイヤー。GNOME や KDE には依存せず、GTK GUI だけでなくコンソールだけでも利用可能。たくさんのプラグインやメタデータエディタも付属。|https://deadbeef.sourceforge.io/|{{AUR|deadbeef}}}}&lt;br /&gt;
* {{App|Deepin Music|Awesome music player with brilliant and tweakful UI Deepin-UI based.|https://www.deepin.org/en/original/deepin-music/|{{Pkg|deepin-music}}}}&lt;br /&gt;
* {{App|Drumstick MIDI File Player|MIDI file player based on Drumstick.|https://sourceforge.net/projects/dmidiplayer/|{{AUR|dmidiplayer}}}}&lt;br /&gt;
* {{App|Elisa|Simple music player by the KDE community aiming to provide a nice experience for its users.|https://apps.kde.org/elisa/|{{Pkg|elisa}}}}&lt;br /&gt;
* {{App|gmusicbrowser|MP3/OGG/FLAC ファイルコレクション用のオープンソースのジュークボックス。|https://gmusicbrowser.org/|{{AUR|gmusicbrowser}}}}&lt;br /&gt;
* {{App|Goggles Music Manager|音楽の自動カテゴライズ、ギャップレス再生、簡単なタグ編集、インターネットラジオなどの機能があるミュージックコレクションマネージャ and player。[[Wikipedia:Fox toolkit|Fox toolkit]] を使っています。|https://gogglesmm.github.io/|{{Pkg|gogglesmm}}}}&lt;br /&gt;
* {{App|LXMusic|最小主義で xmms2 ベースの音楽プレイヤー。|https://wiki.lxde.org/en/LXMusic|{{Pkg|lxmusic}}}}&lt;br /&gt;
* {{App|museeks|Minimalistic and easy to use music player. Based on the [https://electronjs.org/ Electron] platform.|https://museeks.io/|{{AUR|museeks-bin}}}}&lt;br /&gt;
* {{App|Musique|ありふれた音楽プレイヤー。|https://flavio.tordini.org/musique|{{AUR|musique}}}}&lt;br /&gt;
* {{App|[[Wikipedia:qmmp|Qmmp]]|Winamp や XMMS に似たユーザーインターフェースを持っている Qt ベースのマルチメディアプレイヤー。|https://qmmp.ylsoftware.com/|{{Pkg|qmmp}}}}&lt;br /&gt;
* {{App|Soundux|Soundboard that features a simple user interface.|https://soundux.rocks/|{{AUR|soundux}}}}&lt;br /&gt;
* {{App|Vvave|Tiny Qt music player to keep your favorite songs at hand.|https://vvave.kde.org/|{{Pkg|vvave}}}}&lt;br /&gt;
&lt;br /&gt;
==== Internet radio listeners ====&lt;br /&gt;
&lt;br /&gt;
* {{App|GNOME Internet Radio Locator|Easily find live radio programs based on geographical location of radio broadcasters on the Internet.|https://wiki.gnome.org/Apps/InternetRadioLocator|{{AUR|gnome-internet-radio-locator}}}}&lt;br /&gt;
* {{App|Goodvibes|Lightweight internet radio player.|https://gitlab.com/goodvibes/goodvibes|{{AUR|goodvibes}}}}&lt;br /&gt;
* {{App|Radiotray-NG|Internet radio player systray applet.|https://github.com/ebruck/radiotray-ng|{{AUR|radiotray-ng}}}}&lt;br /&gt;
* {{App|Shortwave|GTK 3 application for finding and listening to internet radio stations.|https://gitlab.gnome.org/World/Shortwave|{{AUR|shortwave}}}}&lt;br /&gt;
* {{App|Tuner|Minimalist radio station player.|https://github.com/louis77/tuner|{{AUR|tuner}}}}&lt;br /&gt;
&lt;br /&gt;
==== Music streaming clients ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Google Play Music Desktop Player|Beautiful cross platform desktop player for Google Play Music. Based on the [https://electronjs.org/ Electron] platform.|https://googleplaymusicdesktopplayer.com/{{Dead link|2021|05|17|status=SSL error}}|{{AUR|gpmdp}}}}&lt;br /&gt;
* {{App|Headset|Desktop app that turns YouTube into a world class music streaming service. Based on the [https://electronjs.org/ Electron] platform.|https://headsetapp.co/|{{AUR|headset}}}}&lt;br /&gt;
* {{App|MellowPlayer|A free, open source and cross-platform Qt-based desktop application that runs web-based music streaming services in its own window and provides integration with your desktop.|https://colinduquesnoy.gitlab.io/MellowPlayer/|{{AUR|mellowplayer}}}}&lt;br /&gt;
* {{App|Nuclear|Modern music player focused on streaming from free sources. Based on the [https://electronjs.org/ Electron] platform.|http://nuclear.gumblert.tech/|{{AUR|nuclear-player-bin}}}}&lt;br /&gt;
* {{App|[[pianobar]]|online radio Pandora のコンソールベースのフロントエンド。|https://6xq.net/projects/pianobar/|{{Pkg|pianobar}}}}&lt;br /&gt;
* {{App|Pithos|Python/GTK の Pandora Radio デスクトップクライアント。|https://pithos.github.io/|{{AUR|pithos}}}}&lt;br /&gt;
* {{App|[[Spotify]]|プロプライエタリの音楽ストリーミングサービス。ローカル再生と Spotify の巨大なライブラリからのストリーミング（フリーアカウントが必要）をサポート。|https://www.spotify.com/|{{AUR|spotify}}}}&lt;br /&gt;
&lt;br /&gt;
==== オーディオタグエディタ ====&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Beets]]|音楽ライブラリオーガナイザー、タグエディタ。|https://beets.io/|{{Pkg|beets}}}}&lt;br /&gt;
* {{App|Demlo|音楽のタグ付け、エンコード、バッチリネームなど。|https://ambrevar.bitbucket.io/demlo/|{{AUR|demlo}}}}&lt;br /&gt;
* {{App|id3|Command-line utility to edit ID3 1.x and 2.x tags.|https://squell.github.io/id3/|{{AUR|id3}}}}&lt;br /&gt;
* {{App|id3ted|Command line id3 tag editor.|https://muennich.github.io/id3ted/|{{AUR|id3ted}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|id3v2|Command line editor for id3v2 tags.|http://id3v2.sourceforge.net/|{{Pkg|id3v2}}}}&lt;br /&gt;
* {{App|MP3Info|MP3 technical info viewer and ID3 1.x tag editor.|https://ibiblio.org/mp3info/|{{Pkg|mp3info}}}}&lt;br /&gt;
* {{App|MP3Unicode|Command line utility to convert ID3 tags in mp3 files between different encodings.|http://mp3unicode.sourceforge.net/|{{Pkg|mp3unicode}}}}&lt;br /&gt;
* {{App|Taffy|シンプルなコマンドラインタグエディタ。多数の音声フォーマットに対応。|https://github.com/jangler/taffy|{{AUR|taffy}}}}&lt;br /&gt;
* {{App|Tagutil|CLI tool to edit music file&#039;s tag. It aims to provide both an easy-to-script interface and ease of use interactively.|https://github.com/kAworu/tagutil|{{AUR|tagutil}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Audio Tag Tool|MP3 と Ogg Vorbis ファイルのタグを編集するためのツール。|https://github.com/impegoraro/tagtool|{{AUR|tagtool}}}}&lt;br /&gt;
* {{App|Coquillo|Metadata editor for various audio formats.|https://github.com/sjuvonen/coquillo|{{AUR|coquillo}}}}&lt;br /&gt;
* {{App|[[Wikipedia:EasyTag|EasyTag]]|music ファイルの ID3 タグを回覧・編集・書込するためのユーティリティ, supports many audio formats.|https://wiki.gnome.org/Apps/EasyTAG|{{Pkg|easytag}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Ex Falso (software)|Ex Falso]]|クロスプラットフォーム対応のフリーでオープンソースオーディオタグエディタとライブラリ管理。Run with {{ic|exfalso}}.|https://github.com/quodlibet/quodlibet/|{{Pkg|quodlibet}}}}&lt;br /&gt;
* {{App|GabTag|Audio tagging tool written in GTK.|https://github.com/lachhebo/gabtag|{{AUR|gabtag}}}}&lt;br /&gt;
* {{App|Kid3|MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC, MP2, Speex, TrueAudio, WavPack, WMA, WAV, AIFF ファイルタグエディタ。|https://kid3.kde.org/|KDE: {{Pkg|kid3}}, Qt: {{Pkg|kid3-qt}}}}&lt;br /&gt;
* {{App|KTag Editor|ID3v tag editor developed in Qt5 framework. Supported files are mp3, wav, ogg, wma, flac, asf.|https://karoljkocmaros.blogspot.com/p/ktag-editor.html|{{AUR|ktageditor}}}}&lt;br /&gt;
* {{App|MP3Info GUI|MP3 の内部情報ビューアと ID3 1.x タグエディタ。The graphical interface can be launched with the {{ic|gmp3info}} command.|https://ibiblio.org/mp3info/|{{Pkg|mp3info}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MusicBrainz Picard|Picard]]|Python によって書かれたクロスプラットフォームのオーディオタグエディタ ([[Wikipedia:MusicBrainz|MusicBrainz]] 公式タグエディタ)。|https://picard.musicbrainz.org/|{{Pkg|picard}}}}&lt;br /&gt;
* {{App|NTag|Graphical tag editor focused on everyday life use cases.|https://github.com/nrittsti/ntag|{{AUR|ntag}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Puddletag|Puddletag]]|Windows 用の MP3tag のリプレースメント。|https://docs.puddletag.net/|{{AUR|puddletag}}}}&lt;br /&gt;
* {{App|Qoobar|ユニバーサルな Qt ベースの音声タグ付けプログラム (クラシック音楽に特化)。|http://qoobar.sourceforge.net/en/index.htm|{{AUR|qoobar}}}}&lt;br /&gt;
* {{App|Tag Editor|Qt GUI によるタグエディタ。コマンドラインインターフェイスも装備。MP4/M4A/AAC (iTunes), ID3v1, ID3v2, Vorbis, Opus, FLAC and Matroska に対応。|https://github.com/Martchus/tageditor|{{AUR|tageditor}}}}&lt;br /&gt;
* {{App|Thunar Media Tags Plugin|Adds special features for media files to the Thunar File Manager, including the ability to edit tags.|https://goodies.xfce.org/projects/thunar-plugins/thunar-media-tags-plugin|{{Pkg|thunar-media-tags-plugin}}}}&lt;br /&gt;
&lt;br /&gt;
==== Lyrics ====&lt;br /&gt;
&lt;br /&gt;
===== Lyrics players =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Floodlight Presenter|Presentation and lyrics program for churches to display lyrics and media.|https://floodlight.gitlab.io/|{{AUR|floodlight-presenter}}}}&lt;br /&gt;
* {{App|Give Me Lyrics|See the lyrics of the song that is playing, from any application.|https://github.com/muriloventuroso/givemelyrics|{{AUR|givemelyrics}}}}&lt;br /&gt;
* {{App|Lyrics|Display lyrics on media players with [[MPRIS]] interface.|https://github.com/naaando/lyrics|{{AUR|lyrics}}}}&lt;br /&gt;
* {{App|OSD Lyrics|Lyric show compatible with various media players.|https://github.com/osdlyrics/osdlyrics|{{Pkg|osdlyrics}}}}&lt;br /&gt;
&lt;br /&gt;
===== Lyrics downloaders =====&lt;br /&gt;
&lt;br /&gt;
* {{App|clyrics|拡張性がある歌詞取得プログラム。cmus や mocp のデーモンをサポート。|https://github.com/trizen/clyrics|{{AUR|clyrics}}}}&lt;br /&gt;
* {{App|glyrc|Command-line music related metadata searchengine, including support for downloading lyrics.|https://github.com/sahib/glyr|{{Pkg|glyr}}}}&lt;br /&gt;
&lt;br /&gt;
===== Lyrics editors =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Karaoke Lyrics Editor|Lyrics editor and CD+G/video exporter for Karaoke.|https://www.ulduzsoft.com/linux/karaoke-lyrics-editor/|{{AUR|karlyriceditor}}}}&lt;br /&gt;
* {{App|LyricsX|Lyrics editor.|https://github.com/timxx/lyricsx|{{AUR|lyricsx}}}}&lt;br /&gt;
&lt;br /&gt;
==== Audio converters ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Caudec|A multiprocess command line audio converter that supports many formats (FLAC, MP3, Ogg Vorbis, Windows codecs and many more)|https://caudec.cocatre.net/|{{AUR|caudec}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Ecasound|Ecasound]]|Command line tools designed for multitrack audio processing. It can be used for simple tasks like audio playback, recording and format conversions, as well as for multitrack effect processing, mixing, recording and signal recycling.|https://nosignal.fi/ecasound/|{{Pkg|ecasound}}}}&lt;br /&gt;
* {{App|FFaudioConverter|Batch audio converter and effects processor. It can convert files or whole folders containing music and video files to other audio formats with FFmpeg.|https://github.com/Bleuzen/FFaudioConverter|{{AUR|ffaudioconverter}}}}&lt;br /&gt;
* {{App|Flacon|Extracts individual tracks from one big audio file containing the entire album of music and saves them as separate audio files.|https://flacon.github.io/|{{AUR|flacon}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Fre:ac|fre:ac]]|Audio converter and CD ripper with support for various popular formats and encoders.|https://freac.org/|{{AUR|freac}}}}&lt;br /&gt;
* {{App|Gnac|GNOME の音声コンバーター。|http://gnac.sourceforge.net/|{{Pkg|gnac}}}}&lt;br /&gt;
* {{App|SoundConverter|A graphical application to convert audio files into different formats.|https://soundconverter.org/|{{pkg|soundconverter}}}}&lt;br /&gt;
* {{App|soundKonverter|Qt-based GUI front-end to various audio converters.|https://github.com/dfaust/soundkonverter|{{pkg|soundkonverter}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SoX|SoX]]|Command line utility that can convert various formats of computer audio files into other formats.|http://sox.sourceforge.net/|{{Pkg|sox}}}}&lt;br /&gt;
&lt;br /&gt;
==== サウンド編集 ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of digital audio editors]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Audacity (audio editor)|Audacity]]|デジタル音声の波形編集プログラム。|https://www.audacityteam.org/|{{Pkg|audacity}}}}&lt;br /&gt;
* {{App|GNOME Sound Recorder|録音と再生ができるサウンドレコーダアプリケーション。.flac, .ogg (OGG オーディオ, もしくは .oga), .wav 音声ファイル。|https://wiki.gnome.org/Apps/SoundRecorder|{{Pkg|gnome-sound-recorder}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Gnome Wave Cleaner|Gnome Wave Cleaner]]|Digital audio editor to denoise, dehiss and amplify audio files.|http://gwc.sourceforge.net/|{{AUR|gwc}}}}&lt;br /&gt;
* {{App|Kwave|KDE 用のサウンドエディタ。|http://kwave.sourceforge.net/|{{Pkg|kwave}}}}&lt;br /&gt;
* {{App|mhWaveEdit|Graphical program for editing, playing and recording sound files.|https://github.com/magnush/mhwaveedit/|{{AUR|mhwaveedit}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Mp3splt|Mp3splt]]|Utility to split mp3, ogg vorbis and native FLAC files selecting a begin and an end time position, without decoding.|http://mp3splt.sourceforge.net/|CLI: {{Pkg|mp3splt}}, GUI: {{Pkg|mp3splt-gtk}}}}&lt;br /&gt;
* {{App|ocenaudio|Proprietary cross-platform, easy to use, fast and functional audio editor.|https://www.ocenaudio.com/en/|{{AUR|ocenaudio-bin}}}}&lt;br /&gt;
* {{App|Play it Slowly|Play back audio files at a different speed or pitch.|https://29a.ch/playitslowly|{{Pkg|playitslowly}}}}&lt;br /&gt;
* {{App|Polyphone|A soundfont editor to create and edit a musical instrument based on samples, using the sf2 format.|https://www.polyphone-soundfonts.com/|{{Pkg|polyphone}}}}&lt;br /&gt;
* {{App|Snd|Advanced sound editor modeled loosely after Emacs.|https://ccrma.stanford.edu/software/snd/|{{Pkg|snd}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Sweep (software)|Sweep]]|Audio editor and live playback tool.|http://www.metadecks.org/software/sweep/|{{Pkg|sweep}}}}&lt;br /&gt;
* {{App|[[Wikipedia:WaveSurfer|WaveSurfer]]|Tool for sound visualization and manipulation. Typical applications are speech/sound analysis and sound annotation/transcription.|https://www.speech.kth.se/wavesurfer/|{{AUR|wavesurfer}}}}&lt;br /&gt;
&lt;br /&gt;
==== Digital audio workstations ====&lt;br /&gt;
&lt;br /&gt;
See also [[プロオーディオ]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Ardour (software)|Ardour]]|マルチチャンネルハードディスクレコーダーとデジタルオーディオワークステーション。|https://ardour.org/|{{Pkg|ardour}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Bitwig Studio|Bitwig Studio]]|プロプライエタリなプロフェッショナル用デジタルオーディオワークステーション。||https://www.bitwig.com/en/home.html|{{AUR|bitwig-studio}}}}&lt;br /&gt;
* {{App|Frinika|Digital audio workstation, features sequencer, soft-synths, realtime effects and audio recording.|https://www.frinika.com/|{{AUR|frinika}}}}&lt;br /&gt;
* {{App|[[LMMS]]|Digital audio workstation which コンピューターによる作曲を支援します。|https://lmms.io/|{{Pkg|lmms}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MusE|MusE]]|MIDI/Audio sequencer (digital audio workstation) with recording and editing capabilities, aims to be a complete multitrack virtual studio for Linux.|https://muse-sequencer.github.io//|{{Pkg|muse}}}}&lt;br /&gt;
* {{App|Non|Modular digital audio workstation composed of four main parts: Timeline, Sequencer, Mixer and Session Manager.|https://non.tuxfamily.org/|{{Pkg|non-timeline}}, {{Pkg|non-sequencer}}, {{Pkg|non-mixer}}, {{Pkg|new-session-manager}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Qtractor|Qtractor]]|Qt ベースのハードディスクレコーダーと、平均的なホームユーザーだけでなくプロフェッショナルユーザーの要求にも応えるパワフルなデジタルオーディオワークステーション。|https://qtractor.sourceforge.io/qtractor-index.html|{{Pkg|qtractor}}}}&lt;br /&gt;
* {{App|[[Wikipedia:REAPER|REAPER]]|Proprietary digital audio workstation, offering a full multitrack audio and MIDI recording, editing, processing, mixing and mastering toolset.|https://www.reaper.fm/|{{AUR|reaper-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Rosegarden|Rosegarden]]|ALSA と Qt を使って開発されたデジタルオーディオワークステーション、MIDI シーケンサー、楽譜エディタ、作曲・編曲ツールとして使用可能。|https://www.rosegardenmusic.com/|{{Pkg|rosegarden}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tracktion Waveform|Tracktion Waveform]]|Proprietary digital audio workstation, specifically designed for the needs of modern music producers.|https://www.tracktion.com/|{{AUR|tracktion-waveform}}}}&lt;br /&gt;
&lt;br /&gt;
==== Audio analyzers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|audioprism|Spectrogram tool for PulseAudio input and WAV files.|https://github.com/vsergeev/audioprism|{{AUR|audioprism}}}}&lt;br /&gt;
* {{App|[[Wikipedia:BRP-PACU|BRP-PACU]]|Dual channel FFT based acoustic analysis tool to help engineers analyze live professional sound systems using the transfer function.|https://sourceforge.net/projects/brp-pacu/|{{AUR|brp-pacu}}}}&lt;br /&gt;
* {{App|Baudline|Proprietary time-frequency and spectrogram analyzer|http://www.baudline.com/index.html|{{AUR|baudline-bin}}}}&lt;br /&gt;
* {{App|FMIT|Graphical utility for tuning your musical instruments, with error and volume history and advanced features.|https://gillesdegottex.github.io/fmit/|{{AUR|fmit}}}}&lt;br /&gt;
* {{App|Friture|Real-time audio analyzer.|https://friture.org/|{{AUR|friture}}}}&lt;br /&gt;
* {{App|Mousai|Simple application for identifying songs using the API of audd.io.|https://github.com/SeaDve/Mousai|{{AUR|mousai}}}}&lt;br /&gt;
* {{App|rtspeccy|Real time audio spectrum analyzer.|https://www.uninformativ.de/git/rtspeccy/|{{AUR|rtspeccy-git}}}}&lt;br /&gt;
* {{App|sndpeek|Real-time audio visualization tool.|https://soundlab.cs.princeton.edu/software/sndpeek/|ALSA: {{AUR|sndpeek-alsa}}, JACK: {{AUR|sndpeek-jack}}}}&lt;br /&gt;
* {{App|SongRec|Unofficial Shazam client to recognize audio from an arbitrary audio file or from the microphone, written in Rust.|https://github.com/marin-m/SongRec|{{Pkg|songrec}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Sonic Visualiser|Sonic Visualiser]]|Viewing and analyzing the contents of music audio files.|https://www.sonicvisualiser.org/|{{Pkg|sonic-visualiser}}}}&lt;br /&gt;
* {{App|Spek|Helps to analyse your audio files by showing their spectrogram.|http://spek.cc/|{{AUR|spek}}}}&lt;br /&gt;
&lt;br /&gt;
==== Scorewriters ====&lt;br /&gt;
&lt;br /&gt;
See also [[LilyPond#Front-ends]] and [[Wikipedia:Comparison of scorewriters]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Aria Maestosa|MIDI sequencer/editor. It lets you compose, edit and play MIDI files with a few clicks in a user-friendly interface offering score, keyboard, guitar, drum and controller views.|https://ariamaestosa.github.io/ariamaestosa/docs/index.html|{{AUR|ariamaestosa}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Canorus|Canorus]]|Music score editor. It supports an unlimited number and length of staffs, polyphony, a MIDI playback of notes, chord markings, lyrics, import/export filters to formats like MIDI, MusicXML, ABC Music, MusiXTeX and LilyPond.|https://sourceforge.net/projects/canorus/|{{AUR|canorus}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Impro-Visor|Impro-Visor]]|Music notation program designed to help jazz musicians compose and hear solos similar to ones that might be improvised.|https://www.cs.hmc.edu/~keller/jazz/improvisor/|{{AUR|impro-visor}}}}&lt;br /&gt;
* {{App|[[LilyPond]]|Music engraving program, devoted to producing the highest-quality sheet music possible.|https://lilypond.org/|{{Pkg|lilypond}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MuseScore|MuseScore]]|Create, playback, and print sheet music.|https://musescore.org/|{{Pkg|musescore}}}}&lt;br /&gt;
* {{App|[[Wikipedia:TuxGuitar|TuxGuitar]]|Multitrack guitar tablature editor and player.|http://tuxguitar.com.ar/|{{AUR|tuxguitar}}}}&lt;br /&gt;
&lt;br /&gt;
==== Audio synthesis environments ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of audio synthesis environments]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Blue|Music composition environment for Csound, written in Java.|https://blue.kunstmusik.com/|{{AUR|csound-blue}}}}&lt;br /&gt;
* {{App|Cabbage|Framework for audio software development using simple markup text and the Csound audio synthesis language.|https://cabbageaudio.com/|{{AUR|cabbage}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ChucK|ChucK]]|Strongly-timed, concurrent, and on-the-fly music programming language.|https://chuck.cs.princeton.edu/|{{Pkg|chuck}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Csound|Csound]]|Sound and music computing system.|https://csound.com/|{{Pkg|csound}}}}&lt;br /&gt;
* {{App|CsoundQt|Frontend for Csound featuring a highlighting editor with autocomplete, interactive widgets and integrated help.|https://csoundqt.github.io/|{{Pkg|csoundqt}}}}&lt;br /&gt;
* {{App|FoxDot|Live Coding with Python and SuperCollider.|https://foxdot.org/|{{Pkg|foxdot}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Pure Data|Pure Data]]|Real-time music and multimedia environment.|http://msp.ucsd.edu/software.html|{{Pkg|pd}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Sonic Pi|Sonic Pi]]|Code-based music creation and performance tool.|https://sonic-pi.net/|{{Pkg|sonic-pi}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SuperCollider|SuperCollider]]|Platform for audio synthesis and algorithmic composition, used by musicians, artists, and researchers working with sound.|https://supercollider.github.io/|{{Pkg|supercollider}}}}&lt;br /&gt;
* {{App|[[:en:VCV Rack]]| Virtual Eurorack DAW. Use a plugin systems to add more [[WIkipedia:Eurorack|Eurorack]] emulated modules.|https://vcvrack.com/|{{AUR|vcvrack}}}}&lt;br /&gt;
&lt;br /&gt;
==== Sound generators ====&lt;br /&gt;
&lt;br /&gt;
This section contains [[Wikipedia:Drum machine|drum machines]], [[Wikipedia:Software sampler|software samplers]] and [[Wikipedia:Software synthesizer|software synthesizers]].&lt;br /&gt;
&lt;br /&gt;
* {{App|ADLMIDI|OPL3/OPN2 synthesizer using ADLMIDI.|https://github.com/jpcima/adljack|{{Pkg|adljack}}}}&lt;br /&gt;
* {{App|ADLplug|FM Yamaha OPL3 synthesizer for ADLMIDI.|https://github.com/jpcima/ADLplug|{{Pkg|adlplug}}}}&lt;br /&gt;
* {{App|Agordejo|Music and audio production session manager based on NSM.|https://www.laborejo.org/agordejo/|{{Pkg|agordejo}}}}&lt;br /&gt;
* {{App|ams|Alsa Modular Synth. Realtime modular synthesizer and effect processor.|http://alsamodular.sourceforge.net/|{{Pkg|ams}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Amsynth|amsynth]]|Analog Modelling SYNTHesizer. Easy-to-use software synthesizer with a classic subtractive synthesizer topology.|https://amsynth.github.io/|{{Pkg|amsynth}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Din (din is noise)|DIN]]|Sound synthesizer and musical instrument.|https://dinisnoise.org/|{{Pkg|din}}}}&lt;br /&gt;
* {{App|Drumstick|Set of MIDI tools: drum grid, MIDI player, virtual piano.|https://drumstick.sourceforge.io/|{{Pkg|drumstick}}}}&lt;br /&gt;
* {{App|Element|A modular LV2/VST3 audio plugin host.|https://kushview.net/element/|{{Pkg|element}}}}&lt;br /&gt;
* {{App|Fluajho|SF2 soundfont sample player for JACK based on Fluidsynth.|https://www.laborejo.org/fluajho/|{{Pkg|fluajho}}}}&lt;br /&gt;
* {{App|[[FluidSynth]]|Real-time software synthesizer based on the SoundFont 2 specifications.|https://www.fluidsynth.org/|{{Pkg|fluidsynth}}}}&lt;br /&gt;
* {{App|Geonkick|Synthesizer that can synthesize elements of percussion. The most basic examples are: kicks, snares, hit-hats, shakers, claps.|https://gitlab.com/iurie-sw/geonkick|{{Pkg|geonkick}}}}&lt;br /&gt;
* {{App|Gigedit|Graphical instrument editor for sample based virtual instruments, based on the GigaStudio/Gigasampler file format.|http://doc.linuxsampler.org/Gigedit/|{{Pkg|gigedit}}}}&lt;br /&gt;
* {{App|GrandOrgue|Virtual pipe organ sample player application supporting a HW1 compatible file format.|https://sourceforge.net/projects/ourorgan/|{{AUR|grandorgue-svn}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|GSequencer|Provides various tools to play, create, edit and mix your own music. It features a step sequencer, piano roll, automation and wave-form editor.|https://nongnu.org/gsequencer/|{{AUR|gsequencer}}}}&lt;br /&gt;
* {{App|Helm|Software synthesizer to create electronic music on your computer.|https://tytel.org/helm/|{{Pkg|helm-synth}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Hydrogen (software)|Hydrogen]]|Advanced drum machine to create drum sequences.|https://github.com/hydrogen-music/hydrogen|{{Pkg|hydrogen}}}}&lt;br /&gt;
* {{App|JSampler|Java GUI for [[LinuxSampler]] software audio sampler.|http://jsampler.sourceforge.net/|{{Pkg|jsampler}}}}&lt;br /&gt;
* {{App|OPNplug|FM Yamaha OPN2 synthesizer for OPNMIDI.|https://github.com/jpcima/ADLplug|{{Pkg|opnplug}}}}&lt;br /&gt;
* {{App|Patroneo|Easy to use pattern based midi sequencer.|https://www.laborejo.org/patroneo/|{{Pkg|patroneo}}}}&lt;br /&gt;
* {{App|[[Wikipedia:PySynth|PySynth]]|Suite of simple music synthesizers and helper scripts written in Python 3.|https://mdoege.github.io/PySynth/|{{AUR|python-pysynth-git}}}}&lt;br /&gt;
* {{App|QMidiArp|Advanced MIDI arpeggiator, programmable step sequencer and LFO.|http://qmidiarp.sourceforge.net/|{{Pkg|qmidiarp}}}}&lt;br /&gt;
* {{App|QmidiCtl|MIDI remote controller application that sends MIDI data over the network, using UDP/IP multicast.|https://qmidictl.sourceforge.io/|{{Pkg|qmidictl}}}}&lt;br /&gt;
* {{App|QmidiNet|MIDI network gateway application that sends and receives MIDI data over the network, using UDP/IP multicast.|https://qmidinet.sourceforge.io/|{{Pkg|qmidinet}}}}&lt;br /&gt;
* {{App|QMidiRoute|MIDI router and processor for ALSA.|http://alsamodular.sourceforge.net/|{{Pkg|qmidiroute}}}}&lt;br /&gt;
* {{App|Qsampler|Qt GUI for [[LinuxSampler]] software audio sampler.|https://qsampler.sourceforge.io/|{{Pkg|qsampler}}}}&lt;br /&gt;
* {{App|Qsynth|Qt GUI for Fluidsynth.|https://qsynth.sourceforge.io/|{{Pkg|qsynth}}}}&lt;br /&gt;
* {{App|Qwertone|Simple music synthesizer app (like a toy-piano), but based on usual qwerty-keyboard for input.|https://gitlab.com/azymohliad/qwertone|{{AUR|qwertone-git}}}}&lt;br /&gt;
* {{App|QXGEdit|Qt GUI for editing MIDI System Exclusive files for XG devices (eg. Yamaha DB50XG).|https://qxgedit.sourceforge.io/|{{Pkg|qxgedit}}}}&lt;br /&gt;
* {{App|setBfree|DSP tonewheel organ.|https://setbfree.org/|{{Pkg|setbfree}}}}&lt;br /&gt;
* {{App|SpectMorph|Analyze samples of musical instruments and combine them (morphing).|http://spectmorph.org/|{{Pkg|spectmorph}}}}&lt;br /&gt;
* {{App|[[Timidity|TiMidity++]]|Software synthesizer, which can play MIDI files by converting them into PCM waveform data.|http://timidity.sourceforge.net/|{{Pkg|timidity++}}}}&lt;br /&gt;
* {{App|Vee One Suite|Old-school software instruments: synthv1, a polyphonic subtractive synthesizer; samplv1, a polyphonic sampler synthesizer; drumkv1, yet another drum-kit sampler; padthv1, a polyphonic additive synthesizer.|https://www.rncbc.org/|{{Pkg|synthv1}}, {{Pkg|samplv1}}, {{Pkg|drumkv1}}, {{Pkg|padthv1}}}}&lt;br /&gt;
* {{App|Vico|Minimalistic Midi sequencer that is intended to be used in parallel with other software.|https://www.laborejo.org/vico/|{{Pkg|vico}}}}&lt;br /&gt;
* {{App|VMPK|Virtual MIDI Piano Keyboard. MIDI events generator and receiver. It can use midi SoundFonts to generate sound by itself, or can be used to drive a MIDI synthesizer.|https://vmpk.sourceforge.io/|{{Pkg|vmpk}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Yoshimi (synthesizer)|Yoshimi]]|Software synthesizer, a fork of ZynAddSubFX.|http://yoshimi.sourceforge.net/|{{Pkg|yoshimi}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ZynAddSubFX|ZynAddSubFX]]|Fully featured software synthesizer capable of making a countless number of instruments, from some common heard from expensive hardware to interesting sounds that you will boost to an amazing universe of sounds.|https://zynaddsubfx.sourceforge.io/|{{Pkg|zynaddsubfx}}}}&lt;br /&gt;
&lt;br /&gt;
==== Music trackers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Buzztrax|Buzztrax]]|Music studio to compose songs using only a computer with a soundcard.|https://news.buzztrax.org/{{Dead link|2021|05|17|status=domain name not resolved}}|{{AUR|buzztrax}}}}&lt;br /&gt;
* {{App|FamiStudio|Very simple music editor for the Nintendo Entertainment System or Famicom.|https://famistudio.org/|{{AUR|famistudio}}}}&lt;br /&gt;
* {{App|klystrack|Tracker for making C64/NES/Amiga-style chiptunes on a modern platform.|https://kometbomb.github.io/klystrack/|{{AUR|klystrack-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MilkyTracker|MilkyTracker]]|Music application for creating .MOD and .XM module files.|https://milkytracker.titandemo.org/|{{Pkg|milkytracker}}}}&lt;br /&gt;
* {{App|[[Wikipedia:OpenMPT|OpenMPT]]|Tracker software to create and play back some great music on your computer.|https://openmpt.org/|{{AUR|openmpt}}}}&lt;br /&gt;
* {{App|Radium|Music editor with a new type of interface.|https://users.notam02.no/~kjetism/radium/|{{AUR|radium}}}}&lt;br /&gt;
* {{App|Schism Tracker|Create high quality music without the requirements of specialized, expensive equipment, and with a unique &amp;quot;finger feel&amp;quot; that is difficult to replicate in part.|http://schismtracker.org/|{{AUR|schismtracker}}}}&lt;br /&gt;
&lt;br /&gt;
==== DJ ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Giada|Minimal, hardcore audio tool for DJs, live performers and electronic musicians.|https://giadamusic.com/|{{Pkg|giada}}}}&lt;br /&gt;
* {{App|IDJC|Powerful yet easy to use source-client for individuals interested in streaming live radio shows over the Internet using Shoutcast or Icecast servers.|http://idjc.sourceforge.net/|{{AUR|idjc}}}}&lt;br /&gt;
* {{App|Linux Show Player|Powerful and feature-rich software to arrange cue lists. Designed for theatre plays and live music shows.|https://www.linux-show-player.org/|{{AUR|linux-show-player}}}}&lt;br /&gt;
* {{App|Luppp|Music creation tool, intended for live use. The focus is on real time processing and a fast and intuitive workflow.|http://openavproductions.com/luppp/|{{Pkg|luppp}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Mixxx|Mixxx]]|Integrates the tools DJs need to perform creative live mixes with digital music files.|https://mixxx.org/|{{Pkg|mixxx}}}}&lt;br /&gt;
* {{App|[[Seq24]]|Minimal loop based MIDI sequencer for a live performance with a very simple interface for editing and playing MIDI &#039;loops&#039;.|http://filter24.org/seq24/|{{AUR|seq24-bzr}}}}&lt;br /&gt;
* {{App|[[Wikipedia:xwax|xwax]]|Digital Vinyl System (DVS) for Linux. It allows DJs and turntablists to playback digital audio files (MP3, Ogg Vorbis, FLAC, AAC and more), controlled using a normal pair of turntables via timecoded vinyls.|https://xwax.org/|{{Pkg|xwax}}}}&lt;br /&gt;
&lt;br /&gt;
==== Audio effects ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Calf Plugin Pack for JACK|Process and produce sounds using a set of plugins with JACK interface. ({{ic|calfjackhost}})|https://calf-studio-gear.org/|{{Pkg|calf}}}}&lt;br /&gt;
* {{App|Carla|Audio plugin host, with support for many audio drivers and plugin formats.|https://kxstudio.linuxaudio.org/Applications:Carla|{{Pkg|carla}}}}&lt;br /&gt;
* {{App|guitarix|Virtual guitar amplifier for JACK.|https://guitarix.org/|{{Pkg|guitarix}}}}&lt;br /&gt;
* {{App|PulseEffects|Apply effects to PulseAudio applications and input sources over PipeWire (over PulseAudio with legacy package).|https://github.com/wwmm/pulseeffects|{{AUR|pulseeffects}}{{Broken package link|replaced by {{Pkg|easyeffects}}}}, {{AUR|pulseeffects-legacy-git}}}}&lt;br /&gt;
* {{App|Rakarrack|Richly featured multi-effects processor emulating a guitar effects pedalboard.|http://rakarrack.sourceforge.net/|{{AUR|rakarrack}}}}&lt;br /&gt;
&lt;br /&gt;
==== Audio visualizers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Barva|Visualizer for PulseAudio that pulses the background of your terminal.|https://github.com/Kharacternyk/barva/|{{AUR|barva-git}}}}&lt;br /&gt;
* {{App|C.A.V.A.|ALSA, MPD, PulseAudio に対応しているコンソールベースのオーディオビジュアライザー。|https://github.com/karlstav/cava/|{{AUR|cava}}}}&lt;br /&gt;
* {{App|Cavalcade|GTK GUI for C.A.V.A.|https://github.com/worron/cavalcade/|{{AUR|cavalcade}}}}&lt;br /&gt;
* {{App|cli-visualizer|カスタマイズ性が高い CLI ベースのオーディオビジュアライザー。|https://github.com/dpayne/cli-visualizer|{{AUR|cli-visualizer}}}}&lt;br /&gt;
* {{App|GLava|OpenGL audio spectrum visualizer. Its primary use case is for desktop windows or backgrounds.|https://github.com/wacossusca34/glava|{{Pkg|glava}}}}&lt;br /&gt;
* {{App|GLMViz|Fully configurable OpenGL music visualizer.|https://github.com/hannesha/GLMViz|{{AUR|glmviz-git}}}}&lt;br /&gt;
* {{App|Le Biniou|User-friendly, powerful music visualization / VJing tool.|https://biniou.net/|{{AUR|lebiniou}}}}&lt;br /&gt;
* {{App|[[projectM]]|3D アクセラレーションを使う反復画像ベースレンダリングを使うミュージックビジュアライザー。|https://github.com/projectM-visualizer/projectm|{{Pkg|projectm-pulseaudio}}}}&lt;br /&gt;
* {{App|[[Wikipedia:VSXu|VSXu]]|OpenGL-based (hardware-accelerated), modular programming environment with its main purpose to リアルタイムのオーディオビジュアルプリセットを作成・表示.|https://www.vsxu.com/|{{AUR|vsxu}}}}&lt;br /&gt;
&lt;br /&gt;
==== Remote audio ====&lt;br /&gt;
&lt;br /&gt;
* {{App|jammr|Play jam sessions with musicians around the world over the internet.|https://jammr.net/|{{AUR|jammr}}}}&lt;br /&gt;
* {{App|Jamulus|Enables musicians to perform real-time jam sessions over the internet.|https://jamulus.io/|{{AUR|jamulus}}}}&lt;br /&gt;
* {{App|Noson|Fast and smart controller for SONOS devices.|https://janbar.github.io/noson-app/|{{AUR|noson-app}}}}&lt;br /&gt;
* {{App|SonoBus|Application for streaming high-quality, low-latency peer-to-peer audio between devices over the internet or a local network.|https://sonobus.net/|{{AUR|sonobus}}}}&lt;br /&gt;
* {{App|Upplay|Qt-based UPnP audio control point.|https://lesbonscomptes.com/upplay/|{{AUR|upplay}}}}&lt;br /&gt;
&lt;br /&gt;
==== 音量調整 ====&lt;br /&gt;
&lt;br /&gt;
See also [[PulseAudio#Front-ends]] and [[JACK Audio Connection Kit#GUI]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:alsamixer|alsamixer]]|Soundcard mixer for ALSA soundcard driver, with ncurses interface.|https://alsa-project.org/|{{Pkg|alsa-utils}}}}&lt;br /&gt;
* {{App|ALSA Tray|Provides a systray icon and a command line interface for setting the volume of the ALSA Mixers.|https://projects.flogisoft.com/alsa-tray/|{{AUR|alsa-tray}}}}&lt;br /&gt;
* {{App|AlsaVolume|Tray ALSA volume changer written using gtkmm.|https://github.com/Vitozz/cppAlsaVolume|{{AUR|cpp-alsa-volume}}}}&lt;br /&gt;
* {{App|AMixST|Volume wheel using ALSA and Qt5.|https://github.com/FenixFyreX/amixst|{{AUR|amixst}}}}&lt;br /&gt;
* {{App|Emixer|Utility to control volume levels. Part of Enlightenment.|https://www.enlightenment.org/about-enlightenment|{{Pkg|enlightenment}}}}&lt;br /&gt;
* {{App|GNOME ALSA Mixer|ALSA mixer for GNOME.|https://launchpad.net/gnome-alsamixer|{{AUR|gnome-alsamixer}}}}&lt;br /&gt;
* {{App|GVolWheel|トレイアイコンからボリュームを操作できるオーディオミキサー。|https://github.com/Junker/gvolwheel|{{AUR|gvolwheel}}}}&lt;br /&gt;
* {{App|KMix|KDE volume control program.|https://apps.kde.org/kmix/|{{Pkg|kmix}}}}&lt;br /&gt;
* {{App|MATE Volume Control|Audio mixer application and system tray applet for MATE to mix audio and adjust volume levels of various audio mixer devices.|https://github.com/mate-desktop/mate-media|{{Pkg|mate-media}}}}&lt;br /&gt;
* {{App|PNMixer|Obmixer のフォーク。ALSA のチャンネル選択、接続・切断の検出、ショートカットなどの機能が追加されています。|https://github.com/nicklan/pnmixer/wiki|{{AUR|pnmixer}}}}&lt;br /&gt;
* {{App|QasTools|Collection of desktop applications for the Linux sound system ALSA. It provides QasMixer (mixer), QasHctl (HCTL mixer) and QasConfig (configuration browser).|https://gitlab.com/sebholt/qastools|{{Pkg|qastools}}}}&lt;br /&gt;
* {{App|Retrovol|Retro-looking volume setting tray applet.|https://github.com/pizzasgood/retrovol|{{AUR|retrovol}}}}&lt;br /&gt;
* {{App|Volctl|Per-application system tray applet volume control for PulseAudio.|https://buzz.github.io/volctl/|{{AUR|volctl}}}}&lt;br /&gt;
* {{App|[[Volnoti]]|GNU/Linux などの POSIX オペレーティングシステム向けの軽量なボリューム通知デーモン。|https://github.com/davidbrazdil/volnoti|{{AUR|volnoti}}}}&lt;br /&gt;
* {{App|Volti|内蔵ミキサーとマルチメディアキーのサポートがある、システムトレイからオーディオボリュームを操作するための GTK アプリケーション。ALSA だけを使用します。|https://github.com/gen2brain/volti|{{AUR|volti}}}}&lt;br /&gt;
* {{App|Volume Icon|チャンネル選択、テーマや外部ミキサーなどが使えるシステムトレイのボリュームコントロール。|http://nullwise.com/volumeicon.html|{{Pkg|volumeicon}}}}&lt;br /&gt;
* {{App|VolWheel|トレイアイコンをスクロールしてサウンドボリュームを操作できる小さなアプリケーション。|https://oliwer.net/b/volwheel.html|{{AUR|volwheel}}}}&lt;br /&gt;
* {{App|Xfce ALSA Panel Plugin|Simple ALSA volume control plugin for [[Xfce]]4 panel.|https://github.com/equeim/xfce4-alsa-plugin|{{AUR|xfce4-alsa-plugin}}}}&lt;br /&gt;
&lt;br /&gt;
==== CD リッピング ====&lt;br /&gt;
&lt;br /&gt;
[[光学ディスクドライブ#CD]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== 動画 ===&lt;br /&gt;
&lt;br /&gt;
==== ビデオプレーヤー ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of video player software]].&lt;br /&gt;
&lt;br /&gt;
===== コンソール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[FFmpeg|FFplay]]|FFmpeg ライブラリと SDL ライブラリを使用するシンプルでポータブルなメディアプレイヤー。 It is mostly used as a testbed for the various FFmpeg APIs.|https://ffmpeg.org/|{{Pkg|ffmpeg}}}}&lt;br /&gt;
* {{App|[[GStreamer|gst-play-1.0]]|GStreamer のシンプルなコマンドライン再生テストツール。|https://gstreamer.freedesktop.org/|{{Pkg|gst-plugins-base-libs}}}}&lt;br /&gt;
* {{App|[[MPlayer]]|多様なビデオ・オーディオフォーマットをサポートしているビデオプレイヤー。|https://mplayerhq.hu/design7/news.html|{{Pkg|mplayer}}}}&lt;br /&gt;
* {{App|[[mpv]]|MPlayer と mplayer2 ベースの動画プレイヤー|https://mpv.io/|{{Pkg|mpv}}}}&lt;br /&gt;
* {{App|[[VLC media player]]|TTY で HD 動画をスムーズに再生できる、有名なビデオプレイヤーのコマンドライン版。The  rc interface can be launched with {{ic|vlc -I rc}}, and the ncurses interface {{ic|vlc -I ncurses}} で起動します。|https://www.videolan.org/vlc/|{{Pkg|vlc}}}}&lt;br /&gt;
&lt;br /&gt;
===== グラフィカル =====&lt;br /&gt;
&lt;br /&gt;
====== GStreamer-based ======&lt;br /&gt;
&lt;br /&gt;
* {{App|Cinema|Video player and manager for watching local video files.|https://anufrij.org/cinema/|{{AUR|playmyvideos}}}}&lt;br /&gt;
* {{App|Clapper|GNOME media player built using GJS with GTK4 toolkit and powered by GStreamer with OpenGL rendering.|https://rafostar.github.io/clapper/|{{AUR|clapper}}}}&lt;br /&gt;
* {{App|Glide|Simple and minimalistic media player relying on GStreamer for the multimedia support and GTK+ for the user interface.|https://github.com/philn/glide|{{Pkg|glide}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GNOME Videos|GNOME Videos]]|GStreamer を使用する GNOME デスクトップのメディアプレイヤー (音声と動画の両方に対応)。{{Grp|gnome}} に含まれています。|https://wiki.gnome.org/Apps/Videos|{{Pkg|totem}}}}&lt;br /&gt;
* {{App|Identity|Program for comparing multiple versions of an image or video.|https://gitlab.gnome.org/YaLTeR/identity|{{AUR|identity}}}}&lt;br /&gt;
* {{App|Movie Monad|Free and simple to use video player made with Haskell using [[GStreamer]] and GTK. Precompiled and no Haskell dependency in run-time. |https://lettier.github.io/movie-monad/|{{AUR|movie-monad}}}}&lt;br /&gt;
* {{App|Pantheon Videos|Video player and library app designed for elementary OS using [[GStreamer]].|https://github.com/elementary/videos|{{Pkg|pantheon-videos}}}}&lt;br /&gt;
* {{App|Parole|[[GStreamer]] フレームワークによるモダンなメディアプレイヤー。|https://docs.xfce.org/apps/parole/start|{{Pkg|parole}}}}&lt;br /&gt;
* {{App|Rage|おまけ機能が存在する Enlightenment Foundation Libraries を使って書かれた動画・音声プレイヤー。Uses [[GStreamer]]|https://www.enlightenment.org/about-rage|{{AUR|rage}}}}&lt;br /&gt;
* {{App|Snappy|ミニマルなインターフェイスを持つパワフルなメディアプレイヤー that uses [[GStreamer]].|https://wiki.gnome.org/Apps/Snappy|{{Pkg|snappy-player}}}}&lt;br /&gt;
* {{App|Spivak|Karaoke player based on [[GStreamer]] and Qt5.|https://github.com/gyunaev/spivak|{{AUR|spivak}}}}&lt;br /&gt;
* {{App|Xnoise|&amp;quot;スマートな GUI、スピードと多くの機能&amp;quot;を備えた音声・ビデオ両方の GTK と GStreamer を使ったメディアプレイヤー (開発中止)。|http://xnoise-media-player.com/|{{Pkg|xnoise}}}}&lt;br /&gt;
&lt;br /&gt;
====== mpv-based ======&lt;br /&gt;
&lt;br /&gt;
* {{App|Baka MPlayer|Free and open source, cross-platform, [[mpv]] based multimedia player (Qt 5).|https://github.com/u8sand/Baka-MPlayer|{{Pkg|baka-mplayer}}}}&lt;br /&gt;
* {{App|Bomi|bomi is a graphical user interface(GUI) player based on mpv for Linux.|https://bomi-player.github.io/|{{AUR|bomi-git}}}}&lt;br /&gt;
* {{App|Celluloid|Simple GTK frontend for [[mpv]], formerly GNOME MPV.|https://celluloid-player.github.io/|{{Pkg|celluloid}}}}&lt;br /&gt;
* {{App|Clip|Video player and collection manager utilizing [[mpv]] as the backend.|https://mauikit.org/|{{Pkg|maui-clip}}}}&lt;br /&gt;
* {{App|Deepin Movie|Movie player for Deepin desktop based on [[mpv]].|https://www.deepin.org/en/original/deepin-movie/|{{Pkg|deepin-movie}}}}&lt;br /&gt;
* {{App|Haruna Video Player|Qt/QML video player built on top of [[mpv]].|https://invent.kde.org/multimedia/haruna|{{AUR|haruna}}}}&lt;br /&gt;
* {{App|Kawaii-Player|Audio/video manager and multimedia player (based on [[mpv]]) with PC-to-PC casting feature, along with functionalities of portable media server and torrent streaming server.|https://github.com/kanishka-linux/kawaii-player|{{AUR|kawaii-player}}}}&lt;br /&gt;
* {{App|KittehPlayer|A YouTube-like video player based on Qt, QML and [[mpv]].|https://github.com/purringChaos/KittehPlayer|{{AUR|kittehplayer-git}}}}&lt;br /&gt;
* {{App|Media Player Classic Qute Theater|Clone of [[Wikipedia:Media Player Classic|Media Player Classic]] reimplimented in Qt and based on [[mpv]].|https://github.com/mpc-qt/mpc-qt|{{AUR|mpc-qt}}}}&lt;br /&gt;
* {{App|Minitube|YouTube desktop application written in C++ using [[mpv]] and Qt.|https://flavio.tordini.org/minitube|{{Pkg|minitube}}}}&lt;br /&gt;
* {{App|MoonPlayer|Video player for playing and downloading online videos from YouTube, Youku etc.|https://github.com/coslyk/moonplayer|{{AUR|moonplayer}}}}&lt;br /&gt;
* {{App|[[mpv]]|Very basic GUI for mpv. Can be launched with {{ic|mpv --player-operation-mode&amp;amp;#61;pseudo-gui}}.|https://mpv.io/|{{Pkg|mpv}}}}&lt;br /&gt;
* {{App|mpvz|Qt5/QML based GUI for libmpv. Based on the Tethys theme for Bomi.|https://github.com/Zren/mpvz|{{AUR|mpvz-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SMPlayer|SMPlayer]]|Qt multimedia player with extra features (CSS themes, YouTube integration, etc.) based on [[mpv]]. It can use [[MPlayer]] as alternative backend.|https://www.smplayer.info/|{{Pkg|smplayer}}}}&lt;br /&gt;
* {{App|xt7-player-mpv|Qt/Gambas GUI to [[mpv]] with a rich set of configurable options including filters and drivers, ladspa plugins support as well as library/playlist managment, YouTube, online radios, podcasts, DVB-T and more.|https://github.com/kokoko3k/xt7-player-mpv|{{AUR|xt7-player-mpv}}}}&lt;br /&gt;
&lt;br /&gt;
====== MPlayer-based ======&lt;br /&gt;
&lt;br /&gt;
* {{App|GNOME MPlayer|Simple GTK-based GUI for [[MPlayer]].|https://sites.google.com/site/kdekorte2/gnomemplayer|{{Pkg|gnome-mplayer}}}}&lt;br /&gt;
&lt;br /&gt;
====== Phonon-based ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Dragon Player|Dragon Player]]|KDE 用のシンプルなビデオプレイヤー based on [[Phonon]]. Part of the {{Grp|kde-multimedia}} group.|https://apps.kde.org/dragonplayer/|{{Pkg|dragon}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KMPlayer|KMPlayer]]|Simple [[Phonon]]-based video player for KDE and video player plugin for Konqueror. It can use [[MPlayer]] as alternative backend.|https://apps.kde.org/kmplayer/|{{Pkg|kmplayer}}}}&lt;br /&gt;
&lt;br /&gt;
====== Other ======&lt;br /&gt;
&lt;br /&gt;
* {{App|FreeTube|Desktop YouTube player built with privacy in mind. Use YouTube without advertisements and prevent Google from tracking you with their cookies and JavaScript. Based on the [https://electronjs.org/ Electron] platform.|https://freetubeapp.io/|{{AUR|freetube-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:Kaffeine|Kaffeine]]|デフォルトで VLC をバックエンドに使う、多目的 KDE メディアプレイヤー。デジタル TV ([[DVB-T]], DVB-C, [[DVB-S]]) をサポート。|https://apps.kde.org/kaffeine/|{{Pkg|kaffeine}}}}&lt;br /&gt;
* {{App|Kaku|Highly integrated music player supports different online platform like YouTube, SoundCloud, Vimeo and more. Based on the [https://electronjs.org/ Electron] platform.|https://kaku.rocks/|{{AUR|kaku-bin}}}}&lt;br /&gt;
* {{App|[[Kodi]]|Media player and entertainment hub for digital media.|https://kodi.tv/|{{Pkg|kodi-x11}}{{Broken package link|replaced by {{Pkg|kodi}}}}, {{Pkg|kodi-wayland}}{{Broken package link|replaced by {{Pkg|kodi}}}} or {{Pkg|kodi-gbm}}{{Broken package link|replaced by {{Pkg|kodi}}}}}}&lt;br /&gt;
* {{App|QMPlay2|T ベースの動画プレイヤー。ffmpeg と libmodplug がサポートしている全てのフォーマットを再生できます。モジュールシステムが統合されており、Youtube ブラウザなどが入っています。|https://github.com/zaps166/QMPlay2|{{AUR|qmplay2}}}}&lt;br /&gt;
* {{App|QtAV Player|QtAV and [[FFmpeg]] ベースのシンプルなメディアプレイヤー。Run with {{ic|Player}} or {{ic|QMLPlayer}}.|https://www.qtav.org/|{{Pkg|qtav}}}}&lt;br /&gt;
* {{App|Stremio|Extensible media center.|https://www.stremio.com/|{{AUR|stremio}}, {{AUR|stremio-beta}}|}}&lt;br /&gt;
* {{App|[[Wikipedia:tvtime|tvtime]]|High quality television application for use with video capture cards.|https://linuxtv.org/|{{Pkg|tvtime}}}}&lt;br /&gt;
* {{App|[[VLC media player]]|中堅のビデオプレーヤー、様々なオーディオ・ビデオフォーマットをサポート。|https://www.videolan.org/vlc/|{{Pkg|vlc}}}}&lt;br /&gt;
* {{App|[[Wikipedia:xine|xine]]|フリーのマルチメディアプレイヤー。|https://www.xine-project.org/|{{Pkg|xine-ui}}}}&lt;br /&gt;
* {{App|Xjadeo|Video player that displays a video-clip in sync with an external time source (MTC, LTC, JACK-transport).|http://xjadeo.sourceforge.net/|{{Pkg|xjadeo}}}}&lt;br /&gt;
* {{App|YUView|Qt-based YUV player with an advanced analytic toolset.|https://github.com/IENT/YUView|{{AUR|yuview}}}}&lt;br /&gt;
&lt;br /&gt;
==== Video converters ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of video converters]] and [[コーデック#Container format tools]].&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Avidemux|Avidemux CLI]]|単純な切り取り、フィルタリング、エンコードなどの作業のためのフリーのビデオエディタ。|https://www.avidemux.org/|{{Pkg|avidemux-cli}}}}&lt;br /&gt;
* {{App|[[FFmpeg]]|音声や動画を記録・変換・ストリーミングすることができる、完全なクロスプラットフォームのソリューション。|https://ffmpeg.org/|{{Pkg|ffmpeg}}}}&lt;br /&gt;
* {{App|[[Wikipedia:HandBrake|HandBrake CLI]]|mkv/x264 リッピングのバッチ処理にうってつけのシンプルでパワフルなビデオトランスコーダー。|https://handbrake.fr/|{{Pkg|handbrake-cli}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MEncoder|MEncoder]]|Free command line video decoding, encoding and filtering tool.|https://mplayerhq.hu/design7/news.html|{{Pkg|mencoder}}}}&lt;br /&gt;
* {{App|Transcode|Command line tool for video stream processing.|http://www.transcoding.org/|{{Pkg|transcode}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Ciano|Simple multimedia file converter using FFmpeg and ImageMagick.|https://robertsanseries.github.io/ciano/|{{Pkg|ciano}}}}&lt;br /&gt;
* {{App|FFmpegYAG|Advanced GUI for the popular FFmpeg audio/video encoding tool.|https://sourceforge.net/projects/ffmpegyag/|{{AUR|ffmpegyag}}}}&lt;br /&gt;
* {{App|FF Multi Converter|Simple graphical application which enables you to convert audio, video, image and document files between all popular formats, by utilizing other command-line tools.|https://sites.google.com/site/ffmulticonverter/|{{AUR|ffmulticonverter}}}}&lt;br /&gt;
* {{App|[[Wikipedia:HandBrake|HandBrake]]|mkv/x264 リッピングのバッチ処理にうってつけのシンプルでパワフルなビデオトランスコーダー。GTK バージョン。|https://handbrake.fr/|{{Pkg|handbrake}}}}&lt;br /&gt;
* {{App|QWinFF|Qt5 GUI for FFmpeg that can read audio and video files in various formats and convert them into other formats.|https://qwinff.github.io/|{{AUR|qwinff}}}}&lt;br /&gt;
* {{App|Transmageddon|動画を GStreamer によってサポートされているフォーマットに変換するシンプルな python アプリケーション。|http://www.linuxrising.org/ |{{Pkg|transmageddon}}}}&lt;br /&gt;
* {{App|WinFF|Graphical video and audio batch converter using FFmpeg.|https://www.biggmatt.com/winff/|{{AUR|winff}}}}&lt;br /&gt;
&lt;br /&gt;
==== ビデオエディタ ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of video editing software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Avidemux|Avidemux]]|単純な切り取り、フィルタリング、エンコードなどの作業のためのフリーのビデオエディタ。|http://fixounet.free.fr/avidemux/| {{Pkg|avidemux-qt}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Blender_(software)#Video_editing|Blender]]|ノンリニアな動画エディタが組み込まれているフル機能の 3D グラフィック作成スイート。|https://www.blender.org/|{{Pkg|blender}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Cinelerra|Cinelerra (Heroine Virtual)]]|プロフェッショナルなビデオ編集・合成環境。|http://heroinewarrior.com/cinelerra.php|{{AUR|cinelerra-hv}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Cinelerra|Cinelerra (Community Version)]]|プロフェッショナルなビデオ編集・合成環境。|http://cinelerra-cv.wikidot.com/|{{AUR|cinelerra-cv}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Cinelerra|Cinelerra GG Infinity]]|プロフェッショナルなビデオ編集・合成環境。|https://www.cinelerra-gg.org/|{{AUR|cinelerra-gg-git}}}}&lt;br /&gt;
* {{App|[[DaVinci Resolve]]|Proprietary A/V post-production software suite.|https://www.blackmagicdesign.com/products/davinciresolve/|{{AUR|davinci-resolve}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Flowblade|Flowblade]]|Linux 用のマルチトラック・ノンリニア動画エディタ。素早く、堅牢な編集環境を得られるように作られています。|https://jliljebl.github.io/flowblade/|{{Pkg|flowblade}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Kdenlive|Kdenlive]]|セミプロフェッショナルな作業のために設計されたノンリニアビデオエディタ。|https://kdenlive.org/|{{Pkg|kdenlive}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Lightworks|Lightworks]]|様々なフォーマットのデジタル動画を編集・マスタリングするための、プロプライエタリのプロフェッショナルノンリニア編集システム。|https://www.lwks.com/|{{AUR|lightworks}}}}&lt;br /&gt;
* {{App|[[Wikipedia:LiVES|LiVES]]|ビデオエディタ and VJ (ライブパフォーマンス) platform.|http://lives-video.com/|{{AUR|lives}}}}&lt;br /&gt;
* {{App|LosslessCut|GUI tool for lossless trimming/cutting of video/audio files. Based on the [https://electronjs.org/ Electron] platform.|https://mifi.no/losslesscut/|{{AUR|losslesscut-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Natron (software)|Natron]]|Open-source compositing software. Node-graph based. Similar in functionalities to Adobe After Effects and Nuke by The Foundry.|https://natrongithub.github.io/|{{AUR|natron}}}}&lt;br /&gt;
* {{App|Olive|Non-linear video editor aiming to provide a fully-featured alternative to high-end professional video editing software.&lt;br /&gt;
|https://www.olivevideoeditor.org/|{{AUR|olive}}}}&lt;br /&gt;
* {{App|[[Wikipedia:OpenShot_Video_Editor|OpenShot]]|MLT フレームワークを使ったノンリニアビデオエディタ。|https://www.openshot.org/|{{Pkg|openshot}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Pitivi|Pitivi]]|直感的に操作でき GNOME と協調するように作られたビデオエディタ。|https://www.pitivi.org/ |{{Pkg|pitivi}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Shotcut|Shotcut]]|フリーでオープンソースのクロスプラットフォーム動画エディタ。|https://www.shotcut.org/ |{{Pkg|shotcut}}}}&lt;br /&gt;
* {{App|VapourSynth Editor|Editor for VapourSynth scripts.|https://bitbucket.org/mystery_keeper/vapoursynth-editor|{{AUR|vapoursynth-editor}}}}&lt;br /&gt;
* {{App|VidCutter|Fast lossless media cutter + joiner w/ frame-accurate SmartCut options powered by mpv, FFmpeg via a sleek Qt5 GUI.|https://vidcutter.ozmartians.com/|{{Pkg|vidcutter}}}}&lt;br /&gt;
* {{App|Video Trimmer|Cut out a fragment of a video given the start and end timestamps. The video is never re-encoded, so the process is very fast and does not reduce the video quality.|https://gitlab.gnome.org/YaLTeR/video-trimmer|{{AUR|video-trimmer}}}}&lt;br /&gt;
&lt;br /&gt;
==== Subtitles ====&lt;br /&gt;
&lt;br /&gt;
===== Subtitle players =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Penguin Subtitle Player|スタンドアロン字幕プレイヤー that provides a translucent window which always stays on the top so subtitles can be shown on top of the video without blocking anything.|https://github.com/carsonip/Penguin-Subtitle-Player|{{Pkg|penguin-subtitle-player}}}}&lt;br /&gt;
* {{App|SubtitlesPrinter|X の画面上に字幕を表示。動画プレイヤーに依存しません。|https://github.com/OlivierMarty/SubtitlesPrinter|{{AUR|subtitles-printer-git}}}}&lt;br /&gt;
&lt;br /&gt;
===== Subtitle downloaders =====&lt;br /&gt;
&lt;br /&gt;
* {{App|QNapi|Qt client for downloading movie subtitles from NapiProjekt, OpenSubtitles, Napisy24.|https://qnapi.github.io/|{{Pkg|qnapi}}}}&lt;br /&gt;
* {{App|subdl|Command-line tool for downloading subtitles from opensubtitles.org.|https://github.com/akexakex/subdl|{{Pkg|subdl}}}}&lt;br /&gt;
* {{App|SubDownloader|Automatic download/upload of subtitles using fast hashing.|https://github.com/subdownloader/subdownloader|{{Pkg|subdownloader}}}}&lt;br /&gt;
&lt;br /&gt;
===== Subtitle editors =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of subtitle editors]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Aegisub|Aegisub]]|Subtitle editor.|https://github.com/Aegisub/Aegisub|{{Pkg|aegisub}}}}&lt;br /&gt;
* {{App|Gaupol|フル機能の字幕エディタ。|https://otsaloma.io/gaupol/|{{Pkg|gaupol}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Gnome Subtitles|Gnome Subtitles]]|GNOME の動画字幕エディタ。|http://www.gnomesubtitles.org/|{{Pkg|gnome-subtitles}}}}&lt;br /&gt;
* {{App|Jubler|Open-source multiplatform subtitle editor written in Java.|https://www.jubler.org/|{{AUR|jubler}}}}&lt;br /&gt;
* {{App|Subtitle Composer|字幕エディタ for KDE supporting various formats, 様々なプレイヤーのバックエンドをサポートしており、波形を表示することもできます。|https://subtitlecomposer.kde.org/|{{AUR|subtitlecomposer}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Subtitle_Edit|Subtitle Edit]]|Subtitle editing program. Written in C# using mono.|https://github.com/SubtitleEdit/subtitleedit|{{AUR|subtitleedit}}}}&lt;br /&gt;
* {{App|Subtitle Editor|GTK 3 tool to edit subtitles for GNU/Linux/*BSD.|https://kitone.github.io/subtitleeditor/|{{Pkg|subtitleeditor}}}}&lt;br /&gt;
&lt;br /&gt;
==== スクリーンキャスト ====&lt;br /&gt;
&lt;br /&gt;
[[スクリーンショットの取得#スクリーンキャスト]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== Miracast ====&lt;br /&gt;
&lt;br /&gt;
See [[:en:Miracast#Implementations]].&lt;br /&gt;
&lt;br /&gt;
==== ウェブカメラ ====&lt;br /&gt;
&lt;br /&gt;
See also [[FFmpeg#Recording webcam]] and [[Wikipedia:Comparison of webcam software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Cheese (software)|Cheese]]|Take photos and videos with your webcam, with fun graphical effects.|https://wiki.gnome.org/Apps/Cheese|{{Pkg|cheese}}}}&lt;br /&gt;
* {{App|Deepin Camera|Tool to view camera, take photo and video.|https://github.com/linuxdeepin/deepin-camera|{{Pkg|deepin-camera}}}}&lt;br /&gt;
* {{App|fswebcam|Small and simple command line webcam software that generates images for a webcam.|https://www.sanslogic.co.uk/fswebcam/|{{AUR|fswebcam}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Guvcview|Guvcview]]|Simple interface for capturing and viewing video from v4l2 devices.|http://guvcview.sourceforge.net/|GTK: {{Pkg|guvcview}}, Qt: {{Pkg|guvcview-qt}}}}&lt;br /&gt;
* {{App|Kamoso|Webcam recorder from KDE community.|https://apps.kde.org/kamoso/|{{Pkg|kamoso}}}}&lt;br /&gt;
* {{App|MJPG-streamer|Command line application which can be used to stream M-JPEG over an IP-based network from a webcam to various types of viewers.|https://github.com/jacksonliam/mjpg-streamer|{{AUR|mjpg-streamer-git}}}}&lt;br /&gt;
* {{App|[[Motion]]|Highly configurable program that monitors video signals from many types of cameras. It is able to detect if a significant part of the picture has changed; in other words, it can detect motion.|https://motion-project.github.io/|{{Pkg|motion}}}}&lt;br /&gt;
* {{App|Pantheon Camera|Camera app designed for elementary OS.|https://github.com/elementary/camera|{{Pkg|pantheon-camera}}}}&lt;br /&gt;
* {{App|QtCAM|Webcam software with more than 10 image control settings, extension settings and color space switching.|https://www.e-consystems.com/opensource-linux-webcam-software-application.asp|{{AUR|qtcam-git}}}}&lt;br /&gt;
* {{App|v4l2ucp|Universal control panel for V4L2 devices.|http://v4l2ucp.sourceforge.net/|{{AUR|v4l2ucp}}}}&lt;br /&gt;
* {{App|v4l-utils|Provides a series of utilities for media devices.|https://linuxtv.org/|{{Pkg|v4l-utils}}}}&lt;br /&gt;
* {{App|Webcamoid|Full featured webcam suite.|https://webcamoid.github.io/|{{AUR|webcamoid}}}}&lt;br /&gt;
* {{App|ZArt|GUI for G&#039;MIC real-time manipulations on the output of a webcam.|https://gmic.eu/|{{Pkg|zart}}{{Broken package link|package not found}}}}&lt;br /&gt;
&lt;br /&gt;
==== DVD authoring ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of DVD authoring applications]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Bombono DVD|DVD authoring program with nice and clean GUI.|https://bombono.com/|{{AUR|bombono-dvd}}}}&lt;br /&gt;
* {{App|[[Wikipedia:DeVeDe|Devede]]|Program to create VideoDVDs and CDs.|https://rastersoft.com/programas/devede.html|{{Pkg|devede}}}}&lt;br /&gt;
* {{App|[[Wikipedia:DVDStyler|DVDStyler]]|DVD authoring application for the creation of professional-looking DVDs.|https://www.dvdstyler.org/|{{Pkg|dvdstyler}}}}&lt;br /&gt;
&lt;br /&gt;
==== DVD リッピング ====&lt;br /&gt;
&lt;br /&gt;
[[光学ディスクドライブ#DVD]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
==== Video thumbnails ====&lt;br /&gt;
&lt;br /&gt;
* {{App|vcsi|Create video contact sheets. A video contact sheet is an image composed of video capture thumbnails arranged on a grid.|https://github.com/amietn/vcsi|{{AUR|vcsi}}}}&lt;br /&gt;
* {{App|Video Contact Sheet|Bash script meant to create video contact sheets (previews) of videos. Any video supported by mplayer and ffmpeg can be used.|https://p.outlyer.net/vcs|{{AUR|video-contact-sheet}}}}&lt;br /&gt;
&lt;br /&gt;
=== Game and interactive application development ===&lt;br /&gt;
* {{App|[[Godot Engine]]|Game development platform for both 2D and 3D games, with integrate IDE|https://godotengine.org|{{Pkg|godot}}}}&lt;br /&gt;
* {{App|LÖVE|Lua based game development environment|https://love2d.org|{{Pkg|love}}}}&lt;br /&gt;
* {{App|TIC-80|Fantasy computer/console|https://tic80.com|{{AUR|tic-80-git}}}}&lt;br /&gt;
&lt;br /&gt;
=== Collection managers ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Data Crow|Media cataloger and media organizer.|https://datacrow.net/|{{AUR|datacrow}}}}&lt;br /&gt;
* {{App|[[Wikipedia:GCstar|GCstar]]|GNOME application for organizing various collections (board games, comic books, movies, stamps, etc.).|http://www.gcstar.org/|{{AUR|gcstar}}}}&lt;br /&gt;
* {{App|Griffith|Movie collection manager application.|https://gitlab.com/Strit/griffith|{{Pkg|griffith}}}}&lt;br /&gt;
* {{App|MediaElch|Media manager for Kodi. Information about movies, TV shows, concerts and music are stored as nfo files.|https://www.kvibes.de/mediaelch/|{{Pkg|mediaelch}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tellico_(software)|Tellico]]|KDE application for organizing various collections (books, video, music, coins, etc.).|https://tellico-project.org/|{{Pkg|tellico}}}}&lt;br /&gt;
* {{App|tinyMediaManager|Media management tool to provide metadata for Kodi.|https://www.tinymediamanager.org/|{{AUR|tiny-media-manager}}}}&lt;br /&gt;
* {{App|vMovieDB|Movie collection manager for the Gnome desktop.|https://sourceforge.net/projects/vmoviedb/|{{AUR|vmoviedb}}}}&lt;br /&gt;
&lt;br /&gt;
=== Media servers ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Airsonic|Web-based media streamer, providing ubiquitous access to your music. (Fork of Subsonic.)|https://airsonic.github.io/|{{AUR|airsonic}}}}&lt;br /&gt;
* {{App|[[Emby]]|Proprietary media server, which automatically converts and streams your media on-the-fly to play on any device.|https://emby.media/|{{Pkg|emby-server}}}}&lt;br /&gt;
* {{App|OwnTone|DAAP (iTunes) and MPD media server with support for AirPlay devices, Apple Remote, Chromecast, Spotify and internet radio.|https://owntone.github.io/owntone-server/|{{AUR|owntone-server}}}}&lt;br /&gt;
* {{App|Gerbera|UPnP Media Server to stream your media to devices on your home network. (Fork of MediaTomb.)|https://gerbera.io/|{{Pkg|gerbera}}}}&lt;br /&gt;
* {{App|[[Icecast]]|Streaming media (audio/video) server which currently supports Ogg (Vorbis and Theora), Opus, WebM and MP3 streams.|https://icecast.org/|{{Pkg|icecast}}}}&lt;br /&gt;
* {{App|[[:en:Jellyfin]]|Media system that puts you in control of managing and streaming your media.|https://jellyfin.org/|Server: {{AUR|jellyfin}}, desktop client: {{AUR|jellyfin-media-player}}, cast client: {{AUR|jellyfin-mpv-shim}}}}&lt;br /&gt;
* {{App|[[Plex]]|Proprietary media server, which organizes your personal video, music, and photo collections and streams them to all of your devices.|https://www.plex.tv/|{{AUR|plex-media-server}}}}&lt;br /&gt;
* {{App|[[ReadyMedia]]|Simple media server software, with the aim of being fully compliant with DLNA/UPnP-AV clients.|https://sourceforge.net/projects/minidlna/|{{Pkg|minidlna}}}}&lt;br /&gt;
* {{App|[[Rygel]]|UPnP AV MediaServer and MediaRenderer that allows you to easily share audio, video and pictures, and control of media player on your home network.|https://wiki.gnome.org/Projects/Rygel|{{Pkg|rygel}}}}&lt;br /&gt;
* {{App|Serviio|Proprietary media server, which allows you to stream your media files (music, video or images) to renderer devices (e.g. a TV set, Bluray player, games console or mobile phone) on your connected home network.|https://serviio.org/|{{AUR|serviio}}}}&lt;br /&gt;
* {{App|[[Subsonic]]|Proprietary media server to stream from your own computer.|http://www.subsonic.org/|{{AUR|subsonic}}}}&lt;br /&gt;
* {{App|[[Tvheadend]]|TV streaming server and recorder supporting DVB-S, DVB-S2, DVB-C, DVB-T, ATSC, ISDB-T, IPTV, SAT&amp;gt;IP and HDHomeRun as input sources.|https://tvheadend.org/|{{AUR|tvheadend}}}}&lt;br /&gt;
* {{App|[[Universal Media Server]]|UPnP media server, which is capable of sharing video, audio and images between most modern devices. (Fork of PS3 Media Server.)|https://www.universalmediaserver.com/|{{AUR|ums}}}}&lt;br /&gt;
&lt;br /&gt;
=== メタデータ ===&lt;br /&gt;
&lt;br /&gt;
* {{App|CoreInfo|Simple media metadata viewer built on mediainfo library. Part of C-Suite.|https://cubocore.org/|{{AUR|coreinfo}}}}&lt;br /&gt;
* {{App|DV Analyzer|Technical quality control and reporting tool that examines DV streams in order to report errors.|https://mediaarea.net/DVAnalyzer|CLI: {{AUR|dvanalyzer}}, GUI: {{AUR|dvanalyzer-gui}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ExifTool|ExifTool]]|Command-line application for reading, writing and editing meta information in a wide variety of files.|https://sno.phy.queensu.ca/~phil/exiftool/|{{Pkg|perl-image-exiftool}}}}&lt;br /&gt;
* {{App|Exiv2|Command line utility to manage image metadata. It provides fast and easy read and write access to the Exif, IPTC and XMP metadata and the ICC Profile embedded within digital images in various formats.|https://exiv2.org/|{{Pkg|exiv2}}}}&lt;br /&gt;
* {{App|[[Wikipedia:FFmpeg|ffprobe]]|Gather information from multimedia streams and print it in human- and machine-readable fashion.|https://ffmpeg.org/ffprobe.html|{{Pkg|ffmpeg}}}}&lt;br /&gt;
* {{App|jExifToolGUI|Java/Swing graphical frontend for ExifTool, which reads and writes all kind of metadata tags from/to image files.|https://hvdwolf.github.io/jExifToolGUI/|{{AUR|jexiftoolgui}}}}&lt;br /&gt;
* {{App|jhead|Exif jpeg header manipulation tool.|https://sentex.net/~mwandel/jhead/|{{Pkg|jhead}}}}&lt;br /&gt;
* {{App|MediaConch|Implementation checker, policy checker, reporter, and fixer.|https://mediaarea.net/MediaConch|CLI: {{AUR|mediaconch}}, GUI: {{AUR|mediaconch-gui}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MediaInfo|MediaInfo]]|Convenient unified display of the most relevant technical and tag data for video and audio files.|https://mediaarea.net/en/MediaInfo|CLI: {{Pkg|mediainfo}}, GUI: {{Pkg|mediainfo-gui}}}}&lt;br /&gt;
* {{App|[[Wikipedia:libsndfile|sndfile-info]]|Obtaining information about the contents of an audio file.|http://mega-nerd.com/libsndfile/|{{Pkg|libsndfile}}}}&lt;br /&gt;
&lt;br /&gt;
=== Mobile device managers ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Android File Transfer|Interactive [[Media Transfer Protocol]] client with Qt5 GUI.|https://whoozle.github.io/android-file-transfer-linux/|{{Pkg|android-file-transfer}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Gnokii|gnokii]]|携帯電話を使うためのツールとユーザースペースドライバ。|https://www.gnokii.org/|{{AUR|gnokii}}}}&lt;br /&gt;
* {{App|gMTP|Simple MP3 and media player client for [[Media Transfer Protocol]].|https://gmtp.sourceforge.io/|{{Pkg|gmtp}}}}&lt;br /&gt;
* {{App|GNOME Phone Manager|GNOME デスクトップから携帯電話をコントロール。|https://wiki.gnome.org/Attic/PhoneManager|{{AUR|gnome-phone-manager}}}}&lt;br /&gt;
* {{App|[[Wikipedia:gtkpod|gtkpod]]|GUI for Apple&#039;s iPod using GTK. It allows you to import your existing iTunes database, add songs, podcasts, videos and cover art, and to edit ID3 tags.|https://sourceforge.net/projects/gtkpod/|{{AUR|gtkpod}}}}&lt;br /&gt;
* {{App|KDE Connect|Provides integration between devices.|https://kdeconnect.kde.org/|{{Pkg|kdeconnect}}}}&lt;br /&gt;
* {{App|Modem Manager GUI|Control EDGE/3G/4G broadband modem specific functions.|https://linuxonly.ru/page/modem-manager-gui|{{Pkg|modem-manager-gui}}}}&lt;br /&gt;
* {{App|Wammu|Manage data in your cell phone such as contacts, calendar or messages.|https://wammu.eu/|{{AUR|wammu}}}}&lt;br /&gt;
&lt;br /&gt;
=== 光メディアの書き込み ===&lt;br /&gt;
&lt;br /&gt;
[[光学ディスクドライブ#GUI で CD/DVD/BD を焼く]] を見てください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TranslationStatus|List of applications/Multimedia|2021-12-29|707821}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88&amp;diff=31595</id>
		<title>トラックポイント</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88&amp;diff=31595"/>
		<updated>2023-05-14T00:16:28Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* Two-finger scroll ceases to work after suspending */  訳出&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:入力デバイス]]&lt;br /&gt;
[[Category:Lenovo]]&lt;br /&gt;
[[en:TrackPoint]]&lt;br /&gt;
[[zh-hans:TrackPoint]]&lt;br /&gt;
TrackPoint はキーボードの中央に位置するポインティングスティックに対する Lenovo の登録商標です。トラックポイントは {{Pkg|xf86-input-evdev}} や {{Pkg|xf86-input-libinput}} でサポートされています。&lt;br /&gt;
&lt;br /&gt;
デフォルトの [[Xorg]] ではクリックとポイントをサポートしていますが、{{ic|evdev}} ドライバーで中クリックやスクロールを使うには設定が必要です。&lt;br /&gt;
&lt;br /&gt;
== GUI の設定 ==&lt;br /&gt;
&lt;br /&gt;
{{AUR|gpointing-device-settings}} パッケージを[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のソフトウェアはメンテナンスが止まっています (最後のリリースは2013年です)。{{Pkg|xf86-input-libinput}} を使用する場合、細かい設定ができない可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
==中ボタンのスクロール==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-input-libinput}} を使用する場合、デフォルトで中ボタンのスクロールが有効になります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xf86-input-evdev}} を使用する場合、中ボタンのスクロールは {{Pkg|xorg-xinput}} パッケージの &#039;&#039;xinput&#039;&#039; でサポートされます。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xinput set-prop &amp;quot;&#039;&#039;TPPS/2 IBM TrackPoint&#039;&#039;&amp;quot; &amp;quot;Evdev Wheel Emulation&amp;quot; 1&lt;br /&gt;
xinput set-prop &amp;quot;&#039;&#039;TPPS/2 IBM TrackPoint&#039;&#039;&amp;quot; &amp;quot;Evdev Wheel Emulation Button&amp;quot; 2&lt;br /&gt;
xinput set-prop &amp;quot;&#039;&#039;TPPS/2 IBM TrackPoint&#039;&#039;&amp;quot; &amp;quot;Evdev Wheel Emulation Timeout&amp;quot; 200&lt;br /&gt;
xinput set-prop &amp;quot;&#039;&#039;TPPS/2 IBM TrackPoint&#039;&#039;&amp;quot; &amp;quot;Evdev Wheel Emulation Axes&amp;quot; 6 7 4 5&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* デバイスの名前は {{ic|xinput --list}} や {{Pkg|hwinfo}} で確認できます。&lt;br /&gt;
* {{ic|&amp;quot;Device Accel Constant Deceleration&amp;quot;}} の行ではトラックポイントの感度を設定しています。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Xorg の設定 ===&lt;br /&gt;
&lt;br /&gt;
トラックポイントで中マウスボタンを押すことによるスクロールを有効にするには、{{ic|/etc/X11/xorg.conf.d/20-thinkpad.conf}} を作成してください ({{ic|TPPS/2 IBM TrackPoint}} は &#039;&#039;xinput&#039;&#039; で確認できるデバイス名に置き換えてください):&lt;br /&gt;
&lt;br /&gt;
 Section &amp;quot;InputClass&amp;quot;&lt;br /&gt;
     Identifier	&amp;quot;Trackpoint Wheel Emulation&amp;quot;&lt;br /&gt;
     Driver &amp;quot;evdev&amp;quot;&lt;br /&gt;
     MatchProduct	&amp;quot;&#039;&#039;TPPS/2 IBM TrackPoint&#039;&#039;&amp;quot;&lt;br /&gt;
     MatchDevicePath	&amp;quot;/dev/input/event*&amp;quot;&lt;br /&gt;
     Option		&amp;quot;EmulateWheel&amp;quot;		&amp;quot;true&amp;quot;&lt;br /&gt;
     Option		&amp;quot;EmulateWheelButton&amp;quot;	&amp;quot;2&amp;quot;&lt;br /&gt;
     Option		&amp;quot;Emulate3Buttons&amp;quot;	&amp;quot;false&amp;quot;&lt;br /&gt;
     Option		&amp;quot;XAxisMapping&amp;quot;		&amp;quot;6 7&amp;quot;&lt;br /&gt;
     Option		&amp;quot;YAxisMapping&amp;quot;		&amp;quot;4 5&amp;quot;&lt;br /&gt;
 EndSection&lt;br /&gt;
&lt;br /&gt;
=== 2ボタントラックポイント ===&lt;br /&gt;
ボタンが2つあるトラックポイントの場合、{{Pkg|xf86-input-libinput}} を使うと、スクロールボタンを右クリックボタンに設定することができます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;device&#039;&#039; を {{ic|xinput}} を実行するとわかるデバイス名に置き換えてください:&lt;br /&gt;
&lt;br /&gt;
 $ xinput set-prop &amp;quot;&#039;&#039;device&#039;&#039;&amp;quot; &amp;quot;libinput Button Scrolling Button&amp;quot; 3&lt;br /&gt;
&lt;br /&gt;
== Sysfs 属性 ==&lt;br /&gt;
&lt;br /&gt;
トラックポイントでは属性を {{ic|/sys/devices/platform/i8042/serio1/}} のファイルから変更することができます。例えば、手動でタップでクリック機能を有効にするには:&lt;br /&gt;
&lt;br /&gt;
 # echo -n 1 &amp;gt; /sys/devices/platform/i8042/serio1/press_to_select&lt;br /&gt;
&lt;br /&gt;
{{Note|{{ic|press_to_select}} ファイルの位置は使用するデバイスによって変わります。トラックポイントとタッチパッドが両方存在するコンピュータでは {{ic|/sys/devices/platform/i8042/serio1/serio2/}} のパスが使われますが、トラックポイントデバイスがしか存在しない場合は {{ic|/sys/devices/platform/i8042/serio1/}} のパスが使われます。}}&lt;br /&gt;
&lt;br /&gt;
=== 起動時に設定 ===&lt;br /&gt;
&lt;br /&gt;
==== udev ルール ====&lt;br /&gt;
&lt;br /&gt;
このルールは、トラックポイントの&#039;&#039;&#039;速度&#039;&#039;&#039;を上げ、起動時に&#039;&#039;&#039;タップして選択&#039;&#039;&#039;(上記を参照)できるようにします。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=/etc/udev/rules.d/10-trackpoint.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;input&amp;quot;, ATTR{name}==&amp;quot;TPPS/2 IBM TrackPoint&amp;quot;, ATTR{device/sensitivity}=&amp;quot;240&amp;quot;, ATTR{device/press_to_select}=&amp;quot;1&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== systemd.path ユニット ====&lt;br /&gt;
&lt;br /&gt;
ブートプロセスの中で {{ic|/sys/devices/platform/i8042/serio1/serio2/}} の属性やファイルが現れるのが遅すぎて上記の udev ルールを使う方法が使えないという [https://bbs.archlinux.org/viewtopic.php?id=199998 報告] がフォーラムにあります。代わりに &#039;&#039;systemd.path&#039;&#039; ユニットを使ってトラックポイントの属性を設定することができます。&lt;br /&gt;
&lt;br /&gt;
まず {{ic|/usr/local/bin/trackpoint_configuration.sh}} とう名前のスクリプトを作成してください。スクリプトの中で [[#Sysfs 属性]]に書かれているようにトラックポイントの属性を設定します。それから以下の systemd ユニットを作成してください。スクリプトで変更する属性は全て {{ic|PathExists}} に指定してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/trackpoint_parameters.path|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Watch for, and modify, Trackpoint attributes&lt;br /&gt;
&lt;br /&gt;
[Path]&lt;br /&gt;
PathExists=/sys/devices/platform/i8042/serio1/press_to_select&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/trackpoint_parameters.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Set TrackPoint attributes&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/local/bin/trackpoint_configuration.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に {{ic|trackpoint_parameters.path}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
==== udev hwdb エントリ ====&lt;br /&gt;
&lt;br /&gt;
Libinput は [https://github.com/systemd/systemd/blob/master/hwdb/70-pointingstick.hwdb udev ハードウェアデータベース] のエントリに基づいて sysfs にパラメータを適用します。Wayland コンポジタでは libinput が唯一の入力インターフェイスになります。Wayland コンポジタや X セッションを起動する前に変更を行っても上書きされてしまいます。&lt;br /&gt;
&lt;br /&gt;
libinput のデフォルト設定を上書きするには、ローカル hwdb エントリを追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/hwdb.d/99-trackpoint.hwdb|2=&lt;br /&gt;
evdev:name:TPPS/2 IBM TrackPoint:dmi:bvn*:bvr*:bd*:svnLENOVO:pn*:pvrThinkPad??60?:*&lt;br /&gt;
  POINTINGSTICK_SENSITIVITY=250&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[https://github.com/systemd/systemd/blob/master/hwdb/70-pointingstick.hwdb udev ハードウェアデータベース] で様々なベンダー/モデルキーを見つけることができます。なお、[https://cgit.freedesktop.org/wayland/libinput/commit/src/evdev.c?id=3669fa10dff95371658647272ef7ac7a3ef29a61 このコミットから]、libinput は POINTINGSTICK_CONST_ACCEL 設定パラメータを無視し、POINTINGSTICK_SENSITIVITY (0から255の値をとります) を参照します。&lt;br /&gt;
&lt;br /&gt;
変更を適用するには udev の hwdb をリロードします:&lt;br /&gt;
&lt;br /&gt;
 # udevadm hwdb --update&lt;br /&gt;
&lt;br /&gt;
コンポジタや X セッションを再起動する前に変更をテストするには、まず以下のコマンドでデバイスの入力ノード {{ic|/dev/input/eventX}} を確認してください:&lt;br /&gt;
&lt;br /&gt;
 # libinput-list-devices&lt;br /&gt;
&lt;br /&gt;
そして以下のコマンドを実行してデバッグ出力を生成:&lt;br /&gt;
&lt;br /&gt;
 # udevadm trigger /sys/class/input/eventX&lt;br /&gt;
 # udevadm test /sys/class/input/eventX&lt;br /&gt;
&lt;br /&gt;
{{Note|上記のコマンドでは hwdb からパラメータは適用されませんが、{{ic|udevadm test}} コマンドの出力で変更を確認できます。}}&lt;br /&gt;
&lt;br /&gt;
最後に、Wayland コンポジタや X セッションを再起動して変更を適用してください。&lt;br /&gt;
&lt;br /&gt;
==== device-quirks ====&lt;br /&gt;
&lt;br /&gt;
{{ic|libinput}} は {{ic|.ini}} スタイルの設定ファイルに移行しており、トラックポイントのパラメータを {{ic|/etc/libinput/}} 内で上書きすることで調節できます。&lt;br /&gt;
&lt;br /&gt;
例えば、トラックポイントの速度を上書きするには、{{ic|/etc/libinput/local-overrides.quirks}} を次のように作成してください:&lt;br /&gt;
 [Trackpoint Override]&lt;br /&gt;
 MatchUdevType=pointingstick&lt;br /&gt;
 AttrTrackpointMultiplier=0.75&lt;br /&gt;
&lt;br /&gt;
詳細については、公式ドキュメント [https://wayland.freedesktop.org/libinput/doc/latest/device-quirks.html#installing-temporary-local-device-quirks libinput: Installing temporary local device quirks] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Warning|Model quirks は内部 API であり、後方互換性の保証なく突然変更されることがありえます。ディストリビューション側が libinput をアップデートするまでの方策としてのみ利用するようにしてください。}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
===トラックポイントが認識されない、あるいは数分後に認識される===&lt;br /&gt;
カーネルのバグが原因です。参照: https://bugzilla.kernel.org/show_bug.cgi?id=33292&lt;br /&gt;
&lt;br /&gt;
対処方法は {{ic|psmouse}} モジュールに {{ic|1=proto=bare}} を指定することです。ただし、これを設定するとクリックパッドによるスクロールと2本指の中クリックが無効化されてしまいます:&lt;br /&gt;
 # modprobe psmouse proto=bare&lt;br /&gt;
&lt;br /&gt;
=== トラックポイントのボタンが動かない場合がある ===&lt;br /&gt;
&lt;br /&gt;
BIOS でタッチパッドを無効化すると間違ったボタンが無効になったり、トラックポイントのボタンが安定して動作しない場合、{{ic|psmouse}} モジュールに {{ic|1=proto=imps}} を設定することで解決できます:&lt;br /&gt;
 # rmmod psmouse; modprobe psmouse proto=imps&lt;br /&gt;
&lt;br /&gt;
=== サスペンド後に二本指でのスクロールが機能しなくなる ===&lt;br /&gt;
&lt;br /&gt;
いくつかのラップトップでは、psmouse が起動に失敗することや、サスペンド後に復帰しないことがあります:&lt;br /&gt;
&lt;br /&gt;
 psmouse serio1: synaptics: Unable to initialize device&lt;br /&gt;
&lt;br /&gt;
カーネルコマンドラインに {{ic|1=psmouse.synaptics_intertouch=0}} を追記してみてください。&lt;br /&gt;
&lt;br /&gt;
=== Trackpoint moves on its own ===&lt;br /&gt;
&lt;br /&gt;
On some ThinkPads the TrackPoint cursor moves spontaneously after release and it does not stop. This happens because of a low value of the {{ic|drift_time}} parameter (e.g. 5), you need to change it to 25 or 30 to fix the problem. This can be done with a [[udev]] rule:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/udev/rules.d/10-trackpoint.rules|2=&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;input&amp;quot;, ATTR{name}==&amp;quot;TPPS/2 IBM TrackPoint&amp;quot;, ATTR{device/drift_time}=&amp;quot;25&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://www.thinkwiki.org/wiki/How_to_configure_the_TrackPoint How to configure the TrackPoint - ThinkWiki]&lt;br /&gt;
* [https://gist.githubusercontent.com/noromanba/11261595/raw/478cf4c4d9b63f1e59364a6f427ffccd63db5e1e/thinkpad-trackpoint-speed.mkd Trackpoint speed]&lt;br /&gt;
* [https://askubuntu.com/questions/37824/what-is-the-best-way-to-configure-a-thinkpads-trackpoint/553926 What is the best way to configure a Thinkpad&#039;s TrackPoint?]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Flatpak&amp;diff=31464</id>
		<title>Flatpak</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Flatpak&amp;diff=31464"/>
		<updated>2023-05-04T03:04:24Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* インストール */ flatpak のビルド方法について、英語版を反映 (flatpak-builder を使うように変更)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:開発]]&lt;br /&gt;
[[de:Flatpak]]&lt;br /&gt;
[[en:Flatpak]]&lt;br /&gt;
[[es:Flatpak]]&lt;br /&gt;
[[pt:Flatpak]]&lt;br /&gt;
[[zh-hans:Flatpak]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|Snapd}}&lt;br /&gt;
{{Related|bubblewrap}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
プロジェクトの [https://github.com/flatpak/flatpak/blob/master/README.md README] より:&lt;br /&gt;
:[https://flatpak.org Flatpak] は Linux 上でサンドボックス化したデスクトップアプリケーションをビルド・配布・実行するためのシステムです。&lt;br /&gt;
&lt;br /&gt;
{{man|1|flatpak}} より:&lt;br /&gt;
&lt;br /&gt;
:Flatpak はアプリケーションやランタイムを管理するためのツールです。Flatpak モデルでは、アプリケーションをホスト環境とは独立してビルド・配布することができます。アプリケーションは実行時にホスト環境から隔離 (サンドボックス化) されます。&lt;br /&gt;
:Flatpak は [https://ostree.readthedocs.io/en/latest/ OSTree] を使用してデータを配布・デプロイします。Flatpak のリポジトリは OSTree のリポジトリであり、ostree ユーティリティによって操作することが可能です。ランタイムやアプリケーションのインストールは OSTree のチェックアウトと同じです。&lt;br /&gt;
&lt;br /&gt;
{{Warning|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Flatpak アプリケーションは、[https://flathub.org/home flathub] にあるパッケージであっても、例えば {{ic|$HOME}} のユーザーファイルへのアクセスを許可したり、X11 を通じてサンドボックスから逃れるなど、&#039;&#039;&#039;デフォルトでは&#039;&#039;&#039; 効果的にサンドボックス化されません。[https://hanako.codeberg.page/]&lt;br /&gt;
* 信頼できないコードを実行することは決して安全ではなく、サンドボックス化によってこれを変更することはできません。}}&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{pkg|flatpak}} パッケージを[[インストール]]してください。flatpak をビルドしたい場合は、{{pkg|flatpak-builder}} もインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
=== デスクトップとの統合 ===&lt;br /&gt;
&lt;br /&gt;
flatpak アプリケーションがデスクトップと対話するためには、[[PipeWire#WebRTC 画面共有|xdg-desktop-portal]] を必ずセットアップしてください。デスクトップの実装によっては、アプリケーションがいくつかのポータルにアクセスする前に確認ダイアログが表示されます。&lt;br /&gt;
&lt;br /&gt;
== リポジトリの管理 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|デフォルトでは、すべての flatpak コマンドはシステム全体で機能します。つまり、パッケージはコンピュータ内のすべてのユーザーにインストールされ、flatpak はユーザーに root のパスワードの入力を要求します。パッケージをインストールし、 (スーパーユーザー権限を必要とせずに) 単一のユーザーでリポジトリを操作するには、オプション {{ic|--user}} を各コマンドに追加します。たとえば、自分だけに表示されるリポジトリを追加したい場合は、{{ic|$ flatpak remote-add --user &#039;&#039;name&#039;&#039; &#039;&#039;location&#039;&#039;}} を実行する必要があります。自分だけが表示できるパッケージをインストールするには、{{ic|$ flatpak install --user &#039;&#039;package-name&#039;&#039;}} を実行します。}}&lt;br /&gt;
&lt;br /&gt;
=== リポジトリの追加 ===&lt;br /&gt;
&lt;br /&gt;
リモートの flatpak リポジトリを追加するには次のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak remote-add &#039;&#039;name&#039;&#039; &#039;&#039;location&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;name&#039;&#039; は新しいリモートリポジトリの名前、&#039;&#039;location&#039;&#039; はリポジトリのパスあるいは URL に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
例えば公式の [https://flathub.org/ Flathub リポジトリ] を追加するには:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak remote-add --if-not-exists flathub &amp;lt;nowiki&amp;gt;https://dl.flathub.org/repo/flathub.flatpakrepo&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== リポジトリの削除 ===&lt;br /&gt;
&lt;br /&gt;
リモートの flatpak リポジトリを削除するには次のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak remote-delete &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;name&#039;&#039; は削除したいリモートリポジトリの名前に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
=== リポジトリの一覧表示 ===&lt;br /&gt;
&lt;br /&gt;
追加されたすべてのリポジトリの一覧を表示するには、次のようにします。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak remotes&lt;br /&gt;
&lt;br /&gt;
== ランタイムとアプリケーションの管理 ==&lt;br /&gt;
&lt;br /&gt;
=== リモートのランタイムやアプリケーションの検索 ===&lt;br /&gt;
&lt;br /&gt;
新しく追加したリモートリポジトリのランタイムやアプリケーションを検索するには、リポジトリの appstream データを取得する必要があります:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ flatpak update|&lt;br /&gt;
Looking for updates...&lt;br /&gt;
Updating appstream data for remote &#039;&#039;name&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
取得したら {{ic|flatpak search &#039;&#039;packagename&#039;&#039;}} でパッケージを検索できます。例えば {{ic|flathub}} リポジトリの {{ic|libreoffice}} パッケージを探すには:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ flatpak search libreoffice|&lt;br /&gt;
Application ID              Version Branch Remotes Description                       &lt;br /&gt;
org.libreoffice.LibreOffice         stable flathub The LibreOffice productivity suite&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 利用可能なランタイムとアプリケーションの確認 ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;remote&#039;&#039; という名前のリモートリポジトリに存在するランタイムとアプリケーションを確認するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak remote-ls &#039;&#039;remote&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ランタイムやアプリケーションのインストール ===&lt;br /&gt;
&lt;br /&gt;
ランタイムやアプリケーションをインストールするには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak install &#039;&#039;remote&#039;&#039; &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;remote&#039;&#039; はリモートリポジトリの名前に、&#039;&#039;name&#039;&#039; はインストールしたいアプリケーションやランタイムの名前に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|識別子の一部のみを指定することもできます。例えば {{ic|flatpak install libreoffice}} を実行してもインストールが行えます。}}&lt;br /&gt;
&lt;br /&gt;
=== インストールされたランタイムやアプリケーションの確認 ===&lt;br /&gt;
&lt;br /&gt;
インストールされたランタイムやアプリケーションを確認するには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak list&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションの実行 ===&lt;br /&gt;
&lt;br /&gt;
Flatpak アプリケーションはコマンドラインから起動することもできます:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak run &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== ランタイムやアプリケーションのアップデート ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;name&#039;&#039; という名前のランタイムあるいはアプリケーションをアップデートするには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak update &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== systemd による自動アップデート ====&lt;br /&gt;
&lt;br /&gt;
システムのランタイムやアプリケーションを自動的に更新するには、以下のファイルを作成します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/flatpak-update.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Update Flatpak&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/flatpak update --noninteractive --assumeyes&lt;br /&gt;
&lt;br /&gt;
AmbientCapabilities=&lt;br /&gt;
CapabilityBoundingSet=CAP_SYS_ADMIN CAP_NET_ADMIN&lt;br /&gt;
DevicePolicy=closed&lt;br /&gt;
InaccessibleDirectories=/home&lt;br /&gt;
LockPersonality=true&lt;br /&gt;
MemoryDenyWriteExecute=true&lt;br /&gt;
NoNewPrivileges=true&lt;br /&gt;
PrivateDevices=true&lt;br /&gt;
PrivateIPC=true&lt;br /&gt;
PrivateTmp=true&lt;br /&gt;
PrivateUsers=true&lt;br /&gt;
ProcSubset=all&lt;br /&gt;
ProtectClock=true&lt;br /&gt;
ProtectControlGroups=true&lt;br /&gt;
ProtectHostname=true&lt;br /&gt;
ProtectKernelLogs=true&lt;br /&gt;
ProtectKernelModules=true&lt;br /&gt;
ProtectKernelTunables=true&lt;br /&gt;
ProtectProc=invisible&lt;br /&gt;
ProtectSystem=strict&lt;br /&gt;
ReadOnlyDirectories=/&lt;br /&gt;
ReadWriteDirectories=/var/lib/flatpak/&lt;br /&gt;
ReadWriteDirectories=/root/.local/share/flatpak/&lt;br /&gt;
RemoveIPC=true&lt;br /&gt;
RestrictAddressFamilies=AF_INET AF_INET6 AF_NETLINK AF_UNIX&lt;br /&gt;
RestrictRealtime=true&lt;br /&gt;
RestrictSUIDSGID=true&lt;br /&gt;
SystemCallArchitectures=native&lt;br /&gt;
SystemCallFilter=~@clock&lt;br /&gt;
SystemCallFilter=~@debug&lt;br /&gt;
SystemCallFilter=~@module&lt;br /&gt;
SystemCallFilter=~@raw-io&lt;br /&gt;
SystemCallFilter=~@reboot&lt;br /&gt;
SystemCallFilter=~@swap&lt;br /&gt;
SystemCallFilter=~@cpu-emulation&lt;br /&gt;
SystemCallFilter=~@obsolete&lt;br /&gt;
UMask=0077&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=multi-user.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/systemd/system/flatpak-update.timer|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Update Flatpak&lt;br /&gt;
&lt;br /&gt;
[Timer]&lt;br /&gt;
OnBootSec=2m&lt;br /&gt;
OnActiveSec=2m&lt;br /&gt;
OnUnitInactiveSec=24h&lt;br /&gt;
OnUnitActiveSec=24h&lt;br /&gt;
AccuracySec=1h&lt;br /&gt;
RandomizedDelaySec=10m&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=timers.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
systemdのタイマーを有効にするために、実行します。&lt;br /&gt;
&lt;br /&gt;
 $ systemctl enable --now flatpak-update.timer&lt;br /&gt;
&lt;br /&gt;
=== ランタイムやアプリケーションのアンインストール ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;name&#039;&#039; という名前のランタイムあるいはアプリケーションをアンインストールするには次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak uninstall &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|flatpak uninstall --unused}} とすると、どのアプリケーションやランタイムでも使用されていない &amp;quot;refs&amp;quot; をアンインストールできます。}}&lt;br /&gt;
&lt;br /&gt;
=== ランタイムまたはアプリケーションをダウングレードする ===&lt;br /&gt;
&lt;br /&gt;
ランタイムやアプリケーションをダウングレードするには、まず、関連するコミット ID を探します。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak remote-info --log &#039;&#039;remote&#039;&#039; &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ここで、&#039;&#039;remote&#039;&#039; はリポジトリ (flathub など)、&#039;&#039;name&#039;&#039; はアプリケーションまたはランタイムの名前です。そして、コミットをデプロイします。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak update --commit=&#039;&#039;commit&#039;&#039; &#039;&#039;name&#039;&#039;&lt;br /&gt;
 &lt;br /&gt;
ここで、&#039;&#039;commit&#039;&#039; は希望するバージョンのコミット、 ``name`` は前回と同じです。&lt;br /&gt;
&lt;br /&gt;
この手順は、パッケージを最新版でない希望のバージョンに選択的にアップグレードするのにも使えます。&lt;br /&gt;
&lt;br /&gt;
このパッケージのアップデートを {{ic|flatpak update}} から除外するには、[[Flatpak#ランタイムまたはアプリケーションの更新を防止する|ランタイムまたはアプリケーションの更新を防止する]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ランタイムまたはアプリケーションの更新を防止する ===&lt;br /&gt;
&lt;br /&gt;
ランタイムまたはアプリケーションへの自動および手動更新を防止するには、{{ic|flatpak mask}} コマンドを使用します。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak mask &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
これにより、選択的なアップグレードとダウングレードも防止されます。&lt;br /&gt;
&lt;br /&gt;
マスクを元に戻し、更新を再度有効にするには、{{ic|flatpak mask --remove}} を使用します。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak mask --remove &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Flatpak の .desktop ファイルをメニューに追加 ===&lt;br /&gt;
&lt;br /&gt;
Flatpak ではウィンドウマネージャが XDG_DATA_DIRS 環境変数を参照してアプリケーションを見つけるようになっています。セッションを再起動する必要があったり、ランチャーによっては環境変数がサポートされていない場合があります。スキャンされるディレクトリのリストを編集出来る場合、以下を追加してください:&lt;br /&gt;
&lt;br /&gt;
 ~/.local/share/flatpak/exports/share/applications&lt;br /&gt;
 /var/lib/flatpak/exports/share/applications&lt;br /&gt;
&lt;br /&gt;
上記の設定で Awesome から Flatpak アプリが起動できるようになります。&lt;br /&gt;
&lt;br /&gt;
=== アプリケーションのサンドボックス権限を表示する ===&lt;br /&gt;
&lt;br /&gt;
Flatpak のアプリケーションには、あらかじめサンドボックスのルールが設定されており、アプリケーションがアクセスできるリソースやファイルシステムのパスが定義されています。&lt;br /&gt;
特定のアプリケーションのアクセス権を表示するには、次のようにします。&lt;br /&gt;
 $ flatpak info --show-permissions &#039;&#039;name&#039;&#039;&lt;br /&gt;
サンドボックスのパーミッション名のリファレンスは、[https://docs.flatpak.org/en/latest/sandbox-permissions-reference.html オフィシャル flatpak ドキュメント] にあります。&lt;br /&gt;
&lt;br /&gt;
=== サンドボックスでのアプリケーションの権限を上書き ===&lt;br /&gt;
既定のアプリケーションの権限が寛容すぎたり厳しすぎる場合は、{{ic|flatpak override}} コマンドを利用して権限を書き換えられます。&lt;br /&gt;
例:&lt;br /&gt;
 flatpak override --nofilesystem=home &#039;&#039;name&#039;&#039;&lt;br /&gt;
これにより、アプリケーションがホームディレクトリへアクセスできなくなります。&lt;br /&gt;
&lt;br /&gt;
デバイス、ファイルシステム、ソケットといった権限の種別ごとに、コマンドラインオプションで特定の権限を許可や拒否することができます。例えば、{{ic|1=--device=&#039;&#039;device_name&#039;&#039;}} とすると特定のデバイスへのアクセスを許可し、一方 {{ic|1=--nodevice=&#039;&#039;device_name&#039;&#039;}} とすると特定のデバイスへのアクセス権限を拒否します。&lt;br /&gt;
&lt;br /&gt;
すべての設定については、マニュアルページを参照してください: {{man|1|flatpak-override}}&lt;br /&gt;
&lt;br /&gt;
次のコマンドを実行すると、上書きした設定をリセットし既定の権限に戻せます:&lt;br /&gt;
 $ flatpak override --reset &#039;&#039;name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== カスタムベースランタイムの作成 ==&lt;br /&gt;
&lt;br /&gt;
{{Warning|あなたのソフトウェアを Flatpak として公開したい場合、Arch ベースのランタイムを使うことは相応しくありません。そのような場合は [http://docs.flatpak.org 公式ドキュメント] に従って [http://flatpak.org/runtimes.html 共通ランタイム] を使用して Flatpak エコシステムに適合させると良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* アプリやランタイムを作成するときはソフトウェアはサンドボックス化されないため、信用できないソフトウェアをビルドするときは普段使いのユーザーアカウントは使わないことを推奨します。&lt;br /&gt;
* バンドルを配布する場合、バンドルしたソフトウェアのソースコードを要求に応じて提供する法的な義務を負います。[[ABS]] を使ってソースからパッケージをビルドすることもできます。}}&lt;br /&gt;
&lt;br /&gt;
pacman を使うことで Flatpak 用に Arch ベースのカスタムランタイムやベース SDK を作成することができます。カスタムランタイムを使用してアプリケーションをビルドしたりパッケージ化することが可能です。デフォルトの {{ic|org.freedesktop.BasePlatform}} や {{ic|org.freedesktop.BaseSdk}} ランタイムを使用する代わりとなります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|flatpak}} だけでなく、{{Pkg|fakeroot}} のインストールが必要です。また、pacman フックを使うには {{Pkg|fakechroot}} も必要です。&lt;br /&gt;
&lt;br /&gt;
まずは、ランタイムやアプリケーションをビルドするためのディレクトリを作成してください:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir &#039;&#039;myflatpakbuilddir&#039;&#039;&lt;br /&gt;
 $ cd &#039;&#039;myflatpakbuilddir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
次にランタイムベースプラットフォームをビルドするためのディレクトリを用意します。シンボリックリンクを作成して Arch からデフォルトの {{ic|/usr/share}} などにアクセスできるようにしてください:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p &#039;&#039;myruntime&#039;&#039;/files/var/lib/pacman&lt;br /&gt;
 $ touch &#039;&#039;myruntime&#039;&#039;/files/.ref&lt;br /&gt;
 $ ln -s /usr/usr/share &#039;&#039;myruntime&#039;&#039;/files/share&lt;br /&gt;
 $ ln -s /usr/usr/include &#039;&#039;myruntime&#039;&#039;/files/include&lt;br /&gt;
 $ ln -s /usr/usr/local &#039;&#039;myruntime&#039;&#039;/files/local&lt;br /&gt;
&lt;br /&gt;
Arch ランタイムから OS のフォントを利用できるようにするには:&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -p &#039;&#039;myruntime&#039;&#039;/files/usr/share/fonts&lt;br /&gt;
 $ ln -s /run/host/fonts &#039;&#039;myruntime&#039;&#039;/files/usr/share/fonts/flatpakhostfonts&lt;br /&gt;
&lt;br /&gt;
ランタイムにパッケージをインストールする前に {{ic|pacman.conf}} を編集する必要があります。{{ic|/etc/pacman.conf}} をビルドディレクトリにコピーして以下の変更を行ってください:&lt;br /&gt;
&lt;br /&gt;
* {{ic|CheckSpace}} オプションを削除して pacman によってルートファイルシステムに関するエラーが表示されないようにしてください。&lt;br /&gt;
* 不必要なカスタムリポジトリを削除してください。必要なのは {{ic|IgnorePkg}}, {{ic|IgnoreGroup}}, {{ic|NoUpgrade}}, {{ic|NoExtract}} の設定だけです。&lt;br /&gt;
&lt;br /&gt;
それからランタイムにパッケージをインストールします:&lt;br /&gt;
&lt;br /&gt;
 $ fakechroot fakeroot pacman -Syu --root &#039;&#039;myruntime&#039;&#039;/files --dbpath &#039;&#039;myruntime&#039;&#039;/files/var/lib/pacman --config pacman.conf base&lt;br /&gt;
 $ mv pacman.conf &#039;&#039;myruntime&#039;&#039;/files/etc/pacman.conf&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;myruntime&#039;&#039;/files/etc/locale.gen}} を編集して使用する[[ロケール]]を設定してください。その後ランタイムのロケールを再生成:&lt;br /&gt;
&lt;br /&gt;
 $ fakechroot chroot &#039;&#039;myruntime&#039;&#039;/files locale-gen&lt;br /&gt;
&lt;br /&gt;
パッケージをビルドしたり pacman を実行するのに必要なアプリケーションを追加することでベースランタイムからベース SDK を作成できます:&lt;br /&gt;
&lt;br /&gt;
 $ cp -r &#039;&#039;myruntime&#039;&#039; mysdk&lt;br /&gt;
 $ fakechroot fakeroot pacman -S --root mysdk/files --dbpath mysdk/files/var/lib/pacman --config mysdk/files/etc/pacman.conf base-devel fakeroot fakechroot --needed&lt;br /&gt;
&lt;br /&gt;
ランタイムと SDK についてのメタデータを追加:&lt;br /&gt;
&lt;br /&gt;
{{hc|&#039;&#039;myruntime&#039;&#039;/metadata|2=&lt;br /&gt;
[Runtime]&lt;br /&gt;
name=org.mydomain.BasePlatform&lt;br /&gt;
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26&lt;br /&gt;
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|mysdk/metadata|2=&lt;br /&gt;
[Runtime]&lt;br /&gt;
name=org.mydomain.BaseSdk&lt;br /&gt;
runtime=org.mydomain.BasePlatform/x86_64/2016-06-26&lt;br /&gt;
sdk=org.mydomain.BaseSdk/x86_64/2016-06-26&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
カレントディレクトリのローカルリポジトリにベースランタイムと SDK を追加してください。“My Arch base runtime” や “My Arch base SDK” などの適当なコミットメッセージを使用すると良いでしょう。&lt;br /&gt;
&lt;br /&gt;
 $ ostree init --mode archive-z2 --repo=.&lt;br /&gt;
 $ EDITOR=&amp;quot;nano -w&amp;quot; ostree commit -b runtime/org.mydomain.BasePlatform/x86_64/2016-06-26 --tree=dir=&#039;&#039;myruntime&#039;&#039;&lt;br /&gt;
 $ EDITOR=&amp;quot;nano -w&amp;quot; ostree commit -b runtime/org.mydomain.BaseSdk/x86_64/2016-06-26 --tree=dir=mysdk&lt;br /&gt;
 $ ostree summary -u&lt;br /&gt;
&lt;br /&gt;
ランタイムと SDK をインストール:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak remote-add --user --no-gpg-verify myarchos file://$(pwd)&lt;br /&gt;
 $ flatpak install --user myarchos org.mydomain.BasePlatform 2016-06-26&lt;br /&gt;
 $ flatpak install --user myarchos org.mydomain.BaseSdk 2016-06-26&lt;br /&gt;
&lt;br /&gt;
=== pacman でアプリを作成 ===&lt;br /&gt;
&lt;br /&gt;
[http://flatpak.org/developer.html 通常の方法] でアプリケーションをビルドする代わりに、pacman を使って通常の Arch パッケージのコンテナを作成することができます。アプリを作成するとき {{ic|/usr}} は読み込み専用であるため、アプリをビルドするときに Arch のパッケージを使うことはできません。pacman でアプリを作成する場合:&lt;br /&gt;
&lt;br /&gt;
* pacman を使って依存パッケージを全て含んだランタイムを作成する。&lt;br /&gt;
* [http://flatpak.org/developer.html 通常の方法] でアプリをコンパイルするか、{{ic|configure}} スクリプトで {{ic|1=--prefix=/app}} を使用するように Flatpak 向けにカスタマイズした [[PKGBUILD]] を使う。&lt;br /&gt;
&lt;br /&gt;
あるいは:&lt;br /&gt;
* pacman を使って pacman でインストールしたアプリを含むランタイムを作成する&lt;br /&gt;
* アプリを起動するためのダミーアプリを作成する。&lt;br /&gt;
&lt;br /&gt;
後者の場合、まずは以下のように pacman を使ってランタイムを作成します (例として {{Pkg|gedit}} をコンテナ化)。ランタイムは pacman を使って初期化・準備します。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak build-init -w geditruntime org.mydomain.geditruntime org.mydomain.BaseSdk org.mydomain.BasePlatform 2016-06-26&lt;br /&gt;
 $ flatpak build geditruntime sed -i &amp;quot;s/^#Server/Server/g&amp;quot; /etc/pacman.d/mirrorlist&lt;br /&gt;
 $ flatpak build geditruntime ln -s /usr/var/lib /var/lib&lt;br /&gt;
 $ flatpak build geditruntime fakeroot pacman-key --init&lt;br /&gt;
 $ flatpak build geditruntime fakeroot pacman-key --populate archlinux&lt;br /&gt;
&lt;br /&gt;
pacman からホストのネットワーク接続が使えるようにする必要があります:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak build --share=network geditruntime fakechroot fakeroot pacman --root /usr -S gedit&lt;br /&gt;
&lt;br /&gt;
ランタイムを完成させる前にインストールをテストすることができます:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak build --socket=x11 geditruntime gedit&lt;br /&gt;
&lt;br /&gt;
ランタイムをビルドを完了して新しいローカルリポジトリにエクスポートしてください。pacman の GnuPG 鍵のパーミッションが干渉する可能性があるため先に削除する必要があります。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak build geditruntime rm -r /etc/pacman.d/gnupg&lt;br /&gt;
 $ flatpak build-finish geditruntime&lt;br /&gt;
 $ sed -i &amp;quot;s/\[Application\]/\[Runtime\]/;s/runtime=org.mydomain.BasePlatform/runtime=org.mydomain.geditruntime/&amp;quot; geditruntime/metadata&lt;br /&gt;
 $ flatpak build-export -r geditrepo geditruntime&lt;br /&gt;
&lt;br /&gt;
それからダミーアプリを作成:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak build-init geditapp org.gnome.gedit org.mydomain.BaseSdk org.mydomain.geditruntime&lt;br /&gt;
&lt;br /&gt;
ビルドを完了するときに指定するオプションで、サンドボックス化されたときのアプリのアクセス権限を調整することができます。利用可能なオプションは [[#参照|Flatpak のドキュメント]]や [https://gitlab.gnome.org/GNOME/gnome-apps-nightly/tree/master GNOME のマニフェストファイル] を見てください。また、ビルドが完了した後、エクスポートする前に必要に応じて {{ic|geditapp/metadata}} を編集する方法もあります。メタデータファイルが完成したら、リポジトリにアプリをエクスポートしてください。&lt;br /&gt;
&lt;br /&gt;
 $ flatpak build-finish geditapp --socket=x11 &#039;&#039;[possibly other options]&#039;&#039; --command=gedit&lt;br /&gt;
 $ flatpak build-export geditrepo geditapp&lt;br /&gt;
&lt;br /&gt;
ランタイムを使ってアプリをインストール:&lt;br /&gt;
&lt;br /&gt;
 $ flatpak --user remote-add --no-gpg-verify geditrepo geditrepo&lt;br /&gt;
 $ flatpak install --user geditrepo org.mydomain.geditruntime&lt;br /&gt;
 $ flatpak install --user geditrepo org.gnome.gedit&lt;br /&gt;
 $ flatpak run org.gnome.gedit&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Flatpak は Linux で強化されたカーネルでは実行されません ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|linux-hardened}} カーネルは {{ic|kernel.unprivileged_userns_clone}} を {{ic|0}} に設定しており、特権ユーザのみが新しいユーザ名前空間を作成することができるようになっているためです。&lt;br /&gt;
&lt;br /&gt;
これを修正する一つの方法は、{{pkg|bubblewrap-suid}} を [[インストール]] することです.このパッケージは {{man|1|bwrap}} の {{ic|setuid}} ビットを有効にして、bubblewrap が自分自身を昇格させて新しい名前空間を作成できるようにしたバージョンを提供します。&lt;br /&gt;
&lt;br /&gt;
また、{{man|8|sysctl}} を使って {{ic|kernel.unprivileged_userns_clone}} を {{ic|1}} に設定して、非特権ユーザーが新しいユーザーネームスペースを作成できるようにすることも可能です。&lt;br /&gt;
&lt;br /&gt;
 # sysctl kernel.unprivileged_userns_clone=1&lt;br /&gt;
&lt;br /&gt;
{{Warning|このカーネルパラメータ値を使用すると、セキュリティ上マイナスの影響があります。詳しくは [[セキュリティ#アプリケーションのサンドボックス化]] をご覧ください。}}&lt;br /&gt;
&lt;br /&gt;
この変更を再起動後も維持するには、設定ファイルを {{man|5|sysctl.d}} に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|head=/etc/sysctl.d/flatpak.conf|&lt;br /&gt;
output=kernel.unprivileged_userns_clone=1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳細については、[[Bubblewrap#インストール]] の注記を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== xdg-desktop-portal が起動しない ===&lt;br /&gt;
&lt;br /&gt;
[[xinit#xinitrc|手動で設定された実行コマンド]] で X を起動する場合、`xinitrc` リファレンスのすべての重要な構成要素を含んでいることを確認してください。そのうちの1つは、D-Bus セッションサービスに使用される環境のアップデートを実行するスクリプトをソースとしています。&lt;br /&gt;
&lt;br /&gt;
 systemctl --user import-environment DISPLAY XAUTHORITY&lt;br /&gt;
 if command -v dbus-update-activation-environment &amp;gt;/dev/null 2&amp;gt;&amp;amp;1; then&lt;br /&gt;
    dbus-update-activation-environment DISPLAY XAUTHORITY&lt;br /&gt;
 fi&lt;br /&gt;
&lt;br /&gt;
=== Flatpak アプリケーションがデフォルトのシステム テーマを選択しない ===&lt;br /&gt;
&lt;br /&gt;
flatpak のドキュメントに記載されているように、flatpak アプリにシステムテーマを適用する理想的な方法はありません。&lt;br /&gt;
[https://docs.flatpak.org/en/latest/desktop-integration.html?highlight=theme#applying-themes] [https://docs.flatpak.org/en/latest/desktop-integration.html?highlight=theme#theming] しかし [https://web.archive.org/web/20230106121332/https://itsfoss.com/flatpak-app-apply-theme/ there is a workaround] flatpak アプリにテーマを適用するために使用できます。&lt;br /&gt;
&lt;br /&gt;
=== Firefox でローカル HTML ページを開くと &amp;quot;ファイルが見つかりません&amp;quot; というエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
Flatpak 版 Firefox のデフォルトでは、ローカルの HTML を開くと &amp;quot;File not found&amp;quot; エラーページが表示されます。これは、[[Flatpak#サンドボックスでのアプリケーションの権限を上書き|パーミッション]] が、ファイルを含むフォルダーにアクセスするためにアプリに付与されなければならないからです。&lt;br /&gt;
&lt;br /&gt;
ただし、ホームフォルダ全体へのアクセス許可を与えると、Firefox は {{ic|~/.mozilla}} に既存のプロファイルをチェックし、サンドボックス化されたフォルダ {{ic|~/.var/app/org.mozilla.firefox/cache/mozilla/}} から以前に使用したプロファイルの代わりにロードすることに注意ください。(Flatseal などで) パーミッションを変更した後に前のセッションのタブや閲覧履歴がなくなった場合は、{{ic|~/.mozilla}} へのアクセスを除外するようにパーミッションを変更するか、{{ic|~/.var/app/org.mozilla.firefox/cache/mozilla/}} から {{ic|~/.mozilla}} へのプロファイルコピーを検討して下さい。&lt;br /&gt;
&lt;br /&gt;
=== wlroots ベースのコンポジターでリンクを開くことができない ===&lt;br /&gt;
&lt;br /&gt;
URI を開こうとする Flatpak アプリケーションは {{ic|org.freedesktop.portal.OpenURI.OpenURI}} インターフェースを使用します。[[PipeWire#WebRTC 画面共有|xdg-desktop-portal]] で公開されている [[D-Bus]] インターフェースを使用します。[https://github.com/emersion/xdg-desktop-portal-wlr/issues/42 xdg-desktop-portal-wlr バックエンド] はこの呼び出しをサポートしていないので、例えば {{pkg|xdg-desktop-portal-gtk}} のように、隙間を埋めるための追加のバックエンドが必要になります。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [http://flatpak.org 公式ウェブサイト]&lt;br /&gt;
* [https://docs.flatpak.org/en/latest/index.html ドキュメント]&lt;br /&gt;
* [https://github.com/flatpak/flatpak/wiki 公式 Github wiki]&lt;br /&gt;
* [[Wikipedia:Flatpak]]&lt;br /&gt;
* [https://wiki.gnome.org/Projects/SandboxedApps Gnome SandboxedApps]&lt;br /&gt;
* [https://community.kde.org/Guidelines_and_HOWTOs/Flatpak KDE Testing Runtime and Applications]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=31463</id>
		<title>PipeWire</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=PipeWire&amp;diff=31463"/>
		<updated>2023-05-04T02:53:08Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* セッション マネージャー */  WirePlumber を推奨とする記述を英語版から反映&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:マルチメディア]]&lt;br /&gt;
[[en:PipeWire]]&lt;br /&gt;
[[fi:PipeWire]]&lt;br /&gt;
[[pt:PipeWire]]&lt;br /&gt;
[[ru:PipeWire]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PipeWire/サンプル}}&lt;br /&gt;
{{Related|WirePlumber}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://pipewire.org PipeWire] は新しい低レベルマルチメディアフレームワークです。&lt;br /&gt;
映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、[[PulseAudio]]、[[JACK]]、[[ALSA]]、[[GStreamer]] をベースとしたアプリケーションと互換性があります。&lt;br /&gt;
&lt;br /&gt;
このフレームワークのデーモンは (PulseAudio と JACK の機能を持った) オーディオサーバーとしても、ビデオキャプチャサーバーとしても設定できます。&lt;br /&gt;
&lt;br /&gt;
また PipeWire は [[Flatpak]] のようなコンテナをサポートしており、&#039;&#039;audio&#039;&#039; や &#039;&#039;video&#039;&#039; [[ユーザーとグループ#グループ管理|ユーザーグループ]]に依存するのではなく、Flatpak や Wayland にスクリーンや音声を録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
公式リポジトリから {{Pkg|pipewire}} パッケージを [[インストール]] してください。[[multilib]] に対応した {{Pkg|lib32-pipewire}} もあります。&lt;br /&gt;
&lt;br /&gt;
Pipewire は [[systemd/ユーザー]] を使ってサーバーを管理し、ソケットを自動で起動します。&lt;br /&gt;
&lt;br /&gt;
オプションとして、{{Pkg|pipewire-docs}} をインストールすると、ドキュメントを確認することができます。&lt;br /&gt;
&lt;br /&gt;
Pipewire は、他のオーディオサーバーと置き換えることができます。詳しくは [[PipeWire#オーディオ|オーディオ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== セッション マネージャー ===&lt;br /&gt;
&lt;br /&gt;
[[JACK]] と同様、PipeWire は内部で接続ロジックを実装していません。新しいストリームを監視し、適切な出力デバイスやアプリケーションに接続する負担は、セッションマネージャーとして知られる外部のコンポーネントに任されています。&lt;br /&gt;
&lt;br /&gt;
現在、推奨のセッションマネージャーは1つだけで次になります:&lt;br /&gt;
* {{App|[[WirePlumber]]| 強力なマネージャであり、現在の推奨品です。モジュール設計に基づいており、実際の管理機能を実装する Lua プラグインがあります。|https://pipewire.pages.freedesktop.org/wireplumber/|{{Pkg|wireplumber}}}}&lt;br /&gt;
&lt;br /&gt;
次のセッションマネージャーはサポート外になっており WirePlumber を推奨しています:&lt;br /&gt;
&lt;br /&gt;
* {{App|PipeWire Media Session|いくつかの基本的なデスクトップのユースケースに対応した非常にシンプルなセッションマネージャです。これは主にテスト用と新しいセッションマネージャを構築するための例として実装されました。|https://gitlab.freedesktop.org/pipewire/media-session|{{Pkg|pipewire-media-session}}}}&lt;br /&gt;
&lt;br /&gt;
PipeWire のインストール時に、どちらかを選ぶように指示されます。後で適切なパッケージをインストールすることで、もう一方のオプションと衝突しますが、置き換えることで切り替えが可能です。&lt;br /&gt;
&lt;br /&gt;
=== GUI ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Helvum|PipeWire 用の GTK 製のパッチベイ。 JACK のツールの catia にインスパイアされた。|https://gitlab.freedesktop.org/ryuukyu/helvum|{{pkg|helvum}}}}&lt;br /&gt;
* {{App|qpwgraph|Qt-based Graph/Patchbay for PipeWire, inspired by the JACK tool QjackCtl.|https://gitlab.freedesktop.org/rncbc/qpwgraph|{{Pkg|qpwgraph}}}}&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
PipeWire パッケージは、初期設定ファイルを{{ic|/usr/share/pipewire}} に用意しています。パッケージのアップデートで変更内容が上書きされてしまうので、これらのファイルを直接編集するべきではありません。PipeWire を設定するには、ファイルを {{ic|/usr/share/pipewire}} からシステム全体の代替場所 {{ic|/etc/pipewire}} か、ユーザーの場所 {{ic|~/.config/pipewire}} にコピーしてください。[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PipeWire#configuration-file-pipewireconf]&lt;br /&gt;
&lt;br /&gt;
=== プロファイル ===&lt;br /&gt;
&lt;br /&gt;
Pipewire では、PulseAudio のプロファイルに加えて、pavucontrol で選択可能なカスタムの &#039;&#039;Pro Audio&#039;&#039; プロファイルが提供されています。その効果はこちらで解説しています：https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-is-the-pro-audio-profile&lt;br /&gt;
&lt;br /&gt;
== 使用方法 ==&lt;br /&gt;
&lt;br /&gt;
=== 音声 ===&lt;br /&gt;
&lt;br /&gt;
PulseAudio や JACK と同様に  PipeWire をオーディオサーバーとして使用できます。 PulseAudio サーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで  PulseAudio と JACK の両方を置き換えることを目的としています。詳細については[https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ この記事]を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== ALSA/レガシーアプリケーション ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-alsa}} をインストールして ALSA API を使用するすべてのアプリケーションが PipeWire を使用するよう設定できます。&lt;br /&gt;
&lt;br /&gt;
==== PulseAudio クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-pulse}} をインストールします。このパッケージは {{pkg|pulseaudio}} と {{pkg|pulseaudio-bluetooth}} を置き換えます。再起動するか、ログインし直すか、{{ic|systemctl start --user pipewire-pulse.service}} を実行すると有効化されます。&lt;br /&gt;
&lt;br /&gt;
パッケージがユーザーサービス {{ic|pipewire-pulse.socket}} を自動的に有効化するので、通常それ以上の操作は不要です。置き換えが機能しているかどうかを確認するには、次のコマンドを実行して出力を確認してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ pactl info|2=&lt;br /&gt;
...&lt;br /&gt;
Server Name: PulseAudio (on PipeWire 0.3.16)&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
システム起動時に PipeWire が正しく機能しない場合は、[[systemd/ユーザー|ユーザーサービス]] {{ic|pipewire-pulse.service}} と {{ic|pipewire.service}} と {{ic|pipewire-media-session.service}} が起動して実行されているか確認します。{{ic|pipewire-pulse.service}} と {{ic|pipewire-pulse.socket}} は root で実行することを制限するような {{ic|ConditionUser}} を設定していることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== JACK クライアント ====&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipewire-jack}} をインストールします。{{ic|pw-jack}} を使用して JACK クライアントを起動すると、元の {{ic|libjack*}} ではなく PipeWire が提供する互換ライブラリが使用されます:&lt;br /&gt;
&lt;br /&gt;
 pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
カスタムバッファサイズを要求することもできます。{{ic|PIPEWIRE_LATENCY}}環境変数を {{ic|バッファサイズ/サンプルレート}} (ブロックのレイテンシ(秒)を意味します) に設定します:&lt;br /&gt;
&lt;br /&gt;
 PIPEWIRE_LATENCY=&amp;quot;128/48000&amp;quot; pw-jack &#039;&#039;application&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また {{aur|pipewire-jack-dropin}} をインストールするか、{{pkg|jack}} か {{pkg|jack2}} をアンインストールして JACK クライアントが互換ライブラリを自動的に読み込むようにもできます。&lt;br /&gt;
&lt;br /&gt;
{{ic|ldd}} を使用して JACK アプリケーションが正しいライブラリにリンクしていることを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=&lt;br /&gt;
        libjack.so.0 =&amp;gt; /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイス ====&lt;br /&gt;
&lt;br /&gt;
PipeWire は {{pkg|pipewire-pulse}} パッケージがインストールされている場合 Bluetooth オーディオデバイスを制御します。具体的には、メディアセッションデーモンは {{ic|/etc/pipewire/media-session.d/with-pulseaudio}} が存在する時に自動的にその {{ic|bluez5}} モジュールを有効にします。&lt;br /&gt;
&lt;br /&gt;
===== プロファイルの自動選択機能 =====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} は、入力ストリームが必要なときに、HSP/HFP と A2DP プロファイルを自動的に切り替えます。これを有効にするには、{{ic|bluez5.autoswitch-profile}} プロパティを {{ic|true}} にセットしてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf (or ~/.config/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                ...&lt;br /&gt;
                bluez5.autoswitch-profile = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
これらの機能は、[[WirePlumber]] ではまだ [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/90 実装中] です。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire ネイティブパッチセット ====&lt;br /&gt;
&lt;br /&gt;
グラフィカルな視覚化と接続の作成のための Helvum はありますが、それ以外はまだ入っていません。以下は、ワイヤセットの保存、ワイヤセットの読み込み、すべての接続の解除を行う bash スクリプトです。保存と読み込みには、コマンドラインパラメータでファイル名を指定します。&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-savewires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
if [[ &amp;quot;$#&amp;quot; -ne 1 ]]; then&lt;br /&gt;
	echo&lt;br /&gt;
	echo &#039;usage: pw-savewires filename&#039;&lt;br /&gt;
	echo&lt;br /&gt;
	exit 0&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
rm $1 &amp;amp;&amp;gt; /dev/null&lt;br /&gt;
while IFS= read -r line; do&lt;br /&gt;
	link_on=`echo $line | cut -f 4 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_op=`echo $line | cut -f 6 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_in=`echo $line | cut -f 8 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	link_ip=`echo $line | cut -f 10 -d &#039;&amp;quot;&#039;`&lt;br /&gt;
	echo &amp;quot;Saving: &amp;quot; &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot;&lt;br /&gt;
	echo &amp;quot;&#039;&amp;quot;$link_on:$link_op&amp;quot;&#039;,&#039;&amp;quot;$link_in:$link_ip&amp;quot;&#039;&amp;quot; &amp;gt;&amp;gt; $1&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-loadwires|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
import csv&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) &amp;lt; 2:&lt;br /&gt;
	print(&#039;\n usage: pw-loadwires filename\n&#039;)&lt;br /&gt;
	quit()&lt;br /&gt;
&lt;br /&gt;
with open(sys.argv[1], newline=&#039;&#039;) as csvfile:&lt;br /&gt;
	pwwreader = csv.reader(csvfile, delimiter=&#039;,&#039;, quotechar=&#039;&amp;quot;&#039;)&lt;br /&gt;
	for row in pwwreader:&lt;br /&gt;
		print(&#039;Loading:  &#039; + row[0] + &#039; --&amp;gt; &#039; + row[1])&lt;br /&gt;
		process = os.popen(&#039;pw-link &#039; + row[0] + &#039; &#039; + row[1])&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{hc|pw-dewire|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
while read -r line; do&lt;br /&gt;
	echo &#039;Dewiring: &#039; $line &#039;...&#039;&lt;br /&gt;
	pw-link -d $line&lt;br /&gt;
done &amp;lt; &amp;lt;(pw-cli dump short link {{!}} grep -Eo &#039;^[0-9]+&#039;)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
==== ネットワーク上のコンピューターとオーディオ機器を共有する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire 自体はネットワーク透過型ではありませんが、そのパルス実装は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio#network-support ネットワークストリーミング] をサポートしています。ネットワーク上のコンピュータ間でオーディオを共有する簡単な方法は、[[Avahi]] デーモンを使って検出することです。&lt;br /&gt;
オーディオを共有するすべてのコンピュータで {{ic|avahi-daemon.service}} が実行されていることを確認してください。&lt;br /&gt;
&lt;br /&gt;
ローカルのオーディオデバイスを共有するために、ホスト上で適切なモジュールをロードしてください。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-native-protocol-tcp listen=&#039;&#039;192.168.1.10&#039;&#039; # Use the local IP address&lt;br /&gt;
 pactl load-module module-zeroconf-publish&lt;br /&gt;
&lt;br /&gt;
次に、クライアントにディスカバリモジュールをロードします。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-zeroconf-discover&lt;br /&gt;
&lt;br /&gt;
===== AirPlay レシーバーにオーディオをストリーミングする =====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:AirPlay#Receivers|AirPlay Receiver]] を装ったデバイスにオーディオをストリーミングすることが可能です。この機能を有効にするには、[https://docs.pipewire.org/page_module_raop_discover.html RAOP Discover モジュール] をロードします。 &lt;br /&gt;
&lt;br /&gt;
 $ pactl load-module module-raop-discover&lt;br /&gt;
&lt;br /&gt;
専用の設定ファイルを作成することで、このモジュールを自動的にロードすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/raop-discover.conf (or ~/.config/pipewire/pipewire.conf.d/raop-discover.conf)|2=&lt;br /&gt;
context.modules = [&lt;br /&gt;
   {&lt;br /&gt;
       name = libpipewire-module-raop-discover&lt;br /&gt;
       args = { }&lt;br /&gt;
   }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
一部のスピーカーの AirPlay 実装 (Sonos AirPlay 2 スピーカーなど) では、ソースデバイスで着信 UDP トラフィック用にポート 6001 および 6002 を開く必要がある場合があります。&lt;br /&gt;
&lt;br /&gt;
==== ネイティブ JACK 上で PipeWire を実行する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire はネイティブ JACK デーモン上の JACK クライアントとして実行することもできます。詳細は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK JACK and PipeWire] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== PipeWire シンクとして ALSA dmix デバイスを使用する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire サーバー(またはユーザーごとに複数) を [[Advanced Linux Sound Architecture#Dmix|ALSA dmix デバイス]] を介して ALSA に出力することが可能です。これにより、ALSA を主要な音声出力システムとして使用しながら、Bluetooth ヘッドフォンなどの ALSA 以外のデバイスを使用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
===== ALSA dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
{{ic|PCH}} と {{ic|HDMI}} の 2 枚のカードがあるとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/cards|&lt;br /&gt;
 0 [PCH            ]: HDA-Intel - HDA Intel PCH&lt;br /&gt;
                      HDA Intel PCH at 0xdff40000 irq 146&lt;br /&gt;
 1 [HDMI           ]: HDA-Intel - HDA ATI HDMI&lt;br /&gt;
                      HDA ATI HDMI at 0xdfe60000 irq 147&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
PCM は次のようになります。&lt;br /&gt;
&lt;br /&gt;
{{hc|/proc/asound/pcm|&lt;br /&gt;
00-00: ALC1220 Analog : ALC1220 Analog : playback 1 : capture 1&lt;br /&gt;
00-02: ALC1220 Alt Analog : ALC1220 Alt Analog : capture 1&lt;br /&gt;
01-03: HDMI 0 : HDMI 0 : playback 1&lt;br /&gt;
01-07: HDMI 1 : HDMI 1 : playback 1&lt;br /&gt;
01-08: HDMI 2 : HDMI 2 : playback 1&lt;br /&gt;
01-09: HDMI 3 : HDMI 3 : playback 1&lt;br /&gt;
01-10: HDMI 4 : HDMI 4 : playback 1&lt;br /&gt;
01-11: HDMI 5 : HDMI 5 : playback 1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ALSA 設定が次のようになっているとします。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/asound.conf|&lt;br /&gt;
ctl.!default {&lt;br /&gt;
  type hw&lt;br /&gt;
  card PCH&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.!default {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
pcm.dhdmi {&lt;br /&gt;
  type plug&lt;br /&gt;
  slave.pcm &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この特定の例では、dmix デバイスは {{ic|dmix:PCH,0}} と {{ic|dmix:HDMI,9}} になります。&lt;br /&gt;
&lt;br /&gt;
===== PipeWire dmix セットアップ =====&lt;br /&gt;
&lt;br /&gt;
まず、{{ic|alsa_monitor.enable()}} をコメントアウトして、{{ic|wireplumber}} によるハードウェア ALSA デバイスの監視と追加を停止します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/90-enable-all.lua (or ~/.config/wireplumber/main.lua.d/90-enable-all.lua)|&lt;br /&gt;
...&lt;br /&gt;
-- Load devices&lt;br /&gt;
&#039;&#039;&#039;-- alsa_monitor.enable()&#039;&#039;&#039;&lt;br /&gt;
v4l2_monitor.enable()&lt;br /&gt;
libcamera_monitor.enable()&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、dmix デバイスを使用するように {{ic|pipewire}} を設定します。デフォルトの設定ファイル ({{ic|/usr/share/pipewire/pipewire.conf}}) には [https://gitlab.freedesktop.org/pipewire/pipewire/-/blob/0.3.59/src/daemon /pipewire.conf.in#L219-239 コメントアウトされた例] をベースとして使用できます。&lt;br /&gt;
&lt;br /&gt;
独自の要素を {{ic|context.objects}} 配列に追加します。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf.d/alsa-dmix.conf (or ~/.config/pipewire/pipewire.conf.d/alsa-dmix.conf)|output=&lt;br /&gt;
context.objects = [&lt;br /&gt;
    # We do not start with dmix, but with an input device.&lt;br /&gt;
    # Do not forget to add an input device.&lt;br /&gt;
    # On a friend&#039;s Laptop, I saw Zoom having a nervous&lt;br /&gt;
    # breakdown and endlessly crying because no input device&lt;br /&gt;
    # was configured! You have been warned.&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.source&lt;br /&gt;
            node.name              = &amp;quot;alsa-mic-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;Mic Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Source&amp;quot;&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;hw:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    # Okay, now we add our dmix PCMs&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-internal&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM Internal&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:PCH,0&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    { factory = adapter&lt;br /&gt;
        args = {&lt;br /&gt;
            factory.name           = api.alsa.pcm.sink # sink for dmix&lt;br /&gt;
            node.name              = &amp;quot;alsa-dmix-hdmi&amp;quot; # name of pulse device (mpv)&lt;br /&gt;
            node.description       = &amp;quot;PCM HDMI&amp;quot; # name of pulse device (pavucontrol)&lt;br /&gt;
            media.class            = &amp;quot;Audio/Sink&amp;quot; # Sink for dmix&lt;br /&gt;
            # remember this is a non-default dmix from /etc/asound.conf&lt;br /&gt;
            api.alsa.path          = &amp;quot;&#039;&#039;&#039;dmix:HDMI,9&#039;&#039;&#039;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ユーザー (非 root) として、{{ic|wpctl status}} の出力を確認し、{{ic|wpctl set-default &#039;&#039;ID&#039;&#039;}} でデフォルトの入力(ソース) と出力 (シンク) のデバイスを好みのものに設定します。{ic|&#039;&#039;ID&#039;&#039;}} はシンク/ソース名の前の数字です。&lt;br /&gt;
&lt;br /&gt;
これで、構成を完全にテストすることができます。&lt;br /&gt;
&lt;br /&gt;
==== デバイスプロファイルの切り替え ====&lt;br /&gt;
&lt;br /&gt;
{{ic|snd_hda_intel}} などの一部のハードウェアオーディオデバイスは、デバイスが実行されているプロファイルによって機能が異なります。{{ic|snd_hda_intel}} の場合、HDMI とアナログ出力用に個別のプロファイルがあります。&lt;br /&gt;
&lt;br /&gt;
WirePlumber で HDMI に切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 3&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   53. Built-in Audio Digital Stereo (HDMI) [vol: 1.00]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
WirePlumber でアナログに切り替える:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
$ wpctl set-profile &amp;lt;device-ID&amp;gt; 1&lt;br /&gt;
$ wpctl status&lt;br /&gt;
|output=&lt;br /&gt;
...&lt;br /&gt;
├─ Sinks:&lt;br /&gt;
│  *   51. Built-in Audio Analog Stereo        [vol: 0.60]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== WebRTC 画面共有 ===&lt;br /&gt;
&lt;br /&gt;
ほとんどのアプリケーションは、例えばウェブブラウザで WebRTC を使うとき (例: Google Meet) などに、デスクトップ (あるいは個々のアプリケーション) をキャプチャするために X11 に依存していました。Wayland では、セキュリティ上の理由から画面共有は異なる方法で処理されます。PipeWire はきめ細かなアクセス制御を使用して、Wayland 上のコンテンツを共有できます。&lt;br /&gt;
&lt;br /&gt;
これには、{{Pkg|xdg-desktop-portal}} に加えてそのバックエンドのうち1つを[https://jgrulich.cz/2018/07/04/how-to-enable-and-use-screen-sharing-on-wayland インストールする]必要があります。利用可能なバックエンドは:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|xdg-desktop-portal-gnome}}: [[GNOME]] 用。これは {{Pkg|xdg-desktop-portal-gtk}} に依存しています。&lt;br /&gt;
* {{Pkg|xdg-desktop-portal-gtk}}: [[GTK]] アプリケーション用。&lt;br /&gt;
* {{Pkg|xdg-desktop-portal-kde}}: [[KDE]] 用。&lt;br /&gt;
* {{Pkg|xdg-desktop-portal-lxqt}}: [[LXQt]] 用。&lt;br /&gt;
* {{Pkg|xdg-desktop-portal-wlr}}: wlroots ベースの Wayland コンポジタ用 (例: [[Sway]]、{{AUR|dwl}})。&lt;br /&gt;
&lt;br /&gt;
バックエンドをインストールした後、{{ic|xdg-desktop-portal.service}} [[ユーザーユニット]]を[[再起動]]する必要があります。これは、まだサービスが開始されていない場合、サービスを開始します。&lt;br /&gt;
&lt;br /&gt;
{{Tip|WebRTC 画面共有が機能しているかどうか、[https://mozilla.github.io/webrtc-landing/gum_test.html Mozilla の GetUserMedia WebRTX テストページ]でテストしましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1={{Pkg|xdg-desktop-portal}} 1.10.0 では、D-Bus インターフェースの仕様と実装の不一致が修正されました。[https://github.com/flatpak/xdg-desktop-portal/pull/609] そのため、一部のクライアントは xdg-desktop-portal 1.10.0 またはそれ以降で動作しないかもしれません。}}&lt;br /&gt;
&lt;br /&gt;
Firefox (バージョン84以降) と Chromium (バージョン110以降) はデフォルトでこの方法をサポートしていますが、Chromium の古いバージョン (バージョン73以降) では、URL {{ic|chrome://flags/#enable-webrtc-pipewire-capturer}} で対応する (実験的) フラグを設定するか、CLI 引数 {{ic|1=--enable-features=WebRTCPipeWireCapturer}} を用いて、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWire サポート]を有効化する必要があります。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|obs-studio}} (バージョン27以降) は、新しい PipeWire キャプチャソースを使用することにより、この方法をサポートしています。&lt;br /&gt;
&lt;br /&gt;
{{Accuracy|[https://github.com/flatpak/xdg-desktop-portal-gtk/pull/225 このプルリクエスト]がマージされたので、特定のアプリ/ウィンドウの共有に関する以下の注意書きは、{{Pkg|xdg-desktop-portal-gtk}} に対してはもはや正しくないかもしれません。この議論を追跡するチケットも[https://github.com/flatpak/xdg-desktop-portal-gtk/issues/204]で参照してください。}}&lt;br /&gt;
&lt;br /&gt;
唯一サポートされている機能はデスクトップ全体の共有で、特定のアプリケーション/ウィンドウの共有はサポートされていません。[https://github.com/emersion/xdg-desktop-portal-wlr/wiki/FAQ#will-this-let-me-share-individual-windows][https://github.com/KDE/xdg-desktop-portal-kde/blob/master/TODO]&lt;br /&gt;
&lt;br /&gt;
==== xdg-desktop-portal-wlr ====&lt;br /&gt;
&lt;br /&gt;
{{ic|xdg-desktop-portal-wlr}} を機能させるには、環境変数 {{ic|1=XDG_CURRENT_DESKTOP}} と {{ic|1=WAYLAND_DISPLAY}} を [[Systemd/ユーザー#環境変数|systemd ユーザセッション]]で設定しなければなりません。{{ic|1=XDG_CURRENT_DESKTOP}} は使用中のコンポジタの名前に設定しなければなりません (例: {{ic|1=XDG_CURRENT_DESKTOP=sway}})。{{ic|1=WAYLAND_DISPLAY}} は、コンポジタによって自動的に設定されます。&lt;br /&gt;
&lt;br /&gt;
{{ic|systemctl --user show-environment}} を実行して、これらの変数が設定されているかどうかを確認してください。設定されていない場合、以下のコマンドをコンポジタの起動後に実行して (例えば、以下のコマンドをコンポジタの設定ファイルにインクルードして)、これらの環境変数を systemd ユーザセッションと dbus にインポートしてください。&lt;br /&gt;
&lt;br /&gt;
 $ systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP&lt;br /&gt;
 $ dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP=&#039;&#039;compositor_name&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Note|[[Sway]] は、これを自動的に行うドロップインファイルを提供します。[[Sway#設定]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
詳細は [https://github.com/emersion/xdg-desktop-portal-wlr#running] と [https://github.com/emersion/xdg-desktop-portal-wlr/wiki] を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|2つ以上のモニタを持っている場合は、{{ic|xdg-desktop-portal-wlr}} で共有するモニタを選択するために、{{pkg|slurp}} をインストールし、以下の設定を追加してください ({{man|5|xdg-desktop-portal-wlr|SCREENCAST OPTIONS}} を参照):&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/xdg-desktop-portal-wlr/config|2=&lt;br /&gt;
chooser_type = simple&lt;br /&gt;
chooser_cmd = slurp -f %o -ro&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
画面共有がリクエストされると、{{ic|slurp}} がクロスヘアのカーソルを表示し、共有したい画面の選択を求めてきます。選択すると、{{ic|xdg-desktop-portal-wlr}} はその画面の共有を許可します。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 映像 ===&lt;br /&gt;
&lt;br /&gt;
ソフトウェアはまだ商業利用には適していませんが、試す分には問題ありません。[[GStreamer]] を使用して映像ストリームを処理するほとんどのアプリケーションは PipeWire GStreamer プラグインを使用して設定なしで動作するはずです ([[GStreamer#PipeWire]]を参照してください)。そのため既に {{pkg|cheese}} のようなアプリケーションは PipeWire を使用して映像入力を利用できます。&lt;br /&gt;
&lt;br /&gt;
== 音声のポストプロセッシング ==&lt;br /&gt;
&lt;br /&gt;
=== Pipewire モジュールフィルターチェーン ===&lt;br /&gt;
&lt;br /&gt;
Pipewire には {{ic|[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Filter-Chain filter-chain]}} という内部モジュールがあり、音声の入出力を処理するノードを作成することができます。参照してください。&lt;br /&gt;
 /usr/share/pipewire/filter-chain/ を参照してください。&lt;br /&gt;
イコライザー、バーチャルサラウンドサウンド、LADSPA プラグイン、チャンネルミキシングなどの例を紹介します。&lt;br /&gt;
&lt;br /&gt;
==== システム全体のパラメトリックイコライゼーション ====&lt;br /&gt;
&lt;br /&gt;
設定ファイルを {{ic|.config}} フォルダにコピーします。&lt;br /&gt;
 mkdir -p ~/.config/pipewire/pipewire.conf.d&lt;br /&gt;
 cp /usr/share/pipewire/filter-chain/sink-eq6.conf ~/.config/pipewire/pipewire.conf.d/&lt;br /&gt;
次に、{{ic|sink-eq6.conf}} を編集して、必要なパラメータを組み込みます。ヘッドフォンの場合、これらは [https://old.reddit.com/r/oratory1990/wiki/index Oratory1990 のデータベース] から入手できます。そこにリストされていない場合は、[https://github.com/jaakkopasanen/AutoEq/tree/master/results/ AutoEQ project]&lt;br /&gt;
&lt;br /&gt;
プリアンプが必要な場合は、{{ic|eq_band_1}} を変更して、{{ic|bq_highshelf}} フィルタを周波数 0Hz でマイナスゲイン (-120 〜 +20dB のゲインをサポート) で適用します。&lt;br /&gt;
 label = bq_highshelf&lt;br /&gt;
 control = { &amp;quot;Freq&amp;quot; = 0 &amp;quot;Q&amp;quot; = 1.0 &amp;quot;Gain&amp;quot; = -7.5 }&lt;br /&gt;
&lt;br /&gt;
6 バンドを超える場合は、{{ic|nodes}} リストと対応する {{ic|links}} にさらにエントリを追加して、1 つのフィルタ &amp;quot;:Out&amp;quot; を次のフィルタ &amp;quot;:In&amp;quot; に接続します。たとえば、11 に増やします。バンド (プリアンプ + 10):&lt;br /&gt;
                     { output = &amp;quot;eq_band_6:Out&amp;quot; input = &amp;quot;eq_band_7:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_7:Out&amp;quot; input = &amp;quot;eq_band_8:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_8:Out&amp;quot; input = &amp;quot;eq_band_9:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_9:Out&amp;quot; input = &amp;quot;eq_band_10:In&amp;quot; }&lt;br /&gt;
                     { output = &amp;quot;eq_band_10:Out&amp;quot; input = &amp;quot;eq_band_11:In&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
Pipewire を再起動し、デフォルトのサウンド出力デバイスとして &amp;quot;Equalizer Sink&amp;quot; を選択します。これは、すべてのアプリケーションに適用されます。&lt;br /&gt;
&lt;br /&gt;
=== EasyEffects ===&lt;br /&gt;
&lt;br /&gt;
EasyEffects (以前は PulseEffects と呼ばれていました) は多数のエフェクトとフィルタを個々の入出力ストリーム (アプリケーションの音声出力やマイクの入力など) に提供する GTK 製のユーティリティです。注目すべきエフェクトには、入出力イコライザー、出力ラウドネス等化、ベースエンハンスメント、入力ディエッサー、ノイズ抑制プラグインなどがあります。[https://github.com/wwmm/easyeffects GitHub ページ]にエフェクトの一覧があります。&lt;br /&gt;
&lt;br /&gt;
EasyEffects を使用するには、{{pkg|easyeffects}} をインストールします。プリセット設定集については、[https://github.com/wwmm/easyeffects/wiki/Community-presets コミュニティープリセット]を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|PulseEffects の古いバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
=== NoiseTorch ===&lt;br /&gt;
&lt;br /&gt;
{{aur|noisetorch}} はノイズ抑制に使用できます。ビルド済み ({{aur|noisetorch-bin}}) や開発版 ({{aur|noisetorch-git}}) のパッケージもあります。&lt;br /&gt;
&lt;br /&gt;
起動すると選択したマイクにモジュールを読み込むことができます。声が出力される閾値を調整することができます。実際の声が削除されない最大のレベルに設定するべきです。&lt;br /&gt;
&lt;br /&gt;
=== Noise suppression for voice ===&lt;br /&gt;
&lt;br /&gt;
{{pkg|noise-suppression-for-voice}} をインストールし、以下のいずれかのオプションを使用します:&lt;br /&gt;
&lt;br /&gt;
* 以下の行を {{ic|context.exec}} セクションに追加する:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
context.exec = [&lt;br /&gt;
    ...&lt;br /&gt;
    { path = &amp;quot;/usr/bin/pipewire&amp;quot; args = &amp;quot;-c /usr/share/pipewire/filter-chain/source-rnnoise.conf&amp;quot; }&lt;br /&gt;
    ...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* https://github.com/werman/noise-suppression-for-voice#pipewire に従う&lt;br /&gt;
&lt;br /&gt;
そして、オーディオ設定でノイズキャンセルソースをデフォルトとして設定します。この機能を使う前に、アプリケーションを再起動する必要があるかもしれません。&lt;br /&gt;
&lt;br /&gt;
=== JamesDSP ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Audio4Linux/JDSP4Linux#readme JamesDSP for Linux] ({{AUR|jamesdsp}} として入手可能) は PipeWire と PulseAudio のためのオープンソースのサウンドエフェクトを提供します。LADSPA や Calf などに依存することなく、独自のエフェクトエンジンを使用しています。JamesDSP は当初 Android デバイス用のオーディオエフェクトプロセッサーとして公開されました。&lt;br /&gt;
&lt;br /&gt;
=== LADSPA、LV2、VST プラグイン ===&lt;br /&gt;
&lt;br /&gt;
LADSPA、LV2、VSTのプラグインを使用したい場合は、カスタム PulseAudio null シンクと Carla Jack ホストを利用できます。{{pkg|pipewire-pulse}} と {{pkg|pipewire-jack}} と {{pkg|carla}} をインストールします。はじめに {{ic|default_null_sink}} という名前の PulseAudio の null シンクを作成します。&lt;br /&gt;
&lt;br /&gt;
 pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=default_null_sink channel_map=FL,FR&lt;br /&gt;
&lt;br /&gt;
{{ic|pw-jack carla-rack}} で PipeWire を使用する Carla を起動します。&#039;&#039;Rack&#039;&#039; タブで使いたいプラグインを全て追加します。プラグインのタイプが &#039;&#039;stereo&#039;&#039; であることを確認してください。適用する順番を変えることができます。EasyEffectsのようにリストの最初のプラグインが最初に入力の音声ストリームを受け取ります。その後 &#039;&#039;Patchbay&#039;&#039; タブに移動し {{ic|default_null_sink}} の L/R monitor を Carla input に接続し、Carla output を出力したいデバイス (スピーカーやイヤホンや HDMI 出力など) の playback に接続します。設定をフォルダに保存します ({{ic|~/Documents/carla_sink_effects.carxp}} など)。&lt;br /&gt;
&lt;br /&gt;
Firefox で動画を見ている時など、アプリケーションが音声を再生している時に効果を試すことができます。2つの方法があります。一つは Carla の &#039;&#039;Patchbay&#039;&#039; タブで Firefox の接続を全て外し {{ic|default_null_sink}} の L/R output に接続する方法です。もう一つは {{pkg|pavucontrol}} を使用し Firefox の音声ストリームを {{ic|default_null_sink}} に変更する方法です (この方法は同じアプリケーションの次回起動時に同じ接続先を使用するはずです)。&lt;br /&gt;
&lt;br /&gt;
これらの設定を起動時に適用するには、まず2つの systemd ユーザーサービスを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load Carla Rack JACK host&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
PassEnvironment=&amp;quot;PIPEWIRE_LINK_PASSIVE=true&amp;quot;&lt;br /&gt;
Type=exec&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
{{hc|~/.config/systemd/user/pulseaudio-null-sink@.service|output=&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Load %i Pulseaudio null sink&lt;br /&gt;
Before=jack-carla-rack.service&lt;br /&gt;
After=pipewire-pulse.service&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
Type=oneshot&lt;br /&gt;
ExecStart=/usr/bin/pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=%i channel_map=FL,FR&lt;br /&gt;
ExecStop=/usr/bin/pactl unload-module module-null-sink&lt;br /&gt;
RemainAfterExit=yes&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;jack-carla-rack&#039;&#039; サービスの &#039;&#039;Environment&#039;&#039; を Carla の設定ファイルのフルパスを指定するよう上書きします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/jack-carla-rack.service.d/override.conf|output=&lt;br /&gt;
Environment=&amp;quot;CARLA_CONFIG_FILE=/home/username/Documents/carla_sink_effects.carxp&amp;quot;&lt;br /&gt;
ExecStart=&lt;br /&gt;
ExecStart=/usr/bin/pw-jack carla-rack -n $CARLA_CONFIG_FILE&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
最後に、作成したサービスを有効化します。&#039;&#039;pulseaudio-null-sink&#039;&#039; サービスには {{ic|default_null_sink}} 引数をつけてください:&lt;br /&gt;
&lt;br /&gt;
 systemctl --user enable pulseaudio-null-sink@default_null_sink.service&lt;br /&gt;
 systemctl --user enable jack-carla-rack.service&lt;br /&gt;
&lt;br /&gt;
{{Note|システム設定で {{ic|default_null_sink}} をデフォルトデバイスに設定すると、全てのアプリケーションが {{ic|default_null_sink}} にリダイレクトされ、音量の変更がスピーカーではなく {{ic|default_null_sink}} に対して行われるようになります。スピーカーの音量を変更したい場合は、デフォルトデバイスをスピーカーから変更せずにアプリケーションの出力先を pavucontrol で {{ic|default_null_sink}} に変更してください (PipeWire の互換性レイヤーは次回起動時も出力先を覚えています)。}}&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== オーディオ ===&lt;br /&gt;
&lt;br /&gt;
==== PipeWire にマイクが検出されない ====&lt;br /&gt;
&lt;br /&gt;
PipeWire の {{ic|alsa-monitor}} モジュールは、デフォルトで {{Pkg|alsa-card-profiles}} を使ってデバイスを検出します。これがうまくいかない場合は、{{ic|api.alsa.use-acp}} をオフにするか、オプションで {{ic|api.alsa.use-ucm}} をオンにすることを試してみてください。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|pipewire-media-session}} を使用している場合。&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (or ~/.config/pipewire/media-session.d/alsa-monitor.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        actions = {&lt;br /&gt;
        update-props = {&lt;br /&gt;
            ...&lt;br /&gt;
            api.alsa.use-acp = false&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
それ以外の場合は、{{Pkg|wireplumber}} を使用している場合。&lt;br /&gt;
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (or ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|output=&lt;br /&gt;
...&lt;br /&gt;
alsa_monitor.rules = {&lt;br /&gt;
    {&lt;br /&gt;
        ...&lt;br /&gt;
        apply_properties = {&lt;br /&gt;
            -- Use ALSA-Card-Profile devices. They use UCM or the profile&lt;br /&gt;
            -- configuration to configure the device and mixer settings.&lt;br /&gt;
            -- [&amp;quot;api.alsa.use-acp&amp;quot;] = true,&lt;br /&gt;
 &lt;br /&gt;
            -- Use UCM instead of profile when available. Can be&lt;br /&gt;
            -- disabled to skip trying to use the UCM profile.&lt;br /&gt;
            [&amp;quot;api.alsa.use-ucm&amp;quot;] = true,&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
その後、pipewire を再起動し、利用可能なデバイスを確認します。&lt;br /&gt;
&lt;br /&gt;
{{hc| 1=&lt;br /&gt;
$ pw-record --list-targets&lt;br /&gt;
|2=&lt;br /&gt;
Available targets (&amp;quot;*&amp;quot; denotes default): 62&lt;br /&gt;
	58: description=&amp;quot;Built-in Audio&amp;quot; prio=1872&lt;br /&gt;
	60: description=&amp;quot;Built-in Audio&amp;quot; prio=2000&lt;br /&gt;
*	62: description=&amp;quot;Built-in Audio (Loopback PCM)&amp;quot; prio=1984&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 新しいデバイスを接続したときにサウンドが自動的に切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
新しく接続されたデバイスに自動的に切り替えるには、次のファイルを作成します。:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf (or ~/.config/pipewire/pipewire-pulse.conf.d/switch-on-connect.conf)|output=&lt;br /&gt;
# override for pipewire-pulse.conf file&lt;br /&gt;
pulse.cmd = [&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-always-sink&amp;quot; flags = [ ] }&lt;br /&gt;
    { cmd = &amp;quot;load-module&amp;quot; args = &amp;quot;module-switch-on-connect&amp;quot; }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== サウンドが自動的に Bluetooth ヘッドフォンに切り替わらない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl load-module module-switch-on-connect}} を実行し、ログイン時に自動的にそのコマンドが実行されるようにデスクトップ環境を設定してください。詳しくは [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/89 wireplumber issue #89] を見てください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth デバイスに接続しても音が出ない ====&lt;br /&gt;
&lt;br /&gt;
2020-12-07 の時点で、Bluetooth デバイスを接続しても音が出ない場合は、デフォルトのシンクに切り替えるか、シンク入力を正しいシンクに移動する必要があります。{{ic|pactl list sinks}} で使用可能なシンクの一覧を表示し、{{ic|pactl set-default-sink}} でデフォルトのシンクを Bluetooth デバイスに切り替えます。これは[https://gist.github.com/tinywrkb/04e7fd644afa9b92d33a3a99ab07ee9e このようなスクリプト]を使って [[udev]] で自動化できます。&lt;br /&gt;
&lt;br /&gt;
この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit スレッド]を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が小さい ====&lt;br /&gt;
&lt;br /&gt;
PulseAudio を PipeWire で置き換えた後、正しく音が出ても、再起動後に音量が極端に小さくなることがあります。&lt;br /&gt;
&lt;br /&gt;
{{ic|alsamixer}} を開き、{{ic|F6}} を押して適切なサウンドカードを選び ALSA のボリュームが100%であることを確認してください。{{ic|alsactl}} は再起動後もこの設定を維持するはずです。&lt;br /&gt;
&lt;br /&gt;
==== increasing RLIMIT_MEMLOCK ====&lt;br /&gt;
&lt;br /&gt;
 Dec 13 11:11:11 HOST pipewire-pulse[99999]: Failed to mlock memory 0x7f4f659d8000 32832: This is not a problem but for best performance, consider increasing RLIMIT_MEMLOCK&lt;br /&gt;
&lt;br /&gt;
{{pkg|realtime-privileges}} をインストールし {{ic|realtime}} グループに自分のユーザーを追加します。&lt;br /&gt;
&lt;br /&gt;
あるいは memlock を 64kB から 128kB に増やすことで、この問題を解決できるようです。[[systemd/ユーザー]] で {{ic|pipewire-pulse}} を実行している場合は {{ic|/etc/security/limits.d/username.conf}} に次の行を追加します:&lt;br /&gt;
&lt;br /&gt;
 username	soft	memlock	64&lt;br /&gt;
 username	hard	memlock	128&lt;br /&gt;
&lt;br /&gt;
==== サンプリングレートを変更する ====&lt;br /&gt;
&lt;br /&gt;
PipeWire のデフォルトでは、グローバルサンプルレートは 48kHz に設定されています。これを変更したい場合(より高い値をサポートする DAC を所有しているなど)、設定ファイル {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} 行を編集することで行うことができます。例えば、192kHz にしたい場合は、{{ic|48000}} を {{ic|1=default.clock.rate = 192000}} にコメントを解除して変更します。&lt;br /&gt;
&lt;br /&gt;
PipeWire は、DAC がサポートする出力サンプルレートを変更することもできます。設定するには、{{ic|1=default.clock.allowed-rates = [ 48000 ]}} という行をコメント解除して設定します。例えば、{{ic|[ 44100 48000 88200 96000 ]}} とします。サンプルレートは、カードがアイドルのときに再生されるオーディオストリームのサンプルレートに従います。&lt;br /&gt;
&lt;br /&gt;
どの出力サンプルレートとサンプルフォーマットが DAC に送られたデータであるかを確認するには(おそらく桁を変更する必要があります)。&lt;br /&gt;
 cat /proc/asound/card0/pcm0p/sub0/hw_params&lt;br /&gt;
どの入力サンプルレートを使用しているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します。({{ic|c}} は &amp;quot;capture&amp;quot; の略、{{ic|p}} は &amp;quot;playback&amp;quot; の略です).&lt;br /&gt;
&lt;br /&gt;
==== 音質(リサンプリング品質) ====&lt;br /&gt;
PulseAudio を {{ic|1=resample-method = speex-float-10}} または {{ic|soxr-vhq}} で使用していた場合、コメントを解除して {{ic|1=resample.XXX}} を変更することを検討するとよいかもしれません。{{ic|1=resample.quality = 4}} を {{ic|10}} または最大値 {{ic|15}} に変更することを検討してください。(存在しない場合は {{ic|/usr/share/pipewire/}} からコピーしてください)。PipeWire の再起動を忘れないでください (sudo なし): {{ic|systemctl --user restart pipewire.service pipewire-pulse.socket}} (設定変更を適用させたい場合は、{{ic|pipewire-pulse.socket}}を絶対に忘れないでください)。&lt;br /&gt;
&lt;br /&gt;
{{ic|10}} と {{ic|15}} では、品質の差はほとんどありませんが、CPU 負荷は2〜3倍になっています。また、{{ic|4}}, {{ic|10}}, {{ic|15}} のレイテンシーの差はまだ誰も調べていません。Ryzen 2600 で 44100→48000Hz で {{ic|1= resample.quality = 15}} にすると {{ic|pipewire}} や {{ic|pipewire-pulse}} プロセスが 1CPUコア4.0% の負荷となる。&lt;br /&gt;
&lt;br /&gt;
リサンプラーの比較はこちら:https://src.infinitewave.ca/(18KHz以上、120dB以上は注意)。speeex は &#039;&#039;Xiph.org Speex&#039;&#039; と記載されています。&lt;br /&gt;
&lt;br /&gt;
PipeWire は Spa と呼ばれる独自のリサンプリングアルゴリズムを使用しています。SoX の {{ic|sox}}、Speex の {{ic|speexenc}} と同様、PipeWire にはそのスタンドアロン版があります。{{ic|spa-resample}} 使い方は&lt;br /&gt;
 spa-resample -q 15 -f s24 -r 48000 input16bit44100orAnythingElse.wav output24bit48000hz.wav&lt;br /&gt;
&lt;br /&gt;
自分で sink を作れば、他のリサンプラーを使うことも可能でしょう。あるいは、音楽プレーヤーのプラグインを使うことも出来ます(例えば、Qmmp には SoX プラグインがあります)&lt;br /&gt;
&lt;br /&gt;
==== 外付けサウンドカードが再接続後に有効にならない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|~/.config/pipewire-media-session/default-profile}} にデフォルトプロファイル &#039;&#039;off&#039;&#039; のエントリがあれば削除します。それでも解決しない場合は {{ic|~/.config/pipewire-media-session/}} からすべてのファイルを削除し、{{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動します。&lt;br /&gt;
&lt;br /&gt;
==== 音が出ないまたは pactl info が Failure: Connection refused と表示する ====&lt;br /&gt;
&lt;br /&gt;
これはアプリケーションが PipeWire-Pulse サービスに接続できていないことを意味します。{{ic|/etc/pipewire/pipewire-pulse.conf}} が存在し空でないことを確認し、{{ic|systemctl --user restart pipewire-pulse.service}} で PipeWire-Pulse を再起動してください。&lt;br /&gt;
&lt;br /&gt;
それでも解決しない場合は {{ic|strace -f -o /tmp/pipe.txt pactl info}} を実行し、pastebin に {{ic|/tmp/pipe.txt}} を貼り付けて、IRC (OFTC の [ircs://irc.oftc.net/pipewire #pipewire]) かメーリングリストで相談してください。&lt;br /&gt;
&lt;br /&gt;
==== Bluetooth の音声の品質が低い====&lt;br /&gt;
&lt;br /&gt;
Bluetooth で再生が途切れる場合は {{ic|systemctl --user status pipewire.service}} を実行してみてください。次のようなエラーが表示される場合は、&lt;br /&gt;
&lt;br /&gt;
 Feb 17 18:23:01 HOST pipewire[249297]: (bluez_input.18:54:CF:04:00:56.a2dp-sink-60) client too slow! rate:512/48000 pos:370688 status:triggered&lt;br /&gt;
&lt;br /&gt;
{{ic|pactl list sinks}} で現在選択されているコーデックを確認し、{{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} の {{ic|bluez5.codecs}} を {{ic|sbc aac ldac aptx aptx_hd}} のいずれかに変更してみてください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
properties = {&lt;br /&gt;
  ...&lt;br /&gt;
  bluez5.codecs = [sbc]&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
mSBC サポートの有効化を試すには (Sony 1000XM3 のマイクの問題を修正します):&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=&lt;br /&gt;
...&lt;br /&gt;
rules = [&lt;br /&gt;
  ...&lt;br /&gt;
  actions = {&lt;br /&gt;
    ...&lt;br /&gt;
    update-props = {&lt;br /&gt;
     ...&lt;br /&gt;
     bluez5.msbc-support = true&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
変更を適用するには {{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== 再生開始時の音声の遅延やポップ/クラックが目立つ ====&lt;br /&gt;
&lt;br /&gt;
これは、非アクティブ時のノードの一時停止が原因です。&lt;br /&gt;
&lt;br /&gt;
{{pkg|pipiwire-media-session}} を使用: &lt;br /&gt;
&lt;br /&gt;
これを無効にするには、遅延が発生する場所に応じて {{ic|/etc/pipewire/media-session.d/*-monitor.conf}} を編集し、プロパティ {{ic|session.suspend-timeout-seconds}} を 0 に変更します。無効にするか、他の値を試して、何が機能するかを確認します。&lt;br /&gt;
&lt;br /&gt;
または、{{ic|/etc/pipewire/media-session.d/media-session.conf}} の行 {{ic|suspend-node}} をコメントアウトすることもできます。&lt;br /&gt;
&lt;br /&gt;
{{ic|pipewire.service}} と {{ic|pipewire-pulse.service}} の両方でこれらの変更を適用するか、代わりに [[再起動]] します。&lt;br /&gt;
&lt;br /&gt;
{{pkg|wireplumber}} で、新しいファイルを作成してデフォルト設定を上書きします。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-disable-suspension.lua&lt;br /&gt;
(or /etc/wireplumber/main.lua.d/51-disable-suspension.lua)|2=&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
  matches = {&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sources.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_input.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      -- Matches all sinks.&lt;br /&gt;
      { &amp;quot;node.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_output.*&amp;quot; },&lt;br /&gt;
    },&lt;br /&gt;
  },&lt;br /&gt;
  apply_properties = {&lt;br /&gt;
    [&amp;quot;session.suspend-timeout-seconds&amp;quot;] = 0,  -- 0 disables suspend&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;
これは非アクティブ時のノードのサスペンドが原因です。遅延が発生する領域に応じて {{ic|/etc/pipewire/media-session.d/*-monitor.conf}} を編集し、プロパティ {{ic|session.suspend-timeout-seconds}} を {{ic|0}} に変更してサスペンドを無効にするか、他の値を試して動作を確認してみてください。{{ic|/etc/pipewire/media-session.d/media-session.conf}} の {{ic|suspend-node}} の行をコメントアウトすることもできます。変更を適用するには {{ic|pipewire}} と {{ic|pipewire-pulse}} systemd サービスの両方を再起動するか、システムを再起動してください。&lt;br /&gt;
&lt;br /&gt;
==== 複数のストリームの再生開始時に音声が途切れる ====&lt;br /&gt;
&lt;br /&gt;
この問題は通常 {{ic|journalctl -b | grep -i pipewire}} を実行し、次のような行を探すことで診断できます:&lt;br /&gt;
&lt;br /&gt;
 pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940&lt;br /&gt;
&lt;br /&gt;
[https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Troubleshooting#underrununderflow-and-broken-pipe-errors 公式 PipeWire トラブルシューティングガイド]によると、この問題を解決するには {{ic|/etc/pipewire/media-session.d/alsa-monitor.conf}} を編集し、{{ic|1=api.alsa.headroom = 0}} という行のコメントを外し、値を {{ic|1024}} に変更します。&lt;br /&gt;
&lt;br /&gt;
==== 音がひずむ ====&lt;br /&gt;
* マイクについては、{{ic|alsamixer}} を起動し、問題があるサウンドカードを選択し、{{ic|Mic Boost}} や {{ic|Internal Mic Boost}} の値を下げてみてください。&lt;br /&gt;
* {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} のコメントを外して、値を {{ic|44100}} に下げてみてください。&lt;br /&gt;
&lt;br /&gt;
==== スタンバイ後に音声の問題が発生する ====&lt;br /&gt;
&lt;br /&gt;
スリープから復帰した際に音が消えたり壊れたりする場合は、ALSA を最初期化すると改善するかもしれません:&lt;br /&gt;
&lt;br /&gt;
 # alsactl init&lt;br /&gt;
&lt;br /&gt;
==== USB DAC(例:Schiit 社製 DAC)で高レイテンシー ====&lt;br /&gt;
&lt;br /&gt;
サンプルレートやフォーマットを変更することで、Schiit Hel 2 などの一部の DAC でレイテンシーを減らすことができるかもしれません [https://www.reddit.com/r/osugame/comments/msifdd/usb_dacamp_and_audio_lag/] &#039;&#039;pipewire-media-session&#039;&#039; のマッチングルールを使用すると、デバイスのプロパティを設定することができます [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-pipewire-media-session#matching-rules] &lt;br /&gt;
&#039;&#039;pipewire-media-session&#039;&#039; の {{ic|alsa-monitor.conf}}  のデフォルト設定を {{ic|/etc/pipewire/media-session.d}} か {{ic|~/.config/pipewire/media-session.d}} にコピーしてください。&lt;br /&gt;
そして、以下のような新しいルールブロックを追加してください。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf&lt;br /&gt;
~/.config/pipewire/media-session.d/alsa-monitor.conf|output=&lt;br /&gt;
rules = {&lt;br /&gt;
    ...&lt;br /&gt;
    {&lt;br /&gt;
        matches = [&lt;br /&gt;
            {&lt;br /&gt;
                node.name = &amp;quot;alsa_output.&amp;lt;name of node&amp;gt;&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                audio.format = &amp;quot;S24_3LE&amp;quot;&lt;br /&gt;
                audio.rate = 96000&lt;br /&gt;
                # Following value should be doubled until audio doesn&#039;t cut out or other issues stop occurring&lt;br /&gt;
                api.alsa.period-size = 128&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|alsa_output.&amp;lt;node name&amp;gt;}} ノードは {{ic|pw-top}} で取得することができます。&lt;br /&gt;
&lt;br /&gt;
DAC は異なるフォーマットやサンプルレートをサポートしているかもしれません。[[ALSA]] に問い合わせることで、あなたの  DAC が何をサポートしているかを確認することができます。&lt;br /&gt;
&lt;br /&gt;
まず、DAC のカード番号を取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ aplay -l|&lt;br /&gt;
...&lt;br /&gt;
card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio]&lt;br /&gt;
  Subdevices: 0/1&lt;br /&gt;
  Subdevice #0: subdevice #0&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
つまり、この例ではカード3ということになります。&lt;br /&gt;
サポートされているすべてのサンプルレートとフォーマットを取得します。&lt;br /&gt;
&lt;br /&gt;
{{hc|$ cat /proc/asound/cardX/streamX|&lt;br /&gt;
...&lt;br /&gt;
Playback:&lt;br /&gt;
  ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 1&lt;br /&gt;
    Format: S16_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 16&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 2&lt;br /&gt;
    Format: S24_3LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 24&lt;br /&gt;
    ...&lt;br /&gt;
  Interface 1&lt;br /&gt;
    Altset 3&lt;br /&gt;
    Format: S32_LE&lt;br /&gt;
    Channels: 2&lt;br /&gt;
    Endpoint: 0x05 (5 OUT) (ASYNC)&lt;br /&gt;
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000&lt;br /&gt;
    Data packet interval: 125 us&lt;br /&gt;
    Bits: 32&lt;br /&gt;
    ...&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
この場合、{{ic|S16_LE, S24_3LE, S32_LE}} はサポートされているフォーマットで、{{ic|44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000}} はすべてのフォーマットでサポートされているサンプルレートとなります。&lt;br /&gt;
&lt;br /&gt;
==== 音量が 30% になるまで USB DAC から音が出ない ====&lt;br /&gt;
&lt;br /&gt;
USB DAC の中には、ある一定の音量に達するまで音が出なくなるものがあります [https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1117] 一般的にこれは約 25%〜30% で、最初の音量が不快なほど大きくなり、低い音量を維持することができなくなります。解決策としては、{{ic|[&amp;quot;api.alsa.soft-mixer&amp;quot;]}} を {{ic|true}} に設定して、ハードウェアミキサーの音量コントロールを無視することが挙げられます。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|wireplumber}} でこれを実現するには、{{ic|/usr/share/wireplumber/main.lua.d/50-alsa-config.lua}} 設定に次を使用して構成フラグメントを追加します。 {{ic|table.insert}}:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/wireplumber/main.lua.d/51-volume-fix.lua|output=&lt;br /&gt;
&lt;br /&gt;
table.insert (alsa_monitor.rules, {&lt;br /&gt;
    matches = {&lt;br /&gt;
      {&lt;br /&gt;
        -- This matches all cards.&lt;br /&gt;
        { &amp;quot;device.name&amp;quot;, &amp;quot;matches&amp;quot;, &amp;quot;alsa_card.*&amp;quot; },&lt;br /&gt;
      },&lt;br /&gt;
    },&lt;br /&gt;
    -- Apply properties on the matched object.&lt;br /&gt;
    apply_properties = {&lt;br /&gt;
      -- Don&#039;t use the hardware mixer for volume control. It&lt;br /&gt;
      -- will only use software volume. The mixer is still used&lt;br /&gt;
      -- to mute unused paths based on the selected port.&lt;br /&gt;
      [&amp;quot;api.alsa.soft-mixer&amp;quot;] = true,&lt;br /&gt;
    }&lt;br /&gt;
  })&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、pipewire を再起動します。{{ic|alsamixer}} でマスターボリュームを設定し、{{ic|# alsactl store}} で設定を保存します。これで、ボリュームミキサーを通常どおり使用できるようになります。&lt;br /&gt;
&lt;br /&gt;
==== リアルタイムオーディオが動作しない ====&lt;br /&gt;
&lt;br /&gt;
{{ic|RTKit error: org.freedesktop.DBus.Error.AccessDenied}} が {{ic|systemctl --user status pipewire.service}} の出力に表示された場合、pipewire daemon の優先度がリアルタイムに変更されていないことを示します。この問題については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1069] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== 同じサウンドカード上の複数のシンクへの同時出力 ====&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/alsa-card-profile/mixer/profile-sets/default.conf}} のコピーを作成し、アップデート後も変更が持続するようにします。ここでは、アナログと HDMI の2つのデフォルトマッピングを結合したプロファイルを定義しています。&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/alsa-card-profile/mixer/profile-sets/multiple.conf|2=&lt;br /&gt;
[General]&lt;br /&gt;
auto-profiles = no&lt;br /&gt;
&lt;br /&gt;
[Mapping analog-stereo]&lt;br /&gt;
device-strings = front:%f&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
paths-output = analog-output analog-output-lineout analog-output-speaker analog-output-headphones analog-output-headphones-2&lt;br /&gt;
paths-input = analog-input-front-mic analog-input-rear-mic analog-input-internal-mic analog-input-dock-mic analog-input analog-input-mic analog-input-linein analog-input-aux analog-input-video analog-input-tvtuner analog-input-fm analog-input-mic-line analog-input-headphone-mic analog-input-headset-mic&lt;br /&gt;
priority = 15&lt;br /&gt;
&lt;br /&gt;
[Mapping hdmi-stereo]&lt;br /&gt;
description = Digital Stereo (HDMI)&lt;br /&gt;
device-strings = hdmi:%f&lt;br /&gt;
paths-output = hdmi-output-0&lt;br /&gt;
channel-map = left,right&lt;br /&gt;
priority = 9&lt;br /&gt;
direction = output&lt;br /&gt;
&lt;br /&gt;
[Profile multiple]&lt;br /&gt;
description = Analog Stereo Duplex + Digital Stereo (HDMI) Output&lt;br /&gt;
output-mappings = analog-stereo hdmi-stereo&lt;br /&gt;
input-mappings = analog-stereo&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ここで、PipeWire の media-session に、新しい card-profile を使用してデバイスをマッチングするように設定します。識別情報は、{{ic|$ pw-cli dump device}} で見つけることができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf|2=&lt;br /&gt;
rules = [&lt;br /&gt;
    {&lt;br /&gt;
        matches = [ { alsa.card_name = &amp;quot;HDA Intel PCH&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                api.alsa.use-acp = true&lt;br /&gt;
                device.profile-set = &amp;quot;multiple.conf&amp;quot;&lt;br /&gt;
                device.profile = &amp;quot;multiple&amp;quot;&lt;br /&gt;
                api.acp.auto-profile = false&lt;br /&gt;
                api.acp.auto-port = false&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== Discord から通知音が鳴らない ====&lt;br /&gt;
&lt;br /&gt;
min.quantum が低すぎることが原因かもしれませんので、700以上に設定してみてください。pipewire-pulse.conf の pulse.rules セクションに以下のルールを追加することで、Discord 専用にオーバーライドすることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/pipewire/pipewire-pulse.conf (or ~/.config/pipewire/pipewire-pulse.conf)|output=&lt;br /&gt;
...&lt;br /&gt;
pulse.rules = [&lt;br /&gt;
  ...&lt;br /&gt;
    {&lt;br /&gt;
        # Discord notification sounds fix&lt;br /&gt;
        matches = [ { application.process.binary = &amp;quot;Discord&amp;quot; } ]&lt;br /&gt;
        actions = {&lt;br /&gt;
            update-props = {&lt;br /&gt;
                pulse.min.quantum      = 1024/48000     # 21ms&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
...&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== PipeWire で FMOD ゲームがクラッシュする ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Pillars_of_Eternity|Pillars of Eternity]] のような古いバージョンの [[Wikipedia:FMOD|FMOD オーディオエンジン]] を使っているゲームの中には、PulseAudio バイナリが存在しないと {{ic|pulseaudio --check}} を呼び出してクラッシュするものがあります。回避策としては、{{ic|/bin/pulseaudio}}を{{ic|/bin/true}}にシンボリックリンクすることです[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1514]&lt;br /&gt;
&lt;br /&gt;
 # ln -s /bin/true /bin/pulseaudio&lt;br /&gt;
&lt;br /&gt;
PulseAudio を再インストールする場合は、シンボリックリンクを削除する必要があることに注意してください。&lt;br /&gt;
&lt;br /&gt;
==== 自動切り替えが機能しない ====&lt;br /&gt;
&lt;br /&gt;
自動切り替えが機能しない場合、[[WirePlumber]] の状態に問題がある可能性があります。[https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/191#note_1252549 this comment] が提案しているように、[[WirePlumber]] のローカル状態を削除し、デーモンを再起動することで改善されるかどうか確認することができます。&lt;br /&gt;
&lt;br /&gt;
 $ rm -r ~/.local/state/wireplumber/&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|wireplumber.service}} [[systemd/ユーザー|ユーザーユニット]] を [[ヘルプ:読み方# systemd ユニットのコントロール|再起動]] します。&lt;br /&gt;
&lt;br /&gt;
=== ビデオ ===&lt;br /&gt;
&lt;br /&gt;
==== OBS（など）がウィンドウ/スクリーンを要求しても何も表示されない ====&lt;br /&gt;
&lt;br /&gt;
{{Pkg|xdg-desktop-portal}} と {{Pkg|xdg-desktop-portal-gtk}} または {{Pkg|xdg-desktop-portal-kde}} がインストールされていることが確実なら、デーモンの実行状態を確認してください。&lt;br /&gt;
&lt;br /&gt;
OBS では、すべてがうまくいっていれば、{{ic|stdout}} にこのように表示されるはずです。&lt;br /&gt;
&lt;br /&gt;
 ...&lt;br /&gt;
 info: [pipewire] desktop selected, setting up screencast&lt;br /&gt;
 info: [pipewire] created stream 0x5632d7456850&lt;br /&gt;
 info: [pipewire] playing stream…&lt;br /&gt;
&lt;br /&gt;
マルチモニタ環境では、{{Pkg|slurp}} パッケージを使用すると、すべての画面をキャプチャすることができます。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — PipeWire の2018年1月時点での進捗が書かれた記事&lt;br /&gt;
* [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ PipeWire Late Summer Update 2020] — 2020年9月からの記事&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=GnuPG&amp;diff=29791</id>
		<title>GnuPG</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=GnuPG&amp;diff=29791"/>
		<updated>2023-02-07T10:04:11Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 失効証明書のバックアップ */ 内部リンクの修正。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:暗号化]]&lt;br /&gt;
[[Category:メール]]&lt;br /&gt;
[[Category:GNU]]&lt;br /&gt;
[[en:GnuPG]]&lt;br /&gt;
[[es:GnuPG]]&lt;br /&gt;
[[ru:GnuPG]]&lt;br /&gt;
[[zh-hans:GnuPG]]&lt;br /&gt;
[[zh-hant:GnuPG]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|pacman-key}}&lt;br /&gt;
{{Related|ディスク暗号化}}&lt;br /&gt;
{{Related|アプリケーション一覧/セキュリティ#暗号化, 署名, ステガノグラフィー}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://www.gnupg.org/ 公式サイト] によれば:&lt;br /&gt;
&lt;br /&gt;
:GnuPG は [https://tools.ietf.org/html/rfc4880 RFC4880] (別名 PGP) で定義される [http://openpgp.org/about/ OpenPGP] 標準の完全でフリーな実装です。GnuPG を使うことでデータや通信を暗号化したり署名することができます。多目的の鍵管理システムであり、あらゆる種類の公開鍵ディレクトリのアクセスモジュールです。GnuPG (またの名を GPG) は他のアプリケーションとの簡単に連携できる機能を備えたコマンドラインツールです。豊富なアプリケーションとライブラリが利用可能です。GnuPG のバージョン2は S/MIME と ssh のサポートも含んでいます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
{{Pkg|gnupg}} をインストールしてください。&lt;br /&gt;
&lt;br /&gt;
gnupg をインストールすると、GnuPG がパスフレーズエントリに使用するシンプルな PIN やパスフレーズエントリダイアログのコレクションである {{Pkg|pinentry}} もインストールされます。シェルスクリプト {{ic|/usr/bin/pinentry}} は [[#pinentry]] で説明されている順番で、どの &#039;&#039;pinentry&#039;&#039; ダイアログを使用するかを決定します。&lt;br /&gt;
&lt;br /&gt;
グラフィカルフロントエンドや GnuPG と連携するプログラムを使いたい場合は[[アプリケーション一覧/セキュリティ#暗号化, 署名, ステガノグラフィー]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
== 設定 ==&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルのディレクトリ ===&lt;br /&gt;
&lt;br /&gt;
GnuPG では {{ic|$GNUPGHOME}} によって全ての設定ファイルを保存するディレクトリが指定されます。デフォルトでは {{ic|$GNUPGHOME}} は設定されておらず、代わりに {{ic|$HOME}} が使われます。そのためインストール直後は {{ic|~/.gnupg}} ディレクトリが確認できます。[[自動起動|スタートアップファイル]]に次の行を記述することでデフォルト設定を変更できます:&lt;br /&gt;
&lt;br /&gt;
 export GNUPGHOME=&amp;quot;&#039;&#039;/path/to/directory&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイル ===&lt;br /&gt;
&lt;br /&gt;
デフォルトの設定ファイルは {{ic|~/.gnupg/gpg.conf}} と {{ic|~/.gnupg/dirmngr.conf}} です。&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、gnupg ディレクトリの[[ファイルのパーミッションと属性|パーミッション]]は &#039;&#039;700&#039;&#039; に設定されており、ディレクトリのファイルのパーミッションは &#039;&#039;600&#039;&#039; に設定されています。ファイルの読み書きやアクセスの権限を持っているのはディレクトリの所有者だけです (&#039;&#039;r&#039;&#039;,&#039;&#039;w&#039;&#039;,&#039;&#039;x&#039;&#039;)。これはセキュリティ上の理由で設定されていることなので変更してはいけません。ディレクトリやファイルがこのセキュリティ対策に従っていない場合、ファイルやホームディレクトリのパーミッションが安全ではないという警告が表示されます。&lt;br /&gt;
&lt;br /&gt;
どんな長いオプションも設定ファイルに追加します。2つのダッシュを書かないで、オプションや必要な引数の名前を書いて下さい。スケルトンファイルは {{ic|/usr/share/doc/gnupg/}} にあります。gpg がなんらかの操作のため最初に起動されたとき、{{ic|~/.gnupg}} が存在しなければこれらのファイルが {{ic|~/.gnupg}} にコピーされます。[[#参照]] に他の例があります。&lt;br /&gt;
&lt;br /&gt;
また、[[pacman]] がパッケージの署名の検証に使用する設定ファイルは別に存在します。詳しくは [[pacman-key]] を見てください。&lt;br /&gt;
&lt;br /&gt;
=== 新規ユーザーのデフォルトオプション ===&lt;br /&gt;
&lt;br /&gt;
新規ユーザーのデフォルトオプションを設定したい場合、{{ic|/etc/skel/.gnupg/}} に設定ファイルを配置してください。新しいユーザーが追加されると、{{ic|/etc/skel/.gnupg/}} から GnuPG のホームディレクトリにファイルがコピーされます。既存のユーザーのために新しい GnuPG ホームディレクトリを作成できる &#039;&#039;addgnupghome&#039;&#039; というスクリプトも存在します:&lt;br /&gt;
&lt;br /&gt;
 # addgnupghome user1 user2&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは {{ic|/home/user1/.gnupg}} と {{ic|/home/user2/.gnupg}} を作成してスケルトンディレクトリからファイルをコピーします。既に GnuPG のホームディレクトリが存在するユーザーはスキップされます。&lt;br /&gt;
&lt;br /&gt;
== 使い方 ==&lt;br /&gt;
&lt;br /&gt;
{{Note|コマンドに &#039;&#039;{{ic|&amp;lt;user-id&amp;gt;}}&#039;&#039; が必要なときは、鍵 ID、指紋、名前やメールアドレスの一部などを指定できます。これについて GnuPG は寛容です。}}&lt;br /&gt;
&lt;br /&gt;
=== 鍵ペアの作成 ===&lt;br /&gt;
&lt;br /&gt;
鍵ペアを生成するにはターミナルに次を入力:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --full-gen-key&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|--expert}} を使うことで他の暗号を利用することができます ([[wikipedia:ja:楕円曲線暗号|楕円曲線暗号]]など)。}}&lt;br /&gt;
&lt;br /&gt;
上記のコマンドを実行すると複数の質問がきかれます。大抵の場合、以下の設定が必要になります:&lt;br /&gt;
&lt;br /&gt;
* RSA (署名のみ) と RSA (暗号化のみ) 鍵。&lt;br /&gt;
* 鍵長は2048ビットで十分です。4096ビットを使ったところで [https://www.gnupg.org/faq/gnupg-faq.html#no_default_of_rsa4096 &amp;quot;大した効果はありませんし、無駄に時間がかかるようになるだけです&amp;quot;] 。&lt;br /&gt;
* 副鍵の有効期限の設定は技術的には必須ではありませんが、設定することは悪くありません。標準的なユーザーなら、1年間で十分でしょう。たとえ鍵束へのアクセスを失っても、他の人が有効でないことを知ることができるようになります。鍵を作成した後、新しい鍵を再発行しなくても満了日は延長することができます。&lt;br /&gt;
* 名前とメールアドレス。後で同じ鍵に別の識別子を追加できます (複数のメールアドレスが存在する場合など)。&lt;br /&gt;
* コメントは必要ありません。コメントフィールドのセマンティクスは [https://lists.gnupg.org/pipermail/gnupg-devel/2015-July/030150.html 定義があやふや] なため、識別子としては限定的です。&lt;br /&gt;
* 安全なパスフレーズを選ぶようにしてください ([[セキュリティ#パスワードの管理]]を参照)。&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;
 $ gpg --list-keys&lt;br /&gt;
&lt;br /&gt;
* 秘密鍵束の鍵の一覧:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --list-secret-keys&lt;br /&gt;
&lt;br /&gt;
=== 公開鍵のエクスポート ===&lt;br /&gt;
&lt;br /&gt;
公開鍵暗号で交換されたメッセージの機密性を保証するのが gpg の主な利用法です。互いの鍵束の公開鍵を交換して、メッセージを暗号化するときに使用します。秘密鍵は必ず漏洩しないようにしてください。機密性が破れてしまいます。 &lt;br /&gt;
&lt;br /&gt;
他の人があなたに暗号化したメッセージを送れるようにするには、彼らがあなたの公開鍵を知っている必要があります。&lt;br /&gt;
&lt;br /&gt;
(メールで送る場合などのために) ASCII 版の公開鍵を {{ic|&#039;&#039;public.key&#039;&#039;}} ファイルとして生成するには:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --output &#039;&#039;public.key&#039;&#039; --armor --export &#039;&#039;user-id&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
あるいは、[[#鍵サーバーを使用する|鍵サーバー]]で鍵を共有する方法もあります。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* {{ic|--no-emit-version}} を使うか、これを設定ファイルに書くことでバージョン番号の表示を抑制できます。&lt;br /&gt;
* {{ic|user-id}} を省略して、キーリング内のすべての公開鍵をエクスポートできます。これは、一度に複数の ID を共有したい場合や、別のアプリケーションにインポートする場合に便利です。例: [[Thunderbird#Use_OpenPGP_with_external_GnuPG|Thunderbird]]。}}&lt;br /&gt;
&lt;br /&gt;
=== 公開鍵のインポート ===&lt;br /&gt;
&lt;br /&gt;
メッセージを暗号化して他の人に送るには、彼らの公開鍵が必要です。公開鍵 ({{ic|&#039;&#039;public.key&#039;&#039;}}) を自分の公開鍵リングにインポートするには:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --import public.key&lt;br /&gt;
&lt;br /&gt;
あるいは、[[#鍵サーバーを使用する|鍵サーバー]]で公開鍵を見つけます。&lt;br /&gt;
&lt;br /&gt;
特定の Arch Linux パッケージをインストールするためにキー ID をインポートしたい場合は、[[pacman-key#キーリングの管理|キーリングの管理]] と [[Makepkg#署名チェック]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 鍵サーバーを使用する ===&lt;br /&gt;
&lt;br /&gt;
==== 鍵の送信 ====&lt;br /&gt;
&lt;br /&gt;
自分の公開鍵を公共の PGP 鍵サーバーに登録することで、他の人があなたに直接連絡することなしにあなたの鍵を入手できるようになります:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --send-keys &#039;&#039;user-id&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|鍵を鍵サーバーに登録してから、サーバーから鍵を削除することはできません [https://pgp.mit.edu/faq.html]。 その理由は、[https://pgp.mit.edu/faq.html MIT PGP Public Key Server FAQ]で説明されています。}}&lt;br /&gt;
{{Note|関連するメールアドレスが公開されると、スパムメールの標的となる可能性があり、この場合、スパム対策用のフィルタリングが必要となる場合があります。}}&lt;br /&gt;
&lt;br /&gt;
==== 鍵の検索と受信 ====&lt;br /&gt;
&lt;br /&gt;
鍵サーバーの鍵の情報を確認したい場合、次のコマンドを実行:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --search-keys &#039;&#039;user-id&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
鍵サーバーから鍵をインポートするには:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --recv-keys &#039;&#039;key-id&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* 誰でも鍵サーバーに鍵を送ることができます。そのため、ダウンロードした鍵が本当にその人のものであると信用してはいけません。入手した鍵の指紋を、持ち主が別の場所（ブログ、サイト、メール・電話で連絡するなど）で公開している指紋と比較してその鍵の真正性を確かめるべきです。複数の情報源を使うことでその鍵の信頼性は増します。[[Wikipedia:Public key fingerprint]] を参照。&lt;br /&gt;
* ID が短いと衝突する可能性があります。インポートされた鍵には全て短い ID が割り当てられます。鍵を受け取るときに完全な指紋か長い鍵 ID を使うことで衝突を回避できます [https://lkml.org/lkml/2016/8/15/445]。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|auto-key-retrieve}} を {{ic|gpg.conf}} に追加すると、必要に応じて鍵サーバから鍵を自動的に取得しますが、これは &#039;&#039;&#039;プライバシー侵害&#039;&#039;&#039; と見なされる可能性があります。{{man|1|gpg}} の &amp;quot;web bug&amp;quot; を参照。}}&lt;br /&gt;
&lt;br /&gt;
==== 鍵サーバー ====&lt;br /&gt;
&lt;br /&gt;
最も一般的な鍵サーバーは次の通りです。&lt;br /&gt;
&lt;br /&gt;
* [https://keyserver.ubuntu.com Ubuntu 鍵サーバー]: federated, no verification, keys cannot be deleted.&lt;br /&gt;
* [https://keys.mailvelope.com Mailvelope 鍵サーバー]: central, verification of email IDs, keys can be deleted.&lt;br /&gt;
* [https://keys.openpgp.org keys.openpgp.org]: central, verification of email IDs, keys can be deleted, no third-party signatures (i.e. no Web of Trust support).&lt;br /&gt;
&lt;br /&gt;
詳細は [[Wikipedia:Key server (cryptographic)#Keyserver examples]] に一覧があります。&lt;br /&gt;
&lt;br /&gt;
代替の鍵サーバーは、例えば、[[#設定ファイル]]の 1 つで　{{ic|keyserver}} オプションで指定することができます。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.gnupg/dirmngr.conf|&lt;br /&gt;
keyserver hkp://keyserver.ubuntu.com&lt;br /&gt;
}}&lt;br /&gt;
通常のサーバーが思うように動かないときに、一時的に別のサーバーを使用するのは便利なことです。例えば、以下のような方法で実現できます。&lt;br /&gt;
&lt;br /&gt;
 $ gpg --keyserver hkps://keys.openpgp.org/ --search-keys 931FF8E79F0876134EDDBDCCA87FF9DF48BF1C90&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* If receiving fails with the message {{ic|gpg: keyserver receive failed: General error}}, and you use the default hkps keyserver pool, make sure set the HKPS pool verification certificate with {{ic|hkp-cacert /usr/share/gnupg/sks-keyservers.netCA.pem}} in your {{ic|dirmngr.conf}} and kill the old dirmngr process.&lt;br /&gt;
* If receiving fails with the message {{ic|gpg: keyserver receive failed: Connection refused}}, try using a different DNS server.&lt;br /&gt;
* You can connect to the keyserver over [[Tor]] with [[Tor#Torsocks]]. Or using the {{ic|--use-tor}} command line option. See [https://gnupg.org/blog/20151224-gnupg-in-november-and-december.html] for more information.&lt;br /&gt;
* You can connect to a keyserver using a proxy by setting the {{ic|http_proxy}} [[environment variable]] and setting {{ic|honor-http-proxy}} in {{ic|dirmngr.conf}}. Alternatively, set {{ic|http-proxy &#039;&#039;host[:port]&#039;&#039;}} in the configuration file to override the environment variable of the same name. [[Restart]] the {{ic|dirmngr.service}} [[systemd/User|user service]] for the changes to take effect.}}&lt;br /&gt;
&lt;br /&gt;
=== Web Key Directory ===&lt;br /&gt;
&lt;br /&gt;
Web Key Service (WKS) プロトコルは、鍵配布のための新しい [https://datatracker.ietf.org/doc/draft-koch-openpgp-webkey-service/ 標準]で、電子メールドメインが [https://wiki.gnupg.org/WKD Web Key Directory (WKD)] という独自の鍵サーバーを提供するものです。電子メールアドレス （例 : {{ic|user@example.com}}） に暗号化するとき、GnuPG （&amp;gt;=2.1.16） は、公開鍵をローカル鍵束にまだ持っていなければ、 HTTPS でそのドメイン （{{ic|example.com}}） に照会します。オプション {{ic|auto-key-locate}} は、このメールアドレスのローカル鍵束に鍵がない場合、WKD プロトコルを使って鍵を探します。&lt;br /&gt;
&lt;br /&gt;
 # gpg --recipient &#039;&#039;user@example.org&#039;&#039; --auto-key-locate --encrypt &#039;&#039;doc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
WKD をサポートしているメールプロバイダーの一覧は [https://wiki.gnupg.org/WKD#Implementations GnuPG Wiki] を参照してください。メールアドレスのドメインを自分で管理している場合は、[https://wiki.gnupg.org/WKDHosting このガイド]に従って、自分のドメインで WKD を有効にすることができます。あなたの鍵が WKD で見つかるかどうかを確認するには、[https://metacode.biz/openpgp/web-key-directory このウェブインターフェイス]が使用できます。&lt;br /&gt;
&lt;br /&gt;
=== 暗号化と復号化 ===&lt;br /&gt;
&lt;br /&gt;
==== 非対称 ====&lt;br /&gt;
&lt;br /&gt;
暗号化や復号化をするときは複数の秘密鍵を使用することが可能です。複数の鍵を使うときは使用する鍵を選択する必要があります。{{ic|-u &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}} オプションや {{ic|--local-user &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}} オプションを使うことで選択できます。このオプションを使うとデフォルトの鍵を使用する代わりに指定された鍵を使用します。先に[[#鍵の作成]]が必要です。&lt;br /&gt;
&lt;br /&gt;
(テキストでメッセージをコピー＆ペーストするのに適している) ASCII armor を使ってファイルを暗号化するには、次を使用:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --encrypt --armor secret.txt&lt;br /&gt;
&lt;br /&gt;
単に暗号化だけしたいときは {{ic|--armor}} は不要です。&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* 受取人を変更したい場合は {{ic|-r &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}} (または {{ic|--recipient &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}}) オプションで変更できます。&lt;br /&gt;
* 暗号メッセージに受取人の鍵 ID を入れたくないときは {{ic|--recipient}} のかわりに {{ic|-R &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}} または {{ic|--hidden-recipient &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}} を追加してください。メッセージの受取人を隠蔽して、トラフィックの解析に対する対抗策になります。&lt;br /&gt;
* バージョン番号を出力したくないときは {{ic|--no-emit-version}} を追加してください。または設定ファイルに同じ設定を追加してください。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|gnupg を使えば機密文書を暗号化できますが、一度に複数のファイルを暗号化することはできません。ディレクトリやファイルシステム全体を暗号化したいときは、[[TrueCrypt]] や [[EncFS]] などを使用するか、tarball にファイルをまとめて暗号化すると良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
ファイルを復号化するには、次のコマンドを使用:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --decrypt secret.txt.asc&lt;br /&gt;
&lt;br /&gt;
パスフレーズの入力が求められます。復号化するには送信者の公開鍵をインポートしてある必要があります。&lt;br /&gt;
&lt;br /&gt;
==== 対称 ====&lt;br /&gt;
対称暗号化では鍵を生成する必要がなくパスフレーズだけでデータを暗号化できます。対称暗号化を使用するするには {{ic|--symmetric}} または {{ic|-c}} を使用します:&lt;br /&gt;
&lt;br /&gt;
 $ gpg -c &#039;&#039;doc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
&lt;br /&gt;
* パスフレーズを使って対称暗号で {{ic|&#039;&#039;doc&#039;&#039;}} を暗号化。&lt;br /&gt;
* AES-256 暗号アルゴリズムを使ってパスフレーズを暗号化。&lt;br /&gt;
* SHA-512 ダイジェストアルゴリズムを使ってパスフレーズをハッシュ化。&lt;br /&gt;
* 65536回繰り返しパスフレーズをハッシュ化。&lt;br /&gt;
&lt;br /&gt;
 $ gpg -c --s2k-cipher-algo AES256 --s2k-digest-algo SHA512 --s2k-count 65536 &#039;&#039;doc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
対称暗号化された {{ic|&#039;&#039;doc&#039;&#039;.gpg}} をパスフレーズで復号化して {{ic|&#039;&#039;doc&#039;&#039;}} として同じディレクトリに出力するには:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --output &#039;&#039;doc&#039;&#039; --decrypt &#039;&#039;doc&#039;&#039;.gpg&lt;br /&gt;
&lt;br /&gt;
==== ディレクトリ ====&lt;br /&gt;
&lt;br /&gt;
ディレクトリの暗号化・復号化は {{man|1|gpgtar}} で行うことができます。&lt;br /&gt;
&lt;br /&gt;
暗号化:&lt;br /&gt;
 $ gpgtar -c -o &#039;&#039;dir&#039;&#039;.gpg &#039;&#039;dir&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
復号化:&lt;br /&gt;
 $ gpgtar -d &#039;&#039;dir&#039;&#039;.gpg&lt;br /&gt;
&lt;br /&gt;
== 鍵の管理 ==&lt;br /&gt;
&lt;br /&gt;
=== 秘密鍵のバックアップ ===&lt;br /&gt;
&lt;br /&gt;
秘密鍵をバックアップするには以下を実行:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --export-secret-keys --armor &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039; &amp;gt; &#039;&#039;privkey.asc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gpg&#039;&#039; のリリース 2.1 からデフォルトの挙動が変わっており、たとえ鍵の作成時にパスワードを設定しなかった場合でも上記のコマンドを実行したときにパスフレーズによる保護が必須になっています。エクスポートされたファイルを入手してしまえば、パスフレーズを知らなくてもファイルを暗号化したり署名を加えることができてしまうためです。&lt;br /&gt;
&lt;br /&gt;
{{Warning|パスフレーズは秘密鍵の最大の弱点となります。暗号化されたコンテナやドライブなど、秘密鍵は安全な場所に保管してください。}}&lt;br /&gt;
&lt;br /&gt;
秘密鍵のバックアップをインポートするには:&lt;br /&gt;
 $ gpg --import &#039;&#039;privkey.asc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 失効証明書のバックアップ ===&lt;br /&gt;
&lt;br /&gt;
失効証明書は、新しく生成されたキーに対して自動的に生成されます。これらはデフォルトで {{ic|~/.gnupg/openpgp-revocs.d/}} にあります。証明書のファイル名は、取り消すキーのフィンガープリントです。&lt;br /&gt;
失効証明書は、ユーザーが後で次を使用して手動で生成することもできます。&lt;br /&gt;
&lt;br /&gt;
 $ gpg --gen-revoke --armor --output &#039;&#039;revcert.asc&#039;&#039; &#039;&#039;user-id&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
この証明書は、紛失または侵害された場合に [[#鍵の取り消し]] に使用できます。バックアップは、秘密鍵にアクセスできなくなったため、上記のコマンドで新しい失効証明書を生成できない場合に役立ちます。必要に応じて印刷して手で入力できるほど短いです。&lt;br /&gt;
&lt;br /&gt;
{{Warning|失効証明書にアクセスできる人は誰でも、キーを公に失効させることができます。このアクションは元に戻すことはできません。秘密鍵を保護するのと同じように、失効証明書を保護します。}}&lt;br /&gt;
&lt;br /&gt;
=== 鍵の編集 ===&lt;br /&gt;
&lt;br /&gt;
* {{ic|gpg --edit-key &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}} コマンドを実行するとメニューが表示され、鍵管理に関連するほとんどの作業を行うことができます。以下は満了日を設定する例です:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --edit-key &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;&lt;br /&gt;
 &amp;gt; key &#039;&#039;number&#039;&#039;&lt;br /&gt;
 &amp;gt; expire &#039;&#039;yyyy-mm-dd&#039;&#039;&lt;br /&gt;
 &amp;gt; save&lt;br /&gt;
 &amp;gt; quit&lt;br /&gt;
&lt;br /&gt;
便利なコマンド:&lt;br /&gt;
 &amp;gt; passwd       # change the passphrase&lt;br /&gt;
 &amp;gt; clean        # compact any user ID that is no longer usable (e.g revoked or expired)&lt;br /&gt;
 &amp;gt; revkey       # revoke a key&lt;br /&gt;
 &amp;gt; addkey       # add a subkey to this key&lt;br /&gt;
 &amp;gt; expire       # change the key expiration time&lt;br /&gt;
&lt;br /&gt;
* 公開鍵の ASCII バージョンを生成 (例: メールなどで配るため):&lt;br /&gt;
&lt;br /&gt;
 $ gpg --armor --output public.key --export &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* PGP 公開鍵サーバーに鍵を登録して、他の人があなたに直接連絡しなくても鍵を取得できるようにする:&lt;br /&gt;
&lt;br /&gt;
 $ gpg  --keyserver pgp.mit.edu --send-keys &#039;&#039;&amp;lt;key-id&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* ユーザー Bob あてに署名と暗号化:&lt;br /&gt;
&lt;br /&gt;
 $ gpg -se -r Bob &#039;&#039;file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* クリアテキスト署名を作成:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --clearsign &#039;&#039;file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 副鍵のエクスポート ===&lt;br /&gt;
&lt;br /&gt;
複数のデバイスで同じ鍵を使い回す場合、マスター鍵を分離させて、セキュリティが低いシステムでは暗号化に必要な副鍵だけを使いたいという状況が考えられます。&lt;br /&gt;
&lt;br /&gt;
まず、エクスポートしたい副鍵を確認してください:&lt;br /&gt;
&lt;br /&gt;
 $ gpg -K&lt;br /&gt;
&lt;br /&gt;
エクスポートする副鍵だけを選択:&lt;br /&gt;
&lt;br /&gt;
 $ gpg -a --export-secret-subkeys [subkey id]! &amp;gt; /tmp/subkey.gpg&lt;br /&gt;
&lt;br /&gt;
{{Warning|&#039;&#039;!&#039;&#039; を追加するのを忘れると、全ての副鍵がエクスポートされます。}}&lt;br /&gt;
&lt;br /&gt;
ここで作業を終えても良いですが、パスフレーズの変更もしておくと安全です。一時フォルダに鍵をインポートします:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --homedir /tmp/gpg --import /tmp/subkey.gpg&lt;br /&gt;
 $ gpg --homedir /tmp/gpg --edit-key &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;&lt;br /&gt;
 &amp;gt; passwd&lt;br /&gt;
 &amp;gt; save&lt;br /&gt;
 $ gpg --homedir /tmp/gpg -a --export-secret-subkeys [subkey id]! &amp;gt; /tmp/subkey.altpass.gpg&lt;br /&gt;
&lt;br /&gt;
{{Note|マスター鍵が存在しない、また、マスター鍵のパスワードが変更されていないという警告が表示されますが、変更したのは副鍵のパスワードなので無視してかまいません。}}&lt;br /&gt;
&lt;br /&gt;
これで、他のデバイスで {{ic|/tmp/subkey.altpass.gpg}} を使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== 有効期限の延長 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|何か特段の事情がないかぎり、有効期限が切れたり無効になった副鍵を削除しないでください。削除してしまうとその副鍵で暗号化したファイルを復号化できなくなってしまいます。満了した、または無効のキーを削除するのは他のユーザーの鍵束を整理するときだけにしてください。}}&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;
 $ gpg --edit-key &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;&lt;br /&gt;
 &amp;gt; addkey&lt;br /&gt;
&lt;br /&gt;
そして質問に答えて下さい (推奨される設定については前のセクションを参照)。&lt;br /&gt;
&lt;br /&gt;
* 変更を保存:&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; save&lt;br /&gt;
&lt;br /&gt;
* 鍵サーバーにアップデート:&lt;br /&gt;
&lt;br /&gt;
 $ gpg  --keyserver pgp.mit.edu --send-keys &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また、この鍵を複数のコンピュータで使用する場合は、公開鍵（新しい署名付き有効期限付き）をエクスポートして、それらのマシンでインポートすることもできます。&lt;br /&gt;
&lt;br /&gt;
 $ gpg --export --output pubkey.gpg &#039;&#039;user-id&#039;&#039;&lt;br /&gt;
 $ gpg --import pubkey.gpg&lt;br /&gt;
&lt;br /&gt;
秘密鍵の再エクスポートやバックアップの更新は必要ありません。マスター秘密鍵自体に有効期限がなく、公開鍵やサブ鍵に残された有効期限の署名があればよいのです。&lt;br /&gt;
&lt;br /&gt;
=== Rotating subkeys ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&#039;&#039;&#039;Never&#039;&#039;&#039; delete your expired or revoked subkeys unless you have a good reason. Doing so will cause you to lose the ability to decrypt files encrypted with the old subkey. Please &#039;&#039;&#039;only&#039;&#039;&#039; delete expired or revoked keys from other users to clean your keyring.}}&lt;br /&gt;
&lt;br /&gt;
Alternatively, if you prefer to stop using subkeys entirely once they have expired, you can create new ones. Do this a few weeks in advance to allow others to update their keyring.&lt;br /&gt;
&lt;br /&gt;
{{Tip|You do not need to create a new key simply because it is expired. You can extend the expiration date, see the section [[#Extending expiration date]].}}&lt;br /&gt;
&lt;br /&gt;
Create new subkey (repeat for both signing and encrypting key)&lt;br /&gt;
&lt;br /&gt;
 $ gpg --edit-key &#039;&#039;user-id&#039;&#039;&lt;br /&gt;
 &amp;gt; addkey&lt;br /&gt;
&lt;br /&gt;
And answer the following questions it asks (see [[#Create a key pair]] for suggested settings).&lt;br /&gt;
&lt;br /&gt;
Save changes&lt;br /&gt;
&lt;br /&gt;
 &amp;gt; save&lt;br /&gt;
&lt;br /&gt;
Update it to a keyserver.&lt;br /&gt;
&lt;br /&gt;
 $ gpg --keyserver pgp.mit.edu --send-keys &#039;&#039;user-id&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You will also need to export a fresh copy of your secret keys for backup purposes. See the section [[#Backup your private key]] for details on how to do this.&lt;br /&gt;
&lt;br /&gt;
{{Tip|Revoking expired subkeys is unnecessary and arguably bad form. If you are constantly revoking keys, it may cause others to lack confidence in you.}}&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;
  $ gpg --import &#039;&#039;revcert.asc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ここで、取り消しを公開する必要があります。 [[#鍵サーバーを使用する]]で過去に PGP サーバーを使用したことがある場合は、取り消された鍵を公開 PGP サーバーに送信します。それ以外の場合は、取り消された鍵をファイルにエクスポートし、通信パートナーに配布します。&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;
ファイルに署名するには {{ic|--sign}} または {{ic|-s}} フラグを使います:&lt;br /&gt;
&lt;br /&gt;
  $ gpg --output &#039;&#039;doc.sig&#039;&#039; --sign &#039;&#039;doc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは暗号化も行ってファイルをバイナリ形式で保存します。&lt;br /&gt;
&lt;br /&gt;
==== ファイルやメッセージにクリア署名 ====&lt;br /&gt;
&lt;br /&gt;
バイナリ形式に圧縮しないでファイルに署名するには:&lt;br /&gt;
&lt;br /&gt;
  $ gpg --clearsign &#039;&#039;doc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記のコマンドは文章を ASCII-armored 署名でラッピングしますが、文章に変更は加えられません。&lt;br /&gt;
&lt;br /&gt;
==== 分離署名を作成する ====&lt;br /&gt;
&lt;br /&gt;
文章やファイルとは別に署名ファイルを作成したい場合、{{ic|--detach-sig}} フラグを使ってください:&lt;br /&gt;
&lt;br /&gt;
  $ gpg --output &#039;&#039;doc.sig&#039;&#039; --detach-sig &#039;&#039;doc&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
上記の方法はソフトウェアプロジェクトを配布するときによく用いられます。署名書を検証することで第三者によってファイルが改竄されていないことが確認できます。&lt;br /&gt;
&lt;br /&gt;
==== 署名の検証 ====&lt;br /&gt;
&lt;br /&gt;
署名を検証するには {{ic|--verify}} フラグを使います:&lt;br /&gt;
&lt;br /&gt;
  $ gpg --verify &#039;&#039;doc.sig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|&#039;&#039;doc.sig&#039;&#039;}} は検証したい署名に置き換えてください。&lt;br /&gt;
&lt;br /&gt;
ファイルの検証と復号化を同時に行いたいお場合、{{ic|--decrypt}} フラグを使ってください。&lt;br /&gt;
&lt;br /&gt;
分離署名を検証する場合、ファイルと署名の両方が必要になります。例えば、Arch Linux の ISO を検証する場合:&lt;br /&gt;
&lt;br /&gt;
  $ gpg --verify &#039;&#039;archlinux-&#039;&#039;version&#039;&#039;.iso.sig&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|archlinux-&#039;&#039;version&#039;&#039;.iso}} が同じディレクトリに存在していなければなりません。&lt;br /&gt;
&lt;br /&gt;
=== 署名の確認 ===&lt;br /&gt;
&lt;br /&gt;
署名を確認するには、{{ic|--verify}} フラグを使用します。&lt;br /&gt;
&lt;br /&gt;
 $ gpg --verify &#039;&#039;doc&#039;&#039;.sig&lt;br /&gt;
&lt;br /&gt;
ここで {{ic|&#039;&#039;doc&#039;&#039;.sig}} は、検証したい署名を含む署名付きファイルです。&lt;br /&gt;
&lt;br /&gt;
分離された署名を検証する場合、署名されたデータファイルと署名ファイルの両方が検証時に存在する必要があります。例えば、Arch Linux の最新の iso を検証する場合、次のようになります。&lt;br /&gt;
&lt;br /&gt;
 $ gpg --verify archlinux-&#039;&#039;version&#039;&#039;.iso.sig&lt;br /&gt;
&lt;br /&gt;
ここで {{ic|archlinux-&#039;&#039;version&#039;&#039;.iso}} は同じディレクトリにある必要があります。&lt;br /&gt;
&lt;br /&gt;
また、第2引数で署名付きデータファイルを指定することも可能です。&lt;br /&gt;
&lt;br /&gt;
 $ gpg --verify archlinux-&#039;&#039;version&#039;&#039;.iso.sig &#039;&#039;/path/to/&#039;&#039;archlinux-&#039;&#039;version&#039;&#039;.iso&lt;br /&gt;
&lt;br /&gt;
署名に加えて暗号化されている場合は、[[#暗号化と復号化|復号化]]を行うだけで署名も検証されます。&lt;br /&gt;
&lt;br /&gt;
== gpg-agent ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gpg-agent&#039;&#039; はキーチェインにパスワードをリクエストしたりキャッシュしたりするのに使われるデーモンです。メールクライアントなど外部のプログラムから GnuPG を利用する場合に便利です。{{Pkg|gnupg}} には [[systemd/ユーザー|systemd ユーザー]]ソケットが付属しており、デフォルトで有効になります: {{ic|gpg-agent.socket}}, {{ic|gpg-agent-extra.socket}}, {{ic|gpg-agent-browser.socket}}, {{ic|gpg-agent-ssh.socket}}, {{ic|dirmngr.socket}}。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;gpg&#039;&#039; はメインの {{ic|gpg-agent.socket}} を使って &#039;&#039;gpg-agent&#039;&#039; デーモンに接続します。&lt;br /&gt;
* {{ic|gpg-agent-extra.socket}} はリモート環境から Unix ドメインソケットの転送を設定します。秘密鍵をリモート環境に移さなくてもリモート環境で &#039;&#039;gpg&#039;&#039; が使えるようになります。詳しくは {{man|1|gpg-agent}} を参照。&lt;br /&gt;
* The {{ic|gpg-agent-browser.socket}} allows web browsers to access the &#039;&#039;gpg-agent&#039;&#039; daemon.&lt;br /&gt;
* [[SSH]] は {{ic|gpg-agent-ssh.socket}} を使って &#039;&#039;ssh-add&#039;&#039; プログラムによって追加された [[SSH 鍵]]をキャッシュします。必要な設定は [[#SSH エージェント]]を見てください。&lt;br /&gt;
* {{ic|dirmngr.socket}} は鍵サーバーへの接続を処理する GnuPG デーモンを起動します。&lt;br /&gt;
&lt;br /&gt;
{{Note|GnuPG の設定ファイルのディレクトリがデフォルトと異なる場合、{{ic|gpgconf --list-dirs}} の値を使用するようにソケットファイルを編集してください。}}&lt;br /&gt;
&lt;br /&gt;
=== 設定 ===&lt;br /&gt;
&lt;br /&gt;
gpg-agent は {{ic|~/.gnupg/gpg-agent.conf}} ファイルで設定することができます。設定オプションは {{man|1|gpg-agent}} に記載されています。例えば、未使用の鍵の cache ttl を変更することができます:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.gnupg/gpg-agent.conf|&lt;br /&gt;
default-cache-ttl 3600&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|セッションを通してパスフレーズをキャッシュするには、次のコマンドを実行してください:&lt;br /&gt;
 $ /usr/lib/gnupg/gpg-preset-passphrase --preset XXXXXX&lt;br /&gt;
&lt;br /&gt;
XXXX は鍵輪に置き換えてください。鍵輪の値は {{ic|gpg --with-keygrip -K}} を実行することで取得できます。パスフレーズは {{ic|gpg-agent}} が再起動されるまで保存されます。{{ic|default-cache-ttl}} の値を設定した場合、そちらが優先されます。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== エージェントのリロード ===&lt;br /&gt;
&lt;br /&gt;
設定を変更した後は、{{ic|gpg-connect-agent}} でエージェントをリロードしてください:&lt;br /&gt;
&lt;br /&gt;
 $ gpg-connect-agent reloadagent /bye&lt;br /&gt;
&lt;br /&gt;
シェルに {{ic|OK}} と出力されます。&lt;br /&gt;
&lt;br /&gt;
しかし、エージェント設定に {{ic|keep-screen}} が追加されている場合など、再起動だけでは十分でないこともあります。&lt;br /&gt;
この場合、まず進行中の gpg-agent プロセスを kill してから、上記で説明したように再起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
=== pinentry ===&lt;br /&gt;
&lt;br /&gt;
{{ic|gpg-agent}} は {{ic|pinentry-program}} stanza を使用して、パスフレーズの入力を促す際に、特定の {{Pkg|pinentry}} ユーザーインターフェイスを使用するように設定できます。例えば、以下の通りです。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.gnupg/gpg-agent.conf|&lt;br /&gt;
pinentry-program /usr/bin/pinentry-curses&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
他のも様々な pinentry プログラムがあります。{{ic|pacman -Ql pinentry {{!}} grep /usr/bin/}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|/usr/bin/pinentry-kwallet}} を使うには {{AUR|kwalletcli}} パッケージをインストールする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
変更を行った後は、[[#エージェントのリロード|エージェントのリロード]]を忘れないでください。&lt;br /&gt;
&lt;br /&gt;
=== パスワードのキャッシュ ===&lt;br /&gt;
&lt;br /&gt;
GnuPG のパスワードをセッションの間だけ記憶させたい場合、{{ic|max-cache-ttl}} と {{ic|default-cache-ttl}} を高い値に設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|&lt;br /&gt;
gpg-agent.conf|&lt;br /&gt;
max-cache-ttl 60480000&lt;br /&gt;
default-cache-ttl 60480000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
詳しくは [[#gpg-agent]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 無人のパスフレーズ ===&lt;br /&gt;
&lt;br /&gt;
GnuPG 2.1.0 から gpg-agent と pinentry の利用が必須になりました。これによって {{ic|--passphrase-fd 0}} コマンドラインオプションによって STDIN からパイプで渡されたパスフレーズの後方互換性が損ねられています。古いリリースと同じような機能を使うには2つのことをする必要があります:&lt;br /&gt;
&lt;br /&gt;
まず、gpg-agent の設定を編集して &#039;&#039;loopback&#039;&#039; pinentry モードを許可してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.gnupg/gpg-agent.conf|2=&lt;br /&gt;
allow-loopback-pinentry&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
gpg-agent プロセスが実行している場合は再起動して変更を適用します。&lt;br /&gt;
&lt;br /&gt;
次に、更新する必要があるアプリケーションに以下のようにコマンドラインパラメータを含めて loopback モードを使用します:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --pinentry-mode loopback ...&lt;br /&gt;
&lt;br /&gt;
もしくは、コマンドラインで設定ができない場合、オプションを設定に追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|1=~/.gnupg/gpg.conf|2=&lt;br /&gt;
pinentry-mode loopback&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Note|上流の開発者は &#039;&#039;gpg.conf&#039;&#039; で &#039;&#039;pinentry-mode loopback&#039;&#039; を設定すると他の機能が使えなくなる可能性があると示唆しています。出来るかぎりコマンドラインオプションを使うようにして下さい [https://bugs.g10code.com/gnupg/issue1772]。}}&lt;br /&gt;
&lt;br /&gt;
=== SSH エージェント ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gpg-agent&#039;&#039; には OpenSSH エージェントのエミュレーション機能が存在します。既に GnuPG スイートを使っているのであれば、SSH 鍵をキャッシュするのに使うことが可能です。さらに、パスフレーズを管理するのに GnuPG エージェントの PIN エントリダイアログを使えます。&lt;br /&gt;
&lt;br /&gt;
==== SSH_AUTH_SOCK の設定 ====&lt;br /&gt;
&lt;br /&gt;
SSH が &#039;&#039;ssh-agent&#039;&#039; の代わりに &#039;&#039;gpg-agent&#039;&#039; を使うように {{ic|SSH_AUTH_SOCK}} を設定してください。シェルのタイプに関係なくプロセスが &#039;&#039;gpg-agent&#039;&#039; インスタンスを使うようにするには [[環境変数#pam_env を使う|pam_env]] を使用します:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.pam_environment|2=&lt;br /&gt;
SSH_AGENT_PID	DEFAULT=&lt;br /&gt;
SSH_AUTH_SOCK	DEFAULT=&amp;quot;${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{note|&lt;br /&gt;
* {{ic|SSH_AUTH_SOCK}} を手動で設定する場合、{{ic|GNUPGHOME}} をカスタマイズしているときはソケットの場所が異なる可能性があるので注意してください。以下の bash の例を使用するか、{{ic|SSH_AUTH_SOCK}} を {{ic|gpgconf --list-dirs agent-ssh-socket}} の値に変更してください。&lt;br /&gt;
* GNOME Keyring がインストールされている場合、 その ssh コンポーネントを[[GNOME/Keyring#キーリングデーモンの無効化|無効化]]する必要があります。そうしないと、{{ic|SSH_AUTH_SOCK}} を上書きしてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
または、Bash を使う場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bashrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
unset SSH_AGENT_PID&lt;br /&gt;
if [ &amp;quot;${gnupg_SSH_AUTH_SOCK_by:-0}&amp;quot; -ne $$ ]; then&lt;br /&gt;
  export SSH_AUTH_SOCK=&amp;quot;$(gpgconf --list-dirs agent-ssh-socket)&amp;quot;&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{Note|1=&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;エージェントを {{ic|gpg-agent --daemon /bin/sh}} で起動している場合、シェルは {{ic|SSH_AUTH_SOCK}} 変数を &#039;&#039;gpg-agent&#039;&#039; から承継します [http://git.gnupg.org/cgi-bin/gitweb.cgi?p=gnupg.git;a=blob;f=agent/gpg-agent.c;hb=7bca3be65e510eda40572327b87922834ebe07eb#l1307]。}}&lt;br /&gt;
&lt;br /&gt;
==== 適切な TTY を使うように pinentry を設定 ====&lt;br /&gt;
&lt;br /&gt;
{{man|1|gpg-agent}} にあるように、ユーザーを X セッションに切り替えた場合は GPG_TTY も設定して TTY を更新してください。例:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.bashrc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
# Set GPG TTY&lt;br /&gt;
export GPG_TTY=$(tty)&lt;br /&gt;
&lt;br /&gt;
# Refresh gpg-agent tty in case user switches into an X session&lt;br /&gt;
gpg-connect-agent updatestartuptty /bye &amp;gt;/dev/null&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
複数の端末を同時に使用し、&#039;&#039;ssh&#039;&#039; コマンドを実行した同じ端末から &#039;&#039;pinentry-curses&#039;&#039; で &#039;&#039;gpg-agent&#039;&#039; がパスフレーズを要求するようにしたい場合、SSH 設定ファイルに以下を追加してください。これにより、&#039;&#039;ssh&#039;&#039; コマンドを実行するたびに TTY がリフレッシュされるようになります [https://unix.stackexchange.com/a/499133]。&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.ssh/config|2=&lt;br /&gt;
Match host * exec &amp;quot;gpg-connect-agent UPDATESTARTUPTTY /bye&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
なお、環境変数 GPG_TTY が設定されていないと動作しません。&lt;br /&gt;
&lt;br /&gt;
==== SSH 鍵の追加 ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gpg-agent&#039;&#039; が起動していれば [[SSH 鍵#ssh-agent|ssh-agent]] と同じように &#039;&#039;ssh-add&#039;&#039; で鍵を追加できます。追加された鍵は {{ic|~/.gnupg/sshcontrol}} ファイルに保存されます。パスフレーズが必要になったときは毎回 &#039;&#039;pinentry&#039;&#039; ダイアログが表示されます。パスフレーズのキャッシュは {{ic|~/.gnupg/gpg-agent.conf}} ファイルで制御します。以下の例では &#039;&#039;gpg-agent&#039;&#039; で鍵を3時間キャッシュします:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.gnupg/gpg-agent.conf|&lt;br /&gt;
default-cache-ttl-ssh 10800&lt;br /&gt;
max-cache-ttl-ssh 10800}}&lt;br /&gt;
&lt;br /&gt;
==== SSH 認証に PGP 鍵を使用する ====&lt;br /&gt;
&lt;br /&gt;
PGP 鍵を SSH 鍵として使うこともできます。鍵のメンテナンスを楽にして SSH 鍵をキーカードに保存できます。認証機能を有効にして鍵を作成する必要があります ([[#カスタム機能]]を参照)。SSH 認証に PGP 鍵を使用することで得られる様々な利点があります。&lt;br /&gt;
&lt;br /&gt;
* Reduced key maintenance, as you will no longer need to maintain an SSH key.&lt;br /&gt;
* The ability to store the authentication key on a smartcard. GnuPG will automatically detect the key when the card is available, and add it to the agent (check with {{ic|ssh-add -l}} or {{ic|ssh-add -L}}). The comment for the key should be something like: {{ic|openpgp:&#039;&#039;key-id&#039;&#039;}} or {{ic|cardno:&#039;&#039;card-id&#039;&#039;}}. &lt;br /&gt;
&lt;br /&gt;
To retrieve the public key part of your GPG/SSH key, run {{ic|gpg --export-ssh-key &#039;&#039;gpg-key&#039;&#039;}}. If your key is authentication-capable but this command still fails with &amp;quot;Unusable public key&amp;quot;, add a {{ic|!}} suffix ([https://dev.gnupg.org/T2957]). &lt;br /&gt;
	&lt;br /&gt;
Unless you have your GPG key on a keycard, you need to add your key to {{ic|$GNUPGHOME/sshcontrol}} to be recognized as a SSH key. If your key is on a keycard, its keygrip is added to {{ic|sshcontrol}} implicitly. If not, get the keygrip of your key this way:&lt;br /&gt;
&lt;br /&gt;
{{hc|$ gpg --list-keys --with-keygrip|2=&lt;br /&gt;
sub   rsa4096 2018-07-25 [A]&lt;br /&gt;
      Keygrip = &#039;&#039;1531C8084D16DC4C36911F1585AF0ACE7AAFD7E7&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Then edit {{ic|sshcontrol}} like this. Adding the keygrip is a one-time action; you will not need to edit the file again, unless you are adding additional keys.&lt;br /&gt;
&lt;br /&gt;
{{hc|$GNUPGHOME/sshcontrol|&lt;br /&gt;
&#039;&#039;1531C8084D16DC4C36911F1585AF0ACE7AAFD7E7&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== スマートカード ==&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|pcsclite}} と {{Pkg|libusb-compat}} をインストールして、{{ic|pcscd.service}} サービスを [[systemd#ユニットを使う|systemd]] で実行する必要があります。}}&lt;br /&gt;
&lt;br /&gt;
GnuPG はスマートカードリーダーのインターフェイスとして &#039;&#039;scdaemon&#039;&#039; を使います。詳しくは [[man ページ]]を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GnuPG のみ設定 ===&lt;br /&gt;
&lt;br /&gt;
GnuPG ベース以外のカードを使う予定がない場合は、{{ic|~/.gnupg/scdaemon.conf}} の {{Ic|reader-port}} パラメータを確認してください。&#039;0&#039; が最初に利用できるシリアルポートリーダーを、&#039;32768&#039; (デフォルト) が最初の USB リーダーを示しています。&lt;br /&gt;
&lt;br /&gt;
=== GnuPG と OpenSC ===&lt;br /&gt;
&lt;br /&gt;
opensc ドライバーであらゆるスマートカードを使う場合は (例: いろいろな国の ID カード)、GnuPG の設定に注意する必要があります。何も設定をしていないと {{Ic|gpg --card-status}} を使った時に以下のようなメッセージが表示されることがあります:&lt;br /&gt;
&lt;br /&gt;
 gpg: selecting openpgp failed: ec=6.108&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、scdaemon はデバイスに直接接続しようとします。リーダーが他のプロセスによって使用中だとこの接続は失敗します。例えば: OpenSC によって使用される pcscd デーモン。この状況に対処するには、opensc と同じ基盤のドライバーを使って一緒に動作できるようにする必要があります。scdaemon に pcscd を使用させるため、{{ic|~/.gnupg/scdaemon.conf}} から {{Ic|reader-port}} を削除して、{{ic|libpcsclite.so}} ライブラリの場所を指定し、ccid を無効化してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.gnupg/scdaemon.conf|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
pcsc-driver /usr/lib/libpcsclite.so&lt;br /&gt;
card-timeout 5&lt;br /&gt;
disable-ccid&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
OpenSC を使わない場合は {{man|1|scdaemon}} をチェックしてください。&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|~/.gnupg/gpg.conf|&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
personal-digest-preferences SHA512&lt;br /&gt;
cert-digest-algo SHA512&lt;br /&gt;
default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed&lt;br /&gt;
personal-cipher-preferences TWOFISH CAMELLIA256 AES 3DES&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
GnuPG の最新版では、デフォルトのアルゴリズムとして SHA256 と AES が使われており、どちらも殆どの場合安全です。しかしながら、2.1 以前の古い GnuPG を使っている場合や、さらに高いセキュリティを求めたい場合、上記のように設定するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== パスワードの暗号化 ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[pass]] は以下の作業を自動化します。}}&lt;br /&gt;
&lt;br /&gt;
パスワードを暗号化すれば、設定ファイルに平文で書き込まれなくなります。メールのパスワードなどが良い例でしょう。&lt;br /&gt;
&lt;br /&gt;
まずパスワードを記述したファイルを作成してください。パスワードの後に空行を&#039;&#039;&#039;一行&#039;&#039;&#039;だけ追加しておく必要があります。そうしないとファイルを評価するときに gpg がエラーメッセージを返します。&lt;br /&gt;
&lt;br /&gt;
そして次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ gpg -e -a -r &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039; &#039;&#039;your_password_file&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-e}} は encrypt、{{ic|-a}} は armor (ASCII 出力)、{{ic|-r}} は受取人のユーザー ID です。&lt;br /&gt;
&lt;br /&gt;
新しく {{ic|&#039;&#039;your_password_file&#039;&#039;.asc}} ファイルが作られます。&lt;br /&gt;
&lt;br /&gt;
=== 鍵の無効化 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
*無効化証明書にアクセスできれば誰でも鍵を無効化して、利用できなくすることができてしまいます。&lt;br /&gt;
*鍵を無効化するのは、鍵が解読されたり消失したり、あるいはパスフレーズを忘れた場合にのみ行なってください。}}&lt;br /&gt;
&lt;br /&gt;
新しい鍵を生成すると無効化証明書が自動的に生成されます。ユーザーが手動で後から生成することも可能です。無効化証明書は {{ic|~/.gnupg/openpgp-revocs.d/}} に存在します。証明書のファイル名は無効化する鍵のフィンガープリントになります。&lt;br /&gt;
&lt;br /&gt;
鍵を無効化したい場合、無効化証明書をインポートするだけです:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --import &#039;&#039;&amp;lt;fingerprint&amp;gt;&#039;&#039;.rev&lt;br /&gt;
&lt;br /&gt;
そして鍵サーバーをアップデート:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --keyserver subkeys.pgp.net --send-keys &#039;&#039;&amp;lt;userid&amp;gt;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 信頼モデルの変更 ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは GnuPG は信頼モデルとして [[Wikipedia:Web of Trust|Web of Trust]] を使います。Web of Trust から [[Wikipedia:Trust on First|Trust on First]] に変更することが可能です。鍵を追加するときに {{ic|1=--trust-model=tofu}} を追加するか GnuPG の設定ファイルにオプションを追加してください。詳細は [https://lists.gnupg.org/pipermail/gnupg-devel/2015-October/030341.html GnuPG メーリングリストのメール] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 受取人の id を全て隠す ===&lt;br /&gt;
&lt;br /&gt;
デフォルトでは暗号メッセージには受取人の鍵 ID が含まれます。{{ic|hidden-recipient &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}} を使うことで暗号化するときに ID は削除することが可能です。全ての受取人で ID を削除するには設定ファイルに {{ic|throw-keyids}} を追加してください。この設定によってメッセージの受取人を隠すことができ、トラフィックの解析に対抗することができます (ソーシャルエンジニアリングを使うことでメッセージを復号化できてしまえば誰が受取人なのか確認される可能性があります)。欠点としては、暗号鍵を全て試すことになるので復号化が遅くなります ({{ic|--try-secret-key &#039;&#039;&amp;lt;user-id&amp;gt;&#039;&#039;}})。&lt;br /&gt;
&lt;br /&gt;
=== キーサインパーティで caff を使う ===&lt;br /&gt;
&lt;br /&gt;
鍵サーバーやキーリングにある鍵の正当性をユーザーが確認 (つまり鍵の持ち主が本人であることを確認) できるように、PGP/GPG はいわゆる信頼の輪 (&amp;quot;Web of Trust&amp;quot;) を利用しています。信頼の輪を維持するために様々なハッカーイベントが開かれており、キーサインパーティはそのひとつです。[[Wikipedia:Zimmermann–Sassaman key-signing protocol|Zimmermann-Sassaman]] 鍵署名プロトコルはキーサインパーティを効果的に行うための方式です。[http://www.cryptnet.net/fdp/crypto/keysigning_party/en/keysigning_party.html こちら] にハウツー記事があります。&lt;br /&gt;
&lt;br /&gt;
キーサインパーティの後、鍵に署名したり所有者に署名を送るのを簡略化するために、&#039;&#039;caff&#039;&#039; というツールを使うことができます。AUR のパッケージ {{AUR|caff-svn}} でインストールすることができます。&lt;br /&gt;
&lt;br /&gt;
所有者に署名を送信するには [[Wikipedia:ja:メール転送エージェント|MTA]] が必要です。MTA を設定していない場合、[[msmtp]] をインストールして下さい。&lt;br /&gt;
&lt;br /&gt;
=== 長い ID やフィンガープリントを毎回表示する ===&lt;br /&gt;
&lt;br /&gt;
長い鍵 ID を表示させるには設定ファイルに {{ic|keyid-format 0xlong}} を追加してください。鍵の指紋を完全に表示するには、設定ファイルに {{ic|with-fingerprint}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== カスタム機能 ===&lt;br /&gt;
&lt;br /&gt;
鍵にカスタム機能を設定することができます。以下の機能を使うことが可能です:&lt;br /&gt;
&lt;br /&gt;
* Certify (マスター鍵のみ) - 副鍵の作成ができるようになります。&lt;br /&gt;
* Sign - 公開鍵で検証することができる暗号化署名が作成可能になります。&lt;br /&gt;
* Encrypt - 公開鍵でデータを暗号化して、秘密鍵で復号化することができます。&lt;br /&gt;
* Authenticate - GnuPG 以外のプログラムで鍵を使って認証できます。SSH 鍵として使用することができるようになります。&lt;br /&gt;
&lt;br /&gt;
マスター鍵の機能は以下のコマンドで指定できます:&lt;br /&gt;
&lt;br /&gt;
 $ gpg --full-generate-key --expert&lt;br /&gt;
&lt;br /&gt;
オプションを選択して機能を設定することができます。&lt;br /&gt;
&lt;br /&gt;
副鍵にカスタム機能を指定したい場合、{{ic|gpg --edit-key}} に {{ic|--expert}} フラグを追加してください。詳しくは[[#鍵の編集]]を参照。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== Not enough random bytes available ===&lt;br /&gt;
鍵を生成するときに、gpg は以下のエラーを表示することがあります:&lt;br /&gt;
 Not enough random bytes available. Please do some other work to give the OS a chance to collect more entropy!&lt;br /&gt;
残っているエントロピーを確認するには、カーネルパラメータをチェックしてください:&lt;br /&gt;
 $ cat /proc/sys/kernel/random/entropy_avail&lt;br /&gt;
&lt;br /&gt;
エントロピーがたくさんある健康的な Linux 環境ならマックスの 4,096 ビットに近い値が返されます。返ってくる値が 200 以下の場合、システムのエントロピーが足りていません。&lt;br /&gt;
&lt;br /&gt;
エントロピー問題を解決するには、メッセージ通りのことをするのがベストです (例: ディスクを動かす、マウスを動かす、wiki を編集する - 何でもエントロピーの生成に繋がります)。それでも問題が解決しない場合、エントロピーを使い果たしているサービスが何なのかチェックして、しばらくそのサービスを停止してみてください。サービスを停止できない場合、[[乱数生成#高速な RNG]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== su ===&lt;br /&gt;
&lt;br /&gt;
{{Ic|pinentry}} を使う場合、使用するターミナルデバイス (例: {{Ic|/dev/tty1}}) の適切なパーミッションが必要です。しかしながら、&#039;&#039;su&#039;&#039; (または &#039;&#039;sudo&#039;&#039;) を使用すると、所有権は元のユーザーに残り、新しいユーザーにはなくなります。これでは pinentry はたとえ root であっても起動しません。pinentry を使用する (つまりエージェントで gpg を使用する) 前にデバイスのパーミッションを同じ所に変更する必要があります。root で gpg を実行する場合、gpg を使用する直前に所有者を root に変更してください:&lt;br /&gt;
&lt;br /&gt;
 # chown root /dev/ttyN  # where N is the current tty&lt;br /&gt;
&lt;br /&gt;
そして gpg を使用した後に元に戻して下さい。おそらく {{Ic|/dev/pts/}} と同じのが正しいです。&lt;br /&gt;
&lt;br /&gt;
{{Note|tty の所有者が pinentry を実行しているユーザーと一致している必要があります。{{Ic|tty}} グループに属しているだけでは不十分です。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|script}} で gpg を実行した場合、新しい tty が適切な所有権で使われます: &lt;br /&gt;
&lt;br /&gt;
 # script -q -c &amp;quot;gpg --gen-key&amp;quot; /dev/null&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== エージェントがファイルの終末についてエラーを表示する ===&lt;br /&gt;
&lt;br /&gt;
デフォルトの pinentry プログラムは pinentry-gtk-2 であり、D-Bus セッションバスを正しく実行する必要があります。詳しくは[[一般的なトラブルシューティング#セッションのパーミッション]]を見て下さい。&lt;br /&gt;
&lt;br /&gt;
もしくは、{{ic|pinentry-qt}} を使うこともできます。[[#pinentry]] を参照。&lt;br /&gt;
&lt;br /&gt;
=== KGpg 設定のパーミッション ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|kgpg}} には {{ic|~/.gnupg/}} のオプションが使えないという問題がありました。非推奨となった &#039;&#039;options&#039;&#039; ファイルが原因です。[https://bugs.kde.org/show_bug.cgi?id=290221 バグ] レポートを参照してください。&lt;br /&gt;
&lt;br /&gt;
=== GNOME on Wayland で SSH エージェントのソケットが上書きされる ===&lt;br /&gt;
&lt;br /&gt;
Wayland のセッションでは、{{Ic|gnome-session}} によって {{Ic|SSH_AUTH_SOCK}} が標準の gnome-keyring ソケット {{Ic|$XDG_RUNTIME_DIR/keyring/ssh}} に設定されます。このため {{Ic|~/.pam_environmment}} や systemd のユニットファイルで設定した値が上書きされてしまいます。&lt;br /&gt;
&lt;br /&gt;
この挙動を無効化するには {{Ic|GSM_SKIP_AGENT_WORKAROUND}} 変数を設定してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.pam_environment|2=&lt;br /&gt;
SSH_AGENT_PID	DEFAULT=&lt;br /&gt;
SSH_AUTH_SOCK	DEFAULT=&amp;quot;${XDG_RUNTIME_DIR}/gnupg/S.gpg-agent.ssh&amp;quot;&lt;br /&gt;
GSM_SKIP_SSH_AGENT_WORKAROUND	DEFAULT=&amp;quot;true&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== mutt ===&lt;br /&gt;
&lt;br /&gt;
Mutt は &#039;&#039;gpg-agent&#039;&#039; を正しく使用できないため、mutt を使う場合は {{ic|GPG_AGENT_INFO}} [[環境変数]]を設定する必要があります (中身は何でもかまいません)。[[#パスワードのキャッシュ|パスワードのキャッシュ]]も有効化してください。&lt;br /&gt;
&lt;br /&gt;
詳しくは [https://bbs.archlinux.org/viewtopic.php?pid=1490821#p1490821 フォーラムスレッド] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== gnupg バージョン 2.1 にアップグレードすると鍵が&amp;quot;消失&amp;quot;する ===&lt;br /&gt;
&lt;br /&gt;
{{ic|gpg --list-keys}} を実行しても以前まで使っていた鍵が表示されない場合、また、アプリケーションが鍵を見つけられないまたは鍵が不正だとエラーを吐く場合、鍵が新しいフォーマットに移行できていない可能性があります。&lt;br /&gt;
&lt;br /&gt;
[http://jo-ke.name/wp/?p=111 GnuPG invalid packet workaround] を読んで下さい。要約すると、旧式の {{ic|pubring.gpg}} と {{ic|secring.gpg}} ファイルの鍵にはバグが存在しており、新しい {{ic|pubring.kbx}} ファイルと {{ic|private-keys-v1.d/}} サブディレクトリ、そしてディレクトリのファイルによって置き換えられたということが書かれています。以下のコマンドを実行することで消失した鍵を復旧させることができるかもしれません:&lt;br /&gt;
&lt;br /&gt;
 $ cd&lt;br /&gt;
 $ cp -r .gnupg gnupgOLD&lt;br /&gt;
 $ gpg --export-ownertrust &amp;gt; otrust.txt&lt;br /&gt;
 $ gpg --import .gnupg/pubring.gpg&lt;br /&gt;
 $ gpg --import-ownertrust otrust.txt&lt;br /&gt;
 $ gpg --list-keys&lt;br /&gt;
&lt;br /&gt;
=== (鍵を受信しようとすると) どの鍵サーバーでも gpg がフリーズする ===&lt;br /&gt;
&lt;br /&gt;
特定の鍵サーバーで鍵を受信しようとして gpg がフリーズしている場合、dirmngr を kill して (問題が起こっていない) 他の鍵サーバーにアクセスできるようにする必要があります。そうしないと全ての鍵サーバーでフリーズしてしまいます。&lt;br /&gt;
&lt;br /&gt;
=== スマートカードが検出されない ===&lt;br /&gt;
&lt;br /&gt;
スマートカードにアクセスするための権限がない場合、カードを正しく設定して接続しても、{{ic|card error}} が表示されることがあります。&lt;br /&gt;
&lt;br /&gt;
スマートカードにアクセスする必要があるユーザーに {{ic|scard}} を追加することで解決できます。追加したら、以下のような [[Udev#udev ルールを記述する|udev]] ルールを作って下さい:&lt;br /&gt;
{{hc|/etc/udev/rules.d/71-gnupg-ccid.rules|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
ACTION==&amp;quot;add&amp;quot;, SUBSYSTEM==&amp;quot;usb&amp;quot;, ENV{ID_VENDOR_ID}==&amp;quot;1050&amp;quot;, ENV{ID_MODEL_ID}==&amp;quot;0116|0111&amp;quot;, MODE=&amp;quot;660&amp;quot;, GROUP=&amp;quot;scard&amp;quot;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
VENDOR と MODEL は {{ic|lsusb}} の出力にあわせて変更する必要があります。上記は YubikeyNEO の例です。&lt;br /&gt;
&lt;br /&gt;
=== gpg: WARNING: server &#039;gpg-agent&#039; is older than us (x &amp;lt; y) ===&lt;br /&gt;
&lt;br /&gt;
{{ic|gnupg}} をアップグレードしたのに古い gpg-agent が動作し続けていると警告が表示されます。ユーザーの {{ic|gpg-agent.socket}} を再起動してください (再起動するときに {{ic|--user}} フラグを使ってください)。&lt;br /&gt;
&lt;br /&gt;
=== IPC 接続の呼び出しに失敗 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|killall gpg-agent dirmngr}} と {{ic|$GNUPGHOME/crls.d/}} フォルダの権限が {{ic|700}} になっていて、{{ic|gpg-agent}} と {{ic|dirmngr}} が起動していないことを確認してください．&lt;br /&gt;
&lt;br /&gt;
デフォルトでは、{{Pkg|gnupg}} パッケージは、ソケットのために {{ic|/run/user/$UID/gnupg/}} ディレクトリを使用します。[https://github.com/gpg/gnupg/blob/25ae80b8eb6e9011049d76440ad7d250c1d02f7c/README#L121-L122 GnuPG documentation] には、このディレクトリが望ましいと書かれています (すべてのファイルシステムがソケットに対応しているわけではありません)。あなたの {{ic|agent-socket}} の設定が、適切なファイルシステムを持つパスを指定しているかどうか確認してください。ic|agent-socket}} のパス設定は、 {{ic|gpgconf --list-dirs agent-socket}} を実行することで確認することができます。&lt;br /&gt;
&lt;br /&gt;
{{ic|gpg-agent}} が正常に起動するか、{{ic|gpg-agent --daemon}} でテストしてください。&lt;br /&gt;
&lt;br /&gt;
=== 汚染された PGP 証明書の軽減 ===&lt;br /&gt;
&lt;br /&gt;
2019 年 6 月、未知の攻撃者が数万（または数十万）の署名を持つ複数の高プロファイル PGP 証明書をスパム送信し（CVE-2019-13050）、これらの署名を SKS 鍵サーバーにアップロードしていました。&lt;br /&gt;
これらの汚染された証明書がキーリングに存在すると、gpg は以下のメッセージを表示してハングします。&lt;br /&gt;
&lt;br /&gt;
 gpg: removing stale lockfile (created by 7055)&lt;br /&gt;
&lt;br /&gt;
この場合、[https://tech.michaelaltfield.net/2019/07/14/mitigating-poisoned-pgp-certificates/ ブログポスト]にあるように、汚染された証明書を削除することで軽減できる可能性があります。&lt;br /&gt;
&lt;br /&gt;
=== IPC 応答が無効であり、デバイスの ioctl が不適切 === &lt;br /&gt;
&lt;br /&gt;
デフォルトの pinentry プログラムは、{{ic|/usr/bin/pinentry-gtk-2}} です。{{Pkg|gtk2}} が使用できない場合、pinentry は{{ic|/usr/bin/pinentry-curses}}にフォールバックし、署名に失敗します。&lt;br /&gt;
&lt;br /&gt;
 gpg: signing failed: Inappropriate ioctl for device&lt;br /&gt;
 gpg: [stdin]: clear-sign failed: Inappropriate ioctl for device&lt;br /&gt;
&lt;br /&gt;
pinentry プログラム {{ic|/usr/bin/pinentry-tty}} と {{ic|/usr/bin/pinentry-curses}} を使用するには、環境変数 {{ic|GPG_TTY}} を設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
 $ export GPG_TTY=$(tty)&lt;br /&gt;
&lt;br /&gt;
=== キーブロックのリソースが存在しません ===&lt;br /&gt;
&lt;br /&gt;
鍵をインポートしようとしたときに、このようなエラーが発生した場合、&lt;br /&gt;
&lt;br /&gt;
 gpg: keyblock resource &#039;&#039;&#039;gnupg_home&#039;&#039;/pubring.kbx&#039;: No such file or directory&lt;br /&gt;
&lt;br /&gt;
これは GnuPG がホームディレクトリを作成しないためです。単に手動で作成してください。&lt;br /&gt;
&lt;br /&gt;
 $ mkdir -m 700 &#039;&#039;gnupg_home&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://gnupg.org/ GNU Privacy Guard ホームページ]&lt;br /&gt;
* [https://futureboy.us/pgp.html Alan Eliasen&#039;s GPG Tutorial]&lt;br /&gt;
* [[RFC:4880|RFC 4880]] — &amp;quot;OpenPGP Message Format&amp;quot;&lt;br /&gt;
* [https://help.riseup.net/en/security/message-security/openpgp/gpg-best-practices gpg.conf recommendations and best practices]&lt;br /&gt;
* [[Fedora:Creating GPG Keys]]&lt;br /&gt;
* [[Debian:Subkeys]]&lt;br /&gt;
* [https://github.com/lfit/itpol/blob/master/protecting-code-integrity.md Protecting code integrity with PGP]&lt;br /&gt;
* [https://sanctum.geek.nz/arabesque/series/gnu-linux-crypto/ A more comprehensive gpg Tutorial]&lt;br /&gt;
* [https://www.reddit.com/r/GPGpractice/ /r/GPGpractice - a subreddit to practice using GnuPG.]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Shota&amp;diff=29098</id>
		<title>利用者:Shota</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Shota&amp;diff=29098"/>
		<updated>2023-01-04T00:57:23Z</updated>

		<summary type="html">&lt;p&gt;Shota: 運用している計算機のリストの更新&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 自己紹介 ==&lt;br /&gt;
普段から Arch Linux を使っているので、何か Arch community に貢献できればと思っています。&lt;br /&gt;
&lt;br /&gt;
== 計算機環境 ==&lt;br /&gt;
&lt;br /&gt;
Archlinux で運用しているもののみ記載。&lt;br /&gt;
&lt;br /&gt;
* Main PC: [[Lenovo_ThinkPad_X1_Extreme]].&lt;br /&gt;
* その他&lt;br /&gt;
** [[Lenovo_ThinkPad_X230]]&lt;br /&gt;
** Fujitsu ESPRIMO&lt;br /&gt;
** Raspberry Pi 2B+, 1&lt;br /&gt;
** VPS いくつか&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
* &amp;lt;s&amp;gt;ThinkPad におけるトラックポイントの速さの変更方法: [https://askubuntu.com/questions/37824/what-is-the-best-way-to-configure-a-thinkpads-trackpoint ask ubuntu のフォーラムより]&amp;lt;/s&amp;gt; -&amp;gt; [[トラックポイント]]。&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29072</id>
		<title>トランスポート層セキュリティ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29072"/>
		<updated>2023-01-02T03:37:11Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 信頼管理 */  英語版に合わせて管理方法のいくつかの例を追加。英語版からの翻訳。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Transport Layer Security]]&lt;br /&gt;
[[en:Transport Layer Security]]&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security|Wikipedia]] より:&lt;br /&gt;
:&#039;&#039;&#039;Transport Layer Security&#039;&#039;&#039; (&#039;&#039;&#039;TLS&#039;&#039;&#039;) およびその前身の [[RFC:7568|Secure Sockets Layer]] (&#039;&#039;&#039;SSL&#039;&#039;&#039;) はコンピュータネットワークにおいてセキュリティを要求される通信を行うためのプロトコルである。ウェブブラウザやメール、インスタントメッセージ、voice over IP (VoIP) などのアプリケーションで幅広く使われているプロトコルとなっている。ウェブサイトは TLS によってサーバーとウェブブラウザ間の通信を暗号化できる。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
&lt;br /&gt;
TLS の実装は 5 種類あり、[[公式リポジトリ]]で公開されています。OpenSSL は base メタパッケージの間接的な依存関係であるため、すでにシステムにインストールされているはずです({{Pkg|base}} &amp;gt; {{Pkg|coreutils}} &amp;gt; {{Pkg|openssl}})。GnuTLS は多くのパッケージで必要とされているため、すでにシステムにインストールされている可能性があります。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[OpenSSL]]|堅牢・商業品質・フル機能の TLS と SSL プロトコルのツールキット。汎用の暗号ライブラリでもあります。|https://www.openssl.org/|{{Pkg|openssl}}}}&lt;br /&gt;
* {{App|[[GnuTLS]]|TLS, SSL, DTLS プロトコルのフリーソフトウェア実装。X.509, PKCS #12, OpenPGP などの API を提供します。|https://www.gnutls.org/|{{Pkg|gnutls}}}}&lt;br /&gt;
* {{App|[[Network Security Services]] (NSS)|TLS/SSL と [[Wikipedia:S/MIME|S/MIME]] をサポートする暗号ライブラリの実装。TLS アクセラレーションとスマートカードもサポート。|https://firefox-source-docs.mozilla.org/security/nss/index.html|{{Pkg|nss}}}}&lt;br /&gt;
* {{App|[[mbed TLS]]|ポータブルな SSL/TLS 実装。別名 PolarSSL。|https://tls.mbed.org/|{{Pkg|mbedtls}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:LibreSSL|LibreSSL]]|OpenBSD プロジェクトによって2014年に OpenSSL からフォークされた TLS/crypto スタック。コードベースを近代的に改修してセキュリティを向上させることを目標としています。|https://www.libressl.org/|{{Pkg|libressl}}}}&lt;br /&gt;
&lt;br /&gt;
== 認証局 ==&lt;br /&gt;
&lt;br /&gt;
TLS では、一連の[[Wikipedia:Certificate authority|認証局]]（CA）の 1 つが、サーバーからの[[Wikipedia:public key certificate|公開鍵証明書]]の信頼性をチェックし署名します。TLS でサーバーに接続するクライアントは、CA の電子署名を通じて、その証明書の信頼性を確認することができます。電子署名を確認するために、クライアントは、別の経路から取得し自己署名証明書として保存された CA の公開鍵を持っている必要があります。Arch Linux では CA 証明書のデフォルトセットは {{Pkg|ca-certificates}} パッケージで提供されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|現在、Arch Linux は [[MozillaWiki:CA|Mozilla CA Certificate Store]] からの CA 証明書をデフォルトセットとして使用しています。}}&lt;br /&gt;
&lt;br /&gt;
Arch Linux は CA 証明書を管理するために、システム全体の集中化されたインターフェースを提供します。このインターフェースは {{Pkg|libp11-kit}} パッケージの {{ic|/usr/lib/pkcs11/p11-kit-trust.so}} というライブラリで、証明書のための [[Wikipedia:PKCS 11|PKCS #11]] API を提供し、{{ic|/usr/share/ca-certificates/trust-source/}} (&amp;quot;Default Trust&amp;quot; トークン) と {{ic|/etc/ca-certificates/trust-source/}} (&amp;quot;System Trust&amp;quot; トークン) に格納されています。&lt;br /&gt;
&lt;br /&gt;
コマンドラインからインターフェースを使用するために、{{Pkg|p11-kit}} パッケージは {{man|1|trust}} ユーティリティを提供します。&lt;br /&gt;
&lt;br /&gt;
CA 証明書の管理に独自の論理を使用しており [[Wikipedia:PKCS 11|PKCS #11]] に移植されていないライブラリのために、{{Pkg|ca-certificates-utils}} パッケージは {{man|8|update-ca-trust}} スクリプトを提供し、集中管理インタフェースを通して得られた CA 証明書を {{ic|/etc/ca-certificates/extracted/}} と {{ic|/etc/ssl/certs/}} にコピーします。&lt;br /&gt;
&lt;br /&gt;
=== CA 証明書のデフォルトセットをロードするためのメカニズムの概要 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 実装 !! メカニズム !! Arch Linux 設定&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供する{{man|3|SSL_CTX_set_default_verify_paths}}。&lt;br /&gt;
| デフォルトファイルは {{ic|/etc/ssl/cert.pem}} です。デフォルトディレクトリは {{ic|/etc/ssl/certs/}} です。&lt;br /&gt;
|-&lt;br /&gt;
| [[GnuTLS]]&lt;br /&gt;
| ハードコードされたディレクトリ、ファイル、または[https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS 11|PKCS #11]] モジュールから証明書をロードする API 関数を提供する。最後のケースでは、ハードコードされた [[RFC:7512|URL]] によって、任意の信頼できる証明書、または {{ic|trust-policy: yes}} とマークされたモジュール上の信頼できる CA 証明書、オプションで追加のフィルタリング基準を持つ証明書をロードすることができます[https://www.gnutls.org/manual/gnutls.html#Installing-for-a-software-distribution], [https://www.gnutls.org/manual/gnutls.html#Certificate-credentials]。&lt;br /&gt;
| [https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS11|PKCS #11]] モジュールから、{{ic|trust-policy: yes}} でマークされた、信頼できるすべての CA 証明書をロードします。&lt;br /&gt;
|-&lt;br /&gt;
| [[Network Security Services]]&lt;br /&gt;
| 専用の API で管理されている [[Wikipedia:PKCS11|PKCS#11]] モジュールの動的に構成されたリストから証明書を自動的にロードします。構成は、ユーザーが指定した任意のディレクトリに保存できます。 [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/PKCS11/FAQ], {{man|1|modutil}}.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[mbed TLS]]&lt;br /&gt;
| ユーザーは証明書をロードする必要があります。 [https://tls.mbed.org/kb/how-to/mbedtls-tutorial].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:LibreSSL|LibreSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供します。 {{man|3|libressl-SSL_CTX_load_verify_locations}}&lt;br /&gt;
|デフォルトのファイルは {{ic|/etc/libressl/cert.pem}} で、デフォルトのディレクトリは {{ic |/etc/libressl/certs/}} です。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note| 現在、[[Wikipedia:LibreSSL|LibreSSL]] は独自の CA 証明書のリストを使っています。詳細は {{Bug|69298}} を参照して下さい。}}&lt;br /&gt;
&lt;br /&gt;
== 信頼管理 ==&lt;br /&gt;
&lt;br /&gt;
信頼管理のために {{man|1|trust}} というユーティリティが提供されています。 {{ic|trust-policy: yes}} と設定され {{ic|priority:}} の設定と共に保存されている [[Wikipedia:PKCS 11|PKCS #11]] モジュールのリストを元に動作します。モジュールの設定の詳細については {{man|5|pkcs11.conf}} を参照して下さい.&lt;br /&gt;
&lt;br /&gt;
{{Note| [[Wikipedia:PKCS 11|PKCS #11]] インターフェースをサポートしていないライブラリーでの管理状態を修正した場合、毎回 {{man|8|update-ca-trust}} を実行して下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{man|1|p11tool}} や {{man|1|pkcs11-tool}} といった [[Wikipedia:PKCS 11|PKCS #11]] モジュールの操作のための、統合的なツールを使って管理する事も可能です。}}&lt;br /&gt;
&lt;br /&gt;
=== 信頼された証明書のリスト ===&lt;br /&gt;
&lt;br /&gt;
 $ trust list&lt;br /&gt;
&lt;br /&gt;
=== 信頼された証明書のリストへ追加する方法 ===&lt;br /&gt;
&lt;br /&gt;
 # trust anchor &#039;&#039;certificate.crt&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
証明書は、 [https://github.com/p11-glue/p11-kit/blob/master/doc/internal/persist-format.txt persistence] フォーマットあるいは、 DER や PEM フォーマット (&#039;&#039;&#039;OpenSSL&#039;&#039;&#039; がサポートする &#039;&#039;trusted certificate&#039;&#039; フォーマットを含む) でリストされている必要があります。このコマンドは、証明書をモジュールリストの一番始めの書き込み可能なトークンとして追加します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|この方法はシステムの全ユーザが秘密鍵にアクセスする事を可能とし、TLS トラフィックの傍受ができ得る状態になります。詳細は [[プロキシサーバー#HTTPS MITM プロキシ|HTTPS MITM プロキシ]] を参照して下さい。}}&lt;br /&gt;
&lt;br /&gt;
=== 信頼された証明書のリストからの削除 ===&lt;br /&gt;
&lt;br /&gt;
 $ trust anchor --remove &#039;pkcs11:id=&#039;&#039;%00%11%22%33%44%55%66%77%88%99%AA%BB%CC%DD%EE%FF%00%11%22%33&#039;&#039;;type=cert&#039;&lt;br /&gt;
&lt;br /&gt;
=== デフォルトの証明書リストの上書き ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/usr/share/ca-certificates/trust-source/}} にある証明書のトークンは書き込み制限が掛けられているため、デフォルトの証明書を無効化するためには次の様なコマンドを使います:&lt;br /&gt;
&lt;br /&gt;
 $ trust extract --format=pem-bundle --filter=&#039;pkcs11:id=&#039;&#039;%00%11%22%33%44%55%66%77%88%99%AA%BB%CC%DD%EE%FF%00%11%22%33&#039;&#039;;type=cert&#039; /etc/ca-certificates/trust-source/blocklist/untrusted_authority.pem&lt;br /&gt;
&lt;br /&gt;
== 証明書を取得 ==&lt;br /&gt;
&lt;br /&gt;
最初に RSA 秘密鍵を生成してください。鍵を生成する前に、[[umask]] でファイルモード作成マスクを制限的に (例えば {{ic|077}}) 設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|openssl}} パッケージは他のディストリビューションと違って {{ic|/etc/ssl/private}} ディレクトリを保護しません。{{Bug|43059}} を参照。}}&lt;br /&gt;
&lt;br /&gt;
証明書は [[Wikipedia:Certificate signing request|証明書署名要求]] (CSR) を使って認証局から取得するか、あるいは [[Wikipedia:Self-signed certificate|自己署名]] することができます。自己署名証明書は簡単に生成できますが、クライアントはデフォルトでは拒否するため、自己署名証明書を信頼するようにクライアントを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
実際の生成コマンドは以下の実装の記事を見てください:&lt;br /&gt;
&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [[GnuTLS#使用方法]]&lt;br /&gt;
* [[Network Security Services]]&lt;br /&gt;
* [[mbed TLS#使用方法]]&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#ACME クライアント|ACME]] を使うことで [https://letsencrypt.org/ Let&#039;s Encrypt] 認証局からフリーの証明書を取得できます。}}&lt;br /&gt;
&lt;br /&gt;
== サーバーサイドの推奨事項 ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security#TLS/SSLの既知の脆弱性|TLS に対する攻撃]] は多数存在するため、ベストプラクティスに注意してください:&lt;br /&gt;
&lt;br /&gt;
* [https://disablessl3.com/ SSLv3 を無効化] することで [[Wikipedia:POODLE|POODLE]] 攻撃を防ぐ。&lt;br /&gt;
* [https://weakdh.org/sysadmin.html weakdh.org の TLS の Diffie-Hellman デプロイガイド]&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Server_Side_TLS Mozilla による Server Side TLS の記事]&lt;br /&gt;
* [https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices SSL Labs の SSL と TLS デプロイベストプラクティス]&lt;br /&gt;
* [https://cipherli.st/ Cipherli.st]&lt;br /&gt;
&lt;br /&gt;
=== TLS のチェック ===&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするプログラム:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|testssl.sh}}&lt;br /&gt;
* [[Nmap]]&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [https://github.com/mozilla/cipherscan cipherscan]&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするウェブサイト:&lt;br /&gt;
&lt;br /&gt;
* https://dev.ssllabs.com/ssltest/ (HTTPS のみ)&lt;br /&gt;
* https://www.checktls.com/ (メールのみ)&lt;br /&gt;
* https://www.htbridge.com/ssl/ (任意ポート)&lt;br /&gt;
* https://tls.imirhil.fr/tls (任意ポート)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== ACME クライアント ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Automated Certificate Management Environment|Automated Certificate Management Environment]] (ACME) プロトコルは [[Let&#039;s Encrypt]] などの [[Wikipedia:ja:認証局|認証局]] から X.509 証明書をリクエストできるプロトコルです。&lt;br /&gt;
&lt;br /&gt;
[https://letsencrypt.org/docs/client-options/ ACME クライアントの一覧] も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|acme-client|C で書かれたセキュアな Let&#039;s Encrypt クライアント。|https://kristaps.bsd.lv/acme-client/|{{AUR|acme-client}}{{Broken package link|パッケージが存在しません}}}}&lt;br /&gt;
* {{App|acme-tiny|Let&#039;s Encrypt から TLS 証明書を作成・更新するための200行の Python スクリプト。|https://github.com/diafygi/acme-tiny|{{Pkg|acme-tiny}}}}&lt;br /&gt;
* {{App|acme.sh|Unix シェルスクリプトだけで作られた ACME クライアント。|https://github.com/Neilpang/acme.sh|{{AUR|acme.sh-git}}}}&lt;br /&gt;
* {{App|acmetool|Go で書かれた使いやすい ACME CLI。|https://github.com/hlandau/acme|{{AUR|acmetool}}, {{AUR|acmetool-git}}}}&lt;br /&gt;
* {{App|[[Certbot]]|Python で書かれた、Let&#039;s Encrypt によって推奨されている ACME クライアント。|https://github.com/certbot/certbot|{{Pkg|certbot}}}}&lt;br /&gt;
* {{App|dehydrated|Bash で書かれた ACME クライアント。|https://github.com/lukas2511/dehydrated|{{Pkg|dehydrated}}, {{AUR|dehydrated-git}}}}&lt;br /&gt;
* {{App|getssl|Bash で書かれた ACME クライアント。|https://github.com/srvrco/getssl|{{AUR|getssl}}, {{AUR|getssl-git}}}}&lt;br /&gt;
* {{App|lego|Go で書かれた Lets Encrypt クライアントと ACME ライブラリ。|https://github.com/xenolf/lego|{{AUR|lego-git}}}}&lt;br /&gt;
* {{App|letsencrypt-cli|もうひとつの Letsencrypt (ACME) クライアント。Ruby を使用。|https://github.com/zealot128/ruby-acme-cli|{{AUR|letsencrypt-cli}}}}&lt;br /&gt;
* {{App|manuale|完全手動の Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/veeti/manuale|{{AUR|manuale}}}}&lt;br /&gt;
* {{App|ruby-acme-client|letsencrypt の ACME プロトコルの Ruby クライアント。|https://github.com/unixcharles/acme-client|{{AUR|ruby-acme-client}}}}&lt;br /&gt;
* {{App|simp_le|シンプルな Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/zenhack/simp_le|{{AUR|simp_le-git}}}}&lt;br /&gt;
&lt;br /&gt;
オンラインのインタラクティブな、https://gethttpsforfree.com クライアントでは、ウェブページからシェルコマンドラインにコピーペーストして、10 回ほどやり直す必要があります。その間に推奨されるコマンドを実行します。また、おそらくそのページで手動更新をしなければならないでしょう。あるいは、他の方法で更新を行う必要があります。一方、あなたは、それが成功したかどうか、すべてのステップで見ることができます。証明書を要求するためだけにソフトウェアをインストールする必要はありません。そして、秘密鍵やサーバー・ソフトウェアを、完全に意識的にしか触れないようにすることができるようになります。&lt;br /&gt;
&lt;br /&gt;
=== OCSP ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Online Certificate Status Protocol|Online Certificate Status Protocol]] (OCSP) は [[Firefox]] によってサポートされています。[[Chromium]] は独自のメカニズムを備えています [http://dev.chromium.org/Home/chromium-security/crlsets]。&lt;br /&gt;
&lt;br /&gt;
GnuTLS の {{man|1|ocsptool}} や OpenSSL の {{man|1ssl|ocsp}} も参照。&lt;br /&gt;
&lt;br /&gt;
=== HSTS ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:HTTP Strict Transport Security|HTTP Strict Transport Security]] (HSTS) メカニズムは Firefox, Chromium, [[wget]] ({{ic|~/.wget-hsts}}) によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
=== DNS CAA ===&lt;br /&gt;
&lt;br /&gt;
See [[Wikipedia:DNS Certification Authority Authorization]].&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Certificates Gentoo:Certificates]&lt;br /&gt;
* [https://www.happyassassin.net/2015/01/12/a-note-about-ssltls-trusted-certificate-stores-and-platforms/ A note about SSL/TLS trusted certificate stores, and platforms (OpenSSL and GnuTLS)]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC&amp;diff=29071</id>
		<title>プロキシサーバー</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC&amp;diff=29071"/>
		<updated>2023-01-02T03:36:42Z</updated>

		<summary type="html">&lt;p&gt;Shota: 英語版に合わせて /* HTTPS MITM プロキシ */ を追加。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:プロキシサーバー]]&lt;br /&gt;
[[Category:ネットワーク設定]]&lt;br /&gt;
[[en:Proxy settings]]&lt;br /&gt;
[[es:Proxy settings]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|HTTP トンネリング}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
プロキシはリモートの、資源を消費する、または直接使うのが難しいサービスのためのインターフェイスです。ソース: [http://en.wiktionary.org/wiki/proxy Proxy - Wiktionary]。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== HTTPS MITM プロキシ ==&lt;br /&gt;
&lt;br /&gt;
HTTPS 接続をデバッグする際、ブラウザの外で通信を監視できると便利な場合があります。TLS MITM で傍受するためには、ブラウザやシステムにおけるプロキシの [[Transport_Layer_Security#認証局|認証局]] の信頼情報を登録する必要があります。&lt;br /&gt;
&lt;br /&gt;
* {{App|Charles|Javaで書かれたグラフィカルな試用版ソフト。|https://www.charlesproxy.com/|{{AUR|charles}}}}&lt;br /&gt;
* {{App|Fiddler|Mono 上で動くプロプライエタリでグラフィカルなツール。|https://www.telerik.com/fiddler|{{AUR|fiddler}}}}&lt;br /&gt;
* {{App|microsocks|C言語で書かれたシンプルな SOCKS5 プロキシサーバー。|https://github.com/rofl0r/microsocks|{{Pkg|microsocks}}}}&lt;br /&gt;
* {{App|mitmproxy|Pythonで書かれたコマンドラインとウェブインターフェース。APIも提供しています。|https://mitmproxy.org/|{{Pkg|mitmproxy}}}}&lt;br /&gt;
* {{App|sslsplit|TLS 接続に対して汎用的に動作するプロキシ。しかしブラウザにおける HTTP プロキシとしては使えません。C言語で書かれています。|https://www.roe.ch/SSLsplit|{{Pkg|sslsplit}}}}&lt;br /&gt;
&lt;br /&gt;
==環境変数==&lt;br /&gt;
([[wget]] など) いくつかのプログラムは &amp;quot;protocol_proxy&amp;quot; という形式の環境変数を使って特定のプロコトルのプロキシを決定します (例: HTTP, FTP, ...)。&lt;br /&gt;
&lt;br /&gt;
以下はそれらの変数をシェルで設定する方法の例です:&lt;br /&gt;
 &lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
export http_proxy=http://10.203.0.1:5187/&lt;br /&gt;
export https_proxy=$http_proxy&lt;br /&gt;
export ftp_proxy=$http_proxy&lt;br /&gt;
export rsync_proxy=$http_proxy&lt;br /&gt;
export no_proxy=&amp;quot;localhost,127.0.0.1,localaddress,.localdomain.com&amp;quot;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
プログラムによっては大文字の環境変数を使用することがあります。&lt;br /&gt;
&lt;br /&gt;
プロキシ環境変数を全てのユーザーと全てのアプリケーションで使えるようにするために、上記の export コマンドをスクリプトに追加することができます。例えば {{ic|/etc/profile.d/}} に &amp;quot;proxy.sh&amp;quot; を作成。スクリプトには実行可能属性を付与してください。この方法はプロクシ設定のオプションが存在しない [[Xfce]] などのデスクトップ環境を使ってる場合に便利です。例えば、[[Chromium]] ブラウザは Xfce の実行中、この方法を使って設定されて変数を利用します。&lt;br /&gt;
&lt;br /&gt;
システム全体でプロキシを簡単に設定できることを標榜している [https://github.com/himanshub16/ProxyMan ProxyMan] という名前のツールも存在します。[[Git]], [[npm]], [[Dropbox]] などのソフトウェアのプロキシ設定も管理されます。Alan Pope によるスクリプトに影響を受けています。&lt;br /&gt;
 &lt;br /&gt;
また、{{ic|.bashrc}} に関数を追加することで変数の切り替えを自動化することも可能です (スクリプトのアイデアは Alan Pope):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
function proxy_on() {&lt;br /&gt;
    export no_proxy=&amp;quot;localhost,127.0.0.1,localaddress,.localdomain.com&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    if (( $# &amp;gt; 0 )); then&lt;br /&gt;
        valid=$(echo $@ | sed -n &#039;s/\([0-9]\{1,3\}.\)\{4\}:\([0-9]\+\)/&amp;amp;/p&#039;)&lt;br /&gt;
        if [[ $valid != $@ ]]; then&lt;br /&gt;
            &amp;gt;&amp;amp;2 echo &amp;quot;Invalid address&amp;quot;&lt;br /&gt;
            return 1&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        export http_proxy=&amp;quot;http://$1/&amp;quot; \&lt;br /&gt;
               https_proxy=$http_proxy \&lt;br /&gt;
               ftp_proxy=$http_proxy \&lt;br /&gt;
               rsync_proxy=$http_proxy&lt;br /&gt;
        echo &amp;quot;Proxy environment variable set.&amp;quot;&lt;br /&gt;
        return 0&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    echo -n &amp;quot;username: &amp;quot;; read username&lt;br /&gt;
    if [[ $username != &amp;quot;&amp;quot; ]]; then&lt;br /&gt;
        echo -n &amp;quot;password: &amp;quot;&lt;br /&gt;
        read -es password&lt;br /&gt;
        local pre=&amp;quot;$username:$password@&amp;quot;&lt;br /&gt;
    fi&lt;br /&gt;
&lt;br /&gt;
    echo -n &amp;quot;server: &amp;quot;; read server&lt;br /&gt;
    echo -n &amp;quot;port: &amp;quot;; read port&lt;br /&gt;
    export http_proxy=&amp;quot;http://$pre$server:$port/&amp;quot; \&lt;br /&gt;
           https_proxy=$http_proxy \&lt;br /&gt;
           ftp_proxy=$http_proxy \&lt;br /&gt;
           rsync_proxy=$http_proxy \&lt;br /&gt;
           HTTP_PROXY=$http_proxy \&lt;br /&gt;
           HTTPS_PROXY=$http_proxy \&lt;br /&gt;
           FTP_PROXY=$http_proxy \ &lt;br /&gt;
           RSYNC_PROXY=$http_proxy&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function proxy_off(){&lt;br /&gt;
    unset http_proxy https_proxy ftp_proxy rsync_proxy \&lt;br /&gt;
          HTTP_PROXY HTTPS_PROXY FTP_PROXY RSYNC_PROXY&lt;br /&gt;
    echo -e &amp;quot;Proxy environment variable removed.&amp;quot;&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ユーザー名やパスワードが必要ない場合は削除してください。&lt;br /&gt;
&lt;br /&gt;
別の手段として、以下のスクリプトを使うこともできます。&amp;quot;YourUserName&amp;quot;, &amp;quot;ProxyServerAddress:Port&amp;quot;, &amp;quot;LocalAddress&amp;quot;, &amp;quot;LocalDomain&amp;quot; の文字列を置き換えてから、{{ic|~/.bashrc}} を編集して関数を含めて下さい。新しい bash ウィンドウでは自動的に新しい関数が使えます。既存の bash ウィンドウでは、{{ic|source ~/.bashrc}} と入力して下さい。{{ic|.bashrc}} に全てを記述するのではなく、{{ic|functions}} などの別のファイルに関数の定義を記述して {{ic|.bashrc}} に {{ic|source functions}} を追加することもできます。また、&amp;quot;myProxy&amp;quot; はもっと短く書くことができます。&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
assignProxy(){&lt;br /&gt;
  PROXY_ENV=&amp;quot;http_proxy ftp_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY FTP_PROXY ALL_PROXY&amp;quot;&lt;br /&gt;
  for envar in $PROXY_ENV&lt;br /&gt;
  do&lt;br /&gt;
     export $envar=$1&lt;br /&gt;
  done&lt;br /&gt;
  for envar in &amp;quot;no_proxy NO_PROXY&amp;quot;&lt;br /&gt;
  do&lt;br /&gt;
     export $envar=$2&lt;br /&gt;
  done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
clrProxy(){&lt;br /&gt;
   PROXY_ENV=&amp;quot;http_proxy ftp_proxy https_proxy all_proxy HTTP_PROXY HTTPS_PROXY FTP_PROXY ALL_PROXY&amp;quot;&lt;br /&gt;
   for envar in $PROXY_ENV&lt;br /&gt;
   do&lt;br /&gt;
      unset $envar&lt;br /&gt;
   done&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
myProxy(){&lt;br /&gt;
  user=YourUserName&lt;br /&gt;
  read -p &amp;quot;Password: &amp;quot; -s pass &amp;amp;&amp;amp;  echo -e &amp;quot; &amp;quot;&lt;br /&gt;
  proxy_value=&amp;quot;http://$user:$pass@ProxyServerAddress:Port&amp;quot;&lt;br /&gt;
  no_proxy_value=&amp;quot;localhost,127.0.0.1,LocalAddress,LocalDomain.com&amp;quot;&lt;br /&gt;
  assignProxy $proxy_value $no_proxy_value&lt;br /&gt;
}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===sudo でもプロキシを使う===&lt;br /&gt;
&lt;br /&gt;
プロキシ環境変数を (手動コマンドや .bashrc で) 単一のユーザーでのみ設定した場合、[[sudo]] でコマンドを実行するとプロキシ設定は失われます (もしくは [[yaourt]] などのプログラムで sudo を内部的に使用した場合)。&lt;br /&gt;
&lt;br /&gt;
sudo の設定ファイル (visudo で編集できます) に次の行を追加することでプロキシ設定を通すことができます:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Defaults env_keep += &amp;quot;http_proxy https_proxy ftp_proxy&amp;quot;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
rsync_proxy や no_proxy など他の環境変数を追加することも可能です。&lt;br /&gt;
&lt;br /&gt;
===ネットワークマネージャによる自動化===&lt;br /&gt;
*[[NetworkManager]] は環境変数を変更することができません。&lt;br /&gt;
*[[netctl]] は環境変数を設定することはできますが、netctl の子供ではない他のアプリケーションから変数を参照することはできません。&lt;br /&gt;
&lt;br /&gt;
==libproxy について==&lt;br /&gt;
[https://code.google.com/p/libproxy/ libproxy] (extra リポジトリに入っています) はネットワークリソースにアクセスする全てのアプリケーションによって使われることを目指している抽象レイヤーです。開発中ですが、広く採用されたら、GNU/Linux における統合的な自動プロキシ管理が実現するでしょう。&lt;br /&gt;
&lt;br /&gt;
libproxy の役割は様々なソースからプロキシ設定を読み込んで、ライブラリを使用するアプリケーションから使えるようにすることです。libproxy の面白いところは [[wikipedia:ja:Web Proxy Auto-Discovery Protocol|Web Proxy Autodiscovery Protocol]] の実装と [[wikipedia:ja:プロキシ自動設定|Proxy Auto-Config]] の実装を提供しているところです。&lt;br /&gt;
&lt;br /&gt;
{{Ic|/usr/bin/proxy}} バイナリには引数として URL を指定することができ、ネットワークリソースを取得するのに使えるプロキシを返します。&lt;br /&gt;
{{Note|1={{ic|1={ pkg-config &#039;mozjs185 &amp;gt;= 1.8.5&#039;; } }} が失敗するためバージョン 0.4.11 は {{ic|1=http_proxy=&#039;wpad:&#039;}} をサポートしていません。}}&lt;br /&gt;
&lt;br /&gt;
2009年4月6日現在、libproxy は libsoup に依存されています。そのため {{Pkg|midori}} ブラウザによって間接的に利用されます。&lt;br /&gt;
&lt;br /&gt;
== ウェブプロキシ ==&lt;br /&gt;
* [[Squid]] はとても人気のあるキャッシュ/最適化プロキシです。&lt;br /&gt;
* [[Privoxy]] は匿名化とアドブロックを行うプロキシです。&lt;br /&gt;
* シンプルなプロキシが欲しい場合、ssh とポートフォワーディングを使うことができます。&lt;br /&gt;
&lt;br /&gt;
=== SSH によるシンプルなプロキシ ===&lt;br /&gt;
以下のようにアカウント (USER) があるサーバー (HOST) に接続してください:&lt;br /&gt;
 ssh -D PORT USER@HOST&lt;br /&gt;
PORT については、IANA で登録されてないポート番号を選択してください。ローカル PORT のトラフィックを指定し、リモート HOST に転送されます。ssh は [[Wikipedia:ja:SOCKS|SOCKS]] サーバーのように動作します。SOCKS プロキシサーバーをサポートしているソフトウェアを設定することで localhost の PORT に接続することができます。&lt;br /&gt;
&lt;br /&gt;
==SOCKS プロキシを使う==&lt;br /&gt;
2つのケースが考えられます:&lt;br /&gt;
*使いたいアプリケーションが [[Wikipedia:ja:SOCKS#SOCKS 5プロトコル|SOCKS5]] プロキシに対応している場合 (例えば [[Firefox]])、プロキシを使うようにアプリケーションを設定するだけです。&lt;br /&gt;
*使いたいアプリケーションが SOCKS プロキシに対応していない場合、{{Pkg|tsocks}} や {{Pkg|proxychains-ng}} を使うことができます。&lt;br /&gt;
&lt;br /&gt;
Firefox では、設定 &amp;gt; ネットワーク &amp;gt; 接続設定から SOCKS プロキシを使うことができます。&amp;quot;手動でプロキシを設定する&amp;quot; を選択して、SOCKS ホストを設定してください (HTTP プロキシや SSL プロキシなどの他のフィールドは空のままにしておいてください)。例えば、SOCKS5 プロキシが localhost のポート 8080 で動作している場合、SOCKS ホストフィールドには &amp;quot;127.0.0.1&amp;quot; と書いて、ポートには &amp;quot;8080&amp;quot; と書きます。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proxychains-ng&#039;&#039; を使う場合、設定は {{ic|/etc/proxychains.conf}} で行います。最後の行をアンコメントする必要があり (デフォルトでは [[Tor]] を使うように設定されています)、SOCKS プロキシのパラメータで置き換えてください。例えば、上記と同じ SOCKS5 プロキシを使う場合、最後の行を以下のように置き換えます:&lt;br /&gt;
 socks5 127.0.0.1 8080&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;proxychains-ng&#039;&#039; は次のコマンドで起動できます:&lt;br /&gt;
 proxychains &amp;lt;program&amp;gt;&lt;br /&gt;
&amp;lt;program&amp;gt; はシステムにインストールされているどのプログラムにも置き換えられます (例: [[xterm]], gnome-terminal など)。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;tsocks&#039;&#039; を使う場合、設定は {{ic|/etc/tsocks.conf}} に記述します。オプションについては {{man|5|tsocks.conf}} を見て下さい。最小限の設定ファイルは以下のようになります:&lt;br /&gt;
{{hc|/etc/tsocks.conf|2=&lt;br /&gt;
server = 127.0.0.1&lt;br /&gt;
server_port = 8080&lt;br /&gt;
server_type = 5}}&lt;br /&gt;
&lt;br /&gt;
=== curl と pacman ===&lt;br /&gt;
{{ic|all_proxy}} 環境変数を設定することで curl と pacman で socks5 プロキシを使用できます:&lt;br /&gt;
{{bc|1=$ export all_proxy=&amp;quot;socks5://your.proxy:1080&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==GNOME3 のプロキシ設定==&lt;br /&gt;
[[Chromium]] など、プログラムによっては gnome で保存された設定を優先的に使うことがあります。この設定は gnome-control-center フロントエンドや gsettings で変更することが可能です。&lt;br /&gt;
&lt;br /&gt;
 gsettings set org.gnome.system.proxy mode &#039;manual&#039; &lt;br /&gt;
 gsettings set org.gnome.system.proxy.http host &#039;proxy.localdomain.com&#039;&lt;br /&gt;
 gsettings set org.gnome.system.proxy.http port 8080&lt;br /&gt;
 gsettings set org.gnome.system.proxy.ftp host &#039;proxy.localdomain.com&#039;&lt;br /&gt;
 gsettings set org.gnome.system.proxy.ftp port 8080&lt;br /&gt;
 gsettings set org.gnome.system.proxy.https host &#039;proxy.localdomain.com&#039;&lt;br /&gt;
 gsettings set org.gnome.system.proxy.https port 8080&lt;br /&gt;
 gsettings set org.gnome.system.proxy ignore-hosts &amp;quot;[&#039;localhost&#039;, &#039;127.0.0.0/8&#039;, &#039;10.0.0.0/8&#039;, &#039;192.168.0.0/16&#039;, &#039;172.16.0.0/12&#039; , &#039;*.localdomain.com&#039; ]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[AUR]] の {{AUR|proxydriver}} パッケージを使用することで、[[NetworkManager#プロクシ設定|NetworkManager]] が特定のネットワークに接続した際に自動的に実行するように設定することもできます。&lt;br /&gt;
&lt;br /&gt;
== Microsoft NTLM プロキシ ==&lt;br /&gt;
&lt;br /&gt;
Windows ネットワークでは、NT LAN Manager (NTLM) がユーザーの認証や整合性、機密性を実現する Microsoft セキュリティプロトコルのサービスを提供します。&lt;br /&gt;
&lt;br /&gt;
[[AUR]] の {{AUR|cntlm}} はアプリケーションと NTLM プロキシの間に入って、NTLM 認証をオンザフライで追加します。複数の &amp;quot;parent&amp;quot; プロキシを指定することができ Cntlm はどれか一つが動作するまで試行します。認証済みの接続は全てキャッシュされ効率を高めるために再利用されます。&lt;br /&gt;
 &lt;br /&gt;
 (NTLM PROXY IP:PORT + CREDENTIALS + OTHER INFO) -----&amp;gt; &#039;&#039;&#039;(127.0.0.1:PORT)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== 設定 ===&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/cntlm.conf}} の設定を必要に応じて変更してください。パスワードは絶対に変更してください。それから次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cntlm -H&lt;br /&gt;
&lt;br /&gt;
このコマンドによってプロキシのホスト名、ユーザー名、パスワードそれぞれの暗号化されたパスワードハッシュが生成されます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|暗号化されたハッシュではなく平文のパスワードを使っている場合、{{Pkg|ettercap}} で簡単にパスワードを盗み取ることができてしまいます。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/cntlm.conf}} をもう一度編集して生成された3つのハッシュを全て記述して、{{ic|cntlm.service}} を[[systemd#ユニットを使う|有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
設定をテストするには、次を実行:&lt;br /&gt;
&lt;br /&gt;
 $ cntlm -v&lt;br /&gt;
&lt;br /&gt;
=== 使用方法 ===&lt;br /&gt;
&lt;br /&gt;
プロキシには次のアドレスを使って下さい:&lt;br /&gt;
&lt;br /&gt;
 127.0.0.1:PORT&lt;br /&gt;
&lt;br /&gt;
もしくは:&lt;br /&gt;
&lt;br /&gt;
 localhost:PORT&lt;br /&gt;
&lt;br /&gt;
{{ic|PORT}} は {{ic|/etc/cntlm.conf}} の {{ic|Listen}} パラメータに合わせてください。デフォルトは {{ic|3128}} です。&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29070</id>
		<title>トランスポート層セキュリティ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29070"/>
		<updated>2023-01-02T02:54:05Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* CA 証明書のデフォルトセットをロードするためのメカニズムの概要 */  ノートを英語版から追記&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Transport Layer Security]]&lt;br /&gt;
[[en:Transport Layer Security]]&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security|Wikipedia]] より:&lt;br /&gt;
:&#039;&#039;&#039;Transport Layer Security&#039;&#039;&#039; (&#039;&#039;&#039;TLS&#039;&#039;&#039;) およびその前身の [[RFC:7568|Secure Sockets Layer]] (&#039;&#039;&#039;SSL&#039;&#039;&#039;) はコンピュータネットワークにおいてセキュリティを要求される通信を行うためのプロトコルである。ウェブブラウザやメール、インスタントメッセージ、voice over IP (VoIP) などのアプリケーションで幅広く使われているプロトコルとなっている。ウェブサイトは TLS によってサーバーとウェブブラウザ間の通信を暗号化できる。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
&lt;br /&gt;
TLS の実装は 5 種類あり、[[公式リポジトリ]]で公開されています。OpenSSL は base メタパッケージの間接的な依存関係であるため、すでにシステムにインストールされているはずです({{Pkg|base}} &amp;gt; {{Pkg|coreutils}} &amp;gt; {{Pkg|openssl}})。GnuTLS は多くのパッケージで必要とされているため、すでにシステムにインストールされている可能性があります。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[OpenSSL]]|堅牢・商業品質・フル機能の TLS と SSL プロトコルのツールキット。汎用の暗号ライブラリでもあります。|https://www.openssl.org/|{{Pkg|openssl}}}}&lt;br /&gt;
* {{App|[[GnuTLS]]|TLS, SSL, DTLS プロトコルのフリーソフトウェア実装。X.509, PKCS #12, OpenPGP などの API を提供します。|https://www.gnutls.org/|{{Pkg|gnutls}}}}&lt;br /&gt;
* {{App|[[Network Security Services]] (NSS)|TLS/SSL と [[Wikipedia:S/MIME|S/MIME]] をサポートする暗号ライブラリの実装。TLS アクセラレーションとスマートカードもサポート。|https://firefox-source-docs.mozilla.org/security/nss/index.html|{{Pkg|nss}}}}&lt;br /&gt;
* {{App|[[mbed TLS]]|ポータブルな SSL/TLS 実装。別名 PolarSSL。|https://tls.mbed.org/|{{Pkg|mbedtls}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:LibreSSL|LibreSSL]]|OpenBSD プロジェクトによって2014年に OpenSSL からフォークされた TLS/crypto スタック。コードベースを近代的に改修してセキュリティを向上させることを目標としています。|https://www.libressl.org/|{{Pkg|libressl}}}}&lt;br /&gt;
&lt;br /&gt;
== 認証局 ==&lt;br /&gt;
&lt;br /&gt;
TLS では、一連の[[Wikipedia:Certificate authority|認証局]]（CA）の 1 つが、サーバーからの[[Wikipedia:public key certificate|公開鍵証明書]]の信頼性をチェックし署名します。TLS でサーバーに接続するクライアントは、CA の電子署名を通じて、その証明書の信頼性を確認することができます。電子署名を確認するために、クライアントは、別の経路から取得し自己署名証明書として保存された CA の公開鍵を持っている必要があります。Arch Linux では CA 証明書のデフォルトセットは {{Pkg|ca-certificates}} パッケージで提供されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|現在、Arch Linux は [[MozillaWiki:CA|Mozilla CA Certificate Store]] からの CA 証明書をデフォルトセットとして使用しています。}}&lt;br /&gt;
&lt;br /&gt;
Arch Linux は CA 証明書を管理するために、システム全体の集中化されたインターフェースを提供します。このインターフェースは {{Pkg|libp11-kit}} パッケージの {{ic|/usr/lib/pkcs11/p11-kit-trust.so}} というライブラリで、証明書のための [[Wikipedia:PKCS 11|PKCS #11]] API を提供し、{{ic|/usr/share/ca-certificates/trust-source/}} (&amp;quot;Default Trust&amp;quot; トークン) と {{ic|/etc/ca-certificates/trust-source/}} (&amp;quot;System Trust&amp;quot; トークン) に格納されています。&lt;br /&gt;
&lt;br /&gt;
コマンドラインからインターフェースを使用するために、{{Pkg|p11-kit}} パッケージは {{man|1|trust}} ユーティリティを提供します。&lt;br /&gt;
&lt;br /&gt;
CA 証明書の管理に独自の論理を使用しており [[Wikipedia:PKCS 11|PKCS #11]] に移植されていないライブラリのために、{{Pkg|ca-certificates-utils}} パッケージは {{man|8|update-ca-trust}} スクリプトを提供し、集中管理インタフェースを通して得られた CA 証明書を {{ic|/etc/ca-certificates/extracted/}} と {{ic|/etc/ssl/certs/}} にコピーします。&lt;br /&gt;
&lt;br /&gt;
=== CA 証明書のデフォルトセットをロードするためのメカニズムの概要 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 実装 !! メカニズム !! Arch Linux 設定&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供する{{man|3|SSL_CTX_set_default_verify_paths}}。&lt;br /&gt;
| デフォルトファイルは {{ic|/etc/ssl/cert.pem}} です。デフォルトディレクトリは {{ic|/etc/ssl/certs/}} です。&lt;br /&gt;
|-&lt;br /&gt;
| [[GnuTLS]]&lt;br /&gt;
| ハードコードされたディレクトリ、ファイル、または[https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS 11|PKCS #11]] モジュールから証明書をロードする API 関数を提供する。最後のケースでは、ハードコードされた [[RFC:7512|URL]] によって、任意の信頼できる証明書、または {{ic|trust-policy: yes}} とマークされたモジュール上の信頼できる CA 証明書、オプションで追加のフィルタリング基準を持つ証明書をロードすることができます[https://www.gnutls.org/manual/gnutls.html#Installing-for-a-software-distribution], [https://www.gnutls.org/manual/gnutls.html#Certificate-credentials]。&lt;br /&gt;
| [https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS11|PKCS #11]] モジュールから、{{ic|trust-policy: yes}} でマークされた、信頼できるすべての CA 証明書をロードします。&lt;br /&gt;
|-&lt;br /&gt;
| [[Network Security Services]]&lt;br /&gt;
| 専用の API で管理されている [[Wikipedia:PKCS11|PKCS#11]] モジュールの動的に構成されたリストから証明書を自動的にロードします。構成は、ユーザーが指定した任意のディレクトリに保存できます。 [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/PKCS11/FAQ], {{man|1|modutil}}.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[mbed TLS]]&lt;br /&gt;
| ユーザーは証明書をロードする必要があります。 [https://tls.mbed.org/kb/how-to/mbedtls-tutorial].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:LibreSSL|LibreSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供します。 {{man|3|libressl-SSL_CTX_load_verify_locations}}&lt;br /&gt;
|デフォルトのファイルは {{ic|/etc/libressl/cert.pem}} で、デフォルトのディレクトリは {{ic |/etc/libressl/certs/}} です。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note| 現在、[[Wikipedia:LibreSSL|LibreSSL]] は独自の CA 証明書のリストを使っています。詳細は {{Bug|69298}} を参照して下さい。}}&lt;br /&gt;
&lt;br /&gt;
== 信頼管理 ==&lt;br /&gt;
&lt;br /&gt;
認証局のブラックリストを管理する方法は[[セキュリティ#SSL 証明書の管理]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== システム全体で認証局を信頼 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下のコマンドを実行すると誰でも秘密鍵にアクセスして TLS 通信を傍受できるようになります。}}&lt;br /&gt;
&lt;br /&gt;
 # trust anchor &#039;&#039;certificate&#039;&#039;.crt&lt;br /&gt;
&lt;br /&gt;
上記は [[プロキシ設定#HTTPS MITM プロキシ|HTTPS MITM プロキシ]]で通信を傍受するのに必要です。&lt;br /&gt;
&lt;br /&gt;
== 証明書を取得 ==&lt;br /&gt;
&lt;br /&gt;
最初に RSA 秘密鍵を生成してください。鍵を生成する前に、[[umask]] でファイルモード作成マスクを制限的に (例えば {{ic|077}}) 設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|openssl}} パッケージは他のディストリビューションと違って {{ic|/etc/ssl/private}} ディレクトリを保護しません。{{Bug|43059}} を参照。}}&lt;br /&gt;
&lt;br /&gt;
証明書は [[Wikipedia:Certificate signing request|証明書署名要求]] (CSR) を使って認証局から取得するか、あるいは [[Wikipedia:Self-signed certificate|自己署名]] することができます。自己署名証明書は簡単に生成できますが、クライアントはデフォルトでは拒否するため、自己署名証明書を信頼するようにクライアントを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
実際の生成コマンドは以下の実装の記事を見てください:&lt;br /&gt;
&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [[GnuTLS#使用方法]]&lt;br /&gt;
* [[Network Security Services]]&lt;br /&gt;
* [[mbed TLS#使用方法]]&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#ACME クライアント|ACME]] を使うことで [https://letsencrypt.org/ Let&#039;s Encrypt] 認証局からフリーの証明書を取得できます。}}&lt;br /&gt;
&lt;br /&gt;
== サーバーサイドの推奨事項 ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security#TLS/SSLの既知の脆弱性|TLS に対する攻撃]] は多数存在するため、ベストプラクティスに注意してください:&lt;br /&gt;
&lt;br /&gt;
* [https://disablessl3.com/ SSLv3 を無効化] することで [[Wikipedia:POODLE|POODLE]] 攻撃を防ぐ。&lt;br /&gt;
* [https://weakdh.org/sysadmin.html weakdh.org の TLS の Diffie-Hellman デプロイガイド]&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Server_Side_TLS Mozilla による Server Side TLS の記事]&lt;br /&gt;
* [https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices SSL Labs の SSL と TLS デプロイベストプラクティス]&lt;br /&gt;
* [https://cipherli.st/ Cipherli.st]&lt;br /&gt;
&lt;br /&gt;
=== TLS のチェック ===&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするプログラム:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|testssl.sh}}&lt;br /&gt;
* [[Nmap]]&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [https://github.com/mozilla/cipherscan cipherscan]&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするウェブサイト:&lt;br /&gt;
&lt;br /&gt;
* https://dev.ssllabs.com/ssltest/ (HTTPS のみ)&lt;br /&gt;
* https://www.checktls.com/ (メールのみ)&lt;br /&gt;
* https://www.htbridge.com/ssl/ (任意ポート)&lt;br /&gt;
* https://tls.imirhil.fr/tls (任意ポート)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== ACME クライアント ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Automated Certificate Management Environment|Automated Certificate Management Environment]] (ACME) プロトコルは [[Let&#039;s Encrypt]] などの [[Wikipedia:ja:認証局|認証局]] から X.509 証明書をリクエストできるプロトコルです。&lt;br /&gt;
&lt;br /&gt;
[https://letsencrypt.org/docs/client-options/ ACME クライアントの一覧] も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|acme-client|C で書かれたセキュアな Let&#039;s Encrypt クライアント。|https://kristaps.bsd.lv/acme-client/|{{AUR|acme-client}}{{Broken package link|パッケージが存在しません}}}}&lt;br /&gt;
* {{App|acme-tiny|Let&#039;s Encrypt から TLS 証明書を作成・更新するための200行の Python スクリプト。|https://github.com/diafygi/acme-tiny|{{Pkg|acme-tiny}}}}&lt;br /&gt;
* {{App|acme.sh|Unix シェルスクリプトだけで作られた ACME クライアント。|https://github.com/Neilpang/acme.sh|{{AUR|acme.sh-git}}}}&lt;br /&gt;
* {{App|acmetool|Go で書かれた使いやすい ACME CLI。|https://github.com/hlandau/acme|{{AUR|acmetool}}, {{AUR|acmetool-git}}}}&lt;br /&gt;
* {{App|[[Certbot]]|Python で書かれた、Let&#039;s Encrypt によって推奨されている ACME クライアント。|https://github.com/certbot/certbot|{{Pkg|certbot}}}}&lt;br /&gt;
* {{App|dehydrated|Bash で書かれた ACME クライアント。|https://github.com/lukas2511/dehydrated|{{Pkg|dehydrated}}, {{AUR|dehydrated-git}}}}&lt;br /&gt;
* {{App|getssl|Bash で書かれた ACME クライアント。|https://github.com/srvrco/getssl|{{AUR|getssl}}, {{AUR|getssl-git}}}}&lt;br /&gt;
* {{App|lego|Go で書かれた Lets Encrypt クライアントと ACME ライブラリ。|https://github.com/xenolf/lego|{{AUR|lego-git}}}}&lt;br /&gt;
* {{App|letsencrypt-cli|もうひとつの Letsencrypt (ACME) クライアント。Ruby を使用。|https://github.com/zealot128/ruby-acme-cli|{{AUR|letsencrypt-cli}}}}&lt;br /&gt;
* {{App|manuale|完全手動の Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/veeti/manuale|{{AUR|manuale}}}}&lt;br /&gt;
* {{App|ruby-acme-client|letsencrypt の ACME プロトコルの Ruby クライアント。|https://github.com/unixcharles/acme-client|{{AUR|ruby-acme-client}}}}&lt;br /&gt;
* {{App|simp_le|シンプルな Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/zenhack/simp_le|{{AUR|simp_le-git}}}}&lt;br /&gt;
&lt;br /&gt;
オンラインのインタラクティブな、https://gethttpsforfree.com クライアントでは、ウェブページからシェルコマンドラインにコピーペーストして、10 回ほどやり直す必要があります。その間に推奨されるコマンドを実行します。また、おそらくそのページで手動更新をしなければならないでしょう。あるいは、他の方法で更新を行う必要があります。一方、あなたは、それが成功したかどうか、すべてのステップで見ることができます。証明書を要求するためだけにソフトウェアをインストールする必要はありません。そして、秘密鍵やサーバー・ソフトウェアを、完全に意識的にしか触れないようにすることができるようになります。&lt;br /&gt;
&lt;br /&gt;
=== OCSP ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Online Certificate Status Protocol|Online Certificate Status Protocol]] (OCSP) は [[Firefox]] によってサポートされています。[[Chromium]] は独自のメカニズムを備えています [http://dev.chromium.org/Home/chromium-security/crlsets]。&lt;br /&gt;
&lt;br /&gt;
GnuTLS の {{man|1|ocsptool}} や OpenSSL の {{man|1ssl|ocsp}} も参照。&lt;br /&gt;
&lt;br /&gt;
=== HSTS ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:HTTP Strict Transport Security|HTTP Strict Transport Security]] (HSTS) メカニズムは Firefox, Chromium, [[wget]] ({{ic|~/.wget-hsts}}) によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
=== DNS CAA ===&lt;br /&gt;
&lt;br /&gt;
See [[Wikipedia:DNS Certification Authority Authorization]].&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Certificates Gentoo:Certificates]&lt;br /&gt;
* [https://www.happyassassin.net/2015/01/12/a-note-about-ssltls-trusted-certificate-stores-and-platforms/ A note about SSL/TLS trusted certificate stores, and platforms (OpenSSL and GnuTLS)]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29069</id>
		<title>トランスポート層セキュリティ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29069"/>
		<updated>2023-01-02T02:51:16Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 認証局 */  日本語訳の改善&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Transport Layer Security]]&lt;br /&gt;
[[en:Transport Layer Security]]&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security|Wikipedia]] より:&lt;br /&gt;
:&#039;&#039;&#039;Transport Layer Security&#039;&#039;&#039; (&#039;&#039;&#039;TLS&#039;&#039;&#039;) およびその前身の [[RFC:7568|Secure Sockets Layer]] (&#039;&#039;&#039;SSL&#039;&#039;&#039;) はコンピュータネットワークにおいてセキュリティを要求される通信を行うためのプロトコルである。ウェブブラウザやメール、インスタントメッセージ、voice over IP (VoIP) などのアプリケーションで幅広く使われているプロトコルとなっている。ウェブサイトは TLS によってサーバーとウェブブラウザ間の通信を暗号化できる。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
&lt;br /&gt;
TLS の実装は 5 種類あり、[[公式リポジトリ]]で公開されています。OpenSSL は base メタパッケージの間接的な依存関係であるため、すでにシステムにインストールされているはずです({{Pkg|base}} &amp;gt; {{Pkg|coreutils}} &amp;gt; {{Pkg|openssl}})。GnuTLS は多くのパッケージで必要とされているため、すでにシステムにインストールされている可能性があります。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[OpenSSL]]|堅牢・商業品質・フル機能の TLS と SSL プロトコルのツールキット。汎用の暗号ライブラリでもあります。|https://www.openssl.org/|{{Pkg|openssl}}}}&lt;br /&gt;
* {{App|[[GnuTLS]]|TLS, SSL, DTLS プロトコルのフリーソフトウェア実装。X.509, PKCS #12, OpenPGP などの API を提供します。|https://www.gnutls.org/|{{Pkg|gnutls}}}}&lt;br /&gt;
* {{App|[[Network Security Services]] (NSS)|TLS/SSL と [[Wikipedia:S/MIME|S/MIME]] をサポートする暗号ライブラリの実装。TLS アクセラレーションとスマートカードもサポート。|https://firefox-source-docs.mozilla.org/security/nss/index.html|{{Pkg|nss}}}}&lt;br /&gt;
* {{App|[[mbed TLS]]|ポータブルな SSL/TLS 実装。別名 PolarSSL。|https://tls.mbed.org/|{{Pkg|mbedtls}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:LibreSSL|LibreSSL]]|OpenBSD プロジェクトによって2014年に OpenSSL からフォークされた TLS/crypto スタック。コードベースを近代的に改修してセキュリティを向上させることを目標としています。|https://www.libressl.org/|{{Pkg|libressl}}}}&lt;br /&gt;
&lt;br /&gt;
== 認証局 ==&lt;br /&gt;
&lt;br /&gt;
TLS では、一連の[[Wikipedia:Certificate authority|認証局]]（CA）の 1 つが、サーバーからの[[Wikipedia:public key certificate|公開鍵証明書]]の信頼性をチェックし署名します。TLS でサーバーに接続するクライアントは、CA の電子署名を通じて、その証明書の信頼性を確認することができます。電子署名を確認するために、クライアントは、別の経路から取得し自己署名証明書として保存された CA の公開鍵を持っている必要があります。Arch Linux では CA 証明書のデフォルトセットは {{Pkg|ca-certificates}} パッケージで提供されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|現在、Arch Linux は [[MozillaWiki:CA|Mozilla CA Certificate Store]] からの CA 証明書をデフォルトセットとして使用しています。}}&lt;br /&gt;
&lt;br /&gt;
Arch Linux は CA 証明書を管理するために、システム全体の集中化されたインターフェースを提供します。このインターフェースは {{Pkg|libp11-kit}} パッケージの {{ic|/usr/lib/pkcs11/p11-kit-trust.so}} というライブラリで、証明書のための [[Wikipedia:PKCS 11|PKCS #11]] API を提供し、{{ic|/usr/share/ca-certificates/trust-source/}} (&amp;quot;Default Trust&amp;quot; トークン) と {{ic|/etc/ca-certificates/trust-source/}} (&amp;quot;System Trust&amp;quot; トークン) に格納されています。&lt;br /&gt;
&lt;br /&gt;
コマンドラインからインターフェースを使用するために、{{Pkg|p11-kit}} パッケージは {{man|1|trust}} ユーティリティを提供します。&lt;br /&gt;
&lt;br /&gt;
CA 証明書の管理に独自の論理を使用しており [[Wikipedia:PKCS 11|PKCS #11]] に移植されていないライブラリのために、{{Pkg|ca-certificates-utils}} パッケージは {{man|8|update-ca-trust}} スクリプトを提供し、集中管理インタフェースを通して得られた CA 証明書を {{ic|/etc/ca-certificates/extracted/}} と {{ic|/etc/ssl/certs/}} にコピーします。&lt;br /&gt;
&lt;br /&gt;
=== CA 証明書のデフォルトセットをロードするためのメカニズムの概要 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 実装 !! メカニズム !! Arch Linux 設定&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供する{{man|3|SSL_CTX_set_default_verify_paths}}。&lt;br /&gt;
| デフォルトファイルは {{ic|/etc/ssl/cert.pem}} です。デフォルトディレクトリは {{ic|/etc/ssl/certs/}} です。&lt;br /&gt;
|-&lt;br /&gt;
| [[GnuTLS]]&lt;br /&gt;
| ハードコードされたディレクトリ、ファイル、または[https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS 11|PKCS #11]] モジュールから証明書をロードする API 関数を提供する。最後のケースでは、ハードコードされた [[RFC:7512|URL]] によって、任意の信頼できる証明書、または {{ic|trust-policy: yes}} とマークされたモジュール上の信頼できる CA 証明書、オプションで追加のフィルタリング基準を持つ証明書をロードすることができます[https://www.gnutls.org/manual/gnutls.html#Installing-for-a-software-distribution], [https://www.gnutls.org/manual/gnutls.html#Certificate-credentials]。&lt;br /&gt;
| [https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS11|PKCS #11]] モジュールから、{{ic|trust-policy: yes}} でマークされた、信頼できるすべての CA 証明書をロードします。&lt;br /&gt;
|-&lt;br /&gt;
| [[Network Security Services]]&lt;br /&gt;
| 専用の API で管理されている [[Wikipedia:PKCS11|PKCS#11]] モジュールの動的に構成されたリストから証明書を自動的にロードします。構成は、ユーザーが指定した任意のディレクトリに保存できます。 [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/PKCS11/FAQ], {{man|1|modutil}}.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[mbed TLS]]&lt;br /&gt;
| ユーザーは証明書をロードする必要があります。 [https://tls.mbed.org/kb/how-to/mbedtls-tutorial].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:LibreSSL|LibreSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供します。 {{man|3|libressl-SSL_CTX_load_verify_locations}}&lt;br /&gt;
|デフォルトのファイルは {{ic|/etc/libressl/cert.pem}} で、デフォルトのディレクトリは {{ic |/etc/libressl/certs/}} です。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 信頼管理 ==&lt;br /&gt;
&lt;br /&gt;
認証局のブラックリストを管理する方法は[[セキュリティ#SSL 証明書の管理]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== システム全体で認証局を信頼 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下のコマンドを実行すると誰でも秘密鍵にアクセスして TLS 通信を傍受できるようになります。}}&lt;br /&gt;
&lt;br /&gt;
 # trust anchor &#039;&#039;certificate&#039;&#039;.crt&lt;br /&gt;
&lt;br /&gt;
上記は [[プロキシ設定#HTTPS MITM プロキシ|HTTPS MITM プロキシ]]で通信を傍受するのに必要です。&lt;br /&gt;
&lt;br /&gt;
== 証明書を取得 ==&lt;br /&gt;
&lt;br /&gt;
最初に RSA 秘密鍵を生成してください。鍵を生成する前に、[[umask]] でファイルモード作成マスクを制限的に (例えば {{ic|077}}) 設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|openssl}} パッケージは他のディストリビューションと違って {{ic|/etc/ssl/private}} ディレクトリを保護しません。{{Bug|43059}} を参照。}}&lt;br /&gt;
&lt;br /&gt;
証明書は [[Wikipedia:Certificate signing request|証明書署名要求]] (CSR) を使って認証局から取得するか、あるいは [[Wikipedia:Self-signed certificate|自己署名]] することができます。自己署名証明書は簡単に生成できますが、クライアントはデフォルトでは拒否するため、自己署名証明書を信頼するようにクライアントを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
実際の生成コマンドは以下の実装の記事を見てください:&lt;br /&gt;
&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [[GnuTLS#使用方法]]&lt;br /&gt;
* [[Network Security Services]]&lt;br /&gt;
* [[mbed TLS#使用方法]]&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#ACME クライアント|ACME]] を使うことで [https://letsencrypt.org/ Let&#039;s Encrypt] 認証局からフリーの証明書を取得できます。}}&lt;br /&gt;
&lt;br /&gt;
== サーバーサイドの推奨事項 ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security#TLS/SSLの既知の脆弱性|TLS に対する攻撃]] は多数存在するため、ベストプラクティスに注意してください:&lt;br /&gt;
&lt;br /&gt;
* [https://disablessl3.com/ SSLv3 を無効化] することで [[Wikipedia:POODLE|POODLE]] 攻撃を防ぐ。&lt;br /&gt;
* [https://weakdh.org/sysadmin.html weakdh.org の TLS の Diffie-Hellman デプロイガイド]&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Server_Side_TLS Mozilla による Server Side TLS の記事]&lt;br /&gt;
* [https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices SSL Labs の SSL と TLS デプロイベストプラクティス]&lt;br /&gt;
* [https://cipherli.st/ Cipherli.st]&lt;br /&gt;
&lt;br /&gt;
=== TLS のチェック ===&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするプログラム:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|testssl.sh}}&lt;br /&gt;
* [[Nmap]]&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [https://github.com/mozilla/cipherscan cipherscan]&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするウェブサイト:&lt;br /&gt;
&lt;br /&gt;
* https://dev.ssllabs.com/ssltest/ (HTTPS のみ)&lt;br /&gt;
* https://www.checktls.com/ (メールのみ)&lt;br /&gt;
* https://www.htbridge.com/ssl/ (任意ポート)&lt;br /&gt;
* https://tls.imirhil.fr/tls (任意ポート)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== ACME クライアント ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Automated Certificate Management Environment|Automated Certificate Management Environment]] (ACME) プロトコルは [[Let&#039;s Encrypt]] などの [[Wikipedia:ja:認証局|認証局]] から X.509 証明書をリクエストできるプロトコルです。&lt;br /&gt;
&lt;br /&gt;
[https://letsencrypt.org/docs/client-options/ ACME クライアントの一覧] も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|acme-client|C で書かれたセキュアな Let&#039;s Encrypt クライアント。|https://kristaps.bsd.lv/acme-client/|{{AUR|acme-client}}{{Broken package link|パッケージが存在しません}}}}&lt;br /&gt;
* {{App|acme-tiny|Let&#039;s Encrypt から TLS 証明書を作成・更新するための200行の Python スクリプト。|https://github.com/diafygi/acme-tiny|{{Pkg|acme-tiny}}}}&lt;br /&gt;
* {{App|acme.sh|Unix シェルスクリプトだけで作られた ACME クライアント。|https://github.com/Neilpang/acme.sh|{{AUR|acme.sh-git}}}}&lt;br /&gt;
* {{App|acmetool|Go で書かれた使いやすい ACME CLI。|https://github.com/hlandau/acme|{{AUR|acmetool}}, {{AUR|acmetool-git}}}}&lt;br /&gt;
* {{App|[[Certbot]]|Python で書かれた、Let&#039;s Encrypt によって推奨されている ACME クライアント。|https://github.com/certbot/certbot|{{Pkg|certbot}}}}&lt;br /&gt;
* {{App|dehydrated|Bash で書かれた ACME クライアント。|https://github.com/lukas2511/dehydrated|{{Pkg|dehydrated}}, {{AUR|dehydrated-git}}}}&lt;br /&gt;
* {{App|getssl|Bash で書かれた ACME クライアント。|https://github.com/srvrco/getssl|{{AUR|getssl}}, {{AUR|getssl-git}}}}&lt;br /&gt;
* {{App|lego|Go で書かれた Lets Encrypt クライアントと ACME ライブラリ。|https://github.com/xenolf/lego|{{AUR|lego-git}}}}&lt;br /&gt;
* {{App|letsencrypt-cli|もうひとつの Letsencrypt (ACME) クライアント。Ruby を使用。|https://github.com/zealot128/ruby-acme-cli|{{AUR|letsencrypt-cli}}}}&lt;br /&gt;
* {{App|manuale|完全手動の Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/veeti/manuale|{{AUR|manuale}}}}&lt;br /&gt;
* {{App|ruby-acme-client|letsencrypt の ACME プロトコルの Ruby クライアント。|https://github.com/unixcharles/acme-client|{{AUR|ruby-acme-client}}}}&lt;br /&gt;
* {{App|simp_le|シンプルな Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/zenhack/simp_le|{{AUR|simp_le-git}}}}&lt;br /&gt;
&lt;br /&gt;
オンラインのインタラクティブな、https://gethttpsforfree.com クライアントでは、ウェブページからシェルコマンドラインにコピーペーストして、10 回ほどやり直す必要があります。その間に推奨されるコマンドを実行します。また、おそらくそのページで手動更新をしなければならないでしょう。あるいは、他の方法で更新を行う必要があります。一方、あなたは、それが成功したかどうか、すべてのステップで見ることができます。証明書を要求するためだけにソフトウェアをインストールする必要はありません。そして、秘密鍵やサーバー・ソフトウェアを、完全に意識的にしか触れないようにすることができるようになります。&lt;br /&gt;
&lt;br /&gt;
=== OCSP ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Online Certificate Status Protocol|Online Certificate Status Protocol]] (OCSP) は [[Firefox]] によってサポートされています。[[Chromium]] は独自のメカニズムを備えています [http://dev.chromium.org/Home/chromium-security/crlsets]。&lt;br /&gt;
&lt;br /&gt;
GnuTLS の {{man|1|ocsptool}} や OpenSSL の {{man|1ssl|ocsp}} も参照。&lt;br /&gt;
&lt;br /&gt;
=== HSTS ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:HTTP Strict Transport Security|HTTP Strict Transport Security]] (HSTS) メカニズムは Firefox, Chromium, [[wget]] ({{ic|~/.wget-hsts}}) によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
=== DNS CAA ===&lt;br /&gt;
&lt;br /&gt;
See [[Wikipedia:DNS Certification Authority Authorization]].&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Certificates Gentoo:Certificates]&lt;br /&gt;
* [https://www.happyassassin.net/2015/01/12/a-note-about-ssltls-trusted-certificate-stores-and-platforms/ A note about SSL/TLS trusted certificate stores, and platforms (OpenSSL and GnuTLS)]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29068</id>
		<title>トランスポート層セキュリティ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29068"/>
		<updated>2023-01-02T02:43:58Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 実装 */  NSS のリンクが切れていたので修正。英語版のリンクでリダイレクトされた先に置き換えた。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Transport Layer Security]]&lt;br /&gt;
[[en:Transport Layer Security]]&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security|Wikipedia]] より:&lt;br /&gt;
:&#039;&#039;&#039;Transport Layer Security&#039;&#039;&#039; (&#039;&#039;&#039;TLS&#039;&#039;&#039;) およびその前身の [[RFC:7568|Secure Sockets Layer]] (&#039;&#039;&#039;SSL&#039;&#039;&#039;) はコンピュータネットワークにおいてセキュリティを要求される通信を行うためのプロトコルである。ウェブブラウザやメール、インスタントメッセージ、voice over IP (VoIP) などのアプリケーションで幅広く使われているプロトコルとなっている。ウェブサイトは TLS によってサーバーとウェブブラウザ間の通信を暗号化できる。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
&lt;br /&gt;
TLS の実装は 5 種類あり、[[公式リポジトリ]]で公開されています。OpenSSL は base メタパッケージの間接的な依存関係であるため、すでにシステムにインストールされているはずです({{Pkg|base}} &amp;gt; {{Pkg|coreutils}} &amp;gt; {{Pkg|openssl}})。GnuTLS は多くのパッケージで必要とされているため、すでにシステムにインストールされている可能性があります。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[OpenSSL]]|堅牢・商業品質・フル機能の TLS と SSL プロトコルのツールキット。汎用の暗号ライブラリでもあります。|https://www.openssl.org/|{{Pkg|openssl}}}}&lt;br /&gt;
* {{App|[[GnuTLS]]|TLS, SSL, DTLS プロトコルのフリーソフトウェア実装。X.509, PKCS #12, OpenPGP などの API を提供します。|https://www.gnutls.org/|{{Pkg|gnutls}}}}&lt;br /&gt;
* {{App|[[Network Security Services]] (NSS)|TLS/SSL と [[Wikipedia:S/MIME|S/MIME]] をサポートする暗号ライブラリの実装。TLS アクセラレーションとスマートカードもサポート。|https://firefox-source-docs.mozilla.org/security/nss/index.html|{{Pkg|nss}}}}&lt;br /&gt;
* {{App|[[mbed TLS]]|ポータブルな SSL/TLS 実装。別名 PolarSSL。|https://tls.mbed.org/|{{Pkg|mbedtls}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:LibreSSL|LibreSSL]]|OpenBSD プロジェクトによって2014年に OpenSSL からフォークされた TLS/crypto スタック。コードベースを近代的に改修してセキュリティを向上させることを目標としています。|https://www.libressl.org/|{{Pkg|libressl}}}}&lt;br /&gt;
&lt;br /&gt;
== 認証局 ==&lt;br /&gt;
&lt;br /&gt;
TLS では、一連の[[Wikipedia:Certificate authority|認証局]]（CA）の 1 つが、サーバーからの[[Wikipedia:public key certificate|公開鍵証明書]]の信頼性をチェックし、署名します。TLS でサーバーに接続するクライアントは、CA の電子署名に依存して、その証明書の信頼性を確認することができます。電子署名を確認するために、クライアントは別の経路で取得し、自己署名証明書として保存された CA の公開鍵を持っている必要があります。Arch Linux では CA 証明書のデフォルトセットは {{Pkg|ca-certificates}} パッケージで提供されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|現在、Arch Linux は [[MozillaWiki:CA|Mozilla CA Certificate Store]] からの CA 証明書をデフォルトセットとして使用しています。}}&lt;br /&gt;
&lt;br /&gt;
Arch Linux は CA 証明書を管理するために、システム全体の集中化されたインターフェースを提供します。このインターフェースは {{Pkg|libp11-kit}} パッケージの {{ic|/usr/lib/pkcs11/p11-kit-trust.so}} というライブラリで、証明書のための [[Wikipedia:PKCS 11|PKCS #11]] API を提供し、{{ic|/usr/share/ca-certificates/trust-source/}} (&amp;quot;Default Trust&amp;quot; トークン) と {{ic|/etc/ca-certificates/trust-source/}} (&amp;quot;System Trust&amp;quot; トークン) に格納されています。&lt;br /&gt;
&lt;br /&gt;
コマンドラインからインターフェースを使用するために、{{Pkg|p11-kit}} パッケージは {{man|1|trust}} ユーティリティを提供します。&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:PKCS 11|PKCS #11]] に移植されておらず，CA 証明書の管理に独自の論理を使用している ライブラリのために、{{Pkg|ca-certificates-utils}} パッケージは {{man|8|update-ca-trust}} スクリプトを提供し， 集中管理インタフェースを通して得られた CA 証明書を {{ic|/etc/ca-certificates/extracted/}} と {{ic|/etc/ssl/certs/}} にコピーします。&lt;br /&gt;
&lt;br /&gt;
=== CA 証明書のデフォルトセットをロードするためのメカニズムの概要 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 実装 !! メカニズム !! Arch Linux 設定&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供する{{man|3|SSL_CTX_set_default_verify_paths}}。&lt;br /&gt;
| デフォルトファイルは {{ic|/etc/ssl/cert.pem}} です。デフォルトディレクトリは {{ic|/etc/ssl/certs/}} です。&lt;br /&gt;
|-&lt;br /&gt;
| [[GnuTLS]]&lt;br /&gt;
| ハードコードされたディレクトリ、ファイル、または[https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS 11|PKCS #11]] モジュールから証明書をロードする API 関数を提供する。最後のケースでは、ハードコードされた [[RFC:7512|URL]] によって、任意の信頼できる証明書、または {{ic|trust-policy: yes}} とマークされたモジュール上の信頼できる CA 証明書、オプションで追加のフィルタリング基準を持つ証明書をロードすることができます[https://www.gnutls.org/manual/gnutls.html#Installing-for-a-software-distribution], [https://www.gnutls.org/manual/gnutls.html#Certificate-credentials]。&lt;br /&gt;
| [https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS11|PKCS #11]] モジュールから、{{ic|trust-policy: yes}} でマークされた、信頼できるすべての CA 証明書をロードします。&lt;br /&gt;
|-&lt;br /&gt;
| [[Network Security Services]]&lt;br /&gt;
| 専用の API で管理されている [[Wikipedia:PKCS11|PKCS#11]] モジュールの動的に構成されたリストから証明書を自動的にロードします。構成は、ユーザーが指定した任意のディレクトリに保存できます。 [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/PKCS11/FAQ], {{man|1|modutil}}.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[mbed TLS]]&lt;br /&gt;
| ユーザーは証明書をロードする必要があります。 [https://tls.mbed.org/kb/how-to/mbedtls-tutorial].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:LibreSSL|LibreSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供します。 {{man|3|libressl-SSL_CTX_load_verify_locations}}&lt;br /&gt;
|デフォルトのファイルは {{ic|/etc/libressl/cert.pem}} で、デフォルトのディレクトリは {{ic |/etc/libressl/certs/}} です。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 信頼管理 ==&lt;br /&gt;
&lt;br /&gt;
認証局のブラックリストを管理する方法は[[セキュリティ#SSL 証明書の管理]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== システム全体で認証局を信頼 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下のコマンドを実行すると誰でも秘密鍵にアクセスして TLS 通信を傍受できるようになります。}}&lt;br /&gt;
&lt;br /&gt;
 # trust anchor &#039;&#039;certificate&#039;&#039;.crt&lt;br /&gt;
&lt;br /&gt;
上記は [[プロキシ設定#HTTPS MITM プロキシ|HTTPS MITM プロキシ]]で通信を傍受するのに必要です。&lt;br /&gt;
&lt;br /&gt;
== 証明書を取得 ==&lt;br /&gt;
&lt;br /&gt;
最初に RSA 秘密鍵を生成してください。鍵を生成する前に、[[umask]] でファイルモード作成マスクを制限的に (例えば {{ic|077}}) 設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|openssl}} パッケージは他のディストリビューションと違って {{ic|/etc/ssl/private}} ディレクトリを保護しません。{{Bug|43059}} を参照。}}&lt;br /&gt;
&lt;br /&gt;
証明書は [[Wikipedia:Certificate signing request|証明書署名要求]] (CSR) を使って認証局から取得するか、あるいは [[Wikipedia:Self-signed certificate|自己署名]] することができます。自己署名証明書は簡単に生成できますが、クライアントはデフォルトでは拒否するため、自己署名証明書を信頼するようにクライアントを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
実際の生成コマンドは以下の実装の記事を見てください:&lt;br /&gt;
&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [[GnuTLS#使用方法]]&lt;br /&gt;
* [[Network Security Services]]&lt;br /&gt;
* [[mbed TLS#使用方法]]&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#ACME クライアント|ACME]] を使うことで [https://letsencrypt.org/ Let&#039;s Encrypt] 認証局からフリーの証明書を取得できます。}}&lt;br /&gt;
&lt;br /&gt;
== サーバーサイドの推奨事項 ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security#TLS/SSLの既知の脆弱性|TLS に対する攻撃]] は多数存在するため、ベストプラクティスに注意してください:&lt;br /&gt;
&lt;br /&gt;
* [https://disablessl3.com/ SSLv3 を無効化] することで [[Wikipedia:POODLE|POODLE]] 攻撃を防ぐ。&lt;br /&gt;
* [https://weakdh.org/sysadmin.html weakdh.org の TLS の Diffie-Hellman デプロイガイド]&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Server_Side_TLS Mozilla による Server Side TLS の記事]&lt;br /&gt;
* [https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices SSL Labs の SSL と TLS デプロイベストプラクティス]&lt;br /&gt;
* [https://cipherli.st/ Cipherli.st]&lt;br /&gt;
&lt;br /&gt;
=== TLS のチェック ===&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするプログラム:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|testssl.sh}}&lt;br /&gt;
* [[Nmap]]&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [https://github.com/mozilla/cipherscan cipherscan]&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするウェブサイト:&lt;br /&gt;
&lt;br /&gt;
* https://dev.ssllabs.com/ssltest/ (HTTPS のみ)&lt;br /&gt;
* https://www.checktls.com/ (メールのみ)&lt;br /&gt;
* https://www.htbridge.com/ssl/ (任意ポート)&lt;br /&gt;
* https://tls.imirhil.fr/tls (任意ポート)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== ACME クライアント ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Automated Certificate Management Environment|Automated Certificate Management Environment]] (ACME) プロトコルは [[Let&#039;s Encrypt]] などの [[Wikipedia:ja:認証局|認証局]] から X.509 証明書をリクエストできるプロトコルです。&lt;br /&gt;
&lt;br /&gt;
[https://letsencrypt.org/docs/client-options/ ACME クライアントの一覧] も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|acme-client|C で書かれたセキュアな Let&#039;s Encrypt クライアント。|https://kristaps.bsd.lv/acme-client/|{{AUR|acme-client}}{{Broken package link|パッケージが存在しません}}}}&lt;br /&gt;
* {{App|acme-tiny|Let&#039;s Encrypt から TLS 証明書を作成・更新するための200行の Python スクリプト。|https://github.com/diafygi/acme-tiny|{{Pkg|acme-tiny}}}}&lt;br /&gt;
* {{App|acme.sh|Unix シェルスクリプトだけで作られた ACME クライアント。|https://github.com/Neilpang/acme.sh|{{AUR|acme.sh-git}}}}&lt;br /&gt;
* {{App|acmetool|Go で書かれた使いやすい ACME CLI。|https://github.com/hlandau/acme|{{AUR|acmetool}}, {{AUR|acmetool-git}}}}&lt;br /&gt;
* {{App|[[Certbot]]|Python で書かれた、Let&#039;s Encrypt によって推奨されている ACME クライアント。|https://github.com/certbot/certbot|{{Pkg|certbot}}}}&lt;br /&gt;
* {{App|dehydrated|Bash で書かれた ACME クライアント。|https://github.com/lukas2511/dehydrated|{{Pkg|dehydrated}}, {{AUR|dehydrated-git}}}}&lt;br /&gt;
* {{App|getssl|Bash で書かれた ACME クライアント。|https://github.com/srvrco/getssl|{{AUR|getssl}}, {{AUR|getssl-git}}}}&lt;br /&gt;
* {{App|lego|Go で書かれた Lets Encrypt クライアントと ACME ライブラリ。|https://github.com/xenolf/lego|{{AUR|lego-git}}}}&lt;br /&gt;
* {{App|letsencrypt-cli|もうひとつの Letsencrypt (ACME) クライアント。Ruby を使用。|https://github.com/zealot128/ruby-acme-cli|{{AUR|letsencrypt-cli}}}}&lt;br /&gt;
* {{App|manuale|完全手動の Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/veeti/manuale|{{AUR|manuale}}}}&lt;br /&gt;
* {{App|ruby-acme-client|letsencrypt の ACME プロトコルの Ruby クライアント。|https://github.com/unixcharles/acme-client|{{AUR|ruby-acme-client}}}}&lt;br /&gt;
* {{App|simp_le|シンプルな Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/zenhack/simp_le|{{AUR|simp_le-git}}}}&lt;br /&gt;
&lt;br /&gt;
オンラインのインタラクティブな、https://gethttpsforfree.com クライアントでは、ウェブページからシェルコマンドラインにコピーペーストして、10 回ほどやり直す必要があります。その間に推奨されるコマンドを実行します。また、おそらくそのページで手動更新をしなければならないでしょう。あるいは、他の方法で更新を行う必要があります。一方、あなたは、それが成功したかどうか、すべてのステップで見ることができます。証明書を要求するためだけにソフトウェアをインストールする必要はありません。そして、秘密鍵やサーバー・ソフトウェアを、完全に意識的にしか触れないようにすることができるようになります。&lt;br /&gt;
&lt;br /&gt;
=== OCSP ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Online Certificate Status Protocol|Online Certificate Status Protocol]] (OCSP) は [[Firefox]] によってサポートされています。[[Chromium]] は独自のメカニズムを備えています [http://dev.chromium.org/Home/chromium-security/crlsets]。&lt;br /&gt;
&lt;br /&gt;
GnuTLS の {{man|1|ocsptool}} や OpenSSL の {{man|1ssl|ocsp}} も参照。&lt;br /&gt;
&lt;br /&gt;
=== HSTS ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:HTTP Strict Transport Security|HTTP Strict Transport Security]] (HSTS) メカニズムは Firefox, Chromium, [[wget]] ({{ic|~/.wget-hsts}}) によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
=== DNS CAA ===&lt;br /&gt;
&lt;br /&gt;
See [[Wikipedia:DNS Certification Authority Authorization]].&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Certificates Gentoo:Certificates]&lt;br /&gt;
* [https://www.happyassassin.net/2015/01/12/a-note-about-ssltls-trusted-certificate-stores-and-platforms/ A note about SSL/TLS trusted certificate stores, and platforms (OpenSSL and GnuTLS)]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29067</id>
		<title>トランスポート層セキュリティ</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E5%B1%A4%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3&amp;diff=29067"/>
		<updated>2023-01-02T02:39:07Z</updated>

		<summary type="html">&lt;p&gt;Shota: 序文において微妙な訳のニュアンスの修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Transport Layer Security]]&lt;br /&gt;
[[en:Transport Layer Security]]&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security|Wikipedia]] より:&lt;br /&gt;
:&#039;&#039;&#039;Transport Layer Security&#039;&#039;&#039; (&#039;&#039;&#039;TLS&#039;&#039;&#039;) およびその前身の [[RFC:7568|Secure Sockets Layer]] (&#039;&#039;&#039;SSL&#039;&#039;&#039;) はコンピュータネットワークにおいてセキュリティを要求される通信を行うためのプロトコルである。ウェブブラウザやメール、インスタントメッセージ、voice over IP (VoIP) などのアプリケーションで幅広く使われているプロトコルとなっている。ウェブサイトは TLS によってサーバーとウェブブラウザ間の通信を暗号化できる。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
&lt;br /&gt;
TLS の実装は 5 種類あり、[[公式リポジトリ]]で公開されています。OpenSSL は base メタパッケージの間接的な依存関係であるため、すでにシステムにインストールされているはずです({{Pkg|base}} &amp;gt; {{Pkg|coreutils}} &amp;gt; {{Pkg|openssl}})。GnuTLS は多くのパッケージで必要とされているため、すでにシステムにインストールされている可能性があります。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[OpenSSL]]|堅牢・商業品質・フル機能の TLS と SSL プロトコルのツールキット。汎用の暗号ライブラリでもあります。|https://www.openssl.org/|{{Pkg|openssl}}}}&lt;br /&gt;
* {{App|[[GnuTLS]]|TLS, SSL, DTLS プロトコルのフリーソフトウェア実装。X.509, PKCS #12, OpenPGP などの API を提供します。|https://www.gnutls.org/|{{Pkg|gnutls}}}}&lt;br /&gt;
* {{App|[[Network Security Services]] (NSS)|TLS/SSL と [[Wikipedia:S/MIME|S/MIME]] をサポートする暗号ライブラリの実装。TLS アクセラレーションとスマートカードもサポート。|https://developer.mozilla.org/NSS|{{Pkg|nss}}}}&lt;br /&gt;
* {{App|[[mbed TLS]]|ポータブルな SSL/TLS 実装。別名 PolarSSL。|https://tls.mbed.org/|{{Pkg|mbedtls}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:LibreSSL|LibreSSL]]|OpenBSD プロジェクトによって2014年に OpenSSL からフォークされた TLS/crypto スタック。コードベースを近代的に改修してセキュリティを向上させることを目標としています。|https://www.libressl.org/|{{Pkg|libressl}}}}&lt;br /&gt;
&lt;br /&gt;
== 認証局 ==&lt;br /&gt;
&lt;br /&gt;
TLS では、一連の[[Wikipedia:Certificate authority|認証局]]（CA）の 1 つが、サーバーからの[[Wikipedia:public key certificate|公開鍵証明書]]の信頼性をチェックし、署名します。TLS でサーバーに接続するクライアントは、CA の電子署名に依存して、その証明書の信頼性を確認することができます。電子署名を確認するために、クライアントは別の経路で取得し、自己署名証明書として保存された CA の公開鍵を持っている必要があります。Arch Linux では CA 証明書のデフォルトセットは {{Pkg|ca-certificates}} パッケージで提供されています。&lt;br /&gt;
&lt;br /&gt;
{{Note|現在、Arch Linux は [[MozillaWiki:CA|Mozilla CA Certificate Store]] からの CA 証明書をデフォルトセットとして使用しています。}}&lt;br /&gt;
&lt;br /&gt;
Arch Linux は CA 証明書を管理するために、システム全体の集中化されたインターフェースを提供します。このインターフェースは {{Pkg|libp11-kit}} パッケージの {{ic|/usr/lib/pkcs11/p11-kit-trust.so}} というライブラリで、証明書のための [[Wikipedia:PKCS 11|PKCS #11]] API を提供し、{{ic|/usr/share/ca-certificates/trust-source/}} (&amp;quot;Default Trust&amp;quot; トークン) と {{ic|/etc/ca-certificates/trust-source/}} (&amp;quot;System Trust&amp;quot; トークン) に格納されています。&lt;br /&gt;
&lt;br /&gt;
コマンドラインからインターフェースを使用するために、{{Pkg|p11-kit}} パッケージは {{man|1|trust}} ユーティリティを提供します。&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:PKCS 11|PKCS #11]] に移植されておらず，CA 証明書の管理に独自の論理を使用している ライブラリのために、{{Pkg|ca-certificates-utils}} パッケージは {{man|8|update-ca-trust}} スクリプトを提供し， 集中管理インタフェースを通して得られた CA 証明書を {{ic|/etc/ca-certificates/extracted/}} と {{ic|/etc/ssl/certs/}} にコピーします。&lt;br /&gt;
&lt;br /&gt;
=== CA 証明書のデフォルトセットをロードするためのメカニズムの概要 ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! 実装 !! メカニズム !! Arch Linux 設定&lt;br /&gt;
|-&lt;br /&gt;
| [[OpenSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供する{{man|3|SSL_CTX_set_default_verify_paths}}。&lt;br /&gt;
| デフォルトファイルは {{ic|/etc/ssl/cert.pem}} です。デフォルトディレクトリは {{ic|/etc/ssl/certs/}} です。&lt;br /&gt;
|-&lt;br /&gt;
| [[GnuTLS]]&lt;br /&gt;
| ハードコードされたディレクトリ、ファイル、または[https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS 11|PKCS #11]] モジュールから証明書をロードする API 関数を提供する。最後のケースでは、ハードコードされた [[RFC:7512|URL]] によって、任意の信頼できる証明書、または {{ic|trust-policy: yes}} とマークされたモジュール上の信頼できる CA 証明書、オプションで追加のフィルタリング基準を持つ証明書をロードすることができます[https://www.gnutls.org/manual/gnutls.html#Installing-for-a-software-distribution], [https://www.gnutls.org/manual/gnutls.html#Certificate-credentials]。&lt;br /&gt;
| [https://man.archlinux.org/man/pkcs11.conf.5 設定された] [[Wikipedia:PKCS11|PKCS #11]] モジュールから、{{ic|trust-policy: yes}} でマークされた、信頼できるすべての CA 証明書をロードします。&lt;br /&gt;
|-&lt;br /&gt;
| [[Network Security Services]]&lt;br /&gt;
| 専用の API で管理されている [[Wikipedia:PKCS11|PKCS#11]] モジュールの動的に構成されたリストから証明書を自動的にロードします。構成は、ユーザーが指定した任意のディレクトリに保存できます。 [https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/PKCS11/FAQ], {{man|1|modutil}}.&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[mbed TLS]]&lt;br /&gt;
| ユーザーは証明書をロードする必要があります。 [https://tls.mbed.org/kb/how-to/mbedtls-tutorial].&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[Wikipedia:LibreSSL|LibreSSL]]&lt;br /&gt;
| ハードコードされたディレクトリまたはファイルから証明書をロードする API 関数を提供します。 {{man|3|libressl-SSL_CTX_load_verify_locations}}&lt;br /&gt;
|デフォルトのファイルは {{ic|/etc/libressl/cert.pem}} で、デフォルトのディレクトリは {{ic |/etc/libressl/certs/}} です。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 信頼管理 ==&lt;br /&gt;
&lt;br /&gt;
認証局のブラックリストを管理する方法は[[セキュリティ#SSL 証明書の管理]]を見てください。&lt;br /&gt;
&lt;br /&gt;
=== システム全体で認証局を信頼 ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|以下のコマンドを実行すると誰でも秘密鍵にアクセスして TLS 通信を傍受できるようになります。}}&lt;br /&gt;
&lt;br /&gt;
 # trust anchor &#039;&#039;certificate&#039;&#039;.crt&lt;br /&gt;
&lt;br /&gt;
上記は [[プロキシ設定#HTTPS MITM プロキシ|HTTPS MITM プロキシ]]で通信を傍受するのに必要です。&lt;br /&gt;
&lt;br /&gt;
== 証明書を取得 ==&lt;br /&gt;
&lt;br /&gt;
最初に RSA 秘密鍵を生成してください。鍵を生成する前に、[[umask]] でファイルモード作成マスクを制限的に (例えば {{ic|077}}) 設定してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|{{Pkg|openssl}} パッケージは他のディストリビューションと違って {{ic|/etc/ssl/private}} ディレクトリを保護しません。{{Bug|43059}} を参照。}}&lt;br /&gt;
&lt;br /&gt;
証明書は [[Wikipedia:Certificate signing request|証明書署名要求]] (CSR) を使って認証局から取得するか、あるいは [[Wikipedia:Self-signed certificate|自己署名]] することができます。自己署名証明書は簡単に生成できますが、クライアントはデフォルトでは拒否するため、自己署名証明書を信頼するようにクライアントを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
実際の生成コマンドは以下の実装の記事を見てください:&lt;br /&gt;
&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [[GnuTLS#使用方法]]&lt;br /&gt;
* [[Network Security Services]]&lt;br /&gt;
* [[mbed TLS#使用方法]]&lt;br /&gt;
&lt;br /&gt;
{{Tip|[[#ACME クライアント|ACME]] を使うことで [https://letsencrypt.org/ Let&#039;s Encrypt] 認証局からフリーの証明書を取得できます。}}&lt;br /&gt;
&lt;br /&gt;
== サーバーサイドの推奨事項 ==&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Transport Layer Security#TLS/SSLの既知の脆弱性|TLS に対する攻撃]] は多数存在するため、ベストプラクティスに注意してください:&lt;br /&gt;
&lt;br /&gt;
* [https://disablessl3.com/ SSLv3 を無効化] することで [[Wikipedia:POODLE|POODLE]] 攻撃を防ぐ。&lt;br /&gt;
* [https://weakdh.org/sysadmin.html weakdh.org の TLS の Diffie-Hellman デプロイガイド]&lt;br /&gt;
* [https://wiki.mozilla.org/Security/Server_Side_TLS Mozilla による Server Side TLS の記事]&lt;br /&gt;
* [https://github.com/ssllabs/research/wiki/SSL-and-TLS-Deployment-Best-Practices SSL Labs の SSL と TLS デプロイベストプラクティス]&lt;br /&gt;
* [https://cipherli.st/ Cipherli.st]&lt;br /&gt;
&lt;br /&gt;
=== TLS のチェック ===&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするプログラム:&lt;br /&gt;
&lt;br /&gt;
* {{Pkg|testssl.sh}}&lt;br /&gt;
* [[Nmap]]&lt;br /&gt;
* [[OpenSSL]]&lt;br /&gt;
* [https://github.com/mozilla/cipherscan cipherscan]&lt;br /&gt;
&lt;br /&gt;
TLS をチェックするウェブサイト:&lt;br /&gt;
&lt;br /&gt;
* https://dev.ssllabs.com/ssltest/ (HTTPS のみ)&lt;br /&gt;
* https://www.checktls.com/ (メールのみ)&lt;br /&gt;
* https://www.htbridge.com/ssl/ (任意ポート)&lt;br /&gt;
* https://tls.imirhil.fr/tls (任意ポート)&lt;br /&gt;
&lt;br /&gt;
== その他 ==&lt;br /&gt;
&lt;br /&gt;
=== ACME クライアント ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Automated Certificate Management Environment|Automated Certificate Management Environment]] (ACME) プロトコルは [[Let&#039;s Encrypt]] などの [[Wikipedia:ja:認証局|認証局]] から X.509 証明書をリクエストできるプロトコルです。&lt;br /&gt;
&lt;br /&gt;
[https://letsencrypt.org/docs/client-options/ ACME クライアントの一覧] も参照してください。&lt;br /&gt;
&lt;br /&gt;
* {{App|acme-client|C で書かれたセキュアな Let&#039;s Encrypt クライアント。|https://kristaps.bsd.lv/acme-client/|{{AUR|acme-client}}{{Broken package link|パッケージが存在しません}}}}&lt;br /&gt;
* {{App|acme-tiny|Let&#039;s Encrypt から TLS 証明書を作成・更新するための200行の Python スクリプト。|https://github.com/diafygi/acme-tiny|{{Pkg|acme-tiny}}}}&lt;br /&gt;
* {{App|acme.sh|Unix シェルスクリプトだけで作られた ACME クライアント。|https://github.com/Neilpang/acme.sh|{{AUR|acme.sh-git}}}}&lt;br /&gt;
* {{App|acmetool|Go で書かれた使いやすい ACME CLI。|https://github.com/hlandau/acme|{{AUR|acmetool}}, {{AUR|acmetool-git}}}}&lt;br /&gt;
* {{App|[[Certbot]]|Python で書かれた、Let&#039;s Encrypt によって推奨されている ACME クライアント。|https://github.com/certbot/certbot|{{Pkg|certbot}}}}&lt;br /&gt;
* {{App|dehydrated|Bash で書かれた ACME クライアント。|https://github.com/lukas2511/dehydrated|{{Pkg|dehydrated}}, {{AUR|dehydrated-git}}}}&lt;br /&gt;
* {{App|getssl|Bash で書かれた ACME クライアント。|https://github.com/srvrco/getssl|{{AUR|getssl}}, {{AUR|getssl-git}}}}&lt;br /&gt;
* {{App|lego|Go で書かれた Lets Encrypt クライアントと ACME ライブラリ。|https://github.com/xenolf/lego|{{AUR|lego-git}}}}&lt;br /&gt;
* {{App|letsencrypt-cli|もうひとつの Letsencrypt (ACME) クライアント。Ruby を使用。|https://github.com/zealot128/ruby-acme-cli|{{AUR|letsencrypt-cli}}}}&lt;br /&gt;
* {{App|manuale|完全手動の Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/veeti/manuale|{{AUR|manuale}}}}&lt;br /&gt;
* {{App|ruby-acme-client|letsencrypt の ACME プロトコルの Ruby クライアント。|https://github.com/unixcharles/acme-client|{{AUR|ruby-acme-client}}}}&lt;br /&gt;
* {{App|simp_le|シンプルな Let&#039;s Encrypt クライアント。Python で書かれています。|https://github.com/zenhack/simp_le|{{AUR|simp_le-git}}}}&lt;br /&gt;
&lt;br /&gt;
オンラインのインタラクティブな、https://gethttpsforfree.com クライアントでは、ウェブページからシェルコマンドラインにコピーペーストして、10 回ほどやり直す必要があります。その間に推奨されるコマンドを実行します。また、おそらくそのページで手動更新をしなければならないでしょう。あるいは、他の方法で更新を行う必要があります。一方、あなたは、それが成功したかどうか、すべてのステップで見ることができます。証明書を要求するためだけにソフトウェアをインストールする必要はありません。そして、秘密鍵やサーバー・ソフトウェアを、完全に意識的にしか触れないようにすることができるようになります。&lt;br /&gt;
&lt;br /&gt;
=== OCSP ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Online Certificate Status Protocol|Online Certificate Status Protocol]] (OCSP) は [[Firefox]] によってサポートされています。[[Chromium]] は独自のメカニズムを備えています [http://dev.chromium.org/Home/chromium-security/crlsets]。&lt;br /&gt;
&lt;br /&gt;
GnuTLS の {{man|1|ocsptool}} や OpenSSL の {{man|1ssl|ocsp}} も参照。&lt;br /&gt;
&lt;br /&gt;
=== HSTS ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:HTTP Strict Transport Security|HTTP Strict Transport Security]] (HSTS) メカニズムは Firefox, Chromium, [[wget]] ({{ic|~/.wget-hsts}}) によってサポートされています。&lt;br /&gt;
&lt;br /&gt;
=== DNS CAA ===&lt;br /&gt;
&lt;br /&gt;
See [[Wikipedia:DNS Certification Authority Authorization]].&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.gentoo.org/wiki/Certificates Gentoo:Certificates]&lt;br /&gt;
* [https://www.happyassassin.net/2015/01/12/a-note-about-ssltls-trusted-certificate-stores-and-platforms/ A note about SSL/TLS trusted certificate stores, and platforms (OpenSSL and GnuTLS)]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Shota&amp;diff=28804</id>
		<title>利用者:Shota</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Shota&amp;diff=28804"/>
		<updated>2022-12-11T03:07:05Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* Tips */ ThinkPad トラックポイントの設定&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 自己紹介 ==&lt;br /&gt;
普段から Arch Linux を使っているので、何か Arch community に貢献できればと思っています。&lt;br /&gt;
* Main PC: [[Lenovo_ThinkPad_X230]], [[Lenovo_ThinkPad_X1_Extreme]].&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
* &amp;lt;s&amp;gt;ThinkPad におけるトラックポイントの速さの変更方法: [https://askubuntu.com/questions/37824/what-is-the-best-way-to-configure-a-thinkpads-trackpoint ask ubuntu のフォーラムより]&amp;lt;/s&amp;gt; -&amp;gt; [[トラックポイント]]。&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Shota&amp;diff=27732</id>
		<title>利用者:Shota</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E5%88%A9%E7%94%A8%E8%80%85:Shota&amp;diff=27732"/>
		<updated>2022-10-13T00:04:30Z</updated>

		<summary type="html">&lt;p&gt;Shota: 自分用 Tips のメモ&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 自己紹介 ==&lt;br /&gt;
普段から Arch Linux を使っているので、何か Arch community に貢献できればと思っています。&lt;br /&gt;
* Main PC: [[Lenovo_ThinkPad_X230]], [[Lenovo_ThinkPad_X1_Extreme]].&lt;br /&gt;
&lt;br /&gt;
== Tips ==&lt;br /&gt;
* ThinkPad におけるトラックポイントの速さの変更方法: [https://askubuntu.com/questions/37824/what-is-the-best-way-to-configure-a-thinkpads-trackpoint ask ubuntu のフォーラムより]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=RAID&amp;diff=26967</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=RAID&amp;diff=26967"/>
		<updated>2022-08-20T15:06:44Z</updated>

		<summary type="html">&lt;p&gt;Shota: 英語版から序文を翻訳&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Translateme|翻訳が古くなっています。}}&lt;br /&gt;
[[Category:Arch の入手とインストール]]&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[en:RAID]]&lt;br /&gt;
[[es:RAID]]&lt;br /&gt;
[[it:RAID]]&lt;br /&gt;
[[zh-hans:RAID]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ソフトウェア RAID と LVM}}&lt;br /&gt;
{{Related|Fake RAID でインストール}}&lt;br /&gt;
{{Related|シングルドライブ環境を RAID に変換}}&lt;br /&gt;
{{Related|ZFS}}&lt;br /&gt;
{{Related|ZFS/仮想ディスク}}&lt;br /&gt;
{{Related|スワップ#ストライピング}}&lt;br /&gt;
{{Related|Btrfs#RAID 機能}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
RAID とは Redundant Array of Independent Disks (個別のディスクによる冗長化集合 https://ja.wikipedia.org/wiki/RAID) の略であり、複数のディスクドライブ (典型的にはディスクドライブかパーティシヨン) を組み合わせて1つの論理ユニットとして扱うストレージ技術です。RAID の実装に応じて、この論理ユニットは1つのファイルシステムや、いくつかのパーティションを保持する更なる透過型レイヤとすることができます。[[#RAID レベル]] と呼ばれるいくつかの方法の内、いずれかによってデータはドライブの集合にまたがって分散させられます。このレベルによって冗長性やパフォーマンスを変えられ、この選択によって、ハードディスクの故障によるデータ損傷から守ったり、パフォーマンスを向上させたり、あるいは両方を実現できます。&lt;br /&gt;
&lt;br /&gt;
この記事では mdadm によるソフトウェア RAID アレイの作成・管理方法を説明します。&lt;br /&gt;
&lt;br /&gt;
{{Warning|RAID を設定する前に、かならず全てのデータを[[バックアッププログラム|バックアップ]]しておきましょう。}}&lt;br /&gt;
&lt;br /&gt;
== イントロダクション ==&lt;br /&gt;
{{Wikipedia/ja|RAID}}&lt;br /&gt;
独立ディスク冗長アレイ (Redundant Array of Independent Disks, RAID) は複数のディスクドライブの構成部品 (一般的にはディスクドライブまたはそのパーティション) をまとめて一つの論理ユニットにするストレージ技術です。RAID の実装によって、この論理ユニットはファイルシステム、あるいは複数のパーティションを保持する追補的な透過レイヤーになります。データは &amp;quot;RAID レベル&amp;quot; と呼ばれる様々な方法によって、必要とされる冗長性やパフォーマンスにあわせて、ドライブに分散されます。RAID レベルの選択によって、ハードディスクが壊れた時にデータが喪失することを防いだり、パフォーマンスを向上させたり、あるいはその両方を実現できます。&lt;br /&gt;
&lt;br /&gt;
ほとんどの RAID レベルでは冗長性が確保されていますが、RAID はデータが安全であることを保証するものではありません。火事があったときや、コンピュータが盗まれたとき、または複数のドライブが同時に壊れた場合など RAID はデータを保護しません。さらに、RAID でシステムをインストールするのは複雑な作業であり、そのときにデータを破壊してしまう可能性もあります。 {{Warning|従って、RAID を設定する前に、かならず全てのデータを[[バックアッププログラム|バックアップ]]しておきましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|データの保存や冗長性のために RAID アレイを使おうと思っているユーザーは [[ZFS]] によって実装されている RAIDZ についても採用を検討すると良いでしょう。ソフトウェア RAID の代替としてより近代的でパワフルな能力があります。}}&lt;br /&gt;
&lt;br /&gt;
===通常の RAID レベル===&lt;br /&gt;
[[Wikipedia:Standard RAID levels|RAID のレベル]]はたくさん存在します、以下は最も一般的に使われているレベルです。&lt;br /&gt;
&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 0|RAID 0]]&lt;br /&gt;
: ストライピングを使ってディスクを結合します。RAID 0 には&#039;&#039;冗長性がありません&#039;&#039;が、RAID とされています。耐障害性がない代わりに、&#039;&#039;速度が向上する恩恵があります&#039;&#039;。データが消失する可能性を差し引いても速度を上げる価値がある場合 (例えば[[スワップ]]パーティション)、この RAID レベルを選択します。サーバーでは、RAID 1 や RAID 5 アレイを使う方が適切です。RAID 0 アレイのブロックデバイスのサイズは一番小さいコンポーネントパーティションとコンポーネントパーティションの数を掛けた値になります。&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 1|RAID 1]]&lt;br /&gt;
: 最もシンプルな RAID レベル: ミラーリングです。他の RAID レベルと同様に、パーティションを複数の物理ディスクドライブに配置した時にだけ意味をなします。ドライブのどれか一台が故障しても、RAID アレイによるブロックデバイスは通常通りに稼働し続けます。例では[[スワップ]]や一時的なデータを除いて全てを RAID 1 に保存します。ソフトウェア実装を使う場合、ブートパーティションで使えるのは RAID 1 レベルしかないので注意してください。ブートパーティションを読み込むブートローダーは RAID を認識できないながらも、RAID 1 のコンポーネントパーティションは通常のパーティションとして読み込めるからです。RAID 1 アレイのブロックデバイスのサイズは一番小さいコンポーネントパーティションと同じになります。&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 5|RAID 5]]&lt;br /&gt;
: 三台以上の物理ドライブが必要で、RAID 0 の速度・サイズのメリットを残しながら RAID 1 の冗長性を実現します。RAID 5 は RAID 0 と同じようにストライピングを使いますが、それに加えて&#039;&#039;それぞれのディスクに分散して&#039;&#039;パリティブロックの記録を行います。ディスクが故障した時は、パリティブロックを利用して交換したディスクにデータを再構築します。RAID 5 は一台のディスクの喪失まで耐えることが可能です。&lt;br /&gt;
: {{Note|速度とデータの冗長性を両得できることから RAID 5 はよく使われています。ただし一台のドライブが壊れてから、ドライブを置き換える前にもう一台ドライブが故障すると、全てのデータを喪失するので注意してください。さらに、最近のディスク容量や修復不能なリードエラー (unrecoverble read error; URE) の発生率を考えると、4TiB のアレイを再構築するとき URE が (50% 以上という) 高い確率で発生します。そのため、ストレージ業界では RAID 5 はもはや推奨されていません。}}&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 6|RAID 6]]&lt;br /&gt;
: 四台以上の物理ドライブを必要とし、RAID 5 の利点を活かしながらドライブが二台故障しても安全です。RAID 6 も RAID 5 と同じようにストライピングを使用しますが、二つの異なるパリティブロックを&#039;&#039;それぞれのメンバーディスクに分散して&#039;&#039;保存します。ディスクが故障したときは、パリティブロックを利用して交換したディスクにデータを再構築します。RAID 6 は二台のディスクの喪失まで耐えることが可能です。ドライブを再構築するときでもアレイにパリティブロックが存在するため、読み取りエラーに対する堅牢性は高くなっています。ただし、オーバーヘッドを考えると RAID 6 はコストがかかります。大抵の場合は far2 レイアウトの RAID 10 のほうが高い性能と堅牢性を確保できます (下を参照)。&lt;br /&gt;
&lt;br /&gt;
===ネストされた RAID レベル===&lt;br /&gt;
; [[Wikipedia:Nested RAID levels#RAID 1 + 0|RAID 1+0]]&lt;br /&gt;
: RAID 1+0 は2つの標準 RAID レベルを組み合わせてパフォーマンスと冗長性を獲得する入れ子の RAID です。よく &#039;&#039;RAID 10&#039;&#039; と呼ばれますが、Linux MD RAID 10 は単純な RAID レイヤーとは多少異なっています。下記を見てください。&lt;br /&gt;
&lt;br /&gt;
; [[Wikipedia:Non-standard_RAID_levels#Linux_MD_RAID_10|RAID 10]]&lt;br /&gt;
: Linux における RAID 10 は RAID 1+0 の概念に基づいていますが、シングルレイヤーとして実装することで複数のレイアウトが可能になっています。&lt;br /&gt;
&lt;br /&gt;
: Y 台のディスクによる &#039;&#039;near X&#039;&#039; レイアウトは Y/2 個のストライプで X 個のチャンクが作成されますが、Y を均等に X で割る必要はありません。near という名前のとおり、チャンクは複製されるディスクに近い場所に配置されます。2台以上の任意の台数のディスクを使うことができます。2台のディスクによる Near 2 は RAID 1 と同じであり、4台のディスクによる Near 2 は RAID 1+0 と同じです。&lt;br /&gt;
&lt;br /&gt;
: Y 台のディスクによる &#039;&#039;far X&#039;&#039; レイアウトはストライプによる読み取り性能を複製されたアレイで発揮します。ディスクをフロントとバックに分けて、ディスク1のフロントはディスク2のバックに複製され、ディスク2のフロントはディスク1のバックに複製されます。RAID 0 や RAID 5 と同じように、シーケンシャルリードを高速化することが可能です。欠点としては複製を保存するのにディスクがシークする距離が長くなるためシーケンシャルライトが遅くなります。それでも、読み込み速度が重要で可用性・冗長性が必要な場合は RAID 1+0 や RAID 5 よりも far 2 レイアウトの RAID 10 を使うことを推奨します。ただしバックアップを置き換えることはできません。&lt;br /&gt;
&lt;br /&gt;
=== RAID レベルの比較 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RAID レベル!!データの冗長性!!物理ドライブの利用効率!!読込パフォーマンス!!書込パフォーマンス!!最小ドライブ数&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039;||{{No}}||100%||nX&amp;lt;br&amp;gt;&#039;&#039;&#039;最速&#039;&#039;&#039;||nX&amp;lt;br&amp;gt;&#039;&#039;&#039;最速&#039;&#039;&#039;||2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039;||{{Yes}}||50%||nX (理論値)&amp;lt;br&amp;gt;1X (実測値)||1X||2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;5&#039;&#039;&#039;||{{Yes}}||67% - 94%||(n−1)X&amp;lt;br&amp;gt;&#039;&#039;&#039;高速&#039;&#039;&#039;||(n−1)X&amp;lt;br&amp;gt;&#039;&#039;&#039;高速&#039;&#039;&#039;&lt;br /&gt;
||3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;6&#039;&#039;&#039;||{{Yes}}||50% - 88%||(n−2)X||(n−2)X||4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10&#039;&#039;&#039; (far2) ||{{Yes}}||50%||nX&amp;lt;br&amp;gt;&#039;&#039;&#039;最速&#039;&#039;&#039; (RAID 0 と同等)||(n/2)X||2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10&#039;&#039;&#039; (near2) ||{{Yes}}||50%||nX (理論値)&amp;lt;br&amp;gt;1X (実測値)||(n/2)X||2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &#039;&#039;n&#039;&#039; は利用するディスクの数。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
RAID デバイスの制御方法は様々です:&lt;br /&gt;
&lt;br /&gt;
; ソフトウェア RAID&lt;br /&gt;
: 不明瞭なプロプライエタリのファームウェアや使用するソフトウェアに依存しないため楽な実装方法です。アレイはオペレーティングシステムによって以下のいずれかで管理されます:&lt;br /&gt;
:* 抽象レイヤー (例: [[#セットアップ|mdadm]])。 {{Note|このガイドで使用する方法です。}}&lt;br /&gt;
:* 論理ボリュームマネージャ (例: [[LVM]])。&lt;br /&gt;
:* ファイルシステムのコンポーネント (例: [[ZFS]], [[Btrfs]])。&lt;br /&gt;
&lt;br /&gt;
; ハードウェア RAID&lt;br /&gt;
: PC に取り付けた専用のハードウェアカードにディスクを直接接続してアレイをダイレクトに制御します。[[Wikipedia:ja:CPU|ホストプロセッサ (CPU)]] とは独立したオンボードのプロセッサ上で RAID が処理されます。この方法はオペレーティングシステムから独立していますが、ハードウェア RAID コントローラを正しく作動させるためにはドライバーが必要になります。RAID アレイの設定は、メーカーによって、オプション ROM インターフェイスを使ったり、OS をインストールする際に専用のアプリケーションを使って行います。この設定は Linux からは見ることができません、システムには単一のディスクとして認識されます。&lt;br /&gt;
&lt;br /&gt;
; [[Fake RAID でインストール|FakeRAID]]&lt;br /&gt;
: このタイプのRAIDは正しくは BIOS またはオンボード RAID と呼ぶべきですが、ハードウェア RAID として偽って喧伝されています。アレイの管理はオプション ROM やファームウェアと ([[UEFI]] の場合) ファームウェアで RAID ロジックが実装される擬似的な RAID コントローラが行いますが、&#039;&#039;全ての&#039;&#039; RAID 機能が実装された完全な RAID コントローラではありません。そのため、このタイプの RAID は FakeRAID と呼称されることがあります。FakeRAID のコントローラは[[公式リポジトリ]]の {{Pkg|dmraid}} を使って扱います。FakeRAID コントローラの例: [[Wikipedia:Intel Rapid Storage Technology|Intel Rapid Storage]], JMicron JMB36x RAID ROM, AMD RAID, ASMedia 106x, NVIDIA MediaShield など。&lt;br /&gt;
&lt;br /&gt;
===使用している RAID はどのタイプか？===&lt;br /&gt;
&lt;br /&gt;
ソフトウェア RAID の実装はユーザーによるため、ソフトウェア RAID を使ってることは簡単にわかります。&lt;br /&gt;
&lt;br /&gt;
反対に、FakeRAID と真のハードウェア RAID を見分けるのは難しいかもしれません。上記の通り、しばしばメーカーはこれら二つの RAID タイプを誤って区別していることがあり、不当表示も考えられます。この場合、一番良い方法は {{ic|lspci}} コマンドを実行して出力を見て RAID コントローラを調べることです。それからその RAID コントローラに関する情報がないか検索してみてください。完全なハードウェア RAID コントローラは多くの場合やや高価 (~$400+) であり、システムをカスタマイズする際、ハードウェア RAID 構成を選択するとコンピュータの価格にそれと分かるくらいの変化があるはずです。&lt;br /&gt;
&lt;br /&gt;
==セットアップ==&lt;br /&gt;
[[公式リポジトリ]]から {{Pkg|mdadm}} をインストールして下さい。&#039;&#039;mdadm&#039;&#039; は普通のブロックデバイスを使って純粋なソフトウェア RAID を組むのに使われます: 元となるハードウェアは RAID ロジックを全く搭載せず、ディスクだけ供給します。&#039;&#039;mdadm&#039;&#039; はどんな組み合わせのブロックデバイスでも使うことができます。あまり一般的でない組み合わせであってもです。例えば、サムドライブを集めて RAID アレイを作成することが可能です。&lt;br /&gt;
&lt;br /&gt;
===デバイスの準備===&lt;br /&gt;
{{Warning|このステップではデバイス上の全てのデータを消去します、消去を行うデバイスを間違えないように気をつけて入力して下さい。}}&lt;br /&gt;
&lt;br /&gt;
問題が発生しないように RAID の各デバイスで中身を[[ディスクの完全消去|完全に消去]]したほうが良いでしょう。デバイスを既存のアレイから再利用する場合、古い RAID 設定情報を全て削除して下さい:&lt;br /&gt;
 # mdadm --zero-superblock /dev/&amp;lt;drive&amp;gt;&lt;br /&gt;
&lt;br /&gt;
もしくはドライブの特定パーティションを削除する場合は:&lt;br /&gt;
 # mdadm --zero-superblock /dev/&amp;lt;partition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|パーティションのスーパーブロックを消去してもディスク上の他のパーティションに影響を与えることはありません。}}&lt;br /&gt;
&lt;br /&gt;
===パーティションテーブルの作成===&lt;br /&gt;
アレイで使用する前にディスクをパーティションすることが強く推奨されます。ほとんどの RAID ユーザーは 2 TB 以上の HDD を選択するため、GPT パーティションテーブルが必須または推奨です。{{Pkg|gptfdisk}} を使うことでディスクを簡単にパーティションすることができます。&lt;br /&gt;
&lt;br /&gt;
* 作成後、パーティションのタイプにはヘックスコード FD00 を指定してください。&lt;br /&gt;
* 巨大なディスクアレイを用いる場合、ディスクを後で区別しやすくするために[[永続的なブロックデバイスの命名#by-label|ディスクラベル]]や[[永続的なブロックデバイスの命名#by-partlabel|パーティションラベル]]を付けるようにしてください。&lt;br /&gt;
* 各デバイスに作成するパーティションのサイズは同じ大きさにすることを推奨します。&lt;br /&gt;
* パーティションするときはデバイスの末端に 100 MB の空きスペースを残すと良いでしょう。根拠は下を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|(パーティションを作らずに) 生のディスク上に直接 RAID を作成することも可能ですが、故障したディスクを交換するときに問題が起こることがあるのであまり推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
RAID の故障したディスクを置き換える時は、新しいディスクの容量は故障したディスクのサイズと全く同じまたはそれ以上でなくてはなりません - そうでないとアレイの再作成プロセスが作動しません。同じメーカーの同じモデルのハードドライブだとしても容量には多少の誤差があることがあります。ディスクの最後に未使用のスペースを残しておくことでドライブ間の容量の違いを埋め合わせることができ、また、ドライブの機種を置き換えることが楽になります。従って、&#039;&#039;&#039;ディスクの最後に未割り当て領域を 100 MB 残しておくことはグッドプラクティスと言えます&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
====MBR を使う場合のパーティションタイプ====&lt;br /&gt;
MBR パーティションテーブルの HDD にパーティションを作成する場合、使用するパーティションタイプは以下になります:&lt;br /&gt;
&lt;br /&gt;
* 0xDA (ファイルシステム以外のデータ用 -- 現在 [https://raid.wiki.kernel.org/index.php/Partition_Types kernel.org] によって推奨されています)&lt;br /&gt;
* 0xFD (raid の自動検出アレイ -- initrd を起動してカーネルモジュールをロードするようになるまでは使われていました)&lt;br /&gt;
&lt;br /&gt;
===アレイの作成===&lt;br /&gt;
{{Warning|現在、カーネルのバージョン 4.2.x と 4.3.x には RAID10 アレイを作成できないというバグが存在します。RAID10 レイアウトを作る必要がある場合は、バグが修正されるまで、{{pkg|linux-lts}} のカーネルバージョン 4.1.x シリーズを使うことが推奨されます。詳しくは [[#参照]] セクションを見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|mdadm}} を使ってアレイを作成します。以下では複数の例をあげています。&lt;br /&gt;
{{Warning|下のサンプルをコピーペーストするだけですませないでください。頭を使って適切なオプション・ドライブ文字に置き換えましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|RAID1 アレイを [[Syslinux]] から起動する場合 syslinux v4.07 の制限として metadata の値をデフォルトの 1.2 ではなく 1.0 にする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
以下の例では2つのデバイスによる RAID1 アレイを作成します:&lt;br /&gt;
 # mdadm --create --verbose --level=1 --metadata=1.2 --chunk=64 --raid-devices=2 /dev/md0 /dev/sdb1 /dev/sdc1&lt;br /&gt;
{{Note|実際には RAID1 では chunk スイッチは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
以下の例では4つのデバイスによる RAID5 アレイを作成します:&lt;br /&gt;
 # mdadm --create --verbose --level=5 --metadata=1.2 --chunk=256 --raid-devices=4 /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1&lt;br /&gt;
&lt;br /&gt;
以下の例では2つのデバイスによる RAID10 (far2) アレイを作成します:&lt;br /&gt;
&lt;br /&gt;
 # mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md0 /dev/sdb1 /dev/sdc1&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|--homehost}} と {{ic|--name}} オプションを使うことで raid デバイスにカスタム名称を付けることができます。名前はコロンで区切られます。}}&lt;br /&gt;
&lt;br /&gt;
アレイは仮想デバイス {{ic|/dev/mdX}} 下に作成され、編成されて (縮退モードで) 使用できるようになります。バックグラウンドで mdadm がアレイをリシンクしている間、仮想デバイスを使って直接起動することが可能です。パリティのリストアには長い時間かかるかもしれません。次のコマンドで進捗を確認できます:&lt;br /&gt;
 $ cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
===設定ファイルの更新===&lt;br /&gt;
&lt;br /&gt;
新しい RAID アレイを作成した後は、デフォルトの設定ファイルである {{ic|mdadm.conf}} を以下のようにして更新する必要があります:&lt;br /&gt;
 # mdadm --detail --scan &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
&lt;br /&gt;
このコマンドを実行したらテキストファイルで {{ic|mdadm.conf}} 設定ファイルをチェックして中身が問題ないか確認してください。&lt;br /&gt;
&lt;br /&gt;
===アレイの構築===&lt;br /&gt;
&lt;br /&gt;
設定ファイルを更新できたら mdadm を使ってアレイを構築することができます:&lt;br /&gt;
&lt;br /&gt;
 # mdadm --assemble --scan&lt;br /&gt;
&lt;br /&gt;
===RAID ファイルシステムのフォーマット===&lt;br /&gt;
アレイは他のディスクと同じようにフォーマットすることができます、覚えておくべきことは:&lt;br /&gt;
* ボリュームサイズが巨大になるため適合しないファイルシステムが存在します (参照: [[Wikipedia:Comparison of file systems#Limits|ファイルシステムの制限]])。&lt;br /&gt;
* オンラインでのサイズの拡大や縮小に対応しているファイルシステムがふさわしいでしょう (参照: [[Wikipedia:Comparison of file systems#Features|ファイルシステムの機能]])。&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;
* Arch では大抵のファイルシステムのデフォルトブロックサイズは 4096 (4 KiB) です。詳しくは {{ic|/etc/mke2fs.conf}} を見て下さい。&lt;br /&gt;
* &#039;&#039;チャンクサイズ&#039;&#039;はユーザーが指定することができる 4K (1ブロック: [[Advanced Format]] ディスクでない場合は512バイト) から 64K まで、あるいはそれ以上の値です。{{ic|mdadm}} のデフォルトで選択されるチャンクサイズは 512 KiB です ({{ic|&amp;lt;nowiki&amp;gt;# mdadm --detail /dev/mdX | grep &#039;Chunk Size&#039;&amp;lt;/nowiki&amp;gt;}} で確認できます)。巨大なファイルを日常的に使用する場合 (ビデオ編集やグラフィック処理など)、チャンクサイズを小さくすることで巨大なファイルのアクセス速度を向上させることができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|最適なチャンクサイズについては [http://www.zdnet.com/article/chunks-the-hidden-key-to-raid-performance/ Chunks: the hidden key to RAID performance] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
次に、ストライプ幅を計算してください:&lt;br /&gt;
&lt;br /&gt;
 ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)&lt;br /&gt;
&lt;br /&gt;
===== 例 1. RAID0 =====&lt;br /&gt;
適切なストライプ幅とストライドで ext4 にフォーマットする例:&lt;br /&gt;
* 仮に2つの物理ディスクで構成される RAID0 アレイとします。&lt;br /&gt;
* チャンクサイズは 64k。&lt;br /&gt;
* ブロックサイズは 4k。&lt;br /&gt;
&lt;br /&gt;
ストライド = (チャンクサイズ / ブロックサイズ)。この例では、(64/4) となりストライド = 16です。&lt;br /&gt;
&lt;br /&gt;
ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)。この例では、(2*16) となりストライプ幅 = 32です。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -v -L myarray -m 0.5 -b 4096 -E stride=16,stripe-width=32 /dev/md0&lt;br /&gt;
&lt;br /&gt;
===== 例 2. RAID5 =====&lt;br /&gt;
適切なストライプ幅とストライドで ext4 にフォーマットする例:&lt;br /&gt;
* 仮に4つの物理ディスクで構成される RAID5 アレイとします。3つはデータディスクで1つはパリティディスクです。&lt;br /&gt;
* チャンクサイズは 256k。&lt;br /&gt;
* ブロックサイズは 4k。&lt;br /&gt;
&lt;br /&gt;
ストライド = (チャンクサイズ / ブロックサイズ)。この例では、(256/4) となりストライド = 64です。&lt;br /&gt;
&lt;br /&gt;
ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)。この例では、(3*64) となりストライプ幅 = 192です。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -v -L myarray -m 0.5 -b 4096 -E stride=64,stripe-width=192 /dev/md0&lt;br /&gt;
&lt;br /&gt;
===== 例 3. RAID10 (far2) =====&lt;br /&gt;
適切なストライプ幅とストライドで ext4 にフォーマットする例:&lt;br /&gt;
* 仮に2つの物理ディスクで構成される RAID10 アレイとします。far2 レイアウトの RAID10 なので当然、2つともデータディスクになります。&lt;br /&gt;
* チャンクサイズは 512k。&lt;br /&gt;
* ブロックサイズは 4k。&lt;br /&gt;
&lt;br /&gt;
ストライド = (チャンクサイズ / ブロックサイズ)。この例では、(512/4) となりストライド = 128です。&lt;br /&gt;
&lt;br /&gt;
ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)。この例では、(2*128) となりストライプ幅 = 256です。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -v -L myarray -m 0.01 -b 4096 -E stride=128,stripe-width=256 /dev/md0&lt;br /&gt;
&lt;br /&gt;
== ライブ CD からマウント ==&lt;br /&gt;
ライブ CD から RAID パーティションをマウントしたい場合、次のコマンドを使います:&lt;br /&gt;
 # mdadm --assemble /dev/&amp;lt;disk1&amp;gt; /dev/&amp;lt;disk2&amp;gt; /dev/&amp;lt;disk3&amp;gt; /dev/&amp;lt;disk4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ディスクアレイが存在しないのに誤って RAID 1 と認識されて ({{ic|mdadm --detail /dev/md&amp;lt;number&amp;gt;}})、inactive と報告される場合 ({{ic|cat /proc/mdstat}})、先にアレイを停止してください:&lt;br /&gt;
 # mdadm --stop /dev/md&amp;lt;number&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RAID に Arch Linux をインストール ==&lt;br /&gt;
{{Note|以下のセクションは root ファイルシステムがアレイ上にある場合にのみ当てはまります。データパーティションをアレイに収納する場合はこのセクションをスキップしてかまいません。}}&lt;br /&gt;
インストール手順の[[パーティショニング]]と[[ファイルシステム#デバイスのフォーマット|フォーマット]]の間に RAID アレイを作成してください。root ファイルシステムにするパーティションを直接フォーマットする代わりに、RAID アレイの上に作成します。[[#セットアップ|セットアップ]]セクションの指示に従って RAID アレイを作成してください。その後はインストールの手順に従って pacstrap のステップが完了するところまで進みます。[[Unified Extensible Firmware Interface|UEFI]] で起動する場合、[[EFI システムパーティション#RAID 上に ESP を配置]]も読んでください。&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルの更新 ===&lt;br /&gt;
{{Note|以下は chroot の外で実行します、そしてファイルパスには /mnt を前に付けます。}}&lt;br /&gt;
ベースシステムをインストールしたら、デフォルトの設定ファイル {{ic|mdadm.conf}} を次のようにして更新する必要があります:&lt;br /&gt;
 # mdadm --detail --scan &amp;gt;&amp;gt; /mnt/etc/mdadm.conf&lt;br /&gt;
&lt;br /&gt;
上のコマンドを実行した後は、かならずテキストエディタを使って mdadm.conf 設定ファイルをチェックして中身が問題ないか確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|起動時に (デフォルトで有効になる) &#039;&#039;mdmonitor&#039;&#039; が失敗しないようにするには、{{ic|mdadm.conf}} の一番下にある &#039;&#039;&#039;MAILADDR&#039;&#039;&#039; をアンコメントして、アレイに問題が起こった時に通知が行くメールアドレスかアプリケーションを記述してください。}}&lt;br /&gt;
&lt;br /&gt;
インストールの手順に戻って “Initial ramdisk 環境の作成” のステップまで進んだら、次のセクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== mdadm フックを mkinitcpio.conf に追加する ===&lt;br /&gt;
{{Note|以下は chroot 中に実行します。}}&lt;br /&gt;
init イメージに直接 mdadm のサポートを追加するために [[mkinitcpio]] の [[Mkinitcpio#HOOKS|HOOKS]] セクションに {{ic|mdadm_udev}} を追加してください:&lt;br /&gt;
 HOOKS=&amp;quot;base udev autodetect block &#039;&#039;&#039;mdadm_udev&#039;&#039;&#039; filesystems usbinput fsck&amp;quot;&lt;br /&gt;
&lt;br /&gt;
HOOKS に変更を加えた後は initramfs イメージを再生成します ([[Mkinitcpio#イメージ作成とアクティベーション|イメージ作成とアクティベーション]]を参照):&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
=== ブートローダーの設定 ===&lt;br /&gt;
&lt;br /&gt;
RAID アレイごとに {{ic|md}} [[カーネルパラメータ]]を追加してください。また、{{ic|root}} パラメータでマッピングするデバイスを正しく指定します。以下の例では三つの RAID 1 アレイを記述しており適当な一つを root として設定しています:&lt;br /&gt;
 root=/dev/md1 md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4&lt;br /&gt;
&lt;br /&gt;
上記のカーネルデバイスノードによる方法だとソフトウェア raid パーティションからの起動が失敗する場合、もうひとつの信頼性のある方法としてパーティションラベルを使う方法があります:&lt;br /&gt;
 root=LABEL=Root_Label&lt;br /&gt;
&lt;br /&gt;
[[GRUB#RAID]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== RAID のメンテナンス ==&lt;br /&gt;
=== スクラビング ===&lt;br /&gt;
誤りをチェック・修正するために定期的にデータ[[wikipedia:Data_scrubbing|スクラビング]]を実行するのは良い習慣です。アレイのサイズや設定にもよりますが、スクラブは完了するまでかなり時間がかかります。&lt;br /&gt;
&lt;br /&gt;
データスクラブを開始するには:&lt;br /&gt;
 # echo check &amp;gt; /sys/block/md0/md/sync_action&lt;br /&gt;
&lt;br /&gt;
check オペレーションは不良セクタがないかドライブをスキャンして自動的に不良セクタを修復します。不良データ (他のディスクが示すデータと一致しないセクタのデータ、例えば、パリティブロックと他のデータブロックによって該当するデータブロックが不正だと判断される場合など) を含んでいる良好セクタを見つけた場合、対処は何もされませんが、イベントが記録されます (下を参照)。&amp;quot;何もされない&amp;quot;ことで、管理者はセクタのデータと、重複するデータからセクタを再生成することで得られるデータを検査して正しいデータを選んで保持することができます。&lt;br /&gt;
&lt;br /&gt;
mdadm に関連する様々なタスクやアイテムと同様に、スクラブの状態は {{ic|/proc/mdstat}} を読み出すことで調べることができます。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
{{hc|$ cat /proc/mdstat|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4] [raid1] &lt;br /&gt;
md0 : active raid1 sdb1[0] sdc1[1]&lt;br /&gt;
      3906778112 blocks super 1.2 [2/2] [UU]&lt;br /&gt;
      [&amp;gt;....................]  check =  4.0% (158288320/3906778112) finish=386.5min speed=161604K/sec&lt;br /&gt;
      bitmap: 0/30 pages [0KB], 65536KB chunk&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
実行中のデータスクラブを安全に停止するには:&lt;br /&gt;
 # echo idle &amp;gt; /sys/block/md0/md/sync_action&lt;br /&gt;
&lt;br /&gt;
{{Note|スクラブを途中で中止した後にシステムを再起動してしまうと、スクラブはもういちど最初からやり直されます。}}&lt;br /&gt;
&lt;br /&gt;
スクラブが完了したら、(不良セクタがあった場合) いくつのブロックが不良として判断されたか確認することができます:&lt;br /&gt;
 # cat /sys/block/md0/md/mismatch_cnt&lt;br /&gt;
&lt;br /&gt;
==== スクラビングの一般的な注意事項 ====&lt;br /&gt;
{{Note|ユーザーは /sys/block/md0/md/sync_action に &#039;&#039;&#039;repair&#039;&#039;&#039; を echo することもできますが、データにミスマッチが発生したとき、一貫性のために自動的に更新が行われるため、推奨されません。正しいパリティまたはデータブロックなのか (RAID1 の場合どちらのデータブロックなのか) 判断することができないのが危険です。この操作によって間違ったデータではなく正しいデータが選択されるかどうかは一か八かです。}}&lt;br /&gt;
&lt;br /&gt;
定期的にスクラブを root で実行する cron ジョブを設定するのは良い考えです。ジョブの設定に役立つ {{AUR|raid-check}} を見て下さい。cron の代わりに systemd タイマーを使ってスクラブを実行したい場合は {{AUR|raid-check-systemd}} をインストールしてください。systemd タイマーのユニットファイルとスクリプトが含まれています。&lt;br /&gt;
&lt;br /&gt;
==== スクラビングの RAID1 と RAID10 の注意事項 ====&lt;br /&gt;
カーネルにおける RAID1 と RAID10 の書き込みはバッファがないため、アレイが問題ないときでもアレイにゼロ以外のミスマッチがカウントされることがあります。このようなゼロ以外のカウントは一時的なデータ領域にしか存在せず、問題は起こりません。しかしながら、一時的なデータのゼロ以外のカウントと実際に問題が起こっていることを示すゼロ以外のカウントを見分けることはできません。このために RAID1 や RAID10 アレイでは誤検知が発生することがあります。それでもデバイスにあるかもしれない不良セクタを見つけて直すために定期的にスクラブすることを推奨します。&lt;br /&gt;
&lt;br /&gt;
===アレイからデバイスを削除する===&lt;br /&gt;
アレイからデバイスを削除する際は削除する前にそのデバイスが壊れているとマークを付けます:&lt;br /&gt;
 # mdadm --fail /dev/md0 /dev/sdxx&lt;br /&gt;
&lt;br /&gt;
そしてアレイからデバイスを削除します:&lt;br /&gt;
 # mdadm -r /dev/md0 /dev/sdxx&lt;br /&gt;
&lt;br /&gt;
ドライブを完全に削除するときは (例えば、今後別の方法で使用する) 上記の2つのコマンドを実行した後に:&lt;br /&gt;
&lt;br /&gt;
 # mdadm --zero-superblock /dev/sdxx&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* 上記のコマンドを RAID0 アレイで実行してはいけません。データが消失してしまいます。&lt;br /&gt;
* 削除したディスクのスーパーブロックを消去せずに再利用した場合、再起動時に全てのデータが消失します。}}&lt;br /&gt;
&lt;br /&gt;
アレイの使用を停止:&lt;br /&gt;
# 対象のアレイをアンマウント&lt;br /&gt;
# 次のコマンドでアレイを停止: {{ic|mdadm --stop /dev/md0}}&lt;br /&gt;
# セクションの最初に書かれている3つのコマンドを各デバイスで繰り返し実行。&lt;br /&gt;
# {{ic|/etc/mdadm.conf}} から対応する行を削除&lt;br /&gt;
&lt;br /&gt;
=== アレイに新しいデバイスを追加する ===&lt;br /&gt;
デバイスがマウントされている動作中のシステム上で mdadm を使って新しいデバイスを追加することができます。上述しているように既存のアレイの一つとして同じレイアウトを使って新しいデバイスをパーティションしてください。&lt;br /&gt;
&lt;br /&gt;
RAID アレイを構築していない場合は構築します:&lt;br /&gt;
 # mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1&lt;br /&gt;
&lt;br /&gt;
アレイに新しいデバイスを追加:&lt;br /&gt;
 # mdadm --add /dev/md0 /dev/sdc1&lt;br /&gt;
&lt;br /&gt;
mdadm がデバイスを追加するのにはあまり時間はかかりません。進捗を確認するには:&lt;br /&gt;
 # cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
デバイスが追加されたかは次のコマンドで確認:&lt;br /&gt;
 # mdadm --misc --detail /dev/md0&lt;br /&gt;
&lt;br /&gt;
==== RAID0 アレイの場合 ====&lt;br /&gt;
&lt;br /&gt;
以下のようなエラーが表示された場合:&lt;br /&gt;
 mdadm: add new device failed for /dev/sdc1 as 2: Invalid argument&lt;br /&gt;
&lt;br /&gt;
これはおそらく RAID0 を使っていることが原因です。上のコマンドは新しいディスクを&amp;quot;スペア&amp;quot;として追加しますが、RAID0 にはスペアは存在しません。RAID0 アレイにデバイスを追加したいときは、一つのコマンドで &amp;quot;grow&amp;quot; して &amp;quot;add&amp;quot; する必要があります:&lt;br /&gt;
 # mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc1&lt;br /&gt;
&lt;br /&gt;
=== RAID ボリュームのサイズを増やす ===&lt;br /&gt;
&lt;br /&gt;
RAID アレイに巨大なディスクを追加した場合やパーティションサイズを増やした場合、RAID ボリュームのサイズを増加させて空き領域を埋めると良いでしょう。まずは上のセクションに従って RAID ボリュームを再構築してください。再構築が完了したら領域を埋めるように拡張してください:&lt;br /&gt;
 # mdadm --grow /dev/md0 --size=max&lt;br /&gt;
そして RAID ボリューム {{ic|/dev/md0}} に存在するパーティションのサイズを変更してください。詳しくは[[パーティショニング]]を参照。最後に、パーティション内のファイルシステムをリサイズしてください。{{ic|gparted}} でパーティショニングした場合、自動的にリサイズされます。他のツールを使った場合、パーティションをアンマウントして手動でファイルシステムをリサイズしてください:&lt;br /&gt;
{{bc|&lt;br /&gt;
# umount /storage&lt;br /&gt;
# fsck.ext4 -f /dev/md0p1&lt;br /&gt;
# resize2fs /dev/md0p1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 同期速度の制限を変更 ===&lt;br /&gt;
&lt;br /&gt;
同期には時間がかかります。マシンで他の作業をしていない場合、速度制限を上げることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|# cat /proc/mdstat|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Personalities : [raid1] &lt;br /&gt;
 md0 : active raid1 sda3[2] sdb3[1]&lt;br /&gt;
       155042219 blocks super 1.2 [2/1] [_U]&lt;br /&gt;
       [&amp;gt;....................]  recovery =  0.0% (77696/155042219) finish=265.8min speed=9712K/sec&lt;br /&gt;
       &lt;br /&gt;
 unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
現在の制限速度を確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# cat /proc/sys/dev/raid/speed_limit_min|&lt;br /&gt;
1000&lt;br /&gt;
}}&lt;br /&gt;
{{hc|# cat /proc/sys/dev/raid/speed_limit_max|&lt;br /&gt;
200000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
制限を上げる:&lt;br /&gt;
&lt;br /&gt;
 # echo 400000 &amp;gt;/proc/sys/dev/raid/speed_limit_min&lt;br /&gt;
 # echo 400000 &amp;gt;/proc/sys/dev/raid/speed_limit_max&lt;br /&gt;
&lt;br /&gt;
上記の設定後、同期速度と予想完了時間を確認してみてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# cat /proc/mdstat|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Personalities : [raid1] &lt;br /&gt;
 md0 : active raid1 sda3[2] sdb3[1]&lt;br /&gt;
       155042219 blocks super 1.2 [2/1] [_U]&lt;br /&gt;
       [&amp;gt;....................]  recovery =  1.3% (2136640/155042219) finish=158.2min speed=16102K/sec&lt;br /&gt;
      &lt;br /&gt;
 unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[sysctl#MDADM]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== 監視 ==&lt;br /&gt;
RAID デバイスの状態を出力するシンプルなワンライナー:&lt;br /&gt;
{{hc|awk &#039;/^md/ {printf &amp;quot;%s: &amp;quot;, $1}; /blocks/ {print $NF}&#039; &amp;lt;/proc/mdstat&lt;br /&gt;
|md1: [UU]&lt;br /&gt;
md0: [UU]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Watch mdstat===&lt;br /&gt;
{{bc|watch -t &#039;cat /proc/mdstat&#039;}}&lt;br /&gt;
または {{pkg|tmux}} を使う場合:&lt;br /&gt;
{{bc|tmux split-window -l 12 &amp;quot;watch -t &#039;cat /proc/mdstat&#039;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===iotop で IO を追跡===&lt;br /&gt;
{{pkg|iotop}} パッケージはプロセスの入出力の統計を表示します。次のコマンドを使って raid スレッドの IO を表示することができます。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;iotop -a -p $(sed &#039;s, , -p ,g&#039; &amp;lt;&amp;lt;&amp;lt;`pgrep &amp;quot;_raid|_resync|jbd2&amp;quot;`)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===iostat で IO を追跡 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|sysstat}} パッケージに入っている &#039;&#039;iostat&#039;&#039; ユーティリティはデバイスやパーティションの入出力の統計を表示します。&lt;br /&gt;
&lt;br /&gt;
  iostat -dmy 1 /dev/md0&lt;br /&gt;
  iostat -dmy 1 # all&lt;br /&gt;
&lt;br /&gt;
===イベントでメールを送信===&lt;br /&gt;
smtp メールサーバー (sendmail) かメールフォワーダ (ssmtp/msmtp) が必要です。おそらく一番シンプルな方法は {{AUR|dma}} を使うことです。とても小さく (インストール容量 0.08 MiB) でセットアップがいりません。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/mdadm.conf}} を編集して通知を受信するメールアドレスを指定します。&lt;br /&gt;
{{Note|上記のとおり dma を使用する場合、外部のメールアドレスではなくローカルホストのユーザー名に直接メールを送ることができます。}}&lt;br /&gt;
&lt;br /&gt;
設定をテストするには:&lt;br /&gt;
 # mdadm --monitor --scan --oneshot --test&lt;br /&gt;
&lt;br /&gt;
[[mdadm]] には監視作業を行う systemd サービス (mdmonitor.service) が含まれているため、ここで、やるべきことはもうありません。{{ic|/etc/mdadm.conf}} でメールアドレスを設定していないと、サービスは失敗します。mdadm イベントでメールを受けとりたくない場合は、サービスの失敗は無視してかまいません。通知を表示したくなく、失敗メッセージが気になるならば、ユニットをマスクしてください。&lt;br /&gt;
&lt;br /&gt;
==== その他の方法 ====&lt;br /&gt;
&lt;br /&gt;
smtp メールサーバーやメールフォワーダをインストールする代わりに、既存の [[S-nail]] ツールを使うこともできます (忘れずにセットアップしてください)。&lt;br /&gt;
&lt;br /&gt;
以下の内容で {{ic|/etc/mdadm_warning.sh}} という名前のファイルを作成:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 event=$1&lt;br /&gt;
 device=$2&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot; &amp;quot; | /usr/bin/mailx -s &amp;quot;$event on $device&amp;quot; &#039;&#039;&#039;destination@email.com&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
実行権限を与えます: {{ic|chmod +x /etc/mdadm_warning.sh}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|mdadm.conf}} にこのファイルを追加してください:&lt;br /&gt;
&lt;br /&gt;
 PROGRAM /etc/mdadm_warning.sh&lt;br /&gt;
&lt;br /&gt;
前記の方法と同じ方法でテスト・有効化します。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
再起動した時に &amp;quot;invalid raid superblock magic&amp;quot; というエラーが表示される場合、ハードドライブを追加したときは、ハードドライブの順番が正しいか確認してください。インストール時の RAID デバイスは hdd, hde, hdf だったとしても起動時には hda, hdb, hdc になっているかもしれません。カーネルラインをそれにあわせて修正してください。&lt;br /&gt;
&lt;br /&gt;
===エラー: &amp;quot;kernel: ataX.00: revalidation failed&amp;quot;===&lt;br /&gt;
突然 (再起動後または BIOS の設定を変更した後) 以下のようなエラーメッセージが表示された場合:&lt;br /&gt;
&lt;br /&gt;
 Feb  9 08:15:46 hostserver kernel: ata8.00: revalidation failed (errno=-5)&lt;br /&gt;
&lt;br /&gt;
これは必ずしもドライブが壊れたことを意味しているわけはありません。要するに、まだあわてるような時間じゃありません。BIOS やカーネルパラメータで APIC または ACPI 設定を変更した場合、設定を戻せば問題ないはずです。大抵は、ACPI をオフにすれば直ります。&lt;br /&gt;
&lt;br /&gt;
===読み取り専用でアレイを起動===&lt;br /&gt;
md アレイが起動すると、スーパーブロックが書き出され、resync が走ることがあります。読み取り専用で起動するにはカーネルモジュール {{ic|md_mod}} のパラメータ {{ic|start_ro}} を設定します。これが設定されている場合、新しいアレイは &#039;auto-ro&#039; モードになり、内部 io (スーパーブロックの更新, resync, recovery) が全て無効化されて、書き込みリクエストが来た時に初めて &#039;rw&#039; に自動的に切り替わります。&lt;br /&gt;
&lt;br /&gt;
{{Note|最初の書き込みリクエストがある前に {{ic|mdadm --readonly}} を使うことでアレイを完全な &#039;ro&#039; モードに設定できます。また、{{ic|mdadm --readwrite}} で書き込みを行わないで再同期を開始できます。}}&lt;br /&gt;
&lt;br /&gt;
起動時にパラメータを設定するには、カーネル行に {{ic|&amp;lt;nowiki&amp;gt;md_mod.start_ro=1&amp;lt;/nowiki&amp;gt;}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
もしくはモジュールのロード時に {{ic|/etc/modprobe.d/}} ファイルや {{ic|/sys/}} から直接設定します。&lt;br /&gt;
{{bc|echo 1 &amp;gt; /sys/module/md_mod/parameters/start_ro}}&lt;br /&gt;
&lt;br /&gt;
===raid の故障したまたは存在しないドライブからリカバリする===&lt;br /&gt;
何らかの理由でドライブの一つが壊れた時も上述のエラーが表示されることがあります。その場合、ディスクが一つ足りない状態でも raid がオンになるようにしなくてはなりません。次のコマンドを入力 (必要に応じて変更してください):&lt;br /&gt;
 # mdadm --manage /dev/md0 --run&lt;br /&gt;
&lt;br /&gt;
これで次のようにしてまたマウントできるようになったはずです (fstab で記述している場合):&lt;br /&gt;
 # mount /dev/md0&lt;br /&gt;
&lt;br /&gt;
raid がまた動作するようになって使えるようにはなりましたが、ディスクが一つ不足しています。ディスクを追加するために[[#デバイスの準備|デバイスの準備]]で記述しているようにしてパーティションしてください。パーティションしたら次のコマンドで raid に新しいディスクを追加できます:&lt;br /&gt;
 # mdadm --manage --add /dev/md0 /dev/sdd1&lt;br /&gt;
&lt;br /&gt;
次を入力すれば:&lt;br /&gt;
 # cat /proc/mdstat&lt;br /&gt;
raid が有効になって再構築されたことが確認できるでしょう。&lt;br /&gt;
&lt;br /&gt;
設定を更新しても良いかもしれません (参照: [[#設定ファイルの更新|設定ファイルの更新]])。&lt;br /&gt;
&lt;br /&gt;
== ベンチマーク ==&lt;br /&gt;
RAID をベンチマークするツールは複数存在します。同じ RAID ボリュームからマルチスレッドで読み取るときの速度向上が一番の改善点になります。&lt;br /&gt;
&lt;br /&gt;
{{AUR|tiobench}}{{Broken package link|パッケージが存在しません}} はフルスレッドによるディスク I/O を計測することでパフォーマンスがどれくらい向上したかベンチマークします。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bonnie++}} はひとつまたは複数のファイルへのデータベースタイプのアクセスをテストしたり、小さなファイルを作成・読込・削除することで Squid や INN、または Maildir フォーマットのメールなどといったプログラムの使用をシミュレートします。同梱されている [http://www.coker.com.au/bonnie++/zcav/ ZCAV] プログラムはディスクに書き込みを行わずにハードドライブの領域のパフォーマンスをテストします。&lt;br /&gt;
&lt;br /&gt;
{{ic|hdparm}} を RAID のベンチマークに使っては&#039;&#039;&#039;いけません&#039;&#039;&#039;、出てくる結果には全く一貫性がありません。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* Linux カーネルアーカイブの [http://raid.wiki.kernel.org/index.php/Linux_Raid Linux RAID wiki エントリ]&lt;br /&gt;
* [https://raid.wiki.kernel.org/index.php/Write-intent_bitmap How Bitmaps Work]&lt;br /&gt;
* Red Hat Enterprise Linux 6 ドキュメントの [https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-raid.html 第17章: Redundant Array of Independent Disks (RAID)]&lt;br /&gt;
* [http://tldp.org/FAQ/Linux-RAID-FAQ/x37.html Linux-RAID FAQ] on the Linux Documentation Project&lt;br /&gt;
* [http://support.dell.com/support/topics/global.aspx/support/entvideos/raid?c=us&amp;amp;l=en&amp;amp;s=gen Dell.com Raid Tutorial] - Interactive Walkthrough of Raid&lt;br /&gt;
* [http://www.miracleas.com/BAARF/ BAARF] including &#039;&#039;[http://www.miracleas.com/BAARF/RAID5_versus_RAID10.txt Why should I not use RAID 5?]&#039;&#039; by Art S. Kagel&lt;br /&gt;
* [http://www.linux-mag.com/id/7924/ Introduction to RAID], [http://www.linux-mag.com/id/7931/ Nested-RAID: RAID-5 and RAID-6 Based Configurations], [http://www.linux-mag.com/id/7928/ Intro to Nested-RAID: RAID-01 and RAID-10], and [http://www.linux-mag.com/id/7932/ Nested-RAID: The Triple Lindy] in Linux Magazine&lt;br /&gt;
* [http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html HowTo: Speed Up Linux Software Raid Building And Re-syncing]&lt;br /&gt;
* [http://fomori.org/blog/?p=94 RAID5-Server to hold all your data]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;既知のバグ&#039;&#039;&#039;&lt;br /&gt;
* [http://marc.info/?l=linux-raid&amp;amp;m=144960710718870&amp;amp;w=2 linux-raid ML #1]&lt;br /&gt;
* [http://marc.info/?l=linux-raid&amp;amp;m=144830809503689&amp;amp;w=2 linux-raid ML #2]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mdadm&#039;&#039;&#039;&lt;br /&gt;
* [http://anonscm.debian.org/gitweb/?p=pkg-mdadm/mdadm.git;a=blob_plain;f=debian/FAQ;hb=HEAD Debian mdadm FAQ]&lt;br /&gt;
* [https://www.kernel.org/pub/linux/utils/raid/mdadm/ mdadm ソースコード]&lt;br /&gt;
* [http://www.linux-mag.com/id/7939/ Software RAID on Linux with mdadm] in Linux Magazine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;フォーラムスレッド&#039;&#039;&#039;&lt;br /&gt;
* [http://forums.overclockers.com.au/showthread.php?t=865333 Raid Performance Improvements with bitmaps]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=125445 GRUB and GRUB2]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=123698 Can&#039;t install grub2 on software RAID]&lt;br /&gt;
* [https://forums.gentoo.org/viewtopic-t-888624-start-0.html Use RAID metadata 1.2 in boot and root partition]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID と暗号化&#039;&#039;&#039;&lt;br /&gt;
* [http://www.shimari.com/dm-crypt-on-raid/ Linux/Fedora: Encrypt /home and swap over RAID with dm-crypt] by Justin Wells&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26965</id>
		<title>NVIDIA Optimus</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26965"/>
		<updated>2022-08-20T14:50:29Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* いくつかの方法 */ 英語版を元に他の手法について追記&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィック]]&lt;br /&gt;
[[en:NVIDIA Optimus]]&lt;br /&gt;
[[ru:NVIDIA Optimus]]&lt;br /&gt;
[[zh-hans:NVIDIA Optimus]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|External GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:NVIDIA Optimus|NVIDIA Optimus]] は Intel の内蔵 GPU とディスクリートの NVIDIA GPU をノートパソコンに組み込んで利用できるようにする技術です。&lt;br /&gt;
&lt;br /&gt;
== いくつかの方法 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E3.82.A4.E3.83.B3.E3.83.86.E3.83.AB.E3.81.AE.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.81.AE.E3.81.BF.E3.82.92.E4.BD.BF.E7.94.A8 インテルのグラフィックスのみを使用] -NVIDIA GPU の電源は完全にオフになるため、消費電力を節約できます。&lt;br /&gt;
* [[NVIDIA_Optimus#nvidia グラフィックのみを使用|nvidia グラフィックのみを使用]] -インテルグラフィックスよりもパフォーマンスは向上しますが、より多くのバッテリを消費します (モバイルデバイスには適していません) 。これは、 [[#optimus-manager を使用する|optimus-manager ]] および [[#nvidia-xrun を使用する|nvidia-xrun]] オプションと同じ基本プロセスを利用しており、より自動化されたアプローチの1つを選択する前に、一般的な機能のトラブルシューティングおよび検証する必要があります。&lt;br /&gt;
* 両方を使用する (必要に応じて NVIDIA GPU を使用し、電源を切ったままにして電力を節約する) :&lt;br /&gt;
** [[#PRIME レンダリングオフロードを使用する]] -NVIDIA が公式にサポートしている方法です。&lt;br /&gt;
** [[#optimus-manager を使用する]] -1つのコマンドでグラフィックスを切り替えます (有効にするにはログアウトとログインが必要です) NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。&lt;br /&gt;
** [[#nvidia-xrun を使用する]] -NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。&lt;br /&gt;
** [[#Bumblebee を使用]] -インテルのグラフィックスを他のすべてのものに使用しながら、選択したアプリケーションをNVIDIA のグラフィックスで実行できるようにすることで、Windows に似た機能を提供します。しかし、パフォーマンスに重大な問題があります。&lt;br /&gt;
** [[#nouveau を使う]] -独自の NVIDIA ドライバと比較してパフォーマンスが低く、スリープと休止状態で問題が発生する可能性があります。最新の NVIDIA GPU では動作しません。&lt;br /&gt;
** [[#EnvyControl を使用する]] - optimus-manager と同様な方法ですが、大量な設定なしで使えます。またバックグラウンドでデーモンを実行する必要もなく、GNOME ユーザーであっても GDM のパッチバージョンをインストールする必要もありません。&lt;br /&gt;
** [[#NVidia-eXec を使用する]] - Bumblebee と同様ですが、パフォーマンス低下の問題の影響はありません。Xorg と Wayland で動作します。ただし、この手法はまだ実験段階で、GNOME/GDM の環境下でのみテストされているだけです。&lt;br /&gt;
** [[#nvidia-switch を使用する]] - nvidia-xrun と同様な手法ですが、TTY を変更する必要がありません。切替はディスプレイマネージャ下でのログインとログアウトによって行われます。しかしながら、このパッケージは Debian ライクなシステムでのみテストされているだけです。とはいっても、nvidia-xrun と同様、他の Linux システム全てで動作するはずです。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== インテルのグラフィックスのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
特定の GPU のみに切り替えずに使用する場合は、システムの BIOS でオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、個別のカードを無効にすることしかできない場合や、その逆の場合がありますが、カードのうちの1つだけを使用する予定があるかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
BIOS が Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== レンダリングプロバイダを切り替えずに CUDA を使用 ===&lt;br /&gt;
&lt;br /&gt;
CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、 [[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず {{ic|nvidia}} カーネルモジュールをアンロードする必要があります。&lt;br /&gt;
&lt;br /&gt;
 #rmmod nvidia_uvm&lt;br /&gt;
 #rmmod NVIDIA&lt;br /&gt;
&lt;br /&gt;
== nvidia グラフィックのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA|プロプライエタリの NVIDIA ドライバー]]は nouveau ドライバーのような動的な切り替えはサポートしていません (つまり NVIDIA デバイスしか使用できません)。また、NVIDIA は画面にティアリングが発生する問題を認識していますが未だに修正がなされていません。そのかわり、ディスクリート GPU を利用して nouveau ドライバーよりも高い性能を発揮することができます (2017年1月現在)。&lt;br /&gt;
&lt;br /&gt;
まず {{Pkg|nvidia}} と {{Pkg|xorg-xrandr}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|xorg.conf}} を設定します。NVIDIA カードの PCI アドレスを知る必要があるので、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci | grep -E &amp;quot;VGA|3D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NVIDIA と書かれた行の最初の7文字が PCI アドレスです。例えば {{ic|01:00.0}} などと表記されます。{{ic|xorg.conf}} では {{ic|#:#:#}} という形式で表記する必要があります。例えば {{ic|01:00.0}} の場合 {{ic|1:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。解決方法は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;intel&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;i915&amp;quot;&lt;br /&gt;
    Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;nvidia-drm&amp;quot;&lt;br /&gt;
    Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option &amp;quot;AllowEmptyInitialConfiguration&amp;quot;&lt;br /&gt;
    Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/nvidia/xorg&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/xorg/modules&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|~/.xinitrc}} の最初に以下の2行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そしてドライバーをロードするために再起動し、X を起動させます。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの dpi が正しくない場合は以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 xrandr --dpi 96&lt;br /&gt;
&lt;br /&gt;
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した {{ic|xrandr}} コマンドの後にアンパサンドがないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。&lt;br /&gt;
&lt;br /&gt;
アンパサンドがないのに黒画面になる場合、下の [[#別の設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャを使用する場合、{{ic|~/.xinitrc}} の代わりにディスプレイマネージャのディスプレイ設定スクリプトを作成・編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== LightDM ====&lt;br /&gt;
&lt;br /&gt;
[[LightDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/display_setup.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに実行可能属性を付与:&lt;br /&gt;
&lt;br /&gt;
 # chmod +x /etc/lightdm/display_setup.sh&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lightdm/lightdm.conf}} の {{ic|[Seat:*]}} セクションを編集してスクリプトを実行するように lightdm を設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|output=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
display-setup-script=/etc/lightdm/display_setup.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動して、ディスプレイマネージャが起動するのを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ====&lt;br /&gt;
[[SDDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GDM ====&lt;br /&gt;
[[GDM]] ディスプレイマネージャの場合 {{ic|.desktop}} ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Optimus&lt;br /&gt;
Exec=sh -c &amp;quot;xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto&amp;quot;&lt;br /&gt;
NoDisplay=true&lt;br /&gt;
X-GNOME-Autostart-Phase=DisplayServer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、GDM が [[GDM#Xorg バックエンドを使う|Xorg バックエンドを使う]]ようになっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== KDM ====&lt;br /&gt;
&lt;br /&gt;
KDE の [[KDM]] の場合、{{ic|/usr/share/config/kdm/Xsetup}} に xrandr の行を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== 3D の確認 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA グラフィックが使われているかどうかは {{Pkg|mesa-demos}} をインストールして次のコマンドを実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== 詳細情報 ===&lt;br /&gt;
&lt;br /&gt;
詳しい情報は、NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 切り替え可能なグラフィックスを使用 ==&lt;br /&gt;
&lt;br /&gt;
=== PRIME レンダリングオフロードを使用する===&lt;br /&gt;
&lt;br /&gt;
これは、切り替え可能なグラフィックスをサポートする公式の NVIDIA メソッドです。&lt;br /&gt;
&lt;br /&gt;
詳細については、 [[PRIME#PRIME render offload]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nouveau を使う===&lt;br /&gt;
&lt;br /&gt;
グラフィックスイッチングについては [[PRIME]] を、オープンソースの NVIDIA ドライバについては [[nouveau]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Bumblebee を使用===&lt;br /&gt;
&lt;br /&gt;
[[Bumblebee]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-xrun を使用する ===&lt;br /&gt;
&lt;br /&gt;
[[nvidia-xrun]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-manager を使用する ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Askannz/optimus-manager Optimus-manager] アップストリームのドキュメントを参照してください。Arch Linux システムでのインストールと設定の両方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== EnvyControl を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/geminis3/envycontrol EnvyControl] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== NVidia-eXec を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/pedro00dk/nvidia-exec NVidia-eXec] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-switch を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/nvidiaswitch/nvidia-switch nvidia-switch] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 垂直同期が機能せずティアリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
解決するには {{pkg|xorg-server}} 1.19 以上、{{pkg|linux}} カーネル 4.5 以上、{{pkg|nvidia}} 370.23 以上が必須です。[[NVIDIA#DRM カーネルモードセッティング]]を有効にすることで PRIME 同期が有効になりティアリングが解消されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは公式の [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===&lt;br /&gt;
&lt;br /&gt;
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=169742 こちら] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
nVidia ドライバーがディスプレイの EDID を検出できないのが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。&lt;br /&gt;
&lt;br /&gt;
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の nvidia カードの Device セクションを編集して、以下の行を追加して適当にパスを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-0&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;CustomEDID&amp;quot; &amp;quot;CRT-0:/sys/class/drm/card0-LVDS-1/edid&amp;quot;&lt;br /&gt;
	Option		&amp;quot;IgnoreEDID&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;UseEDID&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。card0 は intel カードの識別子でディスプレイは LVDS で接続されています。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。パスの先頭の {{ic|/sys/class/drm}} は変わらないはずです。&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modeline も使えますが、&amp;quot;UseEDID&amp;quot; と &amp;quot;IgnoreEDID&amp;quot; は変更するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wrong resolution without EDID errors ===&lt;br /&gt;
&lt;br /&gt;
Using &#039;&#039;nvidia-xconfig&#039;&#039;, incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the {{ic|HorizSync}}/{{ic|VertRefresh}} lines. If this helps, you can probably also remove everything else not mentioned in this article.&lt;br /&gt;
&lt;br /&gt;
=== ロックアップ問題 (lspci がフリーズ) ===&lt;br /&gt;
GTX 965M が搭載された最新のノートパソコンで (Bumblebee などで) bbswitch や nouveau を使ったときに lspci がフリーズしたり、サスペンドが失敗したり、シャットダウン時に止まってしまったり、optirun でフリーズが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。&lt;br /&gt;
&lt;br /&gt;
解決方法については [https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 こちら] を見てください。また、{{ic|1=acpi_osi=&amp;quot;!Windows 2015&amp;quot;}} や {{ic|1=acpi_osi=! acpi_osi=&amp;quot;Windows 2009&amp;quot;}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。&lt;br /&gt;
&lt;br /&gt;
=== No screens found on a laptop/NVIDIA Optimus ===&lt;br /&gt;
&lt;br /&gt;
Check if {{ic|&amp;lt;nowiki&amp;gt;$ lspci | grep VGA&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
outputs something similar to:&lt;br /&gt;
 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)&lt;br /&gt;
 01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)&lt;br /&gt;
&lt;br /&gt;
NVIDIA drivers now offer Optimus support since 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] with kernels above and including 3.9.&lt;br /&gt;
&lt;br /&gt;
Another solution is to install the [[Intel]] driver to handle the screens, then if you want 3D software you should run them through [[Bumblebee]] to tell them to use the NVIDIA card.&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26963</id>
		<title>NVIDIA Optimus</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26963"/>
		<updated>2022-08-20T14:39:32Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* いくつかの方法 */ リンクの微調整&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィック]]&lt;br /&gt;
[[en:NVIDIA Optimus]]&lt;br /&gt;
[[ru:NVIDIA Optimus]]&lt;br /&gt;
[[zh-hans:NVIDIA Optimus]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|External GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:NVIDIA Optimus|NVIDIA Optimus]] は Intel の内蔵 GPU とディスクリートの NVIDIA GPU をノートパソコンに組み込んで利用できるようにする技術です。&lt;br /&gt;
&lt;br /&gt;
== いくつかの方法 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E3.82.A4.E3.83.B3.E3.83.86.E3.83.AB.E3.81.AE.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.81.AE.E3.81.BF.E3.82.92.E4.BD.BF.E7.94.A8 インテルのグラフィックスのみを使用] -NVIDIA GPU の電源は完全にオフになるため、消費電力を節約できます。&lt;br /&gt;
* [[NVIDIA_Optimus#nvidia グラフィックのみを使用|nvidia グラフィックのみを使用]] -インテルグラフィックスよりもパフォーマンスは向上しますが、より多くのバッテリを消費します (モバイルデバイスには適していません) 。これは、 [[#optimus-manager を使用する|optimus-manager ]] および [[#nvidia-xrun を使用する|nvidia-xrun]] オプションと同じ基本プロセスを利用しており、より自動化されたアプローチの1つを選択する前に、一般的な機能のトラブルシューティングおよび検証する必要があります。&lt;br /&gt;
* 両方を使用する (必要に応じて NVIDIA GPU を使用し、電源を切ったままにして電力を節約する) :&lt;br /&gt;
** [[#PRIME レンダリングオフロードを使用する]] -NVIDIA が公式にサポートしている方法です。&lt;br /&gt;
** [[#optimus-manager を使用する]] -1つのコマンドでグラフィックスを切り替えます (有効にするにはログアウトとログインが必要です) NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。&lt;br /&gt;
** [[#nvidia-xrun を使用する]] -NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。&lt;br /&gt;
** [[#Bumblebee を使用]] -インテルのグラフィックスを他のすべてのものに使用しながら、選択したアプリケーションをNVIDIA のグラフィックスで実行できるようにすることで、Windows に似た機能を提供します。しかし、パフォーマンスに重大な問題があります。&lt;br /&gt;
** [[#nouveau を使う]] -独自の NVIDIA ドライバと比較してパフォーマンスが低く、スリープと休止状態で問題が発生する可能性があります。最新の NVIDIA GPU では動作しません。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== インテルのグラフィックスのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
特定の GPU のみに切り替えずに使用する場合は、システムの BIOS でオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、個別のカードを無効にすることしかできない場合や、その逆の場合がありますが、カードのうちの1つだけを使用する予定があるかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
BIOS が Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== レンダリングプロバイダを切り替えずに CUDA を使用 ===&lt;br /&gt;
&lt;br /&gt;
CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、 [[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず {{ic|nvidia}} カーネルモジュールをアンロードする必要があります。&lt;br /&gt;
&lt;br /&gt;
 #rmmod nvidia_uvm&lt;br /&gt;
 #rmmod NVIDIA&lt;br /&gt;
&lt;br /&gt;
== nvidia グラフィックのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA|プロプライエタリの NVIDIA ドライバー]]は nouveau ドライバーのような動的な切り替えはサポートしていません (つまり NVIDIA デバイスしか使用できません)。また、NVIDIA は画面にティアリングが発生する問題を認識していますが未だに修正がなされていません。そのかわり、ディスクリート GPU を利用して nouveau ドライバーよりも高い性能を発揮することができます (2017年1月現在)。&lt;br /&gt;
&lt;br /&gt;
まず {{Pkg|nvidia}} と {{Pkg|xorg-xrandr}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|xorg.conf}} を設定します。NVIDIA カードの PCI アドレスを知る必要があるので、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci | grep -E &amp;quot;VGA|3D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NVIDIA と書かれた行の最初の7文字が PCI アドレスです。例えば {{ic|01:00.0}} などと表記されます。{{ic|xorg.conf}} では {{ic|#:#:#}} という形式で表記する必要があります。例えば {{ic|01:00.0}} の場合 {{ic|1:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。解決方法は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;intel&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;i915&amp;quot;&lt;br /&gt;
    Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;nvidia-drm&amp;quot;&lt;br /&gt;
    Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option &amp;quot;AllowEmptyInitialConfiguration&amp;quot;&lt;br /&gt;
    Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/nvidia/xorg&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/xorg/modules&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|~/.xinitrc}} の最初に以下の2行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そしてドライバーをロードするために再起動し、X を起動させます。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの dpi が正しくない場合は以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 xrandr --dpi 96&lt;br /&gt;
&lt;br /&gt;
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した {{ic|xrandr}} コマンドの後にアンパサンドがないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。&lt;br /&gt;
&lt;br /&gt;
アンパサンドがないのに黒画面になる場合、下の [[#別の設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャを使用する場合、{{ic|~/.xinitrc}} の代わりにディスプレイマネージャのディスプレイ設定スクリプトを作成・編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== LightDM ====&lt;br /&gt;
&lt;br /&gt;
[[LightDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/display_setup.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに実行可能属性を付与:&lt;br /&gt;
&lt;br /&gt;
 # chmod +x /etc/lightdm/display_setup.sh&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lightdm/lightdm.conf}} の {{ic|[Seat:*]}} セクションを編集してスクリプトを実行するように lightdm を設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|output=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
display-setup-script=/etc/lightdm/display_setup.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動して、ディスプレイマネージャが起動するのを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ====&lt;br /&gt;
[[SDDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GDM ====&lt;br /&gt;
[[GDM]] ディスプレイマネージャの場合 {{ic|.desktop}} ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Optimus&lt;br /&gt;
Exec=sh -c &amp;quot;xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto&amp;quot;&lt;br /&gt;
NoDisplay=true&lt;br /&gt;
X-GNOME-Autostart-Phase=DisplayServer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、GDM が [[GDM#Xorg バックエンドを使う|Xorg バックエンドを使う]]ようになっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== KDM ====&lt;br /&gt;
&lt;br /&gt;
KDE の [[KDM]] の場合、{{ic|/usr/share/config/kdm/Xsetup}} に xrandr の行を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== 3D の確認 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA グラフィックが使われているかどうかは {{Pkg|mesa-demos}} をインストールして次のコマンドを実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== 詳細情報 ===&lt;br /&gt;
&lt;br /&gt;
詳しい情報は、NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 切り替え可能なグラフィックスを使用 ==&lt;br /&gt;
&lt;br /&gt;
=== PRIME レンダリングオフロードを使用する===&lt;br /&gt;
&lt;br /&gt;
これは、切り替え可能なグラフィックスをサポートする公式の NVIDIA メソッドです。&lt;br /&gt;
&lt;br /&gt;
詳細については、 [[PRIME#PRIME render offload]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nouveau を使う===&lt;br /&gt;
&lt;br /&gt;
グラフィックスイッチングについては [[PRIME]] を、オープンソースの NVIDIA ドライバについては [[nouveau]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Bumblebee を使用===&lt;br /&gt;
&lt;br /&gt;
[[Bumblebee]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-xrun を使用する ===&lt;br /&gt;
&lt;br /&gt;
[[nvidia-xrun]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-manager を使用する ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Askannz/optimus-manager Optimus-manager] アップストリームのドキュメントを参照してください。Arch Linux システムでのインストールと設定の両方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== EnvyControl を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/geminis3/envycontrol EnvyControl] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== NVidia-eXec を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/pedro00dk/nvidia-exec NVidia-eXec] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-switch を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/nvidiaswitch/nvidia-switch nvidia-switch] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 垂直同期が機能せずティアリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
解決するには {{pkg|xorg-server}} 1.19 以上、{{pkg|linux}} カーネル 4.5 以上、{{pkg|nvidia}} 370.23 以上が必須です。[[NVIDIA#DRM カーネルモードセッティング]]を有効にすることで PRIME 同期が有効になりティアリングが解消されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは公式の [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===&lt;br /&gt;
&lt;br /&gt;
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=169742 こちら] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
nVidia ドライバーがディスプレイの EDID を検出できないのが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。&lt;br /&gt;
&lt;br /&gt;
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の nvidia カードの Device セクションを編集して、以下の行を追加して適当にパスを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-0&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;CustomEDID&amp;quot; &amp;quot;CRT-0:/sys/class/drm/card0-LVDS-1/edid&amp;quot;&lt;br /&gt;
	Option		&amp;quot;IgnoreEDID&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;UseEDID&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。card0 は intel カードの識別子でディスプレイは LVDS で接続されています。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。パスの先頭の {{ic|/sys/class/drm}} は変わらないはずです。&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modeline も使えますが、&amp;quot;UseEDID&amp;quot; と &amp;quot;IgnoreEDID&amp;quot; は変更するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wrong resolution without EDID errors ===&lt;br /&gt;
&lt;br /&gt;
Using &#039;&#039;nvidia-xconfig&#039;&#039;, incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the {{ic|HorizSync}}/{{ic|VertRefresh}} lines. If this helps, you can probably also remove everything else not mentioned in this article.&lt;br /&gt;
&lt;br /&gt;
=== ロックアップ問題 (lspci がフリーズ) ===&lt;br /&gt;
GTX 965M が搭載された最新のノートパソコンで (Bumblebee などで) bbswitch や nouveau を使ったときに lspci がフリーズしたり、サスペンドが失敗したり、シャットダウン時に止まってしまったり、optirun でフリーズが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。&lt;br /&gt;
&lt;br /&gt;
解決方法については [https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 こちら] を見てください。また、{{ic|1=acpi_osi=&amp;quot;!Windows 2015&amp;quot;}} や {{ic|1=acpi_osi=! acpi_osi=&amp;quot;Windows 2009&amp;quot;}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。&lt;br /&gt;
&lt;br /&gt;
=== No screens found on a laptop/NVIDIA Optimus ===&lt;br /&gt;
&lt;br /&gt;
Check if {{ic|&amp;lt;nowiki&amp;gt;$ lspci | grep VGA&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
outputs something similar to:&lt;br /&gt;
 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)&lt;br /&gt;
 01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)&lt;br /&gt;
&lt;br /&gt;
NVIDIA drivers now offer Optimus support since 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] with kernels above and including 3.9.&lt;br /&gt;
&lt;br /&gt;
Another solution is to install the [[Intel]] driver to handle the screens, then if you want 3D software you should run them through [[Bumblebee]] to tell them to use the NVIDIA card.&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26962</id>
		<title>NVIDIA Optimus</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26962"/>
		<updated>2022-08-20T14:38:21Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 切り替え可能なグラフィックスを使用 */ 英語版を元に追記&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィック]]&lt;br /&gt;
[[en:NVIDIA Optimus]]&lt;br /&gt;
[[ru:NVIDIA Optimus]]&lt;br /&gt;
[[zh-hans:NVIDIA Optimus]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|External GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:NVIDIA Optimus|NVIDIA Optimus]] は Intel の内蔵 GPU とディスクリートの NVIDIA GPU をノートパソコンに組み込んで利用できるようにする技術です。&lt;br /&gt;
&lt;br /&gt;
== いくつかの方法 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E3.82.A4.E3.83.B3.E3.83.86.E3.83.AB.E3.81.AE.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.81.AE.E3.81.BF.E3.82.92.E4.BD.BF.E7.94.A8 インテルのグラフィックスのみを使用] -NVIDIA GPU の電源は完全にオフになるため、消費電力を節約できます。&lt;br /&gt;
* [[NVIDIA_Optimus#nvidia グラフィックのみを使用|nvidia グラフィックのみを使用]] -インテルグラフィックスよりもパフォーマンスは向上しますが、より多くのバッテリを消費します (モバイルデバイスには適していません) 。これは、 [[#optimus-managerを使用する|optimus-manager ]] および [[#nvidia-xrun を使用する|nvidia-xrun]] オプションと同じ基本プロセスを利用しており、より自動化されたアプローチの1つを選択する前に、一般的な機能のトラブルシューティングおよび検証する必要があります。&lt;br /&gt;
* 両方を使用する (必要に応じて NVIDIA GPU を使用し、電源を切ったままにして電力を節約する) :&lt;br /&gt;
** [[#PRIME レンダリングオフロードを使用する]] -NVIDIA が公式にサポートしている方法です。&lt;br /&gt;
** [[#optimus-managerを使用する]] -1つのコマンドでグラフィックスを切り替えます (有効にするにはログアウトとログインが必要です) NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。&lt;br /&gt;
** [[#nvidia-xrun を使用する]] -NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。&lt;br /&gt;
** [[#Bumblebee を使用]] -インテルのグラフィックスを他のすべてのものに使用しながら、選択したアプリケーションをNVIDIA のグラフィックスで実行できるようにすることで、Windows に似た機能を提供します。しかし、パフォーマンスに重大な問題があります。&lt;br /&gt;
** [[#nouveau を使う]] -独自の NVIDIA ドライバと比較してパフォーマンスが低く、スリープと休止状態で問題が発生する可能性があります。最新の NVIDIA GPU では動作しません。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== インテルのグラフィックスのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
特定の GPU のみに切り替えずに使用する場合は、システムの BIOS でオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、個別のカードを無効にすることしかできない場合や、その逆の場合がありますが、カードのうちの1つだけを使用する予定があるかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
BIOS が Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== レンダリングプロバイダを切り替えずに CUDA を使用 ===&lt;br /&gt;
&lt;br /&gt;
CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、 [[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず {{ic|nvidia}} カーネルモジュールをアンロードする必要があります。&lt;br /&gt;
&lt;br /&gt;
 #rmmod nvidia_uvm&lt;br /&gt;
 #rmmod NVIDIA&lt;br /&gt;
&lt;br /&gt;
== nvidia グラフィックのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA|プロプライエタリの NVIDIA ドライバー]]は nouveau ドライバーのような動的な切り替えはサポートしていません (つまり NVIDIA デバイスしか使用できません)。また、NVIDIA は画面にティアリングが発生する問題を認識していますが未だに修正がなされていません。そのかわり、ディスクリート GPU を利用して nouveau ドライバーよりも高い性能を発揮することができます (2017年1月現在)。&lt;br /&gt;
&lt;br /&gt;
まず {{Pkg|nvidia}} と {{Pkg|xorg-xrandr}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|xorg.conf}} を設定します。NVIDIA カードの PCI アドレスを知る必要があるので、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci | grep -E &amp;quot;VGA|3D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NVIDIA と書かれた行の最初の7文字が PCI アドレスです。例えば {{ic|01:00.0}} などと表記されます。{{ic|xorg.conf}} では {{ic|#:#:#}} という形式で表記する必要があります。例えば {{ic|01:00.0}} の場合 {{ic|1:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。解決方法は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;intel&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;i915&amp;quot;&lt;br /&gt;
    Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;nvidia-drm&amp;quot;&lt;br /&gt;
    Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option &amp;quot;AllowEmptyInitialConfiguration&amp;quot;&lt;br /&gt;
    Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/nvidia/xorg&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/xorg/modules&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|~/.xinitrc}} の最初に以下の2行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そしてドライバーをロードするために再起動し、X を起動させます。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの dpi が正しくない場合は以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 xrandr --dpi 96&lt;br /&gt;
&lt;br /&gt;
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した {{ic|xrandr}} コマンドの後にアンパサンドがないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。&lt;br /&gt;
&lt;br /&gt;
アンパサンドがないのに黒画面になる場合、下の [[#別の設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャを使用する場合、{{ic|~/.xinitrc}} の代わりにディスプレイマネージャのディスプレイ設定スクリプトを作成・編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== LightDM ====&lt;br /&gt;
&lt;br /&gt;
[[LightDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/display_setup.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに実行可能属性を付与:&lt;br /&gt;
&lt;br /&gt;
 # chmod +x /etc/lightdm/display_setup.sh&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lightdm/lightdm.conf}} の {{ic|[Seat:*]}} セクションを編集してスクリプトを実行するように lightdm を設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|output=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
display-setup-script=/etc/lightdm/display_setup.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動して、ディスプレイマネージャが起動するのを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ====&lt;br /&gt;
[[SDDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GDM ====&lt;br /&gt;
[[GDM]] ディスプレイマネージャの場合 {{ic|.desktop}} ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Optimus&lt;br /&gt;
Exec=sh -c &amp;quot;xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto&amp;quot;&lt;br /&gt;
NoDisplay=true&lt;br /&gt;
X-GNOME-Autostart-Phase=DisplayServer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、GDM が [[GDM#Xorg バックエンドを使う|Xorg バックエンドを使う]]ようになっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== KDM ====&lt;br /&gt;
&lt;br /&gt;
KDE の [[KDM]] の場合、{{ic|/usr/share/config/kdm/Xsetup}} に xrandr の行を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== 3D の確認 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA グラフィックが使われているかどうかは {{Pkg|mesa-demos}} をインストールして次のコマンドを実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== 詳細情報 ===&lt;br /&gt;
&lt;br /&gt;
詳しい情報は、NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 切り替え可能なグラフィックスを使用 ==&lt;br /&gt;
&lt;br /&gt;
=== PRIME レンダリングオフロードを使用する===&lt;br /&gt;
&lt;br /&gt;
これは、切り替え可能なグラフィックスをサポートする公式の NVIDIA メソッドです。&lt;br /&gt;
&lt;br /&gt;
詳細については、 [[PRIME#PRIME render offload]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nouveau を使う===&lt;br /&gt;
&lt;br /&gt;
グラフィックスイッチングについては [[PRIME]] を、オープンソースの NVIDIA ドライバについては [[nouveau]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Bumblebee を使用===&lt;br /&gt;
&lt;br /&gt;
[[Bumblebee]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-xrun を使用する ===&lt;br /&gt;
&lt;br /&gt;
[[nvidia-xrun]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-manager を使用する ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Askannz/optimus-manager Optimus-manager] アップストリームのドキュメントを参照してください。Arch Linux システムでのインストールと設定の両方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== EnvyControl を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/geminis3/envycontrol EnvyControl] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== NVidia-eXec を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/pedro00dk/nvidia-exec NVidia-eXec] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-switch を使用する ===&lt;br /&gt;
&lt;br /&gt;
アップストリームのドキュメント [https://github.com/nvidiaswitch/nvidia-switch nvidia-switch] を参照してください。インストール方法と使い方の説明があります。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 垂直同期が機能せずティアリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
解決するには {{pkg|xorg-server}} 1.19 以上、{{pkg|linux}} カーネル 4.5 以上、{{pkg|nvidia}} 370.23 以上が必須です。[[NVIDIA#DRM カーネルモードセッティング]]を有効にすることで PRIME 同期が有効になりティアリングが解消されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは公式の [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===&lt;br /&gt;
&lt;br /&gt;
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=169742 こちら] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
nVidia ドライバーがディスプレイの EDID を検出できないのが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。&lt;br /&gt;
&lt;br /&gt;
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の nvidia カードの Device セクションを編集して、以下の行を追加して適当にパスを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-0&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;CustomEDID&amp;quot; &amp;quot;CRT-0:/sys/class/drm/card0-LVDS-1/edid&amp;quot;&lt;br /&gt;
	Option		&amp;quot;IgnoreEDID&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;UseEDID&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。card0 は intel カードの識別子でディスプレイは LVDS で接続されています。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。パスの先頭の {{ic|/sys/class/drm}} は変わらないはずです。&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modeline も使えますが、&amp;quot;UseEDID&amp;quot; と &amp;quot;IgnoreEDID&amp;quot; は変更するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wrong resolution without EDID errors ===&lt;br /&gt;
&lt;br /&gt;
Using &#039;&#039;nvidia-xconfig&#039;&#039;, incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the {{ic|HorizSync}}/{{ic|VertRefresh}} lines. If this helps, you can probably also remove everything else not mentioned in this article.&lt;br /&gt;
&lt;br /&gt;
=== ロックアップ問題 (lspci がフリーズ) ===&lt;br /&gt;
GTX 965M が搭載された最新のノートパソコンで (Bumblebee などで) bbswitch や nouveau を使ったときに lspci がフリーズしたり、サスペンドが失敗したり、シャットダウン時に止まってしまったり、optirun でフリーズが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。&lt;br /&gt;
&lt;br /&gt;
解決方法については [https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 こちら] を見てください。また、{{ic|1=acpi_osi=&amp;quot;!Windows 2015&amp;quot;}} や {{ic|1=acpi_osi=! acpi_osi=&amp;quot;Windows 2009&amp;quot;}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。&lt;br /&gt;
&lt;br /&gt;
=== No screens found on a laptop/NVIDIA Optimus ===&lt;br /&gt;
&lt;br /&gt;
Check if {{ic|&amp;lt;nowiki&amp;gt;$ lspci | grep VGA&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
outputs something similar to:&lt;br /&gt;
 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)&lt;br /&gt;
 01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)&lt;br /&gt;
&lt;br /&gt;
NVIDIA drivers now offer Optimus support since 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] with kernels above and including 3.9.&lt;br /&gt;
&lt;br /&gt;
Another solution is to install the [[Intel]] driver to handle the screens, then if you want 3D software you should run them through [[Bumblebee]] to tell them to use the NVIDIA card.&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26961</id>
		<title>NVIDIA Optimus</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26961"/>
		<updated>2022-08-20T14:32:44Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* いくつかの方法 */ 内部リンクになっているべきリンクを修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィック]]&lt;br /&gt;
[[en:NVIDIA Optimus]]&lt;br /&gt;
[[ru:NVIDIA Optimus]]&lt;br /&gt;
[[zh-hans:NVIDIA Optimus]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|External GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:NVIDIA Optimus|NVIDIA Optimus]] は Intel の内蔵 GPU とディスクリートの NVIDIA GPU をノートパソコンに組み込んで利用できるようにする技術です。&lt;br /&gt;
&lt;br /&gt;
== いくつかの方法 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E3.82.A4.E3.83.B3.E3.83.86.E3.83.AB.E3.81.AE.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.81.AE.E3.81.BF.E3.82.92.E4.BD.BF.E7.94.A8 インテルのグラフィックスのみを使用] -NVIDIA GPU の電源は完全にオフになるため、消費電力を節約できます。&lt;br /&gt;
* [[NVIDIA_Optimus#nvidia グラフィックのみを使用|nvidia グラフィックのみを使用]] -インテルグラフィックスよりもパフォーマンスは向上しますが、より多くのバッテリを消費します (モバイルデバイスには適していません) 。これは、 [[#optimus-managerを使用する|optimus-manager ]] および [[#nvidia-xrun を使用する|nvidia-xrun]] オプションと同じ基本プロセスを利用しており、より自動化されたアプローチの1つを選択する前に、一般的な機能のトラブルシューティングおよび検証する必要があります。&lt;br /&gt;
* 両方を使用する (必要に応じて NVIDIA GPU を使用し、電源を切ったままにして電力を節約する) :&lt;br /&gt;
** [[#PRIME レンダリングオフロードを使用する]] -NVIDIA が公式にサポートしている方法です。&lt;br /&gt;
** [[#optimus-managerを使用する]] -1つのコマンドでグラフィックスを切り替えます (有効にするにはログアウトとログインが必要です) NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。&lt;br /&gt;
** [[#nvidia-xrun を使用する]] -NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。&lt;br /&gt;
** [[#Bumblebee を使用]] -インテルのグラフィックスを他のすべてのものに使用しながら、選択したアプリケーションをNVIDIA のグラフィックスで実行できるようにすることで、Windows に似た機能を提供します。しかし、パフォーマンスに重大な問題があります。&lt;br /&gt;
** [[#nouveau を使う]] -独自の NVIDIA ドライバと比較してパフォーマンスが低く、スリープと休止状態で問題が発生する可能性があります。最新の NVIDIA GPU では動作しません。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== インテルのグラフィックスのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
特定の GPU のみに切り替えずに使用する場合は、システムの BIOS でオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、個別のカードを無効にすることしかできない場合や、その逆の場合がありますが、カードのうちの1つだけを使用する予定があるかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
BIOS が Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== レンダリングプロバイダを切り替えずに CUDA を使用 ===&lt;br /&gt;
&lt;br /&gt;
CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、 [[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず {{ic|nvidia}} カーネルモジュールをアンロードする必要があります。&lt;br /&gt;
&lt;br /&gt;
 #rmmod nvidia_uvm&lt;br /&gt;
 #rmmod NVIDIA&lt;br /&gt;
&lt;br /&gt;
== nvidia グラフィックのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA|プロプライエタリの NVIDIA ドライバー]]は nouveau ドライバーのような動的な切り替えはサポートしていません (つまり NVIDIA デバイスしか使用できません)。また、NVIDIA は画面にティアリングが発生する問題を認識していますが未だに修正がなされていません。そのかわり、ディスクリート GPU を利用して nouveau ドライバーよりも高い性能を発揮することができます (2017年1月現在)。&lt;br /&gt;
&lt;br /&gt;
まず {{Pkg|nvidia}} と {{Pkg|xorg-xrandr}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|xorg.conf}} を設定します。NVIDIA カードの PCI アドレスを知る必要があるので、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci | grep -E &amp;quot;VGA|3D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NVIDIA と書かれた行の最初の7文字が PCI アドレスです。例えば {{ic|01:00.0}} などと表記されます。{{ic|xorg.conf}} では {{ic|#:#:#}} という形式で表記する必要があります。例えば {{ic|01:00.0}} の場合 {{ic|1:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。解決方法は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;intel&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;i915&amp;quot;&lt;br /&gt;
    Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;nvidia-drm&amp;quot;&lt;br /&gt;
    Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option &amp;quot;AllowEmptyInitialConfiguration&amp;quot;&lt;br /&gt;
    Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/nvidia/xorg&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/xorg/modules&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|~/.xinitrc}} の最初に以下の2行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そしてドライバーをロードするために再起動し、X を起動させます。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの dpi が正しくない場合は以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 xrandr --dpi 96&lt;br /&gt;
&lt;br /&gt;
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した {{ic|xrandr}} コマンドの後にアンパサンドがないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。&lt;br /&gt;
&lt;br /&gt;
アンパサンドがないのに黒画面になる場合、下の [[#別の設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャを使用する場合、{{ic|~/.xinitrc}} の代わりにディスプレイマネージャのディスプレイ設定スクリプトを作成・編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== LightDM ====&lt;br /&gt;
&lt;br /&gt;
[[LightDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/display_setup.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに実行可能属性を付与:&lt;br /&gt;
&lt;br /&gt;
 # chmod +x /etc/lightdm/display_setup.sh&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lightdm/lightdm.conf}} の {{ic|[Seat:*]}} セクションを編集してスクリプトを実行するように lightdm を設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|output=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
display-setup-script=/etc/lightdm/display_setup.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動して、ディスプレイマネージャが起動するのを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ====&lt;br /&gt;
[[SDDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GDM ====&lt;br /&gt;
[[GDM]] ディスプレイマネージャの場合 {{ic|.desktop}} ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Optimus&lt;br /&gt;
Exec=sh -c &amp;quot;xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto&amp;quot;&lt;br /&gt;
NoDisplay=true&lt;br /&gt;
X-GNOME-Autostart-Phase=DisplayServer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、GDM が [[GDM#Xorg バックエンドを使う|Xorg バックエンドを使う]]ようになっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== KDM ====&lt;br /&gt;
&lt;br /&gt;
KDE の [[KDM]] の場合、{{ic|/usr/share/config/kdm/Xsetup}} に xrandr の行を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== 3D の確認 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA グラフィックが使われているかどうかは {{Pkg|mesa-demos}} をインストールして次のコマンドを実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== 詳細情報 ===&lt;br /&gt;
&lt;br /&gt;
詳しい情報は、NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 切り替え可能なグラフィックスを使用 ==&lt;br /&gt;
&lt;br /&gt;
=== PRIME レンダリングオフロードを使用する===&lt;br /&gt;
&lt;br /&gt;
これは、切り替え可能なグラフィックスをサポートする公式の NVIDIA メソッドです。&lt;br /&gt;
&lt;br /&gt;
詳細については、 [[PRIME#PRIME render offload]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nouveau を使う===&lt;br /&gt;
&lt;br /&gt;
グラフィックスイッチングについては [[PRIME]] を、オープンソースの NVIDIA ドライバについては [[nouveau]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Bumblebee を使用===&lt;br /&gt;
&lt;br /&gt;
[[Bumblebee]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-xrun を使用する ===&lt;br /&gt;
&lt;br /&gt;
[[nvidia-xrun]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-managerを使用する ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Askannz/optimus-manager Optimus-manager] アップストリームのドキュメントを参照してください。Arch Linux システムでのインストールと設定の両方について説明します。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 垂直同期が機能せずティアリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
解決するには {{pkg|xorg-server}} 1.19 以上、{{pkg|linux}} カーネル 4.5 以上、{{pkg|nvidia}} 370.23 以上が必須です。[[NVIDIA#DRM カーネルモードセッティング]]を有効にすることで PRIME 同期が有効になりティアリングが解消されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは公式の [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===&lt;br /&gt;
&lt;br /&gt;
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=169742 こちら] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
nVidia ドライバーがディスプレイの EDID を検出できないのが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。&lt;br /&gt;
&lt;br /&gt;
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の nvidia カードの Device セクションを編集して、以下の行を追加して適当にパスを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-0&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;CustomEDID&amp;quot; &amp;quot;CRT-0:/sys/class/drm/card0-LVDS-1/edid&amp;quot;&lt;br /&gt;
	Option		&amp;quot;IgnoreEDID&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;UseEDID&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。card0 は intel カードの識別子でディスプレイは LVDS で接続されています。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。パスの先頭の {{ic|/sys/class/drm}} は変わらないはずです。&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modeline も使えますが、&amp;quot;UseEDID&amp;quot; と &amp;quot;IgnoreEDID&amp;quot; は変更するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wrong resolution without EDID errors ===&lt;br /&gt;
&lt;br /&gt;
Using &#039;&#039;nvidia-xconfig&#039;&#039;, incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the {{ic|HorizSync}}/{{ic|VertRefresh}} lines. If this helps, you can probably also remove everything else not mentioned in this article.&lt;br /&gt;
&lt;br /&gt;
=== ロックアップ問題 (lspci がフリーズ) ===&lt;br /&gt;
GTX 965M が搭載された最新のノートパソコンで (Bumblebee などで) bbswitch や nouveau を使ったときに lspci がフリーズしたり、サスペンドが失敗したり、シャットダウン時に止まってしまったり、optirun でフリーズが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。&lt;br /&gt;
&lt;br /&gt;
解決方法については [https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 こちら] を見てください。また、{{ic|1=acpi_osi=&amp;quot;!Windows 2015&amp;quot;}} や {{ic|1=acpi_osi=! acpi_osi=&amp;quot;Windows 2009&amp;quot;}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。&lt;br /&gt;
&lt;br /&gt;
=== No screens found on a laptop/NVIDIA Optimus ===&lt;br /&gt;
&lt;br /&gt;
Check if {{ic|&amp;lt;nowiki&amp;gt;$ lspci | grep VGA&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
outputs something similar to:&lt;br /&gt;
 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)&lt;br /&gt;
 01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)&lt;br /&gt;
&lt;br /&gt;
NVIDIA drivers now offer Optimus support since 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] with kernels above and including 3.9.&lt;br /&gt;
&lt;br /&gt;
Another solution is to install the [[Intel]] driver to handle the screens, then if you want 3D software you should run them through [[Bumblebee]] to tell them to use the NVIDIA card.&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26960</id>
		<title>NVIDIA Optimus</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26960"/>
		<updated>2022-08-20T14:27:53Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* いくつかの方法 */ 内部リンクの修正 (修正ミスの修正)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィック]]&lt;br /&gt;
[[en:NVIDIA Optimus]]&lt;br /&gt;
[[ru:NVIDIA Optimus]]&lt;br /&gt;
[[zh-hans:NVIDIA Optimus]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|External GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:NVIDIA Optimus|NVIDIA Optimus]] は Intel の内蔵 GPU とディスクリートの NVIDIA GPU をノートパソコンに組み込んで利用できるようにする技術です。&lt;br /&gt;
&lt;br /&gt;
== いくつかの方法 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E3.82.A4.E3.83.B3.E3.83.86.E3.83.AB.E3.81.AE.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.81.AE.E3.81.BF.E3.82.92.E4.BD.BF.E7.94.A8 インテルのグラフィックスのみを使用] -NVIDIA GPU の電源は完全にオフになるため、消費電力を節約できます。&lt;br /&gt;
* [[NVIDIA_Optimus#nvidia グラフィックのみを使用|nvidia グラフィックのみを使用]] -インテルグラフィックスよりもパフォーマンスは向上しますが、より多くのバッテリを消費します (モバイルデバイスには適していません) 。これは、 [[#optimus-managerを使用する|optimus-manager ]] および [[#nvidia-xrun を使用する|nvidia-xrun]] オプションと同じ基本プロセスを利用しており、より自動化されたアプローチの1つを選択する前に、一般的な機能のトラブルシューティングおよび検証する必要があります。&lt;br /&gt;
* 両方を使用する (必要に応じて NVIDIA GPU を使用し、電源を切ったままにして電力を節約する) :&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 PRIME render offloadを使用] -NVIDIA が公式にサポートしている方法です。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 optimus-manager の使用] -1つのコマンドでグラフィックスを切り替えます (有効にするにはログアウトとログインが必要です) NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 nvidia-xrun を使用] -NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 Bumblebee の使用] -インテルのグラフィックスを他のすべてのものに使用しながら、選択したアプリケーションをNVIDIA のグラフィックスで実行できるようにすることで、Windows に似た機能を提供します。しかし、パフォーマンスに重大な問題があります。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 nouveau を使用] -独自の NVIDIA ドライバと比較してパフォーマンスが低く、スリープと休止状態で問題が発生する可能性があります。最新の NVIDIA GPU では動作しません。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== インテルのグラフィックスのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
特定の GPU のみに切り替えずに使用する場合は、システムの BIOS でオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、個別のカードを無効にすることしかできない場合や、その逆の場合がありますが、カードのうちの1つだけを使用する予定があるかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
BIOS が Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== レンダリングプロバイダを切り替えずに CUDA を使用 ===&lt;br /&gt;
&lt;br /&gt;
CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、 [[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず {{ic|nvidia}} カーネルモジュールをアンロードする必要があります。&lt;br /&gt;
&lt;br /&gt;
 #rmmod nvidia_uvm&lt;br /&gt;
 #rmmod NVIDIA&lt;br /&gt;
&lt;br /&gt;
== nvidia グラフィックのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA|プロプライエタリの NVIDIA ドライバー]]は nouveau ドライバーのような動的な切り替えはサポートしていません (つまり NVIDIA デバイスしか使用できません)。また、NVIDIA は画面にティアリングが発生する問題を認識していますが未だに修正がなされていません。そのかわり、ディスクリート GPU を利用して nouveau ドライバーよりも高い性能を発揮することができます (2017年1月現在)。&lt;br /&gt;
&lt;br /&gt;
まず {{Pkg|nvidia}} と {{Pkg|xorg-xrandr}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|xorg.conf}} を設定します。NVIDIA カードの PCI アドレスを知る必要があるので、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci | grep -E &amp;quot;VGA|3D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NVIDIA と書かれた行の最初の7文字が PCI アドレスです。例えば {{ic|01:00.0}} などと表記されます。{{ic|xorg.conf}} では {{ic|#:#:#}} という形式で表記する必要があります。例えば {{ic|01:00.0}} の場合 {{ic|1:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。解決方法は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;intel&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;i915&amp;quot;&lt;br /&gt;
    Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;nvidia-drm&amp;quot;&lt;br /&gt;
    Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option &amp;quot;AllowEmptyInitialConfiguration&amp;quot;&lt;br /&gt;
    Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/nvidia/xorg&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/xorg/modules&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|~/.xinitrc}} の最初に以下の2行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そしてドライバーをロードするために再起動し、X を起動させます。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの dpi が正しくない場合は以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 xrandr --dpi 96&lt;br /&gt;
&lt;br /&gt;
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した {{ic|xrandr}} コマンドの後にアンパサンドがないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。&lt;br /&gt;
&lt;br /&gt;
アンパサンドがないのに黒画面になる場合、下の [[#別の設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャを使用する場合、{{ic|~/.xinitrc}} の代わりにディスプレイマネージャのディスプレイ設定スクリプトを作成・編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== LightDM ====&lt;br /&gt;
&lt;br /&gt;
[[LightDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/display_setup.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに実行可能属性を付与:&lt;br /&gt;
&lt;br /&gt;
 # chmod +x /etc/lightdm/display_setup.sh&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lightdm/lightdm.conf}} の {{ic|[Seat:*]}} セクションを編集してスクリプトを実行するように lightdm を設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|output=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
display-setup-script=/etc/lightdm/display_setup.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動して、ディスプレイマネージャが起動するのを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ====&lt;br /&gt;
[[SDDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GDM ====&lt;br /&gt;
[[GDM]] ディスプレイマネージャの場合 {{ic|.desktop}} ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Optimus&lt;br /&gt;
Exec=sh -c &amp;quot;xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto&amp;quot;&lt;br /&gt;
NoDisplay=true&lt;br /&gt;
X-GNOME-Autostart-Phase=DisplayServer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、GDM が [[GDM#Xorg バックエンドを使う|Xorg バックエンドを使う]]ようになっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== KDM ====&lt;br /&gt;
&lt;br /&gt;
KDE の [[KDM]] の場合、{{ic|/usr/share/config/kdm/Xsetup}} に xrandr の行を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== 3D の確認 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA グラフィックが使われているかどうかは {{Pkg|mesa-demos}} をインストールして次のコマンドを実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== 詳細情報 ===&lt;br /&gt;
&lt;br /&gt;
詳しい情報は、NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 切り替え可能なグラフィックスを使用 ==&lt;br /&gt;
&lt;br /&gt;
=== PRIME レンダリングオフロードを使用する===&lt;br /&gt;
&lt;br /&gt;
これは、切り替え可能なグラフィックスをサポートする公式の NVIDIA メソッドです。&lt;br /&gt;
&lt;br /&gt;
詳細については、 [[PRIME#PRIME render offload]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nouveau を使う===&lt;br /&gt;
&lt;br /&gt;
グラフィックスイッチングについては [[PRIME]] を、オープンソースの NVIDIA ドライバについては [[nouveau]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Bumblebee を使用===&lt;br /&gt;
&lt;br /&gt;
[[Bumblebee]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-xrun を使用する ===&lt;br /&gt;
&lt;br /&gt;
[[nvidia-xrun]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-managerを使用する ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Askannz/optimus-manager Optimus-manager] アップストリームのドキュメントを参照してください。Arch Linux システムでのインストールと設定の両方について説明します。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 垂直同期が機能せずティアリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
解決するには {{pkg|xorg-server}} 1.19 以上、{{pkg|linux}} カーネル 4.5 以上、{{pkg|nvidia}} 370.23 以上が必須です。[[NVIDIA#DRM カーネルモードセッティング]]を有効にすることで PRIME 同期が有効になりティアリングが解消されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは公式の [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===&lt;br /&gt;
&lt;br /&gt;
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=169742 こちら] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
nVidia ドライバーがディスプレイの EDID を検出できないのが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。&lt;br /&gt;
&lt;br /&gt;
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の nvidia カードの Device セクションを編集して、以下の行を追加して適当にパスを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-0&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;CustomEDID&amp;quot; &amp;quot;CRT-0:/sys/class/drm/card0-LVDS-1/edid&amp;quot;&lt;br /&gt;
	Option		&amp;quot;IgnoreEDID&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;UseEDID&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。card0 は intel カードの識別子でディスプレイは LVDS で接続されています。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。パスの先頭の {{ic|/sys/class/drm}} は変わらないはずです。&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modeline も使えますが、&amp;quot;UseEDID&amp;quot; と &amp;quot;IgnoreEDID&amp;quot; は変更するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wrong resolution without EDID errors ===&lt;br /&gt;
&lt;br /&gt;
Using &#039;&#039;nvidia-xconfig&#039;&#039;, incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the {{ic|HorizSync}}/{{ic|VertRefresh}} lines. If this helps, you can probably also remove everything else not mentioned in this article.&lt;br /&gt;
&lt;br /&gt;
=== ロックアップ問題 (lspci がフリーズ) ===&lt;br /&gt;
GTX 965M が搭載された最新のノートパソコンで (Bumblebee などで) bbswitch や nouveau を使ったときに lspci がフリーズしたり、サスペンドが失敗したり、シャットダウン時に止まってしまったり、optirun でフリーズが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。&lt;br /&gt;
&lt;br /&gt;
解決方法については [https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 こちら] を見てください。また、{{ic|1=acpi_osi=&amp;quot;!Windows 2015&amp;quot;}} や {{ic|1=acpi_osi=! acpi_osi=&amp;quot;Windows 2009&amp;quot;}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。&lt;br /&gt;
&lt;br /&gt;
=== No screens found on a laptop/NVIDIA Optimus ===&lt;br /&gt;
&lt;br /&gt;
Check if {{ic|&amp;lt;nowiki&amp;gt;$ lspci | grep VGA&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
outputs something similar to:&lt;br /&gt;
 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)&lt;br /&gt;
 01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)&lt;br /&gt;
&lt;br /&gt;
NVIDIA drivers now offer Optimus support since 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] with kernels above and including 3.9.&lt;br /&gt;
&lt;br /&gt;
Another solution is to install the [[Intel]] driver to handle the screens, then if you want 3D software you should run them through [[Bumblebee]] to tell them to use the NVIDIA card.&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26959</id>
		<title>NVIDIA Optimus</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=NVIDIA_Optimus&amp;diff=26959"/>
		<updated>2022-08-20T14:27:08Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* いくつかの方法 */ 内部リンクの修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:グラフィック]]&lt;br /&gt;
[[en:NVIDIA Optimus]]&lt;br /&gt;
[[ru:NVIDIA Optimus]]&lt;br /&gt;
[[zh-hans:NVIDIA Optimus]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|PRIME}}&lt;br /&gt;
{{Related|Bumblebee}}&lt;br /&gt;
{{Related|Nouveau}}&lt;br /&gt;
{{Related|NVIDIA}}&lt;br /&gt;
{{Related|nvidia-xrun}}&lt;br /&gt;
{{Related|External GPU}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:NVIDIA Optimus|NVIDIA Optimus]] は Intel の内蔵 GPU とディスクリートの NVIDIA GPU をノートパソコンに組み込んで利用できるようにする技術です。&lt;br /&gt;
&lt;br /&gt;
== いくつかの方法 ==&lt;br /&gt;
&lt;br /&gt;
* [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E3.82.A4.E3.83.B3.E3.83.86.E3.83.AB.E3.81.AE.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.81.AE.E3.81.BF.E3.82.92.E4.BD.BF.E7.94.A8 インテルのグラフィックスのみを使用] -NVIDIA GPU の電源は完全にオフになるため、消費電力を節約できます。&lt;br /&gt;
* [[NVIDIA_Optimus#nvidia グラフィックのみを使用|nvidia グラフィックのみを使用]] -インテルグラフィックスよりもパフォーマンスは向上しますが、より多くのバッテリを消費します (モバイルデバイスには適していません) 。これは、 [[#optimus-managerを使用する|optimus-manager ]] および [[#nvidia-xrun を使用する&lt;br /&gt;
|nvidia-xrun]] オプションと同じ基本プロセスを利用しており、より自動化されたアプローチの1つを選択する前に、一般的な機能のトラブルシューティングおよび検証する必要があります。&lt;br /&gt;
* 両方を使用する (必要に応じて NVIDIA GPU を使用し、電源を切ったままにして電力を節約する) :&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 PRIME render offloadを使用] -NVIDIA が公式にサポートしている方法です。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 optimus-manager の使用] -1つのコマンドでグラフィックスを切り替えます (有効にするにはログアウトとログインが必要です) NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。1.4リリース以降では、AMD と NVIDIA の組み合わせもサポートされています。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 nvidia-xrun を使用] -NVIDIA グラフィックスを使用して別の TTY で別の X セッションを実行します。NVIDIA GPU の性能を最大限に引き出し、使用していない場合はオフにします。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 Bumblebee の使用] -インテルのグラフィックスを他のすべてのものに使用しながら、選択したアプリケーションをNVIDIA のグラフィックスで実行できるようにすることで、Windows に似た機能を提供します。しかし、パフォーマンスに重大な問題があります。&lt;br /&gt;
** [https://wiki.archlinux.jp/index.php/NVIDIA_Optimus#.E5.88.87.E3.82.8A.E6.9B.BF.E3.81.88.E5.8F.AF.E8.83.BD.E3.81.AA.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF.E3.82.B9.E3.82.92.E4.BD.BF.E7.94.A8 nouveau を使用] -独自の NVIDIA ドライバと比較してパフォーマンスが低く、スリープと休止状態で問題が発生する可能性があります。最新の NVIDIA GPU では動作しません。&lt;br /&gt;
&lt;br /&gt;
{{Note|これらのオプションはすべて相互に排他的です。1つの方法をテストして別の方法を選択する場合は、別の方法を試行する前に、1つの方法に従って行われた構成変更を必ず元に戻す必要があります。そうしないと、ファイルの競合や未定義の動作が発生する可能性があります。}}&lt;br /&gt;
&lt;br /&gt;
== インテルのグラフィックスのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
特定の GPU のみに切り替えずに使用する場合は、システムの BIOS でオプションを確認してください。いずれかのカードを無効にするオプションがあるはずです。ラップトップによっては、個別のカードを無効にすることしかできない場合や、その逆の場合がありますが、カードのうちの1つだけを使用する予定があるかどうかを確認してください。&lt;br /&gt;
&lt;br /&gt;
BIOS が Nvidia グラフィックスを無効にできない場合は、Linux カーネル自体から無効にできます。[[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== レンダリングプロバイダを切り替えずに CUDA を使用 ===&lt;br /&gt;
&lt;br /&gt;
CUDA は、NVIDIA グラフィックスにレンダリングを切り替えることなく使用できます。CUDA アプリケーションを起動する前に、NVIDIA カードの電源が入っていることを確認するだけです。詳細については、 [[ハイブリッドグラフィック#ディスクリート GPU の完全な電源オフ]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
これで、CUDA アプリケーションを起動すると、必要なすべてのカーネルモジュールが自動的にロードされます。CUDA の使用後に NVIDIA カードの電源を切る前に、まず {{ic|nvidia}} カーネルモジュールをアンロードする必要があります。&lt;br /&gt;
&lt;br /&gt;
 #rmmod nvidia_uvm&lt;br /&gt;
 #rmmod NVIDIA&lt;br /&gt;
&lt;br /&gt;
== nvidia グラフィックのみを使用 ==&lt;br /&gt;
&lt;br /&gt;
[[NVIDIA|プロプライエタリの NVIDIA ドライバー]]は nouveau ドライバーのような動的な切り替えはサポートしていません (つまり NVIDIA デバイスしか使用できません)。また、NVIDIA は画面にティアリングが発生する問題を認識していますが未だに修正がなされていません。そのかわり、ディスクリート GPU を利用して nouveau ドライバーよりも高い性能を発揮することができます (2017年1月現在)。&lt;br /&gt;
&lt;br /&gt;
まず {{Pkg|nvidia}} と {{Pkg|xorg-xrandr}} パッケージをインストールしてください。&lt;br /&gt;
&lt;br /&gt;
そして、{{ic|xorg.conf}} を設定します。NVIDIA カードの PCI アドレスを知る必要があるので、次のコマンドを実行してください:&lt;br /&gt;
&lt;br /&gt;
 $ lspci | grep -E &amp;quot;VGA|3D&amp;quot;&lt;br /&gt;
&lt;br /&gt;
NVIDIA と書かれた行の最初の7文字が PCI アドレスです。例えば {{ic|01:00.0}} などと表記されます。{{ic|xorg.conf}} では {{ic|#:#:#}} という形式で表記する必要があります。例えば {{ic|01:00.0}} の場合 {{ic|1:0:0}} となります。&lt;br /&gt;
&lt;br /&gt;
{{Note|セットアップによっては EDID ファイルによる nvidia ドライバーのディスプレイの値の自動検出がされなくなることがあります。解決方法は [[#解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される]] を見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf.d/10-nvidia-drm-outputclass.conf|&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;intel&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;i915&amp;quot;&lt;br /&gt;
    Driver &amp;quot;modesetting&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
Section &amp;quot;OutputClass&amp;quot;&lt;br /&gt;
    Identifier &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    MatchDriver &amp;quot;nvidia-drm&amp;quot;&lt;br /&gt;
    Driver &amp;quot;nvidia&amp;quot;&lt;br /&gt;
    Option &amp;quot;AllowEmptyInitialConfiguration&amp;quot;&lt;br /&gt;
    Option &amp;quot;PrimaryGPU&amp;quot; &amp;quot;yes&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/nvidia/xorg&amp;quot;&lt;br /&gt;
    ModulePath &amp;quot;/usr/lib/xorg/modules&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
次に、{{ic|~/.xinitrc}} の最初に以下の2行を追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.xinitrc|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
そしてドライバーをロードするために再起動し、X を起動させます。&lt;br /&gt;
&lt;br /&gt;
ディスプレイの dpi が正しくない場合は以下の行を追加してください:&lt;br /&gt;
&lt;br /&gt;
 xrandr --dpi 96&lt;br /&gt;
&lt;br /&gt;
X の起動時に黒画面が表示される場合、{{ic|~/.xinitrc}} に記述した {{ic|xrandr}} コマンドの後にアンパサンドがないことを確認してください。アンパサンドがある場合、{{ic|xrandr}} コマンドが実行し終える前にウィンドウマネージャが起動してしまうことがあり、そうなると黒画面になってしまいます。&lt;br /&gt;
&lt;br /&gt;
アンパサンドがないのに黒画面になる場合、下の [[#別の設定]] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== ディスプレイマネージャ ===&lt;br /&gt;
&lt;br /&gt;
ディスプレイマネージャを使用する場合、{{ic|~/.xinitrc}} の代わりにディスプレイマネージャのディスプレイ設定スクリプトを作成・編集する必要があります。&lt;br /&gt;
&lt;br /&gt;
==== LightDM ====&lt;br /&gt;
&lt;br /&gt;
[[LightDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/display_setup.sh|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
スクリプトに実行可能属性を付与:&lt;br /&gt;
&lt;br /&gt;
 # chmod +x /etc/lightdm/display_setup.sh&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/lightdm/lightdm.conf}} の {{ic|[Seat:*]}} セクションを編集してスクリプトを実行するように lightdm を設定:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/lightdm/lightdm.conf|output=&lt;br /&gt;
[Seat:*]&lt;br /&gt;
display-setup-script=/etc/lightdm/display_setup.sh&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
再起動して、ディスプレイマネージャが起動するのを確認してください。&lt;br /&gt;
&lt;br /&gt;
==== SDDM ====&lt;br /&gt;
[[SDDM]] ディスプレイマネージャの場合:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/sddm/scripts/Xsetup|&lt;br /&gt;
xrandr --setprovideroutputsource modesetting NVIDIA-0&lt;br /&gt;
xrandr --auto&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== GDM ====&lt;br /&gt;
[[GDM]] ディスプレイマネージャの場合 {{ic|.desktop}} ファイルを作成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/share/gdm/greeter/autostart/optimus.desktop|&lt;br /&gt;
&amp;lt;nowiki&amp;gt;[Desktop Entry]&lt;br /&gt;
Type=Application&lt;br /&gt;
Name=Optimus&lt;br /&gt;
Exec=sh -c &amp;quot;xrandr --setprovideroutputsource modesetting NVIDIA-0; xrandr --auto&amp;quot;&lt;br /&gt;
NoDisplay=true&lt;br /&gt;
X-GNOME-Autostart-Phase=DisplayServer&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
また、GDM が [[GDM#Xorg バックエンドを使う|Xorg バックエンドを使う]]ようになっているか確認してください。&lt;br /&gt;
&lt;br /&gt;
==== KDM ====&lt;br /&gt;
&lt;br /&gt;
KDE の [[KDM]] の場合、{{ic|/usr/share/config/kdm/Xsetup}} に xrandr の行を追加してください。&lt;br /&gt;
&lt;br /&gt;
=== 3D の確認 ===&lt;br /&gt;
&lt;br /&gt;
NVIDIA グラフィックが使われているかどうかは {{Pkg|mesa-demos}} をインストールして次のコマンドを実行することで確認できます:&lt;br /&gt;
&lt;br /&gt;
 $ glxinfo | grep NVIDIA&lt;br /&gt;
&lt;br /&gt;
=== 詳細情報 ===&lt;br /&gt;
&lt;br /&gt;
詳しい情報は、NVIDIA の公式ページ [http://us.download.nvidia.com/XFree86/Linux-x86/370.28/README/randr14.html] を見て下さい。&lt;br /&gt;
&lt;br /&gt;
== 切り替え可能なグラフィックスを使用 ==&lt;br /&gt;
&lt;br /&gt;
=== PRIME レンダリングオフロードを使用する===&lt;br /&gt;
&lt;br /&gt;
これは、切り替え可能なグラフィックスをサポートする公式の NVIDIA メソッドです。&lt;br /&gt;
&lt;br /&gt;
詳細については、 [[PRIME#PRIME render offload]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nouveau を使う===&lt;br /&gt;
&lt;br /&gt;
グラフィックスイッチングについては [[PRIME]] を、オープンソースの NVIDIA ドライバについては [[nouveau]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Bumblebee を使用===&lt;br /&gt;
&lt;br /&gt;
[[Bumblebee]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== nvidia-xrun を使用する ===&lt;br /&gt;
&lt;br /&gt;
[[nvidia-xrun]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== optimus-managerを使用する ===&lt;br /&gt;
&lt;br /&gt;
[https://github.com/Askannz/optimus-manager Optimus-manager] アップストリームのドキュメントを参照してください。Arch Linux システムでのインストールと設定の両方について説明します。&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== 垂直同期が機能せずティアリングが発生する ===&lt;br /&gt;
&lt;br /&gt;
解決するには {{pkg|xorg-server}} 1.19 以上、{{pkg|linux}} カーネル 4.5 以上、{{pkg|nvidia}} 370.23 以上が必須です。[[NVIDIA#DRM カーネルモードセッティング]]を有効にすることで PRIME 同期が有効になりティアリングが解消されます。&lt;br /&gt;
&lt;br /&gt;
詳しくは公式の [https://devtalk.nvidia.com/default/topic/957814/linux/prime-and-prime-synchronization/ フォーラムスレッド] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== Failed to initialize the NVIDIA GPU at PCI:1:0:0 (GPU fallen off the bus / RmInitAdapter failed!) ===&lt;br /&gt;
&lt;br /&gt;
カーネルパラメータに {{ic|1=rcutree.rcu_idle_gp_delay=1}} を追加してください。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=169742 こちら] を参照。&lt;br /&gt;
&lt;br /&gt;
=== 解像度や画面スキャンが正しく認識されず Xorg.log に EDID のエラーが表示される ===&lt;br /&gt;
&lt;br /&gt;
nVidia ドライバーがディスプレイの EDID を検出できないのが原因です。手動で EDID ファイルのパスを指定するか、同じような方法で同一の情報を提供する必要があります。&lt;br /&gt;
&lt;br /&gt;
EDID ファイルのパスを指定するには {{ic|Xorg.conf}} の nvidia カードの Device セクションを編集して、以下の行を追加して適当にパスを置き換えてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/X11/xorg.conf|&lt;br /&gt;
Section &amp;quot;Device&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;ConnectedMonitor&amp;quot; &amp;quot;CRT-0&amp;quot;&lt;br /&gt;
       	Option		&amp;quot;CustomEDID&amp;quot; &amp;quot;CRT-0:/sys/class/drm/card0-LVDS-1/edid&amp;quot;&lt;br /&gt;
	Option		&amp;quot;IgnoreEDID&amp;quot; &amp;quot;false&amp;quot;&lt;br /&gt;
	Option		&amp;quot;UseEDID&amp;quot; &amp;quot;true&amp;quot;&lt;br /&gt;
EndSection&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Xorg が起動しない場合は、CRT という文字列を全て DFB に置き換えてみて下さい。card0 は intel カードの識別子でディスプレイは LVDS で接続されています。edid バイナリはこのディレクトリに存在します。ハードウェアの構成が異なっている場合、CustomEDID の値も変わってくるので確認するようにしてください。パスの先頭の {{ic|/sys/class/drm}} は変わらないはずです。&lt;br /&gt;
&lt;br /&gt;
または、{{Pkg|read-edid}} などのツールを使って edid を自分で作成して、作成したファイルを使うようにドライバーを設定することもできます。modeline も使えますが、&amp;quot;UseEDID&amp;quot; と &amp;quot;IgnoreEDID&amp;quot; は変更するようにしてください。&lt;br /&gt;
&lt;br /&gt;
=== Wrong resolution without EDID errors ===&lt;br /&gt;
&lt;br /&gt;
Using &#039;&#039;nvidia-xconfig&#039;&#039;, incorrect information might be generated in Xorg.conf and in particular wrong monitor refresh rates that restruct the possible resolutions. Try commenting out the {{ic|HorizSync}}/{{ic|VertRefresh}} lines. If this helps, you can probably also remove everything else not mentioned in this article.&lt;br /&gt;
&lt;br /&gt;
=== ロックアップ問題 (lspci がフリーズ) ===&lt;br /&gt;
GTX 965M が搭載された最新のノートパソコンで (Bumblebee などで) bbswitch や nouveau を使ったときに lspci がフリーズしたり、サスペンドが失敗したり、シャットダウン時に止まってしまったり、optirun でフリーズが発生することがあります。&lt;br /&gt;
&lt;br /&gt;
dGPU 電源リソースがオンになっている場合、ACPI コードで失敗してフリーズが起こることがあります ([https://bugzilla.kernel.org/show_bug.cgi?id=156341 カーネルバグ 156341])。&lt;br /&gt;
&lt;br /&gt;
解決方法については [https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-234494238 こちら] を見てください。また、{{ic|1=acpi_osi=&amp;quot;!Windows 2015&amp;quot;}} や {{ic|1=acpi_osi=! acpi_osi=&amp;quot;Windows 2009&amp;quot;}} を[[カーネルパラメータ]]に追加して起動することで解決することもあります。&lt;br /&gt;
&lt;br /&gt;
=== No screens found on a laptop/NVIDIA Optimus ===&lt;br /&gt;
&lt;br /&gt;
Check if {{ic|&amp;lt;nowiki&amp;gt;$ lspci | grep VGA&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
outputs something similar to:&lt;br /&gt;
 00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02)&lt;br /&gt;
 01:00.0 VGA compatible controller: nVidia Corporation Device 0df4 (rev a1)&lt;br /&gt;
&lt;br /&gt;
NVIDIA drivers now offer Optimus support since 319.12 Beta [https://www.nvidia.com/object/linux-display-amd64-319.12-driver.html] with kernels above and including 3.9.&lt;br /&gt;
&lt;br /&gt;
Another solution is to install the [[Intel]] driver to handle the screens, then if you want 3D software you should run them through [[Bumblebee]] to tell them to use the NVIDIA card.&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26204</id>
		<title>ダイナミック DNS</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26204"/>
		<updated>2022-07-03T02:12:51Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* ddclient */ DNSdynamic のリンク先が異なるサービスとなっている。英語版でも消去されていたのでこちらも消去.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Domain Name System]]&lt;br /&gt;
[[en:Dynamic DNS]]&lt;br /&gt;
&#039;&#039;&#039;Dynamic DNS&#039;&#039;&#039; あるいは &#039;&#039;&#039;DDNS&#039;&#039;&#039; はインターネット上の絶えず変化する IP アドレスを指し示す [[:カテゴリ:Domain Name System|DNS]] をリアルタイムに更新する手法です。ダイナミック DNS は固定 IP が存在しないリソースに恒久的なドメイン名を割り当てるのに使われます。DDNS を使用するには、DDNS プロバイダで登録を行なって、さらに、IP アドレスが変わったときにプロバイダに新しい IP を通知するように自動更新ツールを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ルーター ==&lt;br /&gt;
&lt;br /&gt;
DDNS を必要とするデバイスがルーターを通している場合、まずルーターだけで DDNS サービスを更新することができないか確認してください。使用できるサービスは限られますが、ルーターを使うことにはメリットが複数存在します: セットアップが簡単であり、メンテナンスの必要がほとんどありません。そしてダウンタイムがなくなります (ルーターが落ちた場合、インターネットに接続自体ができなくなります)。&lt;br /&gt;
&lt;br /&gt;
== 更新用クライアントツール ==&lt;br /&gt;
&lt;br /&gt;
いくつかの DDNS プロバイダはクライアントツールを必須とはしておらず、[[cURL]] で更新することも可能であることは気に留めておいて下さい。&lt;br /&gt;
&lt;br /&gt;
=== 複数サービスに対応したクライアント ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[#ddclient|ddclient]]|多くのDDNSサービスのアカウントのDDNSエントリを更新できます。|https://github.com/ddclient/ddclient|{{Pkg|ddclient}}}}&lt;br /&gt;
* {{App|ddnsc|Pythonで書かれたシンプルで軽量なクライアント。|https://github.com/shyaminayesh/ddnsc|{{AUR|ddnsc}}}}&lt;br /&gt;
* {{App|inadyn|SSL/TLSをサポートしたDDNSクライアント。|https://troglobit.com/projects/inadyn/|{{Pkg|inadyn}}}}&lt;br /&gt;
* {{App|inadyn-mt|inadyn が元となったシンプルなDDNSクライアント。|http://inadyn-mt.sourceforge.net/|{{AUR|inadyn-mt}}}}&lt;br /&gt;
* {{App|ndyndns|DynDNS と Namecheapをサポートしています。|https://github.com/niklata/ndyndns|{{AUR|ndyndns}}}}&lt;br /&gt;
&lt;br /&gt;
=== 特定のサービスの為のクライアント ===&lt;br /&gt;
&lt;br /&gt;
* {{App|duckdns|systemd を用いて DuckDNS.org のエントリを更新するクライアント。|https://www.duckdns.org/|{{AUR|duckdns}}, {{AUR|duckdns-ipv6}}}}&lt;br /&gt;
* {{App|hetzner_ddns|Hetzner DNS のためのDDNS デーモン。|https://github.com/filiparag/hetzner_ddns|{{AUR|hetzner_ddns}}}}&lt;br /&gt;
* {{App|noip|no-ip.com サービスのためのDDNS クライアント。|3=https://www.no-ip.com/downloads.php?page=linux|4={{AUR|noip}}}}&lt;br /&gt;
* {{App|petrified|freedns.afraid.org を更新するための bash クライアント。|https://gitlab.com/troyengel/petrified|{{AUR|petrified}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ddclient ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ddclient}} は多数の DDNS サービスに対応しているため、[[#ルーター|ルーター]]が使えない場合は DDNS を更新するための推奨ツールとなります。ddclient は [[systemd]] にも対応しています。&lt;br /&gt;
&lt;br /&gt;
インストールした後、デフォルトの設定ファイル {{ic|/etc/ddclient/ddclient.conf}} を編集して使用する DDNS プロバイダをセットアップしてください (ファイルには多数の例が記載されています)。設定したら {{ic|ddclient.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|-noquiet}} と {{ic|-debu}} オプションを付けて実行することで設定をテストできます:&lt;br /&gt;
&lt;br /&gt;
 # ddclient -daemon=0 -noquiet -debug&lt;br /&gt;
&lt;br /&gt;
ddclient 対応のサービスの一部を以下に挙げます。[https://sourceforge.net/p/ddclient/code/HEAD/tree/trunk/sample-etc_ddclient.conf examples] や [https://sourceforge.net/p/ddclient/wiki/protocols/ protocols] にはさらに多くのプロバイダが載っています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ddclient に対応しているサービス&lt;br /&gt;
! サービス名&lt;br /&gt;
! 費用&lt;br /&gt;
! 利用可能なレコード&lt;br /&gt;
! ホストネーム数&lt;br /&gt;
! 設定のノート&lt;br /&gt;
! 他のツール&lt;br /&gt;
|-&lt;br /&gt;
! [http://now-dns.com/ Now-DNS]&lt;br /&gt;
| 無料 || A, AAAA || 無制限 || {{ic|dyndns2}} プロトコルを使用、サーバー: {{ic|now-dns.com/update}} || &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.changeip.com/ ChangeIP]&lt;br /&gt;
| 無料あるいは有料 || A, AAAA, CNAME, MX, サブドメイン || 7つまで無料 || || &lt;br /&gt;
|-&lt;br /&gt;
! [https://www.duckdns.org/ Duck DNS]&lt;br /&gt;
| 無料 || || || || {{aur|duckdns}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.dynu.com/ Dynu]&lt;br /&gt;
| 無料あるいは有料 || || 4つまで無料、有料で500まで || [https://www.dynu.com/DynamicDNS/IPUpdateClient/DDClient サンプル] ||&lt;br /&gt;
|-&lt;br /&gt;
! [http://freedns.afraid.org/ FreeDNS]&lt;br /&gt;
| 無料あるいは有料 || CNAME, A, AAAA, MX, NS, TXT, LOC, RP, HINFO, SRV || 5つまで無料 || [http://freedns.afraid.org/scripts/freedns.clients.php 例] || {{aur|afraid-dyndns-uv}}, {{aur|petrified}}&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.noip.com/ No-IP]&lt;br /&gt;
| 無料あるいは有料 || || 3つまで無料、有料で25以上 || {{ic|noip}} プロトコル、{{ic|dynupdate.no-ip.com}} サーバーを使用 || {{aur|noip}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.nsupdate.info/ nsupdate.info]&lt;br /&gt;
| 無料かつオープンソース || A, AAAA || || {{ic|dyndns2}} プロトコルを使用 || {{aur|inadyn-fork}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|no-ip の無料ユーザーは30日ごとにドメインを手動で確認する必要があります。有料ユーザーはドメイン確認が不要です。詳しくは [http://www.noip.com/support/knowledgebase/why-is-my-hostname-pending-deletion/ Why is My Hostname Pending Deletion?] を参照。}}&lt;br /&gt;
&lt;br /&gt;
==== 外部ウェブサイトから IP アドレスを確認 ====&lt;br /&gt;
&lt;br /&gt;
ddclient が IP アドレスを検出できない場合、[http://checkip.dyndns.org checkip.dyndns.org] などの外部ウェブサイトから IP アドレスを取得するように ddclient を設定できます。デフォルトでは {{ic|use=web]} を指定した場合にこのアドレスが利用されます。また、IPを確認するサービスへの頻繁なアクセスを避けるために、確認までの期間を延すことが推奨されています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
daemon=900&lt;br /&gt;
# web status page から IP アドレスを取得&lt;br /&gt;
use=web&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
他の IP 確認サービスを {{ic|web}} オプションで設定する事もできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
daemon=900&lt;br /&gt;
# web status page から IP アドレスを取得&lt;br /&gt;
use=web, web=myonlineportal.net/checkip&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== IPv6 アドレスを決めるためにスクリプトを使う ====&lt;br /&gt;
&lt;br /&gt;
ddclient は時折、IPv6 アドレスの取得を間違えるか失敗します。しかし、外部のウェブサイトの代わりに ローカルに IPv6 を知ることができます。以下のスクリプトが使えます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/bin/get-ip|2=&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/sbin/ip -6 addr | grep inet6 | awk -F &#039;[ \t]+|/&#039; &#039;{print $3}&#039; | grep -v ^::1 | grep -v ^fe80&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このスクリプトを使うように ddclient を設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
# obtain IP address from script&lt;br /&gt;
use=cmd,cmd=&#039;/usr/bin/get-ip&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ネットワークが立ち上がった後に ddclient を起動 ====&lt;br /&gt;
&lt;br /&gt;
ddclient で IP を更新できない場合、おそらくネットワークが立ち上がる前に ddclient のプロセスが起動しているのが原因です。修正するには、ユニットファイルを編集して {{ic|network-online.target}} に依存するようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# systemctl edit ddclient.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 他のプロバイダ ==&lt;br /&gt;
&lt;br /&gt;
以下の DDNS プロバイダは [[#ddclient|ddclient]] に対応していないため、特殊なツールを使ったりカスタムスクリプトで IP を更新する必要があります。コマンドラインで IP を更新できる場合、[[cron]] や [[systemd/タイマー]]などのツールを利用して更新を自動化することができます。&lt;br /&gt;
&lt;br /&gt;
=== duiadns === &lt;br /&gt;
[https://www.duiadns.net Duiadns.org] は無料のサービスです。{{AUR|duiadns}}{{Broken package link|{{aur-mirror|duiadns}}}} で自動化が可能。&lt;br /&gt;
&lt;br /&gt;
=== FreeDns.io ===&lt;br /&gt;
&lt;br /&gt;
[https://freedns.io FreeDns.io] は無料で A, AAAA, DNS レコードを提供します。CNAME, TXT, MX レコードはプレミアムメンバーになる必要があります。HTTP API を利用して IP を更新することができます (1時間あたり60回までの制限あり)。[https://github.com/nkovacne/freedns-samples 複数のサンプルスクリプト] が用意されています。&lt;br /&gt;
&lt;br /&gt;
=== Now-DNS ===&lt;br /&gt;
[https://now-dns.com Now-DNS.com] は簡単にセットアップができる無料サービスです。&lt;br /&gt;
&lt;br /&gt;
=== System-NS ===&lt;br /&gt;
&lt;br /&gt;
[http://system-ns.com/ System-NS] はコマンドラインによる更新ができる無料サービスです。[https://system-ns.com/services/dynamic 公式のドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===  Loopia.se ===&lt;br /&gt;
&lt;br /&gt;
ネームサーバーとして loopia.se を使う場合、[https://support.loopia.se/wiki/curl/ 公式ドキュメント] に書かれているように &#039;&#039;curl&#039;&#039; で DNS レコードを更新することができます。&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26191</id>
		<title>ダイナミック DNS</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26191"/>
		<updated>2022-07-02T10:08:02Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 他のプロバイダ  */ 節が重複してしまったので削除&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Domain Name System]]&lt;br /&gt;
[[en:Dynamic DNS]]&lt;br /&gt;
&#039;&#039;&#039;Dynamic DNS&#039;&#039;&#039; あるいは &#039;&#039;&#039;DDNS&#039;&#039;&#039; はインターネット上の絶えず変化する IP アドレスを指し示す [[:カテゴリ:Domain Name System|DNS]] をリアルタイムに更新する手法です。ダイナミック DNS は固定 IP が存在しないリソースに恒久的なドメイン名を割り当てるのに使われます。DDNS を使用するには、DDNS プロバイダで登録を行なって、さらに、IP アドレスが変わったときにプロバイダに新しい IP を通知するように自動更新ツールを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ルーター ==&lt;br /&gt;
&lt;br /&gt;
DDNS を必要とするデバイスがルーターを通している場合、まずルーターだけで DDNS サービスを更新することができないか確認してください。使用できるサービスは限られますが、ルーターを使うことにはメリットが複数存在します: セットアップが簡単であり、メンテナンスの必要がほとんどありません。そしてダウンタイムがなくなります (ルーターが落ちた場合、インターネットに接続自体ができなくなります)。&lt;br /&gt;
&lt;br /&gt;
== 更新用クライアントツール ==&lt;br /&gt;
&lt;br /&gt;
いくつかの DDNS プロバイダはクライアントツールを必須とはしておらず、[[cURL]] で更新することも可能であることは気に留めておいて下さい。&lt;br /&gt;
&lt;br /&gt;
=== 複数サービスに対応したクライアント ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[#ddclient|ddclient]]|多くのDDNSサービスのアカウントのDDNSエントリを更新できます。|https://github.com/ddclient/ddclient|{{Pkg|ddclient}}}}&lt;br /&gt;
* {{App|ddnsc|Pythonで書かれたシンプルで軽量なクライアント。|https://github.com/shyaminayesh/ddnsc|{{AUR|ddnsc}}}}&lt;br /&gt;
* {{App|inadyn|SSL/TLSをサポートしたDDNSクライアント。|https://troglobit.com/projects/inadyn/|{{Pkg|inadyn}}}}&lt;br /&gt;
* {{App|inadyn-mt|inadyn が元となったシンプルなDDNSクライアント。|http://inadyn-mt.sourceforge.net/|{{AUR|inadyn-mt}}}}&lt;br /&gt;
* {{App|ndyndns|DynDNS と Namecheapをサポートしています。|https://github.com/niklata/ndyndns|{{AUR|ndyndns}}}}&lt;br /&gt;
&lt;br /&gt;
=== 特定のサービスの為のクライアント ===&lt;br /&gt;
&lt;br /&gt;
* {{App|duckdns|systemd を用いて DuckDNS.org のエントリを更新するクライアント。|https://www.duckdns.org/|{{AUR|duckdns}}, {{AUR|duckdns-ipv6}}}}&lt;br /&gt;
* {{App|hetzner_ddns|Hetzner DNS のためのDDNS デーモン。|https://github.com/filiparag/hetzner_ddns|{{AUR|hetzner_ddns}}}}&lt;br /&gt;
* {{App|noip|no-ip.com サービスのためのDDNS クライアント。|3=https://www.no-ip.com/downloads.php?page=linux|4={{AUR|noip}}}}&lt;br /&gt;
* {{App|petrified|freedns.afraid.org を更新するための bash クライアント。|https://gitlab.com/troyengel/petrified|{{AUR|petrified}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ddclient ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ddclient}} は多数の DDNS サービスに対応しているため、[[#ルーター|ルーター]]が使えない場合は DDNS を更新するための推奨ツールとなります。ddclient は [[systemd]] にも対応しています。&lt;br /&gt;
&lt;br /&gt;
インストールした後、デフォルトの設定ファイル {{ic|/etc/ddclient/ddclient.conf}} を編集して使用する DDNS プロバイダをセットアップしてください (ファイルには多数の例が記載されています)。設定したら {{ic|ddclient.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|-noquiet}} と {{ic|-debu}} オプションを付けて実行することで設定をテストできます:&lt;br /&gt;
&lt;br /&gt;
 # ddclient -daemon=0 -noquiet -debug&lt;br /&gt;
&lt;br /&gt;
ddclient 対応のサービスの一部を以下に挙げます。[https://sourceforge.net/p/ddclient/code/HEAD/tree/trunk/sample-etc_ddclient.conf examples] や [https://sourceforge.net/p/ddclient/wiki/protocols/ protocols] にはさらに多くのプロバイダが載っています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ddclient に対応しているサービス&lt;br /&gt;
! サービス名&lt;br /&gt;
! 費用&lt;br /&gt;
! 利用可能なレコード&lt;br /&gt;
! ホストネーム数&lt;br /&gt;
! 設定のノート&lt;br /&gt;
! 他のツール&lt;br /&gt;
|-&lt;br /&gt;
! [http://now-dns.com/ Now-DNS]&lt;br /&gt;
| 無料 || A, AAAA || 無制限 || {{ic|dyndns2}} プロトコルを使用、サーバー: {{ic|now-dns.com/update}} || &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.changeip.com/ ChangeIP]&lt;br /&gt;
| 無料あるいは有料 || A, AAAA, CNAME, MX, サブドメイン || 7つまで無料 || || &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.dnsdynamic.org/ DNSdynamic]&lt;br /&gt;
| 無料 || || || [https://www.dnsdynamic.org/api.php 例] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.duckdns.org/ Duck DNS]&lt;br /&gt;
| 無料 || || || || {{aur|duckdns}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.dynu.com/ Dynu]&lt;br /&gt;
| 無料あるいは有料 || || 4つまで無料、有料で500まで || [https://www.dynu.com/DynamicDNS/IPUpdateClient/DDClient サンプル] ||&lt;br /&gt;
|-&lt;br /&gt;
! [http://freedns.afraid.org/ FreeDNS]&lt;br /&gt;
| 無料あるいは有料 || CNAME, A, AAAA, MX, NS, TXT, LOC, RP, HINFO, SRV || 5つまで無料 || [http://freedns.afraid.org/scripts/freedns.clients.php 例] || {{aur|afraid-dyndns-uv}}, {{aur|petrified}}&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.noip.com/ No-IP]&lt;br /&gt;
| 無料あるいは有料 || || 3つまで無料、有料で25以上 || {{ic|noip}} プロトコル、{{ic|dynupdate.no-ip.com}} サーバーを使用 || {{aur|noip}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.nsupdate.info/ nsupdate.info]&lt;br /&gt;
| 無料かつオープンソース || A, AAAA || || {{ic|dyndns2}} プロトコルを使用 || {{aur|inadyn-fork}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|no-ip の無料ユーザーは30日ごとにドメインを手動で確認する必要があります。有料ユーザーはドメイン確認が不要です。詳しくは [http://www.noip.com/support/knowledgebase/why-is-my-hostname-pending-deletion/ Why is My Hostname Pending Deletion?] を参照。}}&lt;br /&gt;
&lt;br /&gt;
==== 外部ウェブサイトから IP アドレスを確認 ====&lt;br /&gt;
&lt;br /&gt;
ddclient が IP アドレスを検出できない場合、[http://checkip.dyndns.org checkip.dyndns.org] などの外部ウェブサイトから IP アドレスを取得するように ddclient を設定できます。デフォルトでは {{ic|use=web]} を指定した場合にこのアドレスが利用されます。また、IPを確認するサービスへの頻繁なアクセスを避けるために、確認までの期間を延すことが推奨されています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
daemon=900&lt;br /&gt;
# web status page から IP アドレスを取得&lt;br /&gt;
use=web&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
他の IP 確認サービスを {{ic|web}} オプションで設定する事もできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
daemon=900&lt;br /&gt;
# web status page から IP アドレスを取得&lt;br /&gt;
use=web, web=myonlineportal.net/checkip&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== IPv6 アドレスを決めるためにスクリプトを使う ====&lt;br /&gt;
&lt;br /&gt;
ddclient は時折、IPv6 アドレスの取得を間違えるか失敗します。しかし、外部のウェブサイトの代わりに ローカルに IPv6 を知ることができます。以下のスクリプトが使えます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/bin/get-ip|2=&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/sbin/ip -6 addr | grep inet6 | awk -F &#039;[ \t]+|/&#039; &#039;{print $3}&#039; | grep -v ^::1 | grep -v ^fe80&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このスクリプトを使うように ddclient を設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
# obtain IP address from script&lt;br /&gt;
use=cmd,cmd=&#039;/usr/bin/get-ip&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ネットワークが立ち上がった後に ddclient を起動 ====&lt;br /&gt;
&lt;br /&gt;
ddclient で IP を更新できない場合、おそらくネットワークが立ち上がる前に ddclient のプロセスが起動しているのが原因です。修正するには、ユニットファイルを編集して {{ic|network-online.target}} に依存するようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# systemctl edit ddclient.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 他のプロバイダ ==&lt;br /&gt;
&lt;br /&gt;
以下の DDNS プロバイダは [[#ddclient|ddclient]] に対応していないため、特殊なツールを使ったりカスタムスクリプトで IP を更新する必要があります。コマンドラインで IP を更新できる場合、[[cron]] や [[systemd/タイマー]]などのツールを利用して更新を自動化することができます。&lt;br /&gt;
&lt;br /&gt;
=== duiadns === &lt;br /&gt;
[https://www.duiadns.net Duiadns.org] は無料のサービスです。{{AUR|duiadns}}{{Broken package link|{{aur-mirror|duiadns}}}} で自動化が可能。&lt;br /&gt;
&lt;br /&gt;
=== FreeDns.io ===&lt;br /&gt;
&lt;br /&gt;
[https://freedns.io FreeDns.io] は無料で A, AAAA, DNS レコードを提供します。CNAME, TXT, MX レコードはプレミアムメンバーになる必要があります。HTTP API を利用して IP を更新することができます (1時間あたり60回までの制限あり)。[https://github.com/nkovacne/freedns-samples 複数のサンプルスクリプト] が用意されています。&lt;br /&gt;
&lt;br /&gt;
=== Now-DNS ===&lt;br /&gt;
[https://now-dns.com Now-DNS.com] は簡単にセットアップができる無料サービスです。&lt;br /&gt;
&lt;br /&gt;
=== System-NS ===&lt;br /&gt;
&lt;br /&gt;
[http://system-ns.com/ System-NS] はコマンドラインによる更新ができる無料サービスです。[https://system-ns.com/services/dynamic 公式のドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===  Loopia.se ===&lt;br /&gt;
&lt;br /&gt;
ネームサーバーとして loopia.se を使う場合、[https://support.loopia.se/wiki/curl/ 公式ドキュメント] に書かれているように &#039;&#039;curl&#039;&#039; で DNS レコードを更新することができます。&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26190</id>
		<title>ダイナミック DNS</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26190"/>
		<updated>2022-07-02T10:06:13Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 更新用クライアントツール */  テーブル以外は英語版と同期。便利そうだったのでテーブルは、この構成を保持しておきたいと考えた。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Domain Name System]]&lt;br /&gt;
[[en:Dynamic DNS]]&lt;br /&gt;
&#039;&#039;&#039;Dynamic DNS&#039;&#039;&#039; あるいは &#039;&#039;&#039;DDNS&#039;&#039;&#039; はインターネット上の絶えず変化する IP アドレスを指し示す [[:カテゴリ:Domain Name System|DNS]] をリアルタイムに更新する手法です。ダイナミック DNS は固定 IP が存在しないリソースに恒久的なドメイン名を割り当てるのに使われます。DDNS を使用するには、DDNS プロバイダで登録を行なって、さらに、IP アドレスが変わったときにプロバイダに新しい IP を通知するように自動更新ツールを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ルーター ==&lt;br /&gt;
&lt;br /&gt;
DDNS を必要とするデバイスがルーターを通している場合、まずルーターだけで DDNS サービスを更新することができないか確認してください。使用できるサービスは限られますが、ルーターを使うことにはメリットが複数存在します: セットアップが簡単であり、メンテナンスの必要がほとんどありません。そしてダウンタイムがなくなります (ルーターが落ちた場合、インターネットに接続自体ができなくなります)。&lt;br /&gt;
&lt;br /&gt;
== 更新用クライアントツール ==&lt;br /&gt;
&lt;br /&gt;
いくつかの DDNS プロバイダはクライアントツールを必須とはしておらず、[[cURL]] で更新することも可能であることは気に留めておいて下さい。&lt;br /&gt;
&lt;br /&gt;
=== 複数サービスに対応したクライアント ===&lt;br /&gt;
&lt;br /&gt;
* {{App|[[#ddclient|ddclient]]|多くのDDNSサービスのアカウントのDDNSエントリを更新できます。|https://github.com/ddclient/ddclient|{{Pkg|ddclient}}}}&lt;br /&gt;
* {{App|ddnsc|Pythonで書かれたシンプルで軽量なクライアント。|https://github.com/shyaminayesh/ddnsc|{{AUR|ddnsc}}}}&lt;br /&gt;
* {{App|inadyn|SSL/TLSをサポートしたDDNSクライアント。|https://troglobit.com/projects/inadyn/|{{Pkg|inadyn}}}}&lt;br /&gt;
* {{App|inadyn-mt|inadyn が元となったシンプルなDDNSクライアント。|http://inadyn-mt.sourceforge.net/|{{AUR|inadyn-mt}}}}&lt;br /&gt;
* {{App|ndyndns|DynDNS と Namecheapをサポートしています。|https://github.com/niklata/ndyndns|{{AUR|ndyndns}}}}&lt;br /&gt;
&lt;br /&gt;
=== 特定のサービスの為のクライアント ===&lt;br /&gt;
&lt;br /&gt;
* {{App|duckdns|systemd を用いて DuckDNS.org のエントリを更新するクライアント。|https://www.duckdns.org/|{{AUR|duckdns}}, {{AUR|duckdns-ipv6}}}}&lt;br /&gt;
* {{App|hetzner_ddns|Hetzner DNS のためのDDNS デーモン。|https://github.com/filiparag/hetzner_ddns|{{AUR|hetzner_ddns}}}}&lt;br /&gt;
* {{App|noip|no-ip.com サービスのためのDDNS クライアント。|3=https://www.no-ip.com/downloads.php?page=linux|4={{AUR|noip}}}}&lt;br /&gt;
* {{App|petrified|freedns.afraid.org を更新するための bash クライアント。|https://gitlab.com/troyengel/petrified|{{AUR|petrified}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ddclient ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ddclient}} は多数の DDNS サービスに対応しているため、[[#ルーター|ルーター]]が使えない場合は DDNS を更新するための推奨ツールとなります。ddclient は [[systemd]] にも対応しています。&lt;br /&gt;
&lt;br /&gt;
インストールした後、デフォルトの設定ファイル {{ic|/etc/ddclient/ddclient.conf}} を編集して使用する DDNS プロバイダをセットアップしてください (ファイルには多数の例が記載されています)。設定したら {{ic|ddclient.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
{{ic|-noquiet}} と {{ic|-debu}} オプションを付けて実行することで設定をテストできます:&lt;br /&gt;
&lt;br /&gt;
 # ddclient -daemon=0 -noquiet -debug&lt;br /&gt;
&lt;br /&gt;
ddclient 対応のサービスの一部を以下に挙げます。[https://sourceforge.net/p/ddclient/code/HEAD/tree/trunk/sample-etc_ddclient.conf examples] や [https://sourceforge.net/p/ddclient/wiki/protocols/ protocols] にはさらに多くのプロバイダが載っています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ddclient に対応しているサービス&lt;br /&gt;
! サービス名&lt;br /&gt;
! 費用&lt;br /&gt;
! 利用可能なレコード&lt;br /&gt;
! ホストネーム数&lt;br /&gt;
! 設定のノート&lt;br /&gt;
! 他のツール&lt;br /&gt;
|-&lt;br /&gt;
! [http://now-dns.com/ Now-DNS]&lt;br /&gt;
| 無料 || A, AAAA || 無制限 || {{ic|dyndns2}} プロトコルを使用、サーバー: {{ic|now-dns.com/update}} || &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.changeip.com/ ChangeIP]&lt;br /&gt;
| 無料あるいは有料 || A, AAAA, CNAME, MX, サブドメイン || 7つまで無料 || || &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.dnsdynamic.org/ DNSdynamic]&lt;br /&gt;
| 無料 || || || [https://www.dnsdynamic.org/api.php 例] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.duckdns.org/ Duck DNS]&lt;br /&gt;
| 無料 || || || || {{aur|duckdns}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.dynu.com/ Dynu]&lt;br /&gt;
| 無料あるいは有料 || || 4つまで無料、有料で500まで || [https://www.dynu.com/DynamicDNS/IPUpdateClient/DDClient サンプル] ||&lt;br /&gt;
|-&lt;br /&gt;
! [http://freedns.afraid.org/ FreeDNS]&lt;br /&gt;
| 無料あるいは有料 || CNAME, A, AAAA, MX, NS, TXT, LOC, RP, HINFO, SRV || 5つまで無料 || [http://freedns.afraid.org/scripts/freedns.clients.php 例] || {{aur|afraid-dyndns-uv}}, {{aur|petrified}}&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.noip.com/ No-IP]&lt;br /&gt;
| 無料あるいは有料 || || 3つまで無料、有料で25以上 || {{ic|noip}} プロトコル、{{ic|dynupdate.no-ip.com}} サーバーを使用 || {{aur|noip}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.nsupdate.info/ nsupdate.info]&lt;br /&gt;
| 無料かつオープンソース || A, AAAA || || {{ic|dyndns2}} プロトコルを使用 || {{aur|inadyn-fork}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|no-ip の無料ユーザーは30日ごとにドメインを手動で確認する必要があります。有料ユーザーはドメイン確認が不要です。詳しくは [http://www.noip.com/support/knowledgebase/why-is-my-hostname-pending-deletion/ Why is My Hostname Pending Deletion?] を参照。}}&lt;br /&gt;
&lt;br /&gt;
==== 外部ウェブサイトから IP アドレスを確認 ====&lt;br /&gt;
&lt;br /&gt;
ddclient が IP アドレスを検出できない場合、[http://checkip.dyndns.org checkip.dyndns.org] などの外部ウェブサイトから IP アドレスを取得するように ddclient を設定できます。デフォルトでは {{ic|use=web]} を指定した場合にこのアドレスが利用されます。また、IPを確認するサービスへの頻繁なアクセスを避けるために、確認までの期間を延すことが推奨されています:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
daemon=900&lt;br /&gt;
# web status page から IP アドレスを取得&lt;br /&gt;
use=web&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
他の IP 確認サービスを {{ic|web}} オプションで設定する事もできます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
daemon=900&lt;br /&gt;
# web status page から IP アドレスを取得&lt;br /&gt;
use=web, web=myonlineportal.net/checkip&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== IPv6 アドレスを決めるためにスクリプトを使う ====&lt;br /&gt;
&lt;br /&gt;
ddclient は時折、IPv6 アドレスの取得を間違えるか失敗します。しかし、外部のウェブサイトの代わりに ローカルに IPv6 を知ることができます。以下のスクリプトが使えます:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/bin/get-ip|2=&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
/sbin/ip -6 addr | grep inet6 | awk -F &#039;[ \t]+|/&#039; &#039;{print $3}&#039; | grep -v ^::1 | grep -v ^fe80&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
このスクリプトを使うように ddclient を設定するには:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
# obtain IP address from script&lt;br /&gt;
use=cmd,cmd=&#039;/usr/bin/get-ip&#039;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== ネットワークが立ち上がった後に ddclient を起動 ====&lt;br /&gt;
&lt;br /&gt;
ddclient で IP を更新できない場合、おそらくネットワークが立ち上がる前に ddclient のプロセスが起動しているのが原因です。修正するには、ユニットファイルを編集して {{ic|network-online.target}} に依存するようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# systemctl edit ddclient.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 他のプロバイダ ===&lt;br /&gt;
&lt;br /&gt;
他の DDNS プロバイダは ddclient とは互換性がありません。対応しないプロバイダの為には、特殊なツールやカスタムのスクリプトを必要になるかもしれません。もし IP アドレスがコマンドラインでアップデート可能であるならば、[[cron]] や [[systemd/タイマー]] などのツールで自動的に実現可能であることを覚えておいて下さい。&lt;br /&gt;
&lt;br /&gt;
== 他のプロバイダ ==&lt;br /&gt;
&lt;br /&gt;
以下の DDNS プロバイダは [[#ddclient|ddclient]] に対応していないため、特殊なツールを使ったりカスタムスクリプトで IP を更新する必要があります。コマンドラインで IP を更新できる場合、[[cron]] や [[systemd/タイマー]]などのツールを利用して更新を自動化することができます。&lt;br /&gt;
&lt;br /&gt;
=== duiadns === &lt;br /&gt;
[https://www.duiadns.net Duiadns.org] は無料のサービスです。{{AUR|duiadns}}{{Broken package link|{{aur-mirror|duiadns}}}} で自動化が可能。&lt;br /&gt;
&lt;br /&gt;
=== FreeDns.io ===&lt;br /&gt;
&lt;br /&gt;
[https://freedns.io FreeDns.io] は無料で A, AAAA, DNS レコードを提供します。CNAME, TXT, MX レコードはプレミアムメンバーになる必要があります。HTTP API を利用して IP を更新することができます (1時間あたり60回までの制限あり)。[https://github.com/nkovacne/freedns-samples 複数のサンプルスクリプト] が用意されています。&lt;br /&gt;
&lt;br /&gt;
=== Now-DNS ===&lt;br /&gt;
[https://now-dns.com Now-DNS.com] は簡単にセットアップができる無料サービスです。&lt;br /&gt;
&lt;br /&gt;
=== System-NS ===&lt;br /&gt;
&lt;br /&gt;
[http://system-ns.com/ System-NS] はコマンドラインによる更新ができる無料サービスです。[https://system-ns.com/services/dynamic 公式のドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===  Loopia.se ===&lt;br /&gt;
&lt;br /&gt;
ネームサーバーとして loopia.se を使う場合、[https://support.loopia.se/wiki/curl/ 公式ドキュメント] に書かれているように &#039;&#039;curl&#039;&#039; で DNS レコードを更新することができます。&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26189</id>
		<title>ダイナミック DNS</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%83%80%E3%82%A4%E3%83%8A%E3%83%9F%E3%83%83%E3%82%AF_DNS&amp;diff=26189"/>
		<updated>2022-07-02T09:37:54Z</updated>

		<summary type="html">&lt;p&gt;Shota: 英語版に併せてセクション構成を変更&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Domain Name System]]&lt;br /&gt;
[[en:Dynamic DNS]]&lt;br /&gt;
&#039;&#039;&#039;Dynamic DNS&#039;&#039;&#039; あるいは &#039;&#039;&#039;DDNS&#039;&#039;&#039; はインターネット上の絶えず変化する IP アドレスを指し示す [[:カテゴリ:Domain Name System|DNS]] をリアルタイムに更新する手法です。ダイナミック DNS は固定 IP が存在しないリソースに恒久的なドメイン名を割り当てるのに使われます。DDNS を使用するには、DDNS プロバイダで登録を行なって、さらに、IP アドレスが変わったときにプロバイダに新しい IP を通知するように自動更新ツールを設定する必要があります。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ルーター ==&lt;br /&gt;
&lt;br /&gt;
DDNS を必要とするデバイスがルーターを通している場合、まずルーターだけで DDNS サービスを更新することができないか確認してください。使用できるサービスは限られますが、ルーターを使うことにはメリットが複数存在します: セットアップが簡単であり、メンテナンスの必要がほとんどありません。そしてダウンタイムがなくなります (ルーターが落ちた場合、インターネットに接続自体ができなくなります)。&lt;br /&gt;
&lt;br /&gt;
== 更新用クライアントツール ==&lt;br /&gt;
&lt;br /&gt;
=== ddclient ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|ddclient}} は多数の DDNS サービスに対応しているため、[[#ルーター|ルーター]]が使えない場合は DDNS を更新するための推奨ツールとなります。ddclient は [[systemd]] にも対応しています。&lt;br /&gt;
&lt;br /&gt;
インストールした後、デフォルトの設定ファイル {{ic|/etc/ddclient/ddclient.conf}} を編集して使用する DDNS プロバイダをセットアップしてください (ファイルには多数の例が記載されています)。設定したら {{ic|ddclient.service}} を[[起動]]・[[有効化]]してください。&lt;br /&gt;
&lt;br /&gt;
ddclient 対応のサービスの一部を以下に挙げます。[https://sourceforge.net/p/ddclient/code/HEAD/tree/trunk/sample-etc_ddclient.conf examples] や [https://sourceforge.net/p/ddclient/wiki/protocols/ protocols] にはさらに多くのプロバイダが載っています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ ddclient に対応しているサービス&lt;br /&gt;
! サービス名&lt;br /&gt;
! 費用&lt;br /&gt;
! 利用可能なレコード&lt;br /&gt;
! ホストネーム数&lt;br /&gt;
! 設定のノート&lt;br /&gt;
! 他のツール&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.changeip.com/ ChangeIP]&lt;br /&gt;
| 無料あるいは有料 || A, AAAA, CNAME, MX, サブドメイン || 7つまで無料 || || &lt;br /&gt;
|-&lt;br /&gt;
! [http://www.dnsdynamic.org/ DNSdynamic]&lt;br /&gt;
| 無料 || || || [https://www.dnsdynamic.org/api.php 例] ||&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.duckdns.org/ Duck DNS]&lt;br /&gt;
| 無料 || || || || {{aur|duckdns}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.dynu.com/ Dynu]&lt;br /&gt;
| 無料あるいは有料 || || 4つまで無料、有料で500まで || [https://www.dynu.com/DynamicDNS/IPUpdateClient/DDClient サンプル] ||&lt;br /&gt;
|-&lt;br /&gt;
! [http://freedns.afraid.org/ FreeDNS]&lt;br /&gt;
| 無料あるいは有料 || CNAME, A, AAAA, MX, NS, TXT, LOC, RP, HINFO, SRV || 5つまで無料 || [http://freedns.afraid.org/scripts/freedns.clients.php 例] || {{aur|afraid-dyndns-uv}}, {{aur|petrified}}&lt;br /&gt;
|-&lt;br /&gt;
! [http://www.noip.com/ No-IP]&lt;br /&gt;
| 無料あるいは有料 || || 3つまで無料、有料で25以上 || {{ic|noip}} プロトコル、{{ic|dynupdate.no-ip.com}} サーバーを使用 || {{aur|noip}}&lt;br /&gt;
|-&lt;br /&gt;
! [http://now-dns.com/ Now-DNS]&lt;br /&gt;
| 無料 || A, AAAA || 無制限 || {{ic|dyndns2}} プロトコルを使用、サーバー: {{ic|now-dns.com/update}} || &lt;br /&gt;
|-&lt;br /&gt;
! [https://www.nsupdate.info/ nsupdate.info]&lt;br /&gt;
| 無料かつオープンソース || A, AAAA || || {{ic|dyndns2}} プロトコルを使用 || {{aur|inadyn-fork}}&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Note|no-ip の無料ユーザーは30日ごとにドメインを手動で確認する必要があります。有料ユーザーはドメイン確認が不要です。詳しくは [http://www.noip.com/support/knowledgebase/why-is-my-hostname-pending-deletion/ Why is My Hostname Pending Deletion?] を参照。}}&lt;br /&gt;
&lt;br /&gt;
==== 外部ウェブサイトから IP アドレスを確認 ====&lt;br /&gt;
&lt;br /&gt;
ddclient が IP アドレスを検出できない場合、[http://whatismyip.org/ whatismyip.org] などの外部ウェブサイトから IP アドレスを取得するように ddclient を設定できます。設定ファイルに以下のように追加してください:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/ddclient/ddclient.conf|2=&lt;br /&gt;
# use whatismyip.org to determine IP address&lt;br /&gt;
use=web&lt;br /&gt;
web=whatismyip.org&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== ネットワークが立ち上がった後に ddclient を起動 ====&lt;br /&gt;
&lt;br /&gt;
ddclient で IP を更新できない場合、おそらくネットワークが立ち上がる前に ddclient のプロセスが起動しているのが原因です。修正するには、ユニットファイルを編集して {{ic|network-online.target}} に依存するようにしてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# systemctl edit ddclient.service|2=&lt;br /&gt;
[Unit]&lt;br /&gt;
After=network-online.target&lt;br /&gt;
Wants=network-online.target&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|network-online.target}} に追加の設定が必要かもしれません。[https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget#cutthecraphowdoimakenetwork.targetworkforme] を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== 他のツール ===&lt;br /&gt;
&lt;br /&gt;
複数のプロバイダで使用することができる他の DDNS 更新ツールとして {{AUR|inadyn-mt}} ([https://sourceforge.net/projects/inadyn-mt 対応しているプロバイダ]) と {{AUR|ndyndns}} (DynDNS と Namecheap が対応) が存在します。&lt;br /&gt;
&lt;br /&gt;
== 他のプロバイダ ==&lt;br /&gt;
&lt;br /&gt;
以下の DDNS プロバイダは [[#ddclient|ddclient]] に対応していないため、特殊なツールを使ったりカスタムスクリプトで IP を更新する必要があります。コマンドラインで IP を更新できる場合、[[cron]] や [[systemd/タイマー]]などのツールを利用して更新を自動化することができます。&lt;br /&gt;
&lt;br /&gt;
=== duiadns === &lt;br /&gt;
[https://www.duiadns.net Duiadns.org] は無料のサービスです。{{AUR|duiadns}}{{Broken package link|{{aur-mirror|duiadns}}}} で自動化が可能。&lt;br /&gt;
&lt;br /&gt;
=== FreeDns.io ===&lt;br /&gt;
&lt;br /&gt;
[https://freedns.io FreeDns.io] は無料で A, AAAA, DNS レコードを提供します。CNAME, TXT, MX レコードはプレミアムメンバーになる必要があります。HTTP API を利用して IP を更新することができます (1時間あたり60回までの制限あり)。[https://github.com/nkovacne/freedns-samples 複数のサンプルスクリプト] が用意されています。&lt;br /&gt;
&lt;br /&gt;
=== Now-DNS ===&lt;br /&gt;
[https://now-dns.com Now-DNS.com] は簡単にセットアップができる無料サービスです。&lt;br /&gt;
&lt;br /&gt;
=== System-NS ===&lt;br /&gt;
&lt;br /&gt;
[http://system-ns.com/ System-NS] はコマンドラインによる更新ができる無料サービスです。[https://system-ns.com/services/dynamic 公式のドキュメント] を参照してください。&lt;br /&gt;
&lt;br /&gt;
===  Loopia.se ===&lt;br /&gt;
&lt;br /&gt;
ネームサーバーとして loopia.se を使う場合、[https://support.loopia.se/wiki/curl/ 公式ドキュメント] に書かれているように &#039;&#039;curl&#039;&#039; で DNS レコードを更新することができます。&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=RAID&amp;diff=25246</id>
		<title>RAID</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=RAID&amp;diff=25246"/>
		<updated>2022-04-29T04:34:20Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* 通常の RAID レベル */ URE の意味を明示&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Arch の入手とインストール]]&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[en:RAID]]&lt;br /&gt;
[[es:RAID]]&lt;br /&gt;
[[it:RAID]]&lt;br /&gt;
[[zh-hans:RAID]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ソフトウェア RAID と LVM}}&lt;br /&gt;
{{Related|Fake RAID でインストール}}&lt;br /&gt;
{{Related|シングルドライブ環境を RAID に変換}}&lt;br /&gt;
{{Related|ZFS}}&lt;br /&gt;
{{Related|ZFS/仮想ディスク}}&lt;br /&gt;
{{Related|スワップ#ストライピング}}&lt;br /&gt;
{{Related|Btrfs#RAID 機能}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では RAID とは何なのか、そして mdadm によるソフトウェア RAID アレイの作成・管理方法を説明しています。&lt;br /&gt;
&lt;br /&gt;
== イントロダクション ==&lt;br /&gt;
{{Wikipedia/ja|RAID}}&lt;br /&gt;
独立ディスク冗長アレイ (Redundant Array of Independent Disks, RAID) は複数のディスクドライブの構成部品 (一般的にはディスクドライブまたはそのパーティション) をまとめて一つの論理ユニットにするストレージ技術です。RAID の実装によって、この論理ユニットはファイルシステム、あるいは複数のパーティションを保持する追補的な透過レイヤーになります。データは &amp;quot;RAID レベル&amp;quot; と呼ばれる様々な方法によって、必要とされる冗長性やパフォーマンスにあわせて、ドライブに分散されます。RAID レベルの選択によって、ハードディスクが壊れた時にデータが喪失することを防いだり、パフォーマンスを向上させたり、あるいはその両方を実現できます。&lt;br /&gt;
&lt;br /&gt;
ほとんどの RAID レベルでは冗長性が確保されていますが、RAID はデータが安全であることを保証するものではありません。火事があったときや、コンピュータが盗まれたとき、または複数のドライブが同時に壊れた場合など RAID はデータを保護しません。さらに、RAID でシステムをインストールするのは複雑な作業であり、そのときにデータを破壊してしまう可能性もあります。 {{Warning|従って、RAID を設定する前に、かならず全てのデータを[[バックアッププログラム|バックアップ]]しておきましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|データの保存や冗長性のために RAID アレイを使おうと思っているユーザーは [[ZFS]] によって実装されている RAIDZ についても採用を検討すると良いでしょう。ソフトウェア RAID の代替としてより近代的でパワフルな能力があります。}}&lt;br /&gt;
&lt;br /&gt;
===通常の RAID レベル===&lt;br /&gt;
[[Wikipedia:Standard RAID levels|RAID のレベル]]はたくさん存在します、以下は最も一般的に使われているレベルです。&lt;br /&gt;
&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 0|RAID 0]]&lt;br /&gt;
: ストライピングを使ってディスクを結合します。RAID 0 には&#039;&#039;冗長性がありません&#039;&#039;が、RAID とされています。耐障害性がない代わりに、&#039;&#039;速度が向上する恩恵があります&#039;&#039;。データが消失する可能性を差し引いても速度を上げる価値がある場合 (例えば[[スワップ]]パーティション)、この RAID レベルを選択します。サーバーでは、RAID 1 や RAID 5 アレイを使う方が適切です。RAID 0 アレイのブロックデバイスのサイズは一番小さいコンポーネントパーティションとコンポーネントパーティションの数を掛けた値になります。&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 1|RAID 1]]&lt;br /&gt;
: 最もシンプルな RAID レベル: ミラーリングです。他の RAID レベルと同様に、パーティションを複数の物理ディスクドライブに配置した時にだけ意味をなします。ドライブのどれか一台が故障しても、RAID アレイによるブロックデバイスは通常通りに稼働し続けます。例では[[スワップ]]や一時的なデータを除いて全てを RAID 1 に保存します。ソフトウェア実装を使う場合、ブートパーティションで使えるのは RAID 1 レベルしかないので注意してください。ブートパーティションを読み込むブートローダーは RAID を認識できないながらも、RAID 1 のコンポーネントパーティションは通常のパーティションとして読み込めるからです。RAID 1 アレイのブロックデバイスのサイズは一番小さいコンポーネントパーティションと同じになります。&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 5|RAID 5]]&lt;br /&gt;
: 三台以上の物理ドライブが必要で、RAID 0 の速度・サイズのメリットを残しながら RAID 1 の冗長性を実現します。RAID 5 は RAID 0 と同じようにストライピングを使いますが、それに加えて&#039;&#039;それぞれのディスクに分散して&#039;&#039;パリティブロックの記録を行います。ディスクが故障した時は、パリティブロックを利用して交換したディスクにデータを再構築します。RAID 5 は一台のディスクの喪失まで耐えることが可能です。&lt;br /&gt;
: {{Note|速度とデータの冗長性を両得できることから RAID 5 はよく使われています。ただし一台のドライブが壊れてから、ドライブを置き換える前にもう一台ドライブが故障すると、全てのデータを喪失するので注意してください。さらに、最近のディスク容量や修復不能なリードエラー (unrecoverble read error; URE) の発生率を考えると、4TiB のアレイを再構築するとき URE が (50% 以上という) 高い確率で発生します。そのため、ストレージ業界では RAID 5 はもはや推奨されていません。}}&lt;br /&gt;
; [[Wikipedia:Standard RAID levels#RAID 6|RAID 6]]&lt;br /&gt;
: 四台以上の物理ドライブを必要とし、RAID 5 の利点を活かしながらドライブが二台故障しても安全です。RAID 6 も RAID 5 と同じようにストライピングを使用しますが、二つの異なるパリティブロックを&#039;&#039;それぞれのメンバーディスクに分散して&#039;&#039;保存します。ディスクが故障したときは、パリティブロックを利用して交換したディスクにデータを再構築します。RAID 6 は二台のディスクの喪失まで耐えることが可能です。ドライブを再構築するときでもアレイにパリティブロックが存在するため、読み取りエラーに対する堅牢性は高くなっています。ただし、オーバーヘッドを考えると RAID 6 はコストがかかります。大抵の場合は far2 レイアウトの RAID 10 のほうが高い性能と堅牢性を確保できます (下を参照)。&lt;br /&gt;
&lt;br /&gt;
===ネストされた RAID レベル===&lt;br /&gt;
; [[Wikipedia:Nested RAID levels#RAID 1 + 0|RAID 1+0]]&lt;br /&gt;
: RAID 1+0 は2つの標準 RAID レベルを組み合わせてパフォーマンスと冗長性を獲得する入れ子の RAID です。よく &#039;&#039;RAID 10&#039;&#039; と呼ばれますが、Linux MD RAID 10 は単純な RAID レイヤーとは多少異なっています。下記を見てください。&lt;br /&gt;
&lt;br /&gt;
; [[Wikipedia:Non-standard_RAID_levels#Linux_MD_RAID_10|RAID 10]]&lt;br /&gt;
: Linux における RAID 10 は RAID 1+0 の概念に基づいていますが、シングルレイヤーとして実装することで複数のレイアウトが可能になっています。&lt;br /&gt;
&lt;br /&gt;
: Y 台のディスクによる &#039;&#039;near X&#039;&#039; レイアウトは Y/2 個のストライプで X 個のチャンクが作成されますが、Y を均等に X で割る必要はありません。near という名前のとおり、チャンクは複製されるディスクに近い場所に配置されます。2台以上の任意の台数のディスクを使うことができます。2台のディスクによる Near 2 は RAID 1 と同じであり、4台のディスクによる Near 2 は RAID 1+0 と同じです。&lt;br /&gt;
&lt;br /&gt;
: Y 台のディスクによる &#039;&#039;far X&#039;&#039; レイアウトはストライプによる読み取り性能を複製されたアレイで発揮します。ディスクをフロントとバックに分けて、ディスク1のフロントはディスク2のバックに複製され、ディスク2のフロントはディスク1のバックに複製されます。RAID 0 や RAID 5 と同じように、シーケンシャルリードを高速化することが可能です。欠点としては複製を保存するのにディスクがシークする距離が長くなるためシーケンシャルライトが遅くなります。それでも、読み込み速度が重要で可用性・冗長性が必要な場合は RAID 1+0 や RAID 5 よりも far 2 レイアウトの RAID 10 を使うことを推奨します。ただしバックアップを置き換えることはできません。&lt;br /&gt;
&lt;br /&gt;
=== RAID レベルの比較 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! RAID レベル!!データの冗長性!!物理ドライブの利用効率!!読込パフォーマンス!!書込パフォーマンス!!最小ドライブ数&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;0&#039;&#039;&#039;||{{No}}||100%||nX&amp;lt;br&amp;gt;&#039;&#039;&#039;最速&#039;&#039;&#039;||nX&amp;lt;br&amp;gt;&#039;&#039;&#039;最速&#039;&#039;&#039;||2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;1&#039;&#039;&#039;||{{Yes}}||50%||nX (理論値)&amp;lt;br&amp;gt;1X (実測値)||1X||2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;5&#039;&#039;&#039;||{{Yes}}||67% - 94%||(n−1)X&amp;lt;br&amp;gt;&#039;&#039;&#039;高速&#039;&#039;&#039;||(n−1)X&amp;lt;br&amp;gt;&#039;&#039;&#039;高速&#039;&#039;&#039;&lt;br /&gt;
||3&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;6&#039;&#039;&#039;||{{Yes}}||50% - 88%||(n−2)X||(n−2)X||4&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10&#039;&#039;&#039; (far2) ||{{Yes}}||50%||nX&amp;lt;br&amp;gt;&#039;&#039;&#039;最速&#039;&#039;&#039; (RAID 0 と同等)||(n/2)X||2&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;10&#039;&#039;&#039; (near2) ||{{Yes}}||50%||nX (理論値)&amp;lt;br&amp;gt;1X (実測値)||(n/2)X||2&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; &#039;&#039;n&#039;&#039; は利用するディスクの数。&lt;br /&gt;
&lt;br /&gt;
== 実装 ==&lt;br /&gt;
RAID デバイスの制御方法は様々です:&lt;br /&gt;
&lt;br /&gt;
; ソフトウェア RAID&lt;br /&gt;
: 不明瞭なプロプライエタリのファームウェアや使用するソフトウェアに依存しないため楽な実装方法です。アレイはオペレーティングシステムによって以下のいずれかで管理されます:&lt;br /&gt;
:* 抽象レイヤー (例: [[#セットアップ|mdadm]])。 {{Note|このガイドで使用する方法です。}}&lt;br /&gt;
:* 論理ボリュームマネージャ (例: [[LVM]])。&lt;br /&gt;
:* ファイルシステムのコンポーネント (例: [[ZFS]], [[Btrfs]])。&lt;br /&gt;
&lt;br /&gt;
; ハードウェア RAID&lt;br /&gt;
: PC に取り付けた専用のハードウェアカードにディスクを直接接続してアレイをダイレクトに制御します。[[Wikipedia:ja:CPU|ホストプロセッサ (CPU)]] とは独立したオンボードのプロセッサ上で RAID が処理されます。この方法はオペレーティングシステムから独立していますが、ハードウェア RAID コントローラを正しく作動させるためにはドライバーが必要になります。RAID アレイの設定は、メーカーによって、オプション ROM インターフェイスを使ったり、OS をインストールする際に専用のアプリケーションを使って行います。この設定は Linux からは見ることができません、システムには単一のディスクとして認識されます。&lt;br /&gt;
&lt;br /&gt;
; [[Fake RAID でインストール|FakeRAID]]&lt;br /&gt;
: このタイプのRAIDは正しくは BIOS またはオンボード RAID と呼ぶべきですが、ハードウェア RAID として偽って喧伝されています。アレイの管理はオプション ROM やファームウェアと ([[UEFI]] の場合) ファームウェアで RAID ロジックが実装される擬似的な RAID コントローラが行いますが、&#039;&#039;全ての&#039;&#039; RAID 機能が実装された完全な RAID コントローラではありません。そのため、このタイプの RAID は FakeRAID と呼称されることがあります。FakeRAID のコントローラは[[公式リポジトリ]]の {{Pkg|dmraid}} を使って扱います。FakeRAID コントローラの例: [[Wikipedia:Intel Rapid Storage Technology|Intel Rapid Storage]], JMicron JMB36x RAID ROM, AMD RAID, ASMedia 106x, NVIDIA MediaShield など。&lt;br /&gt;
&lt;br /&gt;
===使用している RAID はどのタイプか？===&lt;br /&gt;
&lt;br /&gt;
ソフトウェア RAID の実装はユーザーによるため、ソフトウェア RAID を使ってることは簡単にわかります。&lt;br /&gt;
&lt;br /&gt;
反対に、FakeRAID と真のハードウェア RAID を見分けるのは難しいかもしれません。上記の通り、しばしばメーカーはこれら二つの RAID タイプを誤って区別していることがあり、不当表示も考えられます。この場合、一番良い方法は {{ic|lspci}} コマンドを実行して出力を見て RAID コントローラを調べることです。それからその RAID コントローラに関する情報がないか検索してみてください。完全なハードウェア RAID コントローラは多くの場合やや高価 (~$400+) であり、システムをカスタマイズする際、ハードウェア RAID 構成を選択するとコンピュータの価格にそれと分かるくらいの変化があるはずです。&lt;br /&gt;
&lt;br /&gt;
==セットアップ==&lt;br /&gt;
[[公式リポジトリ]]から {{Pkg|mdadm}} をインストールして下さい。&#039;&#039;mdadm&#039;&#039; は普通のブロックデバイスを使って純粋なソフトウェア RAID を組むのに使われます: 元となるハードウェアは RAID ロジックを全く搭載せず、ディスクだけ供給します。&#039;&#039;mdadm&#039;&#039; はどんな組み合わせのブロックデバイスでも使うことができます。あまり一般的でない組み合わせであってもです。例えば、サムドライブを集めて RAID アレイを作成することが可能です。&lt;br /&gt;
&lt;br /&gt;
===デバイスの準備===&lt;br /&gt;
{{Warning|このステップではデバイス上の全てのデータを消去します、消去を行うデバイスを間違えないように気をつけて入力して下さい。}}&lt;br /&gt;
&lt;br /&gt;
問題が発生しないように RAID の各デバイスで中身を[[ディスクの完全消去|完全に消去]]したほうが良いでしょう。デバイスを既存のアレイから再利用する場合、古い RAID 設定情報を全て削除して下さい:&lt;br /&gt;
 # mdadm --zero-superblock /dev/&amp;lt;drive&amp;gt;&lt;br /&gt;
&lt;br /&gt;
もしくはドライブの特定パーティションを削除する場合は:&lt;br /&gt;
 # mdadm --zero-superblock /dev/&amp;lt;partition&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Note|パーティションのスーパーブロックを消去してもディスク上の他のパーティションに影響を与えることはありません。}}&lt;br /&gt;
&lt;br /&gt;
===パーティションテーブルの作成===&lt;br /&gt;
アレイで使用する前にディスクをパーティションすることが強く推奨されます。ほとんどの RAID ユーザーは 2 TB 以上の HDD を選択するため、GPT パーティションテーブルが必須または推奨です。{{Pkg|gptfdisk}} を使うことでディスクを簡単にパーティションすることができます。&lt;br /&gt;
&lt;br /&gt;
* 作成後、パーティションのタイプにはヘックスコード FD00 を指定してください。&lt;br /&gt;
* 巨大なディスクアレイを用いる場合、ディスクを後で区別しやすくするために[[永続的なブロックデバイスの命名#by-label|ディスクラベル]]や[[永続的なブロックデバイスの命名#by-partlabel|パーティションラベル]]を付けるようにしてください。&lt;br /&gt;
* 各デバイスに作成するパーティションのサイズは同じ大きさにすることを推奨します。&lt;br /&gt;
* パーティションするときはデバイスの末端に 100 MB の空きスペースを残すと良いでしょう。根拠は下を見て下さい。&lt;br /&gt;
&lt;br /&gt;
{{Note|(パーティションを作らずに) 生のディスク上に直接 RAID を作成することも可能ですが、故障したディスクを交換するときに問題が起こることがあるのであまり推奨されません。}}&lt;br /&gt;
&lt;br /&gt;
RAID の故障したディスクを置き換える時は、新しいディスクの容量は故障したディスクのサイズと全く同じまたはそれ以上でなくてはなりません - そうでないとアレイの再作成プロセスが作動しません。同じメーカーの同じモデルのハードドライブだとしても容量には多少の誤差があることがあります。ディスクの最後に未使用のスペースを残しておくことでドライブ間の容量の違いを埋め合わせることができ、また、ドライブの機種を置き換えることが楽になります。従って、&#039;&#039;&#039;ディスクの最後に未割り当て領域を 100 MB 残しておくことはグッドプラクティスと言えます&#039;&#039;&#039;。&lt;br /&gt;
&lt;br /&gt;
====MBR を使う場合のパーティションタイプ====&lt;br /&gt;
MBR パーティションテーブルの HDD にパーティションを作成する場合、使用するパーティションタイプは以下になります:&lt;br /&gt;
&lt;br /&gt;
* 0xDA (ファイルシステム以外のデータ用 -- 現在 [https://raid.wiki.kernel.org/index.php/Partition_Types kernel.org] によって推奨されています)&lt;br /&gt;
* 0xFD (raid の自動検出アレイ -- initrd を起動してカーネルモジュールをロードするようになるまでは使われていました)&lt;br /&gt;
&lt;br /&gt;
===アレイの作成===&lt;br /&gt;
{{Warning|現在、カーネルのバージョン 4.2.x と 4.3.x には RAID10 アレイを作成できないというバグが存在します。RAID10 レイアウトを作る必要がある場合は、バグが修正されるまで、{{pkg|linux-lts}} のカーネルバージョン 4.1.x シリーズを使うことが推奨されます。詳しくは [[#参照]] セクションを見て下さい。}}&lt;br /&gt;
&lt;br /&gt;
{{ic|mdadm}} を使ってアレイを作成します。以下では複数の例をあげています。&lt;br /&gt;
{{Warning|下のサンプルをコピーペーストするだけですませないでください。頭を使って適切なオプション・ドライブ文字に置き換えましょう。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|RAID1 アレイを [[Syslinux]] から起動する場合 syslinux v4.07 の制限として metadata の値をデフォルトの 1.2 ではなく 1.0 にする必要があります。}}&lt;br /&gt;
&lt;br /&gt;
以下の例では2つのデバイスによる RAID1 アレイを作成します:&lt;br /&gt;
 # mdadm --create --verbose --level=1 --metadata=1.2 --chunk=64 --raid-devices=2 /dev/md0 /dev/sdb1 /dev/sdc1&lt;br /&gt;
{{Note|実際には RAID1 では chunk スイッチは必要ありません。}}&lt;br /&gt;
&lt;br /&gt;
以下の例では4つのデバイスによる RAID5 アレイを作成します:&lt;br /&gt;
 # mdadm --create --verbose --level=5 --metadata=1.2 --chunk=256 --raid-devices=4 /dev/md0 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1 --spare-devices=1 /dev/sdf1&lt;br /&gt;
&lt;br /&gt;
以下の例では2つのデバイスによる RAID10 (far2) アレイを作成します:&lt;br /&gt;
&lt;br /&gt;
 # mdadm --create --verbose --level=10 --metadata=1.2 --chunk=512 --raid-devices=2 --layout=f2 /dev/md0 /dev/sdb1 /dev/sdc1&lt;br /&gt;
&lt;br /&gt;
{{Tip|{{ic|--homehost}} と {{ic|--name}} オプションを使うことで raid デバイスにカスタム名称を付けることができます。名前はコロンで区切られます。}}&lt;br /&gt;
&lt;br /&gt;
アレイは仮想デバイス {{ic|/dev/mdX}} 下に作成され、編成されて (縮退モードで) 使用できるようになります。バックグラウンドで mdadm がアレイをリシンクしている間、仮想デバイスを使って直接起動することが可能です。パリティのリストアには長い時間かかるかもしれません。次のコマンドで進捗を確認できます:&lt;br /&gt;
 $ cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
===設定ファイルの更新===&lt;br /&gt;
&lt;br /&gt;
新しい RAID アレイを作成した後は、デフォルトの設定ファイルである {{ic|mdadm.conf}} を以下のようにして更新する必要があります:&lt;br /&gt;
 # mdadm --detail --scan &amp;gt;&amp;gt; /etc/mdadm.conf&lt;br /&gt;
&lt;br /&gt;
このコマンドを実行したらテキストファイルで {{ic|mdadm.conf}} 設定ファイルをチェックして中身が問題ないか確認してください。&lt;br /&gt;
&lt;br /&gt;
===アレイの構築===&lt;br /&gt;
&lt;br /&gt;
設定ファイルを更新できたら mdadm を使ってアレイを構築することができます:&lt;br /&gt;
&lt;br /&gt;
 # mdadm --assemble --scan&lt;br /&gt;
&lt;br /&gt;
===RAID ファイルシステムのフォーマット===&lt;br /&gt;
アレイは他のディスクと同じようにフォーマットすることができます、覚えておくべきことは:&lt;br /&gt;
* ボリュームサイズが巨大になるため適合しないファイルシステムが存在します (参照: [[Wikipedia:Comparison of file systems#Limits|ファイルシステムの制限]])。&lt;br /&gt;
* オンラインでのサイズの拡大や縮小に対応しているファイルシステムがふさわしいでしょう (参照: [[Wikipedia:Comparison of file systems#Features|ファイルシステムの機能]])。&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;
* Arch では大抵のファイルシステムのデフォルトブロックサイズは 4096 (4 KiB) です。詳しくは {{ic|/etc/mke2fs.conf}} を見て下さい。&lt;br /&gt;
* &#039;&#039;チャンクサイズ&#039;&#039;はユーザーが指定することができる 4K (1ブロック: [[Advanced Format]] ディスクでない場合は512バイト) から 64K まで、あるいはそれ以上の値です。{{ic|mdadm}} のデフォルトで選択されるチャンクサイズは 512 KiB です ({{ic|&amp;lt;nowiki&amp;gt;# mdadm --detail /dev/mdX | grep &#039;Chunk Size&#039;&amp;lt;/nowiki&amp;gt;}} で確認できます)。巨大なファイルを日常的に使用する場合 (ビデオ編集やグラフィック処理など)、チャンクサイズを小さくすることで巨大なファイルのアクセス速度を向上させることができます。&lt;br /&gt;
&lt;br /&gt;
{{Tip|最適なチャンクサイズについては [http://www.zdnet.com/article/chunks-the-hidden-key-to-raid-performance/ Chunks: the hidden key to RAID performance] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
次に、ストライプ幅を計算してください:&lt;br /&gt;
&lt;br /&gt;
 ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)&lt;br /&gt;
&lt;br /&gt;
===== 例 1. RAID0 =====&lt;br /&gt;
適切なストライプ幅とストライドで ext4 にフォーマットする例:&lt;br /&gt;
* 仮に2つの物理ディスクで構成される RAID0 アレイとします。&lt;br /&gt;
* チャンクサイズは 64k。&lt;br /&gt;
* ブロックサイズは 4k。&lt;br /&gt;
&lt;br /&gt;
ストライド = (チャンクサイズ / ブロックサイズ)。この例では、(64/4) となりストライド = 16です。&lt;br /&gt;
&lt;br /&gt;
ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)。この例では、(2*16) となりストライプ幅 = 32です。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -v -L myarray -m 0.5 -b 4096 -E stride=16,stripe-width=32 /dev/md0&lt;br /&gt;
&lt;br /&gt;
===== 例 2. RAID5 =====&lt;br /&gt;
適切なストライプ幅とストライドで ext4 にフォーマットする例:&lt;br /&gt;
* 仮に4つの物理ディスクで構成される RAID5 アレイとします。3つはデータディスクで1つはパリティディスクです。&lt;br /&gt;
* チャンクサイズは 256k。&lt;br /&gt;
* ブロックサイズは 4k。&lt;br /&gt;
&lt;br /&gt;
ストライド = (チャンクサイズ / ブロックサイズ)。この例では、(256/4) となりストライド = 64です。&lt;br /&gt;
&lt;br /&gt;
ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)。この例では、(3*64) となりストライプ幅 = 192です。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -v -L myarray -m 0.5 -b 4096 -E stride=64,stripe-width=192 /dev/md0&lt;br /&gt;
&lt;br /&gt;
===== 例 3. RAID10 (far2) =====&lt;br /&gt;
適切なストライプ幅とストライドで ext4 にフォーマットする例:&lt;br /&gt;
* 仮に2つの物理ディスクで構成される RAID10 アレイとします。far2 レイアウトの RAID10 なので当然、2つともデータディスクになります。&lt;br /&gt;
* チャンクサイズは 512k。&lt;br /&gt;
* ブロックサイズは 4k。&lt;br /&gt;
&lt;br /&gt;
ストライド = (チャンクサイズ / ブロックサイズ)。この例では、(512/4) となりストライド = 128です。&lt;br /&gt;
&lt;br /&gt;
ストライプ幅 = (物理&#039;&#039;&#039;データ&#039;&#039;&#039;ディスクの数 * ストライド)。この例では、(2*128) となりストライプ幅 = 256です。&lt;br /&gt;
&lt;br /&gt;
 # mkfs.ext4 -v -L myarray -m 0.01 -b 4096 -E stride=128,stripe-width=256 /dev/md0&lt;br /&gt;
&lt;br /&gt;
== ライブ CD からマウント ==&lt;br /&gt;
ライブ CD から RAID パーティションをマウントしたい場合、次のコマンドを使います:&lt;br /&gt;
 # mdadm --assemble /dev/&amp;lt;disk1&amp;gt; /dev/&amp;lt;disk2&amp;gt; /dev/&amp;lt;disk3&amp;gt; /dev/&amp;lt;disk4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ディスクアレイが存在しないのに誤って RAID 1 と認識されて ({{ic|mdadm --detail /dev/md&amp;lt;number&amp;gt;}})、inactive と報告される場合 ({{ic|cat /proc/mdstat}})、先にアレイを停止してください:&lt;br /&gt;
 # mdadm --stop /dev/md&amp;lt;number&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== RAID に Arch Linux をインストール ==&lt;br /&gt;
{{Note|以下のセクションは root ファイルシステムがアレイ上にある場合にのみ当てはまります。データパーティションをアレイに収納する場合はこのセクションをスキップしてかまいません。}}&lt;br /&gt;
インストール手順の[[パーティショニング]]と[[ファイルシステム#デバイスのフォーマット|フォーマット]]の間に RAID アレイを作成してください。root ファイルシステムにするパーティションを直接フォーマットする代わりに、RAID アレイの上に作成します。[[#セットアップ|セットアップ]]セクションの指示に従って RAID アレイを作成してください。その後はインストールの手順に従って pacstrap のステップが完了するところまで進みます。[[Unified Extensible Firmware Interface|UEFI]] で起動する場合、[[EFI システムパーティション#RAID 上に ESP を配置]]も読んでください。&lt;br /&gt;
&lt;br /&gt;
=== 設定ファイルの更新 ===&lt;br /&gt;
{{Note|以下は chroot の外で実行します、そしてファイルパスには /mnt を前に付けます。}}&lt;br /&gt;
ベースシステムをインストールしたら、デフォルトの設定ファイル {{ic|mdadm.conf}} を次のようにして更新する必要があります:&lt;br /&gt;
 # mdadm --detail --scan &amp;gt;&amp;gt; /mnt/etc/mdadm.conf&lt;br /&gt;
&lt;br /&gt;
上のコマンドを実行した後は、かならずテキストエディタを使って mdadm.conf 設定ファイルをチェックして中身が問題ないか確認してください。&lt;br /&gt;
&lt;br /&gt;
{{Note|起動時に (デフォルトで有効になる) &#039;&#039;mdmonitor&#039;&#039; が失敗しないようにするには、{{ic|mdadm.conf}} の一番下にある &#039;&#039;&#039;MAILADDR&#039;&#039;&#039; をアンコメントして、アレイに問題が起こった時に通知が行くメールアドレスかアプリケーションを記述してください。}}&lt;br /&gt;
&lt;br /&gt;
インストールの手順に戻って “Initial ramdisk 環境の作成” のステップまで進んだら、次のセクションを見て下さい。&lt;br /&gt;
&lt;br /&gt;
=== mdadm フックを mkinitcpio.conf に追加する ===&lt;br /&gt;
{{Note|以下は chroot 中に実行します。}}&lt;br /&gt;
init イメージに直接 mdadm のサポートを追加するために [[mkinitcpio]] の [[Mkinitcpio#HOOKS|HOOKS]] セクションに {{ic|mdadm_udev}} を追加してください:&lt;br /&gt;
 HOOKS=&amp;quot;base udev autodetect block &#039;&#039;&#039;mdadm_udev&#039;&#039;&#039; filesystems usbinput fsck&amp;quot;&lt;br /&gt;
&lt;br /&gt;
HOOKS に変更を加えた後は initramfs イメージを再生成します ([[Mkinitcpio#イメージ作成とアクティベーション|イメージ作成とアクティベーション]]を参照):&lt;br /&gt;
 # mkinitcpio -p linux&lt;br /&gt;
&lt;br /&gt;
=== ブートローダーの設定 ===&lt;br /&gt;
&lt;br /&gt;
RAID アレイごとに {{ic|md}} [[カーネルパラメータ]]を追加してください。また、{{ic|root}} パラメータでマッピングするデバイスを正しく指定します。以下の例では三つの RAID 1 アレイを記述しており適当な一つを root として設定しています:&lt;br /&gt;
 root=/dev/md1 md=0,/dev/sda2,/dev/sdb2 md=1,/dev/sda3,/dev/sdb3 md=2,/dev/sda4,/dev/sdb4&lt;br /&gt;
&lt;br /&gt;
上記のカーネルデバイスノードによる方法だとソフトウェア raid パーティションからの起動が失敗する場合、もうひとつの信頼性のある方法としてパーティションラベルを使う方法があります:&lt;br /&gt;
 root=LABEL=Root_Label&lt;br /&gt;
&lt;br /&gt;
[[GRUB#RAID]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== RAID のメンテナンス ==&lt;br /&gt;
=== スクラビング ===&lt;br /&gt;
誤りをチェック・修正するために定期的にデータ[[wikipedia:Data_scrubbing|スクラビング]]を実行するのは良い習慣です。アレイのサイズや設定にもよりますが、スクラブは完了するまでかなり時間がかかります。&lt;br /&gt;
&lt;br /&gt;
データスクラブを開始するには:&lt;br /&gt;
 # echo check &amp;gt; /sys/block/md0/md/sync_action&lt;br /&gt;
&lt;br /&gt;
check オペレーションは不良セクタがないかドライブをスキャンして自動的に不良セクタを修復します。不良データ (他のディスクが示すデータと一致しないセクタのデータ、例えば、パリティブロックと他のデータブロックによって該当するデータブロックが不正だと判断される場合など) を含んでいる良好セクタを見つけた場合、対処は何もされませんが、イベントが記録されます (下を参照)。&amp;quot;何もされない&amp;quot;ことで、管理者はセクタのデータと、重複するデータからセクタを再生成することで得られるデータを検査して正しいデータを選んで保持することができます。&lt;br /&gt;
&lt;br /&gt;
mdadm に関連する様々なタスクやアイテムと同様に、スクラブの状態は {{ic|/proc/mdstat}} を読み出すことで調べることができます。&lt;br /&gt;
&lt;br /&gt;
例:&lt;br /&gt;
{{hc|$ cat /proc/mdstat|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
Personalities : [raid6] [raid5] [raid4] [raid1] &lt;br /&gt;
md0 : active raid1 sdb1[0] sdc1[1]&lt;br /&gt;
      3906778112 blocks super 1.2 [2/2] [UU]&lt;br /&gt;
      [&amp;gt;....................]  check =  4.0% (158288320/3906778112) finish=386.5min speed=161604K/sec&lt;br /&gt;
      bitmap: 0/30 pages [0KB], 65536KB chunk&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
実行中のデータスクラブを安全に停止するには:&lt;br /&gt;
 # echo idle &amp;gt; /sys/block/md0/md/sync_action&lt;br /&gt;
&lt;br /&gt;
{{Note|スクラブを途中で中止した後にシステムを再起動してしまうと、スクラブはもういちど最初からやり直されます。}}&lt;br /&gt;
&lt;br /&gt;
スクラブが完了したら、(不良セクタがあった場合) いくつのブロックが不良として判断されたか確認することができます:&lt;br /&gt;
 # cat /sys/block/md0/md/mismatch_cnt&lt;br /&gt;
&lt;br /&gt;
==== スクラビングの一般的な注意事項 ====&lt;br /&gt;
{{Note|ユーザーは /sys/block/md0/md/sync_action に &#039;&#039;&#039;repair&#039;&#039;&#039; を echo することもできますが、データにミスマッチが発生したとき、一貫性のために自動的に更新が行われるため、推奨されません。正しいパリティまたはデータブロックなのか (RAID1 の場合どちらのデータブロックなのか) 判断することができないのが危険です。この操作によって間違ったデータではなく正しいデータが選択されるかどうかは一か八かです。}}&lt;br /&gt;
&lt;br /&gt;
定期的にスクラブを root で実行する cron ジョブを設定するのは良い考えです。ジョブの設定に役立つ {{AUR|raid-check}} を見て下さい。cron の代わりに systemd タイマーを使ってスクラブを実行したい場合は {{AUR|raid-check-systemd}} をインストールしてください。systemd タイマーのユニットファイルとスクリプトが含まれています。&lt;br /&gt;
&lt;br /&gt;
==== スクラビングの RAID1 と RAID10 の注意事項 ====&lt;br /&gt;
カーネルにおける RAID1 と RAID10 の書き込みはバッファがないため、アレイが問題ないときでもアレイにゼロ以外のミスマッチがカウントされることがあります。このようなゼロ以外のカウントは一時的なデータ領域にしか存在せず、問題は起こりません。しかしながら、一時的なデータのゼロ以外のカウントと実際に問題が起こっていることを示すゼロ以外のカウントを見分けることはできません。このために RAID1 や RAID10 アレイでは誤検知が発生することがあります。それでもデバイスにあるかもしれない不良セクタを見つけて直すために定期的にスクラブすることを推奨します。&lt;br /&gt;
&lt;br /&gt;
===アレイからデバイスを削除する===&lt;br /&gt;
アレイからデバイスを削除する際は削除する前にそのデバイスが壊れているとマークを付けます:&lt;br /&gt;
 # mdadm --fail /dev/md0 /dev/sdxx&lt;br /&gt;
&lt;br /&gt;
そしてアレイからデバイスを削除します:&lt;br /&gt;
 # mdadm -r /dev/md0 /dev/sdxx&lt;br /&gt;
&lt;br /&gt;
ドライブを完全に削除するときは (例えば、今後別の方法で使用する) 上記の2つのコマンドを実行した後に:&lt;br /&gt;
&lt;br /&gt;
 # mdadm --zero-superblock /dev/sdxx&lt;br /&gt;
&lt;br /&gt;
{{Warning|&lt;br /&gt;
* 上記のコマンドを RAID0 アレイで実行してはいけません。データが消失してしまいます。&lt;br /&gt;
* 削除したディスクのスーパーブロックを消去せずに再利用した場合、再起動時に全てのデータが消失します。}}&lt;br /&gt;
&lt;br /&gt;
アレイの使用を停止:&lt;br /&gt;
# 対象のアレイをアンマウント&lt;br /&gt;
# 次のコマンドでアレイを停止: {{ic|mdadm --stop /dev/md0}}&lt;br /&gt;
# セクションの最初に書かれている3つのコマンドを各デバイスで繰り返し実行。&lt;br /&gt;
# {{ic|/etc/mdadm.conf}} から対応する行を削除&lt;br /&gt;
&lt;br /&gt;
=== アレイに新しいデバイスを追加する ===&lt;br /&gt;
デバイスがマウントされている動作中のシステム上で mdadm を使って新しいデバイスを追加することができます。上述しているように既存のアレイの一つとして同じレイアウトを使って新しいデバイスをパーティションしてください。&lt;br /&gt;
&lt;br /&gt;
RAID アレイを構築していない場合は構築します:&lt;br /&gt;
 # mdadm --assemble /dev/md0 /dev/sda1 /dev/sdb1&lt;br /&gt;
&lt;br /&gt;
アレイに新しいデバイスを追加:&lt;br /&gt;
 # mdadm --add /dev/md0 /dev/sdc1&lt;br /&gt;
&lt;br /&gt;
mdadm がデバイスを追加するのにはあまり時間はかかりません。進捗を確認するには:&lt;br /&gt;
 # cat /proc/mdstat&lt;br /&gt;
&lt;br /&gt;
デバイスが追加されたかは次のコマンドで確認:&lt;br /&gt;
 # mdadm --misc --detail /dev/md0&lt;br /&gt;
&lt;br /&gt;
==== RAID0 アレイの場合 ====&lt;br /&gt;
&lt;br /&gt;
以下のようなエラーが表示された場合:&lt;br /&gt;
 mdadm: add new device failed for /dev/sdc1 as 2: Invalid argument&lt;br /&gt;
&lt;br /&gt;
これはおそらく RAID0 を使っていることが原因です。上のコマンドは新しいディスクを&amp;quot;スペア&amp;quot;として追加しますが、RAID0 にはスペアは存在しません。RAID0 アレイにデバイスを追加したいときは、一つのコマンドで &amp;quot;grow&amp;quot; して &amp;quot;add&amp;quot; する必要があります:&lt;br /&gt;
 # mdadm --grow /dev/md0 --raid-devices=3 --add /dev/sdc1&lt;br /&gt;
&lt;br /&gt;
=== RAID ボリュームのサイズを増やす ===&lt;br /&gt;
&lt;br /&gt;
RAID アレイに巨大なディスクを追加した場合やパーティションサイズを増やした場合、RAID ボリュームのサイズを増加させて空き領域を埋めると良いでしょう。まずは上のセクションに従って RAID ボリュームを再構築してください。再構築が完了したら領域を埋めるように拡張してください:&lt;br /&gt;
 # mdadm --grow /dev/md0 --size=max&lt;br /&gt;
そして RAID ボリューム {{ic|/dev/md0}} に存在するパーティションのサイズを変更してください。詳しくは[[パーティショニング]]を参照。最後に、パーティション内のファイルシステムをリサイズしてください。{{ic|gparted}} でパーティショニングした場合、自動的にリサイズされます。他のツールを使った場合、パーティションをアンマウントして手動でファイルシステムをリサイズしてください:&lt;br /&gt;
{{bc|&lt;br /&gt;
# umount /storage&lt;br /&gt;
# fsck.ext4 -f /dev/md0p1&lt;br /&gt;
# resize2fs /dev/md0p1&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== 同期速度の制限を変更 ===&lt;br /&gt;
&lt;br /&gt;
同期には時間がかかります。マシンで他の作業をしていない場合、速度制限を上げることが可能です。&lt;br /&gt;
&lt;br /&gt;
{{hc|# cat /proc/mdstat|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Personalities : [raid1] &lt;br /&gt;
 md0 : active raid1 sda3[2] sdb3[1]&lt;br /&gt;
       155042219 blocks super 1.2 [2/1] [_U]&lt;br /&gt;
       [&amp;gt;....................]  recovery =  0.0% (77696/155042219) finish=265.8min speed=9712K/sec&lt;br /&gt;
       &lt;br /&gt;
 unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
現在の制限速度を確認:&lt;br /&gt;
&lt;br /&gt;
{{hc|# cat /proc/sys/dev/raid/speed_limit_min|&lt;br /&gt;
1000&lt;br /&gt;
}}&lt;br /&gt;
{{hc|# cat /proc/sys/dev/raid/speed_limit_max|&lt;br /&gt;
200000&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
制限を上げる:&lt;br /&gt;
&lt;br /&gt;
 # echo 400000 &amp;gt;/proc/sys/dev/raid/speed_limit_min&lt;br /&gt;
 # echo 400000 &amp;gt;/proc/sys/dev/raid/speed_limit_max&lt;br /&gt;
&lt;br /&gt;
上記の設定後、同期速度と予想完了時間を確認してみてください:&lt;br /&gt;
&lt;br /&gt;
{{hc|# cat /proc/mdstat|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
 Personalities : [raid1] &lt;br /&gt;
 md0 : active raid1 sda3[2] sdb3[1]&lt;br /&gt;
       155042219 blocks super 1.2 [2/1] [_U]&lt;br /&gt;
       [&amp;gt;....................]  recovery =  1.3% (2136640/155042219) finish=158.2min speed=16102K/sec&lt;br /&gt;
      &lt;br /&gt;
 unused devices: &amp;lt;none&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
[[sysctl#MDADM]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== 監視 ==&lt;br /&gt;
RAID デバイスの状態を出力するシンプルなワンライナー:&lt;br /&gt;
{{hc|awk &#039;/^md/ {printf &amp;quot;%s: &amp;quot;, $1}; /blocks/ {print $NF}&#039; &amp;lt;/proc/mdstat&lt;br /&gt;
|md1: [UU]&lt;br /&gt;
md0: [UU]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===Watch mdstat===&lt;br /&gt;
{{bc|watch -t &#039;cat /proc/mdstat&#039;}}&lt;br /&gt;
または {{pkg|tmux}} を使う場合:&lt;br /&gt;
{{bc|tmux split-window -l 12 &amp;quot;watch -t &#039;cat /proc/mdstat&#039;&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
===iotop で IO を追跡===&lt;br /&gt;
{{pkg|iotop}} パッケージはプロセスの入出力の統計を表示します。次のコマンドを使って raid スレッドの IO を表示することができます。&lt;br /&gt;
&lt;br /&gt;
{{bc|&amp;lt;nowiki&amp;gt;iotop -a -p $(sed &#039;s, , -p ,g&#039; &amp;lt;&amp;lt;&amp;lt;`pgrep &amp;quot;_raid|_resync|jbd2&amp;quot;`)&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===iostat で IO を追跡 ===&lt;br /&gt;
&lt;br /&gt;
{{Pkg|sysstat}} パッケージに入っている &#039;&#039;iostat&#039;&#039; ユーティリティはデバイスやパーティションの入出力の統計を表示します。&lt;br /&gt;
&lt;br /&gt;
  iostat -dmy 1 /dev/md0&lt;br /&gt;
  iostat -dmy 1 # all&lt;br /&gt;
&lt;br /&gt;
===イベントでメールを送信===&lt;br /&gt;
smtp メールサーバー (sendmail) かメールフォワーダ (ssmtp/msmtp) が必要です。おそらく一番シンプルな方法は {{AUR|dma}} を使うことです。とても小さく (インストール容量 0.08 MiB) でセットアップがいりません。&lt;br /&gt;
&lt;br /&gt;
{{ic|/etc/mdadm.conf}} を編集して通知を受信するメールアドレスを指定します。&lt;br /&gt;
{{Note|上記のとおり dma を使用する場合、外部のメールアドレスではなくローカルホストのユーザー名に直接メールを送ることができます。}}&lt;br /&gt;
&lt;br /&gt;
設定をテストするには:&lt;br /&gt;
 # mdadm --monitor --scan --oneshot --test&lt;br /&gt;
&lt;br /&gt;
[[mdadm]] には監視作業を行う systemd サービス (mdmonitor.service) が含まれているため、ここで、やるべきことはもうありません。{{ic|/etc/mdadm.conf}} でメールアドレスを設定していないと、サービスは失敗します。mdadm イベントでメールを受けとりたくない場合は、サービスの失敗は無視してかまいません。通知を表示したくなく、失敗メッセージが気になるならば、ユニットをマスクしてください。&lt;br /&gt;
&lt;br /&gt;
==== その他の方法 ====&lt;br /&gt;
&lt;br /&gt;
smtp メールサーバーやメールフォワーダをインストールする代わりに、既存の [[S-nail]] ツールを使うこともできます (忘れずにセットアップしてください)。&lt;br /&gt;
&lt;br /&gt;
以下の内容で {{ic|/etc/mdadm_warning.sh}} という名前のファイルを作成:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 event=$1&lt;br /&gt;
 device=$2&lt;br /&gt;
 &lt;br /&gt;
 echo &amp;quot; &amp;quot; | /usr/bin/mailx -s &amp;quot;$event on $device&amp;quot; &#039;&#039;&#039;destination@email.com&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
実行権限を与えます: {{ic|chmod +x /etc/mdadm_warning.sh}}&lt;br /&gt;
&lt;br /&gt;
それから {{ic|mdadm.conf}} にこのファイルを追加してください:&lt;br /&gt;
&lt;br /&gt;
 PROGRAM /etc/mdadm_warning.sh&lt;br /&gt;
&lt;br /&gt;
前記の方法と同じ方法でテスト・有効化します。&lt;br /&gt;
&lt;br /&gt;
==トラブルシューティング==&lt;br /&gt;
再起動した時に &amp;quot;invalid raid superblock magic&amp;quot; というエラーが表示される場合、ハードドライブを追加したときは、ハードドライブの順番が正しいか確認してください。インストール時の RAID デバイスは hdd, hde, hdf だったとしても起動時には hda, hdb, hdc になっているかもしれません。カーネルラインをそれにあわせて修正してください。&lt;br /&gt;
&lt;br /&gt;
===エラー: &amp;quot;kernel: ataX.00: revalidation failed&amp;quot;===&lt;br /&gt;
突然 (再起動後または BIOS の設定を変更した後) 以下のようなエラーメッセージが表示された場合:&lt;br /&gt;
&lt;br /&gt;
 Feb  9 08:15:46 hostserver kernel: ata8.00: revalidation failed (errno=-5)&lt;br /&gt;
&lt;br /&gt;
これは必ずしもドライブが壊れたことを意味しているわけはありません。要するに、まだあわてるような時間じゃありません。BIOS やカーネルパラメータで APIC または ACPI 設定を変更した場合、設定を戻せば問題ないはずです。大抵は、ACPI をオフにすれば直ります。&lt;br /&gt;
&lt;br /&gt;
===読み取り専用でアレイを起動===&lt;br /&gt;
md アレイが起動すると、スーパーブロックが書き出され、resync が走ることがあります。読み取り専用で起動するにはカーネルモジュール {{ic|md_mod}} のパラメータ {{ic|start_ro}} を設定します。これが設定されている場合、新しいアレイは &#039;auto-ro&#039; モードになり、内部 io (スーパーブロックの更新, resync, recovery) が全て無効化されて、書き込みリクエストが来た時に初めて &#039;rw&#039; に自動的に切り替わります。&lt;br /&gt;
&lt;br /&gt;
{{Note|最初の書き込みリクエストがある前に {{ic|mdadm --readonly}} を使うことでアレイを完全な &#039;ro&#039; モードに設定できます。また、{{ic|mdadm --readwrite}} で書き込みを行わないで再同期を開始できます。}}&lt;br /&gt;
&lt;br /&gt;
起動時にパラメータを設定するには、カーネル行に {{ic|&amp;lt;nowiki&amp;gt;md_mod.start_ro=1&amp;lt;/nowiki&amp;gt;}} を追加してください。&lt;br /&gt;
&lt;br /&gt;
もしくはモジュールのロード時に {{ic|/etc/modprobe.d/}} ファイルや {{ic|/sys/}} から直接設定します。&lt;br /&gt;
{{bc|echo 1 &amp;gt; /sys/module/md_mod/parameters/start_ro}}&lt;br /&gt;
&lt;br /&gt;
===raid の故障したまたは存在しないドライブからリカバリする===&lt;br /&gt;
何らかの理由でドライブの一つが壊れた時も上述のエラーが表示されることがあります。その場合、ディスクが一つ足りない状態でも raid がオンになるようにしなくてはなりません。次のコマンドを入力 (必要に応じて変更してください):&lt;br /&gt;
 # mdadm --manage /dev/md0 --run&lt;br /&gt;
&lt;br /&gt;
これで次のようにしてまたマウントできるようになったはずです (fstab で記述している場合):&lt;br /&gt;
 # mount /dev/md0&lt;br /&gt;
&lt;br /&gt;
raid がまた動作するようになって使えるようにはなりましたが、ディスクが一つ不足しています。ディスクを追加するために[[#デバイスの準備|デバイスの準備]]で記述しているようにしてパーティションしてください。パーティションしたら次のコマンドで raid に新しいディスクを追加できます:&lt;br /&gt;
 # mdadm --manage --add /dev/md0 /dev/sdd1&lt;br /&gt;
&lt;br /&gt;
次を入力すれば:&lt;br /&gt;
 # cat /proc/mdstat&lt;br /&gt;
raid が有効になって再構築されたことが確認できるでしょう。&lt;br /&gt;
&lt;br /&gt;
設定を更新しても良いかもしれません (参照: [[#設定ファイルの更新|設定ファイルの更新]])。&lt;br /&gt;
&lt;br /&gt;
== ベンチマーク ==&lt;br /&gt;
RAID をベンチマークするツールは複数存在します。同じ RAID ボリュームからマルチスレッドで読み取るときの速度向上が一番の改善点になります。&lt;br /&gt;
&lt;br /&gt;
{{AUR|tiobench}}{{Broken package link|パッケージが存在しません}} はフルスレッドによるディスク I/O を計測することでパフォーマンスがどれくらい向上したかベンチマークします。&lt;br /&gt;
&lt;br /&gt;
{{Pkg|bonnie++}} はひとつまたは複数のファイルへのデータベースタイプのアクセスをテストしたり、小さなファイルを作成・読込・削除することで Squid や INN、または Maildir フォーマットのメールなどといったプログラムの使用をシミュレートします。同梱されている [http://www.coker.com.au/bonnie++/zcav/ ZCAV] プログラムはディスクに書き込みを行わずにハードドライブの領域のパフォーマンスをテストします。&lt;br /&gt;
&lt;br /&gt;
{{ic|hdparm}} を RAID のベンチマークに使っては&#039;&#039;&#039;いけません&#039;&#039;&#039;、出てくる結果には全く一貫性がありません。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* Linux カーネルアーカイブの [http://raid.wiki.kernel.org/index.php/Linux_Raid Linux RAID wiki エントリ]&lt;br /&gt;
* [https://raid.wiki.kernel.org/index.php/Write-intent_bitmap How Bitmaps Work]&lt;br /&gt;
* Red Hat Enterprise Linux 6 ドキュメントの [https://access.redhat.com/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-raid.html 第17章: Redundant Array of Independent Disks (RAID)]&lt;br /&gt;
* [http://tldp.org/FAQ/Linux-RAID-FAQ/x37.html Linux-RAID FAQ] on the Linux Documentation Project&lt;br /&gt;
* [http://support.dell.com/support/topics/global.aspx/support/entvideos/raid?c=us&amp;amp;l=en&amp;amp;s=gen Dell.com Raid Tutorial] - Interactive Walkthrough of Raid&lt;br /&gt;
* [http://www.miracleas.com/BAARF/ BAARF] including &#039;&#039;[http://www.miracleas.com/BAARF/RAID5_versus_RAID10.txt Why should I not use RAID 5?]&#039;&#039; by Art S. Kagel&lt;br /&gt;
* [http://www.linux-mag.com/id/7924/ Introduction to RAID], [http://www.linux-mag.com/id/7931/ Nested-RAID: RAID-5 and RAID-6 Based Configurations], [http://www.linux-mag.com/id/7928/ Intro to Nested-RAID: RAID-01 and RAID-10], and [http://www.linux-mag.com/id/7932/ Nested-RAID: The Triple Lindy] in Linux Magazine&lt;br /&gt;
* [http://www.cyberciti.biz/tips/linux-raid-increase-resync-rebuild-speed.html HowTo: Speed Up Linux Software Raid Building And Re-syncing]&lt;br /&gt;
* [http://fomori.org/blog/?p=94 RAID5-Server to hold all your data]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;既知のバグ&#039;&#039;&#039;&lt;br /&gt;
* [http://marc.info/?l=linux-raid&amp;amp;m=144960710718870&amp;amp;w=2 linux-raid ML #1]&lt;br /&gt;
* [http://marc.info/?l=linux-raid&amp;amp;m=144830809503689&amp;amp;w=2 linux-raid ML #2]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;mdadm&#039;&#039;&#039;&lt;br /&gt;
* [http://anonscm.debian.org/gitweb/?p=pkg-mdadm/mdadm.git;a=blob_plain;f=debian/FAQ;hb=HEAD Debian mdadm FAQ]&lt;br /&gt;
* [https://www.kernel.org/pub/linux/utils/raid/mdadm/ mdadm ソースコード]&lt;br /&gt;
* [http://www.linux-mag.com/id/7939/ Software RAID on Linux with mdadm] in Linux Magazine&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;フォーラムスレッド&#039;&#039;&#039;&lt;br /&gt;
* [http://forums.overclockers.com.au/showthread.php?t=865333 Raid Performance Improvements with bitmaps]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=125445 GRUB and GRUB2]&lt;br /&gt;
* [https://bbs.archlinux.org/viewtopic.php?id=123698 Can&#039;t install grub2 on software RAID]&lt;br /&gt;
* [https://forums.gentoo.org/viewtopic-t-888624-start-0.html Use RAID metadata 1.2 in boot and root partition]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;RAID と暗号化&#039;&#039;&#039;&lt;br /&gt;
* [http://www.shimari.com/dm-crypt-on-raid/ Linux/Fedora: Encrypt /home and swap over RAID with dm-crypt] by Justin Wells&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Systemd-homed&amp;diff=24208</id>
		<title>Systemd-homed</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Systemd-homed&amp;diff=24208"/>
		<updated>2022-02-26T13:19:45Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* homectl */ systemd-homed が管理する UID 範囲を修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{lowercase title}}&lt;br /&gt;
[[Category:セキュリティ]]&lt;br /&gt;
[[en:Systemd-homed]]&lt;br /&gt;
[[pt:Systemd-homed]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ユーザーとグループ}}&lt;br /&gt;
{{Related|fscrypt}}&lt;br /&gt;
{{Related|セキュリティ}}&lt;br /&gt;
{{Related|PAM}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
&lt;br /&gt;
{{man|8|systemd-homed}} は現在のシステム構成に依存しないポータブルなユーザーアカウントを提供する [[systemd]] サービスです。&lt;br /&gt;
&lt;br /&gt;
ポータビリティを実現するために、systemd-homed は全てのユーザー関連情報をストレージメディアに移動して、可能であれば暗号化を行い、ユーザーに関する署名済み情報 (パスワードやユーザーが属するグループ、UID/GID、その他 {{ic|/}} に散在する情報) を含む {{ic|~/.identity}} ファイルを作成します。&lt;br /&gt;
&lt;br /&gt;
ポータブルなホームディレクトリを可能にするだけではなく、ログイン時に {{ic|/home}} を暗号化しシステムの停止時にフォルダに施錠するという管理を自動化することでセキュリティも確保されます。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-homed&#039;&#039; は {{Pkg|systemd}} に含まれています。{{ic|systemd-homed.service}} を[[起動]]・[[有効化]]してください。また、{{Pkg|pambase}} のバージョン 20200721.1-2 以降には、systemd-homed のユーザーセッションで必要となる [[PAM#設定 | PAMの設定]] が付属しています。&lt;br /&gt;
&lt;br /&gt;
== ユーティリティ ==&lt;br /&gt;
&lt;br /&gt;
=== homectl === &lt;br /&gt;
&lt;br /&gt;
homectl を使うことでユーザーを作成・更新・調査して、ホームディレクトリと {{man|8|systemd-homed}} サービスで管理される {{ic|~/.identity}} を作成することができます。&lt;br /&gt;
&lt;br /&gt;
[https://systemd.io/UIDS-GIDS/ 60001–60513 の範囲で]空きの UID を使用して、&#039;username&#039; という名前のユーザーを作成 (同じ名前のグループを作成して GID と UID を同じにして &#039;&#039;username&#039;&#039; をグループのメンバーに設定し、デフォルトシェルを {{ic|/bin/bash}} に設定):&lt;br /&gt;
&lt;br /&gt;
 # homectl create username&lt;br /&gt;
&lt;br /&gt;
上記のコマンドでホームディレクトリのマウントポイントは {{ic|/home/&#039;&#039;username&#039;&#039;}} に設定されます。ストレージ方式は次の順番で選択されます:&lt;br /&gt;
&lt;br /&gt;
# {{ic|luks}}: LUKS がサポートされている場合。&lt;br /&gt;
# {{ic|サブボリューム}}: LUKS がサポートされておらず、サブボリュームはサポートされている場合。&lt;br /&gt;
# {{ic|ディレクトリ}}: 上のいずれもサポートされておらず他のマニュアルのオプションでも指定されていない場合。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;LUKS&#039;&#039;&#039; のイメージパスは {{ic|/home/&#039;&#039;username&#039;&#039;.home}} に、&#039;&#039;&#039;ディレクトリ&#039;&#039;&#039;のディレクトリパスは {{ic|/home/&#039;&#039;username&#039;&#039;.homedir}} に設定されます。&lt;br /&gt;
&lt;br /&gt;
{{Note| &#039;&#039;&#039;homectl&#039;&#039;&#039; は systemd-homedが管理し該当する名前とユーザーの ID 以外には、グループの作成・削除を管理しません。古典的なツールを使ってください。}}&lt;br /&gt;
&lt;br /&gt;
{{Warning|{{ic|~/.identity}} ファイルは署名されるためテキストエディタを使って直接編集してはありません。署名が破壊され不正なファイルとなってしまいます。編集するときは {{ic|1=homectl update --identity=/path/to/.identity}} を使ってください。}}&lt;br /&gt;
&lt;br /&gt;
=== userdbctl ===&lt;br /&gt;
&lt;br /&gt;
古典的な UNIX によるユーザー管理と [[systemd-homed]] によるユーザー管理、両方によるユーザー・グループ・グループ属性を調査するための問い合わせツール。&lt;br /&gt;
&lt;br /&gt;
== ストレージ方式 ==&lt;br /&gt;
&lt;br /&gt;
=== [[LUKS]] ホームディレクトリ ===&lt;br /&gt;
&lt;br /&gt;
ユーザーのホームディレクトリはループバックファイルあるいはリムーバルメディアの [[LUKS]] ボリューム内の Linux [[ファイルシステム]]に保存されます。この方式を使う際は {{ic|1=--storage=luks}} を &#039;&#039;&#039;homectl&#039;&#039;&#039; に指定してください。&lt;br /&gt;
&lt;br /&gt;
リムーバルメディアを使う場合は以下の条件を満たす必要があります:&lt;br /&gt;
&lt;br /&gt;
* イメージには GPT パーティションテーブルが必要です。現在のところ、そのパーティションひとつだけで、パーティションのタイプが {{ic|UUID 773f91ef-66d4-49b5-bd83-d683bf40ad16}} である必要があります。また、パーティションのラベルがユーザーの名前でなくてはなりません。&lt;br /&gt;
&lt;br /&gt;
* パーティションには LUKS2 ボリュームが必要で、ラベルがユーザー名と一致している必要があります。LUKS2 ボリュームには systemd-homed タイプの LUKS2 トークンフィールドが必要です。このトークンの JSON データには base64 でエンコードされたデータを含むレコードフィールドが必要です。このデータは JSON のユーザーレコードであり、{{ic|~/.identity}} と同じようにシリアライゼーションされています。このトークンの JSON データには iv フィールドも必要で、暗号化のための base64 でエンコードされたバイナリ初期化ベクタを記述します。LUKS2 ボリュームが使用するのと同じ暗号化が使われ、同じボリュームキーで解錠されますが、自己の IV を使います。&lt;br /&gt;
&lt;br /&gt;
* LUKS2 ボリュームの中は [[ext4]], [[btrfs]], [[XFS]] のいずれかの Linux ファイルシステムである必要があり、ファイルシステムのラベルはユーザー名でなければなりません。&lt;br /&gt;
&lt;br /&gt;
* ファイルシステムにはユーザーと同じ名前のディレクトリが必要です。このディレクトリがログイン時にユーザーのホームディレクトリになります。他のストレージ方式と同じように {{ic|~/.identity}} ファイルにユーザーレコードのコピーを保持します。&lt;br /&gt;
&lt;br /&gt;
=== [[fscrypt]] ディレクトリ ===&lt;br /&gt;
&lt;br /&gt;
{{Tip|fscrypt をサポートしているファイルシステムには [[ext4]] や [[F2FS]] があります。}}&lt;br /&gt;
上記の方法と同じようにユーザーのホームディレクトリが保存されますが、ファイルシステムネイティブの暗号化が使われます。この方式を使う場合は {{ic|1=--storage=fscrypt}} を &#039;&#039;&#039;homectl&#039;&#039;&#039; に指定してください。&lt;br /&gt;
&lt;br /&gt;
=== ディレクトリまたは [[btrfs]] サブボリューム ===&lt;br /&gt;
&lt;br /&gt;
ユーザーのホームディレクトリは {{ic|/home/&#039;&#039;username&#039;&#039;.homedir}} に保存され、ログイン時にバインド[[マウント]]を使って {{ic|/home/&#039;&#039;username&#039;&#039;}} にマウントされます。この方式では暗号化は行われません。 この方式を使う際は {{ic|1=--storage=directory}} または {{ic|1=--storage=subvolume}} を &#039;&#039;&#039;homectl&#039;&#039;&#039; に指定してください。&lt;br /&gt;
&lt;br /&gt;
=== CIFS サーバー ===&lt;br /&gt;
&lt;br /&gt;
この方式では、ホームディレクトリはログイン時に CIFS (&#039;&#039;Common Internet File System&#039;&#039;) サーバからマウントされます。この CIFS は [[Samba]] プロトコルによって実装されています。この方式を使う際は {{ic|1=--storage=cifs}} を&#039;&#039;&#039;homectl&#039;&#039;&#039;に指定して下さい。また、ローカルパスワードが CIFS サービスへのログイン情報としても使われます。&lt;br /&gt;
&lt;br /&gt;
== ユーザーレコードの属性 ==&lt;br /&gt;
&lt;br /&gt;
ユーザーレコードを見るには次のようにします:&lt;br /&gt;
&lt;br /&gt;
 # homectl inspect &#039;&#039;username&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
また、変更、追加したい場合は次のようにします:&lt;br /&gt;
&lt;br /&gt;
 # homectl update &#039;&#039;username&#039;&#039; --&#039;&#039;property&#039;&#039;=&#039;&#039;VALUE&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
オプションの詳細は {{man|1|homectl}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ユーザー管理の例 ==&lt;br /&gt;
&lt;br /&gt;
=== ユーザーの作成 ===&lt;br /&gt;
&lt;br /&gt;
LUKS による暗号化を使ってユーザーを作成する:&lt;br /&gt;
&lt;br /&gt;
 # homectl create &#039;&#039;username&#039;&#039; --storage=luks&lt;br /&gt;
&lt;br /&gt;
fscrypt を使ってユーザーを作成する (ただし、fscript が[[Fscrypt#ファイルシステム| ファイルシステムで有効化]] されているか気を付けてください):&lt;br /&gt;
&lt;br /&gt;
 # homectl create &#039;&#039;username&#039;&#039; --storage=fscrypt&lt;br /&gt;
&lt;br /&gt;
UID とシェル、グループを指定してユーザーを作成する:&lt;br /&gt;
&lt;br /&gt;
 # homectl create &#039;&#039;username&#039;&#039; --shell=/bin/zsh --uid=60100 --member-of=wheel,adm,uucp&lt;br /&gt;
&lt;br /&gt;
他のオプションは {{man|1|homectl|USER RECORD PROPERTIES}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
=== ユーザーの削除 ===&lt;br /&gt;
{{Warning|ユーザーの削除は即座に実行されます。注意してください。}}&lt;br /&gt;
&lt;br /&gt;
複数のユーザーを同時に削除することができます。次のコマンドを実行することで 2 ユーザーが即座に削除されます:&lt;br /&gt;
&lt;br /&gt;
 # homectl remove &#039;&#039;username&#039;&#039; &#039;&#039;username2&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== ヒントとテクニック ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Forget key on suspend ===&lt;br /&gt;
&lt;br /&gt;
{{Warning|Mistakes in [[PAM]] configuration can break the system authorization up to not being able to login even as &#039;&#039;root&#039;&#039;. Backing up existing configuration files is recommended before making any changes.}} &lt;br /&gt;
&lt;br /&gt;
The {{ic|suspend}} option can be used with {{ic|pam_systemd_home.so}} entries in the files in {{ic|/etc/pam.d/}} to enable forget key on suspend. No session manager at the moment supports this feature. Furthermore, TTY sessions do not support the reathentication mechanism. So, when session managers start supporting this feature, the suspend option should only be enabled for them. Read {{man|8|pam_systemd_home}} and the [http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_SAG.html Linux-PAM System Administrators&#039; Guide] for more details.&lt;br /&gt;
&lt;br /&gt;
=== SSH remote unlocking ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;systemd-homed&#039;&#039; encrypts your home directory using your password, so SSH configured for public key authentication cannot mount it or read {{ic|authorized_keys}}. A possible solution is to add authorized keys to your user record and require both public key and password for authentication. Add the following to {{ic|sshd_config}}:&lt;br /&gt;
&lt;br /&gt;
 AuthenticationMethods publickey,password&lt;br /&gt;
 AuthorizedKeysCommand /usr/bin/userdbctl ssh-authorized-keys %u&lt;br /&gt;
 AuthorizedKeysCommandUser root&lt;br /&gt;
&lt;br /&gt;
Make sure that you have not disabled password authentication:&lt;br /&gt;
&lt;br /&gt;
 #PasswordAuthentication yes&lt;br /&gt;
&lt;br /&gt;
Update your user record with your authorized keys using:&lt;br /&gt;
&lt;br /&gt;
 # homectl update &#039;&#039;username&#039;&#039; --ssh-authorized-keys=@/path/to/.ssh/authorized_keys&lt;br /&gt;
&lt;br /&gt;
From now on, SSH will ask you to enter your password after completing key-based authentication. &#039;&#039;systemd-homed&#039;&#039; will use it to unlock and mount your home directory.&lt;br /&gt;
&lt;br /&gt;
=== Mounting encrypted home directory for rescue ===&lt;br /&gt;
&lt;br /&gt;
If you need to mount a &#039;&#039;systemd-homed&#039;&#039;-encrypted directory from a rescue disk or another machine, you will need to decrypt the directory outside of the &#039;&#039;systemd-homed&#039;&#039; framework. You may wish to keep a text file or script of this solution from the [https://bbs.archlinux.org/viewtopic.php?id=258152 forums] on your rescue disk for emergencies:&lt;br /&gt;
&lt;br /&gt;
 # losetup -fP &#039;&#039;username&#039;&#039;.home&lt;br /&gt;
 # cryptsetup open /dev/&#039;&#039;loopXpY&#039;&#039; &#039;&#039;mappername&#039;&#039;&lt;br /&gt;
 # mount /dev/mapper/&#039;&#039;mappername&#039;&#039; &#039;&#039;/mnt/mountpoint&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
where,&lt;br /&gt;
&lt;br /&gt;
* {{ic|&#039;&#039;username&#039;&#039;.home}} is the file in the {{ic|/home}} directory with your username and the &#039;&#039;.home&#039;&#039; extension as its name&lt;br /&gt;
* {{ic|&#039;&#039;loopXpY&#039;&#039;}} is the device in the {{ic|/dev}} directory with the loop number of the loopback device created in the prior step and the partition number of the relevant partition, probably {{ic|/dev/loop0p1}}&lt;br /&gt;
* {{ic|&#039;&#039;mappername&#039;&#039;}} is whatever alias you decide to adopt for the mapped device, e.g. {{ic|user_oldhome}}&lt;br /&gt;
* {{ic|&#039;&#039;/mnt/mountpoint&#039;&#039;}} is wherever you want to mount your decrypted home directory&lt;br /&gt;
&lt;br /&gt;
== トラブルシューティング ==&lt;br /&gt;
&lt;br /&gt;
=== SDDM がユーザーをリストしない ===&lt;br /&gt;
&lt;br /&gt;
こちらを参照してください: [[SDDM#ユーザーが greeter に表示されない]]。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* https://systemd.io/CONVERTING_TO_HOMED/&lt;br /&gt;
* https://systemd.io/HOME_DIRECTORY/&lt;/div&gt;</summary>
		<author><name>Shota</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%E9%80%9A%E7%9F%A5&amp;diff=24166</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%E9%80%9A%E7%9F%A5&amp;diff=24166"/>
		<updated>2022-02-23T01:02:50Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* スタンドアロン */ 英語版を参照して項目を削除、追加&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:X サーバー]]&lt;br /&gt;
[[Category:通知]]&lt;br /&gt;
[[Category:開発]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[en:Desktop notifications]]&lt;br /&gt;
[[es:Desktop notifications]]&lt;br /&gt;
[[ru:Desktop notifications]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|GTK+}}&lt;br /&gt;
{{Related|Libcanberra}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
デスクトップ通知は、非同期に特定のイベントをユーザーに通知する小さくて控えめなポップアップダイアログです。&lt;br /&gt;
&lt;br /&gt;
==Libnotify==&lt;br /&gt;
&lt;br /&gt;
Libnotify は [[GTK+]] や [[Qt]] アプリケーションのサポートを提供する [https://developer.gnome.org/notification-spec/ Desktop Notifications Specification] の実装で特定のデスクトップに依存していません: [[Evolution]] や [[Pidgin]] など多数のオープンソースアプリによって使用されています。Libnotify は[[公式リポジトリ]]にある {{Pkg|libnotify}} パッケージでインストールすることが可能です。&lt;br /&gt;
&lt;br /&gt;
libnotify を使うには、[[#通知サーバー|通知サーバー]]をインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
== 通知サーバー ==&lt;br /&gt;
&lt;br /&gt;
===ビルトイン===&lt;br /&gt;
以下のデスクトップ環境では通知を表示するためにそれぞれ独自の実装を使っており、置き換えることができません。通知サーバーはログイン時に自動で起動し DBus によってアプリケーションからの通知を受け取ります。&lt;br /&gt;
&lt;br /&gt;
* [[Cinnamon]] は通知サーバーを備えており、通知は画面の右上に表示されます。&lt;br /&gt;
* [[Enlightenment]] は Notification 拡張を通して通知サーバーを提供しています。通知オプションは[[Enlightenment#通知|設定]]が可能です。&lt;br /&gt;
* [[GNOME]] は通知サーバーを備えており、通知は画面の上部に表示されます。&lt;br /&gt;
* [[KDE]] は通知サーバーを備えており、通知は画面の右下に表示されます。&lt;br /&gt;
&lt;br /&gt;
また、[[Deepin]] および [[GNOME Flashback]] も同様に通知サーバーを備えています。&lt;br /&gt;
&lt;br /&gt;
===スタンドアロン===&lt;br /&gt;
他のデスクトップ環境では、ウィンドウマネージャやデスクトップ環境の自動実行を使って通知サーバーを起動する必要があります。&lt;br /&gt;
&lt;br /&gt;
[[D-Bus]] で初めて呼ばれた時に通知サーバーを起動させるには、通知サーバー ({{Pkg|notification-daemon}} パッケージなど) をインストールした後、以下のように設定を {{ic|/usr/share/dbus-1/services}} (またはユーザー個別に起動したい場合 {{ic|$XDG_DATA_HOME/dbus-1/services}}) に追加します:&lt;br /&gt;
&lt;br /&gt;
{{hc|org.freedesktop.Notifications.service|2=&lt;br /&gt;
[D-BUS Service]&lt;br /&gt;
Name=org.freedesktop.Notifications&lt;br /&gt;
Exec=/usr/lib/notification-daemon-1.0/notification-daemon&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
通知サーバーは以下から選ぶことができます:&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Avant Window Navigator]]|AWN で使うことができる通知デーモンアプレット。|https://github.com/p12tic/awn-extras|{{AUR|awn-extras-applets}}}}&lt;br /&gt;
* {{App|Deadd Notification Center|Dnust にインスパイヤされた、通知センターが付いた通知デーモン。|https://github.com/phuhl/linux_notification_center|{{AUR|deadd-notification-center}}}}&lt;br /&gt;
* {{App|[[Dunst]]|[[dwm]] などのミニマルなウィンドウマネージャにうってつけの Linux 用の最小通知デーモン。|https://dunst-project.org/|{{pkg|dunst}}}}&lt;br /&gt;
* {{App|fnott|wlroots-based コンポジタのための軽量な Wayland 向けの通知デーモン。キーボードによって操作される。|https://codeberg.org/dnkl/fnott|{{AUR|fnott}}}}&lt;br /&gt;
* {{App|LXQt Notification Daemon|[[LXQt]] の通知サーバー。|https://github.com/lxde/lxqt-notificationd|{{pkg|lxqt-notificationd}}}}&lt;br /&gt;
* {{App|mako|[[Wayland]] 向けの軽量な通知サーバー。現時点では [[Sway]]  と一緒に動作します。|https://github.com/emersion/mako|{{Pkg|mako}} {{AUR|mako-git}}}}&lt;br /&gt;
* {{App|MATE Notification Daemon|[[MATE]] の通知サーバー。|https://github.com/mate-desktop/mate-notification-daemon/|{{Pkg|mate-notification-daemon}}}}&lt;br /&gt;
* {{App|Notification Daemon|[[GNOME Flashback]] によって使われている通知サーバー。|https://github.com/GNOME/notification-daemon|{{pkg|notification-daemon}}}}&lt;br /&gt;
:{{ic|/usr/lib/notification-daemon-1.0/notification-daemon}} で手動で起動できます。&lt;br /&gt;
* {{App|Notify OSD|[[Unity]] の通知サーバー。|https://launchpad.net/notify-osd|{{Pkg|notify-osd}}}}&lt;br /&gt;
* {{App|statnot|小さくて軽量な通知デーモン。ルートウィンドウのタイトルや標準出力、FIFO パイプなどに通知を出力できるので、タイル型ウィンドウマネージャと相性がとても良いです。|https://github.com/halhen/statnot|{{AUR|statnot}}}}&lt;br /&gt;
* {{App|sandsmark-notificationd| ミニマムな通知デーモン。ミュート機能をサポート。|https://github.com/sandsmark/sandsmark-notificationd|{{AUR|sandsmark-notificationd-git}}}}&lt;br /&gt;
* {{App|twmn|タイル型ウィンドウマネージャ向けの通知システム。|https://github.com/sboli/twmn|{{AUR|twmn-git}}}}&lt;br /&gt;
* {{App|wired|レイヤーブロックのカスタマイズ性が高い軽量な通知デーモン。Rust で書かれている。|https://github.com/Toqozz/wired-notify|{{AUR|wired}}}}&lt;br /&gt;
* {{App|Xfce Notification Daemon|[[Xfce]] の通知サーバー。|https://goodies.xfce.org/projects/applications/xfce4-notifyd|{{Pkg|xfce4-notifyd}}}}&lt;br /&gt;
:{{Tip|xfce4-notifyd を設定するには、ターミナルから次のコマンドを実行してください: {{ic|xfce4-notifyd-config}}。}}&lt;br /&gt;
&lt;br /&gt;
==プログラミングでの使い方==&lt;br /&gt;
GObject-Introspection やバインディングを通して多くのプログラミング言語を使ったり、または bash を利用して簡単に libnotify でメッセージを表示することができます。&lt;br /&gt;
&lt;br /&gt;
以下の例ではシンプルな &amp;quot;Hello world&amp;quot; の通知が表示されます。&lt;br /&gt;
&lt;br /&gt;
===Bash===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.sh|2=&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
notify-send &#039;Hello world!&#039; &#039;This is an example notification.&#039; --icon=dialog-information&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Tip|&lt;br /&gt;
* 利用可能なアイコンは [https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html Icon Naming Specification] から参照できます。&lt;br /&gt;
* root で実行するバックグラウンドスクリプトからデスクトップ通知を送信するには ({{ic|&#039;&#039;X_user&#039;&#039;}} と {{ic|&#039;&#039;X_userid&#039;&#039;}} は X を実行するユーザーおよびユーザー ID に置き換えてください): {{ic|1=# sudo -u &#039;&#039;X_user&#039;&#039; DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/&#039;&#039;X_userid&#039;&#039;/bus notify-send &#039;Hello world!&#039; &#039;This is an example notification.&#039;}}。}}&lt;br /&gt;
&lt;br /&gt;
=== Boo ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|notify-sharp-3}} ({{AUR|boo}})&lt;br /&gt;
* ビルドするのに必要なパッケージ:  {{AUR|boo}}&lt;br /&gt;
* ビルド: {{ic|booc hello_world.boo}}&lt;br /&gt;
* 実行: {{ic|mono hello_world.exe}} (または {{ic|booi hello_world.boo}})&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.boo|2=&lt;br /&gt;
import Notifications from &amp;quot;notify-sharp&amp;quot;&lt;br /&gt;
Hello = Notification()&lt;br /&gt;
Hello.Summary  = &amp;quot;Hello world!&amp;quot;&lt;br /&gt;
Hello.Body     = &amp;quot;This is an example notification.&amp;quot;&lt;br /&gt;
Hello.IconName = &amp;quot;dialog-information&amp;quot;&lt;br /&gt;
Hello.Show()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== C ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|glib2}}&lt;br /&gt;
* ビルド: {{ic|gcc -o hello_world `pkg-config --cflags --libs gio-2.0` hello_world.c}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.c|2=&lt;br /&gt;
#include &amp;lt;gio/gio.h&amp;gt;&lt;br /&gt;
int main() {&lt;br /&gt;
	GApplication *application = g_application_new (&amp;quot;hello.world&amp;quot;, G_APPLICATION_FLAGS_NONE);&lt;br /&gt;
	g_application_register (application, NULL, NULL);&lt;br /&gt;
	GNotification *notification = g_notification_new (&amp;quot;Hello world!&amp;quot;);&lt;br /&gt;
	g_notification_set_body (notification, &amp;quot;This is an example notification.&amp;quot;);&lt;br /&gt;
	GIcon *icon = g_themed_icon_new (&amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
	g_notification_set_icon (notification, icon);&lt;br /&gt;
	g_application_send_notification (application, NULL, notification);&lt;br /&gt;
	g_object_unref (icon);&lt;br /&gt;
	g_object_unref (notification);&lt;br /&gt;
	g_object_unref (application);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}&lt;br /&gt;
* ビルド: {{ic|gcc -o hello_world `pkg-config --cflags --libs libnotify` hello_world.c}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.c|2=&lt;br /&gt;
#include &amp;lt;libnotify/notify.h&amp;gt;&lt;br /&gt;
int main() {&lt;br /&gt;
	notify_init (&amp;quot;Hello world!&amp;quot;);&lt;br /&gt;
	NotifyNotification * Hello = notify_notification_new (&amp;quot;Hello world&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
	notify_notification_show (Hello, NULL);&lt;br /&gt;
	g_object_unref(G_OBJECT(Hello));&lt;br /&gt;
	notify_uninit();&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== C++ ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|glibmm}}&lt;br /&gt;
* ビルド: {{Ic|g++ -o hello_world `pkg-config --cflags --libs giomm-2.4` hello_world.cc}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.cc|2=&lt;br /&gt;
#include &amp;lt;giomm-2.4/giomm.h&amp;gt;&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
	auto Application = Gio::Application::create(&amp;quot;hello.world&amp;quot;, Gio::APPLICATION_FLAGS_NONE);&lt;br /&gt;
	Application-&amp;gt;register_application();&lt;br /&gt;
	auto Notification = Gio::Notification::create(&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
	Notification-&amp;gt;set_body(&amp;quot;This is an example notification.&amp;quot;);&lt;br /&gt;
	auto Icon = Gio::ThemedIcon::create(&amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
	Notification-&amp;gt;set_icon (Icon);&lt;br /&gt;
	Application-&amp;gt;send_notification(Notification);&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{AUR|libnotifymm}}&lt;br /&gt;
* ビルド: {{Ic|g++ -o hello_world `pkg-config --cflags --libs libnotifymm-1.0` hello_world.cc}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.cc|2=&lt;br /&gt;
#include &amp;lt;libnotifymm.h&amp;gt;&lt;br /&gt;
int main(int argc, char *argv[]) {&lt;br /&gt;
	Notify::init(&amp;quot;Hello world!&amp;quot;);&lt;br /&gt;
	Notify::Notification Hello(&amp;quot;Hello world&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
       Hello.show();&lt;br /&gt;
       return 0;&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== C# ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|notify-sharp-3}}&lt;br /&gt;
* ビルド: {{ic|mcs -pkg:notify-sharp-3.0 hello_world.cs}}&lt;br /&gt;
* 実行: {{ic|mono hello_world.exe}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.cs|2=&lt;br /&gt;
using Notifications;&lt;br /&gt;
public class HelloWorld {&lt;br /&gt;
	static void Main() {&lt;br /&gt;
		var Hello = new Notification();&lt;br /&gt;
		Hello.Summary  = &amp;quot;Hello world!&amp;quot;;&lt;br /&gt;
		Hello.Body     = &amp;quot;This is an example notification.&amp;quot;;&lt;br /&gt;
		Hello.IconName = &amp;quot;dialog-information&amp;quot;;&lt;br /&gt;
		Hello.Show();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Cobra ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|notify-sharp-3}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{AUR|cobra}}&lt;br /&gt;
* ビルド: {{ic|cobra -c hello_world}}&lt;br /&gt;
* 実行: {{ic|mono hello_world.exe}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.cobra|&amp;lt;nowiki&amp;gt;@args -pkg:notify-sharp-3.0&lt;br /&gt;
use Notifications&lt;br /&gt;
class HelloWorld&lt;br /&gt;
    def main&lt;br /&gt;
        hello = Notification()&lt;br /&gt;
        hello.summary  = &amp;quot;Hello world!&amp;quot;&lt;br /&gt;
        hello.body     = &amp;quot;This is an example notification.&amp;quot;&lt;br /&gt;
        hello.iconName = &amp;quot;dialog-information&amp;quot;&lt;br /&gt;
        hello.show&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
===Crystal===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: [https://github.com/woodruffw/notify.cr woodruffw/notify.cr] (shards から)&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{Pkg|crystal}} および {{Pkg|shards}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.cr|2=&lt;br /&gt;
require &amp;quot;notify&amp;quot;&lt;br /&gt;
notifier = Notify.new&lt;br /&gt;
notifier.notify &amp;quot;Hello&amp;quot;, body: &amp;quot;&amp;lt;b&amp;gt;World!&amp;lt;/b&amp;gt;&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== F# ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|notify-sharp-3}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{AUR|fsharp}}&lt;br /&gt;
* ビルド: {{ic|fsharpc -r:notify-sharp.dll -I:/usr/lib/mono/notify-sharp-3.0/ -I:/usr/lib/mono/gtk-sharp-3.0/ hello_world.fs}}&lt;br /&gt;
* 実行: {{ic|mono hello_world.exe}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.fs|2=&lt;br /&gt;
open Notifications&lt;br /&gt;
let Hello = new Notification()&lt;br /&gt;
Hello.Summary  &amp;lt;- &amp;quot;Hello world!&amp;quot;&lt;br /&gt;
Hello.Body     &amp;lt;- &amp;quot;This is an example notification.&amp;quot;&lt;br /&gt;
Hello.IconName &amp;lt;- &amp;quot;dialog-information&amp;quot;&lt;br /&gt;
Hello.Show()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Genie ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|glib2}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{Pkg|vala}}&lt;br /&gt;
* ビルド: {{ic|valac --pkg gio-2.0 hello_world.gs}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.gs|2=&lt;br /&gt;
uses &lt;br /&gt;
	GLib&lt;br /&gt;
&lt;br /&gt;
init&lt;br /&gt;
	var Application = new GLib.Application (&amp;quot;hello.world&amp;quot;, GLib.ApplicationFlags.FLAGS_NONE);&lt;br /&gt;
	Application.register ();&lt;br /&gt;
	var Notification = new GLib.Notification (&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
	Notification.set_body (&amp;quot;This is an example notification.&amp;quot;);&lt;br /&gt;
	var Icon = new GLib.ThemedIcon (&amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
	Notification.set_icon (Icon);&lt;br /&gt;
	Application.send_notification (null, Notification);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{Pkg|vala}}&lt;br /&gt;
* ビルド: {{ic|valac --pkg libnotify hello_world.gs}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.gs|2=&lt;br /&gt;
uses &lt;br /&gt;
	Notify&lt;br /&gt;
&lt;br /&gt;
init&lt;br /&gt;
	Notify.init (&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
	var Hello=new Notify.Notification (&amp;quot;Hello world!&amp;quot;,&amp;quot;This is an example notification.&amp;quot;,&amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
	Hello.show ()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Go ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{AUR|go-notify-git}}&lt;br /&gt;
* ビルド: {{ic|go build hello_world.go}}&lt;br /&gt;
* 実行: {{ic|go run hello_world.go}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.go|2=&lt;br /&gt;
package main&lt;br /&gt;
import (&amp;quot;github.com/mqu/go-notify&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
func main() {&lt;br /&gt;
	notify.Init(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
	hello := notify.NotificationNew(&amp;quot;Hello World!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;,&amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
	hello.Show()&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Groovy ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|groovy}}, {{AUR|java-gnome}}&lt;br /&gt;
* ビルド: {{ic|groovyc -cp /usr/share/java/gtk.jar HelloWorld.groovy &amp;amp;&amp;amp; jar cfe HelloWorld.jar HelloWorld HelloWorld.class}}&lt;br /&gt;
* 実行: {{ic|java -cp /usr/share/groovy/embeddable/groovy-all.jar:/usr/share/java/gtk.jar:HelloWorld.jar HelloWorld}} (または {{ic|groovy -cp /usr/share/java/gtk.jar HelloWorld.groovy}})&lt;br /&gt;
&lt;br /&gt;
{{hc|HelloWorld.groovy|2=&lt;br /&gt;
import org.gnome.gtk.*&lt;br /&gt;
import org.gnome.notify.*&lt;br /&gt;
&lt;br /&gt;
Gtk.init()&lt;br /&gt;
Notify.init(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
def Hello = new Notification(&amp;quot;Hello world!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
Hello.show()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Haskell ===&lt;br /&gt;
&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{Pkg|haskell-fdo-notify}}&lt;br /&gt;
* ビルド: {{ic|ghc hello_world}}&lt;br /&gt;
{{hc|hello_world.hs|2=&lt;br /&gt;
import DBus.Notify&lt;br /&gt;
main = do&lt;br /&gt;
         client &amp;lt;- connectSession&lt;br /&gt;
         let hello = blankNote { summary=&amp;quot;Hello world!&amp;quot;,&lt;br /&gt;
                                 body=(Just $ Text &amp;quot;This is an example notification.&amp;quot;),&lt;br /&gt;
                                 appImage=(Just $ Icon &amp;quot;dialog-information&amp;quot;) }&lt;br /&gt;
         notification &amp;lt;- notify client hello&lt;br /&gt;
         return 0&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== IronPython ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|notify-sharp-3}}, {{AUR|ironpython}}&lt;br /&gt;
* 実行: {{ic|ipy hello_world.py}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.py|2=&lt;br /&gt;
import clr&lt;br /&gt;
clr.AddReference(&#039;notify-sharp&#039;)&lt;br /&gt;
import Notifications&lt;br /&gt;
Hello = Notifications.Notification()&lt;br /&gt;
Hello.Summary  = &amp;quot;Hello world!&amp;quot;&lt;br /&gt;
Hello.Body     = &amp;quot;This is an example notification.&amp;quot;&lt;br /&gt;
Hello.IconName = &amp;quot;dialog-information&amp;quot;&lt;br /&gt;
Hello.Show()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Java ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{AUR|java-gnome}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: java-environment&lt;br /&gt;
* ビルド: {{ic|javac -cp /usr/share/java/gtk.jar HelloWorld.java &amp;amp;&amp;amp; jar cfe HelloWorld.jar HelloWorld HelloWorld.class}}&lt;br /&gt;
* 実行: {{ic|java -cp /usr/share/java/gtk.jar:HelloWorld.jar HelloWorld}}&lt;br /&gt;
&lt;br /&gt;
{{hc|HelloWorld.java|2=&lt;br /&gt;
import org.gnome.gtk.Gtk;&lt;br /&gt;
import org.gnome.notify.Notify;&lt;br /&gt;
import org.gnome.notify.Notification;&lt;br /&gt;
&lt;br /&gt;
public class HelloWorld&lt;br /&gt;
{&lt;br /&gt;
    public static void main(String[] args) {&lt;br /&gt;
        Gtk.init(args);&lt;br /&gt;
        Notify.init(&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
        Notification Hello = new Notification(&amp;quot;Hello world!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
        Hello.show();&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== JavaScript ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|gjs}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.js|2=&lt;br /&gt;
#!/usr/bin/gjs&lt;br /&gt;
const Gio = imports.gi.Gio;&lt;br /&gt;
var Application = new Gio.Application ({application_id: &amp;quot;hello.world&amp;quot;});&lt;br /&gt;
Application.register (null);&lt;br /&gt;
var Notification = new Gio.Notification ();&lt;br /&gt;
Notification.set_title (&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
Notification.set_body (&amp;quot;This is an example notification.&amp;quot;);&lt;br /&gt;
var Icon = new Gio.ThemedIcon ({name: &amp;quot;dialog-information&amp;quot;});&lt;br /&gt;
Notification.set_icon (Icon);&lt;br /&gt;
Application.send_notification (null, Notification);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}, {{Pkg|gjs}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.js|2=&lt;br /&gt;
#!/usr/bin/gjs&lt;br /&gt;
const Notify = imports.gi.Notify;&lt;br /&gt;
Notify.init (&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
var Hello=new Notify.Notification ({summary: &amp;quot;Hello world!&amp;quot;,&lt;br /&gt;
                                    body: &amp;quot;This is an example notification.&amp;quot;,&lt;br /&gt;
                                    &amp;quot;icon-name&amp;quot;: &amp;quot;dialog-information&amp;quot;});&lt;br /&gt;
Hello.show ();&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== JRuby ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{AUR|java-gnome}}, {{Pkg|jruby}}&lt;br /&gt;
* ビルド: {{ic|jrubyc hello_world.rb &amp;amp;&amp;amp; jar cfe hello_world.jar hello_world hello_world.class}}&lt;br /&gt;
* 実行: {{ic|java -cp /opt/jruby/lib/jruby.jar:hello_world.jar hello_world}} または {{ic|jruby hello_world.rb}}&lt;br /&gt;
{{hc|hello_world.rb|2=&lt;br /&gt;
require &#039;/usr/share/java/gtk.jar&#039;&lt;br /&gt;
import Java::OrgGnomeGtk::Gtk&lt;br /&gt;
import Java::OrgGnomeNotify::Notify&lt;br /&gt;
import Java::OrgGnomeNotify::Notification&lt;br /&gt;
&lt;br /&gt;
Gtk.init(nil)&lt;br /&gt;
Notify.init(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
Hello = Notification.new(&amp;quot;Hello world!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
Hello.show&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Jython ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{AUR|java-gnome}}, {{Pkg|jython}}&lt;br /&gt;
* 実行: {{ic|1=jython -Dpython.path=/usr/share/java/gtk.jar hello_world.py}}&lt;br /&gt;
{{hc|hello_world.py|2=&lt;br /&gt;
from org.gnome.gtk import Gtk&lt;br /&gt;
from org.gnome.notify import Notify, Notification&lt;br /&gt;
Gtk.init(None)&lt;br /&gt;
Notify.init(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
Hello=Notification(&amp;quot;Hello world!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
Hello.show()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Lua ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|lua-lgi}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.lua|2=&lt;br /&gt;
#!/usr/bin/lua&lt;br /&gt;
lgi = require &#039;lgi&#039;&lt;br /&gt;
Gio = lgi.require(&#039;Gio&#039;)&lt;br /&gt;
Application = Gio.Application.new(&amp;quot;hello.world&amp;quot;,Gio.ApplicationFlags.FLAGS_NONE);&lt;br /&gt;
Application:register();&lt;br /&gt;
Notification = Gio.Notification.new(&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
Notification:set_body(&amp;quot;This is an example notification.&amp;quot;);&lt;br /&gt;
Icon = Gio.ThemedIcon.new(&amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
Notification:set_icon(Icon);&lt;br /&gt;
Application:send_notification(nil, Notification);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}, {{Pkg|lua-lgi}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.lua|2=&lt;br /&gt;
#!/usr/bin/lua&lt;br /&gt;
lgi = require &#039;lgi&#039;&lt;br /&gt;
Notify = lgi.require(&#039;Notify&#039;)&lt;br /&gt;
Notify.init(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
Hello=Notify.Notification.new(&amp;quot;Hello world&amp;quot;,&amp;quot;This is an example notification.&amp;quot;,&amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
Hello:show()&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
=== Nemerle ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|notify-sharp-3}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{AUR|nemerle}}&lt;br /&gt;
* ビルド: {{ic|ncc -pkg:notify-sharp-3.0 -out:hello_world.exe hello_world.n}}&lt;br /&gt;
* 実行: {{ic|mono hello_world.exe}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.n|2=&lt;br /&gt;
using Notifications;&lt;br /&gt;
public class HelloWorld {&lt;br /&gt;
	static Main() : void {&lt;br /&gt;
		def Hello = Notification();&lt;br /&gt;
		Hello.Summary  = &amp;quot;Hello world!&amp;quot;;&lt;br /&gt;
		Hello.Body     = &amp;quot;This is an example notification.&amp;quot;;&lt;br /&gt;
		Hello.IconName = &amp;quot;dialog-information&amp;quot;;&lt;br /&gt;
		Hello.Show();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Pascal ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{Pkg|fpc}}, [https://github.com/ik5/libnotify-fpc libnotify バインディング]&lt;br /&gt;
* ビルド: {{ic|fpc hello_world}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.pas|2=&lt;br /&gt;
program	hello_world;&lt;br /&gt;
uses	libnotify;&lt;br /&gt;
var	hello : PNotifyNotification;&lt;br /&gt;
begin&lt;br /&gt;
	notify_init(argv[0]);&lt;br /&gt;
	hello := notify_notification_new (&#039;Hello world&#039;, &#039;This is an example notification.&#039;, &#039;dialog-information&#039;);&lt;br /&gt;
	notify_notification_show (hello, nil);&lt;br /&gt;
end.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Perl ===&lt;br /&gt;
&lt;br /&gt;
==== libnotify を使用 ====&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}, {{Pkg|perl-glib-object-introspection}}&lt;br /&gt;
{{hc|hello_world.pl|2=&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use Glib::Object::Introspection;&lt;br /&gt;
Glib::Object::Introspection-&amp;gt;setup (&lt;br /&gt;
	basename =&amp;gt; &#039;Notify&#039;,&lt;br /&gt;
	version =&amp;gt; &#039;0.7&#039;,&lt;br /&gt;
	package =&amp;gt; &#039;Notify&#039;);&lt;br /&gt;
Notify-&amp;gt;init;&lt;br /&gt;
my $hello = Notify::Notification-&amp;gt;new(&#039;Hello world!&#039;,&lt;br /&gt;
	&amp;quot;This is an example notification.&amp;quot;,&lt;br /&gt;
	&amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
$hello-&amp;gt;show;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==== 直接 D-Bus 呼び出し ====&lt;br /&gt;
&lt;br /&gt;
* 依存関係: {{Pkg|perl-net-dbus}}&lt;br /&gt;
{{hc|hello_world.pl|2=&lt;br /&gt;
#!/usr/bin/perl&lt;br /&gt;
use Net::DBus;&lt;br /&gt;
my $bus = Net::DBus-&amp;gt;session;&lt;br /&gt;
my $svc = $bus-&amp;gt;get_service(&#039;org.freedesktop.Notifications&#039;);&lt;br /&gt;
my $obj = $svc-&amp;gt;get_object(&#039;/org/freedesktop/Notifications&#039;);&lt;br /&gt;
my $id = $obj-&amp;gt;Notify(&#039;myapp&#039;, 0,&lt;br /&gt;
                      &#039;dialog-information&#039;,&lt;br /&gt;
                      &#039;Hello world!&#039;,&lt;br /&gt;
                      &#039;This is an example notification.&#039;,&lt;br /&gt;
                      [], {}, 0);&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Python ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|python-gobject}} (または Python 2 なら {{Pkg|python2-gobject}})&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.py|2=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
import gi&lt;br /&gt;
gi.require_version(&#039;Gio&#039;, &#039;2.0&#039;)&lt;br /&gt;
from gi.repository import Gio&lt;br /&gt;
Application=Gio.Application.new (&amp;quot;hello.world&amp;quot;, Gio.ApplicationFlags.FLAGS_NONE);&lt;br /&gt;
Application.register ()&lt;br /&gt;
Notification=Gio.Notification.new (&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
Notification.set_body (&amp;quot;This is an example notification.&amp;quot;)&lt;br /&gt;
Icon=Gio.ThemedIcon.new (&amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
Notification.set_icon (Icon)&lt;br /&gt;
Application.send_notification (None, Notification)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|libnotify}}, {{Pkg|python-gobject}} (または Python 2 なら {{Pkg|python2-gobject}})&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.py|2=&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
import gi&lt;br /&gt;
gi.require_version(&#039;Notify&#039;, &#039;0.7&#039;)&lt;br /&gt;
from gi.repository import Notify&lt;br /&gt;
Notify.init (&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
Hello = Notify.Notification.new (&amp;quot;Hello world&amp;quot;,&amp;quot;This is an example notification.&amp;quot;,&amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
Hello.show ()&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Ruby ===&lt;br /&gt;
&lt;br /&gt;
*依存パッケージ: {{Pkg|libnotify}}, {{AUR|ruby-gir_ffi}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.rb|2=&lt;br /&gt;
#!/usr/bin/ruby&lt;br /&gt;
require &#039;gir_ffi&#039;&lt;br /&gt;
GirFFI.setup :Notify&lt;br /&gt;
Notify.init(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
Hello = Notify::Notification.new(&amp;quot;Hello world!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
Hello.show&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Rust ===&lt;br /&gt;
&lt;br /&gt;
[https://crates.io/crates/notify-rust notify-rust] を使用。&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{Pkg|rust}} か {{Pkg|rustup}} ([[Rust]] を参照)&lt;br /&gt;
* ビルド: {{ic|cargo build}}&lt;br /&gt;
* 実行: {{ic|target/debug/hello_world}} または {{ic|cargo run}}&lt;br /&gt;
&lt;br /&gt;
{{hc|Cargo.toml|2=&lt;br /&gt;
[package]&lt;br /&gt;
name = &amp;quot;hello_world&amp;quot;&lt;br /&gt;
version = &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[dependencies]&lt;br /&gt;
notify-rust = &amp;quot;^3&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{hc|src/main.rs|2=&lt;br /&gt;
extern crate notify_rust;&lt;br /&gt;
use notify_rust::Notification;&lt;br /&gt;
fn main(){&lt;br /&gt;
    Notification::new()&lt;br /&gt;
        .summary(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
        .body(&amp;quot;This is an example notification.&amp;quot;)&lt;br /&gt;
        .icon(&amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
        .show().unwrap();&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Scala ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{AUR|java-gnome}} (と {{Pkg|scala}})&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{Pkg|scala}}&lt;br /&gt;
* ビルド: {{ic|scalac -cp /usr/share/java/gtk.jar -d HelloWorld.jar HelloWorld.scala}}&lt;br /&gt;
* 実行: {{ic|java -cp /usr/share/java/gtk.jar:HelloWorld.jar HelloWorld}} (または {{ic|scala -cp /usr/share/java/gtk.jar HelloWorld.scala}})&lt;br /&gt;
&lt;br /&gt;
{{hc|HelloWorld.scala|2=&lt;br /&gt;
import org.gnome.gtk._&lt;br /&gt;
import org.gnome.notify._&lt;br /&gt;
&lt;br /&gt;
object HelloWorld {&lt;br /&gt;
  def main(args: Array[String]) {&lt;br /&gt;
    Gtk.init(args)&lt;br /&gt;
    Notify.init(&amp;quot;Hello world&amp;quot;)&lt;br /&gt;
    var Hello = new Notification(&amp;quot;Hello world!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;)&lt;br /&gt;
    Hello.show()&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Vala ===&lt;br /&gt;
&lt;br /&gt;
*依存パッケージ: {{Pkg|glib2}}&lt;br /&gt;
*ビルドするのに必要なパッケージ: {{Pkg|vala}}&lt;br /&gt;
*ビルド: {{ic|valac --pkg gio-2.0 hello_world.vala}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.vala|2=&lt;br /&gt;
using GLib;&lt;br /&gt;
public class HelloWorld {&lt;br /&gt;
	static void main () {&lt;br /&gt;
		var Application = new GLib.Application (&amp;quot;hello.world&amp;quot;, GLib.ApplicationFlags.FLAGS_NONE);&lt;br /&gt;
		Application.register ();&lt;br /&gt;
		var Notification = new GLib.Notification (&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
		Notification.set_body (&amp;quot;This is an example notification.&amp;quot;);&lt;br /&gt;
		var Icon = new GLib.ThemedIcon (&amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
		Notification.set_icon (Icon);&lt;br /&gt;
		Application.send_notification (null, Notification);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
*依存パッケージ: {{Pkg|libnotify}}&lt;br /&gt;
*ビルドするのに必要なパッケージ: {{Pkg|vala}}&lt;br /&gt;
*ビルド: {{ic|valac --pkg libnotify hello_world.vala}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.vala|2=&lt;br /&gt;
using Notify;&lt;br /&gt;
public class HelloWorld {&lt;br /&gt;
	static void main () {&lt;br /&gt;
		Notify.init (&amp;quot;Hello world&amp;quot;);&lt;br /&gt;
		var Hello = new Notify.Notification(&amp;quot;Hello world!&amp;quot;, &amp;quot;This is an example notification.&amp;quot;, &amp;quot;dialog-information&amp;quot;);&lt;br /&gt;
		Hello.show ();&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Visual Basic .NET ===&lt;br /&gt;
&lt;br /&gt;
* 依存パッケージ: {{Pkg|notify-sharp-3}}&lt;br /&gt;
* ビルドするのに必要なパッケージ: {{AUR|mono-basic}}&lt;br /&gt;
* ビルド: {{ic|vbnc -r:/usr/lib/mono/notify-sharp-3.0/notify-sharp.dll hello_world.vb}}&lt;br /&gt;
* 実行: {{ic|mono hello_world.exe}}&lt;br /&gt;
&lt;br /&gt;
{{hc|hello_world.vb|2=&lt;br /&gt;
Imports Notifications&lt;br /&gt;
Public Class Hello&lt;br /&gt;
	Public Shared Sub Main&lt;br /&gt;
		Dim Hello As New Notification&lt;br /&gt;
		Hello.Summary  = &amp;quot;Hello world!&amp;quot;&lt;br /&gt;
		Hello.Body     = &amp;quot;This is an example notification.&amp;quot;&lt;br /&gt;
		Hello.IconName = &amp;quot;dialog-information&amp;quot;&lt;br /&gt;
		Hello.Show&lt;br /&gt;
	End Sub&lt;br /&gt;
End Class&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
*[https://developer.gnome.org/libnotify/ Libnotify リファレンスマニュアル]&lt;br /&gt;
*[http://milky.manishsinha.net/2009/03/29/working-with-libnotify/ C サンプル]&lt;br /&gt;
*[http://hashbang.fr/tutoriel-notify.html Python サンプル] (フランス語の記事)&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9&amp;diff=23879</id>
		<title>Arch ブートプロセス</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Arch_%E3%83%96%E3%83%BC%E3%83%88%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9&amp;diff=23879"/>
		<updated>2022-02-11T05:21:17Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* ファームウェアの種類 */  内部リンクの細かい修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:ブートプロセス]]&lt;br /&gt;
[[Category:Arch について]]&lt;br /&gt;
[[ar:Arch boot process]]&lt;br /&gt;
[[bs:Arch boot process]]&lt;br /&gt;
[[cs:Arch boot process]]&lt;br /&gt;
[[en:Arch boot process]]&lt;br /&gt;
[[es:Arch boot process]]&lt;br /&gt;
[[fr:Processus de boot]]&lt;br /&gt;
[[it:Arch boot process]]&lt;br /&gt;
[[pt:Arch boot process]]&lt;br /&gt;
[[zh-hans:Arch boot process]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|ブートローダー}}&lt;br /&gt;
{{Related|Master Boot Record}}&lt;br /&gt;
{{Related|GUID Partition Table}}&lt;br /&gt;
{{Related|Unified Extensible Firmware Interface}}&lt;br /&gt;
{{Related|mkinitcpio}}&lt;br /&gt;
{{Related|init}}&lt;br /&gt;
{{Related|systemd}}&lt;br /&gt;
{{Related|fstab}}&lt;br /&gt;
{{Related|自動起動}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
Arch Linux を起動するためには、[[GRUB|GRUB]] や [[Syslinux|Syslinux]] などの Linux 対応のブートローダを、[[Master Boot Record|Master Boot Record]] もしくは [[GUID Partition Table|GUID Partition Table]] にインストールする必要があります。ブートローダは、ブートプロセスが始まる前にカーネルや[[mkinitcpio|初期 RAM ディスク]]をロードする仕事を行います。[[Wikipedia:ja:BIOS|BIOS]] と [[Unified Extensible Firmware Interface|UEFI]] で起動の流れはかなり異なっています。このページや関連するページに詳しい説明があります。&lt;br /&gt;
&lt;br /&gt;
== ファームウェアの種類 ==&lt;br /&gt;
&lt;br /&gt;
=== BIOS ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:BIOS|BIOS]] (Basic Input-Outout System) とはシステムの電源を入れた時に最初に実行されるプログラム(ファームウェア)のことです。ほとんどの場合、BIOS はマザーボード内のフラッシュメモリに保存され、システムストレージとは独立しています。&lt;br /&gt;
&lt;br /&gt;
=== UEFI ===&lt;br /&gt;
&lt;br /&gt;
[[Unified Extensible Firmware Interface]] は、パーティションテーブルとファイルシステムの両方の読み取りをサポートしています。UEFI か MBR か、にかかわらず、UEFI は [https://ja.wikipedia.org/wiki/%E4%B8%8D%E6%8F%AE%E7%99%BA%E6%80%A7%E3%83%A1%E3%83%A2%E3%83%AA NVRAM] を起動せず、代わりにブートエントリに依存します。&lt;br /&gt;
&lt;br /&gt;
UEFI 仕様では [[FAT|FAT12、FAT16、および FAT32]] ファイルシステム ([https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf#G17.1019485 UEFI 仕様バージョン2.8、セクション13.3.1.1] を参照) のサポートが義務付けられていますが、規格に準拠しているベンダーは任意でファイルシステムのサポートを追加できます。たとえば、Apple [[Mac]] は独自のHFS+ファイルシステムドライバをサポートしています。UEFI の実装では、光ディスク用の ISO-9660 もサポートされています。&lt;br /&gt;
&lt;br /&gt;
UEFIは、[[#Boot loader|boot loaders]] 、ブートマネージャ、 [[Unified_Extensible_Firmware_Interface#UEFI シェル |UEFI シェル]] などの EFI アプリケーションを起動します。これらのアプリケーションは通常、 [[EFI システムパーティション]] にファイルとして保存されます。各ベンダーは、EFI システムパーティションの {{ic|/EFI/&#039;&#039;vendor_name&#039;&#039;}} フォルダにファイルを格納できます。アプリケーションを起動するには、NVRAM または UEFI シェルにブートエントリを追加します。&lt;br /&gt;
&lt;br /&gt;
UEFI 仕様では、[https://ja.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface 互換性サポートモジュール (CSM)] によるレガシー BIOS ブートがサポートされています。UEFI で CSM が有効な場合、UEFI はすべてのドライブの CSM ブートエントリを生成します。CSM ブートエントリがブート元として選択された場合、UEFI の CSM はドライブの MBR ブートストラップコードからのブートを試みます。&lt;br /&gt;
&lt;br /&gt;
== ブートプロセス ==&lt;br /&gt;
&lt;br /&gt;
=== BIOS ===&lt;br /&gt;
# システムの電源が入れられ [[Wikipedia:ja:Power On Self Test|POST]] が実行される&lt;br /&gt;
# BIOS がブートに必要なシステムハードウェア (ディスクやキーボードコントローラなど) を初期化する&lt;br /&gt;
# (BIOS のディスク順で) 最初のディスクの最初の440バイト ([[Master Boot Record|Master Boot Record]]) が BIOS によって実行される&lt;br /&gt;
# BIOS から MBR ブートコードにコントロールが移り、次のステージのコードが起動する (通常は[[ブートローダー]]のコード)&lt;br /&gt;
# 起動した(2番目の)コード(ブートローダー)はサポートと設定ファイルを読み込む&lt;br /&gt;
# 設定ファイルのデータに基づき、ブートローダーはカーネルと initramfs をシステムメモリ (RAM) にロードしてカーネルを起動する&lt;br /&gt;
&lt;br /&gt;
=== UEFI ===&lt;br /&gt;
次のページを参照してください: [[Unified Extensible Firmware Interface#UEFI のブートプロセス]]&lt;br /&gt;
&lt;br /&gt;
== ブートローダー ==&lt;br /&gt;
&lt;br /&gt;
ブートローダーは、ファームウェア([[Wikipedia:BIOS|BIOS]] または [[UEFI]]) によって起動されるソフトウェアです。カーネルは必要な [[カーネルパラメータ]] と [[mkinitcpio|初期RAMディスク]] を設定ファイルに基づいてロードします。UEFI の場合、EFI ブートスタブを使用して、UEFI からカーネル自体を直接起動できます。ブート前にカーネルパラメータを編集するために、別のブートローダやブートマネージャを使うこともできます。&lt;br /&gt;
&lt;br /&gt;
{{Warning|ブートローダーはカーネルと initramfs イメージにアクセスできなければなりません。アクセスできなければシステムはブートしません。したがって、通常のセットアップでは、{{ic|/boot}} へのアクセスをサポートしている必要があります。つまり、ブロックデバイスからスタックされたブロックデバイス (LVM、RAID、dm-crypt、LUKSなど) まで、カーネルやinitramfsイメージが存在するファイルシステムまで、すべてをサポートしなければなりません。}}&lt;br /&gt;
&lt;br /&gt;
{{Note|[[マイクロコード]] の更新を読み込むには、ブートローダの設定を調整する必要があります。 [https://www.archlinux.org/news/changes-to-intel-microcodeupdates/]}}&lt;br /&gt;
&lt;br /&gt;
=== 機能比較 ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
GPT は UEFI 仕様の一部であるため、すべての UEFI ブートローダーは GPT ディスクをサポートします。BIOS システム上の GPT は、[https://www.rodsbooks.com/gdisk/hybrid.html HybridMBR]で &amp;quot;hybrid booting&amp;quot; を使うか、新しい [http://repo.or.cz/syslinux.git/blob/HEAD:/doc/gpt.txt GPTのみ] プロトコルを使うことで可能です。ただしこのプロトコルは特定の BIOS 実装で問題を引き起こす可能性があります。詳細については、[http://www.rodsbooks.com/gdisk/bios.html#bios書籍] を参照してください。&lt;br /&gt;
* ファイルシステムのサポートで言及されている暗号化は [[wikipedia:Filesystem-level encryption|filesystem-level encryption]] であり [[dm-crypt|ブロックレベルの暗号化]] とは関係ありません。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot;| 名前&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;| ファームウェア&lt;br /&gt;
! colspan=&amp;quot;2&amp;quot;| [[パーティショニング#パーティションテーブル|パーティションテーブル]]&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot;| マルチブート&lt;br /&gt;
! colspan=&amp;quot;5&amp;quot;| [[ファイルシステム]]&lt;br /&gt;
! rowspan=&amp;quot;2&amp;quot;| 備考&lt;br /&gt;
|-&lt;br /&gt;
! BIOS !! [[UEFI]]&lt;br /&gt;
! [[MBR]] !! [[GPT]]&lt;br /&gt;
! [[Btrfs]] !! [[ext4]] !! ReiserFS !! [[VFAT]] !! [[XFS]]&lt;br /&gt;
|-&lt;br /&gt;
! [[EFISTUB]]&lt;br /&gt;
| {{-}} || {{Yes}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{-}}&lt;br /&gt;
| {{-}} || {{-}} || {{-}} || {{G|Inherited from firmware&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}} || {{-}}&lt;br /&gt;
| カーネルはEFI実行可能ファイルに変換され、[[UEFI]] ファームウェアまたは別のブートローダーから直接ロードされます。&lt;br /&gt;
|-&lt;br /&gt;
! [[Clover]]&lt;br /&gt;
| {{G|Emulates UEFI}} || {{Yes}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{No}} || {{Y|Without encryption}} || {{No}} || {{G|Inherited from firmware&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}} || {{No}}&lt;br /&gt;
| rEFIt のフォークは、[[wikipedia:OSx86|macOS on non-Apple hardware]] を実行するように変更されました。&lt;br /&gt;
|-&lt;br /&gt;
! [[GRUB]]&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
| BIOS / GPT 構成では、[[GRUB#BIOS|BIOSシステム]] が必要です。 &amp;lt;br/&amp;gt; RAID、LUKS1、LVMをサポートします(シンプロビジョニングボリュームはサポートしません)&lt;br /&gt;
|-&lt;br /&gt;
! [[rEFInd]]&lt;br /&gt;
| {{No}} || {{Yes}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{Y|Without encryption}} || {{Y|Without encryption}} || {{Y|Without tail-packing feature}} || {{G|Inherited from firmware&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}} || {{No}}&lt;br /&gt;
| 明示的な構成なしでカーネルとパラメーターの自動検出をサポートします。&lt;br /&gt;
|-&lt;br /&gt;
! [[Syslinux]]&lt;br /&gt;
| {{Yes}} || {{Y|[[Syslinux#Limitations of UEFI Syslinux|Partial]]}}&lt;br /&gt;
| {{Yes}} || {{Yes}}&lt;br /&gt;
| {{Y|[[Syslinux#Chainloading|Partial]]}}&lt;br /&gt;
| {{Y|Without: multi-device volumes, compression, encryption}} || {{Y|Without encryption}} || {{No}} || {{Yes}} || {{Y|MBR only; without sparse inodes}}&lt;br /&gt;
| 特定の [[ファイルシステム]] 機能はサポートされていません。[https://wiki.syslinux.org/wiki/index.php?title=Filesystem] &amp;lt;br/&amp;gt;ファイルシステムドライバーがありません [https://bugzilla.syslinux.org/show_bug.cgi?id=33] は、インストールされているファイルシステムにのみアクセスできます。&lt;br /&gt;
|-&lt;br /&gt;
! [[systemd-boot]]&lt;br /&gt;
| {{No}} || {{Yes}}&lt;br /&gt;
| {{Y|[https://github.com/systemd/systemd/issues/1125 Manual install only]}} || {{Yes}}&lt;br /&gt;
| {{Yes}}&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;&lt;br /&gt;
| {{No}} || {{No}} || {{No}} || {{G|Inherited from firmware&amp;lt;sup&amp;gt;1&amp;lt;/sup&amp;gt;}} || {{No}}&lt;br /&gt;
| [[ESP]] または拡張ブートローダーパーティション(XBOOTLDRパーティション)以外のパーティションからバイナリを起動することはできません。&lt;br /&gt;
|-&lt;br /&gt;
! {{Grey|[[GRUB Legacy]]}}&lt;br /&gt;
| {{Yes}} || {{No}}&lt;br /&gt;
| {{Yes}} || {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Y|XFS v4 only}}&lt;br /&gt;
| [https://www.gnu.org/software/grub/grub-legacy.html廃止] [[GRUB]] を支持&lt;br /&gt;
|-&lt;br /&gt;
! {{Grey|[[LILO]]}}&lt;br /&gt;
| {{Yes}} || {{No}}&lt;br /&gt;
| {{Yes}} || {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}} || {{Y|Without encryption}} || {{Yes}} || {{Yes}} || {{Yes|http://xfs.org/index.php/XFS_FAQ#Q:_Does_LILO_work_with_XFS.3F}}&lt;br /&gt;
| [https://web.archive.org/web/20180323163248/http://lilo.alioth.debian.org/ 廃止] 制限による (Btrfs、GPT、RAIDなど)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
# ファイルシステムのサポートはファームウェアから継承されます。 UEFI 仕様では、FAT12、FAT16、および FAT32 ファイルシステムのサポートが義務付けられていますが、ベンダーはオプションで追加のファイルシステムのサポートを追加できます。[https://uefi.org/sites/default/files/resources/UEFI_Spec_2_8_final.pdf#G17.1345080] たとえば、Apple [[Mac]] のファームウェアは HFS+ ファイルシステムをサポートしています。 ファームウェアが起動時に [[Unified Extensible Firmware Interface#UEFIドライバー| UEFIドライバー]] をロードするためのインターフェースを提供する場合、ファイルシステムドライバーを(個別に取得して)ロードすることにより、追加のファイルシステムのサポートを追加できます。&lt;br /&gt;
#A [https://www.rodsbooks.com/efi-bootloaders/principles.html boot manager] 他の EFI アプリケーション、たとえば {{ic | 1 = CONFIG_EFI_STUB = y}} および Windows {{ic|bootmgfw.efi}} で構築された Linux カーネルイメージのみを起動できます。&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Comparison of boot loaders]] も参照してください。&lt;br /&gt;
&lt;br /&gt;
== カーネル ==&lt;br /&gt;
カーネルはオペレーティングシステムのコアです。ローレベル (&#039;&#039;カーネル空間&#039;&#039;) で、マシンのハードウェアとハードウェアを使って実行されるプログラムを橋渡しします。CPU を効率的に利用するために、カーネルはスケジューラーを使ってどのタスクが優先的に実行されるかを決定し、多くのタスクが同時に実行されるのを可能にしています。&lt;br /&gt;
&lt;br /&gt;
== initramfs ==&lt;br /&gt;
カーネルがロードされた後、カーネルは [[mkinitcpio|initramfs]] (initial RAM ファイルシステム) を解凍して、initial root ファイルシステムにします。カーネルは最初のプロセスとして {{ic|/init}} を起動します。&#039;&#039;初期ユーザー空間&#039;&#039;の始まりです。&lt;br /&gt;
&lt;br /&gt;
initramfs の目的は root ファイルシステムにアクセスできる位置にシステムをブートストラップすることです (詳しくは [[FHS]] を見て下さい)。これは IDE, SCSI, SATA, USB/FW (外部ハードウェアから起動する場合) などのデバイスのために必要なモジュールがカーネルに入っていない場合 initramfs からモジュールをロードできなくてはならないということを意味しています; (プログラムやスクリプトから明示的に指定されるか [[udev|udev]] を通すかして) 正しいモジュールがロードされると、ブートプロセスが再開されます。従って、initramfs に含めなくてはならないのは root ファイルシステムにアクセスするために必要なモジュールだけで、使用する全てのモジュールを入れる必要はありません。ほとんどのモジュールは後の init プロセス中に、udev によってロードされます。&lt;br /&gt;
&lt;br /&gt;
== Init プロセス ==&lt;br /&gt;
&lt;br /&gt;
初期ユーザー空間の最終段階として、本当の root がマウントされ、initial root ファイルシステムを置き換えます。{{ic|/sbin/init}} が実行され、{{ic|/init}} プロセスを置き換えます。Arch は init プロセスとして [[systemd|systemd]] を使っています。&lt;br /&gt;
&lt;br /&gt;
== getty ==&lt;br /&gt;
[[init]] は [[Wikipedia:Virtual console|virtual terminal]] (典型的には6つ) ごとに [[getty]] を1回呼び出し、各ttyを初期化してユーザ名とパスワードを要求します。ユーザ名とパスワードが与えられると、getty はそれらを {{ic|/etc/passwd}} と {{ic|/etc/shadow}} と照合し、 [[#Login|login]] を呼び出します。あるいは、システム上にディスプレイマネージャがあれば、getty はそれを起動します。&lt;br /&gt;
&lt;br /&gt;
== ディスプレイマネージャ ==&lt;br /&gt;
&lt;br /&gt;
[[ディスプレイマネージャ]] は、tty の getty ログインプロンプトを置き換えるように設定できます。&lt;br /&gt;
&lt;br /&gt;
起動後にディスプレイマネージャを自動的に初期化するには、 [[systemd]] からサービスユニットを手動で有効にする必要があります。サービス・ユニットの有効化と起動の詳細は、[[systemd#ユニットを使う]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
== ログイン ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ログイン&#039;&#039; プログラムは、環境変数を設定し、{{ic|/etc/passwd}} に基づいてユーザーのシェルを起動することによって、ユーザーのセッションを開始します。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;ログイン&#039;&#039; プログラムは、ログインに成功するとログインシェルを実行する直前に [[Wikipedia:motd (Unix) |/etc/motd]] (message of the day) の内容を表示します。利用規約を表示してユーザーに地域のポリシーや伝えたいことを思い出させるのに適した場所です。&lt;br /&gt;
&lt;br /&gt;
== シェル ==&lt;br /&gt;
&lt;br /&gt;
ユーザーの [[シェル]] が起動されると、通常はユーザーにプロンプトを表示する前に [[bashrc]] などの実行時設定ファイルが実行されます。アカウントが [[%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E6%99%82%E3%81%AB_X_%E3%82%92%E8%B5%B7%E5%8B%95]] に設定されている場合、実行時設定ファイルは [[startx]] または [[xinit]] を呼び出します。&lt;br /&gt;
&lt;br /&gt;
== GUI, xinit or wayland ==&lt;br /&gt;
&lt;br /&gt;
[[xinit]] はユーザの [[xinitrc]] runtime configuration fileを実行しこれは通常 [[ウィンドウマネージャ]] を開始します。ユーザがウィンドウマネージャを終了すると、&#039;&#039;xinit&#039;&#039;、 &#039;&#039;startx&#039;&#039;、 シェル、 ログイン、の順序で終了して [[#getty|getty]] に戻ります。&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
* [http://archlinux.me/brain0/2010/02/13/early-userspace-in-arch-linux/ Early Userspace in Arch Linux]&lt;br /&gt;
* [https://www.ibm.com/developerworks/linux/library/l-linuxboot/ Inside the Linux boot process]&lt;br /&gt;
* [https://www.linuxjournal.com/article/4622 Boot with GRUB]&lt;br /&gt;
* [[Wikipedia:Linux startup process]]&lt;br /&gt;
* [[Wikipedia:ja:initrd]]&lt;br /&gt;
* [http://www.cyberciti.biz/faq/grub-boot-into-single-user-mode/ Boot Linux Grub Into Single User Mode]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=23743</id>
		<title>アプリケーション一覧/インターネット</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E4%B8%80%E8%A6%A7/%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88&amp;diff=23743"/>
		<updated>2022-02-05T09:44:58Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* Cloud synchronization clients */ wiki 内部に向いた空リンクの修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
[[Category:インターネットアプリケーション]]&lt;br /&gt;
[[Category:ソフトウェア一覧]]&lt;br /&gt;
[[cs:List of applications (Čeština)/Internet]]&lt;br /&gt;
[[en:List of applications/Internet]]&lt;br /&gt;
[[es:List of applications (Español)/Internet]]&lt;br /&gt;
[[it:List of applications (Italiano)/Internet]]&lt;br /&gt;
[[pt:List of applications (Português)/Internet]]&lt;br /&gt;
[[zh-hans:List of applications (简体中文)/Internet]]&lt;br /&gt;
[[zh-hant:List of applications (正體中文)/Internet]]&lt;br /&gt;
{{List of Applications navigation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
== インターネット ==&lt;br /&gt;
&lt;br /&gt;
=== Network connection ===&lt;br /&gt;
&lt;br /&gt;
==== ネットワーク管理 ====&lt;br /&gt;
&lt;br /&gt;
[[ネットワーク設定#ネットワーク管理]] を参照してください。&lt;br /&gt;
&lt;br /&gt;
==== VPN クライアント ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Bitmask|Secured and encrypted communication using various service providers|https://bitmask.net/|{{AUR|bitmask}}}}&lt;br /&gt;
* {{App|Libreswan| 「IPsec」と「IKE」をベースにした、最も広くサポートされ、標準化されたVPNプロトコルのフリーソフトウェア実装です。|https://libreswan.org/|{{AUR|libreswan}}}}&lt;br /&gt;
* {{App|[[NetworkManager]]|Supports a variety of protocols (e.g. MS, Cisco, Fortinet) via a plugin system.|https://wiki.gnome.org/Projects/NetworkManager/VPN|{{pkg|networkmanager}}}}&lt;br /&gt;
* {{App|[[OpenConnect]]|Cisco と Juniper VPN に対応。|https://www.infradead.org/openconnect/|{{pkg|openconnect}}}}&lt;br /&gt;
* {{App|[[Openswan]]|IPsec-based VPN Solution.|https://www.openswan.org/|{{AUR|openswan}}}}&lt;br /&gt;
* {{App|[[OpenVPN]]|OpenVPN による VPN に接続します。|https://openvpn.net/|{{pkg|openvpn}}}}&lt;br /&gt;
* {{App|[[PPTP クライアント]]|Microsoft VPN (MPPE) などの PPTP VPN に接続します。(insecure)|http://pptpclient.sourceforge.net/|{{pkg|pptpclient}}}}&lt;br /&gt;
* {{App|[[strongSwan]]|IPsec-based VPN Solution.|https://www.strongswan.org/|{{pkg|strongswan}}}}&lt;br /&gt;
* {{App|[[tinc]]|tinc is a free VPN daemon.|https://www.tinc-vpn.org/|{{pkg|tinc}}}}&lt;br /&gt;
* {{App|[[:en:vopono]]|OpenVPN and Wireguard wrapper to launch applications with VPN tunnels in network namespaces.|https://github.com/jamesmcm/vopono|{{AUR|vopono}}}}&lt;br /&gt;
* {{App|[[Vpnc]]|To connect to Cisco 3000 VPN Concentrators.|https://www.unix-ag.uni-kl.de/~massar/vpnc/|{{pkg|vpnc}}}}&lt;br /&gt;
* {{App|[[WireGuard]]|Next generation secure network tunnel.|https://www.wireguard.com/|{{Pkg|wireguard-tools}}}}&lt;br /&gt;
&lt;br /&gt;
==== Proxy servers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Brook|Proxy focusing on strong encryption and being undetectable.|https://txthinking.github.io/brook/|{{Pkg|brook}}}}&lt;br /&gt;
* {{App|Dante|SOCKS server and SOCKS client, implementing RFC 1928 and related standards.|https://www.inet.no/dante/|{{Pkg|dante}}}}&lt;br /&gt;
* {{App|[[Privoxy]]|Non-caching web proxy with advanced filtering capabilities for enhancing privacy, modifying web page data and HTTP headers, controlling access, and removing ads and other obnoxious Internet junk.|https://www.privoxy.org/|{{Pkg|privoxy}}}}&lt;br /&gt;
* {{App|Project V|Project V is a set of tools to help you build your own privacy network over internet.|https://www.v2fly.org/en_US/|{{Pkg|v2ray}}}}&lt;br /&gt;
* {{App|[[Shadowsocks]]|Secure socks5 proxy, designed to protect your Internet traffic.|https://www.shadowsocks.org/en/index.html|Python: {{Pkg|shadowsocks}}, C: {{Pkg|shadowsocks-libev}}, Qt: {{Pkg|shadowsocks-qt5}}}}&lt;br /&gt;
* {{App|[[Squid]]|Caching proxy for the Web supporting HTTP, HTTPS, FTP, and more.|http://www.squid-cache.org/|{{Pkg|squid}}}}&lt;br /&gt;
* {{App|[[Stunnel]]|A server and client to add and remove TLS encryption to TCP data flow.|https://www.stunnel.org/|{{Pkg|stunnel}}}}&lt;br /&gt;
* {{App|Tinyproxy|Lightweight HTTP/HTTPS proxy daemon.|https://tinyproxy.github.io/|{{Pkg|tinyproxy}}}}&lt;br /&gt;
* {{App|[[Trojan]]|An unidentifiable mechanism that helps you bypass GFW.|https://trojan-gfw.github.io/trojan/|{{Pkg|trojan}}}}&lt;br /&gt;
* {{App|[[Varnish]]|High-performance HTTP accelerator.|https://varnish-cache.org/|{{Pkg|varnish}}}}&lt;br /&gt;
* {{App|XX-Net|Easy to use web proxy tool.|https://github.com/XX-net/XX-Net/|{{Aur|xx-net}}}}&lt;br /&gt;
* {{App|Ziproxy|Forwarding (non-caching) compressing HTTP proxy server.|http://ziproxy.sourceforge.net/|{{Pkg|ziproxy}}}}&lt;br /&gt;
&lt;br /&gt;
==== 匿名化ネットワーク ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Freenet]]|検閲が存在しない暗号化ネットワーク。|https://freenetproject.org|{{AUR|freenet}}}}&lt;br /&gt;
* {{App|[[GNUnet]]|セキュアなピアツーピアネットワークのフレームワーク。|http://gnunet.org|CLI: {{AUR|gnunet}}, GUI: {{AUR|gnunet-gtk}}}}&lt;br /&gt;
* {{App|[[I2P]]|分散型の匿名ネットワーク。|https://geti2p.net|{{Pkg|i2pd}}, {{AUR|i2p}}, {{AUR|i2p-bin}}}}&lt;br /&gt;
* {{App|Lantern|ピアツーピアインターネット検閲回避ソフトウェア。|https://getlantern.org/|{{AUR|lantern-bin}}}}&lt;br /&gt;
* {{App|[[Tor]]|匿名化オーバーレイネットワーク。|http://www.torproject.org/|{{pkg|tor}}}}&lt;br /&gt;
&lt;br /&gt;
=== ウェブブラウザ ===&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of web browsers]].&lt;br /&gt;
&lt;br /&gt;
==== コンソール ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Browsh|browsh]]|A fully-modern text-based browser. Runs as a frontend to headless Firefox.|https://www.brow.sh/|{{AUR|browsh}}}}&lt;br /&gt;
* {{App|[[ELinks]]|先進的な、定評のある高機能なテキストモードウェブブラウザ with mouse wheel scroll support, frames and tables, extensible with Lua &amp;amp; Guile (Links フォーク)。|http://elinks.or.cz/|{{Pkg|elinks}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:Links|Links]]|テキスト WWW ブラウザ。Lynx に似ているコンソールバージョン [links] と、CSS・画像レンダリング・プルダウン式のメニューがあるグラフィカルな X-window/フレームバッファバージョンの [xlinks -g] があります (Arch では両方コンパイルされています)。|http://links.twibright.com/|{{Pkg|links}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:Lynx (ウェブブラウザ)|Lynx]]|World Wide Web 用のテキストブラウザ。|https://lynx.invisible-island.net/|{{Pkg|lynx}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:w3m|w3m]]|テキストベースのウェブブラウザ。vim ライクのキーバインドがあり、画像を表示することも可能です。|https://salsa.debian.org/debian/w3m|{{Pkg|w3m}}}}&lt;br /&gt;
&lt;br /&gt;
==== グラフィカル ====&lt;br /&gt;
&lt;br /&gt;
===== Gecko ベース =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Gecko (software)]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Firefox]]|Mozilla によって開発されている、高速レンダリングを行う Gecko ベースの拡張性のあるブラウザ。|https://mozilla.com/firefox|{{Pkg|firefox}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:SeaMonkey|SeaMonkey]]|Mozilla インターネットスイートの後継。|https://www.seamonkey-project.org/|{{Pkg|seamonkey}}}}&lt;br /&gt;
&lt;br /&gt;
====== Firefox spin-offs ======&lt;br /&gt;
* {{App|[[Wikipedia:Cliqz|Cliqz]]|Firefox-based privacy aware web browser. Discontinued.|https://cliqz.com/|{{AUR|cliqz}} or {{AUR|cliqz-bin}}}}&lt;br /&gt;
* {{App|Dot|A fork of firefox focused on privacy and a sleeker UI.|https://www.dothq.co/|{{AUR|dot-bin}}}}&lt;br /&gt;
* {{App|FireDragon|A fork of LibreWolf that includes KDE integration patches and custom branding.|https://gitlab.com/dr460nf1r3/settings/|{{AUR|firedragon}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ja:GNU IceCat|GNU IceCat]]|[[GNU プロジェクト]]によって配布されている Firefox ESR のカスタムビルド。フリーでないコンポーネントを削除し、プライバシー保護用の拡張を追加しています。リリースサイクルは Mozilla Firefox よりも遅れがちです。|https://www.gnu.org/software/gnuzilla/|{{AUR|icecat}} または {{AUR|icecat-bin}}}}&lt;br /&gt;
* {{App|LibreWolf|A fork of Firefox, focused on privacy, security and freedom.|https://librewolf-community.gitlab.io/|{{AUR|librewolf}} or {{AUR|librewolf-bin}}}}&lt;br /&gt;
* {{App|[[Tor]] Browser Launcher|Securely and easily download, verify, install, and launch Tor Browser, a fork of Firefox ESR.|https://github.com/micahflee/torbrowser-launcher|{{Pkg|torbrowser-launcher}}}}&lt;br /&gt;
* {{App|Waterfox Classic|Optimized fork of Firefox 56, without data collection and allowing unsigned extensions and NPAPI plugins.|https://www.waterfox.net/|{{AUR|waterfox-classic-bin}}}}&lt;br /&gt;
* {{App|Waterfox Current|Optimized fork of Firefox ESR, updated feature-rich branch of Waterfox.|https://www.waterfox.net/|{{AUR|waterfox-current-bin}}}}&lt;br /&gt;
* {{App|Waterfox G3|Optimized fork of Firefox 78, updated feature-rich branch of Waterfox.|https://www.waterfox.net/|{{AUR|waterfox-g3-bin}}}}&lt;br /&gt;
&lt;br /&gt;
===== Blink ベース =====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:Blink (レンダリングエンジン)]] を参照。&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Chromium]]|Google によって開発されているウェブブラウザ。WebKit レイアウトエンジンを使っています。Google Chrome のオープンソースプロジェクト。|https://www.chromium.org/|{{Pkg|chromium}}}}&lt;br /&gt;
&lt;br /&gt;
====== Privacy-focused chromium spin-offs ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Brave (web browser)|Brave]]|Web browser with builtin ad- and tracker blocking.|https://www.brave.com/|{{AUR|brave-bin}}}}&lt;br /&gt;
* {{App|Iridium|Chromium 用のプライバシー保護 [https://git.iridiumbrowser.de/cgit.cgi/iridium-browser/tree/?h&amp;amp;#61;patchview パッチセット]。詳しくは [https://github.com/iridium-browser/tracker/wiki/Differences-between-Iridium-and-Chromium Chromium との差異] を参照。|https://iridiumbrowser.de/|{{AUR|iridium-rpm}}}}&lt;br /&gt;
* {{App|Ungoogled chromium|Google との統合を排除してプライバシーや透過性を高めた Google Chromium の改造版。|https://github.com/Eloston/ungoogled-chromium|{{AUR|ungoogled-chromium}}}}&lt;br /&gt;
&lt;br /&gt;
====== Proprietary chromium spin-offs ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Google Chrome]]|Google によって開発されているプロプライエタリのウェブブラウザ。|https://www.google.com/chrome/|{{AUR|google-chrome}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Microsoft Edge|Microsoft Edge]]|Proprietary web browser developed by Microsoft.|https://www.microsoft.com/edge/|{{AUR|microsoft-edge-stable-bin}}}}&lt;br /&gt;
* {{App|[[Opera]]|Proprietary browser developed by Opera Software.|https://opera.com|{{Pkg|opera}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SlimBrowser|Slimjet]]|高速・スマート・強力なプロプライエタリブラウザ。Chromium がベース。|http://www.slimjet.com/|{{AUR|slimjet}}}}&lt;br /&gt;
* {{App|[[Vivaldi]]|パワーユーザーのために作られた先進的な proprietary ブラウザ。|https://vivaldi.com/|{{Pkg|vivaldi}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Yandex Browser|Yandex Browser]]|ミニマルな設計と洗練されたテクノロジーによりウェブを高速・安全・簡単にする proprietary ブラウザ。|https://browser.yandex.com/|{{AUR|yandex-browser-beta}}}}&lt;br /&gt;
&lt;br /&gt;
====== qt5-webengine ベース ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Dooble|Dooble]]|Colorful Web browser.|https://textbrowser.github.io/dooble/|{{AUR|dooble}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Eric Python IDE|Eric]]|QtWebEngine-based HTML browser, part of the eric6 development toolset, can be launched with the {{ic|eric6_browser}} command.|https://eric-ide.python-projects.org/|{{AUR|eric}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Falkon|Falkon]]|Web browser based on QtWebEngine, written in Qt framework.|https://falkon.org/|{{pkg|falkon}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Konqueror|Konqueror]]|Qt ツールキットと Qt WebEngine (または KHTML レイアウトエンジン) をベースとしたウェブブラウザ。{{Grp|kde-network}} に含まれています。|https://apps.kde.org/konqueror/|{{Pkg|konqueror}}}}&lt;br /&gt;
* {{App|Liri Browser|[[Liri]] のミニマルなマテリアルデザインのウェブブラウザ。|https://github.com/lirios/browser|{{AUR|liri-browser-git}}}}&lt;br /&gt;
* {{App|Qt WebBrowser|Qt と Qt WebEngine を使用して組み込みデバイス用に開発されたブラウザ。|https://doc.qt.io/QtWebBrowser/|{{AUR|qtwebbrowser}}}}&lt;br /&gt;
* {{App|[[qutebrowser]]|キーボードで操作する、[[vim]] ライクなブラウザ。PyQt5 と QtWebEngine がベース。|https://qutebrowser.org/|{{Pkg|qutebrowser}}}}&lt;br /&gt;
&lt;br /&gt;
====== Browsers based on electron ======&lt;br /&gt;
&lt;br /&gt;
* {{App|Beaker|Peer-to-peer web browser with tools to create and host websites. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/beakerbrowser/beaker|{{AUR|beaker-browser}}}}&lt;br /&gt;
* {{App|Ferdi|[[Wikipedia:Electron (software framework)|Electron]] application. Messaging browser that allows you to combine your favorite messaging services into one application. It is based on Franz.|https://getferdi.com/|{{AUR|ferdi}}}}&lt;br /&gt;
* {{App|Franz|[[Wikipedia:Electron (software framework)|Electron]] application. Messaging browser for WhatsApp, Facebook Messenger, Slack, Telegram and many other web services.|https://meetfranz.com/|{{AUR|franz}}}}&lt;br /&gt;
* {{App|Min|[[Electron]] プラットフォームをベースにして作成されたスマートで高速なウェブブラウザ。|https://minbrowser.github.io/min/|{{Pkg|min}}}}&lt;br /&gt;
&lt;br /&gt;
===== WebKit ベース =====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:WebKit]] を参照。&lt;br /&gt;
&lt;br /&gt;
{{Note|今日では使用が非推奨となっている webkit ポート (webkitgtk/webkitgtk2/qtwebkit) をベースとしているブラウザはリストから削除されました。詳しくは [https://blogs.gnome.org/mcatanzaro/2016/02/01/on-webkit-security-updates/ こちら] を参照。}}&lt;br /&gt;
&lt;br /&gt;
====== webkit2gtk ベース ======&lt;br /&gt;
&lt;br /&gt;
Most of these support ad-blocking via [https://github.com/jun7/wyebadblock wyebadblock].&lt;br /&gt;
* {{App|[[Badwolf]]|A minimalist privacy-focused browser.|https://hacktivis.me/projects/badwolf|{{AUR|badwolf}}}}&lt;br /&gt;
* {{App|Ephemeral|A private-by-default, always-incognito browser for elementary OS.|https://github.com/cassidyjames/ephemeral|{{AUR|ephemeral}}}}&lt;br /&gt;
* {{App|Eolie|Simple web browser for GNOME.|https://wiki.gnome.org/Apps/Eolie|{{Pkg|eolie}}}}&lt;br /&gt;
* {{App|[[GNOME Web]]|WebKitGTK レンダリングエンジンを使うウェブブラウザ。part of {{Grp|gnome}}.|https://wiki.gnome.org/Apps/Web/|{{Pkg|epiphany}}}}&lt;br /&gt;
* {{App|[[Lariza]]|GTK 3, GLib, WebKit2GTK を使用するシンプルなウェブブラウザ。|https://www.uninformativ.de/git/lariza/|{{AUR|lariza}}}}&lt;br /&gt;
* {{App|[[Luakit]]|Fast, small, webkit based browser framework extensible by Lua.|https://luakit.github.io/|{{Pkg|luakit}}}}&lt;br /&gt;
* {{App|[[Midori]]|GTK と Webkit ベースの軽量なウェブブラウザ。|https://www.midori-browser.org/|{{Pkg|midori}}}}&lt;br /&gt;
* {{App|Nyxt|Keyboard-oriented, infinitely extensible browser designed for power users. It has familiar key-bindings (Emacs, VI, CUA) and features fuzzy searching between tabs, multiple selections, history as a tree and more.|https://nyxt.atlas.engineer/|{{AUR|nyxt}}}}&lt;br /&gt;
* {{App|[[surf]]|軽量な WebKit ベースブラウザ。[http://suckless.org/philosophy suckless philosophy] に従っています (基本的にブラウザ自体はひとつの C ソースファイルで構成)。|https://surf.suckless.org/|{{AUR|surf}}}}&lt;br /&gt;
* {{App|Surfer|Simple keyboard based web browser, written in C. It supports custom JS-scripts.|https://github.com/nihilowy/surfer|{{AUR|surfer-git}}}}&lt;br /&gt;
* {{App|Tangram|Integration of web applications into the desktop, specifically GNOME.|https://github.com/sonnyp/Tangram|{{AUR|tangram}}}}&lt;br /&gt;
* {{App|Vimb|A Vim-like web browser written in C that is inspired by Pentadactyl and Vimprobable. It includes a manpage and a howto for common configurations. It supports custom JS-scripts, dark mode and handles geolocation requests.|https://fanglingsu.github.io/vimb/|{{Pkg|vimb}}}}&lt;br /&gt;
* {{App|wyeb|A vim-like web browser inspired by dwb and luakit with Adblock.|https://github.com/jun7/wyeb|{{aur|wyeb-git}}}}&lt;br /&gt;
&lt;br /&gt;
====== qt5-webkit ベース ======&lt;br /&gt;
&lt;br /&gt;
* {{App|OSPKit|Webkit based html browser for printing.|http://osp.kitchen/tools/ospkit/|{{AUR|ospkit-git}}}}&lt;br /&gt;
* {{App|[[Otter Browser]]|Qt5 を使用して昔の Opera (12.x) の UI を再現するブラウザ。|https://otter-browser.org/|{{Pkg|otter-browser}}}}&lt;br /&gt;
* {{App|[[qutebrowser]]|キーボードで操作する、vim ライクなブラウザ。PyQt5 と QtWebKit がベース。|https://github.com/qutebrowser/qutebrowser|{{Pkg|qutebrowser}}}}&lt;br /&gt;
* {{App|smtube|Application that allows to browse, search and play YouTube videos.|https://www.smtube.org/|{{Pkg|smtube}}}}&lt;br /&gt;
* {{App|WCGBrowser|A web browser for kiosk systems.|http://www.alandmoore.com/wcgbrowser/wcgbrowser.html|{{AUR|wcgbrowser-git}}}}&lt;br /&gt;
&lt;br /&gt;
===== その他 =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Basilisk (web browser)|Basilisk]]|Another [[Wikipedia:Goanna (software)|Goanna-based]] browser from the developers of [[Wikipedia:Pale Moon (web browser)|Pale Moon]]. It features a Firefox 52-based UI, and is a perpetual beta. It lacks support for WebExtensions, but still supports XUL-based addons.|https://basilisk-browser.org/|{{AUR|basilisk-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Dillo|Dillo]]|[[Wikipedia:ja:FLTK|FLTK]] ベースの小型・高速なグラフィカルウェブブラウザ。独自のレイアウトエンジンを使用。|https://www.dillo.org/|{{Pkg|dillo}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Links (web browser)|Links]]|Graphics and text mode web browser. Includes a graphical X-window/framebuffer version with CSS, image rendering, pull-down menus. It can be launched with the {{ic|xlinks -g}} command.|http://links.twibright.com/|{{Pkg|links}}}}&lt;br /&gt;
* {{App|[[Wikipedia:NetSurf|NetSurf]]|C で書かれたフェザー級のブラウザ。its slowly developing JavaScript support and カスタムレンダリングエンジンによって高速レンダリングすることで有名。|https://www.netsurf-browser.org/|{{Pkg|netsurf}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Pale Moon (web browser)|Pale Moon]]|速度を重視して Firefox 29 以前のインターフェイスを備えた Firefox のフォーク。Gecko のフォークである [[Wikipedia:ja:Goanna|Goanna]] レイアウトエンジンを使用。Firefox のアドオンが動作しないことがあります。WebExtensions, cache2, e10s, OTMC など Firefox の新機能はサポートしていません。Many of the old [https://github.com/JustOff/ca-archive 93,598 versions of 19,450 Firefox add-ons created by 14,274 developers over the past 15 years using XUL/XPCOM technology in the Classic Add-ons Archive] still work.|https://www.palemoon.org/|{{AUR|palemoon}} or {{AUR|palemoon-bin}}}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Gemini browsers ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Gemini (protocol)#Software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|Amfora|Terminal browser for the Gemini protocol.|https://github.com/makeworld-the-better-one/amfora|{{Pkg|amfora}}}}&lt;br /&gt;
* {{App|Bombabillo|Non-web client for the terminal, supporting Gopher, Gemini and much more.|https://bombadillo.colorfield.space/|{{AUR|bombadillo-git}}}}&lt;br /&gt;
* {{App|Castor|Graphical client for the Gemini, Gopher, and Finger protocols, written in Rust with GTK.|https://git.sr.ht/~julienxx/castor|{{AUR|castor}}}}&lt;br /&gt;
* {{App|Kristall|Qt-based Gemini browser.|https://github.com/MasterQ32/kristall|{{AUR|kristall}}}}&lt;br /&gt;
* {{App|Lagrange|Desktop GUI client for browsing Gemini space, offering modern conveniences familiar from web browsers.|https://gmi.skyjake.fi/lagrange|{{AUR|lagrange}}}}&lt;br /&gt;
&lt;br /&gt;
=== Web servers ===&lt;br /&gt;
&lt;br /&gt;
A [[Wikipedia:Web server|web server]] serves HTML web pages and other files via HTTP to clients like [[:Category:Web browser|web browsers]].&lt;br /&gt;
The major web servers can be interfaced with programs to serve dynamic content ([[web applications]]).&lt;br /&gt;
&lt;br /&gt;
See also [[:Category:Web server]] and [[Wikipedia:Comparison of web server software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Apache HTTP Server]]|A high performance Unix-based HTTP server.|https://httpd.apache.org/|{{Pkg|apache}}}}&lt;br /&gt;
* {{App|[[Caddy]]|HTTP/2 web server with automatic HTTPS.|https://caddyserver.com/|{{Pkg|caddy}}}}&lt;br /&gt;
* {{App|[[Hiawatha]]|Secure and advanced web server.|https://www.hiawatha-webserver.org/|{{Pkg|hiawatha}}}}&lt;br /&gt;
* {{App|[[Lighttpd]]|A secure, fast, compliant and very flexible web-server.|https://www.lighttpd.net/|{{Pkg|lighttpd}}}}&lt;br /&gt;
* {{App|[[nginx]]|Lightweight HTTP server and IMAP/POP3 proxy server.|https://nginx.org/|{{Pkg|nginx}}}}&lt;br /&gt;
* {{App|sthttpd|Supported fork of the thttpd web server.|https://github.com/blueness/sthttpd|{{Pkg|sthttpd}}}}&lt;br /&gt;
* {{App|yaws|Web server/framework written in Erlang.|http://yaws.hyber.org/|{{Pkg|yaws}}}}&lt;br /&gt;
&lt;br /&gt;
==== Static web servers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|darkhttpd|A small and secure static web server, written in C, does not support HTTPS or Auth.|https://unix4lyfe.org/darkhttpd/|{{Pkg|darkhttpd}}}}&lt;br /&gt;
* {{App|KatWeb|A lightweight static web server and reverse proxy, written in Go, designed for the modern web.|https://github.com/kittyhacker101/KatWeb|{{AUR|katweb}}}}&lt;br /&gt;
* {{App|quark|An extremly small and simple http get-only web server. It only serves static pages on a single host.|https://tools.suckless.org/quark/|{{AUR|quark-git}}}}&lt;br /&gt;
* {{App|serve|Static file serving and directory listing.|https://github.com/zeit/serve|{{AUR|nodejs-serve}}}}&lt;br /&gt;
* {{App|servy|A tiny little web server, single binary, written in Rust.|https://github.com/zethra/servy|{{AUR|servy}}}}&lt;br /&gt;
* {{App|Webfs|Simple and instant web server for mostly static content.|https://linux.bytesex.org/misc/webfs.html|{{Pkg|webfs}}}}&lt;br /&gt;
&lt;br /&gt;
The [[Python]] standard library module [https://docs.python.org/library/http.server.html http.server] can also be used from the command-line.&lt;br /&gt;
&lt;br /&gt;
==== Specialized web servers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|chezdav|WebDAV server that allows to share a particular directory.|https://wiki.gnome.org/phodav|{{Pkg|phodav}}}}&lt;br /&gt;
* {{App|Mongoose|Embedded web server library, supports WebSocket and MQTT.|https://github.com/cesanta/mongoose|{{AUR|mongoose}}}}&lt;br /&gt;
* {{App|OnionShare|Lets you securely and anonymously send and receive files. It works by starting a web server, making it accessible as a Tor onion service, and generating an unguessable web address so others can download files from you, or upload files to you.|https://onionshare.org/|{{Pkg|onionshare}}}}&lt;br /&gt;
* {{App|VServer|GTK application, which opens an http server in the selected folder and shares your files.|https://github.com/bcedu/ValaSimpleHTTPServer|{{AUR|vserver-git}}}}&lt;br /&gt;
* {{App|webhook|Small server for creating HTTP endpoints (hooks)|https://github.com/adnanh/webhook|{{Pkg|webhook}}}}&lt;br /&gt;
* {{App|Woof|An ad-hoc single file webserver; Web Offer One File.|http://www.home.unix-ag.org/simon/woof.html|{{AUR|woof}}}}&lt;br /&gt;
&lt;br /&gt;
==== WSGI servers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Gunicorn|A Python WSGI HTTP Server for UNIX.|https://gunicorn.org/|{{Pkg|gunicorn}}, {{AUR|python2-gunicorn}}}}&lt;br /&gt;
* {{App|[[uWSGI]]|A fast, self-healing and developer/sysadmin-friendly application container server written in C.|https://uwsgi-docs.readthedocs.io/|{{Pkg|uwsgi}}}}&lt;br /&gt;
* {{App|Waitress|A WSGI server for Python 3.|https://github.com/Pylons/waitress|{{Pkg|python-waitress}}}}&lt;br /&gt;
&lt;br /&gt;
Apache also supports WSGI with [[mod_wsgi]].&lt;br /&gt;
&lt;br /&gt;
==== Performance testing ====&lt;br /&gt;
&lt;br /&gt;
* {{App|http_load|A webserver performance testing tool, runs in a single process.|https://www.acme.com/software/http_load/|{{AUR|http_load}}}}&lt;br /&gt;
* {{App|httperf|Can generate various HTTP workloads, written in C.|https://github.com/httperf/httperf|{{AUR|httperf}}}}&lt;br /&gt;
* {{App|siege|An HTTP regression testing and benchmarking utility.|https://www.joedog.org/siege-home/|{{Pkg|siege}}}}&lt;br /&gt;
* {{App|vegeta|HTTP load testing tool, written in Go.|https://github.com/tsenart/vegeta|{{Pkg|vegeta}}}}&lt;br /&gt;
* {{App|Web Bench|Benchmarking tool, uses fork() for simulating multiple clients.|http://home.tiscali.cz/~cz210552/webbench.html|{{AUR|webbench}}}}&lt;br /&gt;
&lt;br /&gt;
=== ファイル共有 ===&lt;br /&gt;
&lt;br /&gt;
==== ダウンロードマネージャ ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of download managers]].&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[aria2]]|軽量なダウンロードユーティリティ。HTTP/S, FTP, SFTP, BitTorrent と Metalink をサポート。内蔵の JSON-RPC か XML-RPC インターフェースを通じてデーモンとして起動・操作することも可能です。|https://aria2.github.io/|{{Pkg|aria2}}}}&lt;br /&gt;
* {{App|Axel|Featherweight command line download accelerator sitting at under 250kB on disk. Supports HTTP/S and FTP.|https://github.com/eribertomota/axel|{{Pkg|axel}}}}&lt;br /&gt;
* {{App|[[Wikipedia:cURL|cURL]]|An URL retrieval utility and library. Supports HTTP, FTP and SFTP.|https://curl.haxx.se/|{{Pkg|curl}}}}&lt;br /&gt;
* {{App|HTTPie|Human-friendly command-line HTTP client for the API era.|https://github.com/httpie/httpie|{{Pkg|httpie}}}}&lt;br /&gt;
* {{App|[[Wikipedia:HTTrack|HTTrack]]|An easy-to-use offline browser utility. It allows you to download a World Wide Web site from the Internet to a local directory, building recursively all directories, getting HTML, images, and other files from the server to your computer.|https://www.httrack.com/|{{Pkg|httrack}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Lftp|LFTP]]|Sophisticated file transfer program. Supports HTTP, FTP, SFTP, FISH, and BitTorrent.|https://lftp.yar.ru/|{{Pkg|lftp}}}}&lt;br /&gt;
* {{App|mps-youtube|Terminal based YouTube jukebox with playlist management. Plays audio/video through mplayer/mpv.|https://github.com/mps-youtube/mps-youtube|{{Pkg|mps-youtube}}}}&lt;br /&gt;
* {{App|Plowshare|A set of command-line tools designed for managing file-sharing websites (aka Hosters).|https://github.com/mcrapet/plowshare|{{Pkg|plowshare}}}}&lt;br /&gt;
* {{App|[[Wikipedia:RTMPDump|RTMPDump]]|Download FLV videos through RTMP (Adobe&#039;s proprietary protocol for Flash video players)|http://rtmpdump.mplayerhq.hu/|{{Pkg|rtmpdump}}}}&lt;br /&gt;
* {{App|snarf|Command-line URL retrieval tool. Supports HTTP and FTP.|https://www.xach.com/snarf/|{{Pkg|snarf}}}}&lt;br /&gt;
* {{App|[[Streamlink]]|Launch streams from various streaming services in a custom video player or save them to a file.|https://streamlink.github.io/|{{Pkg|streamlink}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Streamripper|Streamripper]]|Records and splits streaming mp3 into tracks.|http://streamripper.sourceforge.net/|{{AUR|streamripper}}}}&lt;br /&gt;
* {{App|You-Get|Download media contents (videos, audios, images) from the Web.|https://you-get.org/|{{Pkg|you-get}}}}&lt;br /&gt;
* {{App|[[youtube-dl]]|YouTube and many other web sites から動画をダウンロード。|https://rg3.github.io/youtube-dl/|{{Pkg|youtube-dl}}}}&lt;br /&gt;
* {{App|youtube-viewer|Command line utility for viewing YouTube videos.|https://github.com/trizen/youtube-viewer|{{AUR|youtube-viewer}}}}&lt;br /&gt;
* {{App|yt-dlp|A youtube-dl fork with additional features and fixes.|https://github.com/yt-dlp/yt-dlp|{{Pkg|yt-dlp}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Wget|Wget]]|A network utility to retrieve files from the Web. Supports HTTP and FTP.|https://www.gnu.org/software/wget/|{{Pkg|wget}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|ClipGrab|Downloader and converter for YouTube, Vimeo and many other online video sites.|https://clipgrab.org/|{{Pkg|clipgrab}}}}&lt;br /&gt;
* {{App|FatRat|HTTP, FTP, SFTP, BitTorrent, Metalink などをサポートしている Qt ベースのダウンロードマネージャ。|https://github.com/LubosD/fatrat|{{AUR|fatrat-git}}}}&lt;br /&gt;
* {{App|Forklift|Simple GUI for youtube-dl using PyGObject.|https://github.com/Johnn3y/Forklift|{{AUR|forklift-git}}}}&lt;br /&gt;
* {{App|FreeRapid|Java-based downloader that supports downloading from file-sharing services.|https://wordrider.net/freerapid/|{{AUR|freerapid}}}}&lt;br /&gt;
* {{App|gtk-youtube-viewer|GTK utility for viewing YouTube videos.|https://github.com/trizen/youtube-viewer|{{AUR|youtube-viewer}} + {{Pkg|perl-gtk3}} + {{Pkg|perl-file-sharedir}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Wget#GWget|Gwget]]|GNOME のダウンロードマネージャ。Supports HTTP and FTP.|https://gitlab.gnome.org/Archive/gwget|{{Pkg|gwget}}}}&lt;br /&gt;
* {{App|Gydl|GUI wrapper around the already existing youtube-dl program to download content from sites like YouTube.|https://github.com/JannikHv/gydl|{{AUR|gydl-git}}}}&lt;br /&gt;
* {{App|Gyre|GTK3 downloader for videos from Coub.|https://github.com/HelpSeeker/Gyre|{{AUR|gyre}}}}&lt;br /&gt;
* {{App|[[JDownloader]]|Java-based downloader for one-click hosting sites.|https://jdownloader.org/|{{AUR|jdownloader2}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KGet|KGet]]|DKDE のダウンロードマネージャ。HTTP, FTP, BitTorrent, Metalink をサポート。{{Grp|kde-network}} に含まれています。|https://apps.kde.org/kget/|{{Pkg|kget}}}}&lt;br /&gt;
* {{App|MegaBasterd|Yet another unofficial MEGA downloader/uploader/streaming suite.|https://github.com/tonikelope/megabasterd|{{AUR|megabasterd-bin}}}}&lt;br /&gt;
* {{App|Motrix|Full-featured download manager that supports downloading HTTP, FTP, BitTorrent, Magnet, etc. Based on the [https://electronjs.org/ Electron] platform.|https://motrix.app/|{{AUR|motrix}}}}&lt;br /&gt;
* {{App|Persepolis|Graphical front-end for aria2 download manager with lots of features. Supports HTTP and FTP.|https://persepolisdm.github.io/|{{Pkg|persepolis}}}}&lt;br /&gt;
* {{App|[[pyLoad]]|Downloader written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web.|https://pyload.net/|{{AUR|pyload-git}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|Steadyflow|Simple download manager for GNOME. Supports HTTP and FTP.|https://launchpad.net/steadyflow|{{Pkg|steadyflow}}}}&lt;br /&gt;
* {{App|Streamtuner2|Internet radio station and video browser. It simply lists stations in categories from different directories and launches your preferred media apps for playback.|https://sourceforge.net/projects/streamtuner2/|{{AUR|streamtuner2}}}}&lt;br /&gt;
* {{App|uGet|GTK ダウンロードマネージャ。ダウンロードの分類や HTML のインポートができます。Supports HTTP, FTP, BitTorrent, Metalink, YouTube and Mega.|https://ugetdm.com/|{{Pkg|uget}}}}&lt;br /&gt;
* {{App|Video Downloader|GTK application to download videos from websites like YouTube and many others (based on youtube-dl).|https://github.com/Unrud/video-downloader|{{AUR|video-downloader}}}}&lt;br /&gt;
* {{App|Xtreme Download Manager|Powerful tool to increase download speed up-to 500%. Supports HTTP and FTP. Video grabber works in a general way and is not limited to certain websites.|https://subhra74.github.io/xdm/|{{AUR|xdman}}}}&lt;br /&gt;
* {{App|youtubedl-gui|Simple-to-use graphical interface for youtube-dl.|https://github.com/JaGoLi/ytdl-gui|{{AUR|youtubedl-gui}}}}&lt;br /&gt;
&lt;br /&gt;
==== LAN file transfer ====&lt;br /&gt;
&lt;br /&gt;
See also [[#LAN messengers]].&lt;br /&gt;
&lt;br /&gt;
* {{App|LAN Share|Cross platform local area network file transfer application, built using Qt GUI framework. It can be used to transfer a whole folder, one or more files, large or small immediately without any additional configuration.|https://github.com/abdularis/LAN-Share|{{AUR|lanshare}}}}&lt;br /&gt;
* {{App|NitroShare|Cross-platform network file transfer application, built using Qt GUI framework. It is designed to make transferring files from one device to another on the local network extremely simple.|https://nitroshare.net/|{{Pkg|nitroshare}}}}&lt;br /&gt;
* {{App|Teleport|Native GTK3 app to effortlessly share files on the local network.|https://gitlab.gnome.org/jsparber/teleport|{{AUR|teleport-share-git}}}}&lt;br /&gt;
* {{App|Warpinator|GTK app to share files across the LAN.|https://github.com/linuxmint/warpinator|{{Pkg|warpinator}}}}&lt;br /&gt;
&lt;br /&gt;
==== クラウドストレージサーバー ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Cozy]]|A personal cloud you can hack, host and delete.|https://cozy.io/|{{Pkg|cozy-stack}}}}&lt;br /&gt;
* {{App|[[Nextcloud]]|あなたが管理するハードウェアで集中的にファイルを保存できるクラウドサーバー。|https://nextcloud.com|{{Pkg|nextcloud}}}}&lt;br /&gt;
* {{App|[[Pydio]]|Mature open source web application for file sharing and synchronization.|https://pydio.com/|{{AUR|pydio}}}}&lt;br /&gt;
* {{App|[[Seafile]]|オンラインファイルストレージ・コラボレーションツール with advanced support for file syncing, privacy protection and teamwork.|https://www.seafile.com/|{{AUR|seafile-server}}}}&lt;br /&gt;
&lt;br /&gt;
==== Cloud synchronization clients ====&lt;br /&gt;
&lt;br /&gt;
{{Tip|&amp;lt;nowiki&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
* Some [[同期およびバックアッププログラム]] provide direct support for some cloud-storage services.&lt;br /&gt;
* Some [[FUSE#List of FUSE filesystems|FUSE filesystems]] provide a way to mount cloud-storage as a filesystem. Google Drive can be accessed also by {{Pkg|gvfs-google}} for GVFS-based applications (like [[Nautilus]]), and by {{Pkg|kio-gdrive}} for KIO-based applications (like [[Dolphin]]).&lt;br /&gt;
* See [[保存データ暗号化#クラウドストレージの最適化]] to achieve zero-knowledge (client-side transparent encryption) storage on any third-party cloud service.&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
===== Multi-protocol clients =====&lt;br /&gt;
&lt;br /&gt;
* {{App|CloudCross|Synchronize local files and folders with many cloud providers. Mail.ru Cloud, Yandex Disk, Google Drive, OneDrive and Dropbox support is available.|https://cloudcross.mastersoft24.ru/|{{AUR|cloudcross}}}}&lt;br /&gt;
* {{App|Rclone|Multi-provider sync, copy, and mount client.|https://rclone.org/|{{Pkg|rclone}}}}&lt;br /&gt;
* {{App|Rclone Browser|GUI client for Rclone.|https://github.com/kapitainsky/RcloneBrowser|{{AUR|rclone-browser}}}}&lt;br /&gt;
&lt;br /&gt;
===== Google Drive clients =====&lt;br /&gt;
&lt;br /&gt;
* {{App|drive|Tiny program to pull or push Google Drive files.|https://github.com/odeke-em/drive|{{AUR|drive-bin}}, {{AUR|drive-git}}}}&lt;br /&gt;
* {{App|DriveSync|Command line utility that synchronizes your Google Drive files with a local folder on your machine.|https://github.com/MStadlmeier/drivesync|{{AUR|drivesync}}}}&lt;br /&gt;
* {{App|gdrive|Command line utility for interacting with Google Drive.|https://github.com/prasmussen/gdrive|{{AUR|gdrive}}}}&lt;br /&gt;
* {{App|Grive|Google Drive client with support for new Drive REST API and partial sync.|https://github.com/vitalif/grive2|{{AUR|grive}}}}&lt;br /&gt;
* {{App|[[Insync]]|Unofficial proprietary Google Drive desktop client.|https://www.insynchq.com/|{{AUR|insync}}}}&lt;br /&gt;
* {{App|ODrive|Google Drive GUI based on the [https://electronjs.org/ Electron] platform.|https://github.com/liberodark/ODrive|{{AUR|odrive-bin}}}}&lt;br /&gt;
* {{App|VGrive|GTK-based GUI client (back-end and front-end) for Google Drive made in Vala.|https://github.com/bcedu/VGrive|{{AUR|vgrive}}}}&lt;br /&gt;
&lt;br /&gt;
===== Other synchronization clients =====&lt;br /&gt;
&lt;br /&gt;
* {{App|aws-cli|CLI for Amazon Web Services, including efficient file transfers to and from Amazon S3.|https://aws.amazon.com/cli/|{{Pkg|aws-cli}}}}&lt;br /&gt;
* {{App|Backblaze B2|Backblaze B2 open-source command-line client.|https://www.backblaze.com/b2/cloud-storage.html|{{AUR|backblaze-b2}}}}&lt;br /&gt;
* {{App|Baidu Netdisk|Proprietary client for cloud storage service launched by Baidu (formerly Baidu Cloud).|https://pan.baidu.com|{{AUR|baidunetdisk-bin}}}}&lt;br /&gt;
* {{App|[[Cozy]] Drive|Desktop client for Cozy.|https://cozy-labs.github.io/cozy-desktop/|{{Pkg|cozy-desktop}}}}&lt;br /&gt;
* {{App|[[Dropbox]]|Proprietary desktop client for Dropbox.|https://www.dropbox.com/|{{AUR|dropbox}}}}&lt;br /&gt;
* {{App|hubiC|Proprietary synchronization client service and command line tools for hubiC.|https://hubic.com/en/downloads|{{AUR|hubic}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Mega (service)|Mega]] Sync Client|Proprietary desktop client to sync files with Mega.|https://mega.nz/|{{AUR|megasync}}}}&lt;br /&gt;
* {{App|Megatools|Unofficial CLI for Mega.|https://megatools.megous.com/|{{AUR|megatools}}}}&lt;br /&gt;
* {{App|[[Nextcloud]] Client|Desktop client for Nextcloud.|https://nextcloud.com/|{{Pkg|nextcloud-client}}}}&lt;br /&gt;
* {{App|Nutstore|Proprietary desktop client for Nutstore.|https://www.jianguoyun.com/|{{AUR|nutstore}}}}&lt;br /&gt;
* {{App|OneDrive|Unofficial CLI for [https://onedrive.live.com/about/ OneDrive].|https://github.com/skilion/onedrive|{{AUR|onedrive}}}}&lt;br /&gt;
* {{App|[[Wikipedia:ownCloud|ownCloud]] Desktop Client|Desktop syncing client for ownCloud.|https://owncloud.com/client/|{{Pkg|owncloud-client}}}}&lt;br /&gt;
* {{App|pCloud Drive|Proprietary desktop syncing client for pCloud. Based on the [https://electronjs.org/ Electron] platform.|https://www.pcloud.com/download-free-online-cloud-file-storage.html|{{AUR|pcloud-drive}}}}&lt;br /&gt;
* {{App|[[Pydio]]Sync|Desktop client for Pydio.|https://pydio.com/|{{AUR|pydio-sync}}}}&lt;br /&gt;
* {{App|S3cmd|Unofficial CLI for Amazon S3.|https://s3tools.org/s3cmd|{{Pkg|s3cmd}}}}&lt;br /&gt;
* {{App|[[Seafile]] Client|GUI client for Seafile.|https://www.seafile.com/|{{AUR|seafile-client}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SpiderOak|SpiderOak]] One|Proprietary client for SpiderOak One.|https://spideroak.com/|{{AUR|spideroak-one}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Synology|Synology]] Drive|Proprietary GUI client to sync and share files between a centralized Synology NAS and multiple client computers.|https://www.synology.com/|{{AUR|synology-drive}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tresorit|Tresorit]]|Proprietary desktop syncing client for Tresorit.|https://tresorit.com/download|{{AUR|tresorit}}}}&lt;br /&gt;
* {{App|[[Yandex Disk]]|Proprietary CLI for Yandex Disk.|https://disk.yandex.ru/|{{AUR|yandex-disk}}}}&lt;br /&gt;
&lt;br /&gt;
==== FTP ====&lt;br /&gt;
&lt;br /&gt;
===== FTP クライアント =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of FTP client software]].&lt;br /&gt;
* {{App|[[Wikipedia:FileZilla|FileZilla]]|高速で信頼性のある FTP, FTPS, SFTP クライアント。|https://filezilla-project.org/|{{Pkg|filezilla}}}}&lt;br /&gt;
* {{App|[[Wikipedia:gFTP|gFTP]]|Linux 用のマルチスレッド FTP クライアント。|https://www.gftp.org/|{{Pkg|gftp}}}}&lt;br /&gt;
* {{App|ftp|Simple ftp client provided by GNU Inetutils|https://www.gnu.org/software/inetutils/manual/inetutils.html#ftp-invocation|{{Pkg|inetutils}}}}&lt;br /&gt;
* {{App|ncftp|FTP を実装するフリーのアプリケーションプログラムのセット。|https://www.ncftp.com/|{{Pkg|ncftp}}}}&lt;br /&gt;
* {{App|[[Wikipedia:tnftp|tnftp]]|先進的な機能を持った [[Wikipedia:ja:NetBSD|NetBSD]] 用に開発された FTP クライアント。|http://freshmeat.sourceforge.net/projects/tnftp|{{Pkg|tnftp}}}}&lt;br /&gt;
&lt;br /&gt;
[[Dolphin]], [[GNOME Files]], [[Thunar]] などのファイルマネージャにも FTP 機能はあります。&lt;br /&gt;
&lt;br /&gt;
===== FTP サーバー =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of FTP server software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|bftpd|小さくて、設定しやすい FTP サーバー。|http://bftpd.sourceforge.net/|{{Pkg|bftpd}}}}&lt;br /&gt;
* {{App|ftpd|Simple ftp server provided by GNU Inetutils|https://www.gnu.org/software/inetutils/manual/inetutils.html#ftpd-invocation|{{Pkg|inetutils}}}}&lt;br /&gt;
* {{App|[[ProFTPD|proFTPd]]|セキュアでコンフィグラブルな FTP サーバー。|http://www.proftpd.org/|{{AUR|proftpd}}}}&lt;br /&gt;
* {{App|[[Pure-FTPd]]|フリーの (BSD ライセンス)、セキュアな、品質の高い、標準規格に準拠した FTP サーバー。|https://www.pureftpd.org/project/pure-ftpd/|{{AUR|pure-ftpd}}}}&lt;br /&gt;
* {{App|[[SSH]]|SFTP は高信頼性のデータストリームでファイルアクセス・転送・管理を行うネットワークプロトコルです。|https://www.openssh.com|{{Pkg|openssh}}}}&lt;br /&gt;
* {{App|[[vsftpd]]|UNIX-ライクシステム用の軽量で安定かつセキュアな FTP サーバー。|https://security.appspot.com/vsftpd.html|{{Pkg|vsftpd}}}}&lt;br /&gt;
&lt;br /&gt;
==== BitTorrent クライアント ====&lt;br /&gt;
&lt;br /&gt;
Some [[#Download managers|download managers]] are also able to connect to the BitTorrent network: [[Aria2]], [[Wikipedia:Lftp|LFTP]], FatRat, [[Wikipedia:KGet|KGet]], [[Wikipedia:MLDonkey|MLDonkey]], uGet.&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of BitTorrent clients]].&lt;br /&gt;
&lt;br /&gt;
===== コンソール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Ctorrent|C++ で実装された軽量かつ軽快な BitTorrent クライアント。|https://www.rahul.net/dholmes/ctorrent/|{{AUR|enhanced-ctorrent}}}}&lt;br /&gt;
* {{App|[[Deluge]]|BitTorrent client with multiple user interfaces in a client/server model. This package includes a console client.|https://deluge-torrent.org/|{{Pkg|deluge}}}}&lt;br /&gt;
* {{App|peerflix|Streaming torrent client for node.js.|https://github.com/mafintosh/peerflix|{{AUR|peerflix}}}}&lt;br /&gt;
* {{App|[[rTorrent]]|シンプルで軽量な ncurses BitTorrent クライアント。{{Pkg|libtorrent}} バックエンドが必要です。|https://rakshasa.github.io/rtorrent/|{{Pkg|rtorrent}}}}&lt;br /&gt;
* {{App|[[Transmission]] CLI|シンプルで使いやすい BitTorrent クライアント。デーモン版 and multiple フロントエンドが存在します。This package バックエンド・デーモン・コマンドラインインターフェイス・ウェブ UI インターフェイスを含む|https://transmissionbt.com/|{{Pkg|transmission-cli}}}}&lt;br /&gt;
&lt;br /&gt;
===== グラフィカルインターフェイス =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Deluge]] (GTK interface)|Python using GTK で書かれたユーザーフレンドリーな BitTorrent クライアント。|https://deluge-torrent.org/|{{Pkg|deluge-gtk}}}}&lt;br /&gt;
* {{App|Fragments|Easy to use BitTorrent client for the GNOME desktop environment.|https://gitlab.gnome.org/World/Fragments|{{Pkg|fragments}}}}&lt;br /&gt;
* {{App|[[Wikipedia:FrostWire|FrostWire]]|Easy to use cloud downloader, BitTorrent client and media player.|https://www.frostwire.com/|{{AUR|frostwire}}}}&lt;br /&gt;
* {{App|[[Ktorrent]]|KDE 向けの高機能な BitTorrent クライアント。|https://apps.kde.org/ktorrent/|{{Pkg|ktorrent}}}}&lt;br /&gt;
* {{App|Powder Player|Hybrid between a streaming BitTorrent client and a player. Based on the [https://electronjs.org/ Electron] platform.|https://powder.media/|{{AUR|powder-player-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:qBittorrent|qBittorrent]]|µtorrent に似ているオープンソースの (GPLv2) BitTorrent クライアント with an integrated torrent search engine.|https://www.qbittorrent.org/|{{Pkg|qbittorrent}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tixati|Tixati]]|BitTorrent プロトコルを使用する proprietary P2P クライアント。|https://tixati.com/|{{AUR|tixati}}}}&lt;br /&gt;
* {{App|Torrential|Simple torrent client for elementary OS.|https://github.com/davidmhewitt/torrential|{{Pkg|torrential}}}}&lt;br /&gt;
* {{App|[[Transmission]]|シンプルで使いやすい BitTorrent クライアント。デーモン版 and multiple フロントエンドが存在します。|https://transmissionbt.com/|GTK: {{Pkg|transmission-gtk}}, Qt: {{Pkg|transmission-qt}}}}&lt;br /&gt;
* {{App|[[Transmission]] Remote|GTK client for remote management of the Transmission BitTorrent client, using its HTTP RPC protocol.|https://github.com/transmission-remote-gtk/transmission-remote-gtk|{{Pkg|transmission-remote-gtk}}}}&lt;br /&gt;
* {{App|Tremotesf|Qt client for remote management of the Transmission BitTorrent client, using its HTTP RPC protocol.|https://github.com/equeim/tremotesf2|{{AUR|tremotesf}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tribler|Tribler]]|第4世代ファイル共有システム型 bittorrent クライアント。|https://www.tribler.org|{{AUR|tribler}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Vuze|Vuze]]|Java で書かれた高機能な BitTorrent クライアント (旧名 Azureus)。|https://www.vuze.com/|{{AUR|vuze}}}}&lt;br /&gt;
* {{App|WebTorrent Desktop|Streaming BitTorrent application. Based on the [https://electronjs.org/ Electron] platform.|https://webtorrent.io/desktop/|{{AUR|webtorrent-desktop}}}}&lt;br /&gt;
&lt;br /&gt;
==== 他の P2P ネットワーク ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of file-sharing applications]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[aMule]]|有名な eDonkey/Kad クライアント。デーモン版、GTK、ウェブ、CLI フロントエンド。|https://www.amule.org/|{{Pkg|amule}}}}&lt;br /&gt;
* {{App|EiskaltDC++|Direct Connect and ADC client.|https://github.com/eiskaltdcpp/eiskaltdcpp|GTK: {{AUR|eiskaltdcpp-gtk}}, Qt: {{AUR|eiskaltdcpp-qt}}}}&lt;br /&gt;
* {{App|[[Wikipedia:gtk-gnutella|gtk-gnutella]]|GTK server/client for the Gnutella peer-to-peer network.|http://gtk-gnutella.sourceforge.net/|{{AUR|gtk-gnutella}}}}&lt;br /&gt;
* {{App|KaMule|aMule の KDE グラフィカルフロントエンド。|https://www.linux-apps.com/content/show.php?content&amp;amp;#61;150270|{{AUR|kamule}}}}&lt;br /&gt;
* {{App|LBRY|Browser and wallet for LBRY, the decentralized, user-controlled content marketplace. Based on the [https://electronjs.org/ Electron] platform.|https://lbry.io/|{{AUR|lbry-app-bin}}}}&lt;br /&gt;
* {{App|lbt|Small set of command-line tools for LBRY.|https://gitlab.com/gardenappl/lbt|{{AUR|lbt}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MLDonkey|MLDonkey]]|Multi-protocol P2P client that supports HTTP, FTP, BitTorrent, Direct Connect, eDonkey and FastTrack.|http://mldonkey.sourceforge.net/|{{AUR|mldonkey}}}}&lt;br /&gt;
* {{App|ncdc|Modern and lightweight Direct Connect and ADC client with a friendly ncurses interface.|https://dev.yorhel.nl/ncdc|{{AUR|ncdc}}}}&lt;br /&gt;
* {{App|Nicotine+|A graphical client for the Soulseek P2P network.|https://github.com/Nicotine-Plus/nicotine-plus|{{Pkg|nicotine+}}}}&lt;br /&gt;
* {{App|Send Anywhere|Proprietary file sharing service where users can directly share digital content in real time. Based on the [https://electronjs.org/ Electron] platform.|https://send-anywhere.com/|{{AUR|sendanywhere}}}}&lt;br /&gt;
* {{App|Valknut|Direct Connect client (like DC++) with segmented downloading.|http://wxdcgui.sourceforge.net/|{{AUR|valknut}}}}&lt;br /&gt;
&lt;br /&gt;
==== Pastebin services ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Pastebin]].&lt;br /&gt;
&lt;br /&gt;
Pastebin services are often used to quote text or images while collaborating and troubleshooting. Pastebin クライアントを使えば、cli から投稿することができるようになります。&lt;br /&gt;
{{Note|An acceptable pastebin service does not require enabling JavaScript for viewing, does not display adverts, manipulate the pasted content or require a login.&lt;br /&gt;
[https://pastebin.com/ pastebin.com] is blocked for some people because of malware found on the site and has a history of annoying issues (requires JavaScript, displays adverts, inserts CRLF line-endings and displaying CAPTCHAs at random). Do &#039;&#039;&#039;not&#039;&#039;&#039; use it.}}&lt;br /&gt;
===== Without a dedicated client =====&lt;br /&gt;
Some services can be used with more general command line tool, such as [[CURL]]. For extensions, such as line numbers, one can use more command line tools. Such as {{ic|cat -n}}.&lt;br /&gt;
&lt;br /&gt;
* [http://ix.io/ ix.io]. Usage examples are:&lt;br /&gt;
: {{bc|&#039;&#039;command&#039;&#039; &amp;lt;nowiki&amp;gt;|&amp;amp; curl -F &#039;f:1=&amp;lt;-&#039; ix.io &amp;lt;/nowiki&amp;gt;}} or upload a file: {{bc|&amp;lt;nowiki&amp;gt;curl -F &#039;f:1=&amp;lt;-&#039; ix.io &amp;lt; &amp;lt;/nowiki&amp;gt;&#039;&#039;file&#039;&#039;}}&lt;br /&gt;
*[http://sprunge.us/ sprunge.us] has a similar service, and also offers a plain HTML form. Usage examples are:&lt;br /&gt;
:{{bc|&#039;&#039;command&#039;&#039; &amp;lt;nowiki&amp;gt;|&amp;amp; curl -F &#039;sprunge=&amp;lt;-&#039; sprunge.us &amp;lt;/nowiki&amp;gt;}} or upload a file: {{bc|&amp;lt;nowiki&amp;gt;curl -F &#039;sprunge=&amp;lt;-&#039; sprunge.us &amp;lt; &amp;lt;/nowiki&amp;gt;&#039;&#039;file&#039;&#039;}}&lt;br /&gt;
:Note that you can append {{ic|?&amp;lt;lang&amp;gt;}} to the returned URL to get syntax highlighting for {{ic|&amp;lt;lang&amp;gt;}} (e.g. {{ic|&amp;lt;nowiki&amp;gt;http://sprunge.us/xxxxxx?bash&amp;lt;/nowiki&amp;gt;}} for a bash configuration file or script).&lt;br /&gt;
:As of December 2021, it also seems that sprunge.us accepts longer input than ix.io.&lt;br /&gt;
*[https://termbin.com termbin.com] works with [[nc]].&lt;br /&gt;
&lt;br /&gt;
===== Dedicated clients =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Elmer|wgetpaste や curlpaste に似ている pastebin クライアント。Perl で書かれており usable with wget or curl. サーバー: [http://codepad.org/ codepad.org], [http://rafb.me/ rafb.me], [http://sprunge.us/ sprunge.us].|https://github.com/sudokode/elmer|{{AUR|elmer}}}}&lt;br /&gt;
* {{App|Fb-client|https://paste.xinu.at/ paste.xinu.at] pastebin のクライアント。|https://paste.xinu.at|{{Pkg|fb-client}}}}&lt;br /&gt;
* {{App|Gist|[https://gist.github.com/ gist.github.com] pastebin サービスのコマンドライン用インターフェース。|https://github.com/defunkt/gist|{{Pkg|gist}}}}&lt;br /&gt;
* {{App|imgur|[https://imgur.com imgur.com] 画像共有サービスに画像をアップロードできる CLI クライアント。|https://github.com/tremby/imgur.sh|{{AUR|imgur.sh}}}}&lt;br /&gt;
* {{App|Ix|ix.io pastebin のクライアント。|http://ix.io|{{AUR|ix}}}}&lt;br /&gt;
* {{App|Pastebinit|Pastebin クライアントとして動く小さな Python スクリプト。サーバー: [http://pastie.org/ pastie.org], [https://paste.kde.org/ paste.kde.org], [https://paste.debian.net/ paste.debian.net], [https://paste.ubuntu.com/ paste.ubuntu.com] など (全てのリストは {{ic|pastebinit -l}} を見てください)。|https://launchpad.net/pastebinit|{{Pkg|pastebinit}}}}&lt;br /&gt;
* {{App|ruby-haste|[https://hastebin.com/ hastebin.com] のクライアント。|https://github.com/seejohnrun/haste-client|{{AUR|ruby-haste}}}}&lt;br /&gt;
* {{App|Uppity|無愛想な pastebin クライアント。|https://github.com/Kiwi/Uppity|{{AUR|uppity-git}}}}&lt;br /&gt;
* {{App|Wgetpaste|多くの pastebin サービスへの投稿を自動化する bash スクリプト。サーバー: [http://pastebin.ca/ pastebin.ca], [http://codepad.org/ codepad.org], [https://dpaste.com/ dpaste.com] and [https://pastebin.osuosl.org/ pastebin.osuosl.org].|http://wgetpaste.zlin.dk/|{{Pkg|wgetpaste}}}}&lt;br /&gt;
&lt;br /&gt;
=== コミュニケーション ===&lt;br /&gt;
&lt;br /&gt;
==== 電子メールクライアント ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of email clients]]&lt;br /&gt;
&lt;br /&gt;
===== コンソール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[aerc]]|Work in progress asynchronous email client.|https://git.sr.ht/~sircmpwn/aerc|{{Pkg|aerc}}}}&lt;br /&gt;
* {{App|alot|[https://notmuchmail.org/ notmuch mail] ベースの実験的なターミナル MUA。[http://urwid.org/ urwid] ツールキットを使って python で書かれています。|https://github.com/pazz/alot|{{Pkg|alot}}}}&lt;br /&gt;
* {{App|[[Alpine]]|[[Wikipedia:Pine (email client)|Pine]] ベースの高速で使いやすい Apache ライセンスのメールクライアント。|https://alpine.x10host.com/|{{AUR|alpine-git}}}}&lt;br /&gt;
* {{App|[[S-nail]]|&#039;&#039;ed&#039;&#039; のようなコマンド構文で使えるメール処理システム。[[Wikipedia:mailx|mailx]] の機能を提供します。|https://www.sdaoden.eu/code.html#s-mailx|{{Pkg|s-nail}}}}&lt;br /&gt;
* {{App|mu/mu4e|メールインデックス作成プログラム (mu) と emacs 用のクライアント (mu4e)。Xapian による高速検索が使えます。|https://www.djcbsoftware.nl/code/mu/mu4e.html|{{AUR|mu}}}}&lt;br /&gt;
* {{App|[[Mutt]]|小さいがパワフルなテキストベースのメールクライアント。|http://www.mutt.org/|{{Pkg|mutt}}}}&lt;br /&gt;
* {{App|[[Mutt#NeoMutt|NeoMutt]]|Command line mail reader (or MUA). It&#039;s a fork of Mutt with added features.|https://neomutt.org/|{{Pkg|neomutt}}}}&lt;br /&gt;
* {{App|[[nmh]]|モジュール式のメール管理システム。|https://www.nongnu.org/nmh/|{{AUR|nmh}}}}&lt;br /&gt;
* {{App|[[notmuch]]|&#039;&#039;xapian&#039;&#039; 上で動作する高速なメールインデクサ。|https://notmuchmail.org/|{{Pkg|notmuch}}}}&lt;br /&gt;
* {{App|sendemail|A lightweight command line SMTP email client written in Perl.|http://caspian.dotconf.net/menu/Software/SendEmail/|{{AUR|sendemail}}}}&lt;br /&gt;
* {{App|[[Sup]]|非常に高速な検索、タグ付け、スレッディング、GMail ライクな操作ができる CLI メールクライアント。|https://sup-heliotrope.github.io/|{{AUR|sup}}}}&lt;br /&gt;
* {{App|swaks|Swiss Army Knife SMTP; Command line SMTP testing, including TLS and AUTH, can be used to send emails.|https://jetmore.org/john/code/swaks/|{{Pkg|swaks}}}}&lt;br /&gt;
* {{App|Wanderlust|Emacs 用のメールクライアント・ニュースリーダー。|http://www.gohome.org/wl/|{{Pkg|wanderlust}}}}&lt;br /&gt;
&lt;br /&gt;
===== グラフィカル =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Balsa|Gnome プロジェクトのシンプルで軽量な電子メールクライアント。|https://pawsa.fedorapeople.org/balsa/|{{Pkg|balsa}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Claws Mail|Claws Mail]]|軽量な GTK ベースの電子メールクライアント・ニュースリーダー。|https://www.claws-mail.org/|{{Pkg|claws-mail}}}}&lt;br /&gt;
* {{App|ElectronMail|Unofficial desktop app for several end-to-end encrypted email providers (like ProtonMail, Tutanota). Based on the [https://electronjs.org/ Electron] platform.|https://github.com/vladimiry/ElectronMail|{{AUR|electronmail-bin}}}}&lt;br /&gt;
* {{App|[[Evolution]]|成熟した高機能な電子メールクライアント that is part of the GNOME project. Part of {{Grp|gnome-extra}}.|https://wiki.gnome.org/Apps/Evolution|{{Pkg|evolution}}}}&lt;br /&gt;
* {{App|Geary|[[Wikipedia:ja:Vala|Vala]] で作られたシンプルなデスクトップメールクライアント。|https://wiki.gnome.org/Apps/Geary|{{Pkg|geary}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Kmail|Kmail]]|成熟した高機能な電子メールクライアント。Part of {{Grp|kdepim}}{{Broken package link|package not found}}.|https://kontact.kde.org/components/kmail.html|{{Pkg|kmail}}}}&lt;br /&gt;
* {{App|Kube|Modern communication and collaboration client built with QtQuick.|https://kube-project.com/|{{Pkg|kube}}}}&lt;br /&gt;
* {{App|Mailspring|Fork of [[Wikipedia:Nylas Mail|Nylas Mail]] by one of the original authors. The paid &amp;quot;Pro&amp;quot; version requires a Mailspring ID and has extra features like snooze, send later. Based on the [https://electronjs.org/ Electron] platform.|https://getmailspring.com/|{{AUR|mailspring}}}}&lt;br /&gt;
* {{App|openWMail|Gmail &amp;amp; Google Inbox 用のデスクトップクライアント。Based on the [https://electronjs.org/ Electron] platform.|https://openwmail.github.io/|{{AUR|openwmail}}}}&lt;br /&gt;
* {{App|[[Wikipedia:SeaMonkey#Mail|SeaMonkey Mail &amp;amp; Newsgroups]]|SeaMonkey スイートに含まれているメールクライアント。|https://www.seamonkey-project.org/|{{Pkg|seamonkey}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Sylpheed|Sylpheed]]|軽量でユーザーフレンドリーな GTK 電子メールクライアント。|https://sylpheed.sraoss.jp/en/|{{Pkg|sylpheed}}}}&lt;br /&gt;
* {{App|[[Thunderbird]]|Mozilla によって開発されている、GTK で書かれた高機能な電子メールクライアント。|https://www.thunderbird.net/|{{Pkg|thunderbird}}}}&lt;br /&gt;
* {{App|Trojitá|Qt IMAP 電子メールクライアント。Only supports [https://bugs.kde.org/show_bug.cgi?id&amp;amp;#61;321374 one IMAP account].|http://trojita.flaska.net/|{{Pkg|trojita}}}}&lt;br /&gt;
* {{App|Tutanota|Email client for Tutanota mail service. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/tutao/tutanota|{{AUR|tutanota-desktop}}}}&lt;br /&gt;
* {{App|Viagee|It allows desktop mail actions, such as &#039;Send File as Email&#039; or web &#039;mailto&#039; links, to be handled by the Gmail web client.|https://davesteele.github.io/viagee/|{{AUR|viagee}}}}&lt;br /&gt;
&lt;br /&gt;
===== Web-based =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Mailpile|Mailpile]]|A modern, fast web-mail client with user-friendly encryption and privacy features.|https://www.mailpile.is/|{{AUR|mailpile}}}}&lt;br /&gt;
* {{App|[[Nextcloud]] Mail|An email webapp for NextCloud.|https://github.com/nextcloud/mail|{{Pkg|nextcloud-app-mail}}}}&lt;br /&gt;
* {{App|Roundcubemail|ネイティブなアプリケーションのようなインターフェイスがある、ブラウザベースの多言語 IMAP クライアント。|https://roundcube.net/|{{Pkg|roundcubemail}}}}&lt;br /&gt;
* {{App|[[Squirrelmail|SquirrelMail]]|Webmail for Nuts!|https://squirrelmail.org/|{{AUR|squirrelmail}}}}&lt;br /&gt;
&lt;br /&gt;
==== Mail notifiers ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Ayatana Webmail|Webmail notifications and actions for any desktop.|https://tari.in/www/software/ayatana-webmail/|{{AUR|ayatana-webmail}}}}&lt;br /&gt;
* {{App|Bubblemail|New and Unread mail notification service for local mailboxes, pop, imap, and gnome online accounts. A fork of Mailnag.|http://bubblemail.free.fr/|{{AUR|bubblemail}}}}&lt;br /&gt;
* {{App|CheckMails|System tray unread mail checker using IMAP protocol.|https://github.com/j4321/CheckMails|{{AUR|checkmails}}}}&lt;br /&gt;
* {{App|Gnubiff|Mail notification program that checks for mail and displays headers when new mail has arrived.|http://gnubiff.sourceforge.net/|{{Pkg|gnubiff}}}}&lt;br /&gt;
* {{App|Mailnag|Extensible mail notification daemon.|https://github.com/pulb/mailnag|{{Pkg|mailnag}}}}&lt;br /&gt;
* {{App|QGmailNotifier|Portable Qt5 based GMail notifier.|https://github.com/eteran/qgmailnotifier|{{AUR|qgmailnotifier}}}}&lt;br /&gt;
&lt;br /&gt;
==== メールサーバー ====&lt;br /&gt;
&lt;br /&gt;
See [[メールサーバー]].&lt;br /&gt;
&lt;br /&gt;
* {{App|DavMail|POP/IMAP/SMTP/Caldav/Carddav/LDAP exchange gateway allowing users to use any mail/calendar client with an Exchange server.|http://davmail.sourceforge.net/|{{AUR|davmail}}}}&lt;br /&gt;
* {{App|Modoboa|A modular mail hosting and management platform, written in Python.|https://modoboa.org/|{{AUR|modoboa}}}}&lt;br /&gt;
&lt;br /&gt;
==== Mail retrieval agents ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Mail retrieval agent]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[fdm]]|Program to fetch and deliver mail.|https://github.com/nicm/fdm|{{Pkg|fdm}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Fetchmail|Fetchmail]]|A remote-mail retrieval utility.|https://www.fetchmail.info/|{{Pkg|fetchmail}}}}&lt;br /&gt;
* {{App|[[getmail]]|A POP3/IMAP4 mail retriever with reliable Maildir and command delivery.|http://pyropus.ca/software/getmail/|{{AUR|getmail}}}}&lt;br /&gt;
* {{App|hydroxide|A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge|https://github.com/emersion/hydroxide|{{AUR|hydroxide}}}}&lt;br /&gt;
* {{App|imapsync|IMAP synchronisation, sync, copy or migration tool|https://imapsync.lamiral.info/|{{Pkg|imapsync}}}}&lt;br /&gt;
* {{App|[[isync]]|IMAP and MailDir mailbox synchronizer|http://isync.sourceforge.net/|{{Pkg|isync}}}}&lt;br /&gt;
* {{App|mpop|A small, fast POP3 client suitable as a fetchmail replacement|https://marlam.de/mpop/|{{Pkg|mpop}}}}&lt;br /&gt;
* {{App|[[OfflineIMAP]]|Synchronizes emails between two repositories.|https://www.offlineimap.org/|{{Pkg|offlineimap}}}}&lt;br /&gt;
&lt;br /&gt;
==== インスタントメッセージクライアント ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of instant messaging clients]] and [[Wikipedia:Comparison of VoIP software]].&lt;br /&gt;
&lt;br /&gt;
このセクションでは[[Wikipedia:ja:インスタントメッセージ|インスタントメッセージ]]をサポートしている全てのソフトウェアを並べています。&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;
====== コンソール ======&lt;br /&gt;
&lt;br /&gt;
* {{App|BarnOwl|ncurses ベースのチャットクライアント。Zephyr, XMPP, IRC, Twitter プロトコルをサポート。|https://barnowl.mit.edu/|{{AUR|barnowl}}}}&lt;br /&gt;
* {{App|[[Bitlbee|BitlBee]]|人気のあるチャットネットワーク (XMPP, ICQ, Twitter) に接続できる IRC クライアント。|https://bitlbee.org/|{{AUR|bitlbee}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Centericq|CenterIM]]|テキストモードメニューとウィンドウドリブンな IM インターフェースを持つ。Supports most of widely used IM protocols, including ICQ, IRC, XMPP.|http://centerim.org/|{{AUR|centerim}}}}&lt;br /&gt;
* {{App|EKG2|Ncurses based XMPP, Gadu-Gadu, ICQ and IRC client.|https://github.com/ekg2/ekg2|{{AUR|ekg2}}}}&lt;br /&gt;
* {{App|Finch|libpurple を使っている ncurses ベースのチャットクライアント and supports all its protocols (Bonjour, Gadu-Gadu, Groupwise, ICQ, IRC, SIMPLE, XMPP, Zephyr).|https://developer.pidgin.im/wiki/Using%20Finch|{{Pkg|finch}}}}&lt;br /&gt;
* {{App|[[WeeChat]]|モジュール式で軽量な ncurses ベース IRC クライアント。A variety of other protocols are supported through plugins.|https://weechat.org/|{{Pkg|weechat}}}}&lt;br /&gt;
&lt;br /&gt;
====== グラフィカル ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Jitsi|Jitsi]]|Java で書かれたオーディオ・ビデオ VoIP 電話とインスタントメッセンジャー that supports protocols such as SIP, XMPP, ICQ, IRC and many other useful features.|https://jitsi.org/|{{AUR|jitsi}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Kopete|Kopete]]|Bonjour, Gadu-Gadu, GroupWise, ICQ, XMPP などをサポートしているユーザーフレンドリーな IM。|https://apps.kde.org/kopete/|{{Pkg|kopete}}}}&lt;br /&gt;
* {{App|[[KDE#KDE Telepathy|KDE Telepathy]]|[[Wikipedia:ja:Telepathy|Telepathy]] フレームワークを使っている KDE のインスタントメッセージクライアント。Kopete に代わるものとして開発されました。|https://userbase.kde.org/Telepathy|{{Pkg|telepathy-kde-meta}}}}&lt;br /&gt;
* {{App|Lith|WeeChat Relay client, allowing to connect to a running WeeChat instance from anywhere.|https://lith.app/|{{AUR|lith-git}}}}&lt;br /&gt;
* {{App|[[Pidgin]]|マルチプロトコル・インスタントメッセージクライアント with audio support that uses libpurple and supports all its protocols (Bonjour, Gadu-Gadu, Groupwise, ICQ, IRC, SIMPLE, XMPP, Zephyr).|https://pidgin.im/|{{Pkg|pidgin}}}}&lt;br /&gt;
* {{App|qutIM|シンプルでユーザーフレンドリーな IM。ICQ, XMPP, Mail.Ru, IRC, VKontakte をサポート。|https://qutim.org/|{{AUR|qutim}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Smuxi|Smuxi]]|クロスプラットフォーム IRC クライアント that also supports Twitter and XMPP. |https://smuxi.im/|{{AUR|smuxi}}}}&lt;br /&gt;
* {{App|[[Thunderbird]]|Feature-rich email client supports instant messaging and chat using IRC and XMPP.|https://www.thunderbird.net/|{{Pkg|thunderbird}}}}&lt;br /&gt;
* {{App|Volt|Proprietary native desktop client for Skype, Telegram, Slack, XMPP, Discord, IRC and more. |https://volt-app.com/|{{AUR|volt}}}}&lt;br /&gt;
&lt;br /&gt;
===== IRC クライアント =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of Internet Relay Chat clients]].&lt;br /&gt;
&lt;br /&gt;
====== コンソール ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:BitchX|BitchX]]|人気の [[Wikipedia:ircII|ircII]] から開発されたコンソールベースの IRC クライアント。|http://www.bitchx.org/|{{AUR|bitchx-git}}}}&lt;br /&gt;
* {{App|ERC|パワフルな、モジュール式の、拡張性のある [[Emacs]] 用 IRC クライアント。|https://savannah.gnu.org/projects/erc/|included with {{Pkg|emacs}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Ii (IRC client)|ii]]|フェザー級の IRC クライアント。文字通り {{ic|tail -f}} で会話して {{ic|echo}} で返事をファイルに出力する。|https://tools.suckless.org/ii/|{{AUR|ii}}}}&lt;br /&gt;
* {{App|ircii|Oldest maintained IRC client which lays claim to being small and fast owing to its reduced feature set.|http://www.eterna.com.au/ircii/|{{AUR|ircii}}}}&lt;br /&gt;
* {{App|[[Irssi]]|細かく設定ができる ncurses ベースの IRC クライアント。|https://irssi.org/|{{Pkg|irssi}}}}&lt;br /&gt;
* {{App|pork|プログラマブルで、ncurses ベースの IRC クライアント。ircII と雰囲気が似ています。|http://dev.ojnk.net/|{{Pkg|pork}}}}&lt;br /&gt;
* {{App|ScrollZ|[[Wikipedia:ircII|ircII]] がベースの先進的な IRC クライアント。|https://www.scrollz.info/|{{AUR|scrollz}}}}&lt;br /&gt;
* {{App|sic|[[Wikipedia:Ii (IRC client)|ii]] に似た極端にシンプルな IRC クライアント。|https://tools.suckless.org/sic/|{{AUR|sic}}}}&lt;br /&gt;
* {{App|tiny|an IRC client written in Rust with a clutter-free interface|https://github.com/osa1/tiny|{{AUR|tiny-irc-client-git}}}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Comparison&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
! Name !! Package !! Written in !! Extensible !! [[Wikipedia:Simple Authentication and Security Layer|SASL]]&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:BitchX|BitchX]]&lt;br /&gt;
| {{AUR|bitchx-git}} || C || {{C|?}} || {{C|?}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://savannah.gnu.org/projects/erc/ ERC]&lt;br /&gt;
| {{Pkg|emacs}} || ELisp || {{G|in ELisp}} || {{Y|[https://www.emacswiki.org/emacs/ErcSASL via script]}}&lt;br /&gt;
|-&lt;br /&gt;
! [[Wikipedia:Ii (IRC client)|ii]]&lt;br /&gt;
| {{AUR|ii}} || C || {{G|stdin/stdout}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! [[Irssi]]&lt;br /&gt;
| {{Pkg|irssi}} || C || {{G|in Perl}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
! [http://dev.ojnk.net/ pork]&lt;br /&gt;
| {{Pkg|pork}} || C || {{G|in Perl}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://www.scrollz.info/ ScrollZ]&lt;br /&gt;
| {{AUR|scrollz}} || C || {{C|?}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://tools.suckless.org/sic/ sic]&lt;br /&gt;
| {{AUR|sic}} || C || {{G|stdin/stdout}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! [https://github.com/osa1/tiny tiny]&lt;br /&gt;
| {{AUR|tiny-irc-client-git}} || Rust || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
! [[WeeChat]]&lt;br /&gt;
| {{Pkg|weechat}} || C || {{G|[https://weechat.org/files/doc/stable/weechat_scripting.en.html multiple languages]}} || {{Yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====== グラフィカル ======&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:ChatZilla|ChatZilla]]|Clean, easy to use and highly extensible Internet Relay Chat (IRC) client, built on the Mozilla platform using [[Wikipedia:XULRunner|XULRunner]]. Included in the [[Wikipedia:SeaMonkey|SeaMonkey]] suite.|http://chatzilla.hacksrus.com/|{{Pkg|seamonkey}}}}&lt;br /&gt;
* {{App|[[HexChat]]|XChat フォーク。Linux と Windows に対応。|https://hexchat.github.io/|{{Pkg|hexchat}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Konversation|Konversation]]|KDE デスクトップ向け Qt ベースの IRC クライアント。|https://konversation.kde.org/|{{Pkg|konversation}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KVIrc|KVIrc]]|テーマをサポートしている Qt ベースの IRC クライアント。|http://kvirc.net/|{{Pkg|kvirc}}}}&lt;br /&gt;
* {{App|Loqui|GTK IRC クライアント。|https://loqui.sunnyone.org/|{{AUR|loqui}}}}&lt;br /&gt;
* {{App|LostIRC|タブ自動補完、マルチサーバーサポート, logging などが特徴のシンプルな GTK IRC クライアント。|http://lostirc.sourceforge.net|{{AUR|lostirc}}}}&lt;br /&gt;
* {{App|Polari|GNOME プロジェクトによるシンプルな IRC クライアント。|https://wiki.gnome.org/Apps/Polari|{{Pkg|polari}}}}&lt;br /&gt;
* {{App|[[Quassel]]|近代的で、クロスプラットフォームの、分散型 IRC クライアント。|https://quassel-irc.org/|KDE: {{Pkg|quassel-monolithic}}, Qt: {{Pkg|quassel-monolithic-qt}}}}&lt;br /&gt;
* {{App|Srain|Modern, beautiful IRC client written in GTK 3.|https://srain.im/|{{AUR|srain}}}}&lt;br /&gt;
&lt;br /&gt;
===== XMPP クライアント =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:XMPP]] and [[Wikipedia:Comparison of instant messaging clients#XMPP-related features]].&lt;br /&gt;
&lt;br /&gt;
====== コンソール ======&lt;br /&gt;
&lt;br /&gt;
* {{App|Freetalk|コンソールベースの XMPP クライアント。|https://www.gnu.org/software/freetalk/|{{AUR|freetalk}}}}&lt;br /&gt;
* {{App|jabber.el|[[Emacs]] 用の最小 Jabber クライアント。|http://emacs-jabber.sourceforge.net/|{{AUR|emacs-jabber}}}}&lt;br /&gt;
* {{App|jp (Salut à Toi)|Salut à Toi 用の CLI フロントエンド、多目的 XMPP クライアント。|https://salut-a-toi.org/|{{AUR|sat-jp}}}}&lt;br /&gt;
* {{App|[[Wikipedia:MCabber|MCabber]]|小さな XMPP クライアント。機能: SSL, PGP, MUC, OTR, UTF8.|https://mcabber.com/|{{Pkg|mcabber}}}}&lt;br /&gt;
* {{App|Poezio|IRC のような使い心地の XMPP クライアント。|https://poez.io/|{{AUR|poezio}}}}&lt;br /&gt;
* {{App|Primitivus (Salut à Toi)|Salut à Toi 用のコンソールフロントエンド、多目的 XMPP クライアント。|https://salut-a-toi.org/|{{AUR|sat-primitivus}}}}&lt;br /&gt;
* {{App|Profanity|Irssi からインスパイアされたコンソールベースの XMPP クライアント。|https://profanity-im.github.io/|{{Pkg|profanity}}}}&lt;br /&gt;
* {{App|xmpp-client|OTR に対応するミニマルな XMPP クライアント。|https://github.com/agl/xmpp-client|{{AUR|go-xmpp-client}}{{Broken package link|package not found}}}}&lt;br /&gt;
&lt;br /&gt;
====== グラフィカル ======&lt;br /&gt;
&lt;br /&gt;
* {{App|Cagou (Salut à Toi)|Desktop/mobiles frontend for Salut à Toi, multi-purpose XMPP client|https://salut-a-toi.org/|{{AUR|sat-cagou-hg}}}}&lt;br /&gt;
* {{App|Converse.js|Web-based XMPP chat client written in JavaScript.|https://conversejs.org/|{{AUR|conversejs-git}}}}&lt;br /&gt;
* {{App|Dino|A modern, easy to use XMPP client, with PGP and OMEMO support.|https://dino.im/|{{Pkg|dino}}}}&lt;br /&gt;
* {{App|[[Gajim]]|XMPP client with audio support written in Python using GTK.|https://gajim.org/|{{Pkg|gajim}}}}&lt;br /&gt;
* {{App|Kaidan|A simple, user-friendly Jabber/XMPP client providing a modern user interface using Kirigami and QtQuick.|https://www.kaidan.im/|{{AUR|kaidan}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Kadu (software)|Kadu]]|Qt-based XMPP and Gadu-Gadu client.|http://www.kadu.im/|{{AUR|kadu}}}}&lt;br /&gt;
* {{App|Libervia (Salut à Toi)|Web frontend for Salut à Toi, multi-purpose XMPP client|https://salut-a-toi.org/|{{AUR|sat-libervia-hg}}}}&lt;br /&gt;
* {{App|Nextcloud JavaScript XMPP Client|Chat app for Nextcloud with XMPP, end-to-end encryption, video calls, file transfer &amp;amp; group chat.|https://github.com/nextcloud/jsxc.nextcloud|{{AUR|nextcloud-app-jsxc}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Psi (instant messaging client)|Psi]]|Qt ベースの XMPP クライアント。|https://psi-im.org/|{{Pkg|psi}} or {{Pkg|psi-nowebengine}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Spark (XMPP client)|Spark]]|Cross-platform real-time XMPP collaboration client optimized for business and organizations.|https://www.igniterealtime.org/projects/spark/|{{AUR|spark}}}}&lt;br /&gt;
* {{App|Swift|XMPP client written in C++ with Qt and Swiften.|https://swift.im/|{{Pkg|swift-im}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Tkabber|Tkabber]]|Easy to hack ejabberd XMPP サーバーの作者による機能豊富な XMPP クライアント。|http://tkabber.jabber.ru/|{{AUR|tkabber}}}}&lt;br /&gt;
* {{App|Vacuum IM|Full-featured crossplatform XMPP client.|https://github.com/Vacuum-IM/vacuum-im|{{AUR|vacuum-im}}}}&lt;br /&gt;
&lt;br /&gt;
===== SIP clients =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of SIP software#Clients]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Blink (SIP client)|Blink]]|最新の使いやすい SIP クライアント。|https://icanblink.com/|{{AUR|blink}}}}&lt;br /&gt;
* {{App|[[Jami]]|SIP-compatible softphone and instant messenger for the decentralized Jami network. Formerly known as Ring and SFLphone.|https://jami.net/|{{Pkg|jami-gnome}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Linphone|Linphone]]|インターネットを通じて自由に音声、ビデオ、テキストメッセージでコミュニケーションできる VoIP フォンアプリケーション (SIP client)。|https://www.linphone.org/|{{AUR|linphone-desktop}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Twinkle (software)|Twinkle]]|SIP を使った VoIP や IM コミュニケーションの Qt ソフトフォン。|http://twinkle.dolezel.info/|{{AUR|twinkle}}}}&lt;br /&gt;
* {{App|Zoiper|Proprietary SIP and IAX2 VoIP softphone|https://zoiper.com|{{AUR|zoiper}}}}&lt;br /&gt;
&lt;br /&gt;
===== Matrix clients =====&lt;br /&gt;
&lt;br /&gt;
See also [[Matrix]] and [https://matrix.org/clients/ Matrix Clients].&lt;br /&gt;
&lt;br /&gt;
* {{App|Element|Glossy Matrix client with an emphasis on performance and usability. Web application and desktop application based on the [https://electronjs.org/ Electron] platform.|https://element.io/|{{Pkg|element-web}}, {{Pkg|element-desktop}}}}&lt;br /&gt;
* {{App|FluffyChat|Multi-platform Matrix client with a simple and clean UI written in Dart/Flutter.|https://fluffychat.im/|{{AUR|fluffychat}}}}&lt;br /&gt;
* {{App|Fractal|Matrix client for GNOME written in Rust.|https://wiki.gnome.org/Apps/Fractal|{{Pkg|fractal}}}}&lt;br /&gt;
* {{App|Gomuks|Terminal Matrix client written in Go using [https://github.com/tulir/mautrix-go mautrix] and [https://github.com/tulir/mauview mauview].|https://maunium.net/go/gomuks|{{AUR|gomuks}}}}&lt;br /&gt;
* {{App|Mirage|A fancy, customizable, keyboard-operable Matrix chat client for encrypted and decentralized communication. Written in Qt/QML + Python with nio, currently in alpha.|https://github.com/mirukana/mirage|{{AUR|matrix-mirage}}, {{AUR|matrix-mirage-git}}}}&lt;br /&gt;
* {{App|Neochat|KDE client for the Matrix protocol.|https://apps.kde.org/neochat/|{{Pkg|neochat}}}}&lt;br /&gt;
* {{App|nheko|Desktop client for the Matrix protocol.|https://github.com/Nheko-Reborn/nheko|{{AUR|nheko}}, {{AUR|nheko-git}}}}&lt;br /&gt;
* {{App|Quaternion|Qt5-based IM client for the Matrix protocol.|https://github.com/QMatrixClient/Quaternion|{{AUR|quaternion}}}}&lt;br /&gt;
* {{App|SchildiChat|Matrix client based on Element with a more traditional instant messaging experience. Based on the [https://electronjs.org/ Electron] platform.|https://schildi.chat/|{{AUR|schildichat-desktop-bin}}}}&lt;br /&gt;
* {{App|Spectral|Qt5-based Glossy cross-platform client for Matrix.|https://gitlab.com/spectral-im/spectral|{{AUR|spectral-matrix}}}}&lt;br /&gt;
* {{App|Syphon|Privacy-centric cross-platform Matrix client with E2EE support, currently in alpha.|https://github.com/syphon-org/syphon|{{AUR|syphon-bin}}}}&lt;br /&gt;
&lt;br /&gt;
===== Tox clients =====&lt;br /&gt;
&lt;br /&gt;
See also [[Tox]].&lt;br /&gt;
&lt;br /&gt;
* {{App|qTox|Powerful Tox client written in C++/Qt that follows the Tox design guidelines.|https://qtox.github.io/|{{Pkg|qtox}}}}&lt;br /&gt;
* {{App|ratox|FIFO based tox client.|https://git.z3bra.org/ratox/file/README.html|{{AUR|ratox-git}}}}&lt;br /&gt;
* {{App|Toxic|ncurses-based Tox client|https://github.com/Jfreegman/toxic|{{Pkg|toxic}}}}&lt;br /&gt;
* {{App|Toxygen|Tox client written in pure Python3.|https://github.com/toxygen-project/toxygen|{{AUR|toxygen-git}}}}&lt;br /&gt;
* {{App|Venom|a modern Tox client for the GNU/Linux desktop|https://github.com/naxuroqa/Venom|{{AUR|venom}}}}&lt;br /&gt;
* {{App|µTox|Lightweight Tox client.|https://github.com/uTox/uTox|{{Pkg|utox}}}}&lt;br /&gt;
&lt;br /&gt;
===== LAN メッセンジャー =====&lt;br /&gt;
&lt;br /&gt;
See also [[Avahi#Link-Local (Bonjour/Zeroconf) chat]] and [[Wikipedia:Comparison of LAN messengers]].&lt;br /&gt;
&lt;br /&gt;
* {{App|BeeBEEP|Secure LAN Messenger.|https://www.beebeep.net/|{{Pkg|beebeep}}}}&lt;br /&gt;
* {{App|iptux|LAN 通信ソフトウェア。IP Messenger と互換性あり。|https://github.com/iptux-src/iptux|{{Pkg|iptux}}}}&lt;br /&gt;
* {{App|LAN Messenger|P2P chat application for intranet communication and does not require a server. A variety of handy features are supported including notifications, personal and group messaging with encryption, file transfer and message logging.|https://lanmessenger.github.io/|{{AUR|lmc}}}}&lt;br /&gt;
&lt;br /&gt;
===== P2P messaging clients =====&lt;br /&gt;
&lt;br /&gt;
See also [[Ring]] and [[Tox]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Bitmessage]]|Decentralized and trustless P2P communications protocol for sending encrypted messages to another person or to many subscribers.|https://bitmessage.org/|{{AUR|pybitmessage}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Briar (software)|Briar]]|Briar is a messaging app designed for activists, journalists, and anyone else who needs a safe, easy and robust way to communicate.|https://briarproject.org/|{{AUR|briar-gtk}}, {{AUR|briar-headless}}, {{AUR|python-briar-wrapper}}}}&lt;br /&gt;
* {{App|Patchwork|Decentralized messaging and sharing app built on top of Secure Scuttlebutt (SSB). Based on the [https://electronjs.org/ Electron] platform.|https://github.com/ssbc/patchwork|{{AUR|ssb-patchwork}}}}&lt;br /&gt;
* {{App|[[RetroShare]]|Serverless encrypted instant messenger with filesharing, chatgroups, mail.|https://retroshare.cc/|{{AUR|retroshare}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Ricochet (software)|Ricochet]]|[[Tor]] サービスを基にして作成された匿名のピアツーピアによるインスタントメッセージシステム。|https://ricochet.im/|{{AUR|ricochet}}}}&lt;br /&gt;
&lt;br /&gt;
===== その他 IM clients =====&lt;br /&gt;
&lt;br /&gt;
* {{App|BlueJeans|Proprietary desktop application for BlueJeans video calls. Based on the [https://electronjs.org/ Electron] platform.|https://www.bluejeans.com/|{{AUR|bluejeans}}}}&lt;br /&gt;
* {{App|Caprine|Unofficial Facebook Messenger app. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/sindresorhus/caprine|{{Pkg|caprine}}}}&lt;br /&gt;
* {{App|Chatterino|Chat client for Twitch chat.|https://chatterino.com/|{{AUR|chatterino2-git}}}}&lt;br /&gt;
* {{App|Delta Chat|A privacy oriented chat application built on e-mail. Based on the [https://electronjs.org/ Electron] platform.|https://delta.chat/|{{AUR|deltachat-desktop-git}}}}&lt;br /&gt;
* {{App|[[Discord]]|ゲーマー用の proprietary オールインワンの音声・テキストチャット。フリーでデスクトップとスマートフォンの両方で動作。Based on the [https://electronjs.org/ Electron] platform.|https://discordapp.com/|{{Pkg|discord}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Gitter|Gitter]]|Communication product for communities and teams on GitHub.|https://gitter.im/|{{AUR|gitter}}}}&lt;br /&gt;
* {{App|Hangups|Google ハングアウトのサードパーティ製インスタントメッセージクライアント with console interface.|https://github.com/tdryer/hangups|{{AUR|hangups}}}}&lt;br /&gt;
* {{App|[[ICQ]]|Official ICQ client for Linux.|https://icq.com/linux/|{{AUR|icqdesktop-bin}}}}&lt;br /&gt;
* {{App|IRCCloud|Desktop client for a modern, always-connected IRC client service. Based on the [https://electronjs.org/ Electron] platform.|https://www.irccloud.com/|{{AUR|irccloud}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Jitsi|Jitsi]] Meet|Desktop application for Jitsi Meet. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/jitsi/jitsi-meet-electron|{{AUR|jitsi-meet-desktop}}}}&lt;br /&gt;
* {{App|Kotatogram Desktop|Experimental fork of Telegram Desktop.|https://kotatogram.github.io/|{{AUR|kotatogram-desktop}}}}&lt;br /&gt;
* {{App|Matterhorn|Console client for the Mattermost chat system.|https://github.com/matterhorn-chat/matterhorn|{{AUR|matterhorn}}}}&lt;br /&gt;
* {{App|[[Mattermost]] Desktop|Desktop application for Mattermost. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/mattermost/desktop|{{AUR|mattermost-desktop}}}}&lt;br /&gt;
* {{App|Meowgram|Telegram client written in GTK and Python.|https://github.com/ExposedCat/Meowgram|{{AUR|meowgram-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Microsoft Teams|Microsoft Teams]]|Official proprietary client for Microsoft Teams. Based on the [https://electronjs.org/ Electron] platform.|https://teams.microsoft.com/downloads|{{AUR|teams}}}}&lt;br /&gt;
* {{App|[[Mumble]]|TeamSpeak に似たボイスチャットアプリケーション。|https://www.mumble.info/|{{Pkg|mumble}}}}&lt;br /&gt;
* {{App|[[QQ]]|Proprietary instant messaging software developed by Tencent (imitating ICQ).|https://im.qq.com/|{{AUR|linuxqq}}}}&lt;br /&gt;
* {{App|Rocket.Chat Desktop|Desktop application for Rocket.Chat. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/RocketChat/Rocket.Chat.Electron|{{AUR|rocketchat-desktop}}}}&lt;br /&gt;
* {{App|Session Desktop|Onion routing based messenger. Based on the [https://electronjs.org/ Electron] platform.|https://getsession.org/|{{AUR|session-desktop}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Signal (software)|Signal]] Desktop|Desktop application for Signal private messenger. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/signalapp/Signal-Desktop|{{Pkg|signal-desktop}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Skype|Skype]]|音声 and video コミュニケーションが行える人気 but proprietary のアプリケーション。Based on the [https://electronjs.org/ Electron] platform.|https://www.skype.com/|{{AUR|skypeforlinux-stable-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Slack (software)|Slack]]|Proprietary Slack client for desktop. Based on the [https://electronjs.org/ Electron] platform.|https://slack.com/downloads/linux|{{AUR|slack-desktop}}}}&lt;br /&gt;
* {{App|teams-for-linux|Unofficial Microsoft Teams for Linux client. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/IsmaelMartinez/teams-for-linux|{{AUR|teams-for-linux}}}}&lt;br /&gt;
* {{App|[[TeamSpeak]]|ゲーマーをターゲットにしたプロプライエタリの VoIP アプリケーション。|https://www.teamspeak.com/|{{Pkg|teamspeak3}}}}&lt;br /&gt;
* {{App|[[TeamTalk]]|Proprietary VoIP application with video chat, file and desktop sharing.  Desktop sharing does not appear to be working in Linux though.  AUR package is server only, but client is built in the make process.|https://bearware.dk|{{AUR|teamtalk}}}}&lt;br /&gt;
* {{App|[[Telegram]] Desktop|Official Telegram desktop client.|https://desktop.telegram.org/|{{Pkg|telegram-desktop}}}}&lt;br /&gt;
* {{App|Telegrand|GTK4 telegram client for GNOME.|https://github.com/melix99/telegrand|{{AUR|telegrand-git}}}}&lt;br /&gt;
* {{App|ThreemaQT|Unofficial Threema Web desktop client.|https://gitlab.com/bit3/threemaqt|{{AUR|threemaqt}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Viber|Viber]]|Proprietary cross-platform IM and VoIP software.|https://www.viber.com/products/linux/|{{AUR|viber}}}}&lt;br /&gt;
* {{App|WhatsAppQT|Unofficial WhatsApp Web desktop client.|https://gitlab.com/bit3/whatsappqt|{{AUR|whatsappqt}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Wire (software)|Wire]]|Modern, private messenger. Based on the [https://electronjs.org/ Electron] platform.|https://wire.com/|{{Pkg|wire-desktop}}}}&lt;br /&gt;
* {{App|YakYak|Unofficial desktop client for Google Hangouts. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/yakyak/yakyak|{{AUR|yakyak-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Zoom Video Communications|Zoom]]|Proprietary video conferencing, online meetings and group messaging application.|https://zoom.us/|{{AUR|zoom}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Zulip|Zulip]]|Desktop client for Zulip group chat. Based on the [https://electronjs.org/ Electron] platform.|https://zulipchat.com/apps/linux|{{AUR|zulip-desktop}}}}&lt;br /&gt;
&lt;br /&gt;
==== Instant messaging servers ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of instant messaging protocols]].&lt;br /&gt;
&lt;br /&gt;
===== IRC servers =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of Internet Relay Chat daemons]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[InspIRCd]]|A stable, modern and lightweight IRC daemon.|https://www.inspircd.org/|{{AUR|inspircd}}}}&lt;br /&gt;
* {{App|IRCD-Hybrid|A lightweight, high-performance internet relay chat daemon.|https://www.ircd-hybrid.org/|{{AUR|ircd-hybrid}}}}&lt;br /&gt;
* {{App|miniircd|A small and configuration free IRC server, suitable for private use.|https://github.com/jrosdahl/miniircd|{{AUR|miniircd-git}}}}&lt;br /&gt;
* {{App|ngIRCd|A free, portable and lightweight Internet Relay Chat server for small or private networks.|https://ngircd.barton.de/|{{Pkg|ngircd}}}}&lt;br /&gt;
* {{App|Ergo|A modern and simple to set up IRC server written in Go. Combines the features of an IRCd, a services framework, and a bouncer.|https://ergo.chat/|{{AUR|ergochat}}}}&lt;br /&gt;
* {{App|[[UnrealIRCd]]|Open Source IRC Server.|https://www.unrealircd.org/|{{Pkg|unrealircd}}}}&lt;br /&gt;
&lt;br /&gt;
===== XMPP サーバー =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of XMPP server software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Prosody]]|[https://www.lua.org/ Lua] プログラミング言語で書かれた XMPP サーバー。Prosody は軽量で高い拡張性を持つように設計されています。ライセンスは [https://prosody.im/source/mit MIT ライセンス]。|https://prosody.im/|{{Pkg|prosody}}}}&lt;br /&gt;
* {{App|Ejabberd|Robust, scalable and extensible Erlang で書かれた Jabber サーバー。|https://www.ejabberd.im/|{{Pkg|ejabberd}}}}&lt;br /&gt;
* {{App|[[Jabberd2]]|C 言語で書かれた XMPP サーバーで GNU General Public License でライセンスされています。jabberd14 から影響を受けています。|https://jabberd2.org/|{{AUR|jabberd2}}}}&lt;br /&gt;
* {{App|[[Openfire]]|XMPP IM マルチプラットフォームサーバー。Java で書かれています。|https://www.igniterealtime.org/projects/openfire/|{{Pkg|openfire}}}}&lt;br /&gt;
&lt;br /&gt;
===== SIP servers =====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of SIP software#Servers]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Asterisk]]|A complete PBX solution.|https://www.asterisk.org/|{{AUR|asterisk}}}}&lt;br /&gt;
* {{App|Kamailio|Rock solid SIP server.|https://www.kamailio.org/|{{AUR|kamailio}}}}&lt;br /&gt;
* {{App|openSIPS|SIP proxy/server for voice, video, IM, presence and any other SIP extensions.|https://opensips.org/|{{Pkg|opensips}}}}&lt;br /&gt;
* {{App|Repro|An open-source, free SIP server.|https://www.resiprocate.org/About_Repro|{{AUR|repro}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Yate (telephony engine)|Yate]]|Advanced, mature, flexible telephony server that is used for VoIP and fixed networks, and for traditional mobile operators and MVNOs.|http://yate.ro/|{{Pkg|yate}}}}&lt;br /&gt;
&lt;br /&gt;
===== Other IM servers =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Mattermost]]|Open source private cloud server, Slack-alternative.|https://github.com/mattermost/mattermost-server|{{Pkg|mattermost}}}}&lt;br /&gt;
* {{App|[[Murmur]]|Mumble のボイスチャットアプリケーションサーバー。|https://www.mumble.info/|{{Pkg|murmur}}}}&lt;br /&gt;
* {{App|Nextcloud Talk|Video- and audio-conferencing app for Nextcloud.|https://github.com/nextcloud/spreed|{{Pkg|nextcloud-app-spreed}}}}&lt;br /&gt;
* {{App|Rocket.Chat|Web chat server, developed in JavaScript, using the Meteor fullstack framework.|https://github.com/RocketChat/Rocket.Chat|{{AUR|rocketchat-server}}}}&lt;br /&gt;
* {{App|Spreed WebRTC|WebRTC audio/video call and conferencing server.|https://github.com/strukturag/spreed-webrtc|{{AUR|spreed-webrtc-server}}}}&lt;br /&gt;
* {{App|[[Matrix|Synapse]]|matrix プロトコルのリファレンス実装であるホームサーバー。|https://github.com/matrix-org/synapse|{{Pkg|matrix-synapse}}}}&lt;br /&gt;
* {{App|[[TeamSpeak]] Server|Proprietary VoIP conference server.|https://teamspeak.com/|{{Pkg|teamspeak3-server}}}}&lt;br /&gt;
* {{App|uMurmur|Minimalistic Mumble server.|https://umurmur.net/|{{Pkg|umurmur}}}}&lt;br /&gt;
&lt;br /&gt;
==== Collaborative software ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Collaborative software]].&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Citadel/UX|Citadel/UX]]|Includes an email &amp;amp; mailing list server, instant messaging, address books, calendar/scheduling, bulletin boards, and wiki and blog engines.|https://www.citadel.org/|{{AUR|webcit}}}}&lt;br /&gt;
* {{App|[[Kolab]]|Kolab Groupware solution consisting of a server and various clients.|https://kolab.org/|{{AUR|kolab}}{{Broken package link|package not found}}}}&lt;br /&gt;
* {{App|[[SOGo]]|Groupware server built around OpenGroupware.org (OGo) and the SOPE application server.|https://sogo.nu/|{{AUR|sogo}}}}&lt;br /&gt;
&lt;br /&gt;
=== ニュース・RSS・ブログ ===&lt;br /&gt;
&lt;br /&gt;
==== フィードリーダー ====&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:RSS|RSS]]/[[Wikipedia:Atom (standard)|Atom]] aggregators. Some [[#Email clients|email clients]] are also able to act as news aggregator: [[Wikipedia:Claws Mail|Claws Mail]] RSSyl plugin, [[Evolution]] RSS plugin, [[Wikipedia:SeaMonkey#Mail|SeaMonkey Mail &amp;amp; Newsgroups]], [[Thunderbird]].&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Comparison of feed aggregators]].&lt;br /&gt;
&lt;br /&gt;
===== コンソール =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Canto (news aggregator)|Canto]]|ncurses RSS アグリゲータ。|https://github.com/themoken/canto-curses|{{Pkg|canto-curses}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Gnus|Gnus]]|Emacs 用の電子メール、NNTP、RSS クライアント。|https://www.gnus.org/|{{Pkg|emacs}}}}&lt;br /&gt;
* {{App|[[Newsboat]]|[[Mutt]] メールクライアントに似たレイアウトとキーバインドを持つ ncurses RSS アグリゲータ。|https://newsboat.org/|{{Pkg|newsboat}}}}&lt;br /&gt;
* {{App|Rawdog|&amp;quot;RSS Aggregator Without Delusions Of Grandeur&amp;quot; は RSS/CDF/Atom フィードをパースして時間順で HTML ページに変換します。|https://offog.org/code/rawdog/|{{AUR|rawdog}}}}&lt;br /&gt;
* {{App|sfeed|Lightweight RSS and Atom parser.|https://codemadness.org/sfeed-simple-feed-parser.html|{{AUR|sfeed-git}}}}&lt;br /&gt;
* {{App|Snownews|テキストモード RSS ニュースリーダー。|https://github.com/kouya/snownews|{{AUR|snownews}}}}&lt;br /&gt;
&lt;br /&gt;
===== グラフィカル =====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:Kontact#News Feed Aggregator|Akregator]]|KDE 向けのニュースアグリゲータ、{{Grp|kdepim}}{{Broken package link|package not found}} の一部。|https://kontact.kde.org/components/akregator.html|{{Pkg|akregator}}}}&lt;br /&gt;
* {{App|Alduin|RSS, Atom and JSON feed aggregator. Based on the [https://electronjs.org/ Electron] platform. Discontinued.|https://alduinapp.github.io/|{{AUR|alduin}}}}&lt;br /&gt;
* {{App|Alligator|Kirigami-based RSS/Atom feed reader for mobile devices.|https://apps.kde.org/alligator/|{{AUR|alligator}}}}&lt;br /&gt;
* {{App|FeedReader|Modern desktop application designed to complement existing web-based RSS accounts. Discontinued.|https://jangernert.github.io/FeedReader/|{{AUR|feedreader}}}}&lt;br /&gt;
* {{App|Feeds|An RSS/Atom feed reader for GNOME.|https://gabmus.gitlab.io/gnome-feeds/|{{Pkg|gfeeds}}}}&lt;br /&gt;
* {{App|Fluent Reader|Modern desktop RSS reader built with React and Fluent UI. Based on the [https://electronjs.org/ Electron] platform.|https://hyliu.me/fluent-reader/|{{AUR|fluent-reader}}}}&lt;br /&gt;
* {{App|HackUp|Read Hacker News from the desktop.|https://github.com/mdh34/hackup|{{AUR|hackup-git}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Liferea|Liferea]]|オンラインのニュースフィードやウェブログを読むための GTK ニュースアグリゲータ。|https://lzone.de/liferea/|{{Pkg|liferea}}}}&lt;br /&gt;
* {{App|NewsFlash|Modern feed reader designed for the GNOME desktop. The spiritual successor to FeedReader.|https://gitlab.com/news-flash/news_flash_gtk|{{Pkg|newsflash}}}}&lt;br /&gt;
* {{App|[[Nextcloud]] News|RSS/Atom feed reader for Nextcloud.|https://github.com/nextcloud/news|{{Pkg|nextcloud-app-news}}}}&lt;br /&gt;
* {{App|QuiteRSS|Qt/С++ で書かれている RSS/Atom フィードリーダー。|https://quiterss.org/|{{Pkg|quiterss}}}}&lt;br /&gt;
* {{App|Raven|Simple desktop RSS reader made using VueJS. Based on the [https://electronjs.org/ Electron] platform.|https://ravenreader.app/|{{AUR|raven-reader}}}}&lt;br /&gt;
* {{App|RSS Guard|Qt フレームワークで開発されている非常に小さな RSS/Atom ニュースリーダー。|https://github.com/martinrotter/rssguard|{{Pkg|rssguard}} or {{Pkg|rssguard-nowebengine}}}}&lt;br /&gt;
* {{App|selfoss|The new multipurpose RSS reader, live stream, mashup, aggregation web application.|https://selfoss.aditu.de/|{{AUR|selfoss}}}}&lt;br /&gt;
* {{App|Tickr|テレビのニュース番組にあるようにフィードをデスクトップにスクロールしながら表示する GTK ベースの RSS リーダー。|https://www.open-tickr.net/|{{AUR|tickr}}}}&lt;br /&gt;
* {{App|[[Tiny Tiny RSS]]|Web-based news feed (RSS/Atom) aggregator.|https://tt-rss.org/|{{Pkg|tt-rss}}}}&lt;br /&gt;
&lt;br /&gt;
==== ポッドキャストクライアント ====&lt;br /&gt;
&lt;br /&gt;
Some media players are also able to act as podcast client: [[Amarok]], [[Wikipedia:Banshee (media player)|Banshee]], Cantata, [[Wikipedia:Clementine_(software)|Clementine]], Goggles Music Manager, [[Wikipedia:Rhythmbox|Rhythmbox]], [[VLC media player]]. [[Wikipedia:git-annex|git-annex]] can also [https://git-annex.branchable.com/tips/downloading_podcasts/ function as podcatcher].&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of podcatchers]].&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|castero|A TUI podcast client for the terminal.|https://github.com/xgi/castero|{{AUR|castero-git}}}}&lt;br /&gt;
* {{App|castget|Simple, command-line RSS enclosure downloader, primarily intended for automatic, unattended downloading of podcasts.|https://castget.johndal.com/|{{Pkg|castget}}}}&lt;br /&gt;
* {{App|gpo|Text mode interface of gPodder.|https://gpodder.github.io/|{{Pkg|gpodder}}}}&lt;br /&gt;
* {{App|Greg|コマンドラインのポッドキャストアグリゲーター。|https://github.com/manolomartinez/greg|{{AUR|greg-git}}}}&lt;br /&gt;
* {{App|Marrie|コマンドラインインターフェイスで動作するシンプルなポッドキャストクライアント。|https://github.com/rafaelmartins/marrie/|{{AUR|marrie-git}}}}&lt;br /&gt;
* {{App|pcd|A minimal podcast client written in go|https://github.com/kvannotten/pcd|{{AUR|pcd}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|CPod|Simple, beautiful podcast app. Based on the [https://electronjs.org/ Electron] platform.|https://github.com/z-------------/CPod|{{AUR|cpod}}}}&lt;br /&gt;
* {{App|GNOME Podcasts|Podcast client for the GNOME Desktop written in Rust.|https://gitlab.gnome.org/World/podcasts|{{Pkg|gnome-podcasts}}}}&lt;br /&gt;
* {{App|gPodder|ポッドキャストクライアント・メディアアグリゲーター (GTK インターフェイス)。|https://gpodder.github.io/|{{Pkg|gpodder}}}}&lt;br /&gt;
* {{App|Vocal|近代的なデスクトップにあうシンプルなポッドキャストクライアント (GTK)。|https://vocalproject.net/|{{Pkg|vocal}}}}&lt;br /&gt;
&lt;br /&gt;
==== Usenet ニュースリーダー ====&lt;br /&gt;
&lt;br /&gt;
Some [[#Email clients|email clients]] are also able to act as Usenet newsreader: [[Wikipedia:Claws Mail|Claws Mail]], [[Evolution]], [[Mutt#NeoMutt|NeoMutt]], [[Wikipedia:SeaMonkey#Mail|SeaMonkey Mail &amp;amp; Newsgroups]], [[Wikipedia:Sylpheed|Sylpheed]], [[Thunderbird]].&lt;br /&gt;
&lt;br /&gt;
See also: [[Wikipedia:List of Usenet newsreaders]], [[Wikipedia:Comparison of Usenet newsreaders]].&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{app|nn|UNIX 用のユーザーフレンドリな (curses ベースの) Usenet ニュースリーダー。|http://www.nndev.org/|{{AUR|nn}}}}&lt;br /&gt;
* {{app|[[Wikipedia:slrn|slrn]]|Text-based news client.|https://www.slrn.org/|{{AUR|slrn}}}}&lt;br /&gt;
* {{app|[[Wikipedia:Tin_(newsreader)|tin]]|NNTP と spool ベースのクロスプラットフォームなスレッド式 UseNet ニュースリーダー。|http://tin.org/|{{AUR|tin}}}}&lt;br /&gt;
* {{app|trn|テキストベースのスレッド式 Usenet ニュースリーダー。|http://trn.sourceforge.net/|{{AUR|trn}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{app|[[NZBGet]]|Usenet binary downloader for .nzb files with web and CLI interface.|https://nzbget.net/|{{Pkg|nzbget}}}}&lt;br /&gt;
* {{app|[[Wikipedia:Pan (newsreader)|Pan]]|テキストとバイナリ両方を扱える GTK の Usenet ニュースリーダー。|http://pan.rebelbase.com/|{{Pkg|pan}}}}&lt;br /&gt;
* {{app|[[SABnzbd]]|Python で書かれたオープンソースのバイナリニュースリーダー。|https://sabnzbd.org/|{{AUR|sabnzbd}}}}&lt;br /&gt;
* {{app|XRN|X Window System 向けの Usenet ニュースリーダー。|http://www.mit.edu/people/jik/software/xrn.html|{{AUR|xrn}}}}&lt;br /&gt;
&lt;br /&gt;
==== マイクロブログクライアント ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:List of Twitter services and applications]].&lt;br /&gt;
&lt;br /&gt;
===== Console =====&lt;br /&gt;
&lt;br /&gt;
* {{App|bti|Simple command line client for twitter/identi.ca|https://gregkh.github.io/bti/|{{pkg|bti}}}}&lt;br /&gt;
* {{App|oysttyer|(official fork of ttytter) An interactive console text-based command-line Twitter client written in Perl.|https://github.com/oysttyer/oysttyer|{{AUR|oysttyer-git}}}}&lt;br /&gt;
* {{App|Rainbowstream|Python で書かれた強力かつ機能豊富な Twitter コンソールクライアント。|https://github.com/orakaro/rainbowstream |{{AUR|rainbowstream}}}}&lt;br /&gt;
* {{App|toot|CLI and TUI tool for interacting with Mastodon instances|https://github.com/ihabunek/toot|{{AUR|toot}}}}&lt;br /&gt;
* {{App|turses|コンソールベースの &#039;&#039;tyrs&#039;&#039; の機能を改善させた Twitter クライアント。|https://github.com/louipc/turses|{{AUR|turses-git}}}}&lt;br /&gt;
&lt;br /&gt;
===== Graphical =====&lt;br /&gt;
&lt;br /&gt;
* {{App|Cawbird|Native GTK Twitter client for the Linux desktop.|https://ibboard.co.uk/cawbird/|{{Pkg|cawbird}}}}&lt;br /&gt;
* {{App|Choqok|KDE のマイクロブログクライアント。Twitter.com, Pump.io, GNU social, opendesktop.org サービスをサポート。|https://choqok.kde.org/|{{Pkg|choqok}}}}&lt;br /&gt;
* {{App|Giara|Reddit app, built with Python, GTK and Handy.|https://gitlab.gnome.org/World/giara|{{AUR|giara}}}}&lt;br /&gt;
* {{App|Mikutter|[[GTK]] と Ruby を使用する simple, powerfull Twitter クライアント。|https://mikutter.hachune.net/|{{AUR|mikutter}}}}&lt;br /&gt;
* {{App|Pumpa|C++ と Qt で書かれた Pump.io クライアント。|https://pumpa.branchable.com/|{{AUR|pumpa-git}}}}&lt;br /&gt;
* {{App|Tootle|GTK3 client for Mastodon.|https://github.com/bleakgrey/tootle|{{AUR|tootle}}}}&lt;br /&gt;
* {{App|Turpial|マルチインターフェイスの Twitter クライアント。Python で書かれています。|http://turpial.org.ve/|{{AUR|turpial-git}}}}&lt;br /&gt;
* {{App|Whalebird|Mastodon client application. Based on the [https://electronjs.org/ Electron] platform.|https://whalebird.social/|{{AUR|whalebird-bin}}}}&lt;br /&gt;
&lt;br /&gt;
==== ブログソフトウェア ====&lt;br /&gt;
&lt;br /&gt;
See also [[Wikipedia:Blog software]] and [[Wikipedia:List of content management systems]].&lt;br /&gt;
{{note|Content managers, social networks, and blog publishers overlap in many functions.}}&lt;br /&gt;
* {{App|[[Diaspora]]|分散型のプライバシー指向ソーシャルネットワーク。|https://diasporafoundation.org|{{AUR|diaspora-mysql}} or {{AUR|diaspora-postgresql}}}}&lt;br /&gt;
* {{App|[[Drupal]]|A PHP-based content management platform.|https://www.drupal.org/|{{Pkg|drupal}}}}&lt;br /&gt;
* {{App|[[Ghost]]|JavaScript で書かれているブログプラットフォーム。MIT ライセンスで配布。個々のブロガーのオンラインパブリッシュを簡単にするように作られています。|https://ghost.org/|{{AUR|ghost-web}}}}&lt;br /&gt;
* {{App|[[Joomla]]|PHP 製のコンテンツ管理システム (CMS)。ウェブサイトを作成したり強力なオンラインアプリケーションが使えます。|https://www.joomla.org/|{{AUR|joomla}}}}&lt;br /&gt;
* {{App|[[Wordpress]]|Blog tool and publishing platform.|https://wordpress.org/|{{Pkg|wordpress}}}}&lt;br /&gt;
&lt;br /&gt;
==== Static site generators ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Hexo|高速・シンプル・パワフルなブログフレームワーク。|https://hexo.io/|{{AUR|hexo-cli}}}}&lt;br /&gt;
* {{App|Hugo|Hugo is a static HTML and CSS website generator written in Go. It is optimized for speed, ease of use, and configurability.|https://gohugo.io/|{{Pkg|hugo}}}}&lt;br /&gt;
* {{App|[[Jekyll]]|静的ブログエンジン。Ruby で書かれており、Markdown や textile などのフォーマットをサポート。|https://jekyllrb.com/|{{AUR|jekyll}}}}&lt;br /&gt;
* {{App|Nanoblogger|Bash で書かれたコマンドラインの小規模な weblog エンジン。cat, grep, sed などの標準 UNIX ツールを使って静的な HTML コンテンツを作成します。It is not maintained anymore.|http://nanoblogger.sourceforge.net/|{{AUR|nanoblogger}}}}&lt;br /&gt;
* {{App|Nikola|Python で書かれた静的サイトジェネレータ。incremental rebuilds and 複数のマークアップフォーマットに対応。|https://getnikola.com/|{{Pkg|nikola}}}}&lt;br /&gt;
* {{app|Pelican|静的なサイトジェネレータ。Python で動作。|https://docs.getpelican.com/|{{Pkg|pelican}}}}&lt;br /&gt;
&lt;br /&gt;
=== リモートデスクトップ ===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:ja:リモートデスクトップ]]や [[Wikipedia:Comparison of remote desktop software]] も参照。&lt;br /&gt;
&lt;br /&gt;
See also [https://remotedesktop.google.com Chrome Remote Desktop] for a web browser based solution.&lt;br /&gt;
&lt;br /&gt;
==== リモートデスクトップクライアント ====&lt;br /&gt;
&lt;br /&gt;
* {{App|[[Wikipedia:AnyDesk|AnyDesk]]|Proprietary remote desktop software.|https://anydesk.com/|{{AUR|anydesk-bin}}}}&lt;br /&gt;
* {{App|GNOME Connections|Remote desktop client for GNOME. Supports RDP and VNC.|https://gitlab.gnome.org/GNOME/connections|{{Pkg|gnome-connections}}}}&lt;br /&gt;
* {{App|GVncViewer|Gtk-VNC によるシンプルな VNC クライアント。Run with {{ic|gvncviewer}}.|https://wiki.gnome.org/Projects/gtk-vnc|{{Pkg|gtk-vnc}}}}&lt;br /&gt;
* {{App|[[Wikipedia:KRDC|KRDC]]|KDE のリモートデスクトップクライアント。RDP と VNC をサポート。{{Grp|kde-network}} に含まれています。|https://apps.kde.org/krdc/|{{Pkg|krdc}}}}&lt;br /&gt;
* {{App|[[Remmina]]|GTK で書かれたリモートデスクトップクライアント。RDP, VNC, NX, XDMCP, SSH をサポート。|https://remmina.org/|{{Pkg|remmina}}}}&lt;br /&gt;
* {{App|Remote Viewer|Simple remote display client. Supports SPICE and VNC.|https://virt-manager.org/|{{Pkg|virt-viewer}}}}&lt;br /&gt;
* {{App|Remotely|Simple VNC viewer for GNOME. Discontinued.|https://gitlab.gnome.org/World/Remotely|{{AUR|remotely}}}}&lt;br /&gt;
* {{App|Sunlogin Remote Control|Proprietary software that supports remote control of mobile devices, Windows, Mac, Linux and other systems. It uses its own proprietary protocol.|https://sunlogin.oray.com/en/about/about|{{AUR|sunloginclient}}}}&lt;br /&gt;
* {{App|ToDesk|Proprietary remote desktop client that suits for remote teamwork. It uses its own proprietary protocol.|https://www.todesk.com/|{{AUR|todesk-bin}}}}&lt;br /&gt;
* {{App|[[Wikipedia:TeamViewer|TeamViewer]]|プロプライエタリのリモートデスクトップクライアント。プロプライエタリの独自プロトコルを使用。|https://www.teamviewer.com/|{{AUR|teamviewer}}}}&lt;br /&gt;
* {{App|[[TigerVNC|vncviewer (TigerVNC)]]|X 用の VNC ビューア。|https://tigervnc.org/|{{Pkg|tigervnc}}}}&lt;br /&gt;
* {{App|[[Wikipedia:Vinagre|Vinagre]]|GNOME のリモートデスクトップビューア。RDP, VNC, SPICE, SSH をサポート。{{Grp|gnome-extra}} に含まれています。|https://wiki.gnome.org/Apps/Vinagre|{{Pkg|vinagre}}}}&lt;br /&gt;
* {{App|xfreerdp|FreeRDP X11 クライアント。Run with {{ic|xfreerdp}}.|https://www.freerdp.com/|{{Pkg|freerdp}}}}&lt;br /&gt;
* {{App|[[X2Go]] Client|X2Go システムのグラフィカルクライアント (Qt5)。[[w:NX technology|NX technology]] プロトコルを使用。|https://wiki.x2go.org/doku.php|{{Pkg|x2goclient}}}}&lt;br /&gt;
&lt;br /&gt;
==== リモートデスクトップサーバー ====&lt;br /&gt;
&lt;br /&gt;
* {{App|Krfb|KDE の VNC サーバー。{{Grp|kde-network}} に含まれています。|https://apps.kde.org/krfb/|{{Pkg|krfb}}}}&lt;br /&gt;
* {{App|[[NoMachine]]|Proprietary remote desktop server and client based on [[w:NX technology|NX technology]].|https://nomachine.com/|{{AUR|nomachine}}}}&lt;br /&gt;
* {{App|wayvnc|({{Pkg|sway}}などの) wlroots ベース の wayland コンポジタのための VNC サーバ |https://github.com/any1/wayvnc|{{Pkg|wayvnc}}}}&lt;br /&gt;
* {{App|[[TigerVNC|x0vncserver (TigerVNC)]]|X ディスプレイの VNC サーバー。|https://tigervnc.org/|{{Pkg|tigervnc}}}}&lt;br /&gt;
* {{App|[[x11vnc]]|リアル X ディスプレイの VNC サーバー。|http://www.karlrunge.com/x11vnc/|{{Pkg|x11vnc}}}}&lt;br /&gt;
* {{App|[[X2Go]] Server|オープンソースのリモートデスクトップソフトウェア。[[w:NX technology|NX technology]] プロトコルを使用。|https://wiki.x2go.org/doku.php|{{Pkg|x2goserver}}}}&lt;br /&gt;
* {{App|[[Xpra]]|A multi-platform screen and application forwarding system.|https://xpra.org/|{{Pkg|xpra}}}}&lt;br /&gt;
* {{App|[[Xrdp]]|A daemon that supports RDP. It uses Xvnc, X11rdp or xorgxrdp as a backend.|http://xrdp.org/|{{AUR|xrdp}}}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TranslationStatus|List of applications/Internet|2021-12-30|707512}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=%E4%BF%9D%E5%AD%98%E3%83%87%E3%83%BC%E3%82%BF%E6%9A%97%E5%8F%B7%E5%8C%96&amp;diff=23742</id>
		<title>保存データ暗号化</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=%E4%BF%9D%E5%AD%98%E3%83%87%E3%83%BC%E3%82%BF%E6%9A%97%E5%8F%B7%E5%8C%96&amp;diff=23742"/>
		<updated>2022-02-05T09:43:10Z</updated>

		<summary type="html">&lt;p&gt;Shota: /* スタックファイルシステムの暗号化 */  クラウドストレージの最適化の節をコピー&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:暗号化]]&lt;br /&gt;
[[Category:ファイルシステム]]&lt;br /&gt;
[[en:Data-at-rest encryption]]&lt;br /&gt;
[[es:Data-at-rest encryption]]&lt;br /&gt;
[[pl:Data-at-rest encryption]]&lt;br /&gt;
[[pt:Data-at-rest encryption]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|dm-crypt}}&lt;br /&gt;
{{Related|TrueCrypt}}&lt;br /&gt;
{{Related|eCryptfs}}&lt;br /&gt;
{{Related|EncFS}}&lt;br /&gt;
{{Related|gocryptfs}}&lt;br /&gt;
{{Related|fscrypt}}&lt;br /&gt;
{{Related|Tomb}}&lt;br /&gt;
{{Related|tcplay}}&lt;br /&gt;
{{Related|GnuPG}}&lt;br /&gt;
{{Related|自己暗号化ドライブ}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
この記事では、[[ブロックデバイス]]や[[ディスクパーティション]]、ディレクトリに書き込んだり読み込んだりするデータをその場で暗号化/復号化する、[[Wikipedia:Data at rest|保存データ]] [[Wikipedia:Disk encryption|暗号化]]ソフトウェアについて説明します。ブロックデバイスの例としては、ハードディスク、フラッシュドライブ、DVDなどがあります。&lt;br /&gt;
&lt;br /&gt;
保存データの暗号化は、あくまでもオペレーティングシステムの既存のセキュリティ機構を補助するものと考えるべきで、物理的なアクセスの保護に焦点を当て、ネットワークセキュリティやユーザーベースのアクセスコントロールなどは、システムの&#039;&#039;他&#039;&#039;の部分に依存することになります。&lt;br /&gt;
&lt;br /&gt;
フルディスク暗号化 (FDE) については、[[dm-crypt/システム全体の暗号化]]を参照してください。&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;
&lt;br /&gt;
さらに、ディスク暗号化を使うことで、オペレーティングシステムを改竄しようとする不正アクセスに対するセキュリティの強化にもなります。例えば、システムへの物理的なアクセスを手に入れた攻撃者によるキーロガーやトロイの木馬のインストールへの防衛手段になります。&lt;br /&gt;
&lt;br /&gt;
{{Warning|ディスク暗号化はあらゆる脅威からデータを保護するわけではないので注意してください。}}&lt;br /&gt;
ディスク暗号化によっても以下のような場合には対処できません:&lt;br /&gt;
* システムが動いていて、あなたがロックを解除してディスクの暗号化している部分をマウントしてしまった後に (インターネットなどを介して) 攻撃者がシステムに侵入した場合。&lt;br /&gt;
* [[Wikipedia:Cold boot attack|コールドブートアタック]]に必要な手段を攻撃者が手に入れていて、(画面ロックを使っていたとしても) コンピュータが動作している、または動作していたすぐ後に攻撃者が物理的にアクセスできる場合。&lt;br /&gt;
* 政府機関が、上記の攻撃を簡単に行える資力を持っているだけでなく、もっとシンプルに、様々な[[Wikipedia:ja:強制|強制執行]]を使って無理矢理キーやパスフレーズを明かさせることができる場合。世界中の非民主的な国々、さらにアメリカやイギリスでも、何か興味深いものをあなたが隠していると法執行機関が疑いをかけた場合、法執行機関によってロックの解除を合法的に迫られる可能性があります。&lt;br /&gt;
* [[Wikipedia:Rubber-hose_cryptanalysis|締め上げ暗号分析]]。[https://xkcd.com/538/ XKCD #538] も参照してください。&lt;br /&gt;
&lt;br /&gt;
あなたがシステムを使う前にシステムに細工を施すことができるプロの攻撃者にまともに対抗するには非常に強固なディスク暗号化が必要になります (例: 平文のブートパーティションがなく真正の確認があるフルシステム暗号化)。それでもあらゆるタイプの改竄を押しとどめることができるかというと疑問です (例: ハードウェアキーロガー)。おそらく[[Wikipedia:Hardware-based full disk encryption|ハードウェアベースの完全ディスク暗号化]]と[[Wikipedia:Trusted_Computing|トラステッドコンピューティング]]が最善策でしょう。&lt;br /&gt;
&lt;br /&gt;
{{Warning|ディスク暗号化をしたとしても[[ディスクの完全消去|ディスクの消去]]からは保護されません。データを安全に保つため[[バックアッププログラム|定期的なバックアップ]]を推奨します。}}&lt;br /&gt;
&lt;br /&gt;
=== データ暗号化 vs システム暗号化 ===&lt;br /&gt;
&lt;br /&gt;
; データ暗号化&lt;br /&gt;
: データ暗号化は、ユーザーのデータ ({{ic|/home}} ディレクトリの中や、データ DVD などのリムーバブルメディア) だけの暗号化と定義され、一番シンプルで込み入ったところがないディスク暗号化の利用法ですが、致命的な欠点があります。&lt;br /&gt;
: 最近の計算システムでは、ユーザーデータに関する情報や、またはデータそれ自体の一部を以下のようなハードドライブの暗号化されていない領域にキャッシュ・保存するバックグラウンドプロセスが多数存在します:&lt;br /&gt;
&lt;br /&gt;
:* スワップパーティション&lt;br /&gt;
:** &amp;lt;span style=&amp;quot;color:#555&amp;quot;&amp;gt;&#039;&#039;(救済策: スワップを無効にする、または[[Dm-crypt/スワップの暗号化|スワップも暗号化]]してしまう)&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
:* {{ic|/tmp}} (ユーザーアプリケーションによって作成される一時ファイル)&lt;br /&gt;
:** &amp;lt;span style=&amp;quot;color:#555&amp;quot;&amp;gt;&#039;&#039;(救済策: そのようなアプリケーションを使うのをやめる、または {{ic|/tmp}} を [[RAM ディスク]]にマウントする)&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
:* {{ic|/var}} (ログファイルやデータベースなど。例えば mlocate は全てのファイル名のインデックスを {{ic|/var/lib/mlocate/mlocate.db}} に保存します)&lt;br /&gt;
&lt;br /&gt;
:さらに、データ暗号化だけではオフラインのシステムのタンパリング攻撃にたいして隙を残すことになります (例: 暗号化されたデータを解除するために使用するパスフレーズを[[Wikipedia:ja:キーロガー|記録]]するプログラムや、ロックを解除するのを待ってから密かに攻撃者がデータを回収できる場所にデータをコピー/送信するプログラムのインストール)。&lt;br /&gt;
&lt;br /&gt;
; システム暗号化&lt;br /&gt;
: システム暗号化は、オペレーティングシステム&#039;&#039;と&#039;&#039;ユーザーデータの暗号化と定義されており、データ暗号化の欠点を解決します。&lt;br /&gt;
&lt;br /&gt;
: メリット:&lt;br /&gt;
:* オペレーティングシステムのファイルに対する権限のない物理アクセス (と改竄) を防ぎます &#039;&#039;(ただし上の警告を見て下さい)&#039;&#039;&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;
[[Wikipedia:Disk encryption]] も参照。&lt;br /&gt;
&lt;br /&gt;
== システムデータ暗号化 ==&lt;br /&gt;
&lt;br /&gt;
ユーザーデータそのもの（ホームディレクトリ内やデータ DVD などのリムーバブルメディアにあることが多い）を暗号化するのは、最もシンプルで侵入の少ない方法ですが、いくつかの重大な欠点もあります。最近のコンピュータシステムでは、多くのバックグラウンドプロセスがあり、ユーザーデータに関する情報やデータ自体の一部を、ハードディスクの暗号化されていない領域にキャッシュして保存している可能性があります。&lt;br /&gt;
&lt;br /&gt;
:* スワップパーティション&lt;br /&gt;
:** (potential remedies: disable swapping, or use [[スワップの暗号化]] as well)&lt;br /&gt;
:* {{ic|/tmp}} (temporary files created by user applications)&lt;br /&gt;
:** (potential remedies: avoid such applications; mount {{ic|/tmp}} inside a [[ramdisk]])&lt;br /&gt;
:* {{ic|/var}} (log files and databases and such; for example, [[mlocate]] stores an index of all file names in {{ic|/var/lib/mlocate/mlocate.db}})&lt;br /&gt;
&lt;br /&gt;
The solution is to encrypt both system and user data, preventing unauthorized physical access to private data that may be cached by the system. This however comes with the disadvantage that unlocking of the encrypted parts of the disk has to happen at boot time. Another benefit of system data encryption is that it complicates the installation of malware like [[Wikipedia:Keystroke logging|keyloggers]] or rootkits for someone with physical access.&lt;br /&gt;
&lt;br /&gt;
==利用可能な手段==&lt;br /&gt;
&lt;br /&gt;
あらゆるディスク暗号化の手段というのは、ディスクは暗号化されたデータを保持しながら、暗号コンテナ (つまり暗号化されたデータを保持するディスクの論理部) が&amp;quot;解除&amp;quot;されてマウントされているときにかぎり、オペレーティングシステムやアプリケーションからは通常の読み込み可能なデータとして見えるようにするという方法で働きます。&lt;br /&gt;
&lt;br /&gt;
暗号化を使うには、ユーザーによって&amp;quot;秘密情報&amp;quot;が供給される必要があり (通常はキーファイルやパスフレーズの形で指定します)、それから実際の暗号化キーが生成されます (そしてセッションの間はカーネルのキーリングに保存されます)。&lt;br /&gt;
&lt;br /&gt;
この種の仕組みが全くわからないという場合は、下の[[#暗号化の仕組み|暗号化の仕組み]]セクションを読んで下さい。&lt;br /&gt;
&lt;br /&gt;
利用できるディスク暗号化の方法は、稼働するレイヤーによって2つのタイプに分けることができます:&lt;br /&gt;
&lt;br /&gt;
===スタックファイルシステムの暗号化===&lt;br /&gt;
&lt;br /&gt;
スタックファイルシステムによる暗号化ソリューションは既存のファイルシステム上に積み上げられるレイヤーとして実装され、暗号化が有効になったフォルダへ書き込まれた全てのファイルを、実際のファイルシステムがディスクに書き込む前に即座に暗号化します。そしてファイルシステムがディスクからファイルを読み込んだ時は復号化を行います。この方法では、ホストファイルシステムには暗号化された形でファイルが保存されますが (ファイルの中身や、ファイル名・フォルダ名も、同じ長さのランダムなデータで置き換えられます)、それ以外のファイルはファイルシステム上に通常のファイル/シンボリックリンク/ハードリンクとして暗号化されない形で存在します。&lt;br /&gt;
&lt;br /&gt;
ホストファイルシステムにある暗号化されたファイルが保存されたフォルダをロック解除するため、(特殊なスタック擬似ファイルシステムを使って) それ自体または別の場所にマウントされ、同じファイルが読み込める形で現れます。アンマウントしたり、システムの電源が落とされるまでその状態は維持されます。&lt;br /&gt;
&lt;br /&gt;
スタックファイルシステム暗号化で利用できるソリューションには [[eCryptfs]] や [[EncFS]] があります。 &lt;br /&gt;
&lt;br /&gt;
==== クラウドストレージの最適化 ====&lt;br /&gt;
&lt;br /&gt;
If you are deploying stacked filesystem encryption to achieve zero-knowledge synchronization with third-party-controlled locations such as cloud-storage services, you may want to consider alternatives to eCryptfs and EncFS, since these are not optimized for transmission of files over the Internet. There are some solutions designed for this purpose instead:&lt;br /&gt;
&lt;br /&gt;
* [[gocryptfs]]&lt;br /&gt;
* {{AUR|cryptomator}} or {{AUR|cryptomator-bin}} (multi-platform)&lt;br /&gt;
* {{Pkg|cryfs}}&lt;br /&gt;
&lt;br /&gt;
Note that some cloud-storage services offer zero-knowledge encryption directly through their own [[アプリケーション一覧/インターネット#Cloud synchronization clients|client applications]].&lt;br /&gt;
&lt;br /&gt;
===ブロックデバイスの暗号化===&lt;br /&gt;
&lt;br /&gt;
一方、ブロックデバイス暗号化はファイルシステムレイヤーの&#039;&#039;下&#039;&#039;で動作して、特定のブロックデバイス (つまり、ディスクやパーティション全体、または仮想的なループバックデバイスとして振る舞うファイル) に書き込まれる全てのデータが暗号化されます。このため、ブロックデバイスがオフラインのときは、中身が全てランダムなデータの巨大なブロブのように見え、ファイルシステムやデータに何が含まれているのか判断できなくなります。データにまたアクセスするときは、保護されたコンテナ (この場合、ブロックデバイス) を特殊な方法で任意の場所にマウントします。&lt;br /&gt;
&lt;br /&gt;
Arch Linux では&amp;quot;ブロックデバイス暗号化&amp;quot;として以下の方法が利用できます:&lt;br /&gt;
&lt;br /&gt;
;loop-AES: loop-AES は cryptoloop の後継で、システム暗号化のためのセキュアで高速なソリューションです。ただし、標準にないカーネルのサポートが必要になるため loop-AES は他の選択肢と比べてユーザーフレンドリーとは言い難いかもしれません。&lt;br /&gt;
&lt;br /&gt;
;dm-crypt: [[dm-crypt]] は Linux カーネルによって提供されている標準の device-mapper 暗号化機能です。直接使うことでパーティションやキーの管理のあらゆることを完全にコントロールすることができます。dm-crypt の管理はユーザースペースユーティリティの {{Pkg|cryptsetup}} を使って行います。次のタイプのブロックデバイス暗号化に使用することが可能です: &#039;&#039;LUKS&#039;&#039; (デフォルト), &#039;&#039;plain&#039;&#039;, そして機能制限がありますが &#039;&#039;loopAES&#039;&#039; と &#039;&#039;Truecrypt&#039;&#039; デバイス。&lt;br /&gt;
:* デフォルトで使用される LUKS は dm-crypt をセットアップするのに必要な情報を全てディスクに保存する便利なレイヤーで、使いやすさと暗号のセキュリティを増すためにパーティションとキー管理を抽象化します。&lt;br /&gt;
:* plain dm-crypt モードは、オリジナルのカーネルの機能であり、便利なレイヤーを使いません。レイヤーを使った時と同じ暗号強度を確保するのは難しくなります。そうしようとすると、結果的にキー (パスフレーズまたはキーファイル) が長くなってしまいます。しかしながら、下で説明しているように利点も存在します。&lt;br /&gt;
&lt;br /&gt;
;TrueCrypt: [[TrueCrypt]] の開発者は2014年5月にサポートを終了しています。それ以降脆弱性が修正されていないため、使用してはなりません。&lt;br /&gt;
&lt;br /&gt;
;VeraCrypt: TureCryptの後継です。&lt;br /&gt;
&lt;br /&gt;
選択するレイヤーの実用性については、下の[[#実用性|比較表]]を見て下さい。[http://ksouedu.com/doc/ecryptfs-utils/ecryptfs-faq.html#compare eCryptfs] についての記事も参照。&lt;br /&gt;
&lt;br /&gt;
=== Block device vs stacked filesystem encryption ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable left-align-row-headers&amp;quot; style=&amp;quot;text-align:center;&amp;quot;&lt;br /&gt;
! Aspect&lt;br /&gt;
! {{B|Block device encryption}}&lt;br /&gt;
! {{V|Stacked filesystem encryption}}&lt;br /&gt;
|-&lt;br /&gt;
! Encrypts&lt;br /&gt;
| whole block devices&lt;br /&gt;
| files&lt;br /&gt;
|-&lt;br /&gt;
! Container for encrypted data may be...&lt;br /&gt;
| a disk or disk partition / a file as loop device&lt;br /&gt;
| a directory in an existing file system&lt;br /&gt;
|-&lt;br /&gt;
! Relation to filesystem&lt;br /&gt;
| operates below filesystem layer: does not care whether the content of the encrypted block device is a filesystem, a partition table, a LVM setup, or anything else&lt;br /&gt;
| adds an additional layer to an existing filesystem, to automatically encrypt/decrypt files whenever they are written/read&lt;br /&gt;
|-&lt;br /&gt;
! File metadata (number of files, dir structure, file sizes, permissions, mtimes, etc.) is encrypted&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&amp;lt;br&amp;gt;(file and dir names can be encrypted though)&lt;br /&gt;
|-&lt;br /&gt;
! Can be used to custom-encrypt whole hard drives (including partition tables)&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
|-&lt;br /&gt;
! Can be used to encrypt swap space&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
| {{No}}&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
! Can be used without pre-allocating a fixed amount of space for the encrypted data container&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
! Can be used to protect existing filesystems without block device access, e.g. NFS or Samba shares, cloud storage, etc.&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
! Allows offline file-based backups of encrypted files&lt;br /&gt;
| {{No}}&lt;br /&gt;
| {{Yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===比較表===&lt;br /&gt;
&amp;quot;dm-crypt +/- LUKS&amp;quot; のカラムは LUKS (&amp;quot;+&amp;quot;) と plain (&amp;quot;-&amp;quot;) 両方の暗号化モードにおける dm-crypt の機能を示しています。特定の機能が LUKS の使用を必要とする場合、そのことは &amp;quot;(LUKS を使用)&amp;quot; で表されます。同じように &amp;quot;(LUKS を使用しない)&amp;quot; はその機能を実現するのに LUKS の使用が逆効果であり、plain モードを使うべきことを示しています。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:center; cell-padding:100px; &amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
=====&#039;&#039;概要&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent; width:20px&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
タイプ&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | ブロックデバイスの暗号化&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | スタックファイルシステムの暗号化&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
主なセールスポイント&lt;br /&gt;
| 最古の手段であり、おそらく最速であり、レガシーなシステムでも動作します&lt;br /&gt;
| Linux におけるブロックデバイス暗号化のデファクトスタンダードであり柔軟性があります&lt;br /&gt;
| 携帯性が高く、洗練された、自己完結型の暗号化ソリューション&lt;br /&gt;
| 活発に開発されている TrueCrypt のフォークで、デファクトスタンダードの代替&lt;br /&gt;
| EncFS よりも若干高速で、暗号化されたファイルは個別にシステム間で移動できます&lt;br /&gt;
| 一番使うのが簡単で、root 以外による管理をサポートしています&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
Arch Linux における利用手段&lt;br /&gt;
| カスタムカーネルの手動コンパイルが必須&lt;br /&gt;
| &#039;&#039;カーネルモジュール:&#039;&#039; デフォルトのカーネルに含まれています; &#039;&#039;ツール:&#039;&#039; {{Pkg|device-mapper}}, {{Pkg|cryptsetup}} [core]&lt;br /&gt;
| {{pkg|truecrypt}} [extra] (開発終了) または後方互換のある {{pkg|veracrypt}} [community]&lt;br /&gt;
| {{pkg|veracrypt}} [community]&lt;br /&gt;
| &#039;&#039;カーネルモジュール:&#039;&#039; デフォルトのカーネルに含まれています; &#039;&#039;ツール:&#039;&#039; {{Pkg|ecryptfs-utils}} [community]&lt;br /&gt;
| {{Pkg|encfs}} [community]&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ライセンス&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
| TrueCrypt License 3.1&amp;lt;sup&amp;gt;[[#参照|[1]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| Apache License 2.0, 一部はTrueCrypt License v3.0&amp;lt;sup&amp;gt;[[#参照|[1]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| GPL&lt;br /&gt;
| GPL&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
=====&#039;&#039;基本的な分類&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
暗号化の対象&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | ブロックデバイス全体&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | ファイル&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
暗号化されたデータのコンテナ&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; |&lt;br /&gt;
* ディスクまたはディスクパーティション&lt;br /&gt;
* 仮想パーティションとして作用するファイル&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
* 既存のファイルシステムのディレクトリ&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ファイルシステムとの関係&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | ファイルシステムレイヤーの下で動作し、暗号化されたブロックデバイスの中身がファイルシステム、パーティションテーブル、LVM のどれであるかには関しない&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | 既存のファイルシステムにレイヤーを追加して、ファイルが書き込まれたり読み込まれた時に自動的に暗号化または復号化を行う&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
暗号化の実装空間&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; | カーネル空間&lt;br /&gt;
| ユーザー空間&amp;lt;br&amp;gt;&#039;&#039;(FUSE を使用)&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
暗号メタデータの保存場所&lt;br /&gt;
| ?&lt;br /&gt;
| LUKS を使用: LUKS ヘッダー&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;2&amp;quot; | (復号化された) デバイスの冒頭/最後 ([http://www.truecrypt.org/docs/volume-format-specification フォーマット])&lt;br /&gt;
| 暗号化されたファイルのヘッダー&lt;br /&gt;
| EncFs コンテナのトップレベルにあるコントロールファイル&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
暗号鍵の保存場所&lt;br /&gt;
| ?&lt;br /&gt;
| LUKS を使用: LUKS ヘッダー&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;1&amp;quot; | 何処にでも保存できるキーファイル&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;実用性&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ファイルのメタデータ (ファイルの数, ディレクトリ構造, ファイルサイズ, パーミッション, 更新時刻など) の暗号化&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&#039;&#039;(ファイルやディレクトリの名前は暗号化できます)&#039;&#039;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
(パーティションテーブルを含む) ハードドライブ全体の暗号化&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
スワップ領域の暗号化&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
あらかじめ特定のサイズのスペースを暗号化データコンテナに割り当てなくても使用できるか&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ブロックデバイスにアクセスできない既存のファイルシステム (NFS や Samba の共有、クラウドストレージなど) の保護に使用できるか&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&amp;lt;sup&amp;gt;[[#参照|[2]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
暗号化されたファイルのファイルベースのオフラインバックアップ&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; | &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; | &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
=====&#039;&#039;ユーザビリティ&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ログイン時の自動マウントのサポート&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
アイドル状態による自動アンマウントのサポート&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
root 以外のユーザーによる暗号化されたデータのコンテナの作成と破壊&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| 制限あり&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
GUI&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;セキュリティ&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
サポートされている暗号&lt;br /&gt;
| AES&lt;br /&gt;
| AES, Anubis, CAST5/6, Twofish, Serpent, Camellia, Blowfish, ... (カーネルの Crypto API が用意している全ての暗号)&lt;br /&gt;
| AES, Twofish, Serpent&lt;br /&gt;
| AES, Twofish, Serpernt, Camellia, Kuznyechik&lt;br /&gt;
| AES, Blowfish, Twofish...&lt;br /&gt;
| AES, Blowfish, Twofish, その他システムで使える暗号&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ソルティングのサポート&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;(LUKS を使用)&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| ?&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
複数の暗号による多段処理のサポート&lt;br /&gt;
| ?&lt;br /&gt;
| 複数のブロックデバイスを段階的に暗号化することは可能&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
キースロットの拡散のサポート&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;(LUKS を使用)&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
キースクラブに対する保護&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;(LUKS を使用しない)&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
同一の暗号化されたデータに対して複数のキー (別個に無効にできる) のサポート&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;(LUKS を使用)&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;パフォーマンス&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
マルチスレッドのサポート&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;sup&amp;gt;[[#参照|[8]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ハードウェア支援暗号化のサポート&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;sup&amp;gt;[[#参照|[13]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;border-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;ブロックデバイス暗号化特有の事項&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; rowspan=&amp;quot;2&amp;quot; style=&amp;quot;border-color:transparent&amp;quot; |&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
所定の暗号化済みのブロックデバイスを (手動で) リサイズすることのサポート&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;4&amp;quot; style=&amp;quot;border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;7&amp;quot; style=&amp;quot;border-left-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
=====&#039;&#039;スタックファイルシステム暗号化特有の事項&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;6&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
サポートされるファイルシステム&lt;br /&gt;
| ext3, ext4, xfs (注意事項あり), jfs, nfs...&lt;br /&gt;
| ext3, ext4, xfs (with caveats), jfs, nfs, cifs...[https://github.com/vgough/encfs]&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;6&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ファイル名の暗号化&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;6&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
ファイル名の暗号化を&#039;&#039;しない&#039;&#039;機能&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;6&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
スパースファイルの最適化処理&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:160%; color:#CF2525;&amp;quot;&amp;gt;✖&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;height:20px; border-color:transparent&amp;quot; |&lt;br /&gt;
| colspan=&amp;quot;5&amp;quot; style=&amp;quot;border-right-color:transparent&amp;quot; |&lt;br /&gt;
|-&lt;br /&gt;
| colspan=&amp;quot;3&amp;quot; style=&amp;quot;border-left-color:transparent; border-top-color:transparent; text-align:left;&amp;quot; |&lt;br /&gt;
&lt;br /&gt;
=====&#039;&#039;互換性と普及度&#039;&#039;=====&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | Loop-AES&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | dm-crypt +/- LUKS&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | TrueCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | VeraCrypt&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | eCryptfs&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;background:#E2E2E2&amp;quot; | EncFs&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
サポートされる Linux カーネルバージョン&lt;br /&gt;
| 2.0 以上&lt;br /&gt;
| CBC モード 2.6.4, ESSIV 2.6.10, LRW 2.6.20, XTS 2.6.24&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| 2.4 以上&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; rowspan=&amp;quot;3&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; | 暗号化されたデータにアクセスできるオペレーティングシステム&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; | Windows&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;sup&amp;gt;[[#参照|[3]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| ?&amp;lt;sup&amp;gt;[[#参照|[4]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;sup&amp;gt;[[#参照|[9]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; | macOS&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;sup&amp;gt;[[#参照|[5]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; | FreeBSD&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;(VeraCrypt を使用)&lt;br /&gt;
| &amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&lt;br /&gt;
| ?&lt;br /&gt;
| &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;span style=&amp;quot;font-size:210%; color:#5F9E23;&amp;quot;&amp;gt;✔&amp;lt;/span&amp;gt;&amp;lt;sup&amp;gt;[[#参照|[6]]]&amp;lt;/sup&amp;gt;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
| style=&amp;quot;border-left-color:transparent; border-bottom-color:transparent&amp;quot; |&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; colspan=&amp;quot;2&amp;quot; style=&amp;quot;text-align:left; font-weight:normal; color:#393939; background:#E2E2E2; padding:0 6px&amp;quot; |&lt;br /&gt;
使用しているディストリビューション&lt;br /&gt;
| ?&lt;br /&gt;
| &lt;br /&gt;
* Debian/Ubuntu インストーラ (システム暗号化)&lt;br /&gt;
* Fedora インストーラ&lt;br /&gt;
| ?&lt;br /&gt;
| ?&lt;br /&gt;
|&lt;br /&gt;
* Ubuntu インストーラ (ホームディレクトリの暗号化)&lt;br /&gt;
* Chromium OS (キャッシュされたユーザーデータの暗号化&amp;lt;sup&amp;gt;[[#参照|[7]]]&amp;lt;/sup&amp;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;
どのディスク暗号化をセットアップするのが適切なのかはあなたの目的 (上の [[#なぜ暗号化を使うのか?]] を読んで下さい) とシステムパラメータによって様々です。&amp;lt;br&amp;gt;&lt;br /&gt;
とりわけ、以下の質問に答える必要があるでしょう:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;あなたが身を守りたいのはどのような&amp;quot;攻撃者&amp;quot;からか?&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;システムの電源がオフになっていたり盗まれたりしたときにディスクを詮索するカジュアルなコンピュータユーザー&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;あなたがシステムを使用する前後に繰り返しシステムに読み書きアクセスをすることができるプロの暗号解読者&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;その中間&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;どの暗号化ストラテジーを使用するのか?&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;データ暗号化&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;システム暗号化&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;その中間&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;スワップや {{ic|/tmp}} などはどうすればいいか?&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;無視する、データが流出しないことを祈る&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;無効化する、または ramdisk としてマウント&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;暗号化する &#039;&#039;(完全なディスク暗号化の一部として、または別個に暗号化)&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;どうやってディスクの暗号化された部分を解除するか?&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;パスフレーズ &#039;&#039;(ログインパスワードと同じパスワード、または別個のパスワード)&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;キーファイル &#039;&#039;(例: 安全な場所に置いたり常に持ち歩いている USB スティックに保存)&#039;&#039;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;両方&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ディスクの暗号化された部分を解除するのは&#039;&#039;いつ&#039;&#039;か?&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;起動する前&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;起動中&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ログイン時&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&#039;&#039;(ログイン後に)&#039;&#039; 必要に応じて手動で&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;複数のユーザーに便宜をはかるにはどうすればいいか?&lt;br /&gt;
&amp;lt;ul style=&amp;quot;list-style-type:circle;color:#777;font-size:90%;line-height:1em;margin-top:0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;気にしない&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;パスフレーズ/キーを共有する&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ディスクの同一の暗号化部分に対して別個に発行・無効化できるパスフレーズ/キーを使う&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;ユーザーごとにディスクの暗号化部分を分ける&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
さらに技術的な選択をする必要があります (上の [[#利用可能な手段]] や、下の [[#暗号化の仕組み]] を参照):&lt;br /&gt;
&lt;br /&gt;
* スタックファイルシステムの暗号化 vs. ブロックデバイスの暗号化&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;
;例 1: [[EncFS]] を使ってユーザーのホームディレクトリに &amp;quot;~/Private&amp;quot; という仮想フォルダを作って暗号化する、シンプルなデータ暗号化 (内蔵ハードドライブ)&amp;lt;span style=&amp;quot;color:#777&amp;quot;&amp;gt;&amp;lt;br&amp;gt;└──&amp;gt; ~/.Private のファイルは暗号化されてディスク上に保存されます&amp;lt;br&amp;gt;└──&amp;gt; 必要に応じて専用のパスフレーズでロックを解除します&amp;lt;/span&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;例 2: [[TrueCrypt]] で暗号化した USB ドライブによる、シンプルなデータ暗号化 (リムーバブルメディア)&amp;lt;span style=&amp;quot;color:#777&amp;quot;&amp;gt;&amp;lt;br&amp;gt;└──&amp;gt; コンピュータに接続したときにロックを解除します (専用のパスフレーズと、キーファイルを変換した ~/photos/2006-09-04a.jpg を使用)&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;例 3: [[ECryptfs]] でそれぞれのユーザーの&#039;&#039;ホームディレクトリ&#039;&#039;を暗号化する、部分的なシステム暗号化&amp;lt;span style=&amp;quot;color:#777&amp;quot;&amp;gt;&amp;lt;br&amp;gt;└──&amp;gt; 各々のユーザーのログイン時に、ログインパスフレーズを使ってロックを解除します&amp;lt;br&amp;gt;└──&amp;gt; &#039;&#039;スワップ&#039;&#039;と &#039;&#039;/tmp&#039;&#039; パーティションは [[dm-crypt|Dm-crypt と LUKS]] で暗号化して、セッションごとに自動生成される使い捨てのキーを使用&amp;lt;span style=&amp;quot;color:#777&amp;quot;&amp;gt;&amp;lt;br&amp;gt;└──&amp;gt; slocate (やその他のアプリ) による /home の中身のインデックス作成/キャッシュは無効にする&lt;br /&gt;
&lt;br /&gt;
;例 4: システム暗号化 - /boot パーティションを除いてハードドライブ全体を [[dm-crypt|Dm-crypt と LUKS]] で暗号化 &amp;lt;span style=&amp;quot;color:#777&amp;quot;&amp;gt;&amp;lt;br&amp;gt;└──&amp;gt; 起動中に、パスフレーズまたはキーファイルが保存された USB スティックを使ってロックを解除します&amp;lt;br&amp;gt;└──&amp;gt; ユーザーごとに別々のパスフレーズ/キーを使用 - 別個に無効化可能&amp;lt;br&amp;gt;└──&amp;gt; [[Dm-crypt/システム全体の暗号化#LUKS on LVM|LUKS を LVM 上に配置]]して複数のドライブを跨ったりするパーティションレイアウトにおける暗号化の柔軟性を確保&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;例 5: 徹底して隠されたシステム暗号化 - [[dm-crypt|plain dm-crypt]] によるハードドライブ全体の暗号化 &amp;lt;span style=&amp;quot;color:#777&amp;quot;&amp;gt;&amp;lt;br&amp;gt;└──&amp;gt; 専用のパスフレーズとキーファイルが入った USB スティックを使用して USB ブート&amp;lt;br&amp;gt;└──&amp;gt; マウントする前にデータの状態をチェックします&amp;lt;br&amp;gt;└──&amp;gt; /boot パーティションは先の USB スティック上に配置&amp;lt;/span&amp;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;
ディスク (の一部) に暗号化をセットアップする前に、まず確実にディスクを消去するようにしてください。ディスクを消去する際にはドライブ全体またはパーティション全体をゼロバイトやランダムなバイトのストリームで上書きします。これを行う理由は以下の通り:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;以前に保存されていたデータのリカバリを防ぐ&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
たとえディスクを暗号化したとしても、実際のセクタは必要に応じて、ファイルシステムが特定のセクタにデータを作成したり修正したときにしか上書きされることはありません (下の [[#暗号化の仕組み]] を参照)。ファイルシステムから&amp;quot;使用されていない&amp;quot;セクタは弄られることがないため、前に使っていたファイルシステムのデータが残ってしまっている可能性があります。先にドライブに保存していたデータを完全に[[Wikipedia:Data_recovery|リカバリ]]不可能にするには、手動でデータを消去するしか道はないでしょう。&amp;lt;br&amp;gt;データを完全に消去するということについては、ゼロバイトを使用するかランダムバイトを使用するかの違いはありません (ゼロバイトで消去するほうが高速です)。&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;暗号化されたドライブの利用状況の発覚を防ぐ&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
理想を言えば、ディスクの暗号化部分はランダムなデータと区別を付かないようにするほうが望ましいでしょう。暗号化データを含んでいるセクタの数を知ることができなくなるということ自体が (完全な機密性を確保する上で) 好ましいですし、暗号化を解除しようと試みる攻撃者に対してセキュリティを増すことにもつながります。&amp;lt;br&amp;gt;利用状況の発覚を防ぐということに関しては、高品質なランダムバイトを使用してディスクを消去するのが重要です。&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
二番目の理由はブロックデバイスの暗号化をしている場合にのみ意味をなします。スタックファイルシステムの暗号化では簡単に暗号化データを突き止められてしまいます (ホストファイルシステムに暗号化されたファイルがあることは隠しようがありません)。また、たとえ特定のフォルダだけを暗号化したいという場合でも、暗号化されてない状態でフォルダに保存されていたファイルを削除するためには ([[Wikipedia:ja:フラグメンテーション|断片化]]している可能性があるため) パーティション全体を消去する必要があります。同一パーティションに別のフォルダが存在する場合、一度バックアップして、削除してから元のパーティションに戻すようにします。&lt;br /&gt;
&lt;br /&gt;
ディスク消去することを決めたら、[[ディスクの完全消去]]の記事を参照してください。&lt;br /&gt;
&lt;br /&gt;
{{Tip|ハードディスクドライブを完全に消去する方法を決めるときは、暗号化ドライブとして使用する以上、消去をするのは一回だけで十分だということを覚えておいてください。}}&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;&#039;&#039;に分割されます。例えば512バイト (4096ビット) など。暗号化・復号化はセクタ単位で行われるので、ディスク上のブロックデバイスやファイルの n 番目のセクタには、元のデータの n 番目のセクタを暗号化したものが保存されます。&lt;br /&gt;
&lt;br /&gt;
オペレーティングシステムやアプリケーションがブロックデバイス・ファイルから特定のデータを要求した場合、そのデータが含まれているセクタ全体がディスクから読み込まれて、即座に復号化され、一時的にメモリに保存されます:&lt;br /&gt;
&lt;br /&gt;
           ╔═══════╗&lt;br /&gt;
  sector 1 ║&amp;quot;???..&amp;quot;║&lt;br /&gt;
           ╠═══════╣         ╭┈┈┈┈┈╮&lt;br /&gt;
  sector 2 ║&amp;quot;???..&amp;quot;║         ┊ key ┊&lt;br /&gt;
           ╠═══════╣         ╰┈┈┬┈┈╯&lt;br /&gt;
           :       :            │&lt;br /&gt;
           ╠═══════╣            ▼             ┣┉┉┉┉┉┉┉┫&lt;br /&gt;
  sector n ║&amp;quot;???..&amp;quot;║━━━━━━━(decryption)━━━━━━▶┋&amp;quot;abc..&amp;quot;┋ sector n&lt;br /&gt;
           ╠═══════╣                          ┣┉┉┉┉┉┉┉┫&lt;br /&gt;
           :       :&lt;br /&gt;
           ╚═══════╝&lt;br /&gt;
  &lt;br /&gt;
           encrypted                          unencrypted&lt;br /&gt;
      blockdevice or                          data in RAM&lt;br /&gt;
        file on disk&lt;br /&gt;
&lt;br /&gt;
同じように、書き込み操作のときは、該当箇所のセクタが全て再暗号化されます (他のセクタに変更が加えられることはありません)。&lt;br /&gt;
&lt;br /&gt;
データを暗号化・復号化するために、ディスク暗号化システムはディスクに関連付けられたユニークな秘密鍵を知る必要があります。暗号化されたブロックデバイスやフォルダをマウントするには、適切な鍵が必要です (以後「マスター鍵」と呼びます)。&lt;br /&gt;
&lt;br /&gt;
暗号化のセキュリティでは鍵のエントロピーが一番重要です。ランダムに生成された一定の長さ (例えば32バイト=256ビット) のバイト文字列が望ましいですが、覚えづらい上にマウント時に手動で入力するのは苦痛です。&lt;br /&gt;
&lt;br /&gt;
そこで2つの方法があります。1番目の方法はマスター鍵のエントロピーを増大させる暗号化アプリケーションです。通常は人間が扱える程度のパスフレーズが用いられます。様々なタイプの暗号化方法があり[[#比較表|比較表]]ではそれぞれの特徴を列記しています。そして、2番目の方法は高エントロピーのキーファイルを作成して暗号化するデータドライブとは別のメディアに保存する方式です。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;参照:&#039;&#039;&lt;br /&gt;
* [[Wikipedia:ja:認証付き暗号]]&lt;br /&gt;
&lt;br /&gt;
===鍵とキーファイルとパスフレーズ===&lt;br /&gt;
&lt;br /&gt;
以下はキーファイルでマスター鍵を安全に保存する方法の例です:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;&#039;&#039;プレーンテキストのキーファイルに保存&#039;&#039;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
マスター鍵をファイルに保存するのは最も単純な方法です。ファイル (キーファイル) は USB メモリなどに保存して、安全な場所に保管しておき、ディスク上の暗号データをマウントしたいときだけコンピュータに接続します (例: 起動時やログイン時)。&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;&#039;&#039;パスフレーズで保護したキーファイルあるいはディスクに保存&#039;&#039;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
マスター鍵 (と暗号データ) は秘密のパスフレーズで保護することができます。暗号化したブロックデバイスやフォルダをマウントするたびに思い出して入力する必要があります。詳しくは下の[[#暗号メタデータ]]を見てください。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;&amp;lt;p&amp;gt;&#039;&#039;&#039;&#039;&#039;セッションごとにランダムに生成&#039;&#039;&#039;&#039;&#039;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
スワップ領域や {{ic|/tmp}} パーティションを暗号化する場合など、ときとしてマスター鍵を必ずしも保存しなくてよい場合があります。セッション毎に使い捨てのキーをランダムに生成するのであれば、ユーザーが何かする必要はありません。その場合、パーティションをアンマウントするとパーティションに書き込まれたデータを誰も復号化できなくなります。暗号化するのが一時ファイルなどの場合はそれで特に問題ありません。&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;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;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 ╭┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╮                         ╭┈┈┈┈┈┈┈┈┈┈┈╮&lt;br /&gt;
 ┊ mount passphrase ┊━━━━━⎛key derivation⎞━━━▶┊ mount key ┊&lt;br /&gt;
 ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╯ ,───⎝   function   ⎠    ╰┈┈┈┈┈┬┈┈┈┈┈╯&lt;br /&gt;
 ╭──────╮            ╱                              │&lt;br /&gt;
 │ salt │───────────´                               │&lt;br /&gt;
 ╰──────╯                                           │&lt;br /&gt;
 ╭─────────────────────╮                            ▼         ╭┈┈┈┈┈┈┈┈┈┈┈┈╮&lt;br /&gt;
 │ encrypted master key│━━━━━━━━━━━━━━━━━━━━━━(decryption)━━━▶┊ master key ┊&lt;br /&gt;
 ╰─────────────────────╯                                      ╰┈┈┈┈┈┈┈┈┈┈┈┈╯&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;鍵導出関数&#039;&#039;&#039; (例: PBKDF2 や scrypt) は意図的に低速にしか動作しないようになっており (ハッシュ関数を何度も繰り返し使用します、例えば HMAC-SHA-512 を1000回実行)、総当り攻撃によってパスフレーズを見つけ出すことが事実上不可能です。正しいパスワードを持っているユーザーの場合、計算する必要があるのは一度だけなので、多少遅くても問題になりません。&lt;br /&gt;
&lt;br /&gt;
また、ディスク暗号化をセットアップするときにランダムに生成される &amp;quot;&#039;&#039;&#039;salt&#039;&#039;&#039;&amp;quot; を追加引数として使います。salt は暗号メタデータに含まれ暗号化されていない状態で保存されます。セットアップのたびに異なる値となるため、あらかじめ計算済みのテーブルを使って鍵導出関数に対して総当り攻撃をすることが不可能になります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;暗号化されたマスター鍵&#039;&#039;&#039;は暗号化されたデータと一緒にディスク上に保存するため、暗号化データの機密性は完全に秘密のパスフレーズに依存します。&lt;br /&gt;
&lt;br /&gt;
USB スティックなどのキーファイルに暗号化したマスター鍵を保存することでセキュリティをさらに向上させることも可能です。いわゆる&#039;&#039;&#039;二段階認証&#039;&#039;&#039;です: 暗号化されたデータにアクセスするにはあなただけが知っているもの (パスフレーズ) に加えて、あなただけが持っているもの (キーファイル) も必要となります。&lt;br /&gt;
&lt;br /&gt;
二段階認証を実現する他の方法として、上記の鍵導出を強化してパスフレーズと (USB スティックなどに保存した) 外部のファイルに含まれるバイトデータを数学的に「ミックス」してから鍵導出関数に渡すという手段もあります。使用するファイルは何でもかまいません。通常の JPEG 画像などであれば[[#もっともらしい否認]]にも有効でしょう。画像ではありますが、ここでは同じ「キーファイル」となります。&lt;br /&gt;
&lt;br /&gt;
導出したマスター鍵は暗号化ブロックデバイスやフォルダがマウントされている間だけ、メモリ上に安全に保管されます (カーネルのキーリングなど)。&lt;br /&gt;
&lt;br /&gt;
通常はディスクデータを暗号化・復号化するのにマスター鍵が直接使われることはありません。例えば、スタックファイルシステム暗号化の場合、ファイルにはそれぞれ別々の暗号鍵が自動的に割り当てられます。ファイルを読み書きしたくなったら、最初にメイン鍵を使ってファイルの鍵を復号化してから、ファイルの中身が復号化・暗号化できるようになります:&lt;br /&gt;
&lt;br /&gt;
                           ╭┈┈┈┈┈┈┈┈┈┈┈┈╮&lt;br /&gt;
                           ┊ master key ┊&lt;br /&gt;
   &#039;&#039;file on disk:&#039;&#039;           ╰┈┈┈┈┈┬┈┈┈┈┈┈╯&lt;br /&gt;
  ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┐        │&lt;br /&gt;
  ╎╭───────────────────╮╎        ▼          ╭┈┈┈┈┈┈┈┈┈┈╮&lt;br /&gt;
  ╎│ encrypted file key│━━━━(decryption)━━━▶┊ file key ┊&lt;br /&gt;
  ╎╰───────────────────╯╎                   ╰┈┈┈┈┬┈┈┈┈┈╯&lt;br /&gt;
  ╎┌───────────────────┐╎                        ▼           ┌┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┐&lt;br /&gt;
  ╎│ encrypted file    │◀━━━━━━━━━━━━━━━━━(de/encryption)━━━▶┊ readable file ┊&lt;br /&gt;
  ╎│ contents          │╎                                    ┊ contents      ┊&lt;br /&gt;
  ╎└───────────────────┘╎                                    └┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┘&lt;br /&gt;
  └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ┘&lt;br /&gt;
&lt;br /&gt;
同じように、スタックファイルシステム暗号化の場合、ファイル名を暗号化するときは別の鍵 (例: フォルダごとに割り振られた鍵) が使われます。&lt;br /&gt;
&lt;br /&gt;
ブロックデバイス暗号化の場合、デバイスごと、つまり全てのデータで使われるのはひとつのマスター鍵です。一部のブロックデバイス暗号化では同一デバイスに複数のパスフレーズやキーファイルを割り当てることができますが、できないものもあります。上記の関数を使ってマスター鍵を保全する場合もあればキーのセキュリティを完全にユーザーに委ねる場合もあります。例として [[dm-crypt]] の plain モードと LUKS モードで使用される暗号パラメータで説明しましょう。&lt;br /&gt;
&lt;br /&gt;
両方のモードで使用するパラメータを比較すると、dm-crypt の plain モードではキーファイルの場所に関するパラメータがあることに気づくでしょう (例: {{ic|--keyfile-size}}, {{ic|--keyfile-offset}})。dm-crypt の LUKS モードではキーファイルの場所を指定する必要はありません。各ブロックデバイスのヘッダーに暗号のメタデータが含まれるためです。ヘッダーには使用する暗号、暗号化されたマスター鍵、そして鍵導出に必要なパラメータが存在します。最後のパラメータは最初にマスター鍵を暗号化したときに使用したオプションから生成されます (例: {{ic|--iter-time}}, {{ic|--use-random}})。&lt;br /&gt;
&lt;br /&gt;
暗号化手段のメリット・デメリットについては[[#比較表]]やそれぞれのページを参照してください。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;参照:&#039;&#039;&lt;br /&gt;
* [[Wikipedia:ja:パスワード]]&lt;br /&gt;
* [[Wikipedia:ja:鍵 (暗号)]]&lt;br /&gt;
* [[Wikipedia:Key_management]]&lt;br /&gt;
* [[Wikipedia:ja:鍵導出関数]]&lt;br /&gt;
&lt;br /&gt;
===暗号と利用モード===&lt;br /&gt;
&lt;br /&gt;
与えられた暗号鍵を使って実際に暗号化データと非暗号化データ (つまり&amp;quot;平文&amp;quot;と&amp;quot;暗号文&amp;quot;) を変換するのに使われるアルゴリズムは &amp;quot;&#039;&#039;&#039;cipher&#039;&#039;&#039;&amp;quot; と呼ばれます。&lt;br /&gt;
&lt;br /&gt;
ディスク暗号化では等長なブロックのデータを処理する&amp;quot;ブロック暗号&amp;quot; (block cipher) が用いられます。ブロック長は16バイト (128ビット) などになります。執筆時点で、主に使われている暗号は以下のとおり:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:0 5em 1.5em 5em;&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left&amp;quot; | &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left&amp;quot; | ブロックサイズ&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left&amp;quot; | キーサイズ&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; style=&amp;quot;text-align:left&amp;quot; | 注記&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align:right&amp;quot; | [[Wikipedia:ja:Advanced_Encryption_Standard|AES]]&lt;br /&gt;
| 128 ビット&lt;br /&gt;
| 128, 192, 256 ビット&lt;br /&gt;
| &#039;&#039;アメリカ政府の &amp;quot;SECRET&amp;quot; または &amp;quot;TOP SECRET&amp;quot; の機密情報を保護するのに足ると NSA によって承認されています (192または256ビットのキーサイズの使用時)。&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align:right&amp;quot; | [[Wikipedia:ja:Blowfish|Blowfish]]&lt;br /&gt;
| 64 ビット&lt;br /&gt;
| 32–448 ビット&lt;br /&gt;
| &#039;&#039;初期のパテントフリーでセキュアな暗号の一つであり誰でも使えるため、Linux ではかなり定着しています。&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align:right&amp;quot; | [[Wikipedia:ja:Twofish|Twofish]]&lt;br /&gt;
| 128 ビット&lt;br /&gt;
| 128, 192, 256 ビット&lt;br /&gt;
| &#039;&#039;Blowfish の後継として開発されましたが、それほど幅広くは利用されていません。&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; style=&amp;quot;text-align:right&amp;quot; | [[Wikipedia:ja:Serpent (暗号)|Serpent]]&lt;br /&gt;
| 128 ビット&lt;br /&gt;
| 128, 192, 256 ビット&lt;br /&gt;
| AES コンペティションの5つの最終候補の中で一番セキュアだと考えられています&amp;lt;sup&amp;gt;[[#参照|[10]]][[#参照|[11]]][[#参照|[12]]]&amp;lt;/sup&amp;gt;。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
セクタの暗号化・復号化 ([[#基本原理|上を参照]]) を行うときはセクタを暗号のブロックサイズにあわせて小さなブロックに分割します。個々のブロックに暗号をどのように適用していくかは特定のルールセット (いわゆる&amp;quot;&#039;&#039;&#039;暗号利用モード&#039;&#039;&#039;&amp;quot;) に従います。&lt;br /&gt;
&lt;br /&gt;
特に手を加えずにそれぞれのブロックを独立して暗号化するのはセキュアではありません (&amp;quot;&#039;&#039;電子符号表 (electronic codebook, ECB)&#039;&#039;&amp;quot; モードと呼ばれます)。平文で同じ16バイトのテキストがあれば、暗号文も常に同じになるため、ディスクに保存されている暗号文から簡単にパターンを見つけ出すことができてしまいます。&lt;br /&gt;
&lt;br /&gt;
実際に広く使われている利用モードは &amp;quot;&#039;&#039;暗号ブロック連鎖 (cipher-block chaining, CBC)&#039;&#039;&amp;quot; です。CBC モードでセクタを暗号化した場合、平文データの各ブロックは前のブロックの暗号文と数学的に混ぜ合わされてから暗号化されます。最初のブロックは前の暗号文がないため、&amp;quot;&#039;&#039;&#039;初期化ベクトル (IV)&#039;&#039;&#039;&amp;quot; と呼ばれる暗号メタデータに保存されている特殊な事前生成済みのデータブロックが使われます:&lt;br /&gt;
&lt;br /&gt;
                                   ╭──────────────╮&lt;br /&gt;
                                   │initialization│&lt;br /&gt;
                                   │vector        │&lt;br /&gt;
                                   ╰────────┬─────╯&lt;br /&gt;
           ╭  ╠══════════╣        ╭─key     │      ┣┉┉┉┉┉┉┉┉┉┉┫        &lt;br /&gt;
           │  ║          ║        ▼         ▼      ┋          ┋         . START&lt;br /&gt;
           ┴  ║&amp;quot;????????&amp;quot;║◀━━━━(cipher)━━━━(+)━━━━━┋&amp;quot;Hello, W&amp;quot;┋ block  ╱╰────┐&lt;br /&gt;
     sector n ║          ║                         ┋          ┋ 1      ╲╭────┘&lt;br /&gt;
   of file or ║          ║──────────────────╮      ┋          ┋         &#039; &lt;br /&gt;
  blockdevice ╟──────────╢        ╭─key     │      ┠┈┈┈┈┈┈┈┈┈┈┨&lt;br /&gt;
           ┬  ║          ║        ▼         ▼      ┋          ┋&lt;br /&gt;
           │  ║&amp;quot;????????&amp;quot;║◀━━━━(cipher)━━━━(+)━━━━━┋&amp;quot;orld !!!&amp;quot;┋ block&lt;br /&gt;
           │  ║          ║                         ┋          ┋ 2&lt;br /&gt;
           │  ║          ║──────────────────╮      ┋          ┋&lt;br /&gt;
           │  ╟──────────╢                  │      ┠┈┈┈┈┈┈┈┈┈┈┨&lt;br /&gt;
           │  ║          ║                  ▼      ┋          ┋&lt;br /&gt;
           :  :   ...    :        ...      ...     :   ...    : ...&lt;br /&gt;
  &lt;br /&gt;
                ciphertext                         plaintext&lt;br /&gt;
                   on disk                         in RAM&lt;br /&gt;
&lt;br /&gt;
復号化するときは、手順が逆になります。&lt;br /&gt;
&lt;br /&gt;
注目に値することの1つは、セクターごとに一意の初期化ベクトルを生成することです。 最も簡単な選択は、セクター番号などのすぐに利用できる値から予測可能な方法で計算することです。 ただし、これにより、システムに繰り返しアクセスする攻撃者が、いわゆる [[wikipedia:Watermarking_attack|watermarkingattack]] を実行できる可能性があります。 これを防ぐために、&#039;&#039; 暗号化されたソルトセクター初期化ベクトル ( &#039;&#039;&#039;ESSIV&#039;&#039;&#039;)&#039;&#039; と呼ばれる方法を使用して、潜在的な攻撃者に完全にランダムに見えるように初期化ベクトルを生成できます。&lt;br /&gt;
&lt;br /&gt;
ディスク暗号化に利用できる他のより複雑な操作モードもいくつかあります。これらは、そのような攻撃に対する組み込みのセキュリティをすでに提供しています(したがって、 ESSIV を必要としません)。&lt;br /&gt;
暗号化されたデータの信頼性をさらに保証できるものもあります(つまり、キーにアクセスできない人によってデータが変更/破損されていないことを確認します)。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;参照:&#039;&#039;&lt;br /&gt;
* [[Wikipedia:Disk_encryption_theory]]&lt;br /&gt;
* [[Wikipedia:ja:ブロック暗号]]&lt;br /&gt;
* [[Wikipedia:ja:暗号利用モード]]&lt;br /&gt;
&lt;br /&gt;
===もっともらしい否認===&lt;br /&gt;
&lt;br /&gt;
[[Wikipedia:Plausible deniability]] を参照してください。&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;
複数のオプションがあり、暗号化コンテナが存在するディスクブロックデバイスをイメージとしてバックアップできます。 {{ic|/dev/sd&#039;&#039;x&#039;&#039;}} または暗号化されたコンテナ内のファイルシステムをバックアップできます。 {{ic|/dev/mapper/&#039;&#039;dm_name&#039;&#039;}} またはファイルをバックアップできます。例: [[rsync]] で。次のセクションでは、各オプションの長所と短所を示します。&lt;br /&gt;
&lt;br /&gt;
==== ディスクブロックデバイスのバックアップ ====&lt;br /&gt;
&lt;br /&gt;
ディスクブロックデバイスのバックアップは次のとおりです。&lt;br /&gt;
&lt;br /&gt;
* 作業コピーと同じレベルのセキュリティでそのまま暗号化&lt;br /&gt;
* LUKS ヘッダーが含まれています&lt;br /&gt;
* 常にディスクブロックデバイスと同じ大きさ&lt;br /&gt;
* 増分バックアップ、圧縮、重複排除などの高度なバックアップ戦略を簡単に許可することはできません&lt;br /&gt;
* 暗号化コンテナも復元されるため、新しいディスクに簡単に復元できます&lt;br /&gt;
&lt;br /&gt;
==== ファイルシステムまたはファイルのバックアップ ====&lt;br /&gt;
&lt;br /&gt;
1つまたは複数のファイルのバックアップは次のとおりです。&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;そのまま&#039;&#039; 暗号化されていない&lt;br /&gt;
* ネットワーク経由で転送する前、またはディスクに保存するときに暗号化する必要があり、追加の作業が必要です&lt;br /&gt;
* 必ずしも作業コピーと同じレベルのセキュリティで暗号化されているとは限りません&lt;br /&gt;
* LUKS ヘッダーは含まれていません&lt;br /&gt;
* ファイルシステムの使用済みスペースと同じ大きさのみ。たとえば、[[Partclone]]&lt;br /&gt;
* 増分バックアップ、圧縮、重複排除などの高度なバックアップ戦略を可能にします&lt;br /&gt;
* LUKS ヘッダーのバックアップを復元するなどして、暗号化コンテナを新しいディスクに手動で復元する必要があります&lt;br /&gt;
&lt;br /&gt;
==== LUKS ヘッダーバックアップ ====&lt;br /&gt;
&lt;br /&gt;
LUKS を使用している場合、[https://wiki.archlinux.jp/index.php/Dm-crypt/%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%AE%E6%9A%97%E5%8F%B7%E5%8C%96#.E3.83.90.E3.83.83.E3.82.AF.E3.82.A2.E3.83.83.E3.83.97.E3.81.A8.E3.83.AA.E3.82.B9.E3.83.88.E3.82.A2 dm-crypt/デバイスの暗号化#バックアップとリストア]を作成できます。特にパスフレーズが取り消されている場合は、これらのバックアップを定期的にチェックして同期するのが理にかなっています。&lt;br /&gt;
&lt;br /&gt;
ただし、データのバックアップがあり、それを復元する場合は、cryptsetupを使用してLUKS暗号化パーティションを最初から再作成してからデータを復元できます。したがって、LUKSヘッダーのバックアップはデータのバックアップよりも重要ではありません。&lt;br /&gt;
&lt;br /&gt;
==参照==&lt;br /&gt;
&lt;br /&gt;
# [[#概要|^]] http://www.truecrypt.org/legal/license を参照&lt;br /&gt;
# [[#実用性|^]] ファイルシステムのひとつのファイルをコンテナとして使うことはできますが(仮想ループバックデバイス)、ファイルシステム(の機能)を使うことはできなくなります。&lt;br /&gt;
# [[#互換性と普及度|^]] [http://www.scherrer.cc/crypt CrossCrypt] - Windows XP や Windows 2000 と互換性のあるオープンソースの AES と TwoFish による Linux の暗号化&lt;br /&gt;
# [[#互換性と普及度|^]] (1) [https://sourceforge.net/projects/freeotfe.mirror/ FreeOTFE (on sf.net)]  (2) [https://web.archive.org/web/20130531062457/http://freeotfe.org/ FreeOTFE (archived)] - Windows 2000 以上 (PC) や Windows Mobile 2003 以上 (PDA) をサポート&lt;br /&gt;
# [[#互換性と普及度|^]] [http://www.arg0.net/encfs-mac-build EncFs build instructions for Mac] を参照&lt;br /&gt;
# [[#互換性と普及度|^]] http://www.freshports.org/sysutils/fusefs-encfs/ を参照&lt;br /&gt;
# [[#互換性と普及度|^]] https://www.chromium.org/chromium-os/chromiumos-design-docs/protecting-cached-user-data を参照&lt;br /&gt;
# [[#互換性と普及度|^]] http://kernelnewbies.org/Linux_2_6_38#head-49f5f735853f8cc7c4d89e5c266fe07316b49f4c&lt;br /&gt;
# [[#互換性と普及度|^]] http://members.ferrara.linux.it/freddy77/encfs.html&lt;br /&gt;
# [[#互換性と普及度|^]] http://csrc.nist.gov/archive/aes/round2/r2report.pdf&lt;br /&gt;
# [[#互換性と普及度|^]] https://www.cl.cam.ac.uk/~rja14/Papers/serpentcase.pdf&lt;br /&gt;
# [[#互換性と普及度|^]] https://www.cl.cam.ac.uk/~rja14/Papers/serpent.pdf&lt;br /&gt;
# [[#パフォーマンス|^]] https://github.com/vgough/encfs/issues/118&lt;br /&gt;
# [[#互換性と普及度|^]] [https://github.com/t-d-k/LibreCrypt LibreCrypt] (旧名 [https://github.com/t-d-k/doxbox DOXBOX]) - 新しいバージョンの Windows におけるオープンな dm-crypt / LUKS のサポート (OTFE のフォークを含む)&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Rsync&amp;diff=23635</id>
		<title>Rsync</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Rsync&amp;diff=23635"/>
		<updated>2022-01-29T10:40:21Z</updated>

		<summary type="html">&lt;p&gt;Shota: 外国語 wiki へのリンクを追加 ( en:Special:PermanentLink/714198 に追従)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:同期]]&lt;br /&gt;
[[Category:バックアップ]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[de:Rsync]]&lt;br /&gt;
[[en:Rsync]]&lt;br /&gt;
[[es:Rsync]]&lt;br /&gt;
[[fr:Rsync]]&lt;br /&gt;
[[ru:Rsync]]&lt;br /&gt;
[[zh-hans:Rsync]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|rsync によるフルシステムバックアップ}}&lt;br /&gt;
{{Related|同期およびバックアッププログラム}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://rsync.samba.org/ rsync] は高速な差分ファイル転送を行うオープンソースのユーティリティです。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[公式リポジトリ]]から {{Pkg|rsync}} を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
​&#039;&#039;rsync&#039;&#039; をソースマシンと転送先マシンの両方にインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
=== フロントエンド ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Grsync|GTK フロントエンド|http://www.opbyte.it/grsync/|{{Pkg|grsync}}}}&lt;br /&gt;
* {{App|gutback|シェルで書かれた rsync ラッパー|https://github.com/gutenye/gutbackup|{{Aur|gutbackup}}}}&lt;br /&gt;
* {{App|JotaSync|​スケジューラ内蔵の rsync 用 Java Swing GUI|https://trixon.se/projects/jotasync/|{{Aur|jotasync}}}}&lt;br /&gt;
* {{App|luckyBackup|​C++ で書かれた Qt フロントエンド|http://luckybackup.sourceforge.net/index.html|{{Aur|luckybackup}}}}&lt;br /&gt;
&lt;br /&gt;
​その他に rsync を使っているツールは以下の通りです: {{Pkg|rdiff-backup}}  、 {{AUR|osync}}。&lt;br /&gt;
&lt;br /&gt;
== cp/mv の代わりとして使う ==&lt;br /&gt;
&lt;br /&gt;
{{Note|1=cp/mv の代わりに rsync を使う事は異なるファイルシステム間では効果的ですが、同じファイルシステム上でコピーや移動する為には効果はないです。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=271953] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
rsync は {{ic|cp}} または {{ic|mv}} コマンドの上位互換として使うことができ、特に大きなファイルのコピーに役立ちます:&lt;br /&gt;
&lt;br /&gt;
 $ rsync -P source destination&lt;br /&gt;
&lt;br /&gt;
{{ic|-P}} オプションは {{Ic|--partial --progress}} と同じで、一部ずつファイルを転送して、転送中にプログレスバーを表示します。&lt;br /&gt;
&lt;br /&gt;
ディレクトリを再帰的にコピーしたいときは {{ic|-r --recursive}} オプションを使用し、相対パス名を使いたい時は {{ic|-R}} を使います (転送先のフォルダでフォルダ全体の階層を再生成します)。&lt;br /&gt;
&lt;br /&gt;
{{ic|cp}} と同様にローカルにコピーする事に使えるだけでなく、例えば異なるホスト間といった、リモート同士でファイルをコピーする事にも使えます。リモートの場所はホスト-コロンシンタックスを使って指示できます:&lt;br /&gt;
&lt;br /&gt;
 $ rsync source host:destination&lt;br /&gt;
&lt;br /&gt;
あるいは&lt;br /&gt;
&lt;br /&gt;
 $ rsync host:source destination&lt;br /&gt;
&lt;br /&gt;
ネットワークを利用したファイルのやりとりには [[SSH]] をデフォルトで使い、{{ic|host}} は実際のホスト名かもしくは {{ic|.ssh/config}} で定義されたプロファイルやエイリアスで指示できます。&lt;br /&gt;
&lt;br /&gt;
ローカルかリモートでのファイルのやりとりに関わらず、 rsync はまず始めにファイル情報を含むファイルリストを作成します (デフォルトでは、ファイル情報はサイズと最後に修正したタイムスタンプから成ります)。このファイルリストは次にファイルを構築する必要があるか否かの判断に利用されます。それぞれのファイルを構築する際には、それぞれのブロックが長さ &#039;&#039;&#039;S&#039;&#039;&#039; バイトでオーバーラップがなくまた長さ &#039;&#039;&#039;S&#039;&#039;&#039; で分割可能なようなオフセットを持つようにブロックに分けられ、弱いチェックサムと強いチェックサムを生成します。これら情報によって、rsync はファイル全体をやりとりすることなく巨大なファイルを構築することができます。実用的かつ数学的な詳細な説明は次にあるので参照してください: [https://rsync.samba.org/how-rsync-works.html rsync がどのように動作するか]、[https://rsync.samba.org/tech_report/tech_report.html rsync のアルゴリズム]。&lt;br /&gt;
&lt;br /&gt;
実用的なデフォルトの設定を手早く使いたい場合は、次の様にしてエイリアスを定義できます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
cpr() {&lt;br /&gt;
  rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 &amp;quot;$@&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
mvr() {&lt;br /&gt;
  rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 --remove-source-files &amp;quot;$@&amp;quot;&lt;br /&gt;
} }}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-hh}}: 数を読み易いフォーマット (human-readable format) で出力します&lt;br /&gt;
* {{ic|1=--info=stats1,progress2}}: {{ic|stats1}} は rsync のファイル移行の統計を verbosity level  1 で出力します。{{ic|progress2}} は全やりとりの進捗を出力し、{{ic|progress1}} はファイル毎に進捗を出力します。&lt;br /&gt;
* {{ic|1=--modify-window=1}}: 2つのファイルのタイムスタンプを比較する際に 1秒以下の違いがあっても同じタイムスタンプとして処理します。&lt;br /&gt;
* {{ic|--remove-source-files}}: 正常にファイルのやりとりができた後に、ソースディレクトリからファイルを削除します。&lt;br /&gt;
&lt;br /&gt;
{{Note|ここでの「チェックサム」は {{ic|--checksum}} オプションでの振る舞いとは読み替えできません。{{ic|--checksum}} オプションはファイルの転送前に使用されるファイルスキップヒューリスティックに影響します。{{ic|--checksum}} とは無関係に、「チェックサム」は、rsync がどのようにファイルを転送するかという意味で、ブロックに基づくファイル構築に常に使われます。}}&lt;br /&gt;
&lt;br /&gt;
=== ​末尾のスラッシュに関する注意事項 ===&lt;br /&gt;
&lt;br /&gt;
Arch はデフォルトで GNU cp (GNU {{Pkg|coreutils}} の一部) を使用します。 ただし、rsync は BSD cp の規則に従います。これは、末尾にスラッシュ 「/」 が付いたソースディレクトリに特別な処理を与えます。&lt;br /&gt;
&lt;br /&gt;
 $ rsync -r source destination&lt;br /&gt;
&lt;br /&gt;
ディレクトリ &amp;quot;destination/source&amp;quot; を &amp;quot;source&amp;quot; の内容で作成するのに対して、&lt;br /&gt;
&lt;br /&gt;
 $ rsync -r source/ destination&lt;br /&gt;
&lt;br /&gt;
​は &amp;quot;source/&amp;quot; 内のすべてのファイルを &amp;quot;destination&amp;quot; にコピーしてその間にサブディレクトリは置きません。もし次を実行した様になります&lt;br /&gt;
&lt;br /&gt;
 $ rsync -r source/. destination&lt;br /&gt;
&lt;br /&gt;
GNU cp は &amp;quot;source&amp;quot; と &amp;quot;source/&amp;quot; を同じように扱うので (&amp;quot;source/.&amp;quot; は違います)、​これらの動作は GNU cp の動作とは異なります。​また、シェルによっては、タブを補完するディレクトリ名の末尾にスラッシュを自動的に付加するものもあります。​これらの要因のために、 rsync を初めて使う、あるいは時々使うユーザの間では、 rsync の異なる動作を忘れてしまい、コマンドラインの最後にあるスラッシュを忘れてしまうことで、混乱を招いたり、重要なファイルを上書きしたりする傾向があります。&lt;br /&gt;
&lt;br /&gt;
したがって、ラッパースクリプトを使用して、rsync を呼び出す前に末尾のスラッシュを自動的に削除することが賢明です:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 new_args=();&lt;br /&gt;
 for i in &amp;quot;$@&amp;quot;; do&lt;br /&gt;
     case $i in /) i=/;; */) i=${i%/};; esac&lt;br /&gt;
     new_args=&amp;quot;$new_args $i&amp;quot;;&lt;br /&gt;
 done&lt;br /&gt;
 exec rsync &amp;quot;${(@)new_args}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
このスクリプトをパスの通った場所に置き、シェルの init ファイル内で rsync というエイリアスを付けられます。&lt;br /&gt;
&lt;br /&gt;
== バックアップユーティリティとして使う ==&lt;br /&gt;
&lt;br /&gt;
rsync プロトコルは最後にバックアップされた時点から変更があったファイルだけを転送することができ、簡単にバックアップの為に使う事ができます。この節では、リムーバルメディアへコピーするといった、シンプルな定期的なバックアップスクリプトを紹介します。&lt;br /&gt;
&lt;br /&gt;
=== 自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
このサンプルを使うには、スクリプトを {{ic|/etc/cron.daily}} ディレクトリに作成して下さい。cron [[デーモン]]をインストールして適切に設定することで毎日実行せせるようになります。&lt;br /&gt;
&lt;br /&gt;
まず、適切なコマンドオプションを含んだスクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/cron.daily/backup|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
rsync -a --delete --quiet /path/to/backup /location/of/backup}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-a}} : ファイルをアーカイブする。ファイルの属性も保存 (ただし ACL やハードリンク、ケイパビリティなどの拡張属性は除外)&lt;br /&gt;
* {{ic|--delete}} : バックアップ元で削除されたファイルはバックアップ先でも同じように削除する&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|/path/to/backup}} はバックアップしたいものに (例えば {{ic|/home}})、{{ic|/location/of/backup}} はバックアップの保存先に変更します (例えば {{ic|/media/disk}})。&lt;br /&gt;
&lt;br /&gt;
最後に、スクリプトを[[ヘルプ:読み方#実行可能属性の付与|実行可能]]にします:&lt;br /&gt;
&lt;br /&gt;
=== SSH を使った自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
[[SSH]] を使ってリモートホストにバックアップする場合、以下のスクリプトを使用:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/cron.daily/backup|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
rsync -a --delete --quiet -e ssh /path/to/backup remoteuser@remotehost:/location/of/backup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-e ssh}} : rsync に SSH を使うことを教える&lt;br /&gt;
* {{ic|remoteuser}} : ホスト {{ic|remotehost}} のユーザー&lt;br /&gt;
* {{ic|-a}} : {{ic|-rlptgoD}} オプションと同義 (recursive, links, perms, times, group, owner, devices)&lt;br /&gt;
&lt;br /&gt;
{{Note|Rsync は、インクリメンタルバックアップでもってソース元のマシンでの状態と合うようにターゲットマシンのファイルを更新しようとします。つまり、SSH を越えてルートユーザがオーナーであるファイルをバックアップする場合 (あるいは {{ic|-a}} などによってパーミッションやオーナシップを保とうとする場合) はターゲットマシンのルートアクセスが必要になります。自動的にこれを実行しようとする場合、SSH デーモンに [https://unix.stackexchange.com/a/92397 パスワード無しの公開鍵] を使ってルートユーザにログインすることを許可するように設定して、rsync をルート権限で実行することが良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager を使った自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトはケーブルを接続した時にバックアップを開始します。&lt;br /&gt;
&lt;br /&gt;
まず、適当なコマンドオプションを含んだスクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/backup|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ x&amp;quot;$2&amp;quot; = &amp;quot;xup&amp;quot; ] ; then&lt;br /&gt;
        rsync --force --ignore-errors -a --delete --bwlimit=2000 --files-from=files.rsync /path/to/backup /location/of/backup&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-a}} : {{ic|-rlptgoD}} オプションと同義 (recursive, links, perms, times, group, owner, devices)&lt;br /&gt;
* {{ic|--files-from}} : ファイルから {{ic|/path/to/backup}} の相対パスを読み込み&lt;br /&gt;
* {{ic|--bwlimit}} : I/O 帯域を制限、単位はキロバイト毎秒&lt;br /&gt;
&lt;br /&gt;
このスクリプトの所有者をルートユーザにして下さい (詳しくは [[NetworkManager#ネットワークサービスと NetworkManager dispatcher|NetworkManager dispatcher]] を参照)。&lt;br /&gt;
&lt;br /&gt;
=== systemd と inotify を使った自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* inotify と systemd の制限により ([http://www.quora.com/Linux-Kernel/Inotify-monitoring-of-directories-is-not-recursive-Is-there-any-specific-reason-for-this-design-in-Linux-kernel この質問と答え] を参照)、再帰的なファイルシステムの監視は不可能です。ディレクトリとその中身を監視することはできますが、サブディレクトリにまで再帰的に実行してその中身を監視することはされません。監視するディレクトリは全て明示的に指定する必要があります (ディレクトリが既に指定した監視ディレクトリの下にあっても記述する必要がある)。&lt;br /&gt;
* このセットアップは [[systemd/ユーザー]]インスタンスをベースにしています。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] の実装など、スケジュールによって適宜バックアップを実行するのではなく、この方法ではバックアップするファイルに変更があった度にバックアップを実行することが可能です。{{ic|systemd.path}} ユニットは {{ic|inotify}} を使ってファイルシステムを監視し、{{ic|systemd.service}} と一緒に使うことでファイルシステムのイベントに合わせてあらゆるプロセスを開始することができます (この場合は &#039;&#039;rsync&#039;&#039; のバックアップ)。&lt;br /&gt;
&lt;br /&gt;
まず、バックアップするファイルを監視する {{ic|systemd.path}} ファイルを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/backup.path|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Checks if paths that are currently being backed up have changed&lt;br /&gt;
&lt;br /&gt;
[Path]&lt;br /&gt;
PathChanged=%h/documents&lt;br /&gt;
PathChanged=%h/music&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
そして変更を検出した時に実行される {{ic|systemd.service}} ファイルを作成します。デフォルトで、パスユニット (ここでは {{ic|backup.path}}) と同じ名前の、拡張子が {{ic|.path}} ではなく {{ic|.service}} のサービスファイルが実行されます (ここでは {{ic|backup.service}})。&lt;br /&gt;
&lt;br /&gt;
{{Note|rsync コマンドを複数実行する必要がある場合は、{{ic|1=Type=oneshot}} を使って下さい。実行する &#039;&#039;rsync&#039;&#039; ごとに、複数の {{ic|1=ExecStart=}} パラメータを指定することができます。もしくは、[[cron]] スクリプトなど、バックアップ作業を全て実行するスクリプトを書いても良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/backup.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Backs up files&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/bin/rsync %h/./documents %h/./music -CERrltm --delete ubuntu:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
これで後は通常の systemd サービスと同じように {{ic|backup.path}} を起動・有効化するだけです。ファイルの変更の監視を始めて {{ic|backup.service}} を自動的に起動します:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 一週間ごとに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
実行毎の完全なバックアップを作成して、ファイルに変更があったものだけの差分バックアップのコピーを分かれたディレクトリに保持しつつ、一週間ごとに差分バックアップを行う便利な rsync のオプションです。&lt;br /&gt;
&lt;br /&gt;
まず、適当なコマンドオプションを含むスクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/cron.daily/backup|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
DAY=$(date +%A)&lt;br /&gt;
&lt;br /&gt;
if [ -e /location/to/backup/incr/$DAY ] ; then&lt;br /&gt;
  rm -fr /location/to/backup/incr/$DAY&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
rsync -a --delete --quiet --inplace --backup --backup-dir=/location/to/backup/incr/$DAY /path/to/backup/ /location/to/backup/full/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|--inplace}} オプションは {{ic|--partial}} を伴ない、転送先のファイルを所定の場所に更新します。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットバックアップ ===&lt;br /&gt;
&lt;br /&gt;
同じアイデアを使ってファイルのスナップショットのツリーを作ることができます。言い換えれば、ファイルのコピーが含まれる日付順のディレクトリです。コピーはハードリンクで作られ、変更があったファイルだけが場所を取ります。これは Apple の TimeMachine で使われているアイデアです。&lt;br /&gt;
&lt;br /&gt;
次の基本的なスクリプトは簡単な実装であり、変更がないファイルへハードリンクさせる {{ic|--link-dest}} オプションを使って素早くインクリメンタルスナップショットを生成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/snapbackup.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Basic snapshot-style rsync backup script &lt;br /&gt;
&lt;br /&gt;
# Config&lt;br /&gt;
OPT=&amp;quot;-aPh&amp;quot;&lt;br /&gt;
LINK=&amp;quot;--link-dest=/snapshots/username/last/&amp;quot; &lt;br /&gt;
SRC=&amp;quot;/home/username/files/&amp;quot;&lt;br /&gt;
SNAP=&amp;quot;/snapshots/username/&amp;quot;&lt;br /&gt;
LAST=&amp;quot;/snapshots/username/last&amp;quot;&lt;br /&gt;
date=`date &amp;quot;+%Y-%b-%d:_%T&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
# Run rsync to create snapshot&lt;br /&gt;
rsync $OPT $LINK $SRC ${SNAP}$date&lt;br /&gt;
&lt;br /&gt;
# Remove symlink to previous snapshot&lt;br /&gt;
rm -f $LAST&lt;br /&gt;
&lt;br /&gt;
# Create new symlink to latest snapshot for the next backup to hardlink&lt;br /&gt;
ln -s ${SNAP}$date $LAST&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|--link-dest}} のために既にターゲットに存在しているフルバックアップへのシンボリックリンクが必須です。最新のスナップショットが削除された場合、最新のスナップショットへのシンボリックリンクを再生成する必要があります。{{ic|--link-dest}} が動作しているシンボリックリンクを見付けられなかった場合、rsync は差分だけでなくソースファイルの全てをコピーします。&lt;br /&gt;
&lt;br /&gt;
より精錬されたバージョンは、{{ic|$SNAP/lates}} の最新のフルバックアップと最後のバックアップからの数回分の変更を保持します。現在のフルバックアップのスナップショット {{ic|$SNAP/$DATETAG}} を、変更がないファイルへハードリンクさせるために {{ic|cp -al}} を使って生成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/rsnapshot.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
## my own rsync-based snapshot-style backup procedure&lt;br /&gt;
## (cc) marcio rps AT gmail.com&lt;br /&gt;
&lt;br /&gt;
# config vars&lt;br /&gt;
&lt;br /&gt;
SRC=&amp;quot;/home/username/files/&amp;quot; #dont forget trailing slash!&lt;br /&gt;
SNAP=&amp;quot;/snapshots/username&amp;quot;&lt;br /&gt;
OPTS=&amp;quot;-rltgoi --delay-updates --delete --chmod=a-w&amp;quot;&lt;br /&gt;
MINCHANGES=20&lt;br /&gt;
&lt;br /&gt;
# run this process with real low priority&lt;br /&gt;
&lt;br /&gt;
ionice -c 3 -p $$&lt;br /&gt;
renice +12  -p $$&lt;br /&gt;
&lt;br /&gt;
# sync&lt;br /&gt;
&lt;br /&gt;
rsync $OPTS $SRC $SNAP/latest &amp;gt;&amp;gt; $SNAP/rsync.log&lt;br /&gt;
&lt;br /&gt;
# check if enough has changed and if so&lt;br /&gt;
# make a hardlinked copy named as the date&lt;br /&gt;
&lt;br /&gt;
COUNT=$( wc -l $SNAP/rsync.log|cut -d&amp;quot; &amp;quot; -f1 )&lt;br /&gt;
if [ $COUNT -gt $MINCHANGES ] ; then&lt;br /&gt;
        DATETAG=$(date +%Y-%m-%d)&lt;br /&gt;
        if [ ! -e $SNAP/$DATETAG ] ; then&lt;br /&gt;
                cp -al $SNAP/latest $SNAP/$DATETAG&lt;br /&gt;
                chmod u+w $SNAP/$DATETAG&lt;br /&gt;
                mv $SNAP/rsync.log $SNAP/$DATETAG&lt;br /&gt;
               chmod u-w $SNAP/$DATETAG&lt;br /&gt;
         fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
このスクリプトを systemd の[[systemd/タイマー|タイマー]]ユニットから実行することで、ぐっとシンプルにできます。&lt;br /&gt;
&lt;br /&gt;
=== システムのフルバックアップ ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは、 &#039;&#039;rsync&#039;&#039; を使用して、選択したいくつかのディレクトリを除く {{ic|/}} ツリー全体のコピーを転送する方法について説明します。 このアプローチは、 {{ic|dd}} を使用した [[ディスクのクローン]] よりも優れていると考えられます。これは、異なるサイズ、パーティションテーブル、およびファイルシステムを使用できるためであり、 {{ic|cp-a}} を使用したコピーよりも優れているためです。これにより、ファイルのアクセス許可、属性、 [[アクセス制御リスト]] および [[ファイルのパーミッションと属性#拡張属性|拡張属性]] をより細かく制御できるようになります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rsync&#039;&#039; はシステムの実行中でも機能しますが、転送中に変更されたファイルは転送される場合とされない場合があり、転送されたファイルを使用する一部のプログラムの未定義の動作を引き起こす可能性があります。&lt;br /&gt;
&lt;br /&gt;
このアプローチは、既存のインストールを新しい HDD または [[SSD]] に移行する場合に適しています。&lt;br /&gt;
&lt;br /&gt;
rootとして次のコマンドを実行して下さい。root権限で実行することで rsync がすべてのシステムファイルにアクセスし、所有権を保持できます:&lt;br /&gt;
&lt;br /&gt;
 # rsync -aAXHv --exclude={&amp;quot;/dev/*&amp;quot;,&amp;quot;/proc/*&amp;quot;,&amp;quot;/sys/*&amp;quot;,&amp;quot;/tmp/*&amp;quot;,&amp;quot;/run/*&amp;quot;,&amp;quot;/mnt/*&amp;quot;,&amp;quot;/media/*&amp;quot;,&amp;quot;/lost+found&amp;quot;} / &#039;&#039;/path/to/backup&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-aAX}} のオプションセットを使用することにより、ファイルはアーカイブモードで転送され、シンボリックリンク、デバイス、アクセス許可、所有権、変更時間、 [[ACL]]、 および拡張属性が保持されます。 ターゲット [[ファイルシステム]] がこの機能をサポートしていると仮定します。 オプション {{ic|-H}} はハードリンクを保持しますが、より多くのメモリを使用します。&lt;br /&gt;
&lt;br /&gt;
​{{ic|--exclude}} オプションを指定すると、指定したパターンに一致するファイルが除外されます。​ディレクトリ {{ic|/dev}}}、 {{ic|/proc}}、 {{ic|/sys}}、 {{ic|/tmp}}、 {{ic|/run}} は上記のコマンドに含まれますが、これらのディレクトリの &#039;&#039;内容&#039;&#039; は除外されます。​これは、起動時にはディレクトリが作成されますが、ディレクトリ自体は作成されないためです。​{{ic|/lost+found}}はファイルシステム固有です。​上記のコマンドは、 [https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html bash]および [http://zsh.sourceforge.net/Doc/Release/Expansion.html#Brace-Expansion zsh] シェルの両方で使用できるブレース展開に依存します。​別の [[シェル]] を使用する場合は、 {{ic|--exclude}} パターンを手動で繰り返す必要があります。​除外パターンを引用符で囲むと、 [[シェル]] による展開が回避されます。これは、たとえば [[SSH]] のバックアップ時に必要です。​除外パスの最後に {{ic|*}} を指定すると、ディレクトリ自体がまだ存在しない場合でも作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|/mnt}} または {{ic|/media}} 以外の場所でシステムをバックアップする場合は、無限ループを回避するために、除外パターンのリストにシステムを追加することを忘れないでください。&lt;br /&gt;
*システムにバインドマウントがある場合は、それらも除外して、バインドマウントされたコンテンツが1回だけコピーされるようにする必要があります。&lt;br /&gt;
※[[スワップファイル]] を使用する場合は、必ず除外してください。&lt;br /&gt;
* {{ic|/home/}} ディレクトリをバックアップするかどうかを検討してください。 データが含まれている場合は、システムよりもかなり大きくなる可能性があります。 それ以外の場合は、 {{ic|/home/*/.thumbnails/*}}, {{ic|/home/*/.cache/mozilla/*}}, {{ic|/home/*/.cache/chromium/*}}, と {{ic|/home/*/.local/share/Trash/*}} などの重要でないサブディレクトリを除外することを検討してください。 {{ic|/home/*/.local/share/Trash/*}} は、システムにインストールされているソフトウェアによって異なります。&lt;br /&gt;
* [[GVFS]] がインストールされている場合、 rsync エラーを防ぐために、 {{ic|/home/*/.gvfs}} を除外する必要があります。&lt;br /&gt;
* [[Dhcpcd]] ≥9.0.0 がインストールされている場合は、 {{ic|/var/lib/dhcpcd/*}} ディレクトリを除外します。これは、いくつかのシステムディレクトリをサブディレクトリとしてマウントするためです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
追加の [[rsync]] オプションを含めるか、次のようないくつかを削除することをお勧めします。 完全なリストについては、 {{man|1|rsync}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
* メモリが非常に少ないシステムで実行している場合は、 {{ic|-H}} オプションを削除することを検討してください。ただし、最近のほとんどのマシンでは問題ありません。使用するソフトウェアによっては、ファイルシステムに多くのハードリンクが存在する可能性があります(たとえば、 [[Flatpak]] を使用している場合)。多くのハードリンクは {{ic|/usr/}} ディレクトリの下にあります。&lt;br /&gt;
* これを同じバックアップディレクトリで複数回実行している場合は、rsync の {{ic|--delete}} オプションを追加することをお勧めします。この場合、ソースパスが {{ic|/*}} で終わっていないことを確認してください。そうでない場合、このオプションはソースディレクトリのサブディレクトリ内のファイルにのみ影響しますが、存在するファイルには影響しません。&lt;br /&gt;
* 仮想ディスク、 [[Docker]] イメージなどのスパースファイルを使用する場合は、 {{ic|-S}} オプションを追加する必要があります。&lt;br /&gt;
* {{ic|--numeric-ids}} オプションは、ユーザー名とグループ名のマッピングを無効にします。代わりに、数値のグループ ID とユーザー ID が転送されます。これは、 [[SSH]] を介してバックアップする場合、またはライブシステムを使用して別のシステムディスクをバックアップする場合に役立ちます。&lt;br /&gt;
* {{ic|-v}} の代わりに {{ic|1=-info=progress2}} オプションを選択すると、転送されるファイルのリストではなく、全体的な進行状況情報と転送速度が表示されます。&lt;br /&gt;
* 再帰時にファイルシステムの境界を越えないようにするには、オプション {{ic|-x}}/{{ic|--one-file-system}} を追加します。これにより、階層内のマウントポイントをバックアップできなくなります。&lt;br /&gt;
&lt;br /&gt;
=== バックアップを復元する ===&lt;br /&gt;
&lt;br /&gt;
バックアップを復元する場合は、実行されたのと同じ rsync コマンドを使用しますが、ソースと宛先を逆にします。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムのクローニング ==&lt;br /&gt;
&lt;br /&gt;
rsync は、ファイルシステムのメタデータを含む可能な限り多くの情報を保持しながら、ファイルシステム内のすべてのデータのコピーを実行する方法を提供します。 これは、ソースファイルシステムと宛先ファイルシステムが同じタイプである必要がないファイルシステムレベルでのデータ複製の手順です。 バックアップ、ファイルシステムの移行、またはデータ復旧に使用できます。&lt;br /&gt;
&lt;br /&gt;
rsync の &amp;quot;アーカイブ&amp;quot; モードは、アクセス制御リスト、拡張属性、スパースファイルプロパティなどの特別なファイルシステムメタデータはバックアップされません。 ファイルシステムレベルでのクローンを成功させるには、いくつかのオプションを追加する必要があります。&lt;br /&gt;
&lt;br /&gt;
 rsync -qaHAXS SOURCE_DIR DESTINATION_DIR&lt;br /&gt;
&lt;br /&gt;
それらの意味は (manpageから):&lt;br /&gt;
&lt;br /&gt;
 --hard-links, -H         preserve hard links&lt;br /&gt;
 --acls, -A               preserve ACLs (implies --perms)&lt;br /&gt;
 --xattrs, -X             preserve extended attributes&lt;br /&gt;
 --sparse, -S             turn sequences of nulls into sparse blocks&lt;br /&gt;
&lt;br /&gt;
さらに、コピーから除外するツリーの下に他のファイルシステムがマウントされている場合は、 {{ic|-x}} を使用します。&lt;br /&gt;
生成されたコピーは、 {{ic|diff}} の再帰オプションを使用して、ファイルシステムレベルで簡単に再読み取りおよびチェックできます(たとえば、データ回復の試行後)。&lt;br /&gt;
&lt;br /&gt;
 diff -r SOURCE_DIR DESTINATION_DIR&lt;br /&gt;
&lt;br /&gt;
rsync を使用し、 [[新しいハードウェアに移行する]] で説明されているように [[fstab]] と [[ブートローダー]] を更新することで、ファイルシステムの移行を成功させることができます。 これは基本的に、ルートファイルシステムを別のルートファイルシステムに変換する時にも適しています。&lt;br /&gt;
&lt;br /&gt;
== rsync デーモン ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rsync&#039;&#039; は、ポート {{ic|873}} で待機しているサーバー上でデーモンとして実行できます。&lt;br /&gt;
&lt;br /&gt;
​テンプレート {{ic|/etc/rsyncd.conf}} を編集して共有を構成し、 {{ic|rsyncd.service}} を [[systemd#ユニットを使う|スタート]] します。&lt;br /&gt;
&lt;br /&gt;
{{Note| {{Pkg|rsync}} 3.2.0-1 の時点で、パッケージはアップストリーム systemd ユニットファイル {{ic|rsyncd.service}} と {{ic|rsyncd@.service}} を採用しました。 {{ic|1=ProtectHome}} の変更についてコメントがあり、 {{ic|[Service]}} セクションのセキュリティ機能 {{ic|1=ProtectSystem=full}} は引き続きアクティブです。 これにより、 {{ic|/boot/}}、 {{ic|/etc/}}、 および {{ic|/usr/}} ディレクトリが読み取り専用になります。 rsyncd 書き込みシステムディレクトリが必要な場合は、ユニットを [[systemd#ユニットファイルの編集|編集]] して、オーバーライドするスニペットの {{ic|[Service]}} セクションで {{ic|1=ProtectSystem=off}} を設定できます。}}&lt;br /&gt;
&lt;br /&gt;
クライアントからの使用&lt;br /&gt;
&lt;br /&gt;
例:サーバーコンテンツの一覧表示:&lt;br /&gt;
&lt;br /&gt;
 $ rsync rsync://&#039;&#039;server/share&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
クライアントからサーバーにファイルを転送する:&lt;br /&gt;
&lt;br /&gt;
 $ rsync &#039;&#039;local-file&#039;&#039; rsync://&#039;&#039;server/share/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ポート {{ic|873}} とユーザー認証を開くための iptables を検討してください。&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;
{{hc|1=/etc/rsyncd.conf|2=&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Needed when crossing filesystem boundaries.&lt;br /&gt;
#use chroot  = no&lt;br /&gt;
read only = yes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[sync]&lt;br /&gt;
    path         = /&lt;br /&gt;
# List of files to copy.&lt;br /&gt;
    include from = /backup.list&lt;br /&gt;
# Exclude the rest.&lt;br /&gt;
    exclude      = *&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ファイルリスト内では、ワイルドカード {{ic|***}} が使用されている場合を除き、すべての &#039;&#039;中間パス&#039;&#039; が必要です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/backup.list|&lt;br /&gt;
/etc/&lt;br /&gt;
/etc/conf.d/&lt;br /&gt;
/etc/conf.d/hwclock&lt;br /&gt;
/etc/fonts/***&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* その他の使用例は、こちらで検索できます。 [https://bbs.archlinux.org/viewforum.php?id=27 Community Contributions] , [https://bbs.archlinux.org/viewforum.php?id=33 General Programming] フォーラム&lt;br /&gt;
* [https://www.pointsoftware.ch/2012/09/12/howto-local-and-remote-snapshot-backup-using-rsync-with-hard-links/ Howto – local and remote snapshot backup using rsync with hard links] ハードリンクやMD5インテグリティシグネチャ、&#039;chattr&#039; 保護、フィルタールール、ディスククオータ、リテンションポリシー（新しいファイルを保存する時のバックアップローテーション) とファイル重複排除といった内容があります。&lt;br /&gt;
* [https://stackoverflow.com/questions/5527068/how-do-you-use-an-identity-file-with-rsync Using SSH keys/identity files with rsync]&lt;br /&gt;
* [https://www.fosslinux.com/41713/top-20-rsync-examples-in-linux.htm Linuxでのトップ20のRsyncサンプル]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
	<entry>
		<id>https://wiki.archlinux.jp/index.php?title=Rsync&amp;diff=23634</id>
		<title>Rsync</title>
		<link rel="alternate" type="text/html" href="https://wiki.archlinux.jp/index.php?title=Rsync&amp;diff=23634"/>
		<updated>2022-01-29T10:35:40Z</updated>

		<summary type="html">&lt;p&gt;Shota: 関連記事の参照先を修正&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Lowercase title}}&lt;br /&gt;
[[Category:同期]]&lt;br /&gt;
[[Category:バックアップ]]&lt;br /&gt;
[[Category:コマンド]]&lt;br /&gt;
[[en:Rsync]]&lt;br /&gt;
[[es:Rsync]]&lt;br /&gt;
[[zh-hans:Rsync]]&lt;br /&gt;
{{Related articles start}}&lt;br /&gt;
{{Related|rsync によるフルシステムバックアップ}}&lt;br /&gt;
{{Related|同期およびバックアッププログラム}}&lt;br /&gt;
{{Related articles end}}&lt;br /&gt;
[https://rsync.samba.org/ rsync] は高速な差分ファイル転送を行うオープンソースのユーティリティです。&lt;br /&gt;
&lt;br /&gt;
== インストール ==&lt;br /&gt;
&lt;br /&gt;
[[公式リポジトリ]]から {{Pkg|rsync}} を[[インストール]]してください。&lt;br /&gt;
&lt;br /&gt;
​&#039;&#039;rsync&#039;&#039; をソースマシンと転送先マシンの両方にインストールする必要があります。&lt;br /&gt;
&lt;br /&gt;
=== フロントエンド ===&lt;br /&gt;
&lt;br /&gt;
* {{App|Grsync|GTK フロントエンド|http://www.opbyte.it/grsync/|{{Pkg|grsync}}}}&lt;br /&gt;
* {{App|gutback|シェルで書かれた rsync ラッパー|https://github.com/gutenye/gutbackup|{{Aur|gutbackup}}}}&lt;br /&gt;
* {{App|JotaSync|​スケジューラ内蔵の rsync 用 Java Swing GUI|https://trixon.se/projects/jotasync/|{{Aur|jotasync}}}}&lt;br /&gt;
* {{App|luckyBackup|​C++ で書かれた Qt フロントエンド|http://luckybackup.sourceforge.net/index.html|{{Aur|luckybackup}}}}&lt;br /&gt;
&lt;br /&gt;
​その他に rsync を使っているツールは以下の通りです: {{Pkg|rdiff-backup}}  、 {{AUR|osync}}。&lt;br /&gt;
&lt;br /&gt;
== cp/mv の代わりとして使う ==&lt;br /&gt;
&lt;br /&gt;
{{Note|1=cp/mv の代わりに rsync を使う事は異なるファイルシステム間では効果的ですが、同じファイルシステム上でコピーや移動する為には効果はないです。詳しくは [https://bbs.archlinux.org/viewtopic.php?id=271953] を参照してください。}}&lt;br /&gt;
&lt;br /&gt;
rsync は {{ic|cp}} または {{ic|mv}} コマンドの上位互換として使うことができ、特に大きなファイルのコピーに役立ちます:&lt;br /&gt;
&lt;br /&gt;
 $ rsync -P source destination&lt;br /&gt;
&lt;br /&gt;
{{ic|-P}} オプションは {{Ic|--partial --progress}} と同じで、一部ずつファイルを転送して、転送中にプログレスバーを表示します。&lt;br /&gt;
&lt;br /&gt;
ディレクトリを再帰的にコピーしたいときは {{ic|-r --recursive}} オプションを使用し、相対パス名を使いたい時は {{ic|-R}} を使います (転送先のフォルダでフォルダ全体の階層を再生成します)。&lt;br /&gt;
&lt;br /&gt;
{{ic|cp}} と同様にローカルにコピーする事に使えるだけでなく、例えば異なるホスト間といった、リモート同士でファイルをコピーする事にも使えます。リモートの場所はホスト-コロンシンタックスを使って指示できます:&lt;br /&gt;
&lt;br /&gt;
 $ rsync source host:destination&lt;br /&gt;
&lt;br /&gt;
あるいは&lt;br /&gt;
&lt;br /&gt;
 $ rsync host:source destination&lt;br /&gt;
&lt;br /&gt;
ネットワークを利用したファイルのやりとりには [[SSH]] をデフォルトで使い、{{ic|host}} は実際のホスト名かもしくは {{ic|.ssh/config}} で定義されたプロファイルやエイリアスで指示できます。&lt;br /&gt;
&lt;br /&gt;
ローカルかリモートでのファイルのやりとりに関わらず、 rsync はまず始めにファイル情報を含むファイルリストを作成します (デフォルトでは、ファイル情報はサイズと最後に修正したタイムスタンプから成ります)。このファイルリストは次にファイルを構築する必要があるか否かの判断に利用されます。それぞれのファイルを構築する際には、それぞれのブロックが長さ &#039;&#039;&#039;S&#039;&#039;&#039; バイトでオーバーラップがなくまた長さ &#039;&#039;&#039;S&#039;&#039;&#039; で分割可能なようなオフセットを持つようにブロックに分けられ、弱いチェックサムと強いチェックサムを生成します。これら情報によって、rsync はファイル全体をやりとりすることなく巨大なファイルを構築することができます。実用的かつ数学的な詳細な説明は次にあるので参照してください: [https://rsync.samba.org/how-rsync-works.html rsync がどのように動作するか]、[https://rsync.samba.org/tech_report/tech_report.html rsync のアルゴリズム]。&lt;br /&gt;
&lt;br /&gt;
実用的なデフォルトの設定を手早く使いたい場合は、次の様にしてエイリアスを定義できます:&lt;br /&gt;
{{bc|1=&lt;br /&gt;
cpr() {&lt;br /&gt;
  rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 &amp;quot;$@&amp;quot;&lt;br /&gt;
} &lt;br /&gt;
mvr() {&lt;br /&gt;
  rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 --remove-source-files &amp;quot;$@&amp;quot;&lt;br /&gt;
} }}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-hh}}: 数を読み易いフォーマット (human-readable format) で出力します&lt;br /&gt;
* {{ic|1=--info=stats1,progress2}}: {{ic|stats1}} は rsync のファイル移行の統計を verbosity level  1 で出力します。{{ic|progress2}} は全やりとりの進捗を出力し、{{ic|progress1}} はファイル毎に進捗を出力します。&lt;br /&gt;
* {{ic|1=--modify-window=1}}: 2つのファイルのタイムスタンプを比較する際に 1秒以下の違いがあっても同じタイムスタンプとして処理します。&lt;br /&gt;
* {{ic|--remove-source-files}}: 正常にファイルのやりとりができた後に、ソースディレクトリからファイルを削除します。&lt;br /&gt;
&lt;br /&gt;
{{Note|ここでの「チェックサム」は {{ic|--checksum}} オプションでの振る舞いとは読み替えできません。{{ic|--checksum}} オプションはファイルの転送前に使用されるファイルスキップヒューリスティックに影響します。{{ic|--checksum}} とは無関係に、「チェックサム」は、rsync がどのようにファイルを転送するかという意味で、ブロックに基づくファイル構築に常に使われます。}}&lt;br /&gt;
&lt;br /&gt;
=== ​末尾のスラッシュに関する注意事項 ===&lt;br /&gt;
&lt;br /&gt;
Arch はデフォルトで GNU cp (GNU {{Pkg|coreutils}} の一部) を使用します。 ただし、rsync は BSD cp の規則に従います。これは、末尾にスラッシュ 「/」 が付いたソースディレクトリに特別な処理を与えます。&lt;br /&gt;
&lt;br /&gt;
 $ rsync -r source destination&lt;br /&gt;
&lt;br /&gt;
ディレクトリ &amp;quot;destination/source&amp;quot; を &amp;quot;source&amp;quot; の内容で作成するのに対して、&lt;br /&gt;
&lt;br /&gt;
 $ rsync -r source/ destination&lt;br /&gt;
&lt;br /&gt;
​は &amp;quot;source/&amp;quot; 内のすべてのファイルを &amp;quot;destination&amp;quot; にコピーしてその間にサブディレクトリは置きません。もし次を実行した様になります&lt;br /&gt;
&lt;br /&gt;
 $ rsync -r source/. destination&lt;br /&gt;
&lt;br /&gt;
GNU cp は &amp;quot;source&amp;quot; と &amp;quot;source/&amp;quot; を同じように扱うので (&amp;quot;source/.&amp;quot; は違います)、​これらの動作は GNU cp の動作とは異なります。​また、シェルによっては、タブを補完するディレクトリ名の末尾にスラッシュを自動的に付加するものもあります。​これらの要因のために、 rsync を初めて使う、あるいは時々使うユーザの間では、 rsync の異なる動作を忘れてしまい、コマンドラインの最後にあるスラッシュを忘れてしまうことで、混乱を招いたり、重要なファイルを上書きしたりする傾向があります。&lt;br /&gt;
&lt;br /&gt;
したがって、ラッパースクリプトを使用して、rsync を呼び出す前に末尾のスラッシュを自動的に削除することが賢明です:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 new_args=();&lt;br /&gt;
 for i in &amp;quot;$@&amp;quot;; do&lt;br /&gt;
     case $i in /) i=/;; */) i=${i%/};; esac&lt;br /&gt;
     new_args=&amp;quot;$new_args $i&amp;quot;;&lt;br /&gt;
 done&lt;br /&gt;
 exec rsync &amp;quot;${(@)new_args}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
このスクリプトをパスの通った場所に置き、シェルの init ファイル内で rsync というエイリアスを付けられます。&lt;br /&gt;
&lt;br /&gt;
== バックアップユーティリティとして使う ==&lt;br /&gt;
&lt;br /&gt;
rsync プロトコルは最後にバックアップされた時点から変更があったファイルだけを転送することができ、簡単にバックアップの為に使う事ができます。この節では、リムーバルメディアへコピーするといった、シンプルな定期的なバックアップスクリプトを紹介します。&lt;br /&gt;
&lt;br /&gt;
=== 自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
このサンプルを使うには、スクリプトを {{ic|/etc/cron.daily}} ディレクトリに作成して下さい。cron [[デーモン]]をインストールして適切に設定することで毎日実行せせるようになります。&lt;br /&gt;
&lt;br /&gt;
まず、適切なコマンドオプションを含んだスクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/cron.daily/backup|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
rsync -a --delete --quiet /path/to/backup /location/of/backup}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-a}} : ファイルをアーカイブする。ファイルの属性も保存 (ただし ACL やハードリンク、ケイパビリティなどの拡張属性は除外)&lt;br /&gt;
* {{ic|--delete}} : バックアップ元で削除されたファイルはバックアップ先でも同じように削除する&lt;br /&gt;
&lt;br /&gt;
ここで、{{ic|/path/to/backup}} はバックアップしたいものに (例えば {{ic|/home}})、{{ic|/location/of/backup}} はバックアップの保存先に変更します (例えば {{ic|/media/disk}})。&lt;br /&gt;
&lt;br /&gt;
最後に、スクリプトを[[ヘルプ:読み方#実行可能属性の付与|実行可能]]にします:&lt;br /&gt;
&lt;br /&gt;
=== SSH を使った自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
[[SSH]] を使ってリモートホストにバックアップする場合、以下のスクリプトを使用:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/cron.daily/backup|&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
rsync -a --delete --quiet -e ssh /path/to/backup remoteuser@remotehost:/location/of/backup&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-e ssh}} : rsync に SSH を使うことを教える&lt;br /&gt;
* {{ic|remoteuser}} : ホスト {{ic|remotehost}} のユーザー&lt;br /&gt;
* {{ic|-a}} : {{ic|-rlptgoD}} オプションと同義 (recursive, links, perms, times, group, owner, devices)&lt;br /&gt;
&lt;br /&gt;
{{Note|Rsync は、インクリメンタルバックアップでもってソース元のマシンでの状態と合うようにターゲットマシンのファイルを更新しようとします。つまり、SSH を越えてルートユーザがオーナーであるファイルをバックアップする場合 (あるいは {{ic|-a}} などによってパーミッションやオーナシップを保とうとする場合) はターゲットマシンのルートアクセスが必要になります。自動的にこれを実行しようとする場合、SSH デーモンに [https://unix.stackexchange.com/a/92397 パスワード無しの公開鍵] を使ってルートユーザにログインすることを許可するように設定して、rsync をルート権限で実行することが良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
=== NetworkManager を使った自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
以下のスクリプトはケーブルを接続した時にバックアップを開始します。&lt;br /&gt;
&lt;br /&gt;
まず、適当なコマンドオプションを含んだスクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/NetworkManager/dispatcher.d/backup|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
if [ x&amp;quot;$2&amp;quot; = &amp;quot;xup&amp;quot; ] ; then&lt;br /&gt;
        rsync --force --ignore-errors -a --delete --bwlimit=2000 --files-from=files.rsync /path/to/backup /location/of/backup&lt;br /&gt;
fi&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* {{ic|-a}} : {{ic|-rlptgoD}} オプションと同義 (recursive, links, perms, times, group, owner, devices)&lt;br /&gt;
* {{ic|--files-from}} : ファイルから {{ic|/path/to/backup}} の相対パスを読み込み&lt;br /&gt;
* {{ic|--bwlimit}} : I/O 帯域を制限、単位はキロバイト毎秒&lt;br /&gt;
&lt;br /&gt;
このスクリプトの所有者をルートユーザにして下さい (詳しくは [[NetworkManager#ネットワークサービスと NetworkManager dispatcher|NetworkManager dispatcher]] を参照)。&lt;br /&gt;
&lt;br /&gt;
=== systemd と inotify を使った自動バックアップ ===&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* inotify と systemd の制限により ([http://www.quora.com/Linux-Kernel/Inotify-monitoring-of-directories-is-not-recursive-Is-there-any-specific-reason-for-this-design-in-Linux-kernel この質問と答え] を参照)、再帰的なファイルシステムの監視は不可能です。ディレクトリとその中身を監視することはできますが、サブディレクトリにまで再帰的に実行してその中身を監視することはされません。監視するディレクトリは全て明示的に指定する必要があります (ディレクトリが既に指定した監視ディレクトリの下にあっても記述する必要がある)。&lt;br /&gt;
* このセットアップは [[systemd/ユーザー]]インスタンスをベースにしています。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[cron]] の実装など、スケジュールによって適宜バックアップを実行するのではなく、この方法ではバックアップするファイルに変更があった度にバックアップを実行することが可能です。{{ic|systemd.path}} ユニットは {{ic|inotify}} を使ってファイルシステムを監視し、{{ic|systemd.service}} と一緒に使うことでファイルシステムのイベントに合わせてあらゆるプロセスを開始することができます (この場合は &#039;&#039;rsync&#039;&#039; のバックアップ)。&lt;br /&gt;
&lt;br /&gt;
まず、バックアップするファイルを監視する {{ic|systemd.path}} ファイルを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/backup.path|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Checks if paths that are currently being backed up have changed&lt;br /&gt;
&lt;br /&gt;
[Path]&lt;br /&gt;
PathChanged=%h/documents&lt;br /&gt;
PathChanged=%h/music&lt;br /&gt;
&lt;br /&gt;
[Install]&lt;br /&gt;
WantedBy=default.target&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
そして変更を検出した時に実行される {{ic|systemd.service}} ファイルを作成します。デフォルトで、パスユニット (ここでは {{ic|backup.path}}) と同じ名前の、拡張子が {{ic|.path}} ではなく {{ic|.service}} のサービスファイルが実行されます (ここでは {{ic|backup.service}})。&lt;br /&gt;
&lt;br /&gt;
{{Note|rsync コマンドを複数実行する必要がある場合は、{{ic|1=Type=oneshot}} を使って下さい。実行する &#039;&#039;rsync&#039;&#039; ごとに、複数の {{ic|1=ExecStart=}} パラメータを指定することができます。もしくは、[[cron]] スクリプトなど、バックアップ作業を全て実行するスクリプトを書いても良いでしょう。}}&lt;br /&gt;
&lt;br /&gt;
{{hc|~/.config/systemd/user/backup.service|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
[Unit]&lt;br /&gt;
Description=Backs up files&lt;br /&gt;
&lt;br /&gt;
[Service]&lt;br /&gt;
ExecStart=/usr/bin/rsync %h/./documents %h/./music -CERrltm --delete ubuntu:&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
これで後は通常の systemd サービスと同じように {{ic|backup.path}} を起動・有効化するだけです。ファイルの変更の監視を始めて {{ic|backup.service}} を自動的に起動します:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== 一週間ごとに差分バックアップ ===&lt;br /&gt;
&lt;br /&gt;
実行毎の完全なバックアップを作成して、ファイルに変更があったものだけの差分バックアップのコピーを分かれたディレクトリに保持しつつ、一週間ごとに差分バックアップを行う便利な rsync のオプションです。&lt;br /&gt;
&lt;br /&gt;
まず、適当なコマンドオプションを含むスクリプトを作成:&lt;br /&gt;
&lt;br /&gt;
{{hc|/etc/cron.daily/backup|2=&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
DAY=$(date +%A)&lt;br /&gt;
&lt;br /&gt;
if [ -e /location/to/backup/incr/$DAY ] ; then&lt;br /&gt;
  rm -fr /location/to/backup/incr/$DAY&lt;br /&gt;
fi&lt;br /&gt;
&lt;br /&gt;
rsync -a --delete --quiet --inplace --backup --backup-dir=/location/to/backup/incr/$DAY /path/to/backup/ /location/to/backup/full/&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{ic|--inplace}} オプションは {{ic|--partial}} を伴ない、転送先のファイルを所定の場所に更新します。&lt;br /&gt;
&lt;br /&gt;
=== スナップショットバックアップ ===&lt;br /&gt;
&lt;br /&gt;
同じアイデアを使ってファイルのスナップショットのツリーを作ることができます。言い換えれば、ファイルのコピーが含まれる日付順のディレクトリです。コピーはハードリンクで作られ、変更があったファイルだけが場所を取ります。これは Apple の TimeMachine で使われているアイデアです。&lt;br /&gt;
&lt;br /&gt;
次の基本的なスクリプトは簡単な実装であり、変更がないファイルへハードリンクさせる {{ic|--link-dest}} オプションを使って素早くインクリメンタルスナップショットを生成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/snapbackup.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
# Basic snapshot-style rsync backup script &lt;br /&gt;
&lt;br /&gt;
# Config&lt;br /&gt;
OPT=&amp;quot;-aPh&amp;quot;&lt;br /&gt;
LINK=&amp;quot;--link-dest=/snapshots/username/last/&amp;quot; &lt;br /&gt;
SRC=&amp;quot;/home/username/files/&amp;quot;&lt;br /&gt;
SNAP=&amp;quot;/snapshots/username/&amp;quot;&lt;br /&gt;
LAST=&amp;quot;/snapshots/username/last&amp;quot;&lt;br /&gt;
date=`date &amp;quot;+%Y-%b-%d:_%T&amp;quot;`&lt;br /&gt;
&lt;br /&gt;
# Run rsync to create snapshot&lt;br /&gt;
rsync $OPT $LINK $SRC ${SNAP}$date&lt;br /&gt;
&lt;br /&gt;
# Remove symlink to previous snapshot&lt;br /&gt;
rm -f $LAST&lt;br /&gt;
&lt;br /&gt;
# Create new symlink to latest snapshot for the next backup to hardlink&lt;br /&gt;
ln -s ${SNAP}$date $LAST&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
{{ic|--link-dest}} のために既にターゲットに存在しているフルバックアップへのシンボリックリンクが必須です。最新のスナップショットが削除された場合、最新のスナップショットへのシンボリックリンクを再生成する必要があります。{{ic|--link-dest}} が動作しているシンボリックリンクを見付けられなかった場合、rsync は差分だけでなくソースファイルの全てをコピーします。&lt;br /&gt;
&lt;br /&gt;
より精錬されたバージョンは、{{ic|$SNAP/lates}} の最新のフルバックアップと最後のバックアップからの数回分の変更を保持します。現在のフルバックアップのスナップショット {{ic|$SNAP/$DATETAG}} を、変更がないファイルへハードリンクさせるために {{ic|cp -al}} を使って生成します:&lt;br /&gt;
&lt;br /&gt;
{{hc|/usr/local/bin/rsnapshot.sh|&amp;lt;nowiki&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
&lt;br /&gt;
## my own rsync-based snapshot-style backup procedure&lt;br /&gt;
## (cc) marcio rps AT gmail.com&lt;br /&gt;
&lt;br /&gt;
# config vars&lt;br /&gt;
&lt;br /&gt;
SRC=&amp;quot;/home/username/files/&amp;quot; #dont forget trailing slash!&lt;br /&gt;
SNAP=&amp;quot;/snapshots/username&amp;quot;&lt;br /&gt;
OPTS=&amp;quot;-rltgoi --delay-updates --delete --chmod=a-w&amp;quot;&lt;br /&gt;
MINCHANGES=20&lt;br /&gt;
&lt;br /&gt;
# run this process with real low priority&lt;br /&gt;
&lt;br /&gt;
ionice -c 3 -p $$&lt;br /&gt;
renice +12  -p $$&lt;br /&gt;
&lt;br /&gt;
# sync&lt;br /&gt;
&lt;br /&gt;
rsync $OPTS $SRC $SNAP/latest &amp;gt;&amp;gt; $SNAP/rsync.log&lt;br /&gt;
&lt;br /&gt;
# check if enough has changed and if so&lt;br /&gt;
# make a hardlinked copy named as the date&lt;br /&gt;
&lt;br /&gt;
COUNT=$( wc -l $SNAP/rsync.log|cut -d&amp;quot; &amp;quot; -f1 )&lt;br /&gt;
if [ $COUNT -gt $MINCHANGES ] ; then&lt;br /&gt;
        DATETAG=$(date +%Y-%m-%d)&lt;br /&gt;
        if [ ! -e $SNAP/$DATETAG ] ; then&lt;br /&gt;
                cp -al $SNAP/latest $SNAP/$DATETAG&lt;br /&gt;
                chmod u+w $SNAP/$DATETAG&lt;br /&gt;
                mv $SNAP/rsync.log $SNAP/$DATETAG&lt;br /&gt;
               chmod u-w $SNAP/$DATETAG&lt;br /&gt;
         fi&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
このスクリプトを systemd の[[systemd/タイマー|タイマー]]ユニットから実行することで、ぐっとシンプルにできます。&lt;br /&gt;
&lt;br /&gt;
=== システムのフルバックアップ ===&lt;br /&gt;
&lt;br /&gt;
このセクションでは、 &#039;&#039;rsync&#039;&#039; を使用して、選択したいくつかのディレクトリを除く {{ic|/}} ツリー全体のコピーを転送する方法について説明します。 このアプローチは、 {{ic|dd}} を使用した [[ディスクのクローン]] よりも優れていると考えられます。これは、異なるサイズ、パーティションテーブル、およびファイルシステムを使用できるためであり、 {{ic|cp-a}} を使用したコピーよりも優れているためです。これにより、ファイルのアクセス許可、属性、 [[アクセス制御リスト]] および [[ファイルのパーミッションと属性#拡張属性|拡張属性]] をより細かく制御できるようになります。&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rsync&#039;&#039; はシステムの実行中でも機能しますが、転送中に変更されたファイルは転送される場合とされない場合があり、転送されたファイルを使用する一部のプログラムの未定義の動作を引き起こす可能性があります。&lt;br /&gt;
&lt;br /&gt;
このアプローチは、既存のインストールを新しい HDD または [[SSD]] に移行する場合に適しています。&lt;br /&gt;
&lt;br /&gt;
rootとして次のコマンドを実行して下さい。root権限で実行することで rsync がすべてのシステムファイルにアクセスし、所有権を保持できます:&lt;br /&gt;
&lt;br /&gt;
 # rsync -aAXHv --exclude={&amp;quot;/dev/*&amp;quot;,&amp;quot;/proc/*&amp;quot;,&amp;quot;/sys/*&amp;quot;,&amp;quot;/tmp/*&amp;quot;,&amp;quot;/run/*&amp;quot;,&amp;quot;/mnt/*&amp;quot;,&amp;quot;/media/*&amp;quot;,&amp;quot;/lost+found&amp;quot;} / &#039;&#039;/path/to/backup&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{ic|-aAX}} のオプションセットを使用することにより、ファイルはアーカイブモードで転送され、シンボリックリンク、デバイス、アクセス許可、所有権、変更時間、 [[ACL]]、 および拡張属性が保持されます。 ターゲット [[ファイルシステム]] がこの機能をサポートしていると仮定します。 オプション {{ic|-H}} はハードリンクを保持しますが、より多くのメモリを使用します。&lt;br /&gt;
&lt;br /&gt;
​{{ic|--exclude}} オプションを指定すると、指定したパターンに一致するファイルが除外されます。​ディレクトリ {{ic|/dev}}}、 {{ic|/proc}}、 {{ic|/sys}}、 {{ic|/tmp}}、 {{ic|/run}} は上記のコマンドに含まれますが、これらのディレクトリの &#039;&#039;内容&#039;&#039; は除外されます。​これは、起動時にはディレクトリが作成されますが、ディレクトリ自体は作成されないためです。​{{ic|/lost+found}}はファイルシステム固有です。​上記のコマンドは、 [https://www.gnu.org/software/bash/manual/html_node/Brace-Expansion.html bash]および [http://zsh.sourceforge.net/Doc/Release/Expansion.html#Brace-Expansion zsh] シェルの両方で使用できるブレース展開に依存します。​別の [[シェル]] を使用する場合は、 {{ic|--exclude}} パターンを手動で繰り返す必要があります。​除外パターンを引用符で囲むと、 [[シェル]] による展開が回避されます。これは、たとえば [[SSH]] のバックアップ時に必要です。​除外パスの最後に {{ic|*}} を指定すると、ディレクトリ自体がまだ存在しない場合でも作成されます。&lt;br /&gt;
&lt;br /&gt;
{{Note|&lt;br /&gt;
* {{ic|/mnt}} または {{ic|/media}} 以外の場所でシステムをバックアップする場合は、無限ループを回避するために、除外パターンのリストにシステムを追加することを忘れないでください。&lt;br /&gt;
*システムにバインドマウントがある場合は、それらも除外して、バインドマウントされたコンテンツが1回だけコピーされるようにする必要があります。&lt;br /&gt;
※[[スワップファイル]] を使用する場合は、必ず除外してください。&lt;br /&gt;
* {{ic|/home/}} ディレクトリをバックアップするかどうかを検討してください。 データが含まれている場合は、システムよりもかなり大きくなる可能性があります。 それ以外の場合は、 {{ic|/home/*/.thumbnails/*}}, {{ic|/home/*/.cache/mozilla/*}}, {{ic|/home/*/.cache/chromium/*}}, と {{ic|/home/*/.local/share/Trash/*}} などの重要でないサブディレクトリを除外することを検討してください。 {{ic|/home/*/.local/share/Trash/*}} は、システムにインストールされているソフトウェアによって異なります。&lt;br /&gt;
* [[GVFS]] がインストールされている場合、 rsync エラーを防ぐために、 {{ic|/home/*/.gvfs}} を除外する必要があります。&lt;br /&gt;
* [[Dhcpcd]] ≥9.0.0 がインストールされている場合は、 {{ic|/var/lib/dhcpcd/*}} ディレクトリを除外します。これは、いくつかのシステムディレクトリをサブディレクトリとしてマウントするためです。&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
追加の [[rsync]] オプションを含めるか、次のようないくつかを削除することをお勧めします。 完全なリストについては、 {{man|1|rsync}} を参照してください。&lt;br /&gt;
&lt;br /&gt;
* メモリが非常に少ないシステムで実行している場合は、 {{ic|-H}} オプションを削除することを検討してください。ただし、最近のほとんどのマシンでは問題ありません。使用するソフトウェアによっては、ファイルシステムに多くのハードリンクが存在する可能性があります(たとえば、 [[Flatpak]] を使用している場合)。多くのハードリンクは {{ic|/usr/}} ディレクトリの下にあります。&lt;br /&gt;
* これを同じバックアップディレクトリで複数回実行している場合は、rsync の {{ic|--delete}} オプションを追加することをお勧めします。この場合、ソースパスが {{ic|/*}} で終わっていないことを確認してください。そうでない場合、このオプションはソースディレクトリのサブディレクトリ内のファイルにのみ影響しますが、存在するファイルには影響しません。&lt;br /&gt;
* 仮想ディスク、 [[Docker]] イメージなどのスパースファイルを使用する場合は、 {{ic|-S}} オプションを追加する必要があります。&lt;br /&gt;
* {{ic|--numeric-ids}} オプションは、ユーザー名とグループ名のマッピングを無効にします。代わりに、数値のグループ ID とユーザー ID が転送されます。これは、 [[SSH]] を介してバックアップする場合、またはライブシステムを使用して別のシステムディスクをバックアップする場合に役立ちます。&lt;br /&gt;
* {{ic|-v}} の代わりに {{ic|1=-info=progress2}} オプションを選択すると、転送されるファイルのリストではなく、全体的な進行状況情報と転送速度が表示されます。&lt;br /&gt;
* 再帰時にファイルシステムの境界を越えないようにするには、オプション {{ic|-x}}/{{ic|--one-file-system}} を追加します。これにより、階層内のマウントポイントをバックアップできなくなります。&lt;br /&gt;
&lt;br /&gt;
=== バックアップを復元する ===&lt;br /&gt;
&lt;br /&gt;
バックアップを復元する場合は、実行されたのと同じ rsync コマンドを使用しますが、ソースと宛先を逆にします。&lt;br /&gt;
&lt;br /&gt;
== ファイルシステムのクローニング ==&lt;br /&gt;
&lt;br /&gt;
rsync は、ファイルシステムのメタデータを含む可能な限り多くの情報を保持しながら、ファイルシステム内のすべてのデータのコピーを実行する方法を提供します。 これは、ソースファイルシステムと宛先ファイルシステムが同じタイプである必要がないファイルシステムレベルでのデータ複製の手順です。 バックアップ、ファイルシステムの移行、またはデータ復旧に使用できます。&lt;br /&gt;
&lt;br /&gt;
rsync の &amp;quot;アーカイブ&amp;quot; モードは、アクセス制御リスト、拡張属性、スパースファイルプロパティなどの特別なファイルシステムメタデータはバックアップされません。 ファイルシステムレベルでのクローンを成功させるには、いくつかのオプションを追加する必要があります。&lt;br /&gt;
&lt;br /&gt;
 rsync -qaHAXS SOURCE_DIR DESTINATION_DIR&lt;br /&gt;
&lt;br /&gt;
それらの意味は (manpageから):&lt;br /&gt;
&lt;br /&gt;
 --hard-links, -H         preserve hard links&lt;br /&gt;
 --acls, -A               preserve ACLs (implies --perms)&lt;br /&gt;
 --xattrs, -X             preserve extended attributes&lt;br /&gt;
 --sparse, -S             turn sequences of nulls into sparse blocks&lt;br /&gt;
&lt;br /&gt;
さらに、コピーから除外するツリーの下に他のファイルシステムがマウントされている場合は、 {{ic|-x}} を使用します。&lt;br /&gt;
生成されたコピーは、 {{ic|diff}} の再帰オプションを使用して、ファイルシステムレベルで簡単に再読み取りおよびチェックできます(たとえば、データ回復の試行後)。&lt;br /&gt;
&lt;br /&gt;
 diff -r SOURCE_DIR DESTINATION_DIR&lt;br /&gt;
&lt;br /&gt;
rsync を使用し、 [[新しいハードウェアに移行する]] で説明されているように [[fstab]] と [[ブートローダー]] を更新することで、ファイルシステムの移行を成功させることができます。 これは基本的に、ルートファイルシステムを別のルートファイルシステムに変換する時にも適しています。&lt;br /&gt;
&lt;br /&gt;
== rsync デーモン ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;rsync&#039;&#039; は、ポート {{ic|873}} で待機しているサーバー上でデーモンとして実行できます。&lt;br /&gt;
&lt;br /&gt;
​テンプレート {{ic|/etc/rsyncd.conf}} を編集して共有を構成し、 {{ic|rsyncd.service}} を [[systemd#ユニットを使う|スタート]] します。&lt;br /&gt;
&lt;br /&gt;
{{Note| {{Pkg|rsync}} 3.2.0-1 の時点で、パッケージはアップストリーム systemd ユニットファイル {{ic|rsyncd.service}} と {{ic|rsyncd@.service}} を採用しました。 {{ic|1=ProtectHome}} の変更についてコメントがあり、 {{ic|[Service]}} セクションのセキュリティ機能 {{ic|1=ProtectSystem=full}} は引き続きアクティブです。 これにより、 {{ic|/boot/}}、 {{ic|/etc/}}、 および {{ic|/usr/}} ディレクトリが読み取り専用になります。 rsyncd 書き込みシステムディレクトリが必要な場合は、ユニットを [[systemd#ユニットファイルの編集|編集]] して、オーバーライドするスニペットの {{ic|[Service]}} セクションで {{ic|1=ProtectSystem=off}} を設定できます。}}&lt;br /&gt;
&lt;br /&gt;
クライアントからの使用&lt;br /&gt;
&lt;br /&gt;
例:サーバーコンテンツの一覧表示:&lt;br /&gt;
&lt;br /&gt;
 $ rsync rsync://&#039;&#039;server/share&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
クライアントからサーバーにファイルを転送する:&lt;br /&gt;
&lt;br /&gt;
 $ rsync &#039;&#039;local-file&#039;&#039; rsync://&#039;&#039;server/share/&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
ポート {{ic|873}} とユーザー認証を開くための iptables を検討してください。&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;
{{hc|1=/etc/rsyncd.conf|2=&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
# Needed when crossing filesystem boundaries.&lt;br /&gt;
#use chroot  = no&lt;br /&gt;
read only = yes&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[sync]&lt;br /&gt;
    path         = /&lt;br /&gt;
# List of files to copy.&lt;br /&gt;
    include from = /backup.list&lt;br /&gt;
# Exclude the rest.&lt;br /&gt;
    exclude      = *&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
ファイルリスト内では、ワイルドカード {{ic|***}} が使用されている場合を除き、すべての &#039;&#039;中間パス&#039;&#039; が必要です:&lt;br /&gt;
&lt;br /&gt;
{{hc|/backup.list|&lt;br /&gt;
/etc/&lt;br /&gt;
/etc/conf.d/&lt;br /&gt;
/etc/conf.d/hwclock&lt;br /&gt;
/etc/fonts/***&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== 参照 ==&lt;br /&gt;
&lt;br /&gt;
* その他の使用例は、こちらで検索できます。 [https://bbs.archlinux.org/viewforum.php?id=27 Community Contributions] , [https://bbs.archlinux.org/viewforum.php?id=33 General Programming] フォーラム&lt;br /&gt;
* [https://www.pointsoftware.ch/2012/09/12/howto-local-and-remote-snapshot-backup-using-rsync-with-hard-links/ Howto – local and remote snapshot backup using rsync with hard links] ハードリンクやMD5インテグリティシグネチャ、&#039;chattr&#039; 保護、フィルタールール、ディスククオータ、リテンションポリシー（新しいファイルを保存する時のバックアップローテーション) とファイル重複排除といった内容があります。&lt;br /&gt;
* [https://stackoverflow.com/questions/5527068/how-do-you-use-an-identity-file-with-rsync Using SSH keys/identity files with rsync]&lt;br /&gt;
* [https://www.fosslinux.com/41713/top-20-rsync-examples-in-linux.htm Linuxでのトップ20のRsyncサンプル]&lt;/div&gt;</summary>
		<author><name>Shota</name></author>
	</entry>
</feed>