Если у вас установлен Linux, вы знаете, что такое GRUB - начальный загрузчик системы. Он может загрузить не только Linux, но и Windows, передав загрузку «по цепочке». Темы для GRUB существуют в большом количестве, но также не сложно сделать их самостоятельно, настроив полностью под себя.
Я знаю, что существует GRUB Customizer, но его возможности ограничены установкой/удалением тем, а также добавлением фона и изменением цвета шрифта. Создать свою тему в нём невозможно. Более того, в нём нельзя даже изменить место расположения текста на экране. Поэтому будем делать самостоятельно. Периодически будем пользоваться оригинальной документацией.
Предполагается, что вы умеете работать в командной строке Linux, а также у вас есть хотя бы базовые навыки по работе с растровыми графическими редакторами (не обязательно Photoshop – пойдёт любой).
Файл theme.txt не должен содержать опечаток, иначе система просто не загузится. Рекомендую для начала пробовать в виртуальной машине. Если же вы хотите делать сразу на рабочей системе, для страховки приготовьте LiveUSB для устранения возможных проблем.
Выбор и подготовка изображения
Изображение выбираем, какое нравится вам. Для примера будем работать с фотографией котика – они нравятся всем.
И здесь у нас возникает одна проблема. Мониторы имеют разное разрешение и разное соотношение сторон. Наиболее популярны сейчас 16:9, 16:10, 21:9, но достаточно много ещё старых 4:3 и 5:4. И изображение, корректное на одном мониторе, будет искажено или обрезано на другом. Что делать в таком случае?
Выход достаточно простой – можно взять изображение, где по контуру один цвет. А дополнительно цвет фона сделаем таким же. Фото этого мейн-куна – хороший пример: здесь везде по контуру чёрный цвет (#000000). Поэтому укажем правильный режим отображения и проблемы не будет ни на одном мониторе. Также для уменьшения размера файла обрежем чёрный контур, насколько возможно. У меня после обрезки получилось 1306*888 пикселей.
Сразу создаём папку для нашей темы, называем её «Maine-coon» и помещаем туда наше изображение.
Подготовка шрифтов
Шрифта желательно использовать два – моноширинный для терминала и пропорциональный для прочего текста. Для терминала возьмём Terminus, а для прочего текста – Ubuntu. Эти шрифты легко читаются и не будут утомлять глаза.
Но шрифты в формате TTF загрузчик не прочитает, ему нужен специальный растровый формат. Для преобразования воспользуемся утилитой grub-mkfont, предварительно скопировав шрифты в нужную папку:
grub-mkfont -o ./terminus-14.pf2 -s 14 ./terminus.ttf
Вначале мы указываем имя файла на выходе (-o), затем размер шрифта (-s) и потом имя файла, который конвертируем. Его надо предварительно скопировать в нужную папку.
Обратите внимание на то, что для каждого используемого размера мы создаём свой растровый файл.
Файлы со шрифтами нескольких размеров: пропорциональный сделаем с размерами 16, 24 и 48, моноширинный – 14. Размер шрифта сразу добавим к имени файла, чтобы загрузчик смог прочитать нужные данные. В результате конвертирования у нас должно получиться 4 файла:
- ubuntu-16.pf2
- ubuntu-24.pf2
- ubuntu-48.pf2
- terminus-14.pf2
Эти файлы также копируем в папку темы, где уже находится наше изображение.
Создание темы
Для начала создаём пустой файл theme.txt в папке с темой и сразу пишем в него несколько строк:
# GRUB2 gfxmenu Linux theme
# Maine-coon theme
desktop-image: "maine-coon.jpg"
desktop-color: "#000000"
desktop-image-scale-method: "padding"
В комментариях мы написали, что это за файл, а также название темы. Далее мы указали фоновый цвет, фоновое изображение и режим его показа – масштабировать, не обрезая и не растягивая.
В принципе, в таком виде тему уже можно установить, только пока что нечего отображать, кроме фона. Добавим для начала меню выбора операционной системы и сразу проверим тему в работе.
Будем исходить из минимального разрешения экрана 1024*768. Добавляем в файл темы следующий код:
+ boot_menu {
left = 50%-350
width = 700
top = 50%-200
height = 450
icon_width = 24
icon_height = 24
item_height = 30
item_padding = 1
item_icon_space = 5
item_spacing = 20
item_font = "Ubuntu Regular 24"
item_color = "#cccccc"
selected_item_color = "#cc0000"
}
Подробное значение каждого параметра расписано в документации, поэтому не буду на них останавливаться. Далее мы упаковываем папку с темой в архив .tar.gz или .xz (zip не подойдёт), при необходимости копируем на виртуальную машину и устанавливаем тему при помощи GRUB Customizer. Перезагружаем компьютер и вот что получаем:
Всё это запустилось с первой попытки и работает. Из минусов - видим вверху плохо читаемую надпись, которую мы туда не добавляли. Это стандартный заголовок, попробуем его прочитать. Для этого перед блоком загрузочного меню добавим две строки:
title-font: "Ubuntu Regular 48"
title-color: "#cccccc"
Далее снова при необходимости загружаем тему на виртуальную машину и устанавливаем. Только при установке через GRUB Customizer вначале удаляем старую тему, затем устанавливаем заново. И смотрим, что за надпись:
В принципе, её можно оставить, но если захотите изменить, в файле темы к строкам перед загрузочным меню добавьте ещё один параметр:
title-text: "TEXT"
Вместо TEXT укажите то, что хотите там видеть. Можно вообще оставить пустую строку "" - в таком случае этой надписи не будет.
Добавим в тему ещё два элемента.
Подсказка с горячими клавишами
Допишем в конец файла:
+ label {
font = "Ubuntu Regular 16"
left = 50%-350
top = 95%
height = 25
width = 700
align = "center"
color = "#cccccc"
text = "@KEYMAP_SHORT@"
}
Это даст подсказку по некоторым доступным горячим клавишам – изменение параметров загрузки и т.д.
Терминал
Терминал как раз и нужен для редактирования параметров загрузки. Перед блоком загрузочного меню добавим ещё строку:
terminal-font: "Terminus Regular 14"
В терминале всё же удобнее моноширинный шрифт, для этого мы и готовили в начале шрифт Terminus.
И делаем последнюю проверку:
В таком виде уже можно пользоваться. Как видите, в создании своей темы для GRUB нет ничего сложного, главное – внимательность.
Также можно сделать фон для меню и для отдельных его пунктов, это описано в документации.
Comments: