https://wiki.archlinux.jp/api.php?action=feedcontributions&user=Buzztaiki&feedformat=atom
ArchWiki - 利用者の投稿記録 [ja]
2024-03-29T01:40:31Z
利用者の投稿記録
MediaWiki 1.34.0
https://wiki.archlinux.jp/index.php?title=PipeWire&diff=25180
PipeWire
2022-04-22T13:55:25Z
<p>Buzztaiki: Noise suppression for voice の翻訳を最新に更新</p>
<hr />
<div>[[Category:マルチメディア]]<br />
[[en:PipeWire]]<br />
[[fi:PipeWire]]<br />
[[pt:PipeWire]]<br />
[[ru:PipeWire]]<br />
[https://pipewire.org PipeWire] は新しい低レベルマルチメディアフレームワークです。<br />
映像と音声を最小の遅延で再生/キャプチャすることを目的としていて、[[PulseAudio]]、[[JACK]]、[[ALSA]]、[[GStreamer]] をベースとしたアプリケーションと互換性があります。<br />
<br />
このフレームワークのデーモンは (PulseAudio と JACK の機能を持った) オーディオサーバーとしても、ビデオキャプチャサーバーとしても設定できます。<br />
<br />
また PipeWire は [[Flatpak]] のようなコンテナをサポートしており、''audio'' や ''video'' [[ユーザーとグループ#グループ管理|ユーザーグループ]]に依存するのではなく、Flatpak や Wayland にスクリーンや音声を録音する許可を求める [[Polkit]] のようなセキュリティモデルを使用しています。<br />
<br />
== インストール ==<br />
<br />
公式リポジトリから {{Pkg|pipewire}} パッケージを [[インストール]] してください。[[multilib]] に対応した {{Pkg|lib32-pipewire}} もあります。<br />
<br />
Pipewire は [[systemd/ユーザー]] を使ってサーバーを管理し、ソケットを自動で起動します。<br />
<br />
オプションとして、{{Pkg|pipewire-docs}} をインストールすると、ドキュメントを確認することができます。<br />
<br />
Pipewire は、他のオーディオサーバーと置き換えることができます。詳しくは [[PipeWire#オーディオ|オーディオ]] を参照してください。<br />
<br />
=== セッション マネージャー ===<br />
<br />
[[JACK]] と同様、PipeWire は内部で接続ロジックを実装していません。新しいストリームを監視し、適切な出力デバイスやアプリケーションに接続する負担は、セッションマネージャーとして知られる外部のコンポーネントに任されています。<br />
<br />
現在、2つのセッションマネージャーが利用可能です。<br />
<br />
* {{App|PipeWire Media Session|いくつかの基本的なデスクトップのユースケースに対応した非常にシンプルなセッションマネージャです。これは主にテスト用と新しいセッションマネージャを構築するための例として実装されました。|https://gitlab.freedesktop.org/pipewire/media-session|{{Pkg|pipewire-media-session}}}}<br />
* {{App|[[WirePlumber]]| より強力なマネージャであり、現在の推奨品です。モジュール設計に基づいており、実際の管理機能を実装する Lua プラグインがあります。|https://pipewire.pages.freedesktop.org/wireplumber/|{{Pkg|wireplumber}}}}<br />
<br />
PipeWire のインストール時に、どちらかを選ぶように指示されます。後で適切なパッケージをインストールすることで、もう一方のオプションと衝突しますが、置き換えることで切り替えが可能です。<br />
<br />
=== GUI ===<br />
<br />
* {{App|Helvum|PipeWire 用の GTK 製のパッチベイ。 JACK のツールの catia にインスパイアされた。|https://gitlab.freedesktop.org/ryuukyu/helvum|{{AUR|helvum}}, {{AUR|helvum-git}}}}<br />
<br />
== 設定 ==<br />
<br />
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]<br />
<br />
=== プロファイル ===<br />
<br />
Pipewire では、PulseAudio のプロファイルに加えて、pavucontrol で選択可能なカスタムの ''Pro Audio'' プロファイルが提供されています。その効果はこちらで解説しています:https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#what-is-the-pro-audio-profile<br />
<br />
== 使用方法 ==<br />
<br />
=== 音声 ===<br />
<br />
PulseAudio や JACK と同様に PipeWire をオーディオサーバーとして使用できます。 PulseAudio サーバーの互換実装と JACK クライアント用の ABI 互換ライブラリを提供することで PulseAudio と JACK の両方を置き換えることを目的としています。詳細については[https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ この記事]を参照してください。<br />
<br />
==== ALSA/レガシーアプリケーション ====<br />
<br />
{{pkg|pipewire-alsa}} をインストールして ALSA API を使用するすべてのアプリケーションが PipeWire を使用するよう設定できます。<br />
<br />
==== PulseAudio クライアント ====<br />
<br />
{{pkg|pipewire-pulse}} をインストールします。このパッケージは {{pkg|pulseaudio}} と {{pkg|pulseaudio-bluetooth}} を置き換えます。再起動するか、ログインし直すか、{{ic|systemctl start --user pipewire-pulse.service}} を実行すると有効化されます。<br />
<br />
パッケージがユーザーサービス {{ic|pipewire-pulse.socket}} を自動的に有効化するので、通常それ以上の操作は不要です。置き換えが機能しているかどうかを確認するには、次のコマンドを実行して出力を確認してください:<br />
<br />
{{hc|1=$ pactl info|2=<br />
...<br />
Server Name: PulseAudio (on PipeWire 0.3.16)<br />
...<br />
}}<br />
<br />
システム起動時に 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}} を設定していることに注意してください。<br />
<br />
==== JACK クライアント ====<br />
<br />
{{pkg|pipewire-jack}} をインストールします。{{ic|pw-jack}} を使用して JACK クライアントを起動すると、元の {{ic|libjack*}} ではなく PipeWire が提供する互換ライブラリが使用されます:<br />
<br />
pw-jack ''application''<br />
<br />
カスタムバッファサイズを要求することもできます。{{ic|PIPEWIRE_LATENCY}}環境変数を {{ic|バッファサイズ/サンプルレート}} (ブロックのレイテンシ(秒)を意味します) に設定します:<br />
<br />
PIPEWIRE_LATENCY="128/48000" pw-jack ''application''<br />
<br />
また {{aur|pipewire-jack-dropin}} をインストールするか、{{pkg|jack}} か {{pkg|jack2}} をアンインストールして JACK クライアントが互換ライブラリを自動的に読み込むようにもできます。<br />
<br />
{{ic|ldd}} を使用して JACK アプリケーションが正しいライブラリにリンクしていることを確認します。<br />
<br />
{{hc|1=$ ldd /usr/bin/qjackctl {{!}} grep -i libjack|2=<br />
libjack.so.0 => /usr/lib/pipewire-0.3/jack/libjack.so.0 (0x00007f7e5080a000)<br />
}}<br />
<br />
==== Bluetooth デバイス ====<br />
<br />
PipeWire は {{pkg|pipewire-pulse}} パッケージがインストールされている場合 Bluetooth オーディオデバイスを制御します。具体的には、メディアセッションデーモンは {{ic|/etc/pipewire/media-session.d/with-pulseaudio}} が存在する時に自動的にその {{ic|bluez5}} モジュールを有効にします。<br />
<br />
===== プロファイルの自動選択機能 =====<br />
<br />
{{Pkg|pipewire-media-session}} は、入力ストリームが必要なときに、HSP/HFP と A2DP プロファイルを自動的に切り替えます。これを有効にするには、{{ic|bluez5.autoswitch-profile}} プロパティを {{ic|true}} にセットしてください。<br />
<br />
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf (or ~/.config/pipewire/media-session.d/bluez-monitor.conf|output=<br />
...<br />
rules = [<br />
{<br />
...<br />
actions = {<br />
update-props = {<br />
...<br />
bluez5.autoswitch-profile = true<br />
...<br />
}}<br />
<br />
これらの機能は、[[WirePlumber]] ではまだ [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/90 実装中] です。<br />
<br />
==== PipeWire ネイティブパッチセット ====<br />
<br />
グラフィカルな視覚化と接続の作成のための Helvum はありますが、それ以外はまだ入っていません。以下は、ワイヤセットの保存、ワイヤセットの読み込み、すべての接続の解除を行う bash スクリプトです。保存と読み込みには、コマンドラインパラメータでファイル名を指定します。<br />
<br />
{{hc|pw-savewires|<nowiki><br />
#!/bin/bash<br />
<br />
if [[ "$#" -ne 1 ]]; then<br />
echo<br />
echo 'usage: pw-savewires filename'<br />
echo<br />
exit 0<br />
fi<br />
<br />
rm $1 &> /dev/null<br />
while IFS= read -r line; do<br />
link_on=`echo $line | cut -f 4 -d '"'`<br />
link_op=`echo $line | cut -f 6 -d '"'`<br />
link_in=`echo $line | cut -f 8 -d '"'`<br />
link_ip=`echo $line | cut -f 10 -d '"'`<br />
echo "Saving: " "'"$link_on:$link_op"','"$link_in:$link_ip"'"<br />
echo "'"$link_on:$link_op"','"$link_in:$link_ip"'" >> $1<br />
done < <(pw-cli dump short link)<br />
</nowiki>}}<br />
<br />
{{hc|pw-loadwires|<nowiki><br />
#!/bin/python<br />
<br />
import sys<br />
import csv<br />
import os<br />
<br />
if len(sys.argv) < 2:<br />
print('\n usage: pw-loadwires filename\n')<br />
quit()<br />
<br />
with open(sys.argv[1], newline='') as csvfile:<br />
pwwreader = csv.reader(csvfile, delimiter=',', quotechar='"')<br />
for row in pwwreader:<br />
print('Loading: ' + row[0] + ' --> ' + row[1])<br />
process = os.popen('pw-link ' + row[0] + ' ' + row[1])<br />
</nowiki>}}<br />
<br />
{{hc|pw-dewire|<nowiki><br />
#!/bin/bash<br />
while read -r line; do<br />
echo 'Dewiring: ' $line '...'<br />
pw-link -d $line<br />
done < <(pw-cli dump short link {{!}} grep -Eo '^[0-9]+')<br />
</nowiki>}}<br />
<br />
==== ネットワーク上のコンピューターとオーディオ機器を共有する ====<br />
<br />
PipeWire 自体はネットワーク透過型ではありませんが、そのパルス実装は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-PulseAudio#network-support ネットワークストリーミング] をサポートしています。ネットワーク上のコンピュータ間でオーディオを共有する簡単な方法は、[[Avahi]] デーモンを使ってディスカバリーすることです。<br />
オーディオを共有するすべてのコンピュータで {{ic|avahi-daemon.service}} が実行されていることを確認してください。<br />
<br />
ローカルのオーディオデバイスを共有するために、ホスト上で適切なモジュールをロードしてください。<br />
<br />
pactl load-module module-native-protocol-tcp listen=''192.168.1.10'' # Use the local IP address<br />
pactl load-module module-zeroconf-publish<br />
<br />
次に、クライアントにディスカバリモジュールをロードします。<br />
<br />
pactl load-module module-zeroconf-discover<br />
<br />
==== ネイティブ JACK 上で PipeWire を実行する ====<br />
<br />
PipeWire はネイティブ JACK デーモン上の JACK クライアントとして実行することもできます。詳細は [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/JACK JACK and PipeWire] を参照してください。<br />
<br />
=== WebRTC 画面共有===<br />
<br />
ほとんどのブラウザは WebRTC を使用しているとき (例えば Google ハングアウトで) デスクトップ (や個々のアプリケーション) をキャプチャするのに X11 に依存していました。Wayland ではセキュリティ上の理由から画面共有は異なる方法で処理されます。PipeWire はきめ細かなアクセス制御を使用して Wayland 上のコンテンツを共有できます。<br />
<br />
これには {{pkg|xdg-desktop-portal}} とそのバックエンドの1つが[http://jgrulich.cz/2018/07/04/04/how-to-enable-and-use-screen-sharing-on-wayland 必要です]。利用可能なバックエンドは次のとおりです:<br />
<br />
* GNOME の場合、{{pkg|xdg-desktop-portal-gtk}}<br />
* KDE の場合、{{pkg|xdg-desktop-portal-kde}}<br />
* wlroots ベースのコンポジター ([[Sway]] や [https://github.com/djpohly/dwl dwl] など) の場合、{{pkg|xdg-desktop-portal-wlr}}<br />
<br />
Firefox (バージョン84以降) はデフォルトでこの方法をサポートしていますが、Chromium (バージョン73以降) では、[https://bugs.chromium.org/p/chromium/issues/detail?id=682122 WebRTC PipeWireサポート]を次のURLの実験的機能の設定を変更して有効にする必要があります:<br />
chrome://flags/#enable-webrtc-pipewire-capturer<br />
<br />
{{ic|xdg-desktop-portal-wlr}} を動かすには {{pkg|pipewire-media-session}} をインストール[https://github.com/emersion/xdg-desktop-portal-wlr/wiki/FAQ/db63ec1ab6c0170334c1d1f45d1ebe543cc375fa#how-do-i-run-xdpw]して、セッション内で環境変数を {{ic|1=XDG_CURRENT_DESKTOP=sway}} のように設定する必要があります[https://github.com/emersion/xdg-desktop-portal-wlr#running]。同様に {{ic|1=XDG_SESSION_TYPE=wayland}} も設定する必要があります[https://github.com/emersion/xdg-desktop-portal-wlr/issues/117]。<br />
<br />
{{Tip|複数のモニタがある場合に {{ic|xdg-desktop-portal-wlr}} を使用してそれぞれのモニターを共有するには、ユニットの {{ic|1=ExecStart=}} オプションを[[Systemd#ユニットファイルの編集|編集]]して {{ic|1=--output=''Monitor''}} フラグを追加してください。行全体は {{ic|1=ExecStart=@libexecdir@/xdg-desktop-portal-wlr --output=eDP-1}} のようになります。}}<br />
<br />
唯一サポートされている機能はデスクトップ全体の共有で、特定のアプリケーション/ウィンドウの共有はサポートされていません。[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]<br />
<br />
==== xdg-desktop-portal-wlr ====<br />
<br />
{{ic|1=XDG_CURRENT_DESKTOP}} と {{ic|1=WAYLAND_DISPLAY}} 環境変数が [[Systemd/ユーザー#環境変数|systemd user session]] で設定されていないと、{{ic |1=xdg-desktop-portal-wlr}} は動きません。{{ic|1=XDG_CURRENT_DESKTOP}} はコンポジターの名前に設定する必要があります、例えば {{ic|1=XDG_CURRENT_DESKTOP=sway}} です。{{ic|1=WAYLAND_DISPLAY}} は、コンポジターによって自動的に設定されます。これらの環境変数を systemd ユーザーセッションに渡す推奨方法は、コンポジターを起動した後に {{ic|1=systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP}} を、例えばコンポジターの設定ファイルを使って実行することです。詳しくは [https://github.com/emersion/xdg-desktop-portal-wlr#running] と [https://github.com/emersion/xdg-desktop-portal-wlr/wiki] を参照してください。<br />
<br />
{{Tip|{{ic|xdg-desktop-portal-wlr}} で個々のモニターを共有するには、複数ある場合、設定ファイルのオプションを使うことができます、 {{man|5|xdg-desktop-portal-wlr|SCREENCAST OPTIONS}} を参照して下さい。<br />
{{hc|~/.config/xdg-desktop-portal-wlr/config|2=<br />
chooser_type = none<br />
output_name = ''Monitor''<br />
}}<br />
[[Sway]]では、{{ic|swaymsg -t get_outputs}} コマンドで ''Monitor'' の値を取得することができます}}<br />
<br />
=== 映像 ===<br />
<br />
ソフトウェアはまだ商業利用には適していませんが、試す分には問題ありません。[[GStreamer]] を使用して映像ストリームを処理するほとんどのアプリケーションは PipeWire GStreamer プラグインを使用して設定なしで動作するはずです ([[GStreamer#PipeWire]]を参照してください)。そのため既に {{pkg|cheese}} のようなアプリケーションは PipeWire を使用して映像入力を利用できます。<br />
<br />
== 音声のポストプロセッシング ==<br />
<br />
=== EasyEffects ===<br />
<br />
EasyEffects (以前は PulseEffects と呼ばれていました) は多数のエフェクトとフィルタを個々の入出力ストリーム (アプリケーションの音声出力やマイクの入力など) に提供する GTK 製のユーティリティです。注目すべきエフェクトには、入出力イコライザー、出力ラウドネス等化、ベースエンハンスメント、入力ディエッサー、ノイズ抑制プラグインなどがあります。[https://github.com/wwmm/easyeffects GitHub ページ]にエフェクトの一覧があります。<br />
<br />
EasyEffects を使用するには、{{pkg|easyeffects}} をインストールします。プリセット設定集については、[https://github.com/wwmm/easyeffects/wiki/Community-presets コミュニティープリセット]を参照してください。<br />
<br />
{{Note|PulseEffects の古いバージョンについては [[PulseAudio#PulseEffects]] を参照してください。}}<br />
<br />
=== NoiseTorch ===<br />
<br />
{{aur|noisetorch}} はノイズ抑制に使用できます。ビルド済み ({{aur|noisetorch-bin}}) や開発版 ({{aur|noisetorch-git}}) のパッケージもあります。<br />
<br />
起動すると選択したマイクにモジュールを読み込むことができます。声が出力される閾値を調整することができます。実際の声が削除されない最大のレベルに設定するべきです。<br />
<br />
=== Noise suppression for voice ===<br />
<br />
{{AUR|noise-suppression-for-voice}} をインストールし、以下のいずれかのオプションを使用します:<br />
<br />
* 以下の行を {{ic|context.exec}} セクションに追加する:<br />
<br />
{{hc|/etc/pipewire/pipewire.conf (or ~/.config/pipewire/pipewire.conf)|output=<br />
...<br />
context.exec = [<br />
...<br />
{ path = "/usr/bin/pipewire" args = "-c /usr/share/pipewire/filter-chain/source-rnnoise.conf" }<br />
...<br />
}}<br />
<br />
* https://github.com/werman/noise-suppression-for-voice#pipewire に従う<br />
<br />
そして、オーディオ設定でノイズキャンセルソースをデフォルトとして設定します。この機能を使う前に、アプリケーションを再起動する必要があるかもしれません。<br />
<br />
=== JamesDSP ===<br />
<br />
[https://github.com/Audio4Linux/JDSP4Linux#readme JamesDSP for Linux] ({{AUR|jamesdsp}} として入手可能) は PipeWire と PulseAudio のためのオープンソースのサウンドエフェクトを提供します。LADSPA や Calf などに依存することなく、独自のエフェクトエンジンを使用しています。JamesDSP は当初 Android デバイス用のオーディオエフェクトプロセッサーとして公開されました。<br />
<br />
=== LADSPA、LV2、VST プラグイン ===<br />
<br />
LADSPA、LV2、VSTのプラグインを使用したい場合は、カスタム PulseAudio null シンクと Carla Jack ホストを利用できます。{{pkg|pipewire-pulse}} と {{pkg|pipewire-jack}} と {{pkg|carla}} をインストールします。はじめに {{ic|default_null_sink}} という名前の PulseAudio の null シンクを作成します。<br />
<br />
pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=default_null_sink channel_map=FL,FR<br />
<br />
{{ic|pw-jack carla-rack}} で PipeWire を使用する Carla を起動します。''Rack'' タブで使いたいプラグインを全て追加します。プラグインのタイプが ''stereo'' であることを確認してください。適用する順番を変えることができます。EasyEffectsのようにリストの最初のプラグインが最初に入力の音声ストリームを受け取ります。その後 ''Patchbay'' タブに移動し {{ic|default_null_sink}} の L/R monitor を Carla input に接続し、Carla output を出力したいデバイス (スピーカーやイヤホンや HDMI 出力など) の playback に接続します。設定をフォルダに保存します ({{ic|~/Documents/carla_sink_effects.carxp}} など)。<br />
<br />
Firefox で動画を見ている時など、アプリケーションが音声を再生している時に効果を試すことができます。2つの方法があります。一つは Carla の ''Patchbay'' タブで Firefox の接続を全て外し {{ic|default_null_sink}} の L/R output に接続する方法です。もう一つは {{pkg|pavucontrol}} を使用し Firefox の音声ストリームを {{ic|default_null_sink}} に変更する方法です (この方法は同じアプリケーションの次回起動時に同じ接続先を使用するはずです)。<br />
<br />
これらの設定を起動時に適用するには、まず2つの systemd ユーザーサービスを作成します:<br />
<br />
{{hc|~/.config/systemd/user/jack-carla-rack.service|output=<br />
[Unit]<br />
Description=Load Carla Rack JACK host<br />
<br />
[Service]<br />
PassEnvironment="PIPEWIRE_LINK_PASSIVE=true"<br />
Type=exec<br />
ExecStart=/usr/bin/pw-jack carla-rack -n<br />
<br />
[Install]<br />
WantedBy=default.target<br />
}}<br />
{{hc|~/.config/systemd/user/pulseaudio-null-sink@.service|output=<br />
[Unit]<br />
Description=Load %i Pulseaudio null sink<br />
Before=jack-carla-rack.service<br />
After=pipewire-pulse.service<br />
<br />
[Service]<br />
Type=oneshot<br />
ExecStart=/usr/bin/pactl load-module module-null-sink object.linger=1 media.class=Audio/Sink sink_name=%i channel_map=FL,FR<br />
ExecStop=/usr/bin/pactl unload-module module-null-sink<br />
RemainAfterExit=yes<br />
<br />
[Install]<br />
WantedBy=default.target<br />
}}<br />
<br />
''jack-carla-rack'' サービスの ''Environment'' を Carla の設定ファイルのフルパスを指定するよう上書きします:<br />
<br />
{{hc|~/.config/systemd/user/jack-carla-rack.service.d/override.conf|output=<br />
Environment="CARLA_CONFIG_FILE=/home/username/Documents/carla_sink_effects.carxp"<br />
ExecStart=<br />
ExecStart=/usr/bin/pw-jack carla-rack -n $CARLA_CONFIG_FILE<br />
}}<br />
<br />
最後に、作成したサービスを有効化します。''pulseaudio-null-sink'' サービスには {{ic|default_null_sink}} 引数をつけてください:<br />
<br />
systemctl --user enable pulseaudio-null-sink@default_null_sink.service<br />
systemctl --user enable jack-carla-rack.service<br />
<br />
{{Note|システム設定で {{ic|default_null_sink}} をデフォルトデバイスに設定すると、全てのアプリケーションが {{ic|default_null_sink}} にリダイレクトされ、音量の変更がスピーカーではなく {{ic|default_null_sink}} に対して行われるようになります。スピーカーの音量を変更したい場合は、デフォルトデバイスをスピーカーから変更せずにアプリケーションの出力先を pavucontrol で {{ic|default_null_sink}} に変更してください (PipeWire の互換性レイヤーは次回起動時も出力先を覚えています)。}}<br />
<br />
== トラブルシューティング ==<br />
<br />
<br />
=== オーディオ ===<br />
<br />
==== PipeWire にマイクが検出されない ====<br />
<br />
PipeWire の {{ic|alsa-monitor}} モジュールは、デフォルトで {{Pkg|alsa-card-profiles}} を使ってデバイスを検出します。これがうまくいかない場合は、{{ic|api.alsa.use-acp}} をオフにするか、オプションで {{ic|api.alsa.use-ucm}} をオンにすることを試してみてください。<br />
<br />
{{Pkg|pipewire-media-session}} を使用している場合。<br />
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf (または ~/.config/pipewire/media-session.d/alsa-monitor.conf)|output=<br />
...<br />
rules = [<br />
{<br />
...<br />
actions = {<br />
update-props = {<br />
...<br />
api.alsa.use-acp = false<br />
...<br />
}}<br />
<br />
それ以外の場合は、{{Pkg|wireplumber}} を使用している場合。<br />
{{hc|/etc/wireplumber/main.lua.d/50-alsa-config.lua (または ~/.config/wireplumber/main.lua.d/50-alsa-config.lua)|output=<br />
...<br />
alsa_monitor.rules = {<br />
{<br />
...<br />
apply_properties = {<br />
-- Use ALSA-Card-Profile devices. They use UCM or the profile<br />
-- configuration to configure the device and mixer settings.<br />
-- ["api.alsa.use-acp"] = true,<br />
<br />
-- Use UCM instead of profile when available. Can be<br />
-- disabled to skip trying to use the UCM profile.<br />
["api.alsa.use-ucm"] = true,<br />
...<br />
}}<br />
<br />
その後、pipewire を再起動し、利用可能なデバイスを確認します。<br />
<br />
{{hc| 1=<br />
$ pw-record --list-targets<br />
|2=<br />
Available targets ("*" denotes default): 62<br />
58: description="Built-in Audio" prio=1872<br />
60: description="Built-in Audio" prio=2000<br />
* 62: description="Built-in Audio (Loopback PCM)" prio=1984<br />
}}<br />
<br />
==== サウンドが自動的に Bluetooth ヘッドフォンに切り替わらない ====<br />
<br />
{{ic|pactl load-module module-switch-on-connect}} を実行し、ログイン時に自動的にそのコマンドが実行されるようにデスクトップ環境を設定してください。詳しくは [https://gitlab.freedesktop.org/pipewire/wireplumber/-/issues/89 wireplumber issue #89] を見てください。<br />
<br />
==== Bluetooth デバイスに接続しても音が出ない ====<br />
<br />
2020-12-07 の時点で、Bluetooth デバイスを接続しても音が出ない場合は、デフォルトのシンクに切り替えるか、シンク入力を正しいシンクに移動する必要があります。{{ic|pactl list sinks}} で使用可能なシンクの一覧を表示し、{{ic|pactl set-default-sink}} でデフォルトのシンクを Bluetooth デバイスに切り替えます。これは[https://gist.github.com/tinywrkb/04e7fd644afa9b92d33a3a99ab07ee9e このようなスクリプト]を使って [[udev]] で自動化できます。<br />
<br />
この問題については、この [https://www.reddit.com/r/archlinux/comments/jydd02/pipewirepulse_03164_in_testing_now_replaces/gd3m7fu/?context=3 Reddit スレッド]を参照してください。スクリプトの作成者によると、ヘッドセットプロファイル (HSP) にまだ問題がある可能性があります。<br />
<br />
==== 音量が小さい ====<br />
<br />
PulseAudio を PipeWire で置き換えた後、正しく音が出ても、再起動後に音量が極端に小さくなることがあります。<br />
<br />
{{ic|alsamixer}} を開き、{{ic|F6}} を押して適切なサウンドカードを選び ALSA のボリュームが100%であることを確認してください。{{ic|alsactl}} は再起動後もこの設定を維持するはずです。<br />
<br />
==== increasing RLIMIT_MEMLOCK ====<br />
<br />
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<br />
<br />
{{pkg|realtime-privileges}} をインストールし {{ic|realtime}} グループに自分のユーザーを追加します。<br />
<br />
あるいは memlock を 64kB から 128kB に増やすことで、この問題を解決できるようです。[[systemd/ユーザー]] で {{ic|pipewire-pulse}} を実行している場合は {{ic|/etc/security/limits.d/username.conf}} に次の行を追加します:<br />
<br />
username soft memlock 64<br />
username hard memlock 128<br />
<br />
==== サンプリングレートを変更する ====<br />
<br />
PipeWire のデフォルトでは、グローバルサンプルレートは 48kHz に設定されています。これを変更したい場合(より高い値をサポートする DAC を所有しているなど)、設定ファイル {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} 行を編集することで行うことができます。例えば、192kHz にしたい場合は、{{ic|48000}} を {{ic|1=default.clock.rate = 192000}} にコメントを解除して変更します。<br />
<br />
PipeWire は、DAC がサポートする出力サンプルレートを変更することもできます。設定するには、{{ic|1=default.clock.allowed-rates = [ 48000 ]}} という行をコメント解除して設定します。例えば、{{ic|[ 44100 48000 88200 96000 ]}} とします。サンプルレートは、カードがアイドルのときに再生されるオーディオストリームのサンプルレートに従います。<br />
<br />
どの出力サンプルレートとサンプルフォーマットが DAC に送られたデータであるかを確認するには(おそらく桁を変更する必要があります)。<br />
cat /proc/asound/card0/pcm0p/sub0/hw_params<br />
どの入力サンプルレートを使用しているかを確認するには、{{ic|pcm0p}} を {{ic|pcm0c}} に変更します。({{ic|c}} は "capture" の略、{{ic|p}} は "playback" の略です).<br />
<br />
==== 音質(リサンプリング品質) ====<br />
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}}を絶対に忘れないでください)。<br />
<br />
{{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% の負荷となる。<br />
<br />
リサンプラーの比較はこちら:https://src.infinitewave.ca/(18KHz以上、120dB以上は注意)。speeex は ''Xiph.org Speex'' と記載されています。<br />
<br />
PipeWire は Spa と呼ばれる独自のリサンプリングアルゴリズムを使用しています。SoX の {{ic|sox}}、Speex の {{ic|speexenc}} と同様、PipeWire にはそのスタンドアロン版があります。{{ic|spa-resample}} 使い方は<br />
spa-resample -q 15 -f s24 -r 48000 input16bit44100orAnythingElse.wav output24bit48000hz.wav<br />
<br />
自分で sink を作れば、他のリサンプラーを使うことも可能でしょう。あるいは、音楽プレーヤーのプラグインを使うことも出来ます(例えば、Qmmp には SoX プラグインがあります)<br />
<br />
==== 外付けサウンドカードが再接続後に有効にならない ====<br />
<br />
{{ic|~/.config/pipewire-media-session/default-profile}} にデフォルトプロファイル ''off'' のエントリがあれば削除します。それでも解決しない場合は {{ic|~/.config/pipewire-media-session/}} からすべてのファイルを削除し、{{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動します。<br />
<br />
==== 音が出ないまたは pactl info が Failure: Connection refused と表示する ====<br />
<br />
これはアプリケーションが PipeWire-Pulse サービスに接続できていないことを意味します。{{ic|/etc/pipewire/pipewire-pulse.conf}} が存在し空でないことを確認し、{{ic|systemctl --user restart pipewire-pulse.service}} で PipeWire-Pulse を再起動してください。<br />
<br />
それでも解決しない場合は {{ic|strace -f -o /tmp/pipe.txt pactl info}} を実行し、pastebin に {{ic|/tmp/pipe.txt}} を貼り付けて、IRC (OFTC の [ircs://irc.oftc.net/pipewire #pipewire]) かメーリングリストで相談してください。<br />
<br />
==== Bluetooth の音声の品質が低い====<br />
<br />
Bluetooth で再生が途切れる場合は {{ic|systemctl --user status pipewire.service}} を実行してみてください。次のようなエラーが表示される場合は、<br />
<br />
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<br />
<br />
{{ic|pactl list sinks}} で現在選択されているコーデックを確認し、{{ic|/etc/pipewire/media-session.d/bluez-monitor.conf}} の {{ic|bluez5.codecs}} を {{ic|sbc aac ldac aptx aptx_hd}} のいずれかに変更してみてください。<br />
<br />
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=<br />
...<br />
properties = {<br />
...<br />
bluez5.codecs = [sbc]<br />
...<br />
}}<br />
<br />
mSBC サポートの有効化を試すには (Sony 1000XM3 のマイクの問題を修正します):<br />
<br />
{{hc|/etc/pipewire/media-session.d/bluez-monitor.conf|output=<br />
...<br />
rules = [<br />
...<br />
actions = {<br />
...<br />
update-props = {<br />
...<br />
bluez5.msbc-support = true<br />
...<br />
}}<br />
<br />
変更を適用するには {{ic|systemctl --user restart pipewire.service}} で PipeWire を再起動する必要があります。<br />
<br />
==== PipeWire の更新 (git / >=0.3.23) と再起動後デバイスが検出されない ====<br />
<br />
コミット 012a68f8[https://gitlab.freedesktop.org/pipewire/pipewire/-/commit/012a68f8ef33705f1a40ec8ac294b8cce7f6aa88] の時点で新しい systemd サービスが追加されデフォルトでは無効になっています。これはシステムの起動時に {{ic|pipewire-media-session}} が実行されないことを意味します。サービスを有効にするには {{ic|systemctl --user enable --now pipewire-media-session.service}} を実行します。<br />
<br />
システムの管理者やパッケージマネージャが更新後に設定ファイルの変更を整理していない場合、{{ic|pipewire.service}} によって {{ic|pipewire-media-session}} の別のプロセスが実行されている可能性があります。確認するには {{ic|systemctl --user status pipewire.service}} を実行してください。<br />
<br />
pipewire および pipewire-media-session が実行中と表示される場合は、システム設定かユーザ設定、あるいは両方を更新します。<br />
<br />
{{hc|/etc/pipewire/pipewire.conf または ~/.config/pipewire/pipewire.conf|output=<br />
context.exec = {<br />
...<br />
# 次の行をコメントアウトする必要があります<br />
#"/usr/bin/pipewire-media-session" = { args = "" }<br />
...<br />
}<br />
}}<br />
<br />
==== 再生開始時に音声に遅延が発生する ====<br />
<br />
これは非アクティブ時のノードのサスペンドが原因です。遅延が発生する領域に応じて {{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 サービスの両方を再起動するか、システムを再起動してください。<br />
<br />
==== 複数のストリームの再生開始時に音声が途切れる ====<br />
<br />
この問題は通常 {{ic|journalctl -b | grep -i pipewire}} を実行し、次のような行を探すことで診断できます:<br />
<br />
pipewire-pulse[21740]: pulse-server 0x56009b9d5de0: [Nightly] UNDERFLOW channel:0 offset:370676 underrun:940<br />
<br />
[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}} に変更します。<br />
<br />
==== 音がひずむ ====<br />
* マイクについては、{{ic|alsamixer}} を起動し、問題があるサウンドカードを選択し、{{ic|Mic Boost}} や {{ic|Internal Mic Boost}} の値を下げてみてください。<br />
* {{ic|/etc/pipewire/pipewire.conf}} の {{ic|1=default.clock.rate = 48000}} のコメントを外して、値を {{ic|44100}} に下げてみてください。<br />
<br />
==== スタンバイ後に音声の問題が発生する ====<br />
<br />
スリープから復帰した際に音が消えたり壊れたりする場合は、ALSA を最初期化すると改善するかもしれません:<br />
<br />
# alsactl init<br />
<br />
==== USB DAC(例:Schiit 社製 DAC)で高レイテンシー ====<br />
<br />
サンプルレートやフォーマットを変更することで、Schiit Hel 2 などの一部の DAC でレイテンシーを減らすことができるかもしれません [https://www.reddit.com/r/osugame/comments/msifdd/usb_dacamp_and_audio_lag/] ''pipewire-media-session'' のマッチングルールを使用すると、デバイスのプロパティを設定することができます [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/Config-pipewire-media-session#matching-rules] <br />
''pipewire-media-session'' の {{ic|alsa-monitor.conf}} のデフォルト設定を {{ic|/etc/pipewire/media-session.d}} か {{ic|~/.config/pipewire/media-session.d}} にコピーしてください。<br />
そして、以下のような新しいルールブロックを追加してください。<br />
<br />
{{hc|/etc/pipewire/media-session.d/alsa-monitor.conf<br />
~/.config/pipewire/media-session.d/alsa-monitor.conf|output=<br />
rules = {<br />
...<br />
{<br />
matches = [<br />
{<br />
node.name = "alsa_output.<name of node>"<br />
}<br />
]<br />
actions = {<br />
update-props = {<br />
audio.format = "S24_3LE"<br />
audio.rate = 96000<br />
# Following value should be doubled until audio doesn't cut out or other issues stop occurring<br />
api.alsa.period-size = 128<br />
}<br />
}<br />
}<br />
...<br />
}<br />
}}<br />
<br />
{{ic|alsa_output.<node name>}} ノードは {{ic|pw-top}} で取得することができます。<br />
<br />
DAC は異なるフォーマットやサンプルレートをサポートしているかもしれません。[[ALSA]] に問い合わせることで、あなたの DAC が何をサポートしているかを確認することができます。<br />
<br />
まず、DAC のカード番号を取得します。<br />
<br />
{{hc|$ aplay -l|<br />
...<br />
card 3: S2 [Schiit Hel 2], device 0: USB Audio [USB Audio]<br />
Subdevices: 0/1<br />
Subdevice #0: subdevice #0<br />
...<br />
}}<br />
<br />
つまり、この例ではカード3ということになります。<br />
サポートされているすべてのサンプルレートとフォーマットを取得します。<br />
<br />
{{hc|$ cat /proc/asound/cardX/streamX|<br />
...<br />
Playback:<br />
...<br />
Interface 1<br />
Altset 1<br />
Format: S16_LE<br />
Channels: 2<br />
Endpoint: 0x05 (5 OUT) (ASYNC)<br />
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000<br />
Data packet interval: 125 us<br />
Bits: 16<br />
...<br />
Interface 1<br />
Altset 2<br />
Format: S24_3LE<br />
Channels: 2<br />
Endpoint: 0x05 (5 OUT) (ASYNC)<br />
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000<br />
Data packet interval: 125 us<br />
Bits: 24<br />
...<br />
Interface 1<br />
Altset 3<br />
Format: S32_LE<br />
Channels: 2<br />
Endpoint: 0x05 (5 OUT) (ASYNC)<br />
Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000<br />
Data packet interval: 125 us<br />
Bits: 32<br />
...<br />
...<br />
}}<br />
<br />
この場合、{{ic|S16_LE, S24_3LE, S32_LE}} はサポートされているフォーマットで、{{ic|44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000}} はすべてのフォーマットでサポートされているサンプルレートとなります。<br />
<br />
==== リアルタイムオーディオが動作しない ====<br />
<br />
{{ic|RTKit error: org.freedesktop.DBus.Error.AccessDenied}} が {{ic|systemctl --user status pipewire.service}} の出力に表示された場合、pipewire daemon の優先度がリアルタイムに変更されていないことを示します。この問題については、[https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/1069] を参照してください。<br />
<br />
=== ビデオ ===<br />
<br />
==== OBS(など)がウィンドウ/スクリーンを要求しても何も表示されない ====<br />
<br />
{{Pkg|xdg-desktop-portal}} と {{Pkg|xdg-desktop-portal-gtk}} または {{Pkg|xdg-desktop-portal-kde}} がインストールされていることが確実なら、デーモンの実行状態を確認してください。<br />
<br />
OBS では、すべてがうまくいっていれば、{{ic|stdout}} にこのように表示されるはずです。<br />
<br />
...<br />
info: [pipewire] desktop selected, setting up screencast<br />
info: [pipewire] created stream 0x5632d7456850<br />
info: [pipewire] playing stream…<br />
<br />
マルチモニタ環境では、{{Pkg|slurp}} パッケージを使用すると、すべての画面をキャプチャすることができます。<br />
<br />
== 参照 ==<br />
<br />
* [https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/home Wiki] — PipeWire Wiki on Freedesktop GitLab<br />
* [https://blogs.gnome.org/uraeus/2018/01/26/an-update-on-pipewire-the-multimedia-revolution-an-update/ Pipewire Update Blog Post] — PipeWire の2018年1月時点での進捗が書かれた記事<br />
* [https://blogs.gnome.org/uraeus/2020/09/04/pipewire-late-summer-update-2020/ PipeWire Late Summer Update 2020] — 2020年9月からの記事</div>
Buzztaiki
https://wiki.archlinux.jp/index.php?title=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%AB%E3%83%A9%E3%83%BC%E5%87%BA%E5%8A%9B&diff=25016
コンソールのカラー出力
2022-04-10T00:57:29Z
<p>Buzztaiki: 不要な行が残っていたので削除</p>
<hr />
<div>[[Category:Linux コンソール]]<br />
[[Category:視覚効果]]<br />
[[en:Color output in console]]<br />
[[zh-hans:Color output in console]]<br />
{{Related articles start}}<br />
{{Related|Emacs#カスタムカラーとテーマ}}<br />
{{Related|nano#シンタックスハイライト}}<br />
{{Related articles end}}<br />
このページでは CLI 出力のカラー化をまとめています。<br />
<br />
== Background ==<br />
<br />
=== エスケープシーケンス ===<br />
<br />
[[Wikipedia:ANSI escape sequence|ANSI エスケープシーケンス]] はターミナル出力に追加情報を配置する方法を定義しており、色はこの「追加情報」の一部です。何年にもわたって端末の色の範囲は、最初の8色から24ビットのトゥルーカラーまで、年々大幅に拡大されてきました。<br />
<br />
基本的なカラーエンコーディングは、通常の明るさの 8 色と、その明るいバージョンの 8 色を提供します。Linux コンソール自体を含む最新のターミナルエミュレータを使用すると、色が変換される正確な RGB 値を指定できます。このモードは、ほとんどのターミナルエミュレータでサポートされています。<br />
<br />
256 色ディスプレイの出現により、256 色のエスケープが可能になりました。256 色とは、基本 16 色、RGB 216色(6 x 6 x 6 の立方体に配置)、および 24 レベルのグレースケールです。最初の 16 色を除いて、RGB へのマッピングが明確に定義されているので、通常はカスタマイズできません。このモードは、ほとんどのターミナルエミュレータでサポートされています。(一部のエミュレータは 88 色のみの類似した互換性のないエンコーディングが使用されています。実際に使用することはほとんどありませんが、terminfoデータベースには表示されます)。<br />
<br />
あまり一般的ではありませんが、トゥルーカラーモードでは、RGB で 1670 万 (2<sup>24</sup>)色(各値は 0 から 255 まで)を使用することができます。<br />
<br />
=== Termcap と terminfo ===<br />
<br />
Termcap と terminfo は {{Pkg|ncurses}} の一部で、端末(通常は、{{ic|TERM}} 環境変数で指定)が理解できるエスケープに関する情報を提供するデータベースです。{{man|1|tput}} と {{man|1|infocmp}} コマンドは、コマンドラインからアクセスするために使用することができす。<br />
<br />
== アプリケーション ==<br />
<br />
=== diff ===<br />
<br />
diffutils にはバージョン 3.4 から {{ic|--color}} オプションが存在します ([https://lists.gnu.org/archive/html/info-gnu/2016-08/msg00004.html GNU メーリングリスト]):<br />
<br />
$ alias diff='diff --color=auto'<br />
<br />
=== grep ===<br />
<br />
{{ic|1=--color=auto}} オプションでカラーハイライトが有効になります。カラーコードは標準出力でのみ使われ、パイプやリダイレクトには出力されません。<br />
<br />
''grep'' のカラー出力は [[Wikipedia:regexp|regexp]] でも利用できます。<br />
<br />
[[エイリアス]]を作成することでオプションをずっと有効にできます:<br />
<br />
alias grep='grep --color=auto'<br />
<br />
{{ic|GREP_COLORS}} 変数を使うことで色を定義したり、ハイライトの様々な部分を設定できます。<br />
<br />
詳しくは {{man|1|grep}} を見てください。<br />
<br />
{{ic|GREP_COLOR}} 環境変数を使うことでデフォルトのハイライト色を定義できます (デフォルトは赤です)。色を変更するときは、色の [http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html ANSI エスケープシーケンス] を確認して以下のコマンドを使ってください:<br />
<br />
export GREP_COLOR="1;32"<br />
<br />
{{ic|-n}} オプションを使うことでファイルの行番号も出力されます。<br />
<br />
=== ip ===<br />
<br />
{{man|8|ip}} コマンドの {{ic|-color}} オプションが使えます。{{ic|auto}} 引数を指定すると、出力先が標準出力のときのみカラー出力が行なわれます。<br />
<br />
alias ip='ip -color=auto'<br />
<br />
=== less ===<br />
<br />
==== 環境変数 ====<br />
<br />
[[#man]] の場合と同様に、太字にするなどの書式効果に対して、lessに色を出すように指示することができます。<br />
<br />
以下の行をシェルの設定ファイルに追加してください:<br />
<br />
export LESS='-R --use-color -Dd+r$Du+b'<br />
<br />
この設定は太字に赤に、下線を青にします。<br />
<br />
{{ic|--use-color}} オプションの詳細については、{{man|1|less}} の man ページまたは [https://felipec.wordpress.com/2021/06/05/adventures-with-man-color/] を確認してください。<br />
<br />
<br />
==== 標準入力からの読み込み ====<br />
<br />
{{Note|以下は {{ic|1=export LESS=R}} に基づいているので、{{ic|~/.bashrc}} や {{ic|~/.zshrc}} に[[#環境変数|環境変数]]を追加することを推奨します。}}<br />
<br />
コマンドを実行してページ表示するために[[Wikipedia:Standard output|標準出力]] (''stdout'') を ''less'' にパイプする場合 (例: {{ic|<nowiki>pacman -Qe | less</nowiki>}})、出力がカラー化されないことに気づくかもしれません。''stdout'' がインタラクティブターミナルであるかどうかを判別して、その場合はカラーのテキストを出力して、そうでない場合はカラーでないテキストを出力するようになっているのが原因です。''stdout'' をファイルにリダイレクトしたいようなときはこれで構わないでしょうが (例: {{ic|<nowiki>pacman -Qe > pkglst-backup.txt</nowiki>}})、{{ic|less}} で出力を表示したいような時はあまり望ましくありません。<br />
<br />
インタラクティブ tty の検出を無効化するオプションがプログラムに存在することがあります:<br />
<br />
# dmesg --color=always | less<br />
<br />
プログラムに無効化オプションが存在しない場合、以下のユーティリティを使うことで ''stdout'' がインタラクティブターミナルであるかのように信じこませることができます:<br />
<br />
<br />
* {{App|ColorThis|pty (グループ) 内で実行し、stdinの転送をサポートすることで、プログラムの色付き出力を強制します。|https://github.com/Sasasu/ColorThis|{{AUR|colorthis-git}}}}<br />
* {{App|stdoutisatty|{{ic|isatty}} 関数のコールをキャッチする小さなプログラム。|https://github.com/lilydjwg/stdoutisatty.|{{AUR|stdoutisatty-git}}}}<br />
:例: {{ic|stdoutisatty ''program'' <nowiki>| less</nowiki>}}<br />
* {{App|unbuffer|expectに付属しているtclshスクリプトで、ptyの中で目的のプログラムを呼び出すことができます。|http://expect.sourceforge.net/example/unbuffer.man.html|{{Pkg|expect}}}}<br />
:例: {{ic|unbuffer ''program'' <nowiki>| less</nowiki>}}<br />
<br />
もしくは、[[zsh]] の [http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzpty-Module zpty] モジュールを使って下さい [http://lilydjwg.is-programmer.com/2011/6/29/using-zpty-module-of-zsh.27677.html]:<br />
<br />
{{hc|~/.zshrc|<br />
<nowiki>zmodload zsh/zpty<br />
<br />
pty() {<br />
zpty pty-${UID} ${1+$@}<br />
if [[ ! -t 1 ]];then<br />
setopt local_traps<br />
trap '' INT<br />
fi<br />
zpty -r pty-${UID}<br />
zpty -d pty-${UID}<br />
}<br />
<br />
ptyless() {<br />
pty $@ | less<br />
}</nowiki>}}<br />
<br />
使用方法:<br />
<br />
$ ptyless ''program''<br />
<br />
他のページャにパイプするには (例: less):<br />
<br />
$ pty ''program'' | less<br />
<br />
=== ls ===<br />
<br />
{{ic|1=--color=auto}} オプションでカラーハイライトが有効になります。カラーコードは標準出力でのみ使われ、パイプやリダイレクトでは使われません。<br />
<br />
[[エイリアス]]を使うことでオプションを永続的に有効化できます:<br />
<br />
alias ls='ls --color=auto'<br />
<br />
{{ic|LS_COLORS}} 変数を使って色を定義します。様々なハイライトを設定できます。設定するときは {{man|1|dircolors}} コマンドを使ってください。<br />
<br />
{{Note|{{ic|--color}} オプションを使用すると大量のファイルが存在するディレクトリで ''ls'' を実行したときにパフォーマンスに深刻な影響を与えることがあります。デフォルト設定では ''ls'' は表示する全てのファイルに {{man|1|stat}} する必要があります。しかしながら、他のカラーオプション (executable, orphan, sticky, other-writable, capability) を使用しないでほとんどのファイルタイプのカラー化をしたい場合、''dircolors'' を使って {{ic|LS_COLORS}} 環境変数を以下のように設定してください:<br />
<br />
<nowiki>eval $(dircolors -p | perl -pe 's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)</nowiki><br />
}}<br />
<br />
詳しくは {{man|1|ls}} を見てください。<br />
<br />
=== man ===<br />
<br />
{{man|1|grotty}}には本当のカラー機能がありますが、manページでの利用は強く推奨されていません。ここでは、2つの主なページャー、{{Ic|less}}と{{Ic|most}}をハックして、色のついた{{Ic|man}}を作ります。太字、強調、下線のシーケンスを、色を含むスパイスの効いたものに置き換えます。<br />
<br />
==== less を使う ====<br />
詳しくは [[#less]] を見てください。<br />
<br />
export MANPAGER="less -R --use-color -Dd+r -Du+b"<br />
<br />
[[Fish]] の場合、以下のようにします:<br />
<br />
{{hc|~/.config/fish/config.fish|2=<br />
set -xU MANPAGER 'less -R --use-color -Dd+r -Du+b'<br />
}}<br />
<br />
設定を source するかシェルを再起動すると変更が適用されます。<br />
<br />
==== most を使う ====<br />
<br />
'most' の基本的な機能は {{Ic|less}} や {{Ic|more}} と似ていますが、備えている機能の数はやや少なくなっています。most でカラー出力を使うように設定するのは less よりも簡単ですが、less のように most を使うには別の設定が必要になります。<br />
<br />
{{Pkg|most}} パッケージをインストールしてください。<br />
<br />
{{ic|/etc/man_db.conf}} を編集して、ページャの定義をアンコメントして次のように変更:<br />
<br />
DEFINE pager most -s<br />
<br />
新しい設定は以下を入力することでテストできます:<br />
<br />
$ man whatever_man_page<br />
<br />
カラーの値を変更するには {{ic|~/.mostrc}} または {{ic|/etc/most.conf}} (システム全体に変更が適用されます) を編集する必要があります (ファイルが存在しない場合は作成してください)。{{ic|~/.mostrc}} の例:<br />
<br />
% Color settings<br />
color normal lightgray black<br />
color status yellow blue<br />
color underline yellow black<br />
color overstrike brightblue black<br />
<br />
{{Ic|less}} と同じようなキーバインドを使う例 (行ジャンプを 'J' に設定):<br />
<br />
% less-like keybindings<br />
unsetkey "^K"<br />
unsetkey "g"<br />
unsetkey "G"<br />
unsetkey ":"<br />
<br />
setkey next_file ":n"<br />
setkey find_file ":e"<br />
setkey next_file ":p"<br />
setkey toggle_options ":o"<br />
setkey toggle_case ":c"<br />
setkey delete_file ":d"<br />
setkey exit ":q"<br />
<br />
setkey bob "g"<br />
setkey eob "G"<br />
setkey down "e"<br />
setkey down "E"<br />
setkey down "j"<br />
setkey down "^N"<br />
setkey up "y"<br />
setkey up "^Y"<br />
setkey up "k"<br />
setkey up "^P"<br />
setkey up "^K"<br />
setkey page_down "f"<br />
setkey page_down "^F"<br />
setkey page_up "b"<br />
setkey page_up "^B"<br />
setkey other_window "z"<br />
setkey other_window "w"<br />
setkey search_backward "?"<br />
setkey bob "p"<br />
setkey goto_mark "'"<br />
setkey find_file "E"<br />
setkey edit "v"<br />
<br />
==== X resources を使う ====<br />
<br />
{{Pkg|xterm}}/{{Ic|uxterm}} や {{Pkg|rxvt-unicode}} でマニュアルページを表示するときにカラーを追加したいときは {{ic|~/.Xresources}} を編集するのが簡単です。<br />
<br />
===== xterm =====<br />
<br />
修飾をカラーで''置き換える'':<br />
<br />
*VT100.colorBDMode: true<br />
*VT100.colorBD: red<br />
*VT100.colorULMode: true<br />
*VT100.colorUL: cyan<br />
<br />
カラーと修飾 (太字や下線) を''同時に''使いたい場合:<br />
<br />
*VT100.veryBoldColors: 6<br />
<br />
{{ic|veryBoldColors}} の説明は {{man|1|xterm}} を見てください。<br />
<br />
===== rxvt-unicode =====<br />
<br />
URxvt.colorIT: #87af5f<br />
URxvt.colorBD: #d7d7d7<br />
URxvt.colorUL: #87afd7<br />
<br />
次を実行:<br />
<br />
$ xrdb -load ~/.Xresources<br />
<br />
{{Ic|xterm/uxterm}} や {{Ic|rxvt-unicode}} を新しく起動すると man ページがカラフルになっているはずです。<br />
<br />
上記の組み合わせは {{Ic|xterm/uxterm}} の'''太字'''や<u>下線</u>がある単語や、{{Ic|rxvt-unicode}} の'''太字'''や<u>下線</u>、''斜体''のテキストに色を追加します。組み合わせを変えることで色々試せます。<br />
<br />
=== pacman ===<br />
<br />
[[Pacman]] にはカラーオプションがあります。{{ic|/etc/pacman.conf}} の {{ic|Color}} 行をアンコメントしてください。<br />
<br />
== ラッパー ==<br />
<br />
=== ユニバーサルラッパー ===<br />
<br />
(以下の殆どは古いですが、まだ機能します)<br />
<br />
以下のラッパーには複数のプリセットが含まれており、変更したり新しいプリセットを作成することができます。<br />
<br />
{{Warning|ラッパーはコマンドの出力をエスケープシーケンスに置き換えます。標準的なシェルユーティリティの出力を使用するいくつかのシェルスクリプトやプログラムは正しく動作しないかもしれません。}}<br />
<br />
* {{App|rainbow|パターンを使ってコマンドの出力や標準入力をカラー化します。<br>プリセット: df, diff, env, host, ifconfig, java-stack-trace, jboss, jonas, md5sum, mvn2, mvn3, ping, tomcat, top, traceroute。|https://github.com/nicoulaj/rainbow|{{AUR|rainbow}}}}<br />
* {{App|grc|ログファイルやコマンドの出力を美しくするカラーライザー。<br>プリセット: cat, cvs, df, digg, gcc, g++, ls, ifconfig, make, mount, mtr, netstat, ping, ps, tail, traceroute, wdiff, blkid, du, dnf, docker, docker-machine, env, id, ip, iostat, last, lsattr, lsblk, lspci, lsmod, lsof, getfacl, getsebool, ulimit, uptime, nmap, fdisk, findmnt, free, semanage, sar, ss, sysctl, systemctl, stat, showmount, tune2fs, tcpdump。|https://github.com/pengwynn/grc|{{Pkg|grc}}}}<br />
* {{App|colorlogs|パターンを使ってコマンド出力や標準入力をカラー化。<br>プリセット: logs, git status, ant, maven。|https://github.com/memorius/colorlogs}}<br />
* {{App|cope|ターミナルプログラムのカラフルラッパー。<br>プリセット: acpi, arp, cc, df, dprofpp, fdisk, free, g++, gcc, id, ifconfig, ls, lspci, lsusb, make, md5sum, mpc, netstat, nm, nmap, nocope, ping, pmap, ps, readelf, route, screen, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shasum, socklist, stat, strace, tcpdump, tracepath, traceroute, w, wget, who, xrandr。|https://github.com/yogan/cope|{{AUR|cope-git}}}}<br />
* {{App|cw|一般的な UNIX ベースコマンドのお手軽リアルタイム ANSI カラーラッパー。<br>プリセット: arp, arping, auth.log@, blockdev, cal, cksum, clock, configure, cpuinfo@, crontab@, cw-pipe, cw-test.cgi, date, df, diff, dig, dmesg, du, env, figlet, file, find, finger, free, fstab@, fuser, g++, gcc, group@, groups, hdparm, hexdump, host, hosts@, id, ifconfig, inittab@, iptables, last, lastlog, lsattr, lsmod, lsof, ltrace-color, make, md5sum, meminfo@, messages@, mount, mpg123, netstat, nfsstat, nmap, nslookup, objdump, passwd@, ping, pmap, pmap_dump, praliases, profile@, protocols@, ps, pstree, quota, quotastats, resolv.conf@, route, routel, sdiff, services@, showmount, smbstatus, stat, strace-color, sysctl, syslog, tar, tcpdump, tracepath, traceroute, umount, uname, uptime, users, vmstat, w, wc, whereis, who, xferlog。|http://cwrapper.sourceforge.net/|{{AUR|cw}}}}<br />
* {{App|ccze|C で書かれた高速なログカラー化ツール。colorize を置き換えます。|https://github.com/cornet/ccze/|{{Pkg|ccze}}}}<br />
<br />
=== 出力をカラー化するためのライブラリ ===<br />
<br />
* {{App|libtextstyle|A C library for styling text output to terminals|https://www.gnu.org/software/gettext/libtextstyle/manual/index.html|{{Pkg|gettext}}}}<br />
* {{App|ruby-rainbow|ruby の String クラスを拡張して ANSI ターミナルにおけるテキストのカラー化をサポート。|https://rubygems.org/gems/rainbow/|{{Pkg|ruby-rainbow}}}}<br />
* {{App|python-blessings|ターミナルのカラー化・スタイル・ポジションの実用的なラッパー。|https://github.com/erikrose/blessings|{{Pkg|python-blessings}}, {{Pkg|python2-blessings}}{{Broken package link|{{aur-mirror|python2-blessings}}}}}}<br />
* {{App|lolcat|Ruby program that makes the output colorful like a rainbow|https://github.com/busyloop/lolcat/|{{Pkg|lolcat}}}}<br />
<br />
=== 特定のアプリケーションのラッパー ===<br />
<br />
==== コンパイラ ====<br />
<br />
* {{App|colorgcc|gcc の出力形式に一致する警告・エラーメッセジなどのコンパイラの出力をカラーにする Perl ラッパー。|https://schlueters.de/colorgcc.html|{{Pkg|colorgcc}}}}<br />
<br />
==== diff ====<br />
<br />
diff には[[#diff|カラー出力]]機能が備わっていますが、以下のラッパーを使うこともできます:<br />
<br />
* {{App|colordiff|Perl script for ''diff'' highlighting.|http://www.colordiff.org/|{{Pkg|colordiff}}}}<br />
* {{App|cwdiff|''(w)diff'' wrapper with directories support and highlighting.|https://github.com/junghans/cwdiff|{{AUR|cwdiff}}, {{AUR|cwdiff-git}}}}<br />
* {{App|git-delta|A syntax-highlighting pager for git and diff output.|https://github.com/dandavison/delta|{{Pkg|git-delta}}}}<br />
<br />
==== cat ====<br />
* {{App|bat|構文の強調表示と git 統合を備えた Cat クローン|https://github.com/sharkdp/bat|{{Pkg|bat}}}}<br />
<br />
==== less ====<br />
<br />
===== source-highlight =====<br />
''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください:<br />
{{hc|~/.bashrc|<nowiki><br />
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"<br />
export LESS='-R '<br />
</nowiki>}}<br />
<br />
===== lesspipe =====<br />
<br />
コマンドラインインターフェイスを頻繁に使う場合 {{Pkg|lesspipe}} をインストールすると良いかもしれません。<br />
<br />
ページャを使ってアーカイブの中の圧縮されたファイルを表示することができるようになります:<br />
<br />
{{hc|$ less ''compressed_file''.tar.gz|2=<br />
==> use tar_file:contained_file to view a file in the archive<br />
-rw------- ''username''/''group'' 695 2008-01-04 19:24 ''compressed_file''/''content1''<br />
-rw------- ''username''/''group'' 43 2007-11-07 11:17 ''compressed_file''/''content2''<br />
''compressed_file''.tar.gz (END)<br />
}}<br />
<br />
''lesspipe'' はファイルタイプに関連付けられたコマンドの代替として (例えば {{Pkg|python-html2text}} で HTML を閲覧する)、アーカイブ以外のファイルも ''less'' のインターフェイスに接続します。<br />
<br />
''lesspipe'' を有効にするにはログインしなおすか、{{ic|/etc/profile.d/lesspipe.sh}} を実行してください。<br />
<br />
==== Make ====<br />
<br />
* {{App|colormake|出力を読みやすくするシンプルな make のラッパー。|http://bre.klaki.net/programs/colormake/|{{AUR|colormake}}, {{AUR|colormake-git}}}}<br />
<br />
==== Ping ====<br />
<br />
* {{App|prettyping|ping の監視に素晴らしい機能を追加するラッパー。標準の ping ツールの出力を美麗・コンパクト・読みやすく改造。|http://denilson.sa.nom.br/prettyping/|{{Pkg|prettyping}}}}<br />
<br />
== シェル ==<br />
<br />
=== bash ===<br />
<br />
[[Bash/プロンプトのカスタマイズ#カラー]]を見てください。<br />
<br />
=== Fish ===<br />
<br />
[[Fish#ウェブインターフェイス]]を見てください。<br />
<br />
=== xonsh ===<br />
<br />
[https://xon.sh/tutorial.html#customizing-the-prompt プロンプトのカスタマイズ]を見てください。<br />
<br />
=== zsh ===<br />
<br />
[[Zsh#プロンプトのカスタマイズ]]を見てください。<br />
<br />
== ターミナルエミュレータ ==<br />
<br />
=== 仮想端末 ===<br />
<br />
フレームバッファで実行される [[w:Virtual console|Linux 仮想端末]]の色は変更することができます。エスケープコードe {{ic|\\e]PXRRGGBB}} を書き込むことで変更できます。{{ic|X}} は 0-F からなる色の16進数インデックス、{{ic|RRGGBB}} は伝統的な16進数の RGB コードに置き換えてください。<br />
<br />
例えば、{{ic|~/.Xresources}} に定義した既存の色定義を再利用するには、シェルの初期化ファイル ({{ic|~/.bashrc}} など) に以下を追加してください:<br />
<br />
if [ "$TERM" = "linux" ]; then<br />
_SEDCMD='s/.*\*color\([0-9]\{1,\}\).*#\([0-9a-fA-F]\{6\}\).*/\1 \2/p'<br />
for i in $(sed -n "$_SEDCMD" $HOME/.Xresources | awk '$1 < 16 {printf "\\e]P%X%s", $1, $2}'); do<br />
echo -en "$i"<br />
done<br />
clear<br />
fi<br />
<br />
==== ログイン画面 ====<br />
<br />
以下は {{ic|/etc/issue}} の仮想端末のログイン画面のカラー出力例です。root で {{ic|mv /etc/issue /etc/issue.bak}} を実行して元のファイルのバックアップを作成してから、新しい {{ic|/etc/issue}} を作成してください:<br />
<br />
\e[H\e[2J<br />
\e[1;30m| \e[34m\\s \\r<br />
\e[36;1m/\\\\ \e[37m|| \e[36m| | \e[30m|<br />
\e[36m/ \\\\ \e[37m|| \e[36m| _ \e[30m| \e[32m\\t<br />
\e[1;36m/ \e[0;36m.. \e[1m\\\\ \e[37m//==\\\\\\\\ ||/= /==\\\\ ||/=\\\\ \e[36m| | |/ \\\\ | | \\\\ / \e[30m| \e[32m\\d<br />
\e[0;36m/ . . \\\\ \e[37m|| || || | || || \e[36m| | | | | | X \e[1;30m|<br />
\e[0;36m/ . . \\\\ \e[37m\\\\\\\\==/| || \\\\==/ || || \e[36m| | | | \\\\_/| / \\\\ \e[1;30m| \e[31m\\U<br />
\e[0;36m/ .. .. \\\\ \e[0;37mA simple, lightweight linux distribution. \e[1;30m|<br />
\e[0;36m/_\x27 `_\\\\ \e[1;30m| \e[35m\\l \e[0mon \e[1;33m\\n<br />
\e[0m<br />
<br />
ファイルを保存したら {{ic|chmod +x /etc/issue}} で実行可能属性を付与してください。<br />
<br />
参照:<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=386429#p386429<br />
* http://www.linuxfromscratch.org/blfs/view/svn/postlfs/logon.html<br />
<br />
=== X window system ===<br />
<br />
ほとんどの [[Xorg]] ターミナル ([[xterm]] や [[urxvt]] を含む) は16色の基本色をサポートしています。0-7 の色は 'normal' カラーです。8-15 の色は 0-7 の色の 'bright' カラーです。ハイライトに使用します。[[X resources]] を使ったりターミナルの設定を使うことで色は変更することができます。例:<br />
<br />
{{hc|1=~/.Xresources|2=<br />
! Black + DarkGrey<br />
*color0: #000000<br />
*color8: #555753<br />
! DarkRed + Red<br />
*color1: #ff6565<br />
*color9: #ff8d8d<br />
! DarkGreen + Green<br />
*color2: #93d44f<br />
*color10: #c8e7a8<br />
! DarkYellow + Yellow<br />
*color3: #eab93d<br />
*color11: #ffc123<br />
! DarkBlue + Blue<br />
*color4: #204a87<br />
*color12: #3465a4<br />
! DarkMagenta + Magenta<br />
*color5: #ce5c00<br />
*color13: #f57900<br />
!DarkCyan + Cyan (both not tango)<br />
*color6: #89b6e2<br />
*color14: #46a4ff<br />
! LightGrey + White<br />
*color7: #cccccc<br />
*color15: #ffffff<br />
}}<br />
<br />
{{Warning|{{ic|foreground}} や {{ic|background}} などのカラーリソースは他のアプリケーション (例: [https://www.gnu.org/software/emacs/manual/html_node/emacs/Table-of-Resources.html emacs]) によって読み込まれる可能性があります。クラス名を指定することで読み込まれないようにすることができます。例: {{ic|XTerm.foreground}}。}}<br />
<br />
参照:<br />
<br />
* 自動的に太字・下線テキストをカラー化する方法は [[#X resources を使う]]を見てください。<br />
* [https://web.archive.org/web/20090130061234/http://phraktured.net/terminal-colors/ Color Themes] - Extensive list of terminal color themes by Phraktured.<br />
* [http://xcolors.net/ Xcolors.net] List of user-contributed terminal color themes.<br />
* [http://beta.andrewrcraig.us/index.php?page=xcolors Xcolors by dkeg]<br />
* [https://github.com/chriskempson/base16 base16 color schemes]<br />
<br />
=== 256色全てを表示 ===<br />
<br />
画面上に256色を表示:<br />
<br />
$ (x=`tput op` y=`printf %76s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}-3:3} `tput setaf $i;tput setab $i`${y// /=}$x;done)<br />
<br />
=== tput のエスケープコードを表示 ===<br />
<br />
{{ic|tput op}} は確認したい色に置き換えてください。{{ic|op}} はデフォルトの前景色と背景色です。<br />
<br />
{{hc|<nowiki>$ ( strace -s5000 -e write tput op 2>&2 2>&1 ) | tee -a /dev/stderr | grep -o '"[^"]*"'</nowiki>|<br />
033[\033[1;34m"\33[39;49m"\033[00m<br />
}}<br />
<br />
=== サポートされている色を確認 ===<br />
<br />
以下のコマンドで使用しているターミナルがサポートしている色の数を確認できます。色の数は次のどれかになります: 8, 15, 16, 52, 64, 88, 256。<br />
<br />
{{hc|<nowiki>$ for T in `find /usr/share/terminfo -type f -printf '%f '`;do echo "$T `tput -T $T colors`";done|sort -nk2</nowiki>|<br />
Eterm-88color 88<br />
rxvt-88color 88<br />
xterm+88color 88<br />
xterm-88color 88<br />
Eterm-256color 256<br />
gnome-256color 256<br />
konsole-256color 256<br />
putty-256color 256<br />
rxvt-256color 256<br />
screen-256color 256<br />
screen-256color-bce 256<br />
screen-256color-bce-s 256<br />
screen-256color-s 256<br />
xterm+256color 256<br />
xterm-256color 256<br />
}}<br />
<br />
=== ターミナルの機能を確認 ===<br />
<br />
以下のコマンドを使うことでターミナルによってサポートされている機能を確認できます:<br />
<br />
{{hc|<nowiki>$ infocmp -1 | sed -nu 's/^[ \000\t]*//;s/[ \000\t]*$//;/[^ \t\000]\{1,\}/!d;/acsc/d;s/=.*,//p'|column -c80</nowiki>|<br />
bel cuu ich kb2 kf15 kf3 kf44 kf59 mc0 rmso smul<br />
blink cuu1 il kbs kf16 kf30 kf45 kf6 mc4 rmul tbc<br />
bold cvvis il1 kcbt kf17 kf31 kf46 kf60 mc5 rs1 u6<br />
cbt dch ind kcub1 kf18 kf32 kf47 kf61 meml rs2 u7<br />
civis dch1 indn kcud1 kf19 kf33 kf48 kf62 memu sc u8<br />
clear dl initc kcuf1 kf2 kf34 kf49 kf63 op setab u9<br />
cnorm dl1 invis kcuu1 kf20 kf35 kf5 kf7 rc setaf vpa<br />
}}<br />
<br />
=== カラースキームスクリプト ===<br />
<br />
現在のターミナルスキームのチャートを表示するスクリプトが [https://paste.xinu.at/m-dAiJ/] に存在します。<br />
<br />
=== トゥルーカラーサポート ===<br />
<br />
xterm、konsole、st など、1600 万色 (RGB、それぞれ 8 ビットの解像度) のフルレンジをサポートしている端末もあります。対応する TERM 値 xterm-direct、konsole-direct、st-direct などは、ncurses バージョン 6.1 [https://lists.gnu.org/archive/html/bug-ncurses/2018-01/msg00045.html] からサポートされています。トゥルーカラーをサポートしているターミナルエミュレータやアプリケーションの詳細については、 [https://gist.github.com/XVilka/8346728] を参照してください。<br />
<br />
なお、Linux カーネルはトゥルーカラー用の SGR エスケープシーケンスをサポートしていますが、ドライバが 24 ビットの色仕様をカーネル内の 256 色のカラーマップにマッピングするため、使用しても無意味です (関数 {{ic|rgb_foreground}}、{{ic|rgb_background}}) を参照)。このため、{{ic|linux-direct}} の terminfo エントリはありません。<br />
<br />
== 参照 ==<br />
<br />
* [https://gkbrk.com/2016/07/lolcat-clone-in-x64-assembly/ lolcat clone in x64 assembly]<br />
* [http://unix.stackexchange.com/a/147 Setting colors for less] と [http://unix.stackexchange.com/a/6357 solving related problems] (StackExchange のスレッド)</div>
Buzztaiki
https://wiki.archlinux.jp/index.php?title=%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%AB%E3%83%A9%E3%83%BC%E5%87%BA%E5%8A%9B&diff=24979
コンソールのカラー出力
2022-04-08T01:04:33Z
<p>Buzztaiki: man と less の内容を最新の英語版に同期</p>
<hr />
<div>[[Category:Linux コンソール]]<br />
[[Category:視覚効果]]<br />
[[en:Color output in console]]<br />
[[zh-hans:Color output in console]]<br />
{{Related articles start}}<br />
{{Related|Emacs#カスタムカラーとテーマ}}<br />
{{Related|nano#シンタックスハイライト}}<br />
{{Related articles end}}<br />
このページでは CLI 出力のカラー化をまとめています。<br />
<br />
== Background ==<br />
<br />
=== エスケープシーケンス ===<br />
<br />
[[Wikipedia:ANSI escape sequence|ANSI エスケープシーケンス]] はターミナル出力に追加情報を配置する方法を定義しており、色はこの「追加情報」の一部です。何年にもわたって端末の色の範囲は、最初の8色から24ビットのトゥルーカラーまで、年々大幅に拡大されてきました。<br />
<br />
基本的なカラーエンコーディングは、通常の明るさの 8 色と、その明るいバージョンの 8 色を提供します。Linux コンソール自体を含む最新のターミナルエミュレータを使用すると、色が変換される正確な RGB 値を指定できます。このモードは、ほとんどのターミナルエミュレータでサポートされています。<br />
<br />
256 色ディスプレイの出現により、256 色のエスケープが可能になりました。256 色とは、基本 16 色、RGB 216色(6 x 6 x 6 の立方体に配置)、および 24 レベルのグレースケールです。最初の 16 色を除いて、RGB へのマッピングが明確に定義されているので、通常はカスタマイズできません。このモードは、ほとんどのターミナルエミュレータでサポートされています。(一部のエミュレータは 88 色のみの類似した互換性のないエンコーディングが使用されています。実際に使用することはほとんどありませんが、terminfoデータベースには表示されます)。<br />
<br />
あまり一般的ではありませんが、トゥルーカラーモードでは、RGB で 1670 万 (2<sup>24</sup>)色(各値は 0 から 255 まで)を使用することができます。<br />
<br />
=== Termcap と terminfo ===<br />
<br />
Termcap と terminfo は {{Pkg|ncurses}} の一部で、端末(通常は、{{ic|TERM}} 環境変数で指定)が理解できるエスケープに関する情報を提供するデータベースです。{{man|1|tput}} と {{man|1|infocmp}} コマンドは、コマンドラインからアクセスするために使用することができす。<br />
<br />
== アプリケーション ==<br />
<br />
=== diff ===<br />
<br />
diffutils にはバージョン 3.4 から {{ic|--color}} オプションが存在します ([https://lists.gnu.org/archive/html/info-gnu/2016-08/msg00004.html GNU メーリングリスト]):<br />
<br />
$ alias diff='diff --color=auto'<br />
<br />
=== grep ===<br />
<br />
{{ic|1=--color=auto}} オプションでカラーハイライトが有効になります。カラーコードは標準出力でのみ使われ、パイプやリダイレクトには出力されません。<br />
<br />
''grep'' のカラー出力は [[Wikipedia:regexp|regexp]] でも利用できます。<br />
<br />
[[エイリアス]]を作成することでオプションをずっと有効にできます:<br />
<br />
alias grep='grep --color=auto'<br />
<br />
{{ic|GREP_COLORS}} 変数を使うことで色を定義したり、ハイライトの様々な部分を設定できます。<br />
<br />
詳しくは {{man|1|grep}} を見てください。<br />
<br />
{{ic|GREP_COLOR}} 環境変数を使うことでデフォルトのハイライト色を定義できます (デフォルトは赤です)。色を変更するときは、色の [http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html ANSI エスケープシーケンス] を確認して以下のコマンドを使ってください:<br />
<br />
export GREP_COLOR="1;32"<br />
<br />
{{ic|-n}} オプションを使うことでファイルの行番号も出力されます。<br />
<br />
=== ip ===<br />
<br />
{{man|8|ip}} コマンドの {{ic|-color}} オプションが使えます。{{ic|auto}} 引数を指定すると、出力先が標準出力のときのみカラー出力が行なわれます。<br />
<br />
alias ip='ip -color=auto'<br />
<br />
=== less ===<br />
<br />
==== 環境変数 ====<br />
<br />
[[#man]] の場合と同様に、太字にするなどの書式効果に対して、lessに色を出すように指示することができます。<br />
<br />
以下の行をシェルの設定ファイルに追加してください:<br />
<br />
export LESS='-R --use-color -Dd+r$Du+b'<br />
<br />
この設定は太字に赤に、下線を青にします。<br />
<br />
{{ic|--use-color}} オプションの詳細については、{{man|1|less}} の man ページまたは [https://felipec.wordpress.com/2021/06/05/adventures-with-man-color/] を確認してください。<br />
<br />
<br />
==== 標準入力からの読み込み ====<br />
<br />
{{Note|以下は {{ic|1=export LESS=R}} に基づいているので、{{ic|~/.bashrc}} や {{ic|~/.zshrc}} に[[#環境変数|環境変数]]を追加することを推奨します。}}<br />
<br />
コマンドを実行してページ表示するために[[Wikipedia:Standard output|標準出力]] (''stdout'') を ''less'' にパイプする場合 (例: {{ic|<nowiki>pacman -Qe | less</nowiki>}})、出力がカラー化されないことに気づくかもしれません。''stdout'' がインタラクティブターミナルであるかどうかを判別して、その場合はカラーのテキストを出力して、そうでない場合はカラーでないテキストを出力するようになっているのが原因です。''stdout'' をファイルにリダイレクトしたいようなときはこれで構わないでしょうが (例: {{ic|<nowiki>pacman -Qe > pkglst-backup.txt</nowiki>}})、{{ic|less}} で出力を表示したいような時はあまり望ましくありません。<br />
<br />
インタラクティブ tty の検出を無効化するオプションがプログラムに存在することがあります:<br />
<br />
# dmesg --color=always | less<br />
<br />
プログラムに無効化オプションが存在しない場合、以下のユーティリティを使うことで ''stdout'' がインタラクティブターミナルであるかのように信じこませることができます:<br />
<br />
<br />
Alternatively, using [http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzpty-Module zpty] module from [[zsh]]: [http://lilydjwg.is-programmer.com/2011/6/29/using-zpty-module-of-zsh.27677.html]<br />
<br />
* {{App|ColorThis|pty (グループ) 内で実行し、stdinの転送をサポートすることで、プログラムの色付き出力を強制します。|https://github.com/Sasasu/ColorThis|{{AUR|colorthis-git}}}}<br />
* {{App|stdoutisatty|{{ic|isatty}} 関数のコールをキャッチする小さなプログラム。|https://github.com/lilydjwg/stdoutisatty.|{{AUR|stdoutisatty-git}}}}<br />
:例: {{ic|stdoutisatty ''program'' <nowiki>| less</nowiki>}}<br />
* {{App|unbuffer|expectに付属しているtclshスクリプトで、ptyの中で目的のプログラムを呼び出すことができます。|http://expect.sourceforge.net/example/unbuffer.man.html|{{Pkg|expect}}}}<br />
:例: {{ic|unbuffer ''program'' <nowiki>| less</nowiki>}}<br />
<br />
もしくは、[[zsh]] の [http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzpty-Module zpty] モジュールを使って下さい [http://lilydjwg.is-programmer.com/2011/6/29/using-zpty-module-of-zsh.27677.html]:<br />
<br />
{{hc|~/.zshrc|<br />
<nowiki>zmodload zsh/zpty<br />
<br />
pty() {<br />
zpty pty-${UID} ${1+$@}<br />
if [[ ! -t 1 ]];then<br />
setopt local_traps<br />
trap '' INT<br />
fi<br />
zpty -r pty-${UID}<br />
zpty -d pty-${UID}<br />
}<br />
<br />
ptyless() {<br />
pty $@ | less<br />
}</nowiki>}}<br />
<br />
使用方法:<br />
<br />
$ ptyless ''program''<br />
<br />
他のページャにパイプするには (例: less):<br />
<br />
$ pty ''program'' | less<br />
<br />
=== ls ===<br />
<br />
{{ic|1=--color=auto}} オプションでカラーハイライトが有効になります。カラーコードは標準出力でのみ使われ、パイプやリダイレクトでは使われません。<br />
<br />
[[エイリアス]]を使うことでオプションを永続的に有効化できます:<br />
<br />
alias ls='ls --color=auto'<br />
<br />
{{ic|LS_COLORS}} 変数を使って色を定義します。様々なハイライトを設定できます。設定するときは {{man|1|dircolors}} コマンドを使ってください。<br />
<br />
{{Note|{{ic|--color}} オプションを使用すると大量のファイルが存在するディレクトリで ''ls'' を実行したときにパフォーマンスに深刻な影響を与えることがあります。デフォルト設定では ''ls'' は表示する全てのファイルに {{man|1|stat}} する必要があります。しかしながら、他のカラーオプション (executable, orphan, sticky, other-writable, capability) を使用しないでほとんどのファイルタイプのカラー化をしたい場合、''dircolors'' を使って {{ic|LS_COLORS}} 環境変数を以下のように設定してください:<br />
<br />
<nowiki>eval $(dircolors -p | perl -pe 's/^((CAP|S[ET]|O[TR]|M|E)\w+).*/$1 00/' | dircolors -)</nowiki><br />
}}<br />
<br />
詳しくは {{man|1|ls}} を見てください。<br />
<br />
=== man ===<br />
<br />
{{man|1|grotty}}には本当のカラー機能がありますが、manページでの利用は強く推奨されていません。ここでは、2つの主なページャー、{{Ic|less}}と{{Ic|most}}をハックして、色のついた{{Ic|man}}を作ります。太字、強調、下線のシーケンスを、色を含むスパイスの効いたものに置き換えます。<br />
<br />
==== less を使う ====<br />
詳しくは [[#less]] を見てください。<br />
<br />
export MANPAGER="less -R --use-color -Dd+r -Du+b"<br />
<br />
[[Fish]] の場合、以下のようにします:<br />
<br />
{{hc|~/.config/fish/config.fish|2=<br />
set -xU MANPAGER 'less -R --use-color -Dd+r -Du+b'<br />
}}<br />
<br />
設定を source するかシェルを再起動すると変更が適用されます。<br />
<br />
==== most を使う ====<br />
<br />
'most' の基本的な機能は {{Ic|less}} や {{Ic|more}} と似ていますが、備えている機能の数はやや少なくなっています。most でカラー出力を使うように設定するのは less よりも簡単ですが、less のように most を使うには別の設定が必要になります。<br />
<br />
{{Pkg|most}} パッケージをインストールしてください。<br />
<br />
{{ic|/etc/man_db.conf}} を編集して、ページャの定義をアンコメントして次のように変更:<br />
<br />
DEFINE pager most -s<br />
<br />
新しい設定は以下を入力することでテストできます:<br />
<br />
$ man whatever_man_page<br />
<br />
カラーの値を変更するには {{ic|~/.mostrc}} または {{ic|/etc/most.conf}} (システム全体に変更が適用されます) を編集する必要があります (ファイルが存在しない場合は作成してください)。{{ic|~/.mostrc}} の例:<br />
<br />
% Color settings<br />
color normal lightgray black<br />
color status yellow blue<br />
color underline yellow black<br />
color overstrike brightblue black<br />
<br />
{{Ic|less}} と同じようなキーバインドを使う例 (行ジャンプを 'J' に設定):<br />
<br />
% less-like keybindings<br />
unsetkey "^K"<br />
unsetkey "g"<br />
unsetkey "G"<br />
unsetkey ":"<br />
<br />
setkey next_file ":n"<br />
setkey find_file ":e"<br />
setkey next_file ":p"<br />
setkey toggle_options ":o"<br />
setkey toggle_case ":c"<br />
setkey delete_file ":d"<br />
setkey exit ":q"<br />
<br />
setkey bob "g"<br />
setkey eob "G"<br />
setkey down "e"<br />
setkey down "E"<br />
setkey down "j"<br />
setkey down "^N"<br />
setkey up "y"<br />
setkey up "^Y"<br />
setkey up "k"<br />
setkey up "^P"<br />
setkey up "^K"<br />
setkey page_down "f"<br />
setkey page_down "^F"<br />
setkey page_up "b"<br />
setkey page_up "^B"<br />
setkey other_window "z"<br />
setkey other_window "w"<br />
setkey search_backward "?"<br />
setkey bob "p"<br />
setkey goto_mark "'"<br />
setkey find_file "E"<br />
setkey edit "v"<br />
<br />
==== X resources を使う ====<br />
<br />
{{Pkg|xterm}}/{{Ic|uxterm}} や {{Pkg|rxvt-unicode}} でマニュアルページを表示するときにカラーを追加したいときは {{ic|~/.Xresources}} を編集するのが簡単です。<br />
<br />
===== xterm =====<br />
<br />
修飾をカラーで''置き換える'':<br />
<br />
*VT100.colorBDMode: true<br />
*VT100.colorBD: red<br />
*VT100.colorULMode: true<br />
*VT100.colorUL: cyan<br />
<br />
カラーと修飾 (太字や下線) を''同時に''使いたい場合:<br />
<br />
*VT100.veryBoldColors: 6<br />
<br />
{{ic|veryBoldColors}} の説明は {{man|1|xterm}} を見てください。<br />
<br />
===== rxvt-unicode =====<br />
<br />
URxvt.colorIT: #87af5f<br />
URxvt.colorBD: #d7d7d7<br />
URxvt.colorUL: #87afd7<br />
<br />
次を実行:<br />
<br />
$ xrdb -load ~/.Xresources<br />
<br />
{{Ic|xterm/uxterm}} や {{Ic|rxvt-unicode}} を新しく起動すると man ページがカラフルになっているはずです。<br />
<br />
上記の組み合わせは {{Ic|xterm/uxterm}} の'''太字'''や<u>下線</u>がある単語や、{{Ic|rxvt-unicode}} の'''太字'''や<u>下線</u>、''斜体''のテキストに色を追加します。組み合わせを変えることで色々試せます。<br />
<br />
=== pacman ===<br />
<br />
[[Pacman]] にはカラーオプションがあります。{{ic|/etc/pacman.conf}} の {{ic|Color}} 行をアンコメントしてください。<br />
<br />
== ラッパー ==<br />
<br />
=== ユニバーサルラッパー ===<br />
<br />
(以下の殆どは古いですが、まだ機能します)<br />
<br />
以下のラッパーには複数のプリセットが含まれており、変更したり新しいプリセットを作成することができます。<br />
<br />
{{Warning|ラッパーはコマンドの出力をエスケープシーケンスに置き換えます。標準的なシェルユーティリティの出力を使用するいくつかのシェルスクリプトやプログラムは正しく動作しないかもしれません。}}<br />
<br />
* {{App|rainbow|パターンを使ってコマンドの出力や標準入力をカラー化します。<br>プリセット: df, diff, env, host, ifconfig, java-stack-trace, jboss, jonas, md5sum, mvn2, mvn3, ping, tomcat, top, traceroute。|https://github.com/nicoulaj/rainbow|{{AUR|rainbow}}}}<br />
* {{App|grc|ログファイルやコマンドの出力を美しくするカラーライザー。<br>プリセット: cat, cvs, df, digg, gcc, g++, ls, ifconfig, make, mount, mtr, netstat, ping, ps, tail, traceroute, wdiff, blkid, du, dnf, docker, docker-machine, env, id, ip, iostat, last, lsattr, lsblk, lspci, lsmod, lsof, getfacl, getsebool, ulimit, uptime, nmap, fdisk, findmnt, free, semanage, sar, ss, sysctl, systemctl, stat, showmount, tune2fs, tcpdump。|https://github.com/pengwynn/grc|{{Pkg|grc}}}}<br />
* {{App|colorlogs|パターンを使ってコマンド出力や標準入力をカラー化。<br>プリセット: logs, git status, ant, maven。|https://github.com/memorius/colorlogs}}<br />
* {{App|cope|ターミナルプログラムのカラフルラッパー。<br>プリセット: acpi, arp, cc, df, dprofpp, fdisk, free, g++, gcc, id, ifconfig, ls, lspci, lsusb, make, md5sum, mpc, netstat, nm, nmap, nocope, ping, pmap, ps, readelf, route, screen, sha1sum, sha224sum, sha256sum, sha384sum, sha512sum, shasum, socklist, stat, strace, tcpdump, tracepath, traceroute, w, wget, who, xrandr。|https://github.com/yogan/cope|{{AUR|cope-git}}}}<br />
* {{App|cw|一般的な UNIX ベースコマンドのお手軽リアルタイム ANSI カラーラッパー。<br>プリセット: arp, arping, auth.log@, blockdev, cal, cksum, clock, configure, cpuinfo@, crontab@, cw-pipe, cw-test.cgi, date, df, diff, dig, dmesg, du, env, figlet, file, find, finger, free, fstab@, fuser, g++, gcc, group@, groups, hdparm, hexdump, host, hosts@, id, ifconfig, inittab@, iptables, last, lastlog, lsattr, lsmod, lsof, ltrace-color, make, md5sum, meminfo@, messages@, mount, mpg123, netstat, nfsstat, nmap, nslookup, objdump, passwd@, ping, pmap, pmap_dump, praliases, profile@, protocols@, ps, pstree, quota, quotastats, resolv.conf@, route, routel, sdiff, services@, showmount, smbstatus, stat, strace-color, sysctl, syslog, tar, tcpdump, tracepath, traceroute, umount, uname, uptime, users, vmstat, w, wc, whereis, who, xferlog。|http://cwrapper.sourceforge.net/|{{AUR|cw}}}}<br />
* {{App|ccze|C で書かれた高速なログカラー化ツール。colorize を置き換えます。|https://github.com/cornet/ccze/|{{Pkg|ccze}}}}<br />
<br />
=== 出力をカラー化するためのライブラリ ===<br />
<br />
* {{App|libtextstyle|A C library for styling text output to terminals|https://www.gnu.org/software/gettext/libtextstyle/manual/index.html|{{Pkg|gettext}}}}<br />
* {{App|ruby-rainbow|ruby の String クラスを拡張して ANSI ターミナルにおけるテキストのカラー化をサポート。|https://rubygems.org/gems/rainbow/|{{Pkg|ruby-rainbow}}}}<br />
* {{App|python-blessings|ターミナルのカラー化・スタイル・ポジションの実用的なラッパー。|https://github.com/erikrose/blessings|{{Pkg|python-blessings}}, {{Pkg|python2-blessings}}{{Broken package link|{{aur-mirror|python2-blessings}}}}}}<br />
* {{App|lolcat|Ruby program that makes the output colorful like a rainbow|https://github.com/busyloop/lolcat/|{{Pkg|lolcat}}}}<br />
<br />
=== 特定のアプリケーションのラッパー ===<br />
<br />
==== コンパイラ ====<br />
<br />
* {{App|colorgcc|gcc の出力形式に一致する警告・エラーメッセジなどのコンパイラの出力をカラーにする Perl ラッパー。|https://schlueters.de/colorgcc.html|{{Pkg|colorgcc}}}}<br />
<br />
==== diff ====<br />
<br />
diff には[[#diff|カラー出力]]機能が備わっていますが、以下のラッパーを使うこともできます:<br />
<br />
* {{App|colordiff|Perl script for ''diff'' highlighting.|http://www.colordiff.org/|{{Pkg|colordiff}}}}<br />
* {{App|cwdiff|''(w)diff'' wrapper with directories support and highlighting.|https://github.com/junghans/cwdiff|{{AUR|cwdiff}}, {{AUR|cwdiff-git}}}}<br />
* {{App|git-delta|A syntax-highlighting pager for git and diff output.|https://github.com/dandavison/delta|{{Pkg|git-delta}}}}<br />
<br />
==== cat ====<br />
* {{App|bat|構文の強調表示と git 統合を備えた Cat クローン|https://github.com/sharkdp/bat|{{Pkg|bat}}}}<br />
<br />
==== less ====<br />
<br />
===== source-highlight =====<br />
''less'' でシンタックスハイライトを有効にすることができます。まず、{{Pkg|source-highlight}} をインストールし、次に以下の行をシェルの設定ファイルに追加してください:<br />
{{hc|~/.bashrc|<nowiki><br />
export LESSOPEN="| /usr/bin/source-highlight-esc.sh %s"<br />
export LESS='-R '<br />
</nowiki>}}<br />
<br />
===== lesspipe =====<br />
<br />
コマンドラインインターフェイスを頻繁に使う場合 {{Pkg|lesspipe}} をインストールすると良いかもしれません。<br />
<br />
ページャを使ってアーカイブの中の圧縮されたファイルを表示することができるようになります:<br />
<br />
{{hc|$ less ''compressed_file''.tar.gz|2=<br />
==> use tar_file:contained_file to view a file in the archive<br />
-rw------- ''username''/''group'' 695 2008-01-04 19:24 ''compressed_file''/''content1''<br />
-rw------- ''username''/''group'' 43 2007-11-07 11:17 ''compressed_file''/''content2''<br />
''compressed_file''.tar.gz (END)<br />
}}<br />
<br />
''lesspipe'' はファイルタイプに関連付けられたコマンドの代替として (例えば {{Pkg|python-html2text}} で HTML を閲覧する)、アーカイブ以外のファイルも ''less'' のインターフェイスに接続します。<br />
<br />
''lesspipe'' を有効にするにはログインしなおすか、{{ic|/etc/profile.d/lesspipe.sh}} を実行してください。<br />
<br />
==== Make ====<br />
<br />
* {{App|colormake|出力を読みやすくするシンプルな make のラッパー。|http://bre.klaki.net/programs/colormake/|{{AUR|colormake}}, {{AUR|colormake-git}}}}<br />
<br />
==== Ping ====<br />
<br />
* {{App|prettyping|ping の監視に素晴らしい機能を追加するラッパー。標準の ping ツールの出力を美麗・コンパクト・読みやすく改造。|http://denilson.sa.nom.br/prettyping/|{{Pkg|prettyping}}}}<br />
<br />
== シェル ==<br />
<br />
=== bash ===<br />
<br />
[[Bash/プロンプトのカスタマイズ#カラー]]を見てください。<br />
<br />
=== Fish ===<br />
<br />
[[Fish#ウェブインターフェイス]]を見てください。<br />
<br />
=== xonsh ===<br />
<br />
[https://xon.sh/tutorial.html#customizing-the-prompt プロンプトのカスタマイズ]を見てください。<br />
<br />
=== zsh ===<br />
<br />
[[Zsh#プロンプトのカスタマイズ]]を見てください。<br />
<br />
== ターミナルエミュレータ ==<br />
<br />
=== 仮想端末 ===<br />
<br />
フレームバッファで実行される [[w:Virtual console|Linux 仮想端末]]の色は変更することができます。エスケープコードe {{ic|\\e]PXRRGGBB}} を書き込むことで変更できます。{{ic|X}} は 0-F からなる色の16進数インデックス、{{ic|RRGGBB}} は伝統的な16進数の RGB コードに置き換えてください。<br />
<br />
例えば、{{ic|~/.Xresources}} に定義した既存の色定義を再利用するには、シェルの初期化ファイル ({{ic|~/.bashrc}} など) に以下を追加してください:<br />
<br />
if [ "$TERM" = "linux" ]; then<br />
_SEDCMD='s/.*\*color\([0-9]\{1,\}\).*#\([0-9a-fA-F]\{6\}\).*/\1 \2/p'<br />
for i in $(sed -n "$_SEDCMD" $HOME/.Xresources | awk '$1 < 16 {printf "\\e]P%X%s", $1, $2}'); do<br />
echo -en "$i"<br />
done<br />
clear<br />
fi<br />
<br />
==== ログイン画面 ====<br />
<br />
以下は {{ic|/etc/issue}} の仮想端末のログイン画面のカラー出力例です。root で {{ic|mv /etc/issue /etc/issue.bak}} を実行して元のファイルのバックアップを作成してから、新しい {{ic|/etc/issue}} を作成してください:<br />
<br />
\e[H\e[2J<br />
\e[1;30m| \e[34m\\s \\r<br />
\e[36;1m/\\\\ \e[37m|| \e[36m| | \e[30m|<br />
\e[36m/ \\\\ \e[37m|| \e[36m| _ \e[30m| \e[32m\\t<br />
\e[1;36m/ \e[0;36m.. \e[1m\\\\ \e[37m//==\\\\\\\\ ||/= /==\\\\ ||/=\\\\ \e[36m| | |/ \\\\ | | \\\\ / \e[30m| \e[32m\\d<br />
\e[0;36m/ . . \\\\ \e[37m|| || || | || || \e[36m| | | | | | X \e[1;30m|<br />
\e[0;36m/ . . \\\\ \e[37m\\\\\\\\==/| || \\\\==/ || || \e[36m| | | | \\\\_/| / \\\\ \e[1;30m| \e[31m\\U<br />
\e[0;36m/ .. .. \\\\ \e[0;37mA simple, lightweight linux distribution. \e[1;30m|<br />
\e[0;36m/_\x27 `_\\\\ \e[1;30m| \e[35m\\l \e[0mon \e[1;33m\\n<br />
\e[0m<br />
<br />
ファイルを保存したら {{ic|chmod +x /etc/issue}} で実行可能属性を付与してください。<br />
<br />
参照:<br />
<br />
* https://bbs.archlinux.org/viewtopic.php?pid=386429#p386429<br />
* http://www.linuxfromscratch.org/blfs/view/svn/postlfs/logon.html<br />
<br />
=== X window system ===<br />
<br />
ほとんどの [[Xorg]] ターミナル ([[xterm]] や [[urxvt]] を含む) は16色の基本色をサポートしています。0-7 の色は 'normal' カラーです。8-15 の色は 0-7 の色の 'bright' カラーです。ハイライトに使用します。[[X resources]] を使ったりターミナルの設定を使うことで色は変更することができます。例:<br />
<br />
{{hc|1=~/.Xresources|2=<br />
! Black + DarkGrey<br />
*color0: #000000<br />
*color8: #555753<br />
! DarkRed + Red<br />
*color1: #ff6565<br />
*color9: #ff8d8d<br />
! DarkGreen + Green<br />
*color2: #93d44f<br />
*color10: #c8e7a8<br />
! DarkYellow + Yellow<br />
*color3: #eab93d<br />
*color11: #ffc123<br />
! DarkBlue + Blue<br />
*color4: #204a87<br />
*color12: #3465a4<br />
! DarkMagenta + Magenta<br />
*color5: #ce5c00<br />
*color13: #f57900<br />
!DarkCyan + Cyan (both not tango)<br />
*color6: #89b6e2<br />
*color14: #46a4ff<br />
! LightGrey + White<br />
*color7: #cccccc<br />
*color15: #ffffff<br />
}}<br />
<br />
{{Warning|{{ic|foreground}} や {{ic|background}} などのカラーリソースは他のアプリケーション (例: [https://www.gnu.org/software/emacs/manual/html_node/emacs/Table-of-Resources.html emacs]) によって読み込まれる可能性があります。クラス名を指定することで読み込まれないようにすることができます。例: {{ic|XTerm.foreground}}。}}<br />
<br />
参照:<br />
<br />
* 自動的に太字・下線テキストをカラー化する方法は [[#X resources を使う]]を見てください。<br />
* [https://web.archive.org/web/20090130061234/http://phraktured.net/terminal-colors/ Color Themes] - Extensive list of terminal color themes by Phraktured.<br />
* [http://xcolors.net/ Xcolors.net] List of user-contributed terminal color themes.<br />
* [http://beta.andrewrcraig.us/index.php?page=xcolors Xcolors by dkeg]<br />
* [https://github.com/chriskempson/base16 base16 color schemes]<br />
<br />
=== 256色全てを表示 ===<br />
<br />
画面上に256色を表示:<br />
<br />
$ (x=`tput op` y=`printf %76s`;for i in {0..256};do o=00$i;echo -e ${o:${#o}-3:3} `tput setaf $i;tput setab $i`${y// /=}$x;done)<br />
<br />
=== tput のエスケープコードを表示 ===<br />
<br />
{{ic|tput op}} は確認したい色に置き換えてください。{{ic|op}} はデフォルトの前景色と背景色です。<br />
<br />
{{hc|<nowiki>$ ( strace -s5000 -e write tput op 2>&2 2>&1 ) | tee -a /dev/stderr | grep -o '"[^"]*"'</nowiki>|<br />
033[\033[1;34m"\33[39;49m"\033[00m<br />
}}<br />
<br />
=== サポートされている色を確認 ===<br />
<br />
以下のコマンドで使用しているターミナルがサポートしている色の数を確認できます。色の数は次のどれかになります: 8, 15, 16, 52, 64, 88, 256。<br />
<br />
{{hc|<nowiki>$ for T in `find /usr/share/terminfo -type f -printf '%f '`;do echo "$T `tput -T $T colors`";done|sort -nk2</nowiki>|<br />
Eterm-88color 88<br />
rxvt-88color 88<br />
xterm+88color 88<br />
xterm-88color 88<br />
Eterm-256color 256<br />
gnome-256color 256<br />
konsole-256color 256<br />
putty-256color 256<br />
rxvt-256color 256<br />
screen-256color 256<br />
screen-256color-bce 256<br />
screen-256color-bce-s 256<br />
screen-256color-s 256<br />
xterm+256color 256<br />
xterm-256color 256<br />
}}<br />
<br />
=== ターミナルの機能を確認 ===<br />
<br />
以下のコマンドを使うことでターミナルによってサポートされている機能を確認できます:<br />
<br />
{{hc|<nowiki>$ infocmp -1 | sed -nu 's/^[ \000\t]*//;s/[ \000\t]*$//;/[^ \t\000]\{1,\}/!d;/acsc/d;s/=.*,//p'|column -c80</nowiki>|<br />
bel cuu ich kb2 kf15 kf3 kf44 kf59 mc0 rmso smul<br />
blink cuu1 il kbs kf16 kf30 kf45 kf6 mc4 rmul tbc<br />
bold cvvis il1 kcbt kf17 kf31 kf46 kf60 mc5 rs1 u6<br />
cbt dch ind kcub1 kf18 kf32 kf47 kf61 meml rs2 u7<br />
civis dch1 indn kcud1 kf19 kf33 kf48 kf62 memu sc u8<br />
clear dl initc kcuf1 kf2 kf34 kf49 kf63 op setab u9<br />
cnorm dl1 invis kcuu1 kf20 kf35 kf5 kf7 rc setaf vpa<br />
}}<br />
<br />
=== カラースキームスクリプト ===<br />
<br />
現在のターミナルスキームのチャートを表示するスクリプトが [https://paste.xinu.at/m-dAiJ/] に存在します。<br />
<br />
=== トゥルーカラーサポート ===<br />
<br />
xterm、konsole、st など、1600 万色 (RGB、それぞれ 8 ビットの解像度) のフルレンジをサポートしている端末もあります。対応する TERM 値 xterm-direct、konsole-direct、st-direct などは、ncurses バージョン 6.1 [https://lists.gnu.org/archive/html/bug-ncurses/2018-01/msg00045.html] からサポートされています。トゥルーカラーをサポートしているターミナルエミュレータやアプリケーションの詳細については、 [https://gist.github.com/XVilka/8346728] を参照してください。<br />
<br />
なお、Linux カーネルはトゥルーカラー用の SGR エスケープシーケンスをサポートしていますが、ドライバが 24 ビットの色仕様をカーネル内の 256 色のカラーマップにマッピングするため、使用しても無意味です (関数 {{ic|rgb_foreground}}、{{ic|rgb_background}}) を参照)。このため、{{ic|linux-direct}} の terminfo エントリはありません。<br />
<br />
== 参照 ==<br />
<br />
* [https://gkbrk.com/2016/07/lolcat-clone-in-x64-assembly/ lolcat clone in x64 assembly]<br />
* [http://unix.stackexchange.com/a/147 Setting colors for less] と [http://unix.stackexchange.com/a/6357 solving related problems] (StackExchange のスレッド)</div>
Buzztaiki
https://wiki.archlinux.jp/index.php?title=Visual_Studio_Code&diff=21502
Visual Studio Code
2021-09-02T13:42:20Z
<p>Buzztaiki: 設定の翻訳を更新</p>
<hr />
<div>[[Category:開発]]<br />
[[Category:テキストエディタ]]<br />
[[en:Visual Studio Code]]<br />
[[zh-hans:Visual Studio Code]]<br />
[https://code.visualstudio.com/ Visual Studio Code] は Microsoft によって開発されている、クロスプラットフォームのプロプライエタリテキストエディタ (End-User License Agreement に基づくライセンス) です。JavaScript と TypeScript で書かれた、Codium というフリーのオープンソースプロジェクト(MIT License に基づくライセンス)の上に構築されています。Codium と Visual Studio Code の関係は、Chromium と Google Chrome の関係とほぼ同じです。混合ライセンスの説明については、[https://github.com/Microsoft/vscode/issues/60#issuecomment-161792005 この GitHub コメント]を参照してください。Visual Studio Code は Electron フレームワーク上に構築されており、エクステンションによる拡張ができます。拡張は [https://marketplace.visualstudio.com/VSCode web上] または テキストエディタの中 から参照できます。<br />
<br />
== インストール ==<br />
VSCode には以下のパッケージが存在します:<br />
<br />
* {{Pkg|code}} (オープンソースリリース)<br />
* {{AUR|code-git}} (オープンソース開発版)<br />
* {{AUR|visual-studio-code-bin}} (Microsoft ブランドのリリース)<br />
* {{AUR|visual-studio-code-insiders-bin}} (Microsoft ブランドのリリース、毎日更新)<br />
* {{AUR|vscodium-bin}} (コミュニティ主導の完全オープンソース版の VSCode、Microsoft テレメトリをすべて取り除いたもの - 最新リリース、バイナリパッケージ)<br />
* {{AUR|vscodium}} (コミュニティ主導の完全オープンソース版の VSCode、Microsoft テレメトリをすべて取り除いたもの - 最新リリース、git ビルド)<br />
* {{AUR|vscodium-git}} (コミュニティ主導の完全オープンソース版の VSCode、Microsoft テレメトリをすべて取り除いたもの - ブランチマスター の最新のコミット、git ビルド)<br />
<br />
Microsoft の [https://github.com/microsoft/ptvsd ptvsd] (Python Tools for Visual Studio Debug) サーバー/モジュール は {{AUR|python-ptvsd}} にあります。<br />
<br />
===C# のデバッグ===<br />
C# のコードをデバッグするには {{AUR|icu55}} をインストールする必要があります。インストールしないと 'Debug adapter process has terminated unexpectedly' というエラーが発生します。<br />
<br />
== 使用方法 ==<br />
<br />
{{ic|code}} を実行してください。<br />
<br />
何らかの理由で Visual Studio Code のインスタンスを複数起動したい場合、{{ic|-n}} フラグを使ってください。<br />
<br />
==設定==<br />
<br />
{{Pkg|code}} の設定は {{ic|~/.config/Code - OSS/User/settings.json}} に保存されます。<br />
<br />
{{AUR|visual-studio-code-bin}} の設定は {{ic|~/.config/Code/User/settings.json}} に保存されます。<br />
<br />
{{AUR|vscodium}} 及びその他 Codium の設定は {{ic|~/.config/VSCodium/User/settings.json}} に保存されます。<br />
<br />
<br />
Code から Codium (またはその逆) へ設定を移行する場合、設定ディレクトリはコピーまたは移動できます。殆どのコードベースを共有しているため設定には互換性があります。<br />
<br />
===統合ターミナル===<br />
<br />
{{ic|View > Integrated Terminal}} や {{ic|Ctrl + `}} で統合されたターミナルが開きます。デフォルトでは、何も引数が指定されないと [[Bash]] が使われますが、使用されるシェルは変更できます。{{ic|terminal.integrated.shell.linux}} は使用するデフォルトシェルを設定し、{{ic|terminal.integrated.shellArgs.linux}} はシェルに渡される引数を設定します。<br />
<br />
例:<br />
<br />
{{hc|~/.config/Code/User/settings.json|<br />
"terminal.integrated.shell.linux": "/usr/bin/fish",<br />
"terminal.integrated.shellArgs.linux": ["-l","-d 3"]<br />
}}<br />
<br />
===外部ターミナル===<br />
<br />
Arch のデフォルトターミナルとして [[Terminator]] を使っている場合、Visual Studio Code で次のようなエラーが発生します: {{ic|Unable to launch debugger worker process (vsdbg) through the terminal. spawn truecolor ENOENT}}。Visual Studio で使用するターミナルを別のターミナルに変更することで解決します (例: gnome-terminal)。<br />
<br />
{{ic|"terminal.external.linuxExec": "Yours alternative terminal"}} で実行・デバッグのときに使用するデフォルトのターミナルを設定します。<br />
<br />
例:<br />
<br />
{{hc|~/.config/Code/User/settings.json|<br />
"terminal.external.linuxExec": "gnome-terminal"<br />
}}<br />
<br />
=== Running natively under Wayland ===<br />
<br />
If you are using a [[Wayland]]-based WM or DE, you can force Visual Studio Code to run natively under Wayland (instead of under XWayland) by adding command-line options {{ic|1=--enable-features=UseOzonePlatform --ozone-platform=wayland|2==}}. For example, you can try launching VSCode using<br />
<br />
$ code --enable-features=UseOzonePlatform --ozone-platform=wayland<br />
<br />
These options can be automatically applied every time Visual Studio Code is launched by adding them to the file {{ic|${XDG_CONFIG_HOME}/electron-flags.conf}}. (See [[Wayland#Electron]].)<br />
<br />
== トラブルシューティング ==<br />
<br />
=== KDE/Plasma でグローバルメニューが機能しない ===<br />
<br />
Visual Studio Code は DBus を使用してメニューを Plasma に渡します。{{Pkg|libdbusmenu-glib}} をインストールしてみてください。<br />
<br />
=== Unable to move items to trash ===<br />
<br />
By default, [https://electron.atom.io/ Electron] apps use {{ic|gio}} to delete files. {{ic|kioclient5}} is automatically selected instead if [[Plasma]] is detected. Different trash implementations can be used by setting the {{ic|ELECTRON_TRASH}} [[environment variable]].<br />
<br />
For example, for deleting files using {{Pkg|trash-cli}}:<br />
<br />
$ ELECTRON_TRASH=trash-cli code<br />
<br />
At the time of writing, Electron supports {{ic|kioclient5}}, {{ic|kioclient}}, {{ic|trash-cli}}, {{ic|gio}} (default) and {{ic|gvfs-trash}} (deprecated). More info is available at this [https://github.com/electron/electron/blob/master/docs/api/environment-variables.md#electron_trash-linux documentation page].<br />
<br />
=== Unable to debug C# ===<br />
<br />
If you want to debug C#[[.NET_Core|.NET]] (using the [https://www.omnisharp.net OmniSharp extension]) then you need to install the Microsoft branded release (from the AUR). This is apparently because the .NET Core debugger is only licensed to be used with official Microsoft products - see [https://github.com/OmniSharp/omnisharp-vscode/issues/1431#issuecomment-297578930 this github discussion].<br />
<br />
When using the open-source package, debugging fails fairly quietly. The debug console will just show the initial message:<br />
<br />
{{bc|You may only use the Microsoft .NET Core Debugger (vsdbg) with<br />
Visual Studio Code, Visual Studio or Visual Studio for Mac software<br />
to help you develop and test your applications.}}<br />
<br />
For debugging with the open-source package {{AUR|netcoredbg}} can be used. To run it in VS Code, add this configuration to .NET Core launch configuration of the project:<br />
<br />
{{hc|./.vscode/launch.json|<br />
"configurations": [<br />
{<br />
...<br />
"pipeTransport": {<br />
"pipeCwd": "${workspaceFolder}",<br />
"pipeProgram": "/usr/bin/bash",<br />
"pipeArgs": ["-c"],<br />
"debuggerPath": "/usr/bin/netcoredbg"<br />
}<br />
...<br />
}}<br />
<br />
=== Unable to open .csproj with OmniSharp server, invalid Microsoft.Common.props location ===<br />
<br />
You have to switch from mono to proper SDK version props.<br />
<br />
{{hc|/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props|<br />
$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props<br />
}}<br />
<br />
Modify import to look like this:<br />
<br />
{{hc|/opt/dotnet/sdk/{VERSION}/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props|<br />
/opt/dotnet/sdk/{VERSION}/Current/Microsoft.Common.props<br />
}}<br />
<br />
=== Error from OmniSharp that MSBuild cannot be located ===<br />
<br />
It is noted in the [https://github.com/OmniSharp/omnisharp-roslyn#introduction OmniSharp introduction] that Arch Linux users should install the {{Pkg|mono-msbuild}} package. Without it, you might get an error like:<br />
<br />
{{hc|1=OmniSharp Log|2=<br />
[info]: OmniSharp.MSBuild.Discovery.MSBuildLocator<br />
Registered MSBuild instance: StandAlone 15.0 - "~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin"<br />
MSBuildExtensionsPath = /usr/lib/mono/xbuild<br />
BypassFrameworkInstallChecks = true<br />
CscToolPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin/Roslyn<br />
CscToolExe = csc.exe<br />
MSBuildToolsPath = ~/.vscode/extensions/ms-vscode.csharp-1.18.0/.omnisharp/1.32.11/omnisharp/msbuild/15.0/Bin<br />
TargetFrameworkRootPath = /usr/lib/mono/xbuild-frameworks<br />
System.TypeLoadException: Could not load type of field 'OmniSharp.MSBuild.ProjectManager:_queue' (13) due to: Could not load file or assembly 'System.Threading.Tasks.Dataflow, Version=4.5.24.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.<br />
...}}<br />
<br />
You might be able to build anyway (possibly depending whether you have {{Pkg|mono}} installed too).<br />
<br />
Omnisharp ships with its own mono version, so, if it is unable to locate the installed one, if you want to tell omnisharp to look for a "global" mono installed in your machine, put this in your settings.json:<br />
{{hc|1=settings.json|2="omnisharp.useGlobalMono:"always"}}<br />
<br />
=== Saving with "Retry as Sudo" does not work ===<br />
<br />
This feature does not work in the {{Pkg|code}} package, because Microsoft does not support the way the Arch package is packaged (native instead of bundled Electron). See {{Bug|61516}} and the [https://github.com/Microsoft/vscode/issues/70403 upstream bug report] for more information.<br />
<br />
The binary release {{AUR|visual-studio-code-bin}} does not have this issue, and the feature works there.<br />
<br />
=== Keyboard variants or keymappings do not map ===<br />
<br />
As per the [https://github.com/Microsoft/vscode/wiki/Keybinding-Issues#troubleshoot-linux-keybindings wiki on GitHub]:<br />
<br />
: Switching keyboard layouts under some Linux window managers does not result in a change in the low level X window APIs VS Code uses to read the current keyboard layout. This means that VS Code ends up sometimes reading one of the other configured keyboard layouts and not the current active one. PR welcome...<br />
<br />
Per the wiki, there are two possible solutions:<br />
<br />
# make sure {{ic|setxkbmap -query}} returns as the first keyboard layout the one you want to work with in VS Code.<br />
# use {{ic|"keyboard.dispatch": "keyCode"}} in your settings and restart VS Code. This will prevent VS Code from trying to determine your keyboard layout whatsoever.<br />
<br />
=== Command "..." not found ===<br />
<br />
In the official build of VS Code, a {{ic|product.json}} file lists the extensions that are allowed to use certain proposed APIs accessed by extensions. However, the {{ic|product.json}} is absent in the OSS build {{Pkg|code}}. [https://docs.microsoft.com/en-us/visualstudio/liveshare/reference/linux#vs-code-oss-issues]<br />
<br />
In the related issues below, some flags may be required to enable certain APIs. [https://github.com/Microsoft/vscode-pull-request-github/wiki#3-why-isnt-the-extension-starting] You may either run {{Pkg|code}} with these flags, or you can add the relevant entries to the {{ic|extensionAllowedProposedApi}} section in the {{ic|product.json}} file ({{Pkg|code}} installs this to {{ic|/usr/lib/code/product.json}}).<br />
<br />
{{bc|"extensionAllowedProposedApi": [<br />
"ms-vsliveshare.vsliveshare",<br />
"ms-vscode.node-debug",<br />
"ms-vscode.node-debug2"<br />
]}}<br />
<br />
This can also be resolved by installing the {{AUR|code-features}} package, which installs a pacman hook that patches the file on every package update. Alternatively, you may also consider installing the Microsoft branded packages: {{AUR|visual-studio-code-bin}}, {{AUR|visual-studio-code-insiders-bin}}.<br />
<br />
==== VS Live Share missing API ====<br />
<br />
Use either the solution above by editing the {{ic|product.json}}, or open VS Code with:<br />
<br />
$ code --enable-proposed-api ms-vsliveshare.vsliveshare<br />
<br />
==== Command 'remote-containers.openFolder' not found ====<br />
<br />
Open VS Code enabling remote-containers API as commented in {{bug|63374}}:<br />
<br />
$ code-oss --enable-proposed-api ms-vscode-remote.remote-containers<br />
<br />
==== Command 'GitHub Pull Requests: Configure Remotes...' resulted in an error (command 'pr.configureRemotes' not found) ====<br />
<br />
Open VS Code with:<br />
<br />
$ code --enable-proposed-api GitHub.vscode-pull-request-github<br />
<br />
=== Git: ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory ===<br />
<br />
This error is a result of an encrypted ssh-key, and can be solved by installing a dialogue provider like [[SSH keys#x11-ssh-askpass]] or the alternatives listed there like {{Pkg|ksshaskpass}} for KDE.<br />
<br />
One thing to note is that for e.g. ksshaskpass you would need to link it from {{ic|/usr/lib/ssh/ssh-askpass}} to get VSCode to find it:<br />
<br />
# ln /usr/bin/ksshaskpass /usr/lib/ssh/ssh-askpass<br />
<br />
=== No extensions found ===<br />
<br />
There exist several differences between "vscode" (open-source) and "Visual Studio Code" (Microsoft product based on vscode), see: [https://github.com/microsoft/vscode/wiki/Differences-between-the-repository-and-Visual-Studio-Code Differences between the repository and Visual Studio Code]. The usage of [https://marketplace.visualstudio.com/vscode Microsoft marketplace] for extensions is restricted to products of the Visual Studio Code's family. Consequently, it cannot be used by vscode (see {{Bug|67780}}). The {{Pkg|code}} and {{AUR|vscodium-bin}}/{{AUR|vscodium}}/{{AUR|vscodium-git}} packages are configured to use [https://open-vsx.org/ the Open VSX registry] instead of the Microsoft one. This explains why some extensions are missing from the vscode explorer while they appear to be listed online.<br />
<br />
The workaround is to either install the {{AUR|visual-studio-code-bin}} package instead, manually download and install the {{ic|.vsix}} file from the web marketplace page, or ask the maintainer to upload its extension to OpenVSX.<br />
<br />
Technically, one could also edit the {{ic|product.json}} as shown in [https://github.com/VSCodium/vscodium/issues/418#issuecomment-643664182 this Github comment], but that would not comply with the Microsoft Marketplace Terms of Use. Additionally, the changes would be overwritten during package update. This can be overcome by installing {{AUR|code-marketplace}} package, which installs a pacman hook that patches the file on every package update.<br />
<br />
=== Cutoff characters in integrated Terminal ===<br />
<br />
Characters that are too wide can end up clipping. For example the italic bold text of Deno stack-traces. <br />
<br />
This can be avoided by setting "terminal.integrated.rendererType" to "experimentalWebgl".<br />
<br />
=== Blurry text under Wayland ===<br />
<br />
Visual Studio Code defaults to run under XWayland, which may cause blurry text if you are using HiDPI screens. To fix this issue, try forcing Electron to run under Wayland—see [[#Running natively under Wayland]].<br />
<br />
=== No such interface“org.freedesktop.Secret.Collection” ===<br />
<br />
See [https://code.visualstudio.com/docs/editor/settings-sync#_troubleshooting-keychain-issues settings-sync#_troubleshooting-keychain-issues]<br />
<br />
=== Authentification with Github failed while using VSCodium ===<br />
When connecting a Github account, change "vscodium" to "vscode" in the URL as seen in [https://github.com/VSCodium/vscodium/issues/401#issuecomment-631502370 this comment]. Then copy the identification token into VSCodium. Should it still fail, install a keyring like {{pkg|gnome-keyring}} or create a new keyring as mentioned here [https://code.visualstudio.com/docs/editor/settings-sync#_troubleshooting-keychain-issues in the Visual Studio Code docs] and here [https://github.com/microsoft/vscode/issues/92972#issuecomment-625751232 on Github].</div>
Buzztaiki
https://wiki.archlinux.jp/index.php?title=Reflector&diff=21429
Reflector
2021-08-25T05:48:11Z
<p>Buzztaiki: Pacman フックの部分を英語版と同期</p>
<hr />
<div>[[Category:パッケージ管理]]<br />
[[en:Reflector]]<br />
[[es:Reflector]]<br />
[[fr:Reflector]]<br />
[[it:Reflector]]<br />
[[ko:Reflector]]<br />
[[pl:Reflector]]<br />
[[ru:Reflector]]<br />
[[zh-hans:Reflector]]<br />
{{Related articles start}}<br />
{{Related|ミラー}}<br />
{{Related|Pacman}}<br />
{{Related articles end}}<br />
[https://xyne.archlinux.ca/projects/reflector/ Reflector] は [https://www.archlinux.org/mirrors/status/ MirrorStatus] ページから最新のミラーリストを取得して、ミラーを速度でソートし、{{ic|/etc/pacman.d/mirrorlist}} ファイルを上書きするスクリプトです。<br />
<br />
== インストール ==<br />
<br />
{{Pkg|reflector}} パッケージを[[インストール]]してください。<br />
<br />
== 使用方法 ==<br />
<br />
{{Warning|<br />
* 最初に {{ic|/etc/pacman.d/mirrorlist}} ファイルをバックアップしておいてください。<br />
* [[Pacman]] で同期とアップデートをする前に {{ic|/etc/pacman.d/mirrorlist}} には信頼できないエントリが含まれていないようにしてください。}}<br />
<br />
利用できるコマンドを表示するには、次のコマンドを実行:<br />
# reflector --help<br />
<br />
=== サンプル ===<br />
<br />
以下のコマンドは同期が一番新しい5つのミラーを取り出して、速度でソートし、{{ic|/etc/pacman.d/mirrorlist}} ファイルを上書きします:<br />
<br />
# reflector --verbose --latest 5 --sort rate --save /etc/pacman.d/mirrorlist<br />
<br />
以下のコマンドは、最近同期が行われた HTTP または HTTPS ミラー200個を選択して、ダウンロード速度でソートし、{{ic|/etc/pacman.d/mirrorlist}} ファイルを上書きします:<br />
<br />
# reflector --latest 200 --protocol http --protocol https --sort rate --save /etc/pacman.d/mirrorlist<br />
<br />
以下のコマンドはアメリカに存在する、12時間以内に同期が行われた HTTPS ミラーを選択して、ダウンロード速度でソートし、{{ic|/etc/pacman.d/mirrorlist}} ファイルを上書きします:<br />
<br />
# reflector --country 'United States' --age 12 --protocol https --sort rate --save /etc/pacman.d/mirrorlist<br />
<br />
== 自動化 ==<br />
<br />
=== Systemd サービス ===<br />
<br />
サービスは、{{ic|/etc/xdg/reflector/reflector.conf}} で指定されたパラメータを使用し Reflector を実行します。このファイルのデフォルトのオプションは、例として示しています。<br />
<br />
たとえば、HTTPS をサポートし、上書き {{ic|/etc/pacman.d/mirrorlist}} する最新の5つのミラーを日本とオーストラリアから選択するには、次のコマンドを使用します。<br />
<br />
{{hc|/etc/xdg/reflector/reflector.conf|<br />
--save /etc/pacman.d/mirrorlist<br />
--country Japan,Australia<br />
--protocol https<br />
--latest 5<br />
}}<br />
<br />
{{ic|reflector.service}} を [[有効化]] すればミラーリストが起動時に更新されます。<br />
<br />
=== Systemd タイマー ===<br />
<br />
バージョン2020.8 以降、Reflector は [[systemd/タイマー]] ({{ic|reflector.timer}}) を提供しており、 [[Reflector#Systemd サービス]] {{ic|reflector.service}} を毎週開始します。スケジュールは {{ic|reflector.timer}} を [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.81.AE.E7.B7.A8.E9.9B.86 編集] することで変更できます。<br />
<br />
まず、[[Reflector#Systemd サービス]] の説明に従って、設定ファイルを編集します。設定ファイルを更新した後、{{ic|reflector.timer}} を [[有効化]] してください。 <br />
<br />
ミラーリストをスケジュールより先に更新するには、{{ic|reflector.service}} を [https://wiki.archlinux.jp/index.php/Systemd#.E3.83.A6.E3.83.8B.E3.83.83.E3.83.88.E3.82.92.E4.BD.BF.E3.81.86 start] してください。<br />
<br />
=== Pacman フック ===<br />
<br />
[[pacman フック]]を作成して {{Pkg|pacman-mirrorlist}} が更新されるたびに {{ic|reflector.service}} を実行して {{ic|.pacnew}} ファイルを削除するように設定できます:<br />
<br />
{{hc|/etc/pacman.d/hooks/mirrorupgrade.hook|<nowiki><br />
[Trigger]<br />
Operation = Upgrade<br />
Type = Package<br />
Target = pacman-mirrorlist<br />
<br />
[Action]<br />
Description = Updating pacman-mirrorlist with reflector and removing pacnew...<br />
When = PostTransaction<br />
Depends = reflector<br />
Exec = /bin/sh -c 'systemctl start reflector.service; [ -f /etc/pacman.d/mirrorlist.pacnew ] && rm /etc/pacman.d/mirrorlist.pacnew'<br />
</nowiki>}}<br />
<br />
パラメータは [[#Systemd サービス]] の説明に従って {{ic|/etc/xdg/reflector/reflector.conf}} で設定します。<br />
<br />
これと同様のフックは {{AUR|reflector-mirrorlist-update}} でも提供されています。<br />
<br />
== 参照 ==<br />
<br />
* [https://bbs.archlinux.org/viewtopic.php?id=115714 Reflector Arch Linux フォーラムのスレッド]<br />
* [https://xyne.archlinux.ca/projects/reflector/ 変更ログを含むアップストリームプロジェクトページ]</div>
Buzztaiki
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%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA&diff=19657
デスクトップエントリ
2021-04-14T13:56:42Z
<p>Buzztaiki: recognized desktop entry keys のリンク先を en のページと同様に変更</p>
<hr />
<div>[[Category:Freedesktop.org]]<br />
[[Category:設定ファイル]]<br />
[[Category:パッケージ開発]]<br />
[[en:Desktop entries]]<br />
[[pt:Desktop entries]]<br />
[[ru:Desktop entries]]<br />
[[zh-hans:Desktop entries]]<br />
デスクトップエントリは [[Xorg|X Window System]] で動作するプログラムの挙動を指定する [https://www.freedesktop.org/wiki/ freedesktop.org] の仕様です。デスクトップエントリは設定ファイルとしてアプリケーションの起動方法やメニューとアイコンの表示方法を定義します。最も一般的なデスクトップエントリは {{ic|.desktop}} と {{ic|.directory}} ファイルです。この記事では有用な標準仕様のデスクトップエントリを作成する方法を簡単に説明します。主にパッケージ作成者やメンテナを対象にしていますが、ソフトウェアの開発者なども読む価値があると思われます。<br />
<br />
デスクトップエントリには大きくわけて3つのタイプがあります:<br />
<br />
; アプリケーション : アプリケーションのショートカット<br />
; リンク : ウェブリンクのショートカット。<br />
; ディレクトリ : メニューエントリのメタデータのコンテナ。<br />
<br />
以下のセクションではこれらのエントリを作成したり修正する方法をざっと説明しています。<br />
<br />
== アプリケーションエントリ ==<br />
<br />
アプリケーションのデスクトップエントリ、または {{ic|.desktop}} ファイルは、基本的にメタ情報の集合でありアプリケーションのショートカットです。これらのファイルは基本的に、システム全体でインストールしたアプリケーションなら {{ic|/usr/share/applications}} または {{ic|/usr/local/share/applications}} に、ユーザー個別にインストールしたアプリケーションなら {{ic|~/.local/share/applications}} に入っています。ユーザーのエントリはシステムのエントリよりも優先されます。<br />
<br />
=== サンプルファイル ===<br />
<br />
以下はデスクトップエントリの構成のサンプルです。このサンプルは雰囲気を伝えるだけのものであり、利用可能なエントリキー全ての使い方を示してはいません。完全なキーのリストは [https://standards.freedesktop.org/desktop-entry-spec/latest/ar01s05.html freedesktop.org specification] を見てください。<br />
<br />
[Desktop Entry]<br />
Type=Application # 上述のタイプを指定します<br />
Version=1.0 # ファイルが準拠しているデスクトップエントリ仕様のバージョン<br />
Name=jMemorize # アプリケーションの名前<br />
Comment=Flash card based learning tool # コメントはツールチップとして使われます<br />
Path=/opt/jmemorise # 実行ファイルが存在するフォルダのパス<br />
Exec=jmemorize # アプリケーションの実行可能ファイル<br />
Icon=jmemorize # エントリを表示するときに使われるアイコンの名前<br />
Terminal=false # アプリケーションをターミナルで実行する必要があるかどうかを記述<br />
Categories=Education;Languages;Java; # エントリを表示するカテゴリを記述<br />
<br />
=== キーの定義 ===<br />
<br />
[https://standards.freedesktop.org/desktop-entry-spec/latest/ar01s05.html freedesktop.org のサイト] にデスクトップが認識する全てのデスクトップエントリが記載されています。例えば、{{Ic|Type}} キーは3つのタイプのデスクトップエントリを定義します: アプリケーション (Application, タイプ1), リンク (Link, タイプ2), ディレクトリ (Directory, タイプ3)。<br />
<br />
* {{Ic|Version}} キーはアプリケーションのバージョンを表すものではなく、デスクトップエントリが準拠しているデスクトップエントリ規格のバージョンを指定します。<br />
<br />
* {{Ic|Name}}, {{Ic|GenericName}}, {{Ic|Comment}} はしばしば以下のように同じような値が使われることがありますが:<br />
<br />
Name=Pidgin Internet Messenger<br />
GenericName=Internet Messenger<br />
または:<br />
Name=NoteCase notes manager<br />
Comment=Notes Manager<br />
<br />
上記のような設定はユーザーを混乱させるだけなので止めてください。{{Ic|Name}} キーにはアプリケーションの名前 (あるいはその省略語や頭字語) だけを書いてください。<br />
<br />
* {{Ic|GenericName}} にはアプリケーションがどのようなものなのかを示す名称を指定します (例えば Firefox なら "Web Browser")。<br />
* {{Ic|Comment}} は何らかの追加情報を記入します。<br />
<br />
==== 非推奨 ====<br />
<br />
標準が確立されるに従って非推奨となったキーもいくつか存在しています。{{Pkg|desktop-file-utils}} パッケージに含まれている {{Ic|desktop-file-validate}} を使うのが確認するのに一番最適かつシンプルな方法です。確証するには、次を実行:<br />
$ desktop-file-validate <your desktop file><br />
上記のコマンドで詳細かつ有用な警告・エラーメッセージが表示されます。<br />
<br />
== アイコン ==<br />
<br />
=== 一般的な画像フォーマット ===<br />
<br />
以下はアイコンとしてよく使われている画像フォーマットの簡単な概要です。<br />
<br />
{| class="wikitable" align="center"<br />
|+ [https://standards.freedesktop.org/icon-theme-spec/latest/ar01s02.html freedesktop.org の仕様] で指定されているアイコンとしてサポートされる画像フォーマット<br />
! 拡張子<br />
! フルネームまたは説明<br />
! グラフィック形式<br />
! コンテナフォーマット<br />
! サポート<br />
|-<br />
!align="left" | .[[wikipedia:ja:Portable Network Graphics|png]]<br />
| Portable Network Graphics<br />
| [[wikipedia:Raster graphics|ラスタ]]<br />
| {{No}}<br />
| {{Yes}}<br />
|-<br />
!align="left" | .[[wikipedia:ja:Scalable Vector Graphics|svg(z)]]<br />
| Scalable Vector Graphics<br />
| [[wikipedia:Vector graphics|ベクタ]]<br />
| {{No}}<br />
| {{G|Yes (オプション)}}<br />
|-<br />
!align="left" | .[[wikipedia:X PixMap|xpm]]<br />
| X PixMap<br />
| [[wikipedia:Raster graphics|ラスタ]]<br />
| {{No}}<br />
| {{Y|Yes (非推奨)}}<br />
|-<br />
!align="left" | .[[wikipedia:Graphics Interchange Format|gif]]<br />
| Graphics Interchange Format<br />
| [[wikipedia:Raster graphics|ラスタ]]<br />
| {{No}}<br />
| {{No}}<br />
|-<br />
!align="left" | .[[wikipedia:ICO (icon image file format)|ico]]<br />
| MS Windows Icon Format<br />
| [[wikipedia:Raster graphics|ラスタ]]<br />
| {{Yes}}<br />
| {{No}}<br />
|-<br />
!align="left" | .[[wikipedia:Apple Icon Image|icns]]<br />
| Apple Icon Image<br />
| [[wikipedia:Raster graphics|ラスタ]]<br />
| {{Yes}}<br />
| {{No}}<br />
|-<br />
|}<br />
<br />
=== アイコンの変換 ===<br />
<br />
(''gif'' や ''ico'' など) freedesktop.org の仕様でサポートされていないフォーマットのアイコンしか見つからなかった場合、''convert'' でサポート/推奨されているフォーマットに変換できます (''convert'' は {{Pkg|imagemagick}} パッケージに含まれています):<br />
$ convert <icon name>.gif <icon name>.png<br />
''ico'' などのコンテナフォーマットから変換した場合、''<icon name>-<number>.png'' という名前で ''ico'' ファイルにカプセル化されていた画像が取得できます。画像のサイズや ''ico'' などのコンテナに含まれている画像の数を調べたいときは ({{Pkg|imagemagick}} パッケージに含まれている) ''identify'' を使います:<br />
{{hc|$ identify /usr/share/vlc/vlc48x48.ico|<br />
/usr/share/vlc/vlc48x48.ico[0] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb<br />
/usr/share/vlc/vlc48x48.ico[1] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb<br />
/usr/share/vlc/vlc48x48.ico[2] ICO 128x128 128x128+0+0 8-bit DirectClass 84.3kb<br />
/usr/share/vlc/vlc48x48.ico[3] ICO 48x48 48x48+0+0 8-bit DirectClass 84.3kb<br />
/usr/share/vlc/vlc48x48.ico[4] ICO 32x32 32x32+0+0 8-bit DirectClass 84.3kb<br />
/usr/share/vlc/vlc48x48.ico[5] ICO 16x16 16x16+0+0 8-bit DirectClass 84.3kb<br />
}}<br />
上記の ''ico'' ファイルでは、ファイル名からは 48x48 の画像しか含まれていないように見えますが、実は6つのサイズの画像が含まれていて、中には 48x48 よりも大きな 128x128 の画像もあります。<br />
<br />
=== アイコンの取得 ===<br />
<br />
大抵 .desktop ファイルが付属しているパッケージにはアイコンが含まれていますが、アイコンは存在するのに .desktop ファイルが開発者によって作られていない場合もあります。まずはソースパッケージの中にアイコンが存在しないか確認すると良いでしょう。ソースパッケージの中に大量の画像が存在するときは、'''find''' を使って拡張子でファイルを絞り込んで、それから '''grep''' を使ってパッケージ名や "icon" あるいは "logo" などのキーワードで検索をかけましょう:<br />
$ find /path/to/source/package -regex ".*\.\(svg\|png\|xpm\|gif\|ico\)$"<br />
アプリケーションの開発者がソースパッケージにアイコンを含めていないときは、アプリケーションのウェブサイトを検索しましょう。''tvbrowser'' など、プロジェクトによってはウェブサイトに [http://enwiki.tvbrowser.org/index.php/Banners,_Logos_and_other_Promotion_Material アートワーク/ロゴのページ] が存在しアイコンをダウンロードすることができます。プロジェクトがマルチプラットフォームの場合、Linux/UNIX パッケージにアイコンが付属していなくても、Windows パッケージには存在する可能性があります。プロジェクトが CVS や SVN などの[[wikipedia:Version control system|バージョン管理システム]]を使用している場合、リポジトリにアイコンが存在しないか確認してください。どうやっても見つからないのであれば、プロジェクトにまだアイコンやロゴがないのかもしれません。<br />
<br />
== ツール ==<br />
<br />
=== gendesk ===<br />
{{Pkg|gendesk}} は PKGBUILD ファイルから直接情報を取得して .desktop ファイルを生成する Arch Linux 専用のツールとして開発がスタートしました。今ではコマンドライン引数を使用する汎用のツールとなっています。<br />
<br />
アイコンは [http://openiconlibrary.sourceforge.net/ openiconlibrary] から自動的にダウンロードすることが可能です (アイコンのソースは将来変更される可能性があります)。<br />
<br />
==== 使用方法 ====<br />
<br />
* {{Ic|gendesk}} を makedepends に追加<br />
<br />
* {{Ic|prepare()}} 関数に以下を記入:<br />
<br />
{{bc|gendesk --pkgname "$pkgname" --pkgdesc "$pkgdesc"}}<br />
<br />
* もしくは、アイコンが既に含まれている場合 (例: $pkgname.png)、{{Ic|-n}} フラグを使います。例:<br />
<br />
{{bc|gendesk -n --pkgname "$pkgname" --pkgdesc "$pkgdesc"}}<br />
<br />
* 作成された {{Ic|$srcdir/$pkgname.desktop}} は {{Ic|package()}} 関数でインストールします:<br />
<br />
{{bc|install -Dm644 "$pkgname.desktop" "$pkgdir/usr/share/applications/$pkgname.desktop"}}<br />
<br />
* アイコンをインストールするには:<br />
<br />
{{bc|install -Dm644 "$pkgname.png" "$pkgdir/usr/share/pixmaps/$pkgname.png"}}<br />
<br />
* {{Ic|1=--name='Program Name'}} でメニューエントリの名前を決めることができます。<br />
<br />
* {{Ic|1=--exec='/opt/some_app/elf --with-ponies'}} で exec フィールドを設定することができます。<br />
<br />
* 詳しくは [https://github.com/xyproto/gendesk gendesk プロジェクト] を参照。<br />
<br />
=== *.desktop ファイルから検索 ===<br />
<br />
{{AUR|lsdesktopf}} bash スクリプトは "Categories" や "Exec" の中身を検索します。"Categories" が存在しないときは "Name" の中身を使います。*.desktop のコマンドラインやカテゴリを使って利用可能なプログラムをコンソールで簡単に確認することが可能です。"DskPath" 配列で定義された既存のベースパスをカラーで表示します。<br />
<br />
例:<br />
# lsdesktopf<br />
# lsdesktopf game<br />
# lsdesktopf gtk<br />
<br />
=== fbrokendesktop ===<br />
<br />
{{AUR|fbrokendesktop}} bash スクリプトは "which" コマンドを使って既存のパスに存在しない Exec を指定していないか確認します。パラメータを指定しなかった場合、fbrokendesktop は "DskPath" 配列のプリセットフォルダを使います。破損している *.desktop だけを表示します。<br />
<br />
例:<br />
<br />
# fbrokendesktop<br />
# fbrokendesktop /usr<br />
# fbrokendesktop /usr/share/apps/kdm/sessions/icewm.desktop<br />
<br />
== ヒントとテクニック ==<br />
<br />
=== デスクトップエントリの隠匿 ===<br />
<br />
{{Tip|デスクトップエントリは {{ic|/dev/null}} へのシンボリックリンクを作成することで隠匿できます。例えば: {{ic|$ ln -s /dev/null ~/.local/share/applications/''foo''.desktop}}。}}<br />
<br />
まず、問題のデスクトップエントリファイルを {{ic|~/.local/share/applications}} にコピーして、変更が上書きされないようにして下さい。<br />
<br />
次に、全ての環境でエントリが表示されないようにするには、デスクトップエントリファイルをテキストエディタで開いて次の行を追加します: {{ic|NoDisplay&#61;true}}。<br />
<br />
特定のデスクトップでエントリが表示されないようにするには、デスクトップエントリファイルに次の行を追加します: {{ic|NotShowIn&#61;''desktop-name''}}。<br />
<br />
''desktop-name'' は ''GNOME'', ''Xfce'', ''KDE'' などに置き換えて下さい。複数のデスクトップでデスクトップエントリを隠匿することもできます。デスクトップの名前をセミコロンで区切って複数指定して下さい。<br />
<br />
=== 自動起動 ===<br />
<br />
GNOME や KDE など XDG 互換のデスクトップ環境を使っている場合、デスクトップ環境は以下のディレクトリにある {{ic|*.desktop}} ファイルを自動的に起動します:<br />
<br />
* システム全体: {{ic|$XDG_CONFIG_DIRS/autostart/}} (デフォルトでは {{ic|/etc/xdg/autostart/}})<br />
:* GNOME は {{ic|/usr/share/gnome/autostart/}} にあるファイルも起動します。<br />
* ユーザー個別: {{ic|$XDG_CONFIG_HOME/autostart/}} (デフォルトでは {{ic|~/.config/autostart/}})<br />
<br />
システム全体の {{ic|*.desktop}} ファイルをユーザー個別の {{ic|~/.config/autostart/}} フォルダにコピーすることで上書きすることができます。<br />
<br />
デスクトップファイルの仕様については [https://standards.freedesktop.org/desktop-entry-spec/latest/ Desktop Entry Specification] を参照してください。ディレクトリの詳しい説明は [https://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html Desktop Application Autostart Specification] を見て下さい。 <br />
<br />
{{Note|この方法は XDG 互換のデスクトップ環境でしか使えません。サポートされていないデスクトップ環境では {{AUR|dapper}}, {{pkg|dex}}, {{AUR|fbautostart}} などのツールを使うことで XDG の自動起動を行うようにすることができます。ただし、それには他の自動起動の手段が必要です。その手段を使って XDG 互換の自動起動ツールを実行して下さい。}}<br />
<br />
=== 環境変数の修正 ===<br />
<br />
{{ic|env}} を追加するように {{ic|Exec}} コマンドを編集します。例:<br />
<br />
{{hc|~/.local/share/applications/abiword.desktop|2=<br />
Exec=env LANG=he_IL.UTF-8 abiword %U<br />
}}<br />
<br />
== 参照 ==<br />
<br />
* [[en2:DeveloperWiki:Removal of desktop files|DeveloperWiki:Removal of desktop files]]<br />
* [[Wikipedia:.desktop|desktop wikipedia article]]<br />
* [https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#recognized-keys recognized desktop entry keys]<br />
* [https://freedesktop.org/wiki/Specifications/desktop-entry-spec freedesktop.org desktop entry specification]<br />
* [https://freedesktop.org/wiki/Specifications/icon-theme-spec freedesktop.org icon theme specification]<br />
* [https://freedesktop.org/wiki/Specifications/menu-spec freedesktop.org menu specification]<br />
* [https://freedesktop.org/wiki/Specifications/basedir-spec freedesktop.org basedir specification]<br />
* [https://freedesktop.org/wiki/Howto_desktop_files information for developers]</div>
Buzztaiki