有没有办法将更改(例如字体(大小))应用于.Xdefaults
会话中所有正在运行的终端?
我可以通过加载 xrdb -load .Xdefaults 将其应用到新终端,但这并不适用于所有正在运行的终端。
如果重要的话,我在 ubuntu 15.10 上使用 urxvt (守护进程模式)作为终端,使用 xmonad 作为窗口管理器。
只是对于字体大小,我有一个想法,可以使用 fontsize 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事实上,有一个——editres——但是谁听说过editres?没有人,就是那个人。