Zsh 圖示在 urxvt 中損壞
所以我目前正在使用 manjaro linux,並且我使用 urxvt 作為我喜歡的終端,所以在這一切開始之前切換終端不是一個選項,如果我很粗魯,對不起。
我將 zsh 作為我的預設 shell 安裝到它,並通過 oh-my-zsh 添加了主題 robbyrussell。起初一切都很好,一切正常,但更新後我的圖示壞了。特別是(如果您熟悉主題)箭頭圖示壞了,並且與所有其他主題中的所有圖示相同。
此問題僅發生在 urxvt 上,因為當我嘗試使用其他終端(例如 sterminal)時,主題有效。
您可以在此處看到一些螢幕截圖這是它應該看起來的樣子(從 sterminal 截取的螢幕截圖)
這就是它的外觀(從 rxvt 截取的螢幕截圖)
我一直在 reddit、github repos(如 oh-my-zsh 和 robbyrussell officiall repo)尋求幫助,但似乎沒有人幫助我,所以我真的希望你們能給我幫助。
以下是有關我的作業系統和終端的一些資訊:
URXVT Version 9.22 Operating System : Manjaro i3 4.12.24-1 No Desktop Envoirment i3wm as window manager
我正在為我的 zshrc 文件使用預設的 oh-my-zsh 配置和來自 manjaro i3 的預設 Xreources,您可以在此處找到。如果您需要更多資訊,請告訴我。任何幫助將不勝感激!
首先,終端類型 rxvt 和 unicode-rxvt(通常縮寫為 urxvt)之間存在顯著差異。您已經指出您使用的終端是“URXVT Version 9.22”,因此為避免混淆,請使用正確的名稱,而不是 rxvt,而是 urxvt。
正如 Mikel 所指出的,Xresources 文件告訴 urxvt 使用 9x15 字型,這是 (a) 舊式 X11 伺服器提供的字型方法和 (b) 能力有限的點陣圖字型。
oh-my-zsh Github README 文件解釋
許多主題需要安裝電力線字型才能正確呈現
因此,為了顯示正確的箭頭形狀,您需要讓終端使用適當的字型。也許您破壞該功能的更新是重置 urxvt 字型使用的更新?
當您聲明 sterminal 正確顯示提示時,請檢查正在使用的字型,然後在驗證它與手動測試 urxvt -font “font_name” 一起使用後,更改 ${HOME} 目錄中的 .Xresources 以使用該字型。(對於 Xft 提供的字型的較新方法,font_name 前面是 “xft:",後面是 “:size=12” 字型大小)。
檢查我的 urxvt 後,似乎很多知名的 truetype 和 opentype 等寬字型不提供“右箭頭”字形,只顯示一個空框。然而,一種現成可用的標準字型(並且應該安裝在您的系統上)是 Deja Vu Sans Mono。
所以嘗試啟動一個 urxvt
urxvt -font "xft:Deja Vu Sans Mono:size=12" &
並查看您的提示是否正確顯示。
查看https://bbs.archlinux.org/viewtopic.php?id=173477以討論在 Xresources/Xdefaults 文件中修改 urxvt 的字型資源規範。
PS 不要忘記,如果您首先啟動 urxvtd 守護程序,然後使用 urxvtc 啟動終端,則可以更有效地使用多個 urxvt 終端。
附錄
感謝您確認您正在使用 urxvt 並且您已安裝 DejaVu Sans Mono。
確認在提示符下在終端中輸入的命令沒有發生字型替換
fc-match "DejaVu Sans Mono"
產生輸出
DejaVuSansMono.ttf: "DejaVu Sans Mono" "Book"
可用的字型的實際字型檔位置和样式可以通過
fc-list | grep --color 'DejaVu Sans Mono'
現在假設一切正常,您需要通過從終端的命令行啟動 urxvt 來進行檢查(抱歉,上面沒有說得很清楚,我在 Deja 和 Vu 之間有空間,這可能會導致問題)
urxvt -font "xft:DejaVu Sans Mono:size=12" &
您可以將右箭頭字元(從此處)“➜”剪切到該 urxvt 中,並且它可以正確顯示,我已經檢查過它確實有效。
我還可以確認將以下內容放入 Xresources 文件中
URxvt.font: xft:DejaVu Sans Mono:autohint=true:size=12 URxvt.boldFont: xft:DejaVu Sans Mono:autohint=true:bold:size=12 URxvt.italicFont: xft:DejaVu Sans Mono:autohint=true:italic:size=12 URxvt.boldItalicFont: xft:DejaVu Sans Mono:autohint=true:bold:italic:size=12
並使用 xrdb -merge Xresource_file_name 載入到 Xorg 伺服器資源數據庫以 100% 確定將使用這些值,然後在命令行中僅使用 urxvt 啟動終端會導致終端中字型正確顯示右箭頭字元. (您還應該注意到這種字型的特點,l 字元是捲曲的,並且在零字元的中心有一個點)。
我通常在 urxvt “Luxi Mono” 中使用的字型(更容易閱讀,恕我直言,容易上手)即使“font-manager”程序顯示“Luxi Mono”確實有字形,也不能正確顯示右箭頭。同樣,xterm 也壞了,但在 lxterminal、mate-terminal 和 xfce4-terminal 中的測試(檢查了字型設置為 Luxi Mono 的首選項)都正確顯示了右箭頭。因此,urxvt 和 xterm 中的某些字型確實出現了問題(如果我理解正確,它們共享一些程式碼來源),就像其他類似工作的字型共享一些公共程式碼即 libvte 一樣。