xtermフォントを変更するには?

xtermフォントを変更するには?

.Xresourcesファイルを作成し、ここに次のコードを追加しました(コードが多いため一部のみを表示します)。

XTerm*font:*-terminus-medium-r-normal-*-16-*-*-*-*-*-koi8-r 
XTerm*eightBitInput: false
XTerm*utf8: 1
XTerm*locale: 1

! Fonts ====================================================
! set font and fontsize
XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 16

! VT Font Menu: Unreadable
xterm*faceSize1: 8
! VT font menu: Tiny
xterm*faceSize2: 10
! VT font menu: Medium
xterm*faceSize3: 12
! VT font menu: Large
xterm*faceSize4: 16
! VT font menu: Huge
xterm*faceSize5: 22


! Ensure that your locale is set up for UTF-8. If you do not use UTF-8, you may need to force xterm to more strictly follow your locale by setting
XTerm.vt100.locale: true
...
XTerm.vt100.translations: #override \n\
    Ctrl <Key> minus: smaller-vt-font() \n\
    Ctrl <Key> plus: larger-vt-font() \n\
    Ctrl <Key> 0: set-vt-font(d) \n\
    Ctrl Shift <Key>C: copy-selection(CLIPBOARD) \n\
    Ctrl Shift <Key>V: insert-selection(CLIPBOARD) \n\
    Shift <Btn1Up>: exec-formatted("xdg-open '%t'", PRIMARY) \n\
    <Btn1Up>: select-end(PRIMARY, CLIPBOARD, CUT_BUFFER0) \n\
    <Btn2Up>: insert-selection(PRIMARY)
...
*background: #002b36
*foreground: #657b83
!!*fading: 40
*fadeColor: #002b36
*cursorColor: #93a1a1
*pointerColorBackground: #586e75
*pointerColorForeground: #93a1a1
...

このテキストはYouTube動画からコピーされたので、どういう意味なのかわかりません。次に、.xinitrcに次の行を追加しました。

[[ -f ~/.Xresources ]] && xrdb -merge -I$HOME ~/.Xresources
exec i3

xtermは背景色を変更しますが(.Xresourcesで指定されているように)、フォントは変更されず、ショートカットは機能しません。 ctrl + rmouseを使ってフォントサイズを変更してみましたが、オプションを選択しても何も変わりません。しかし、xtermを起動すると

xterm-fn-終了-中間-R-正常--16-----*-koi8-r

フォントが変更されます。私は何が間違っていましたか?

  • xorg、xterm、i3wmでアーチを使用します。

答え1

例では、xterm は TrueType フォントを使用します。 xtermには、実行時にVT100ウィジェットの値を設定するための(まれに使用される)ウィジェットメソッドがありますが、これにはTrueTypeフォントは含まれません。

バラよりVTSetValuesソースコードから:

    if (xtermLoadFont(newvt,
              xtermFontName(TScreenOf(newvt)->MenuFontName(TScreenOf(curvt)->menu_font_number)),
              True, TScreenOf(newvt)->menu_font_number)) {
        /* resizing does the redisplay, so don't ask for it here */
        refresh_needed = True;
        fonts_redone = True;
    } else if (strcmp(NonNull(DefaultFontN(curvt)), NonNull(DefaultFontN(newvt)))) {
        TScreenOf(newvt)->MenuFontName(fontMenu_default) = DefaultFontN(curvt);
    }

ビットマップフォント(XLFD)で動作しない場合

  • バグレポートが作成された場合、またはTrueTypeフォントが表示されているとおりに使用されている場合
  • 機能要求が考慮される場合があります。

(StackExchangeもこの議論に適した場所ではありません)。

この作品

XTerm*font:*-terminus-medium-r-normal-*-16-*-*-*-*-*-koi8-r 
XTerm*eightBitInput: false
XTerm*utf8: 1
XTerm*locale: 1

! Fonts ====================================================
! set font and fontsize
XTerm*faceName: DejaVu Sans Mono
XTerm*faceSize: 16

「Fonts==」の前に行を追加したことを意味しているようです。しかし、faceNameリソース範囲fontマンページで説明されているリソース:

そうでない場合faceNameリソースが指定されているか一致しません。TrueTypextermで使用される一般的なフォントと太字のフォントXLFD (ビットマップ)フォントと関連リソース。

「faceName」を含む行を削除すると、競合が削除されます。

または、設定する行を追加できます。renderFont次のリソース

*renderFont: false

関連情報