Después de perder mi querida instalación de Gentoo de más de 5 años debido a una falla de hardware, fui a FreeBSD. Sentí que este era el siguiente paso lógico en mi exploración y uso de sistemas operativos basados en código fuente. Al leer todos losdocumentación asociada para FreeBSD, al instalar el servidor XOrg, el5.6 - Uso de fuentes en la sección XOrgllamó mi atención. Al darme cuenta, nunca agregué la línea:
Section "Files"
FontPath "/usr/share/fonts/...."
EndSection
para cualquier fuente en mi instalación de Gentoo, ahora entiendo por qué mi DE parecía una mierda. Ser un mecanógrafo discapacitado con una sola mano hace que me resulte más difícil editar a Files Section
mano y preferiría agregar fuentes a mano como último recurso. Como tal, ¿hay alguna manera de agregar el resultado fc-list : file
a la Sección de Archivos xorg.conf
usando una herramienta que alguien creó y que aún no he encontrado, o algún script de shell sofisticado, etc., que los lectores aquí son tan buenos creando?
Nota: Lo uso nvidia-xconfig
para generar mi xorg.conf
archivo, por lo que está lejos del enfoque modular recomendado hoy en día. ¿Puedo mezclar y combinar el enfoque conf.d con la configuración generada si es necesario?
Respuesta1
Si entiendo la pregunta y tiene vim instalado en el sistema (esto vi
también podría funcionar, ya que estos son solo ex
comandos),
ejecutar el siguiente comando en una terminal:
- lea en el archivo:
xorg.conf
- obviamente reemplace esto con el archivo que desea modificar. Nota: estexorg.conf
archivonomodificarse, en caso de que algo salga mal con el script. - hacer alguna manipulación de texto
- la salida de los comandos se colocará en el archivo:
/tmp/temp_xorg.conf
Si después de estas operaciones está satisfecho con el estado, /tmp/temp_xorg.conf
puede copiarlo a la ubicación de su archivo de configuración xorg real y funcional.
ejecutar los comandos
ejecute esto en el símbolo del shell para generar directorios de rutas de fuentes que estén en un formato que pueda ir en un archivo de configuración xorg (gracias a @meuh por este comando).
fc-list : file | sed -E 's#(.*)/.*#\tFontPath "\1"#' | sort -u > /tmp/filepaths.txt
luego ejecute este comando, que tomará el resultado del comando anterior y lo insertará en las secciones "Archivos"
$ 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
Entonces, si por ejemplo, xorg.conf
se viera así:
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
Después de ejecutar el comando anterior /tmp/temp_xorg.conf
debería verse así:
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
Respuesta2
Para la parte de configuración de la pregunta "mezclar y combinar", la respuesta es "más o menos".
La xorg.conf
página de manual enumera las fuentes de configuración en orden de prioridad y dice "Cuando la misma información se proporciona de más de una manera, se utiliza el mecanismo de mayor prioridad".
Por observación (dado que "misma información" y "más de una forma" no están claramente definidos en la página de manual, en mi opinión), esto significa que no puede anular/actualizar una sección xorg.conf
(como Section "Files"
para las fuentes) con un xorg.conf.d
archivo desde ese tiene menor precedencia. Aunque se leen y analizan los archivos de prioridad más baja, el contenido de las secciones se ignora silenciosamente para aquellas secciones que ya existen con una prioridad más alta.
El controlador Nvidia actual (396, solo en Linux)haceAhora use un xorg.conf.d
fragmento, pero solo para el controlador DRM Xorg de Linux, todavía crea un fragmento casi monolítico xorg.conf
durante la instalación.
Afortunadamente, nvidia-xconfig
esta sección no cambia, por lo que si te ayuda, puedes comentarla xorg.conf
y migrarla a uno o más xorg.conf.d
archivos. Varias secciones duplicadas con la misma precedencia, es decir, todas dentro de un único xorg.conf.d
directorio,hacedar como resultado valores fusionados como se esperaba.
Una forma sencilla de generar las directivas es:
fc-list -f 'Fontpath "%{file|dirname}"\n' : | sort -u
Esto utiliza la salida formateada ( -f
) fc-list
para crear las líneas de configuración requeridas, %{file}
es el nombre de archivo de cada fuente, |dirname
es unfiltrarque genera el nombre del directorio (exactamente como el dirname
comando de shell), luego sort -u
rutas únicas. Es posible que desees reordenar las rutas si tienes muchas fuentes; si tienes versiones de mapa de bits, puedes hacer algo como esto para reordenar:
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=true | sort -u
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=false | sort -u
Puede pegar ese resultado según sea necesario, o bien, como ejemplo de todos los pasos (como 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
Reordene y elimine duplicados si es necesario y reinicie X.
Para completar, también puede modificar las rutas de las fuentes sobre la marcha con xset
, por ejemplo
xset +fp /usr/local/share/fonts/TTF
Verifique las rutas actuales con xset q
. Podría modificar esto trivialmente para agregar dichos comandos a su .xinitrc
secuencia de comandos, de modo que las rutas de fuentes persistan independientemente de cualquier cambio posterior en la configuración de X, y ahorre reiniciar X también.