ТЕХНИЧЕСКОЕ ЗАДАНИЕ на разработку утилиты **ubl-settings-info**

1. **ОПИСАНИЕ:**
	
	Графическое средство вывода информации о программно аппаратной части в ОС UBLinux

1. **ЭТАПЫ И СРОКИ СОЗДАНИЯ ПРИЛОЖЕНИЯ:**
	1. Общий срок работ по созданию приложения составляет N дней:
		1. N дня - макет и дизайн приложения и его утверждение
		1. N дней - разработка приложения
		1. N дня - тестирование приложения и исправление ошибок
	1. Перечень этапов разработки приложения:
		1. Разработка макета и дизайна приложения
		1. Утверждение и доработка макета
		1. Создание работающего интерфейса, включая полную разработку действующих ярлыков, кнопок и т.д.
	1. Проектирование алгоритма работы приложения
	1. Написание работающего кода приложения, включая полноценно работающие элементы графического интерфейса, а также перевод (поддержка локализации En, Ru), самостоятельно
	1. Тестирование и исправление ошибок, самостоятельно
	1. Публикация

1. **ТЕХНОЛОГИЧЕСКИЕ ТРЕБОВАНИЯ:**
	1. Приложение разрабатывается под нужды операционной системы UBLinux
	1. Использование фирменного логотипа компании
	1. Название приложения, техническое:  **ubl-settings-info** (далее **\${NAME_APPLICATION}**)
	1. Название приложения, публичное: **Информация о системе**
	1. Стек технологий:
		1. Язык программирования:  Bash или C(++)
		1. Приложение для разработки графического интерфейса: Glade 3
		1. Графические библиотеки: GTK3
		1. Операционная система разработки: UBLinux DB
	1. Структура:
		1. В исходных кодах использовать префикс корня  **CMAKE_INSTALL_PREFIX** для сборки приложений. Например, `CMAKE_INSTALL_PREFIX/share`.
		1. Bash/C(++): Весь функционал сосредоточен в графической части, вызовы и исполнение процедур написаны на языках Bash, C(++)
**/usr/bin/\${NAME_APPLICATION} (скомпилированный бинарный файл)**
		1. Графическая часть, фронт
**/usr/share/\${NAME_APPLICATION}/ui/\${NAME_APPLICATION}.glade**
		1. Стили виджетов GTK
**/usr/share/\${NAME_APPLICATION}/css/\${NAME_APPLICATION}.css**
		1. Элементы изображений
			1. Иконки:
**/usr/share/icons/hicolor/scalable/apps/\${NAME_APPLICATION}{\*.png,\*.svg}**
Файлы изображений png иконок должны иметь имена вида:
				- ru.ublinux.\${NAME_APPLICATION}.svg
				- ru.ublinux.\${NAME_APPLICATION}.\${NAME_ICONS}.svg
Где \${NAME_ICONS} - имя графического элемента, например: checked, warning, alert и т.д.
			Файлы изображений png иконок должны генерироваться из svg файла в размеры 16, 32, 48, 64 пикселей сценарием make-файла.
			1. Изображения:
**/usr/share/\${NAME_APPLICATION}/ui/{\*.png,\*.svg}**
		1. Локализация En/Ru
			1. Для локализации должен быть создан файл-шаблон ***\${NAME_APPLICATION}.pot***, на его основе должны быть созданы сами ***po-файлы*** переводов на необходимые языки, через файл сборки из po-файлов компилируются ***mo-файлы*** и размещаются сценарием установки по указанному пути:
**/usr/share/locale/\${LANG}/LC_MESSAGES/\${FILE_MO}**
где \${LANG} - каталог с именем локали, например, "ru" или "ru_RU",
\${FILE_MO} - файл локализации программы, например, "\${NAME_APPLICATION}.mo"
			1. В файле локализации .pot и .po должна присутствовать строчка информационная, показывающая позицию локализации в коде
				
				Пример:
				```bash
				#: source/${NAME_APPLICATION}.c:41
				msgid "Example string for localization"
				msgstr "Пример строки для локализации"
				```
			1. Вывод **всех** текстовых элементов осуществляется через средства локализации.
		1. Версия ПО
			1. Файл, в котором хранится версия - VERSION.md, находится в корне каталога проекта.
			1. При компиляции (через сценарий make-файла) данные из файла VERSION.md передаются в значение переменной (-ых) version_application в файлах-исходниках ПО.

1. **ТЕХНИЧЕСКОЕ ЗАДАНИЕ:**
	1. Ярлык (desktop-файл):
	1. Type: Application
	1. Exec: ubl-settings-info
	1. Categories: X-UBL-SettingsManager;X-UBL-SystemSettings
	1. Главное окно:
		1. Требования к внешнему виду:
			1. Адаптивный (резиновый) дизайн.
			1. Наличие элементов интерфейса:
				1. Статических - не меняют свою ширину при изменении размеров окна или родительского элемента.
				1. Динамических - меняют свою ширину при изменении размеров окна или родительского элемента. Обычно занимают пространство от края до края окна или родительского элемента, либо пространство от рядом расположенного элемента до до края окна или родительского элемента.
			1. Минимальный размер окна до прекращения масштабирования 800 на 600 пикселей.
			1. Шапка в стиле приложений GTK3 с содержимым:
				1. Иконка приложения. Статический элемент. Выравнивание по левому краю.
				1. Заголовок окна, название приложения.  Выравнивание по центру между элементами.
				1. Кнопка с иконкой с выпадающим списком -> "Справка, О приложении". Статический элемент. Выравнивание по правому краю.
				1. Стандартные элементы окна, кнопки "Свернуть, Минимизировать/На весь экран, Закрыть"
			1. В верхней части крупный логотип утилиты, с права от него краткое описание утилиты. Фон заполнен изображением. Статические элементы. Выравнивание по левому краю.
			1. Рабочая область.
	1. Требования к «Рабочей области». Динамический элемент. От края до края по горизонтали и вертикали окна. Делится на два вертикальных блока (50 на 50 процентов), которые никак не обрамлены. Выводятся группы графического и текстового представления информации:
		1. Левый блок:
                	- логотип текущей операционной системы (масштабируемый SVG-файл). Статический элемент. Выравнивание по центру родительского элемента.
		1. Правый блок:
			1. Список информации о программно-аппаратных характеристиках рабочей станции. Статический элемент. Выравнивание по левому краю.:
				1. Имя пользователя и хоста, например: *miramax166@mmx166-pc*
				1. Название ОС, билд, редакция, например: *Система: UBLinux 2204 Desktop Basic*
				1. Информация о ядре ОС, например: *Ядро: x86_64 Linux 5.17.6-2-ublinux*
				1. Аптайм системы, например, *Время работы: 2h 14m*
				1. Информация о пакетах, например: *Установлено пакетов: 2306*
				1. Информация об оболочке, например, *Оболочка: sh*
				1. Разрешение эрана (-ов), например, *Разрешение: 5760x1080*
				1. Информация о DE, например, *Среда рабочего стола: Xfce4*
				1. Информация об оконном менеджере, например, *Оконный менеджер: Xfwm4*
				1. Информация о теме системы, например, *Тема оконного менеджера: Numix-Archblue*
				1. Информация о теме GTK-среды, например, *Тема GTK: Arc-Dark [GTK2]*
				1. Информация о теме значков, например, *Тема значков: Faenza-Cupertino*
				1. Информация о шрифте, например, *Шрифт: Ubuntu 10*
				1. Информация о диске, например, *Диск: 394G / 960G (42%)*
				1. Информация о процессоре, например, *CPU: Intel Core i3-9100 @ 4x 4.2GHz [38.0°C]*
				1. Информация о видеокарте, например, *GPU: NVIDIA GeForce GT 710*
				1. Информация об ОЗУ, например, *Оперативная память: 4406MiB / 15934MiB*.

1. **ОСОБЕННОСТИ**
	1. Кнопка с иконкой с выпадающим списком -> "Справка, О приложении"
		1. Справка - запуск окна с встроенным браузером (WebKitWebView) с переходом на ссылку:
			1. локализованный (ru_RU) вариант:
https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/\${NAME_APPLICATION} (далее \${URLWIKI})
			1. локализованный (en_EN) вариант:
https://wiki.ublinux.com/ru/Программное_обеспечение/Программы_и_утилиты/Все/\${NAME_APPLICATION} (далее \${URLWIKI})
		Если WebKitWebView не доступен, то запуск через `xdg-open ${URLWIKI}`.
		1. О приложении. Открывается диалоговое окно с выводом информации о программе:
			1. Заголовок окна по локализованному названию утилиты
			1. Копирайты, порядок:
				1. Иконка приложения
				1. Название утилиты
				1. Версия программы (переменная version_application)
				1. Название утилиты, локализованное
				1. Ссылка "Домашняя страница проекта" на https://ublinux.ru/ 
				1. Авторские права © ООО "Юбисофт", 2022 - \$LASTYEAR
					- локализованный (en_EN) вариант: "Copyright © UBSoft LLC, 2022 - \$LASTYEAR"
					- где \$LASTYEAR - текущий год.

1. **КОМАНДЫ**
	1. Справка, О приложении > Домашняя страница проекта:
`xdg-open \${URLWIKI} &`
	1. Получить имя текущего пользователя
		1. команда - ``
	1. Получить имя хоста
		1. команда - ``
	1. Получить название ОС, билд, редакция
		1. команда - ``
	1. Поучить информацию о ядре ОС
		1. команда - ``
	1. Получить время работы системы
		1. команда - ``
	1. Получить информацию о пакете
		1. команда - ``
	1. Получить информацию об оболочке
		1. команда - ``
	1. Получить информацию об разрешение эрана (-ов)
		1. команда - ``
	1. Получить информацию о DE
		1. команда - ``
	1. Получить информацию об оконном менеджере
		1. команда - ``
	1. Получить информацию о теме системы
		1. команда - ``
	1. Получить информацию о теме GTK-среды
		1. команда - ``
	1. Получить информацию о теме значков
		1. команда - ``
	1. Получить информацию о шрифте
		1. команда - ``
	1. Получить информацию о диске
		1. команда - ``
	1. Получить информацию о процессоре
		1. команда - ``
	1. Получить информацию о видеокарте
		1. команда - ``
	1. Получить информацию об ОЗУ
		1. команда - ``

1. **ПОМОЩЬ И ПАРАМЕТРЫ ЗАПУСКА**
	1. Помощь
		- Пример вывода:
			> ${NAME_APPLICATION} version: \$VERSION
			> Application Description for UBLinux
			> 
			> Использование:  ${NAME_APPLICATION} [OPTIONS...]
			> Параметры приложения:
			> \$OPTIONS

			Где \$OPTIONS - параметры запуска, \$VERSION - версия программы (переменная version_application).

	1. Параметры запуска:
		1. *-h, --help* - Показать параметры справки
		1. *-V, --version* - Показать текущую версию
		1. *--lock-help* - Блокировка вызова справки
	1. Действия при указанных параметрах:
		1. *--lock-help* - делать неактивным пункт "Справка"  в выпадающем списке кнопки с иконкой.

1. **ПРИБЛИЗИТЕЛЬНЫЙ МАКЕТ ПРИЛОЖЕНИЯ.**
    1. Главное окно


![](https://gitea.ublinux.ru/miramax166/design-ubl-settings-apps/raw/branch/master/ubl-settings-info/pic/01%28ru_RU%29.png)

