После потери любимой установки Gentoo, которой я пользовался более 5 лет, из-за аппаратного сбоя я перешел на FreeBSD. Я чувствовал, что это следующий логический шаг в моем исследовании и использовании операционных систем на основе исходного кода. Читая всесопутствующая документация для FreeBSD, при установке XOrg Server,5.6 - Использование шрифтов в разделе XOrgпривлекло мое внимание. Осознав, что я не добавил строку:
Section "Files"
FontPath "/usr/share/fonts/...."
EndSection
для любых шрифтов в моей установке Gentoo, теперь я понимаю, почему мой DE выглядел как дерьмо. Будучи инвалидом-машинистом, мне сложнее редактировать вручную Files Section
, и я бы предпочел добавлять шрифты вручную в качестве крайней меры. Таким образом, есть ли способ добавить вывод в fc-list : file
раздел файлов, xorg.conf
используя либо инструмент, созданный кем-то, который я еще не нашел, либо какой-нибудь причудливый скрипт оболочки и т. д., который читатели здесь так хорошо умеют создавать?
Примечание: Я использую nvidia-xconfig
для генерации своего xorg.conf
файла, поэтому это далеко от модульного подхода, рекомендуемого в настоящее время. Могу ли я смешивать и сопоставлять подход conf.d с сгенерированной конфигурацией, если это необходимо?
решение1
Если я правильно понял вопрос, и у вас в системе установлен vim (это vi
тоже может сработать, так как это всего лишь ex
команды),
запуск следующей команды в терминале приведет к следующему:
- прочитайте в файле:
xorg.conf
- очевидно замените это на файл, который вы хотите изменить. Примечание: этот файлxorg.conf
будетнетбыть изменены на случай, если что-то пойдет не так со сценарием. - выполнить некоторые текстовые манипуляции
- Вывод команд будет помещен в файл:
/tmp/temp_xorg.conf
Если после этих операций вы удовлетворены состоянием, /tmp/temp_xorg.conf
вы можете скопировать его в место расположения вашего реального, рабочего файла конфигурации xorg.
выполните команды
запустите эту команду в командной строке, чтобы создать каталоги fontpaths в формате, который можно поместить в файл конфигурации xorg (спасибо @meuh за эту команду).
fc-list : file | sed -E 's#(.*)/.*#\tFontPath "\1"#' | sort -u > /tmp/filepaths.txt
затем выполните эту команду, которая возьмет вывод вышеуказанной команды и вставит его в разделы «Файлы»
$ vim -e xorg.conf << 'EOF'
" move cursor to the line with the text: `Section "Files"`
/Section "Files"
" read in the output of `fc-list` at this point
r !fc-list
write /tmp/temp_xorg.conf
EOF
так, например, если бы xorg.conf
это выглядело так:
Section "InputClass"
Identifier "trackpoint catchall"
MatchIsPointer "true"
MatchProduct "TrackPoint|DualPoint Stick"
MatchDevicePath "/dev/input/event*"
Option "Emulate3Buttons" "true"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
Section "Files"
Identifier "trackpoint catchall"
MatchIsPointer "true"
MatchProduct "TrackPoint|DualPoint Stick"
MatchDevicePath "/dev/input/event*"
Option "Emulate3Buttons" "true"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
Section "InputClass"
Identifier "trackpoint catchall"
MatchIsPointer "true"
MatchProduct "TrackPoint|DualPoint Stick"
MatchDevicePath "/dev/input/event*"
Option "Emulate3Buttons" "true"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
После выполнения указанной выше команды результат /tmp/temp_xorg.conf
должен выглядеть следующим образом:
Section "InputClass"
Identifier "trackpoint catchall"
MatchIsPointer "true"
MatchProduct "TrackPoint|DualPoint Stick"
MatchDevicePath "/dev/input/event*"
Option "Emulate3Buttons" "true"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
Section "Files"
FontPath "/home/ubuntu/.fonts"
FontPath "/usr/share/fonts/opentype/noto"
FontPath "/usr/share/fonts/opentype/stix"
FontPath "/usr/share/fonts/opentype/stix-word"
FontPath "/usr/share/fonts/truetype"
FontPath "/usr/share/fonts/truetype/abyssinica"
FontPath "/usr/share/fonts/truetype/ancient-scripts"
FontPath "/usr/share/fonts/truetype/dejavu"
FontPath "/usr/share/fonts/truetype/fonts-guru-extra"
FontPath "/usr/share/fonts/truetype/freefont"
FontPath "/usr/share/fonts/truetype/kacst"
FontPath "/usr/share/fonts/truetype/kacst-one"
FontPath "/usr/share/fonts/truetype/lao"
FontPath "/usr/share/fonts/truetype/lato"
FontPath "/usr/share/fonts/truetype/liberation"
FontPath "/usr/share/fonts/truetype/lohit-punjabi"
FontPath "/usr/share/fonts/truetype/nanum"
FontPath "/usr/share/fonts/truetype/openoffice"
FontPath "/usr/share/fonts/truetype/padauk"
FontPath "/usr/share/fonts/truetype/sinhala"
FontPath "/usr/share/fonts/truetype/takao-gothic"
FontPath "/usr/share/fonts/truetype/tibetan-machine"
FontPath "/usr/share/fonts/truetype/tlwg"
FontPath "/usr/share/fonts/truetype/ttf-khmeros-core"
FontPath "/usr/share/fonts/truetype/ubuntu-font-family"
FontPath "/usr/share/fonts/type1/gsfonts"
FontPath "/usr/share/fonts/X11/Type1"
Identifier "trackpoint catchall"
MatchIsPointer "true"
MatchProduct "TrackPoint|DualPoint Stick"
MatchDevicePath "/dev/input/event*"
Option "Emulate3Buttons" "true"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
Section "InputClass"
Identifier "trackpoint catchall"
MatchIsPointer "true"
MatchProduct "TrackPoint|DualPoint Stick"
MatchDevicePath "/dev/input/event*"
Option "Emulate3Buttons" "true"
Option "EmulateWheel" "true"
Option "EmulateWheelButton" "2"
Option "XAxisMapping" "6 7"
Option "YAxisMapping" "4 5"
EndSection
решение2
Что касается части вопроса «смешивать и сочетать» — ответ будет «вроде того».
На странице xorg.conf
руководства источники конфигурации перечислены в порядке приоритета и указано: «Когда одна и та же информация предоставляется несколькими способами, используется механизм с наивысшим приоритетом».
По наблюдениям (поскольку "та же информация" и "более одного способа" четко не определены в man-странице, на мой взгляд), это означает, что вы не можете переопределить/обновить раздел в xorg.conf
(например, Section "Files"
для шрифтов) файлом, xorg.conf.d
поскольку он имеет более низкий приоритет. Хотя файлы с более низким приоритетом читаются и анализируются, содержимое раздела молча игнорируется для тех разделов, которые уже существуют с более высоким приоритетом.
Текущий драйвер Nvidia (396, только для Linux)делаеттеперь используйте xorg.conf.d
фрагмент, но только для драйвера Linux DRM Xorg, он по-прежнему создает почти монолитный файл xorg.conf
во время установки.
К счастью, nvidia-xconfig
не меняет этот раздел, так что если это поможет, вы можете закомментировать его xorg.conf
и перенести в один или несколько xorg.conf.d
файлов. Несколько дублирующих разделов с одинаковым приоритетом, т. е. все в одном xorg.conf.d
каталоге,делаетв результате получаются объединенные значения, как и ожидалось.
Простой способ создания директив:
fc-list -f 'Fontpath "%{file|dirname}"\n' : | sort -u
Это использует форматированный вывод ( -f
) fc-list
для создания требуемых строк конфигурации, %{file}
это имя файла каждого шрифта, |dirname
этофильтркоторый выводит имя каталога (точно так же, как dirname
команда shell), затем sort -u
для уникальных путей. Вы можете захотеть изменить порядок путей, если у вас много шрифтов, если у вас есть версии bitmap, вы можете сделать что-то вроде этого, чтобы изменить порядок:
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=true | sort -u
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=false | sort -u
Вы можете вставить этот вывод по мере необходимости - или - как пример всех шагов (как root)
# extract Files section from xorg.conf to a separate conf
sed -n '/^Section..Files/,/^EndSection/p' \
< /etc/X11/xorg.conf > /etc/x11/xorg.conf.d/10-section-files.conf
# comment out Files section in xorg.conf
sed -i.bak '/^Section..Files/,/^EndSection/ s/^/#/' /etc/X11/xorg.conf
# paths for scalable fonts
( echo 'Section "Files"';
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=true | sort -u;
echo 'EndSection' ) > /etc/X11/xorg.conf.d/20-fontpath.conf
# paths for non-scalable fonts
( echo 'Section "Files"';
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=False | sort -u;
echo 'EndSection' ) > /etc/X11/xorg.conf.d/30-fontpath-fixed.conf
При необходимости измените порядок и удалите дубликаты, а затем перезапустите X.
Для полноты картины вы также можете изменять пути к шрифтам «на лету» xset
, например:
xset +fp /usr/local/share/fonts/TTF
Проверьте текущие пути с помощью xset q
. Вы можете легко изменить это, чтобы добавить такие команды в свой .xinitrc
скрипт, чтобы пути к шрифтам сохранялись независимо от любых последующих изменений конфигурации X, и также не перезапускать X.