Depois de perder minha amada instalação do Gentoo há mais de 5 anos devido a uma falha de hardware, fui para o FreeBSD. Achei que este era o próximo passo lógico na minha exploração e uso de sistemas operacionais baseados em código-fonte. Ao ler todos osdocumentação associada para FreeBSD, durante a instalação do XOrg Server, o5.6 - Usando fontes na seção XOrgPegou minha atenção. Tendo percebido que nunca adicionei a linha:
Section "Files"
FontPath "/usr/share/fonts/...."
EndSection
para qualquer fonte na minha instalação do Gentoo, agora entendo porque meu DE parecia uma porcaria. Ser um digitador com uma mão deficiente torna mais difícil para mim editar manualmente Files Section
, e eu preferiria adicionar fontes manualmente como último recurso. Como tal, existe uma maneira de adicionar a saída fc-list : file
à seção de arquivos xorg.conf
usando uma ferramenta criada por alguém que ainda não encontrei ou algum script de shell sofisticado, etc., que os leitores aqui são tão bons em criar?
Observação: eu uso nvidia-xconfig
para gerar meu xorg.conf
arquivo, então está longe da abordagem modular recomendada hoje em dia. Posso misturar e combinar a abordagem conf.d com a configuração gerada, se necessário?
Responder1
Se estou entendendo a pergunta e você tem o vim instalado no sistema (isso vi
também pode funcionar, pois são apenas ex
comandos)
Executar o comando abaixo em um terminal:
- leia no arquivo:
xorg.conf
- obviamente substitua pelo arquivo que você deseja modificar. Nota: este arquivoxorg.conf
seránãoser modificado, caso algo dê errado com o script. - faça alguma manipulação de texto
- a saída dos comandos será colocada no arquivo:
/tmp/temp_xorg.conf
Se após essas operações você estiver satisfeito com o estado, /tmp/temp_xorg.conf
poderá copiá-lo para o local do seu arquivo de configuração xorg real e funcional.
execute os comandos
execute isso em um prompt do shell para produzir diretórios fontpaths que estão em um formato que pode ser inserido em um arquivo conf xorg (graças a @meuh por este comando).
fc-list : file | sed -E 's#(.*)/.*#\tFontPath "\1"#' | sort -u > /tmp/filepaths.txt
em seguida, execute este comando, que pegará a saída do comando acima e a inserirá nas seções "Arquivos"
$ 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
então se, por exemplo, xorg.conf
fosse assim:
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
Após executar o comando acima /tmp/temp_xorg.conf
deverá ficar assim:
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
Responder2
Para a parte de configuração "misturar e combinar" da pergunta - a resposta é "mais ou menos".
A xorg.conf
página man lista as fontes de configuração em ordem de precedência e afirma "Quando a mesma informação é fornecida de mais de uma maneira, o mecanismo de precedência mais alta é usado".
Por observação (já que "mesmas informações" e "mais de uma maneira" não estão claramente definidas na página de manual, na minha opinião), isso significa que você não pode substituir/atualizar uma seção xorg.conf
(como Section "Files"
para fontes) por um xorg.conf.d
arquivo, pois isso tem menor precedência. Embora os arquivos de precedência mais baixa sejam lidos e analisados, o conteúdo da seção é silenciosamente desconsiderado para aquelas seções que já existem com precedência mais alta.
O driver atual da Nvidia (396, somente no Linux)fazagora use um xorg.conf.d
fragmento, mas apenas para o driver Linux DRM Xorg, ele ainda cria um quase monolítico xorg.conf
durante a instalação.
Felizmente, nvidia-xconfig
isso não altera esta seção; portanto, se ajudar, você pode comentá-la xorg.conf
e migrá-la para um ou mais xorg.conf.d
arquivos. Múltiplas seções duplicadas na mesma precedência, ou seja, todas dentro de um único xorg.conf.d
diretório,fazresultar em valores mesclados conforme esperado.
Uma maneira fácil de gerar as diretivas é:
fc-list -f 'Fontpath "%{file|dirname}"\n' : | sort -u
Isso usa a saída formatada ( -f
) de fc-list
para criar as linhas de configuração necessárias, %{file}
é o nome do arquivo de cada fonte, |dirname
é umfiltroque gera o nome do diretório (exatamente como o dirname
comando shell) e, em seguida, sort -u
para caminhos exclusivos. Você pode querer reordenar os caminhos se tiver muitas fontes; se tiver versões de bitmap, você pode fazer algo assim para reordenar:
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=true | sort -u
fc-list -f ' Fontpath "%{file|dirname}"\n' :scalable=false | sort -u
Você pode colar essa saída conforme necessário - ou - como exemplo de todas as etapas (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 e remova duplicatas, se necessário, e reinicie o X.
Para completar, você também pode modificar os caminhos das fontes rapidamente com xset
, por exemplo
xset +fp /usr/local/share/fonts/TTF
Verifique os caminhos atuais com xset q
. Você pode modificar isso trivialmente para adicionar tais comandos ao seu .xinitrc
script para que os caminhos das fontes persistam independentemente de quaisquer alterações subsequentes na configuração do X e evite reiniciar o X também.