Заметки

Я довольно давно не трогал сайт, но недавно после переустановки Линукса я решил обновить Hugo до последней версии, и… обнаружил, что мой сайт поломан в нескольких местах.

  1. Мне пришлось переместить большую часть параметров в языковых разделах в подраздел params. В общем-то, hugo serve предупреждает о том, какие параметры не там, так что это не шибко проблема.
  2. Я убрал taxonomyTerm из раздела outputs в конфиге. Как я понял, это всё с taxonomy заодно теперь, и поэтому смысла в отдельном параметре нет.
  3. Мне пришлось приводить ключи категорий в теме в нижний регистр. В 0.123.3 появилась настройках capitalizeListTitles (т.е. font-patching превратилось в Font-Patching). Кому-то это удобно, но мне же это сломало локализацию, потому что она опиралась на ключи, которые были в нижнем регистре. По правде говоря, приведя категории в нижний регистр, я несколько поторопился, потому что можно было просто отключить настройку, но в какой-нибудь момент может произойти проблема, что где-то что-то будет не в том регистре, и всё сломается, поэтому это даже к лучшему.

Но зато теперь всё сгенерено свежим Hugo 0.126.1, и работает как надо. Я думаю как-нибудь написать тему для Hugo, но это уже, скорее всего, будет нескоро.

Тёмная рамка окна на Windows 10

Периодически я натыкаюсь на проблему, что у приложения тёмная тема, но светлая рамка окна. Поэтому тут я сохраню пару способов, как её поменять на Windows 10.

Для тех, кто пользуется приложениями

Сразу скажу: этот способ вам не подойдёт, если вам важен акцентный цвет.

Откройте редактор реестра и найдите раздел HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM. В нём вам нужны следующие параметры:

  • ColorPrevalence: DWORD = 1
    Этот параметр позволяет использовать акцентный цвет в заголовке окна.
  • AccentColor и AccentColorInactive: DWORD = цвет в формате ABGR (в шестнадцатеричном виде).
    Цвета в активном и неактивном виде.

Пример файла для реестра, где используются цвета #000000 для активного заголовка и #212121 для неактивного:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\DWM]
"ColorPrevalence"=dword:00000001
"AccentColor"=dword:ff000000
"AccentColorInactive"=dword:ff212121

Для тех, кто пишет приложения

Вам потребуется функция DwmSetWindowAttribute :

HRESULT DwmSetWindowAttribute(
       HWND    hwnd,        // окно
       DWORD   dwAttribute, // сам атрибут
  [in] LPCVOID pvAttribute, // значение
       DWORD   cbAttribute  // размер значения в байтах
);

Значения атрибутов описаны в DWMWINDOWATTRIBUTE , но конкретно нас интересует DWMWA_USE_IMMERSIVE_DARK_MODE. В документации указано, что он равен 20, однако до версии 20H1 значение было равно 19 .

Примерно так я пытался делать автоопределение темы рамки в Ultimate++ :

	HRESULT (WINAPI *DwmSetWindowAttribute)(HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute);
	DllFn(DwmSetWindowAttribute, "dwmapi.dll", "DwmSetWindowAttribute");
	if (DwmSetWindowAttribute) {
		BOOL useDarkTheme = IsDarkTheme(); 
		DwmSetWindowAttribute(
			top->hwnd, 20, /* 20 is DWMWINDOWATTRIBUTE::DWMWA_USE_IMMERSIVE_DARK_MODE */
			&useDarkTheme, sizeof(useDarkTheme));
	}

Заметки теперь отображаются на главной. Заодно я доделал моменты с локализацией, и переделал RSS в Atom. Более того, я поправил XML-файл Atom так, что теперь там отображается весь контент как надо, насколько это возможно.

Пожалуй, единственное, что мне теперь осталось – так это сделать себе редактор или хотя бы кнопку для добавления/обновления постов. Всё же неудобно это делать через SFTP. Да и время с датой я прописываю сам.

Возможно, это меня и останавливает сюда писать часто, поэтому если уж я пишу, то посты выходят длиннее, чем я рассчитываю.

Но всё же с заметками, возможно, блог будет поживее. При этом статьи никуда тоже не денутся: можно даже подписаться по RSS отдельно на них. Или отдельно на заметки. Или отдельно на заметки по тегу.

Я ещё подумываю приделать что-то для мелких постов, например, захостить какой-нибудь ActivityPub-сервер. Правда, в таком случае это будет весьма небольшой сервер, потому что оперативки на этой VPS не особо много. Но это уже спорно.

Раз уж я заговорил о локализации, то эту заметку я посвящу локализации. Я, честно говоря, не в курсе, с какой версии это произошло, но локализация в Hugo сильно шагнула вперёд.

Во-первых, Hugo поддерживает теперь нативно количественные для немалого количества языков, включая русский. Всё благодаря модулю https://github.com/gohugoio/go-i18n (форку https://github.com/nicksnyder/go-i18n ). Пользоваться очень просто: в файле локализации создаёте нужные ключи и вписываете всё в них. Вот текущий список для справки (с двузначными кодами языков): https://github.com/gohugoio/go-i18n/blob/main/v2/internal/plural/codegen/plurals.xml

Во-вторых, Hugo теперь умеет в локализацию дат через функцию time.Format ФОРМАТ_ДАТЫ ДАТА. Мне немного пришлось переписать шаблоны, и теперь там места с датой из таких:

{{- with .Site.Params.dateformat | default "2006-01-02" | .PublishDate.Format -}}

превратились в такие:

{{- with time.Format (.Site.Params.dateformat | default "2006-01-02") .PublishDate -}}

С локализацией категорий и мета-тегов всё же пришлось заморочиться самому. С новым разделом, правда, до конца они особо не работает, но и это как-нибудь поправлю.

Я тут немного обновил сайт: тему поправил и локализацию. Помимо этого, как вы заметили, я сделал новый раздел: заметки.

Что он из себя представляет? Это что-то вроде моего простенького микроблога без всякого бэкенда. Мне периодически проще делать небольшие заметки, чем писать полноценные статьи, и для таких вещей это как раз подходит.

Такое размещение, конечно, влияет на социальную составляющую, но при необходимости я могу начать дублировать посты куда-нибудь. А так, здесь есть RSS (вот та кнопка справа вверху), так что можете подписываться в любой удобной для вас RSS-читалке.