実行中のrxvt端末に.Xdefaultsの変更を適用します。

実行中のrxvt端末に.Xdefaultsの変更を適用します。

.Xdefaultsセッションで実行されているすべての端末にフォント(サイズ)などの変更を適用する方法はありますか?

xrdb -load .Xdefaultsをロードして新しい端末に適用できますが、実行中のすべての端末には適用されません。

重要な場合は、Ubuntu 15.10でurxvt(デーモンモード)を端末として使用し、xmonadをウィンドウマネージャとして使用しています。

フォントサイズに対してのみ、フォントサイズperl-extensionを使用して開いているすべての端末にフォントサイズの変更を注入するというアイデアがありますが、どうすればよいかわかりません。

答え1

すばやく読むと、urxvt(1)上記の要約に示すように、urxvt(7)端末rxvt-unicodeはフォントを変更できるエスケープシーケンスをサポートします。

SYNOPSIS
          # set a new font set
          printf '\33]50;%s\007' 9x15,xft:Kochi" Mincho"

これらの内容は開いているすべての端末に印刷する必要があり、これらの.Xdefaults印刷に適した形式を取得するには一部の翻訳が必要な場合があります。

答え2

すべてのプログラムが構成を再ロードする機能をサポートしているわけではありません。特に、Xリソースは通常プログラムの起動時に読み取られ、新しいリソースを使用する必要があることをアプリケーションに通知するプロトコルはありません。 Rxvtはサイズが小さい傾向があるため、起動後の設定の再読み込みをサポートしないことは驚くべきことではありません。

一部設定は動的に変更されることがあります。特に、制御シーケンスを使用してフォントを変更できます。。どこでもこれらの制御シーケンスを実行でき、出力を正しい端末デバイスにリダイレクトするだけです。

printf '\33]50;%s\007' … >/dev/pts/42

rxvtが提供する端末デバイスをリストする方法は思い出されません。プロセスが実行されているデバイスを簡単に一覧表示でき、それだけで十分です。

for pts in $(ps x -o tty= | sort -u); do
  case "$pts" in pts/*) printf … >"/dev/$pts";; esac
done

1実際、編集者という人が一人います。しかし、編集者という言葉を聞いた人は誰ですか?その人以外は誰もいません。

関連情報