Bug 53837 - ghostty: Не применяются настройки выставленные в конфиге
Summary: ghostty: Не применяются настройки выставленные в конфиге
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: ghostty (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 minor
Assignee: Nobody's working on this, feel free to take it
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-04-14 14:33 MSK by Anton Zhukharev
Modified: 2025-04-14 16:50 MSK (History)
1 user (show)

See Also:


Attachments
Ghostty startup log (1.79 KB, text/x-log)
2025-04-14 14:33 MSK, Anton Zhukharev
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Anton Zhukharev 2025-04-14 14:33:10 MSK
Created attachment 18211 [details]
Ghostty startup log

rpmquery: ghostty-1.1.3-alt1.x86_64

Не применяются вообще никакие настройки из конфига ~/.config/ghostty/config.

Однако в логе при запуске указано, что используется конфиг по этому пути
(см. лог в приложении ghostty-startup.log).

Вот пример конфига:

```
background = ffffff
foreground = 000000
selection-invert-fg-bg = true

font-family = "Consolas Nerd Font"
font-size = 16
font-style = Regular

cursor-style = block
cursor-style-blink = false

window-padding-x = 2
window-padding-y = 2

window-width = 80
window-height = 24

bold-is-bright = true
```
Comment 1 Yuri N. Sedunov 2025-04-14 14:54:20 MSK
$ cat ~/.config/ghostty/config 
background = ffffff
foreground = 000000
selection-invert-fg-bg = true

font-family = "DejaVu Sans Mono"
font-size = 16
font-style = Regular

Всё применяется. Скриншотик приложить?
Comment 2 Anton Zhukharev 2025-04-14 15:06:27 MSK
Уточнение: не работает только font-family.
Comment 3 Yuri N. Sedunov 2025-04-14 15:15:59 MSK
(Ответ для Anton Zhukharev на комментарий #2)
> Уточнение: не работает только font-family.

Наверное, ваш Consolar недостаточно хорош, или не так называется.

Попробуйте другие шрифты, УМВР.
$ grep family ~/.config/ghostty/config 
#font-family = "DejaVu Sans Mono"
font-family = "Fixedsys Excelsior 2.00"
Comment 4 Anton Zhukharev 2025-04-14 15:23:15 MSK
(In reply to Yuri N. Sedunov from comment #3)
> (Ответ для Anton Zhukharev на комментарий #2)
> > Уточнение: не работает только font-family.
> 
> Наверное, ваш Consolar недостаточно хорош, или не так называется.
> 
> Попробуйте другие шрифты, УМВР.
> $ grep family ~/.config/ghostty/config 
> #font-family = "DejaVu Sans Mono"
> font-family = "Fixedsys Excelsior 2.00"

Все названия шрифтов беру из выхлопа "ghostty +list-fonts".

И ошибка у меня, похоже, со всеми шрифтами воспроизводится. Проверил как на "Consolas Nerd Font", так и на "Liberation Mono", "DejaVu Sans Mono", "Droid Sans Mono" и "FreeMono".
Comment 5 Anton Zhukharev 2025-04-14 15:29:23 MSK
Недавно в апстриме тоже кто-то сообщил о подобном: https://github.com/ghostty-org/ghostty/discussions/7043
Comment 6 Yuri N. Sedunov 2025-04-14 15:30:19 MSK
(Ответ для Anton Zhukharev на комментарий #4)
> (In reply to Yuri N. Sedunov from comment #3)
> > (Ответ для Anton Zhukharev на комментарий #2)
> > > Уточнение: не работает только font-family.
> > 
> > Наверное, ваш Consolar недостаточно хорош, или не так называется.
> > 
> > Попробуйте другие шрифты, УМВР.
> > $ grep family ~/.config/ghostty/config 
> > #font-family = "DejaVu Sans Mono"
> > font-family = "Fixedsys Excelsior 2.00"
> 
> Все названия шрифтов беру из выхлопа "ghostty +list-fonts".
> 
> И ошибка у меня, похоже, со всеми шрифтами воспроизводится. Проверил как на
> "Consolas Nerd Font", так и на "Liberation Mono", "DejaVu Sans Mono", "Droid
> Sans Mono" и "FreeMono".

Ну, может их трудно отличить? :) Я ж привел показательный пример с "Fixedsys Excelsior 2.00", который ни с чем не перепутаешь. С ним тоже не работает?
Comment 7 Anton Zhukharev 2025-04-14 15:36:24 MSK
(In reply to Yuri N. Sedunov from comment #6)
> (Ответ для Anton Zhukharev на комментарий #4)
> > (In reply to Yuri N. Sedunov from comment #3)
> > > (Ответ для Anton Zhukharev на комментарий #2)
> > > > Уточнение: не работает только font-family.
> > > 
> > > Наверное, ваш Consolar недостаточно хорош, или не так называется.
> > > 
> > > Попробуйте другие шрифты, УМВР.
> > > $ grep family ~/.config/ghostty/config 
> > > #font-family = "DejaVu Sans Mono"
> > > font-family = "Fixedsys Excelsior 2.00"
> > 
> > Все названия шрифтов беру из выхлопа "ghostty +list-fonts".
> > 
> > И ошибка у меня, похоже, со всеми шрифтами воспроизводится. Проверил как на
> > "Consolas Nerd Font", так и на "Liberation Mono", "DejaVu Sans Mono", "Droid
> > Sans Mono" и "FreeMono".
> 
> Ну, может их трудно отличить? :) Я ж привел показательный пример с "Fixedsys
> Excelsior 2.00", который ни с чем не перепутаешь. С ним тоже не работает?

Вроде бы отличимы.

Но все равно посмотрел с Fixedsys Excelsior - правда с версией 3.01 - все равно шрифт не меняется.
Comment 8 Yuri N. Sedunov 2025-04-14 15:37:48 MSK
Да, можно ж попробовать с новым пользователем и не в кедах, если вы в них.
Comment 9 Anton Zhukharev 2025-04-14 15:45:12 MSK
(In reply to Yuri N. Sedunov from comment #8)
> Да, можно ж попробовать с новым пользователем и не в кедах, если вы в них.

Не буду, так как нашел причину, после устранений которой шрифт стал меняться.

Причина в присутствии файла ~/.config/fontconfig/fonts.conf со следующим содержимым:
```
<fontconfig>
  <match target="pattern">
    <test name="family" qual="any">
      <string>sans</string>
    </test>
    <edit binding="strong" mode="prepend" name="family">
      <string>Liberation Sans</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="family" qual="any">
      <string>sans-serif</string>
    </test>
    <edit binding="strong" mode="prepend" name="family">
      <string>Liberation Sans</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="family" qual="any">
      <string>serif</string>
    </test>
    <edit binding="strong" mode="prepend" name="family">
      <string>Liberation Serif</string>
    </edit>
  </match>
  <match target="pattern">
    <test name="family" qual="any">
      <string>monospace</string>
    </test>
    <edit binding="strong" mode="prepend" name="family">
      <string>JetBrainsMono Nerd Font Mono</string>
    </edit>
  </match>
</fontconfig>
```

Однако мне не совсем понятно почему другие приложения, в отличие от ghostty, так неадекватно на наличие пользовательского конфига fontconfig не реагируют.

Кошмар какой-то...

Юрий, можете поправить это чудо-поведение?
Comment 10 Yuri N. Sedunov 2025-04-14 15:50:10 MSK
У меня ~/.config/fontconfig/fonts.conf нет, все настройки только от нашего системного fontconfig'а, и всё работает. Что править неясно.
Comment 11 Anton Zhukharev 2025-04-14 16:11:06 MSK
(In reply to Yuri N. Sedunov from comment #10)
> У меня ~/.config/fontconfig/fonts.conf нет, все настройки только от нашего
> системного fontconfig'а, и всё работает. Что править неясно.

Хотелось бы, чтобы шрифт можно было перезаписать в конфигурации ghostty, а не чтобы он ориентировался только на пользовательский конфиг fontconfig'а.

В документации fontconfig'а нет ничего про то, что если есть пользовательский конфиг, то все приложения обязаны пользоваться только им и его настройками (хотя в исходниках ghostty я кода для этого сходу не нашел - возможно, что там плохо отрабатывает механизм выбора fallback-шрифтов в целом).
```
$ man 5 fonts-conf
[...]
       $XDG_CONFIG_HOME/fontconfig/fonts.conf  and ~/.fonts.conf is the conven‐
       tional location for per-user font  configuration,  although  the  actual
       location  is  specified  in the global fonts.conf file. please note that
       ~/.fonts.conf is deprecated now. it will not be read by default  in  the
       future version.
[...]
```
Comment 12 Yuri N. Sedunov 2025-04-14 16:22:55 MSK
Вы можете оказать большую услугу прежде всего себе, повесив багу в апстрим.
Я знаю еще одного фаната Ghostty. Подписываю его на эту багу, -- может он захочет вам помочь.
Comment 13 Anton Zhukharev 2025-04-14 16:50:27 MSK
(In reply to Yuri N. Sedunov from comment #12)
> Вы можете оказать большую услугу прежде всего себе, повесив багу в апстрим.
> Я знаю еще одного фаната Ghostty. Подписываю его на эту багу, -- может он
> захочет вам помочь.

Оказывается, что все уже есть (и бага в апстриме и решение) - нужно только поискать получше: https://github.com/ghostty-org/ghostty/discussions/3015.

Вкратце решение: убрать из fonts.conf для monospace из тэга <edit> аттрибут binding="strong".