[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Grub2-generator
Скачать: yandex upload.ee
Будущая программа, от которой хотелось бы упростить создание нового конфига или добавление пунктов меню в существующий конфиг.
Текущий exe захватывает рядом лежащий grub.cfg и выводит список пунктов в нём. При клике на пункт показывает его содержимое.

Пока только идеи

Как известно создание плана и отчёта как бы толкает на его выполнение, поэтому вот идеи:
1. Добавить вкладку ISO. Использовать готовые конфиги с выбором только мест поиска, то есть путь от корня: поле ввода имени, открытия файла ISO, выбором добавления явного пути или поиска
2. Добавить вкладку HDD. Добавление файла MBR, сторонних загрузчиков (суслик, ntldr, Grub4Dos)
3. Вывод информации: разрешение экрана
4. Добавление темы оформления
5. Добавление строк Echo перед загрузчиками ядер
6. Анализатор конфига для вывода таймера, темы, шрифта
7. Учесть сохранение переменных таймера и т.д. в конфигурационных файлах Linux и "Grub Customizer" в папке /etc/grub.d, чтобы пересоздание конфига при обновлении Grub2 не теряло пункты загрузки.
8. Анализатор иерархии пунктов.
9. Сделать сохранение конфига для флешки. Для этого делаем шаблон конфигов флешки, hdd, реальной ос и т.д. и в каждый шаблон импортируются пункты.
10. Добавить анализатор темы, точнее для некоторого заранее выбранного шаблона темы, чтобы задать его параметры и встроить в конфиг.
11. Встроенный GUI для генерации шрифтов используя сторонние утилиты, то есть указать поля: имя и размер шрифта, диапазон захватываемых символов (используя реальные буквы с вычислением их минимальных и максимальных границ диапазона)
Если у кого нет grub.cfg для теста то можно сохранить этот и положить рядом с программой.
В Linux события копировать/вставить хоткеями (Ctrl+C/V) не работают в Scintilla при русской раскладке клавиатуры.
Обновление
05.03.2024
1. Добавлена кнопка открытия дефолтных настроек "/etc/default/grub"
2. Добавлена кнопка "Бэкап" (создаёт папку "backup" рядом с файлом и копирует туда файл с меткой времени)
3. Добавлен пункт меню "Сохранить как шаблон" (в папку "template")
4. Исправлено открытие шаблона: из-за метки BOM шаблон не парсился воспринимался как код вставки, а не как пункт. Также из-за неправильного слеша не открывалась папка "template".
5. Добавлена кнопка получения информации о дисках (UUID и т.д.), которые могут быть необходимы для Grub2.


Последний раз редактировалось: AZJIO (2024-03-12 14:29), всего редактировалось 23 раз(а)

[Цитировать]

    vovan1982
  • 214
  • Стаж: 9 лет 2 месяца
  • Сообщений: 1098
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
AZJIO, круто. bb

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
временная версия
Добавлена подсветка кода
Добавлена кнопка поиск
скрин на Windows

[Цитировать]

    vovan1982
  • 214
  • Стаж: 9 лет 2 месяца
  • Сообщений: 1098
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
AZJIO, поюзал. С подсветкой намного лучше.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
vovan1982
Опять же тут можно на подсветку 18 пунктов настрочить. Ранее использовал тип индикаторы в плаге Notepad++ у них было свойство подсвеченный текст не подсвечивается повторно как бы поверх, но этот режим не работает методом выделения слова цветом, а только разными видами подчёркивания цветными полосками (пример индикатора работает при поиске, выделяет цветным прямоугольником). Я использовал родной способ установки стиля, этот способ перекрашивает поверх, а значит изменился порядок что подсвечивать первым, что последним. была идея сделать массив начала и конца подсвеченных элементов, тогда рег.выр. если оказывается внутри одного из диапазонов то двигается дальше, не пытаясь подсвечивать уже подсвеченное. Сама задача интересна, но отнимет уйму времени. Также не плохо внести цвета в ini-файл, чтобы можно было использовать собственное оформление.
Я скомпилировал 32 битное со Scintilla (в хубунту 18), тестировал на убунте 14, тупо не запускается (другие проги работают), а без Scintilla работает. Хотел скомпилировать на этой системе, PureBasic не ставится. Используя файловый менеджер Nemo добавил сначала в прогу в меню рабочего стола, потом думаю юзер поломает загрузку, и сделал только в контекстное меню файла grub.cfg
Для запроса root прав надо использовать pkexec, но там старая ОС, поэтому использовал gksu.
Вот конфиг "/usr/share/nemo/grub2-generator.nemo_action" для nemo:
[Nemo Action]
Name=grub2-generator
Comment=Правка конфига загрузки ОС
Exec=gksu grub2-generator
Icon-Name=grub2-generator
Selection=s
Extensions=grub.cfg;
Separator=" "
То есть я думал встраивать ли изначально запрос root прав, как я делал для проги gui_qemu, но понял что кому надо сделают это через ком-строку.
Ещё сомневался правильно ли я сделал вставляя тело пункта отдельно, классы отдельно, имя отдельно, я бы мог вместе с именем и классами и скобками вставить как тело пункта. В этом случае при сохранении у меня бы сохранился оригинал с изначальным форматированием, ну и читабельность бы осталась на прежнем уровне.

[Цитировать]

    vovan1982
  • 214
  • Стаж: 9 лет 2 месяца
  • Сообщений: 1098
  • Репутация:76

    [+] [-]
  • Откуда: Ростов-на-Дону
AZJIO, я бы добавил еще возможность редактирования имени пункта меню в левой колонке.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]

проблема

Столкнулся с проблемой, что не все пункты в шаблонах добавляются как пункты, некоторые как код, анализатор не распознаёт пункт, хотя с виду всё нормально. Посмотрел, разница в кодировках 1251 и UTF8, хотя если во фрагменте только англ текст, то вполне может восприниматься как ANSI в AkelPad. Ранее я пытался привести к одному виду переноса строк (CRLF или LF) и везде UTF8.
Обновления:
Добавил подсветку кода при вставке и редактировании (пересобрал пакеты deb и арча).
Добавил "Переименовать пункт"
План: добавить "перетащить и бросить" файл-фрагмент в окно программы (спросить: открыть как конфиг или добавить как фрагмент).

[Цитировать]

    xnik
  • 19473
  • Стаж: 5 лет 5 месяцев
  • Сообщений: 411
  • Репутация:6

    [+] [-]
  • Откуда: СССР
Полезная программа, потому что есть подсветка кода
AZJIO, у вас есть xml для notepad++ с такой подсветкой?

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
xnik, подсветка Grub2 у меня есть в сборке AkelPad и для Geany. Подсветка XML у меня в собственной azjio.xml для Notepad++ (скриншот).
Notepad++ Grub2 Lexer
Geany Grub2 Lexer
AkelPad Grub2 Lexer, с автозавершением. скриншот
тема Notepad++ azjio.xm

[Цитировать]

    xnik
  • 19473
  • Стаж: 5 лет 5 месяцев
  • Сообщений: 411
  • Репутация:6

    [+] [-]
  • Откуда: СССР
AZJIO, спасибо скачал, стили только для темной темы, попробую подредактировать цвета чтобы для светлой тоже можно было использовать
в Grub2-generator еше можно конвертр добавить syslinux.cfg в grub2
вот пример правда для G4d
; программа для перевода (sys/iso)linux.cfg в .lst файлы от grub4dos
; написана 5 апреля 2009 года
; допускаются любые виды распространения и использования
#NoTrayIcon
$file = FileOpenDialog("Выберите конфигурационный файл sys/isolinux", @WorkingDir, "Syslinux(syslinux.cfg)|Isolinux(isolinux.cfg)|Все файлы(*.*)")
If @error Then Exit
$hndl = FileOpen($file, 0)
If $hndl = -1 Then
  MsgBox(16, "Ошибка", "Не удалось открыть файл!")
  Exit
EndIf
$l = 1
Dim $data[1024]
Dim $ndata[1024]
$kernel = InputBox("Введите путь к ядру","Введите полный путь к файлу kernel относительно корня флешки, например, /slax/boot/kernel")
If @error Then Exit
$initrd = InputBox("Введите путь к initrd","Введите полный путь к файлу initrd отностельно корня флешки, например, /slax/boot/initrd.gz")
If @error Then Exit
; сообщить о чтании данных
SplashTextOn("","Чтение даных из файла...","300","20","-1","-1",1,"","","")
While 1
  $data[$l] = FileReadLine($hndl,$l)
  If @error = -1 Then ExitLoop
  $l = $l + 1
WEnd
; сообщить об обработке данных
SplashTextOn("","Обработка данных...","200","20","-1","-1",3,"","","")
For $i = 1 To $l
  Select
  Case StringInStr($data[$i],"#") > 0
  $ndata[$i] = $data[$i]
  Case StringInStr($data[$i],"label") > 0
  $ndata[$i] = Label($data[$i],$i)
  Case StringInStr($data[$i],"kernel") > 0
  $ndata[$i] = Kernel($data[$i],$i)
  Case StringInStr($data[$i],"append") > 0
  $ndata[$i] = Append($data[$i],$i)
  Case Else
  $ndata[$i] = "#"&$data[$i]
  EndSelect
Next
Func Label($text,$number)
  $cut = StringInStr($data[$number],"label")+5
  Return "title "&StringTrimLeft($text,$cut)
EndFunc
Func Kernel($text,$number)
  $cut = StringInStr($data[$number + 1],"append")+6
  Return "kernel "&$kernel&" "&StringTrimLeft($data[$number + 1],$cut)
EndFunc
Func Append($text,$number)
  Return "initrd "&$initrd
EndFunc
$nfile = $file&".lst"
$nhnd = FileOpen($nfile,1)
; сообщить о записи данных
SplashTextOn("","Запись данных в файл "&$nfile&"...","250","20","-1","-1",3,"","","")
For $i = 1 To $l
  FileWriteLine($nhnd,$ndata[$i]&@CRLF)
Next
MsgBox(64,"Обработка завершена","Перевод завершён, результаты записаны в файл "&$nfile)

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
100179попробую подредактировать цвета чтобы для светлой
Используй color_converter, чтобы сделать это автоматически. Вот пример белая стандартная тема переделана в чёрную

[Цитировать]

    xnik
  • 19473
  • Стаж: 5 лет 5 месяцев
  • Сообщений: 411
  • Репутация:6

    [+] [-]
  • Откуда: СССР
color_converter
Сконвертировал не изменилось ни чего, оказалось конфиг по умолчанию настроен на преобразование светлой темы в темную, а мне надо наоборот, я подправил конфиг hsb_s=36 на 100 но тоже не совсем получилось
хорошо бы 2 конфига было, чтобы не настраивать вручную

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
xnik, да, под белый я не подстраивал утилиту, просто дав возможность задать параметры установки ярких цветов. Если под конкретный язык настраивать, то можно моим плагином Highlight воспользоваться, он непосредственно в открытом документе может плавно регулировать цвет видя как это будет выглядеть.
В отличии от Highlight утилита color_converter регулирует все цвета и если поэкспериментировать с яркостью (задать 90 или 80), насыщенностью, и добиться приемлемого результата, то будет исправлены все 80 языков. Потом можно сделать доводку с помощью Highlight , и те цвета, которые были им подправлены заменить по всей теме xml. По крайней мере те цвета, которые не затронуты доводкой они хотя бы будут улучшены color_converter, потому что если оставить их как есть из тёмной темы, они там будут слишком блеклыми.
Пиши тут в новой теме

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Обновлено версии Linux+Scintilla
Добавлено горячие клавиши: Ctrl+S - сохранить, Ctrl+F - поиск, Ctrl+F3 - продолжить поиск
Добавлено при выделении слова подсвечиваются все вхождения.
Добавлено запрос пароля админа, так как без него не происходит сохранения файла.
Добавлено перетаскивание файла в окно редактора, чтобы открыть файл, обновляется всё включая список пунктов.

[Цитировать]

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1264
  • Репутация:127

    [+] [-]
Обновление
1. Добавлена кнопка открытия дефолтных настроек "/etc/default/grub"
2. Добавлена кнопка "Бэкап" (создаёт папку "backup" рядом с файлом и копирует туда файл с меткой времени)
3. Добавлен пункт меню "Сохранить как шаблон" (в папку "template")
Исправлено открытие шаблона: из-за метки BOM шаблон не парсился воспринимался как код вставки, а не как пункт. Также из-за неправильного слеша не открывалась папка "template".
4. Добавлена кнопка получения информации о дисках (UUID и т.д.), которые могут быть необходимы для Grub2. Для большей гибкости в ini-файле можно добавить
[info]
inxi=-D
и будет добавлена ещё одна информационная кнопка в окне "Инфо". Это добавлено в случае если настройки вывода по умолчанию не устроят, так как ключи lsblk позволяют любые комбинации для вывода информации. То есть по умолчанию то же что:
[info]
lsblk=-T -t -n -o name,UUID,MOUNTPOINT,FSTYPE,LABEL,SIZE -I8
но это можно изменить в соответствии со своими предпочтениями. А также можно погуглить другие консольные утилиты находящиеся в ОС или устанавливаемые.
[info]
df=-h
[info]
fdisk=-l
вариант без параметров
[info]
lsblk=
и т.д.
Даже была идея в этом разделе сделать несколько строк и чтобы все они добавились, но это излишество.

Страница 1 из 3


Показать сообщения:    

Текущее время: 29-Мар 16:33

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы