From 1debb19254a09a484f4b7957bab62c1f75023c26 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 17 May 2023 18:02:52 +0600 Subject: [PATCH 1/8] Title fixes --- source/ubl-settings-info.c | 6 +++--- ubl-settings-info.glade | 4 ++-- ubl-settings-info.pot | 2 +- ubl-settings-info_ru.po | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/source/ubl-settings-info.c b/source/ubl-settings-info.c index 4b15c6e..36c929e 100644 --- a/source/ubl-settings-info.c +++ b/source/ubl-settings-info.c @@ -38,11 +38,11 @@ void on_about(GtkWidget *button){ GtkWidget *About = GTK_WIDGET(gtk_builder_get_object(builder, "About")); GtkWidget *HeaderAboutTopic = GTK_WIDGET(gtk_builder_get_object(builder, "headerAboutTopic")); gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(About),version_application); - gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(About),_("Basic System Information")); - gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(About),_("System Information")); + gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(About),_("System Information")); + gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(About),"ubl-settings-info"); gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(builder,"About"))); gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(About),_("Project Home Page")); - gtk_label_set_text(GTK_LABEL(HeaderAboutTopic),_("About ubl-settings-info")); + gtk_label_set_text(GTK_LABEL(HeaderAboutTopic),_("About System info")); gtk_widget_set_visible(AboutButtons,0); } diff --git a/ubl-settings-info.glade b/ubl-settings-info.glade index fc0c213..d061f72 100644 --- a/ubl-settings-info.glade +++ b/ubl-settings-info.glade @@ -11,10 +11,10 @@ com.ublinux.ubl-settings-info dialog True - System info + ubl-settings-info 1.1 Copyright © 2022 - 2023, UBSoft LLC - Sum up system information + System info https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-info Project Home Page UBGroup diff --git a/ubl-settings-info.pot b/ubl-settings-info.pot index fb2eda8..b9b8f7e 100644 --- a/ubl-settings-info.pot +++ b/ubl-settings-info.pot @@ -30,7 +30,7 @@ msgid "Project Home Page" msgstr "" #: source/ubl-settings-info.c:41 -msgid "About ubl-settings-info" +msgid "About System info" msgstr "" #: source/ubl-settings-info.c:70 diff --git a/ubl-settings-info_ru.po b/ubl-settings-info_ru.po index 90ec7f1..81e99cd 100644 --- a/ubl-settings-info_ru.po +++ b/ubl-settings-info_ru.po @@ -30,8 +30,8 @@ msgid "Project Home Page" msgstr "Домашняя страница проекта" #: source/ubl-settings-info.c:45 -msgid "About ubl-settings-info" -msgstr "О программе ubl-settings-info" +msgid "About System info" +msgstr "О программе Информация о системе" #: source/ubl-settings-info.c:70 msgid "About" From f3d93271429f352ec79ea30d6a1b008c0c75b97c Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 27 May 2025 17:49:39 +0600 Subject: [PATCH 2/8] Application remake --- .gitignore | 21 +- Makefile | 82 ++--- VERSION.md | 1 - gresource.xml | 9 + .../apps/com.ublinux.ubl-settings-info.svg | 0 ...om.ublinux.ubl-settings-info.logo-dark.svg | 199 ++++++++++ .../com.ublinux.ubl-settings-info.logo.svg | 0 .../ubl-settings-info.pot | 0 .../ubl-settings-info_ru.po | 14 +- logo-background.png | Bin 33872 -> 0 bytes source/CMakeLists.txt | 73 +++- source/ubl-settings-info.c | 223 ++++-------- source/ubl-settings-info.h | 51 +++ source/ubl-strings.h | 4 + source/ubl-util-standard.c | 82 ----- source/ubl-util-standard.h | 20 -- ubl-settings-info.css | 145 ++++++-- ubl-settings-info.glade | 339 +++--------------- 18 files changed, 599 insertions(+), 664 deletions(-) delete mode 100644 VERSION.md create mode 100644 gresource.xml rename com.ublinux.ubl-settings-info.svg => icons/apps/com.ublinux.ubl-settings-info.svg (100%) create mode 100644 icons/emblems/com.ublinux.ubl-settings-info.logo-dark.svg rename ublinux-logo.svg => icons/emblems/com.ublinux.ubl-settings-info.logo.svg (100%) rename ubl-settings-info.pot => locale/ubl-settings-info.pot (100%) rename ubl-settings-info_ru.po => locale/ubl-settings-info_ru.po (69%) delete mode 100644 logo-background.png create mode 100644 source/ubl-settings-info.h create mode 100644 source/ubl-strings.h delete mode 100644 source/ubl-util-standard.c delete mode 100644 source/ubl-util-standard.h diff --git a/.gitignore b/.gitignore index d6a6261..1f125bf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,11 +1,12 @@ -ubl-util-standard.glade~ -ubl-settings-info -/css/ -/ui/ .vscode/ -/ubl-standard-ui.c -ubl-settings-info.glade~ -*ubl-settings-info.glade# -*.o -source/ubl-util-standard-ui.c -source/ubl-util-standard-ui.h \ No newline at end of file +ubl-settings-info +*~ +build/ +compile/ +*# +terminal-commands/ +source/ubl-cmake.h +vgcore* +.BUILD.md +.updatebuild.sh +.install.sh \ No newline at end of file diff --git a/Makefile b/Makefile index 62dc934..9a44772 100644 --- a/Makefile +++ b/Makefile @@ -8,23 +8,34 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -#CMAKE_SOURCE_DIR = ./source -#CMAKE_BUILD_DIR = ./compile -FILE_VERSION = VERSION.md -DEPENDS = /bin/cmake /bin/screenfetch -PREFIX ?= /usr +DEPENDS = /bin/cmake +PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) -#PKGNAME = ublexec +FILE_VER = source/${PKGNAME}.h +PKGIDENT=$(subst /,-,${PREFIX}) + +FILE_MO := $(PKGNAME).mo +LOCALE_DIR := ./locale default_target: all -.PHONY: all init depend debug prepare check build uninstall install clean up_ver help +.PHONY: all init depend debug prepare check build uninstall install clean help all: init build init: @echo "Initialize ..."; \ - sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-info.c; \ + if [ -d ".git" ]; then \ + LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ + if [ -z "$${LATEST_TAG}" ]; \ + then \ + LATEST_TAG=$$"0.0"; \ + echo "$${LATEST_TAG} is empty"; \ + fi; \ + else \ + LATEST_TAG="Development"; \ + fi; \ + sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -35,8 +46,8 @@ depend: exit 1; \ fi; \ done; \ + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" -# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." @@ -63,7 +74,8 @@ check: build: depend prepare @echo "Build ..."; \ - make --directory=${CMAKE_BUILD_DIR}; \ + $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ + sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ echo "Build: OK" uninstall: @@ -71,7 +83,7 @@ uninstall: @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ $(RM) "$${PATH_FILE_MO}"; \ done @for SIZE in 16x16 32x32 48x48 scalable; do \ @@ -85,9 +97,7 @@ uninstall: done @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" - @$(RM) "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/logo-background.png" - @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" + @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ @@ -97,33 +107,28 @@ uninstall: install: check uninstall @echo "Install ..." - @for FILE_PO in $(wildcard *.po); do \ - LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ - FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - echo "$${FILE_PO}"; \ - msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ + @for po in $(LOCALE_DIR)/$(PKGNAME)_*.po; do \ + lang=$$(basename $$po | sed -E 's/^$(PKGNAME)_([^.]+)\.po$$/\1/'); \ + file=$$(find ./locale/ -name '*_'"$$lang"'.po'); \ + msgfmt $$file -v -f -o ${DESTDIR}/usr/share/locale/$$lang/LC_MESSAGES/$(FILE_MO); \ done + @for SIZE in 16 32 48; do \ install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f png --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + done + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/apps/" "icons/apps/com.ublinux.${PKGNAME}.svg" + @for FILE_ICON in $(wildcard icons/*/*.svg); do \ + SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \ + install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/$${SUB_NAME}" $${FILE_ICON}; \ done - @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" \ - "logo-background.png" \ - "ublinux-logo.svg" + @ldconfig -n /usr/local/lib @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + [ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ fi @echo "Install: OK" @@ -136,14 +141,6 @@ clean: echo "Clean: OK"; \ fi -up_ver: - @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \ - MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \ - MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \ - VER="$${MAJOR}.$$(($${MINOR}+1))"; \ - sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \ - echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" - help: @echo "The following are some of the valid targets for this Makefile:"; \ echo "... all (the default if no target is provided)"; \ @@ -153,5 +150,4 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean"; \ - echo "... up_ver" \ No newline at end of file + echo "... clean" \ No newline at end of file diff --git a/VERSION.md b/VERSION.md deleted file mode 100644 index bd38345..0000000 --- a/VERSION.md +++ /dev/null @@ -1 +0,0 @@ -VERSION 1.3 \ No newline at end of file diff --git a/gresource.xml b/gresource.xml new file mode 100644 index 0000000..82adf4b --- /dev/null +++ b/gresource.xml @@ -0,0 +1,9 @@ + + + + ubl-settings-info.glade + + + ubl-settings-info.css + + \ No newline at end of file diff --git a/com.ublinux.ubl-settings-info.svg b/icons/apps/com.ublinux.ubl-settings-info.svg similarity index 100% rename from com.ublinux.ubl-settings-info.svg rename to icons/apps/com.ublinux.ubl-settings-info.svg diff --git a/icons/emblems/com.ublinux.ubl-settings-info.logo-dark.svg b/icons/emblems/com.ublinux.ubl-settings-info.logo-dark.svg new file mode 100644 index 0000000..c7c383c --- /dev/null +++ b/icons/emblems/com.ublinux.ubl-settings-info.logo-dark.svg @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + Linux + + diff --git a/ublinux-logo.svg b/icons/emblems/com.ublinux.ubl-settings-info.logo.svg similarity index 100% rename from ublinux-logo.svg rename to icons/emblems/com.ublinux.ubl-settings-info.logo.svg diff --git a/ubl-settings-info.pot b/locale/ubl-settings-info.pot similarity index 100% rename from ubl-settings-info.pot rename to locale/ubl-settings-info.pot diff --git a/ubl-settings-info_ru.po b/locale/ubl-settings-info_ru.po similarity index 69% rename from ubl-settings-info_ru.po rename to locale/ubl-settings-info_ru.po index 81e99cd..867e08b 100644 --- a/ubl-settings-info_ru.po +++ b/locale/ubl-settings-info_ru.po @@ -19,20 +19,8 @@ msgstr "" #: source/ubl-settings-info.c:41 msgid "Basic System Information" -msgstr "Основная информацией о системе" +msgstr "Основная информация о системе" #: source/ubl-settings-info.c:38 source/ubl-settings-info.c:67 source/ubl-settings-info.c:68 msgid "System Information" msgstr "Информация о системе" - -#: source/ubl-settings-info.c:40 -msgid "Project Home Page" -msgstr "Домашняя страница проекта" - -#: source/ubl-settings-info.c:45 -msgid "About System info" -msgstr "О программе Информация о системе" - -#: source/ubl-settings-info.c:70 -msgid "About" -msgstr "О программе" diff --git a/logo-background.png b/logo-background.png deleted file mode 100644 index 8eb67cbc38babeaf498d981356cf7e77e2741f12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33872 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 z -#include -#include -#include -#include -#include "ubl-util-standard.c" -#define cssPath "/usr/share/ubl-settings-info/css/ubl-settings-info.css" -#define gladePath "/usr/share/ubl-settings-info/ui/ubl-settings-info.glade" -#define HeadBackgroundImagePath "/usr/share/ubl-settings-info/images/logo-background.png" -#define LogoImagePath "/usr/share/ubl-settings-info/images/ublinux-logo.svg" -#define LocaleName "ubl-settings-info" -#define LocalePath "/usr/share/locale" +#include "ubl-settings-info.h" -typedef char* string; -string version_application = "1.3"; +config main_config; -#define _(String) gettext(String) - - -char *yon_char_get_augumented(char *source, char *append){ - int size=strlen(source)+strlen(append)+1; - char *final=malloc(size); - memset(final,0,size); - sprintf(final,"%s%s",source,append); - return final; +void yon_terminal_style_update(VteTerminal *, main_window *widgets){ + GdkRGBA *bg_color = NULL, *color=NULL; + gtk_style_context_get(gtk_widget_get_style_context(widgets->TerminalTemplateLabel),GTK_STATE_FLAG_NORMAL,GTK_STYLE_PROPERTY_BACKGROUND_COLOR,&bg_color,GTK_STYLE_PROPERTY_COLOR,&color,NULL); + vte_terminal_set_color_background(VTE_TERMINAL(widgets->InfoTerminal),bg_color); + vte_terminal_set_color_foreground(VTE_TERMINAL(widgets->InfoTerminal),color); + vte_terminal_set_color_cursor_foreground(VTE_TERMINAL(widgets->InfoTerminal),bg_color); + vte_terminal_set_color_cursor(VTE_TERMINAL(widgets->InfoTerminal),bg_color); + if (bg_color->blue>0.5&&bg_color->green>0.5&&bg_color->red>0.5){ + gtk_image_set_from_icon_name(GTK_IMAGE(widgets->InfoIcon),logo_icon_path,GTK_ICON_SIZE_BUTTON); + gtk_image_set_pixel_size(GTK_IMAGE(widgets->InfoIcon),255); + } else if (bg_color->blue<0.5&&bg_color->green<0.5&&bg_color->red<0.5){ + gtk_image_set_from_icon_name(GTK_IMAGE(widgets->InfoIcon),logo_dark_icon_path,GTK_ICON_SIZE_BUTTON); + gtk_image_set_pixel_size(GTK_IMAGE(widgets->InfoIcon),255); + } } -char *yon_cut(char *source, int size, int startpos){ - char *cut=NULL; - cut=malloc(size+1); - memset(cut,0,size+1); - memcpy(cut,source+startpos,size); - return cut; -} -void on_about(GtkWidget *button){ - GtkBuilder *builder = gtk_builder_new_from_file(gladePath); - GtkWidget *AboutButtons = GTK_WIDGET(gtk_builder_get_object(builder,"AboutButtons")); - GtkWidget *About = GTK_WIDGET(gtk_builder_get_object(builder, "About")); - GtkWidget *HeaderAboutTopic = GTK_WIDGET(gtk_builder_get_object(builder, "headerAboutTopic")); - gtk_about_dialog_set_version(GTK_ABOUT_DIALOG(About),version_application); - gtk_about_dialog_set_comments(GTK_ABOUT_DIALOG(About),_("System Information")); - gtk_about_dialog_set_program_name(GTK_ABOUT_DIALOG(About),"ubl-settings-info"); - gtk_widget_show(GTK_WIDGET(gtk_builder_get_object(builder,"About"))); - gtk_about_dialog_set_website_label(GTK_ABOUT_DIALOG(About),_("Project Home Page")); - gtk_label_set_text(GTK_LABEL(HeaderAboutTopic),_("About System info")); - gtk_widget_set_visible(AboutButtons,0); +void on_theme_changed(GSettings *, char *, main_window *widgets){ + yon_terminal_style_update(NULL, widgets); } -void yon_on_window_close_dont_destroy(){ +/**yon_main_window_complete(main_window *widgets) + * [EN] + * + * [RU] + * Функция настройки основного окна приложения. [widgets] - структура со стандартным интерфейсом. +*/ +void yon_main_window_complete(main_window *widgets){ + widgets = yon_remalloc(widgets,sizeof(main_window)); + GtkBuilder *builder = gtk_builder_new_from_resource(glade_path); + gtk_box_pack_start(GTK_BOX(widgets->InterfaceBox),yon_gtk_builder_get_widget(builder,"BoxMain"),1,1,0); + // Custom widgets configuration + { + widgets->InfoIcon = yon_gtk_builder_get_widget(builder,"InfoIcon"); + widgets->InfoTerminal = yon_gtk_builder_get_widget(builder,"InfoTerminal"); + widgets->TerminalTemplateLabel = yon_gtk_builder_get_widget(builder,"TerminalTemplateLabel"); + } + { + yon_terminal_integrated_start(widgets->InfoTerminal,main_command); + yon_terminal_style_update(NULL, widgets); -} + GSettings *settings = g_settings_new("org.gnome.desktop.interface"); + g_signal_connect(G_OBJECT(settings), "changed",G_CALLBACK(on_theme_changed),widgets); + + } + GList *children = gtk_container_get_children(GTK_CONTAINER(widgets->RightBox)); + gtk_widget_hide(GTK_WIDGET(g_list_nth_data(children,0))); + gtk_widget_hide(widgets->LeftBox); + gtk_widget_hide(widgets->StatusBox); + g_list_free(children); +} -int main(int argc, char *argv[]){ - int argsc=0; - char *arv=""; - char **argsv=&arv; - GError *err=NULL; - gtk_init(&argsc, &argsv); +int main(int argc, char *argv[]){ setlocale(LC_ALL, ""); - bindtextdomain (LocaleName, LocalePath); textdomain (LocaleName); - GtkBuilder *builder = gtk_builder_new_from_file(gladePath); - GtkWidget *plugBox = GTK_WIDGET(gtk_builder_get_object(builder, "plugBox")); - GtkWidget *labelInfo = GTK_WIDGET(gtk_builder_get_object(builder, "InfoLabel")); - GtkWidget *iconInfo = GTK_WIDGET(gtk_builder_get_object(builder, "InfoIcon")); - GtkWidget *headLabel = GTK_WIDGET(gtk_builder_get_object(builder, "headLabel")); - GtkWidget *HeaderTopic = GTK_WIDGET(gtk_builder_get_object(builder, "headerTopic")); - GtkWidget *AboutButton = GTK_WIDGET(gtk_builder_get_object(builder,"MenuItemAbout")); - GtkWidget *buttonSettings = GTK_WIDGET(gtk_builder_get_object(builder,"buttonSettings")); - GtkWidget *headBackgroundIcon = GTK_WIDGET(gtk_builder_get_object(builder,"HeadBackgroundImage")); - GtkWidget *headOverlay = GTK_WIDGET(gtk_builder_get_object(builder,"HeadOverlay")); - GtkWidget *headbox = GTK_WIDGET(gtk_builder_get_object(builder,"boxColor")); - gtk_image_set_from_file(GTK_IMAGE(headBackgroundIcon),HeadBackgroundImagePath); - gtk_overlay_add_overlay(GTK_OVERLAY(headOverlay),headbox); - gtk_label_set_text(GTK_LABEL(HeaderTopic),_("System Information")); - gtk_label_set_text(GTK_LABEL(headLabel),_("System Information")); - g_signal_connect(G_OBJECT(AboutButton), "activate", G_CALLBACK(on_about),NULL); - gtk_menu_item_set_label(GTK_MENU_ITEM(AboutButton),_("About")); - gtk_image_set_from_pixbuf(GTK_IMAGE(iconInfo),gdk_pixbuf_new_from_file_at_size(LogoImagePath,256,256,&err)); - if (err){ - printf("%s\n",err->message); - g_error_free(err); - } - GtkCssProvider *css=gtk_css_provider_new(); - gtk_css_provider_load_from_path(css,cssPath,&err); - if (err){ - printf("%s\n",err->message); - g_error_free(err); - } - gtk_style_context_add_provider_for_screen(gdk_screen_get_default(), - GTK_STYLE_PROVIDER(css), - -1); - FILE *fp; - char path[1035]; - char *loc=setlocale(LC_ALL,NULL); - if (strcmp(loc,"ru_RU.UTF-8")==0) - fp = popen("screenfetch -N -n | sed 's/OS:/Система:/' | sed 's/Kernel:/Ядро:/g' | sed 's/Uptime:/Время работы:/g' | \ - sed 's/Packages:/Установлено пакетов:/g' | sed 's/Shell:/Оболочка:/g' | sed 's/Resolution:/Разрешение:/g' | sed 's/DE:/Среда рабочего стола:/g' | \ - sed 's/WM:/Оконный менеджер:/g' | sed 's/WM Theme:/Тема оконного менеджера:/g' | sed 's/GTK Theme:/Тема GTK:/g' | sed 's/Icon Theme:/Тема значков:/g' | sed 's/Font:/Шрифт:/g' | \ - sed 's/Disk:/Диск:/g' | sed 's/RAM:/Оперативная память:/g'", "r"); - else fp = popen("screenfetch -n -w -N", "r"); - if (fp == NULL) { - printf("Failed to run command\n" ); - exit(1); - } - char *line=NULL; - line=""; - char *prevline=""; - char *pth; - char *preph=""; - line=""; - while (fgets(path, sizeof(path),fp)!=NULL){ - - line=strstr(path,": "); - if (line!=NULL){ - line=yon_cut(line,strlen(line),1); - int size=strlen(path)-strlen(line)+1; - pth=yon_cut(path,size,0); - pth=yon_char_get_augumented("",pth); - pth=yon_char_get_augumented(pth,""); - line=yon_char_get_augumented(pth,line); - } else { - line=path; - pth="\n"; - line=yon_char_get_augumented(pth,line); - if (strlen(line)>40){ - char *fnd=strstr(line," "); - *fnd='\n'; - } - } - prevline=yon_char_get_augumented(prevline,line); - } - prevline=yon_char_get_augumented(prevline,"");; - gtk_label_set_text(GTK_LABEL(labelInfo),prevline); - gtk_label_set_markup (GTK_LABEL(labelInfo),prevline);; + yon_ubl_connect_config((_template_config*)&main_config); + yon_ubl_window_init(TITLE_LABEL,TITLE_INFO_LABEL,LocaleName,CssPath,LocaleName,version_application,WIKI_LINK); + config_str unfound = NULL; + int size=0; + yon_ubl_setup_arguments(argc,argv,&unfound,&size,NULL); + gtk_init(&argc,&argv); + template_main_window *widgets = yon_ubl_window_setup(); - int socket_id=0; - int socket_ext_id=0; - int socket_trd_id=0; - int option_index=0; - int textsize=0; - int pointer=0; - static struct option long_options[] = { - {"socket-id", 1, 0, 's'}, - {"socket-ext-id", 1, 0, 'e'}, - {"socket-trd-id", 1, 0, 't'}, - }; - int socket_find; - for (int i=0;i +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ubl-strings.h" + +#define _(String) gettext(String) + +#define glade_path "/com/ublinux/ui/ubl-settings-info.glade" +#define CssPath "/com/ublinux/css/ubl-settings-info.css" +#define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) +#define icon_path "com.ublinux.ubl-settings-info" + +#define logo_icon_path "com.ublinux.ubl-settings-info.logo" +#define logo_dark_icon_path "com.ublinux.ubl-settings-info.logo-dark" + +#define LocaleName "ubl-settings-info" + +#define main_command "fastfetch --logo none --disable-linewrap --config all.jsonc" + +typedef char* string; + +__attribute__((unused)) static \ +string version_application; + +typedef struct { + template_config_fields + int save_config; + config_str launch_arguments; + int launch_size; +} config; + +typedef struct { + template_window_fields + GtkWidget *InfoIcon; + GtkWidget *InfoTerminal; + GtkWidget *TerminalTemplateLabel; +} main_window; + + + +void yon_main_window_complete(main_window *widgets); +void on_theme_changed(GSettings *, char *, main_window *widgets); +void yon_terminal_style_update(VteTerminal *, main_window *widgets); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h new file mode 100644 index 0000000..09a417d --- /dev/null +++ b/source/ubl-strings.h @@ -0,0 +1,4 @@ + +#define TITLE_LABEL _("System Information") +#define TITLE_INFO_LABEL _("Basic System Information") +#define WIKI_LINK _("https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-info") diff --git a/source/ubl-util-standard.c b/source/ubl-util-standard.c deleted file mode 100644 index 8dff154..0000000 --- a/source/ubl-util-standard.c +++ /dev/null @@ -1,82 +0,0 @@ -#include "ubl-util-standard.h" -#ifndef __cplusplus -#ifndef UBL_GET_STANDARD_UI -#define UBL_GET_STANDARD_UI - - -inline returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id){ - returnstruct *ret=(returnstruct*)malloc(sizeof(returnstruct*)); - if (left_plug_id>0&&LeftWidget){ - GtkWidget *plug=gtk_plug_new(left_plug_id); - GtkWidget *toplug=LeftWidget; - gtk_widget_set_visual(plug,gdk_screen_get_rgba_visual(gtk_widget_get_screen(plug))); - gtk_widget_set_app_paintable(plug,1); - if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ - g_object_ref(G_OBJECT(toplug)); - GtkWidget *parent=gtk_widget_get_parent(toplug); - gtk_container_remove(GTK_CONTAINER(parent),toplug); - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - } else - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - gtk_widget_show(GTK_WIDGET(plug)); - ret->plugLeft=plug; - gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); - gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"button"); - gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"opacited"); - gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"color"); - } - if (right_plug_id>0&&RightWidget){ - GtkWidget *plug=gtk_plug_new(right_plug_id); - GtkWidget *toplug=RightWidget; - gtk_widget_set_visual(plug,gdk_screen_get_rgba_visual(gtk_widget_get_screen(plug))); - gtk_widget_set_app_paintable(plug,1); - if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ - g_object_ref(G_OBJECT(toplug)); - GtkWidget *parent=gtk_widget_get_parent(toplug); - gtk_container_remove(GTK_CONTAINER(parent),toplug); - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - } else - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - gtk_widget_show(GTK_WIDGET(plug)); - ret->plugRight=plug; - - GtkStyleContext *context = gtk_widget_get_style_context(plug); - gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); - gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"opacited"); - gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"color"); - } - return ret; -} - -#endif - -#else - - -inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id){ - if (left_plug_id>0&&LeftWidget){ - GtkWidget *plug=gtk_plug_new(left_plug_id); - GtkWidget *toplug=GTK_WIDGET(LeftWidget->gobj()); - if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ - g_object_ref(G_OBJECT(toplug)); - GtkWidget *parent=gtk_widget_get_parent(toplug); - gtk_container_remove(GTK_CONTAINER(parent),toplug); - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - } else - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - gtk_widget_show(GTK_WIDGET(plug)); - } - if (right_plug_id>0&&RightWidget){ - GtkWidget *plug=gtk_plug_new(right_plug_id); - GtkWidget *toplug=GTK_WIDGET(RightWidget->gobj()); - if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ - g_object_ref(G_OBJECT(toplug)); - GtkWidget *parent=gtk_widget_get_parent(toplug); - gtk_container_remove(GTK_CONTAINER(parent),toplug); - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - } else - gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); - gtk_widget_show(GTK_WIDGET(plug)); - } -} -#endif \ No newline at end of file diff --git a/source/ubl-util-standard.h b/source/ubl-util-standard.h deleted file mode 100644 index 3209625..0000000 --- a/source/ubl-util-standard.h +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef __cplusplus -#include -#include - -typedef struct { - GtkWidget *plugLeft; - GtkWidget *plugRight; - - -} returnstruct; -static returnstruct *ubl_make_plugs(GtkWidget *LeftWidget, GtkWidget *RightWidget, int left_plug_id, int right_plug_id); -#else -#include -#include -#include -#include - - -static void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, int left_plug_id, int right_plug_id); -#endif \ No newline at end of file diff --git a/ubl-settings-info.css b/ubl-settings-info.css index c5e34f2..a036e37 100644 --- a/ubl-settings-info.css +++ b/ubl-settings-info.css @@ -1,44 +1,131 @@ +.thin { + margin:0px; + padding:0px; +} +.noborder { + border:none; +} +.nobackground { +background:transparent; +} +.nobackground:active { +background:transparent; +} .textHead{ text-shadow: 2px 2px @theme_bg_color; color: @theme_text_color; } -.button { - background-image: -gtk-gradient(linear, - left top, left bottom, - from(@entry_background_a), - color-stop(0.20, @entry_background_b), - color-stop(0.85, @entry_background_c), - to(@entry_background_d)); -} -.opacited { - transition: 0ms ease-out; - opacity:0.98; +.inherited>* { border:none; - border-radius:0px; -} -.color { - background-color: inherit; + background:inherit; } -.menuitemsolo { - border-color:alpha(@theme_text_color, 0.4); - border-style:solid; - border-width:inherit; +.workingbg { + background:@theme_base_color; } -.menuitemsolo *{ +.menuitembottom{ + margin-top:0px; + margin-bottom:3px; + border-color:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitemmiddle{ + margin-top:0px; + margin-bottom:0px; + border-color:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + + .menuitemtop{ + margin-bottom:0px; + border-color:inherit; + border-top-width:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitemtop >*{ + margin:6px 2px 0 2px; + padding: 3px 10px 3px 5px; + border:transparent; + } + .menuitemmiddle >*{ + margin:0 2px 0 2px; + padding: 3px 10px 3px 5px; + border:transparent; + } + .menuitembottom >*{ margin:0 2px 2px 2px; - padding: 3px 10px 5px 5px; -} -.menuitemsolo:hover { + padding: 3px 10px 3px 5px; + } + .menuitemtop:hover { background:@theme_bg_color; - border:inherit; + border-color:inherit; + border-top-width:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitemmiddle:hover { + background:@theme_bg_color; + border-color:inherit; + border-left-width:inherit; + border-right-width:inherit; + } + .menuitembottom:hover { + background:@theme_bg_color; + border-color:inherit; + border-bottom-width:0px; + border-left-width:inherit; + border-right-width:inherit; -} -.menuitemsolo:hover* { + } + .menuitemtop:hover>* { + margin:6px 2px 0 2px; + padding: 3px 10px 3px 5px; + background:@theme_selected_bg_color; + border-radius:2px; + } + .menuitemmiddle:hover>* { + margin:0 2px 0 2px; + padding: 3px 10px 3px 5px; + background:@theme_selected_bg_color; + border-radius:2px; + } + .menuitembottom:hover>* { margin:0 2px 2px 2px; - padding: 3px 10px 5px 5px; + padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; - border-color:transparent; - border-radius: 2px; + border-radius:2px; + } + .boxInfoMessError{ + background-color: #ea9999; +} + +.boxInfoMessOK{ + background-color: #f3f0ac; +} +.errorBox { + border-width: 2px; + border-color: #ea9999; + border-style:solid; } + +.chosenOutline{ + transition: 0ms; + border-width: 1px; + border-color: #f3f0ac; + border-style:solid; +} + +.debugborders *{ + border-width: 2px; + border-color: #000000; + border-style: solid; +} + +.terminaltemplate{ + background: @theme_bg_color; + color: @theme_fg_color; +} \ No newline at end of file diff --git a/ubl-settings-info.glade b/ubl-settings-info.glade index d061f72..b5dc339 100644 --- a/ubl-settings-info.glade +++ b/ubl-settings-info.glade @@ -2,83 +2,19 @@ + - - False - False - True - center - com.ublinux.ubl-settings-info - dialog - True - ubl-settings-info - 1.1 - Copyright © 2022 - 2023, UBSoft LLC - System info - https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-info - Project Home Page - UBGroup - UBGroup - com.ublinux.ubl-settings-info - gpl-2-0 - - - True - False - vertical - 2 - - - False - end - - - False - False - 1 - - - - - - - True - False - True - - - True - False - 5 - 5 - 5 - 5 - 2 - System info - - - - - - - - - + True False - - 90 + True False - 5 - 5 - 5 - 5 - 6 - 6 - 69 - com.ublinux.ubl-settings-info + center + 1 + 255 + com.ublinux.ubl-settings-info.logo False @@ -87,52 +23,17 @@ - + True - False - - - True - False - - - True - False - vertical - - - 255 - True - False - System Info - - - - - - - - True - True - 0 - - - - - False - True - 0 - - - - - True - True - 0 - - + True + natural + natural + UTF-8 + True + False + True @@ -140,6 +41,34 @@ 1 + + + True + False + vertical + + + False + True + 2 + + + + + True + False + center + 10 + 10 + 10 + 10 + label + True + 0.019999999552965164 + 0.5 + True @@ -158,182 +87,4 @@ - - False - com.ublinux.ubl-settings-info - - - True - False - vertical - - - True - False - vertical - - - True - False - vertical - - - 81 - True - False - - - True - False - start - gtk-missing-image - - - -1 - - - - - False - True - 0 - - - - - False - True - 1 - - - - - True - False - True - True - vertical - - - True - False - True - True - - - True - False - center - 1 - gtk-missing-image - 255 - - - True - True - 0 - - - - - True - False - center - 10 - 10 - label - 0.019999999552965164 - 0.5 - - - True - True - 1 - - - - - False - True - 0 - - - - - False - True - 2 - - - - - True - True - 0 - - - - - - - True - False - True - - - True - False - 5 - 5 - 5 - 5 - 2 - System info - - - - - - - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 32 - com.ublinux.ubl-settings-info - - - - - True - True - True - False - True - True - menu2 - none - - - - - - - end - 1 - - - - - - From e5526c7c36ba604116000250d4389d532ce7d36b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 27 May 2025 18:04:44 +0600 Subject: [PATCH 3/8] Replaced svg pictures with png --- gresource.xml | 4 + ...om.ublinux.ubl-settings-info.logo-dark.png | Bin 0 -> 8700 bytes icons/com.ublinux.ubl-settings-info.logo.png | Bin 0 -> 8757 bytes ...om.ublinux.ubl-settings-info.logo-dark.svg | 199 --------------- .../com.ublinux.ubl-settings-info.logo.svg | 241 ------------------ source/CMakeLists.txt | 2 + source/ubl-settings-info.c | 4 +- source/ubl-settings-info.h | 4 +- 8 files changed, 10 insertions(+), 444 deletions(-) create mode 100644 icons/com.ublinux.ubl-settings-info.logo-dark.png create mode 100644 icons/com.ublinux.ubl-settings-info.logo.png delete mode 100644 icons/emblems/com.ublinux.ubl-settings-info.logo-dark.svg delete mode 100644 icons/emblems/com.ublinux.ubl-settings-info.logo.svg diff --git a/gresource.xml b/gresource.xml index 82adf4b..03f7e94 100644 --- a/gresource.xml +++ b/gresource.xml @@ -6,4 +6,8 @@ ubl-settings-info.css + + com.ublinux.ubl-settings-info.logo.png + com.ublinux.ubl-settings-info.logo-dark.png + \ No newline at end of file diff --git a/icons/com.ublinux.ubl-settings-info.logo-dark.png b/icons/com.ublinux.ubl-settings-info.logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..5e2063f42335e1dcff53a25a7d784a851a707508 GIT binary patch literal 8700 zcmaJ{WmHsQw?0FM!~jy#As~WuNb68iA}yeFNXO6&gMwnv-5}C1bU37>%FroY(%sEH z-nG89zWe9?m^pLaIkEHEdq3;__*_$&govI9000tI71#>^fPgG@wiHMHJkgy9IUZ{HhtF!7Vc0EkNe5O{b|CdyXY&x zx9@QJmDP>M3Z@EpLckhA{{McdIDSI|*-EE^83=POCR{+7T&Gw~+Fy5^V^Ir>!ge4%6$0%G|)pa_~muW;Xj0k-}0fCA2 z5r0a`)R~k!f^m?Y@Ko2=-lkeDG#%c6O89U&s{pk}y|tg|uj$_s;XLXr5Hmfd$b^Qw zu}S;1txcm;3Zt-#r!}(M_Kiz~g@p>9;OlX%BTr4_=edA8dZs-J)u9C5WBjLAI&e<5 z#}okdkki(YrIA{4&%9ufgFP|C!BZx{e}=b8ybz^G%MLMvoEyxgkJ9!ve@NcNjY6R_ zBDAAEW~y@fWxYwx*N2OKwWI((hP!k5plnur0U})*%G^Mhbc0y^I!|0&h#n35ZMwRcuZ zKP|}^b#T2QoX_pWGuW`zp9((;fXF(+e_j_K)GaLsO|2-)8h(GA|FA^QRHZToc%J3Z z3MNBx3ymY5$GHQDSI=ECbdbzq-Gbd8af8R(2==k-+8f{3h zM?PA^AvW3dO)J*Ad!H3zR+(0j5j;>1%&X~*TX4dT@|e2f&<4`4i&33@9DsU^cRJUj z>5$9CM)h&$CuR@v2CG|%`ejEuC!%rWO9C6z6IZdKu@vZ2%&42EKx*rV}=A90Wh$xG7C_-6{_&OlZnO1U~T zIjgBidoLs9uZLGLs*8vNV53`7?S*fM3p!M7p+QZP2C{-z#_`B7Pk&K{7j3FqQ2>l~ zG8*2jNK4&uw#SMIjLIyKf%jV#!&)H;2ROk&-_X=h;v*F51J`(q(5BjGJO@1?vVA#X z|7alnD(m5J4JW7w9w7kK?^bl{@gkU|-YO(8o*`psDZ1@B@C4`&Qyo zZsNi_*b*9W88#?`bT2n&JX6W}yL=_M=zg3uWN*eE9f_4zhGvM4BITFT{5t$4h7G9f zmUBhnIk95rgLX57II#`w7MRL<)NDM%*lYqnlh$~inM*r1=y<^b1oZ9u_O|g8FgHqY z9-E54pBEdf(Md$E?>GEHa%%(@yw}&mhfnzsB3bAp!zyFo`AG=S(Y=SIenpHd!gk%?qo$urja@b3Rb z3FRtGzAp&srbwQ_k~jSFbT}$AG5o4=%WLYa=uL%9yI14>xmd}KMe67d14RlBQpIP7 z>3jW3=OGc@SJjy=PFiPG^w>2uSRzrXs#+Fl$~3hlMfWCYh7I=At9M|Kx> z*Xt!(*;4>*F<}HWnPLRHm@n@vgpWfpjHKMmyd=wK_)PD%KTrry<#>_@@4galkPBFH! zl4`Vjh~Mfmkn05JaLE85BR(}z^BHScmp5qJlG1KdKBB9$`%cf z*TOGz*`rcSn?D4&Nh!xE%TnE)*K>)fVqRdA$e{L4zj!^`52Y_!-{6e(lRIG>jp6OG)IPI@uEcOBl$81?mt}mtFv?nzu5) z-(Y4ObdJaDKB{BMbJuhle^k}Ff})Kwjeun00SF9q?o3E(M2AWD= z3eS37Dl>J=8*Z9oA84EoS~S^5+3Az$z1p0Ga=s4BLUi-5IK;L*mOMwubHi>Fkw@+A ziQZ_+P#L2N5EimfCbk-SvF=sIb3F+bLKWH>b-$M_&dP=VIk(x`GJd7=A>9ABDk~0CZ50d>yM5UeyYH`0@BL75*HHtuSVTRoO(il68Fz`_8`n#$Sfa>mm~f!L|fcy$vkjKCPS zUOjE=_r4Ht`g6}GXqX?&fD8;ac><-~8>QP>-@Fn=6)|^wmWQipKRP9BT?GNNsyd2W z!xp+njo+DaFG;yk7(WgmBscx}#62#mldk2S=19Fw@ulSP@x>fIf89iDx&x^E#FI}? z+yB~HSOepP6%_rMJYI zvSZcFr5x+nS(3CuxpVE}UAhWzptEgJd^{)nPnygPD7*GZaVk%svFZ@M{L{~pukkxA zX{IBr@{38b4DB3A7iYrflE!YMn$Po&o$jhK0~&lQ(~u*~FOl5WIcQsJZbmu%<}I^6 z1%u;l9&Z4=pys}e9sNMQRORsK^m`D{o=*%jO<5=VHX0zjJysbE6^8IznPO|Bhr$Fr z<%4+wm4yaocvrfe3N2RBkm^SFA41Glq`njZ5}Rio(v3O7nCVS9(N6U1_^xN*oz9fl z^NpVk!-Zsn(tLTL0rl$IAp7O(QU)V#a0G54$)D0QMGEX7Y|_@{Prq=)JS; zubG`Mk`A@4a&~Kjj&rJ_76o<;=e10c&z<5Dl2|F^DHuzyGylLJiL#>l7L z_g!_m!}3`J58XC7S7v&_>e_0c=kW3t6lGwe-$6WO@>aN|kzq+Gus^Q342-*smg9W4 z8KZ9X?(cq!qyAiMz4o&RQ5UBP^Otk_Y~W3!WGzBY)-0}j%PFhQXe_N+0s5IL%fnvz z$Sw7UXmb(jIltW8#9O8(IO>m2bsL2@X}Cqs=le%rI||nX6-V*?ck$ATcmB}TA9As~t!gP*e6FKlcKY)UG)+!p z9_c7Nya43_%c`LJPG|qK=ePXn)*UL({vWE>2ZD^w)XJ8)x+rv9I$MPCd8v{sS{BQq+l8Ntjg;8E~J7E+;n*L`xMrmL!0PFoD|H5!m;WBhy@e7brwM4egK`#f##DV)%>aWhb!CQxPJ?Fz3Tl6XjEl;oKqgWX+X$ zxtG00H%@vKfD@Qd7FSEW6>XK_7s@^UP z^=;-UYqPF;Ed(FuDvkvN=6gw|-1@3l%l{Y`qN&UWz-qnNhW}dNI80C~3J|a>c40;c zEcp)8kbFcDZa${I+72`k+9WF|DK#+FY>NfLo`6mmmoa)Pc$k=48=kb*nEqF<-e-k* z-sn3XUv~M1`$GjAEU&hW{<_7vdo4fsXvn&IX~>kpR%?`#vnJ(233I#Y@3RxGwQQWq z4NfO7EY-*(ujl-IE^2C$Ja>5Nk7KI%@S?{sWMW%zc9+%d+)Kjdi&-BJ` z&#qg>7C^`r2r!c~@jX$kw>Tp|N@&2+S;H7MSd%5(UaDQ~zau%g>qMgpbPx#d4JOE( z+4V3@*Db@-5RR-$84>`y)>h;K_9bf%-UoQmVi~E~%*l(!>rv8@mo0REMd4s2A|V7Q zL)sq8&Z23UU1mOa-|osth>(DlpnJYKP~hhbF&EXbl6k-LT6${e+eXK~T!h8ccRpy} zwS(!IV*hs705f4@KFC_{%p#FF_des?eMf5G&Isos%E#QaJEHP>Lc5kZ$Yp7Dy^qQ& zFPBaHa6XUrd-D2#V`a-+^pgdFjTBPNqBo9&U$Z6cHqL`8x{#&La*lTa_&WhkZ{AYd zm2=>t0M%WPXGWm$BTD+`GeShMjGW3dTHa5%hOeG*p*_1iGCM)YOWl)qm-C|8E@c1uJvil> z^5uoD2$sPIL^OG^iKd(CVSgrZm8@3ZhF_% zrul4m*hh>2S?Rbe2<4Hmddnx+f_y4u!xI|@(wn;DIWLFiAPoE-Y2Dicdjy7=o_ht) z%z3})k@9&u^d3ky=q1K*FDEvVe79t#?MktPwyrQff3*0XFcUhw49@45;AkyE0c_`N z5elP*4E@u71cHRd<9AmqK3G4(A7y=m)e^jUha->kUmQs&hPj-8NN8WU5JslUcQ{gn zx*x3y(8dWmznr7$mBhyw6r&V9krmID_TsS1FtgccD&8n?@&?DeRm$Nfz*D_(wwoTC zq4T~;1DobNG&ygyX>g8iUBJpzu!83Us3~z2163A-9_4-aImQD4@8 z%Ae!yiHHZip484ay!mY98M${1$Q3NBr^phRcVhvG1t?C{#$1PsxC`s5<`<@6AXU&Y z@WZ;hk)YLVv}S_BQpzD9Na*2kc;dHAA_g`5L`Je0>uy2iW0;6|loF+Jf^-~JkLQx& z4xrA~6JZ%l_lgF%lN(U+$C{7T z8y`|M{s=lOUidZ}P3|T_h=h4%aB+5rXTB4>H$Pj{^O02V-H~r_)(OrtX}+Rjs1ryW zBBup2n9#Az99_LCSL`!zaz0D^9hC86;d9e3Ye_iB(B&_uX+Rs6!0QrpLhazxV}V>m zs514IVF*a+F{bI4$UycgiX0#S);6xW-?n>y511!|(S@zlBL~L~#>Pr_0#@chgF>wH z=@?D&j8orN^r}f`7X2dyry+(WE8i|nBcg_}+epHum?AMa+j`0b-Uf+2Cmpux<{-tA zx+b;|JPe|qAQbv*I%Ll2Z zt)z-)9`9Y`%B@bs@5gabfYzt@$#mQLoxVEsPMXCQ(Io8KoOVON${P<}$|8`^C5}|? znfauO@u8Z(@_MNU-B<OO@sTV$^5h8I7)#JJ{yGy?Y{f2v%qmMEJ_vsfzj=`^~*oMOFJP?SR z$80eq!Xcb0fTy;C!Vd!g#E%c;>7XOEL2VRCKUi`jWdT2|0;`n+SBXZH%UrYGryfdb zux}-_wzh7Eo3=FPh{39-|GGC#&Gug-ZZ$B|3wVtDiJJ-SG*sKOO$`mh>y5arT9CBg z7-iEXSBW;+%-yFph{0{I7Im0**{1lxE&lu?=eo;dyNl!V00ZF6P1&h!Vb3z~@?^&A zY)-JMef6-H^Q&`om#YNB;lbgdw~~&5z5P0wh{mPSH!s*xcF$iwo|Ib0tIWK)c`ots*Q3^xX^?4l5CF3;6JE zZ@nO44*(#IuJHAT_KG{LLAU@kwCUBZEuashXQ3h@v0l+uGO*bBQ`KE+KS=~c_q{41 z`p{nW<;b4%fKUGI;duZT`Jghuq_j+P8;vJ?NT1p7-9VVzsb_A!@Qlq*@P!l`{m$v7 zE$w=2a!p)ZTq5~-Cm9>Mu%Mt|M5P7n>!VsLD=SgB<<0Q+=)Px=@}H}RMhN@L_Jw*z zWb|nK>19B(2b<`@<@G66{eXN>KiUK(M{j2f(qJFAjQ}ITjZN*cafg#^*1V13d@V-g zKETE(z5|q7o$kzR&kDxJ$CKdiMFpGRV$W-~E57`KBY)sZF-TeTdF?^n)HNM+#wE*M zE`Rv^vKH}NTRXaR^P&exgI?H;!2`ceZP#vpzC z4j#2H?CnArT;?wd6%`eg#sUo!aFEB2xO-U8UhF-gFMR43)X;Fj+#(4!HZKW=aR|5g zfY;z`lYdKKg@4oRX0mTuu=&k``*+0f`GZo0X1wYMM!?ytVaA2w{N30!c_LO=y%Ay6 z`iBo)iUV2GZ{DYd)citWU+Ar<3TX4n|xXW{M#X1qP1pw9LsxhUv2$Jk?82E`xtJ zi8n11*auOmIgs?j($LNIrGfVdx13xMJ~IE#(dybvgLmXaT;3}<{P-G>6&^Su1@e{N zbYLQBsHty?dqRyuaO4+LGcq%o_pA7UHT2CxWLRD4g6o7BM8N826t(GiH+I2i1@BFV zH*fN~vzU9L02Rmh-rnB#s~I$R@5WO^&&dyO@sGs0e){yOmSWJ!bSsaafmDlD$V%m# zBwj5TD-$==+o&g)M)nu?zG^bu&6qdgA7=(0?rt5!JU631N5ur=$YWWqkbP}>A6A>H z{rT><{QS8)^QoF9=r-r#t1mHtiW#OcpK_e`{65PI<_9kCq?%G+L^8>cuAyb2@*=iE zh}et_gpO@@^tt4#4OCm8N8UcC5<5a;;H zj}JiUeD{)|PA!-;>ca3md()y8_;|KTYBIyCVGj^~|MTdvk&%&P?{>p9MKh~oW7`BC z?tdnj@>r}1HAa-yKe3(e1opmyM5`nfd2F%wc*Xp^+{r>JJW$7`+&Tww>; z5e2eO-JO2n^in3BZhQkQ{f2>ofr+m%=?XCDE|4TyMro>yb|CQDoo%Y6yl&e)ol}F+ zc&<$9xA61wZvH+_;DE41EV@dtH4}RutQ`hJ5zQ^ayn7&`Bn#Xux5&^7Kia>%hMwYA zQxXDhabTq512CfCZ2!|8(JR3$IPPLr#3Z@)NUYBTUS5wRUrDyz9m;)QBH@PQb48ol z8TDTv!5el0n>3c|U2s(wnKS}DbD!nlvuEt!4JjesJ1vNW7zik6i2TQ3{zu1`*ReUJ z?L{DO=r1cYuo4W0O&Ia#-@kuXCjFr-WE2i^`d0olKz0rX7^k&Ew}E&)Jv|-3j-0`p zlv_OZW9MhAeP?yKkrO$-DOyQ#R2Nq8d)w=tk&81g=877s=*P81LlpX|xTK`<+p%T4 z_CKND{xBm%-r&6#4H!@{GBT<_ZMKLGc#dZmHg|S*ioPoIW`j1piwHU$4zsgXRP0w_8cNYYnl)2qU_)*N+>p#r|>VNE>_T%q4b5l*OyGn$G zeMN*N=mGB)yJZ0h{Gz{#TW=KcKl)frd9Y%ip2 zGIR_LeMUb0e*5FMcVm$j;XKnM(?78e)k+0fm~=5GO%sC$y_rmCD8 z)R%P#!j>|komskiHDi|5JPp>?HvW5sOsZJ&oHS!1 zG@uvfmfgR5DZW|tYPiLkr^9|q2EHoQGAsQr7%O3*AXGrbtl)=_YfOnf*2}80FSX7D z-3xy8gsz=N+yS=~1peC#5E=@NgvxO+kj~+z~ z6mb&KiNF@c1bhdJD@J8$XlN)HcJwVcPby7wwRDhbsLo|hNn^N+{eX!8XFeB^TUzVICRFtv^N9QJjRy?^ugL@`A2l#Y&W6OAU(2V*kRRYE!;ObH^v*ed8G zLX0(mWrmFm%FE5YZnEvq&@MgU<>T8{g+XoqLbYqau2CeVIdb{*vVRyZvpAguLQSL; zrO3yhVi1-QixsM}@u}W*PcLj_US8e?;`(BgB07e%_y67J@Sj}}=5DuSr7AypS*O}D R;LZ&|RZ$a$dSdqWe*nwQjZ^>t literal 0 HcmV?d00001 diff --git a/icons/com.ublinux.ubl-settings-info.logo.png b/icons/com.ublinux.ubl-settings-info.logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8d02cc604d3534fc409abca672a695ba1fa22ab5 GIT binary patch literal 8757 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 z - - - - - - - - - - - - - - - - - - Linux - - diff --git a/icons/emblems/com.ublinux.ubl-settings-info.logo.svg b/icons/emblems/com.ublinux.ubl-settings-info.logo.svg deleted file mode 100644 index d44113c..0000000 --- a/icons/emblems/com.ublinux.ubl-settings-info.logo.svg +++ /dev/null @@ -1,241 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt index 4075f3c..6edc97a 100644 --- a/source/CMakeLists.txt +++ b/source/CMakeLists.txt @@ -21,6 +21,8 @@ add_custom_target(GLADE ubl-settings-info.glade) set(DEPENDFILES ../ubl-settings-info.glade + ../icons/com.ublinux.ubl-settings-info.logo.png + ../icons/com.ublinux.ubl-settings-info.logo-dark.png ../gresource.xml ../ubl-settings-info.css ) diff --git a/source/ubl-settings-info.c b/source/ubl-settings-info.c index 62dbcad..960d62b 100644 --- a/source/ubl-settings-info.c +++ b/source/ubl-settings-info.c @@ -10,10 +10,10 @@ void yon_terminal_style_update(VteTerminal *, main_window *widgets){ vte_terminal_set_color_cursor_foreground(VTE_TERMINAL(widgets->InfoTerminal),bg_color); vte_terminal_set_color_cursor(VTE_TERMINAL(widgets->InfoTerminal),bg_color); if (bg_color->blue>0.5&&bg_color->green>0.5&&bg_color->red>0.5){ - gtk_image_set_from_icon_name(GTK_IMAGE(widgets->InfoIcon),logo_icon_path,GTK_ICON_SIZE_BUTTON); + gtk_image_set_from_resource(GTK_IMAGE(widgets->InfoIcon),logo_icon_path); gtk_image_set_pixel_size(GTK_IMAGE(widgets->InfoIcon),255); } else if (bg_color->blue<0.5&&bg_color->green<0.5&&bg_color->red<0.5){ - gtk_image_set_from_icon_name(GTK_IMAGE(widgets->InfoIcon),logo_dark_icon_path,GTK_ICON_SIZE_BUTTON); + gtk_image_set_from_resource(GTK_IMAGE(widgets->InfoIcon),logo_dark_icon_path); gtk_image_set_pixel_size(GTK_IMAGE(widgets->InfoIcon),255); } } diff --git a/source/ubl-settings-info.h b/source/ubl-settings-info.h index e59a6ba..e72c23f 100644 --- a/source/ubl-settings-info.h +++ b/source/ubl-settings-info.h @@ -18,8 +18,8 @@ #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define icon_path "com.ublinux.ubl-settings-info" -#define logo_icon_path "com.ublinux.ubl-settings-info.logo" -#define logo_dark_icon_path "com.ublinux.ubl-settings-info.logo-dark" +#define logo_icon_path "/com/ublinux/svg/com.ublinux.ubl-settings-info.logo.png" +#define logo_dark_icon_path "/com/ublinux/svg/com.ublinux.ubl-settings-info.logo-dark.png" #define LocaleName "ubl-settings-info" From 1f5340008c031e8742d2bb901d847c8c2e9a50c6 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 27 May 2025 18:06:47 +0600 Subject: [PATCH 4/8] Scrollbar fix --- ubl-settings-info.glade | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/ubl-settings-info.glade b/ubl-settings-info.glade index b5dc339..cf0f801 100644 --- a/ubl-settings-info.glade +++ b/ubl-settings-info.glade @@ -4,6 +4,27 @@ + + True + False + center + 10 + 10 + 10 + 10 + label + True + 0.019999999552965164 + 0.5 + + + + 100 + 1 + 10 + True False @@ -25,8 +46,9 @@ True - True + False natural + adjustment1 natural UTF-8 True @@ -46,6 +68,7 @@ True False vertical + adjustment1 False @@ -54,22 +77,6 @@ - - True - False - center - 10 - 10 - 10 - 10 - label - True - 0.019999999552965164 - 0.5 - - True False From 7f861b968a75bc6bd82bf4b61bbbcda912746208 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 27 May 2025 18:21:31 +0600 Subject: [PATCH 5/8] Changed logo icons path --- source/ubl-settings-info.c | 4 ++-- source/ubl-settings-info.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/source/ubl-settings-info.c b/source/ubl-settings-info.c index 960d62b..5564db5 100644 --- a/source/ubl-settings-info.c +++ b/source/ubl-settings-info.c @@ -10,10 +10,10 @@ void yon_terminal_style_update(VteTerminal *, main_window *widgets){ vte_terminal_set_color_cursor_foreground(VTE_TERMINAL(widgets->InfoTerminal),bg_color); vte_terminal_set_color_cursor(VTE_TERMINAL(widgets->InfoTerminal),bg_color); if (bg_color->blue>0.5&&bg_color->green>0.5&&bg_color->red>0.5){ - gtk_image_set_from_resource(GTK_IMAGE(widgets->InfoIcon),logo_icon_path); + gtk_image_set_from_file(GTK_IMAGE(widgets->InfoIcon),logo_icon_path); gtk_image_set_pixel_size(GTK_IMAGE(widgets->InfoIcon),255); } else if (bg_color->blue<0.5&&bg_color->green<0.5&&bg_color->red<0.5){ - gtk_image_set_from_resource(GTK_IMAGE(widgets->InfoIcon),logo_dark_icon_path); + gtk_image_set_from_file(GTK_IMAGE(widgets->InfoIcon),logo_dark_icon_path); gtk_image_set_pixel_size(GTK_IMAGE(widgets->InfoIcon),255); } } diff --git a/source/ubl-settings-info.h b/source/ubl-settings-info.h index e72c23f..95e4a9a 100644 --- a/source/ubl-settings-info.h +++ b/source/ubl-settings-info.h @@ -18,8 +18,8 @@ #define config_path yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL) #define icon_path "com.ublinux.ubl-settings-info" -#define logo_icon_path "/com/ublinux/svg/com.ublinux.ubl-settings-info.logo.png" -#define logo_dark_icon_path "/com/ublinux/svg/com.ublinux.ubl-settings-info.logo-dark.png" +#define logo_icon_path "/usr/share/pixmaps/ublinux-logo-text.png" +#define logo_dark_icon_path "/usr/share/pixmaps/ublinux-logo-text-dark.png" #define LocaleName "ubl-settings-info" From 47817763363ac0631c56a20223ddc8b9aae1b25b Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 28 May 2025 10:25:43 +0600 Subject: [PATCH 6/8] Files revert --- Makefile | 82 +++++++++--------- VERSION.md | 1 + gresource.xml | 4 - ...om.ublinux.ubl-settings-info.logo-dark.png | Bin 8700 -> 0 bytes icons/com.ublinux.ubl-settings-info.logo.png | Bin 8757 -> 0 bytes source/CMakeLists.txt | 2 - 6 files changed, 44 insertions(+), 45 deletions(-) create mode 100644 VERSION.md delete mode 100644 icons/com.ublinux.ubl-settings-info.logo-dark.png delete mode 100644 icons/com.ublinux.ubl-settings-info.logo.png diff --git a/Makefile b/Makefile index 9a44772..62dc934 100644 --- a/Makefile +++ b/Makefile @@ -8,34 +8,23 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -DEPENDS = /bin/cmake -PREFIX ?= /usr/local +#CMAKE_SOURCE_DIR = ./source +#CMAKE_BUILD_DIR = ./compile +FILE_VERSION = VERSION.md +DEPENDS = /bin/cmake /bin/screenfetch +PREFIX ?= /usr PKGNAME = $(MAKEFILE_DIR) -FILE_VER = source/${PKGNAME}.h -PKGIDENT=$(subst /,-,${PREFIX}) - -FILE_MO := $(PKGNAME).mo -LOCALE_DIR := ./locale +#PKGNAME = ublexec default_target: all -.PHONY: all init depend debug prepare check build uninstall install clean help +.PHONY: all init depend debug prepare check build uninstall install clean up_ver help all: init build init: @echo "Initialize ..."; \ - if [ -d ".git" ]; then \ - LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ - if [ -z "$${LATEST_TAG}" ]; \ - then \ - LATEST_TAG=$$"0.0"; \ - echo "$${LATEST_TAG} is empty"; \ - fi; \ - else \ - LATEST_TAG="Development"; \ - fi; \ - sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ + sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2)\";/" -i source/ubl-settings-info.c; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -46,8 +35,8 @@ depend: exit 1; \ fi; \ done; \ - $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" +# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." @@ -74,8 +63,7 @@ check: build: depend prepare @echo "Build ..."; \ - $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ - sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ + make --directory=${CMAKE_BUILD_DIR}; \ echo "Build: OK" uninstall: @@ -83,7 +71,7 @@ uninstall: @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ $(RM) "$${PATH_FILE_MO}"; \ done @for SIZE in 16x16 32x32 48x48 scalable; do \ @@ -97,7 +85,9 @@ uninstall: done @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" - @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" + @$(RM) "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/logo-background.png" + @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" + @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ @@ -107,28 +97,33 @@ uninstall: install: check uninstall @echo "Install ..." - @for po in $(LOCALE_DIR)/$(PKGNAME)_*.po; do \ - lang=$$(basename $$po | sed -E 's/^$(PKGNAME)_([^.]+)\.po$$/\1/'); \ - file=$$(find ./locale/ -name '*_'"$$lang"'.po'); \ - msgfmt $$file -v -f -o ${DESTDIR}/usr/share/locale/$$lang/LC_MESSAGES/$(FILE_MO); \ + @for FILE_PO in $(wildcard *.po); do \ + LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ + install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ + FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ + PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + echo "$${FILE_PO}"; \ + msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ done - @for SIZE in 16 32 48; do \ install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ - done - @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/apps/" "icons/apps/com.ublinux.${PKGNAME}.svg" - @for FILE_ICON in $(wildcard icons/*/*.svg); do \ - SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \ - install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/$${SUB_NAME}" $${FILE_ICON}; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f png --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ done + @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" + @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @ldconfig -n /usr/local/lib + @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" + @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" \ + "logo-background.png" \ + "ublinux-logo.svg" @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ + [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ + [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ fi @echo "Install: OK" @@ -141,6 +136,14 @@ clean: echo "Clean: OK"; \ fi +up_ver: + @CURRENT=$$(grep 'VERSION' ${FILE_VERSION} | cut -d" " -f2); \ + MAJOR=$$(cut -d. -f1 <<< $${CURRENT}); \ + MINOR=$$(cut -d. -f2 <<< $${CURRENT}); \ + VER="$${MAJOR}.$$(($${MINOR}+1))"; \ + sed "s/VERSION *[[:digit:]]*.*/VERSION $${VER}/" -i ${FILE_VERSION}; \ + echo "Updated version to VERSION.md: $${CURRENT} to $${VER}" + help: @echo "The following are some of the valid targets for this Makefile:"; \ echo "... all (the default if no target is provided)"; \ @@ -150,4 +153,5 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean" \ No newline at end of file + echo "... clean"; \ + echo "... up_ver" \ No newline at end of file diff --git a/VERSION.md b/VERSION.md new file mode 100644 index 0000000..bd38345 --- /dev/null +++ b/VERSION.md @@ -0,0 +1 @@ +VERSION 1.3 \ No newline at end of file diff --git a/gresource.xml b/gresource.xml index 03f7e94..82adf4b 100644 --- a/gresource.xml +++ b/gresource.xml @@ -6,8 +6,4 @@ ubl-settings-info.css - - com.ublinux.ubl-settings-info.logo.png - com.ublinux.ubl-settings-info.logo-dark.png - \ No newline at end of file diff --git a/icons/com.ublinux.ubl-settings-info.logo-dark.png b/icons/com.ublinux.ubl-settings-info.logo-dark.png deleted file mode 100644 index 5e2063f42335e1dcff53a25a7d784a851a707508..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8700 zcmaJ{WmHsQw?0FM!~jy#As~WuNb68iA}yeFNXO6&gMwnv-5}C1bU37>%FroY(%sEH z-nG89zWe9?m^pLaIkEHEdq3;__*_$&govI9000tI71#>^fPgG@wiHMHJkgy9IUZ{HhtF!7Vc0EkNe5O{b|CdyXY&x zx9@QJmDP>M3Z@EpLckhA{{McdIDSI|*-EE^83=POCR{+7T&Gw~+Fy5^V^Ir>!ge4%6$0%G|)pa_~muW;Xj0k-}0fCA2 z5r0a`)R~k!f^m?Y@Ko2=-lkeDG#%c6O89U&s{pk}y|tg|uj$_s;XLXr5Hmfd$b^Qw zu}S;1txcm;3Zt-#r!}(M_Kiz~g@p>9;OlX%BTr4_=edA8dZs-J)u9C5WBjLAI&e<5 z#}okdkki(YrIA{4&%9ufgFP|C!BZx{e}=b8ybz^G%MLMvoEyxgkJ9!ve@NcNjY6R_ zBDAAEW~y@fWxYwx*N2OKwWI((hP!k5plnur0U})*%G^Mhbc0y^I!|0&h#n35ZMwRcuZ zKP|}^b#T2QoX_pWGuW`zp9((;fXF(+e_j_K)GaLsO|2-)8h(GA|FA^QRHZToc%J3Z z3MNBx3ymY5$GHQDSI=ECbdbzq-Gbd8af8R(2==k-+8f{3h zM?PA^AvW3dO)J*Ad!H3zR+(0j5j;>1%&X~*TX4dT@|e2f&<4`4i&33@9DsU^cRJUj z>5$9CM)h&$CuR@v2CG|%`ejEuC!%rWO9C6z6IZdKu@vZ2%&42EKx*rV}=A90Wh$xG7C_-6{_&OlZnO1U~T zIjgBidoLs9uZLGLs*8vNV53`7?S*fM3p!M7p+QZP2C{-z#_`B7Pk&K{7j3FqQ2>l~ zG8*2jNK4&uw#SMIjLIyKf%jV#!&)H;2ROk&-_X=h;v*F51J`(q(5BjGJO@1?vVA#X z|7alnD(m5J4JW7w9w7kK?^bl{@gkU|-YO(8o*`psDZ1@B@C4`&Qyo zZsNi_*b*9W88#?`bT2n&JX6W}yL=_M=zg3uWN*eE9f_4zhGvM4BITFT{5t$4h7G9f zmUBhnIk95rgLX57II#`w7MRL<)NDM%*lYqnlh$~inM*r1=y<^b1oZ9u_O|g8FgHqY z9-E54pBEdf(Md$E?>GEHa%%(@yw}&mhfnzsB3bAp!zyFo`AG=S(Y=SIenpHd!gk%?qo$urja@b3Rb z3FRtGzAp&srbwQ_k~jSFbT}$AG5o4=%WLYa=uL%9yI14>xmd}KMe67d14RlBQpIP7 z>3jW3=OGc@SJjy=PFiPG^w>2uSRzrXs#+Fl$~3hlMfWCYh7I=At9M|Kx> z*Xt!(*;4>*F<}HWnPLRHm@n@vgpWfpjHKMmyd=wK_)PD%KTrry<#>_@@4galkPBFH! zl4`Vjh~Mfmkn05JaLE85BR(}z^BHScmp5qJlG1KdKBB9$`%cf z*TOGz*`rcSn?D4&Nh!xE%TnE)*K>)fVqRdA$e{L4zj!^`52Y_!-{6e(lRIG>jp6OG)IPI@uEcOBl$81?mt}mtFv?nzu5) z-(Y4ObdJaDKB{BMbJuhle^k}Ff})Kwjeun00SF9q?o3E(M2AWD= z3eS37Dl>J=8*Z9oA84EoS~S^5+3Az$z1p0Ga=s4BLUi-5IK;L*mOMwubHi>Fkw@+A ziQZ_+P#L2N5EimfCbk-SvF=sIb3F+bLKWH>b-$M_&dP=VIk(x`GJd7=A>9ABDk~0CZ50d>yM5UeyYH`0@BL75*HHtuSVTRoO(il68Fz`_8`n#$Sfa>mm~f!L|fcy$vkjKCPS zUOjE=_r4Ht`g6}GXqX?&fD8;ac><-~8>QP>-@Fn=6)|^wmWQipKRP9BT?GNNsyd2W z!xp+njo+DaFG;yk7(WgmBscx}#62#mldk2S=19Fw@ulSP@x>fIf89iDx&x^E#FI}? z+yB~HSOepP6%_rMJYI zvSZcFr5x+nS(3CuxpVE}UAhWzptEgJd^{)nPnygPD7*GZaVk%svFZ@M{L{~pukkxA zX{IBr@{38b4DB3A7iYrflE!YMn$Po&o$jhK0~&lQ(~u*~FOl5WIcQsJZbmu%<}I^6 z1%u;l9&Z4=pys}e9sNMQRORsK^m`D{o=*%jO<5=VHX0zjJysbE6^8IznPO|Bhr$Fr z<%4+wm4yaocvrfe3N2RBkm^SFA41Glq`njZ5}Rio(v3O7nCVS9(N6U1_^xN*oz9fl z^NpVk!-Zsn(tLTL0rl$IAp7O(QU)V#a0G54$)D0QMGEX7Y|_@{Prq=)JS; zubG`Mk`A@4a&~Kjj&rJ_76o<;=e10c&z<5Dl2|F^DHuzyGylLJiL#>l7L z_g!_m!}3`J58XC7S7v&_>e_0c=kW3t6lGwe-$6WO@>aN|kzq+Gus^Q342-*smg9W4 z8KZ9X?(cq!qyAiMz4o&RQ5UBP^Otk_Y~W3!WGzBY)-0}j%PFhQXe_N+0s5IL%fnvz z$Sw7UXmb(jIltW8#9O8(IO>m2bsL2@X}Cqs=le%rI||nX6-V*?ck$ATcmB}TA9As~t!gP*e6FKlcKY)UG)+!p z9_c7Nya43_%c`LJPG|qK=ePXn)*UL({vWE>2ZD^w)XJ8)x+rv9I$MPCd8v{sS{BQq+l8Ntjg;8E~J7E+;n*L`xMrmL!0PFoD|H5!m;WBhy@e7brwM4egK`#f##DV)%>aWhb!CQxPJ?Fz3Tl6XjEl;oKqgWX+X$ zxtG00H%@vKfD@Qd7FSEW6>XK_7s@^UP z^=;-UYqPF;Ed(FuDvkvN=6gw|-1@3l%l{Y`qN&UWz-qnNhW}dNI80C~3J|a>c40;c zEcp)8kbFcDZa${I+72`k+9WF|DK#+FY>NfLo`6mmmoa)Pc$k=48=kb*nEqF<-e-k* z-sn3XUv~M1`$GjAEU&hW{<_7vdo4fsXvn&IX~>kpR%?`#vnJ(233I#Y@3RxGwQQWq z4NfO7EY-*(ujl-IE^2C$Ja>5Nk7KI%@S?{sWMW%zc9+%d+)Kjdi&-BJ` z&#qg>7C^`r2r!c~@jX$kw>Tp|N@&2+S;H7MSd%5(UaDQ~zau%g>qMgpbPx#d4JOE( z+4V3@*Db@-5RR-$84>`y)>h;K_9bf%-UoQmVi~E~%*l(!>rv8@mo0REMd4s2A|V7Q zL)sq8&Z23UU1mOa-|osth>(DlpnJYKP~hhbF&EXbl6k-LT6${e+eXK~T!h8ccRpy} zwS(!IV*hs705f4@KFC_{%p#FF_des?eMf5G&Isos%E#QaJEHP>Lc5kZ$Yp7Dy^qQ& zFPBaHa6XUrd-D2#V`a-+^pgdFjTBPNqBo9&U$Z6cHqL`8x{#&La*lTa_&WhkZ{AYd zm2=>t0M%WPXGWm$BTD+`GeShMjGW3dTHa5%hOeG*p*_1iGCM)YOWl)qm-C|8E@c1uJvil> z^5uoD2$sPIL^OG^iKd(CVSgrZm8@3ZhF_% zrul4m*hh>2S?Rbe2<4Hmddnx+f_y4u!xI|@(wn;DIWLFiAPoE-Y2Dicdjy7=o_ht) z%z3})k@9&u^d3ky=q1K*FDEvVe79t#?MktPwyrQff3*0XFcUhw49@45;AkyE0c_`N z5elP*4E@u71cHRd<9AmqK3G4(A7y=m)e^jUha->kUmQs&hPj-8NN8WU5JslUcQ{gn zx*x3y(8dWmznr7$mBhyw6r&V9krmID_TsS1FtgccD&8n?@&?DeRm$Nfz*D_(wwoTC zq4T~;1DobNG&ygyX>g8iUBJpzu!83Us3~z2163A-9_4-aImQD4@8 z%Ae!yiHHZip484ay!mY98M${1$Q3NBr^phRcVhvG1t?C{#$1PsxC`s5<`<@6AXU&Y z@WZ;hk)YLVv}S_BQpzD9Na*2kc;dHAA_g`5L`Je0>uy2iW0;6|loF+Jf^-~JkLQx& z4xrA~6JZ%l_lgF%lN(U+$C{7T z8y`|M{s=lOUidZ}P3|T_h=h4%aB+5rXTB4>H$Pj{^O02V-H~r_)(OrtX}+Rjs1ryW zBBup2n9#Az99_LCSL`!zaz0D^9hC86;d9e3Ye_iB(B&_uX+Rs6!0QrpLhazxV}V>m zs514IVF*a+F{bI4$UycgiX0#S);6xW-?n>y511!|(S@zlBL~L~#>Pr_0#@chgF>wH z=@?D&j8orN^r}f`7X2dyry+(WE8i|nBcg_}+epHum?AMa+j`0b-Uf+2Cmpux<{-tA zx+b;|JPe|qAQbv*I%Ll2Z zt)z-)9`9Y`%B@bs@5gabfYzt@$#mQLoxVEsPMXCQ(Io8KoOVON${P<}$|8`^C5}|? znfauO@u8Z(@_MNU-B<OO@sTV$^5h8I7)#JJ{yGy?Y{f2v%qmMEJ_vsfzj=`^~*oMOFJP?SR z$80eq!Xcb0fTy;C!Vd!g#E%c;>7XOEL2VRCKUi`jWdT2|0;`n+SBXZH%UrYGryfdb zux}-_wzh7Eo3=FPh{39-|GGC#&Gug-ZZ$B|3wVtDiJJ-SG*sKOO$`mh>y5arT9CBg z7-iEXSBW;+%-yFph{0{I7Im0**{1lxE&lu?=eo;dyNl!V00ZF6P1&h!Vb3z~@?^&A zY)-JMef6-H^Q&`om#YNB;lbgdw~~&5z5P0wh{mPSH!s*xcF$iwo|Ib0tIWK)c`ots*Q3^xX^?4l5CF3;6JE zZ@nO44*(#IuJHAT_KG{LLAU@kwCUBZEuashXQ3h@v0l+uGO*bBQ`KE+KS=~c_q{41 z`p{nW<;b4%fKUGI;duZT`Jghuq_j+P8;vJ?NT1p7-9VVzsb_A!@Qlq*@P!l`{m$v7 zE$w=2a!p)ZTq5~-Cm9>Mu%Mt|M5P7n>!VsLD=SgB<<0Q+=)Px=@}H}RMhN@L_Jw*z zWb|nK>19B(2b<`@<@G66{eXN>KiUK(M{j2f(qJFAjQ}ITjZN*cafg#^*1V13d@V-g zKETE(z5|q7o$kzR&kDxJ$CKdiMFpGRV$W-~E57`KBY)sZF-TeTdF?^n)HNM+#wE*M zE`Rv^vKH}NTRXaR^P&exgI?H;!2`ceZP#vpzC z4j#2H?CnArT;?wd6%`eg#sUo!aFEB2xO-U8UhF-gFMR43)X;Fj+#(4!HZKW=aR|5g zfY;z`lYdKKg@4oRX0mTuu=&k``*+0f`GZo0X1wYMM!?ytVaA2w{N30!c_LO=y%Ay6 z`iBo)iUV2GZ{DYd)citWU+Ar<3TX4n|xXW{M#X1qP1pw9LsxhUv2$Jk?82E`xtJ zi8n11*auOmIgs?j($LNIrGfVdx13xMJ~IE#(dybvgLmXaT;3}<{P-G>6&^Su1@e{N zbYLQBsHty?dqRyuaO4+LGcq%o_pA7UHT2CxWLRD4g6o7BM8N826t(GiH+I2i1@BFV zH*fN~vzU9L02Rmh-rnB#s~I$R@5WO^&&dyO@sGs0e){yOmSWJ!bSsaafmDlD$V%m# zBwj5TD-$==+o&g)M)nu?zG^bu&6qdgA7=(0?rt5!JU631N5ur=$YWWqkbP}>A6A>H z{rT><{QS8)^QoF9=r-r#t1mHtiW#OcpK_e`{65PI<_9kCq?%G+L^8>cuAyb2@*=iE zh}et_gpO@@^tt4#4OCm8N8UcC5<5a;;H zj}JiUeD{)|PA!-;>ca3md()y8_;|KTYBIyCVGj^~|MTdvk&%&P?{>p9MKh~oW7`BC z?tdnj@>r}1HAa-yKe3(e1opmyM5`nfd2F%wc*Xp^+{r>JJW$7`+&Tww>; z5e2eO-JO2n^in3BZhQkQ{f2>ofr+m%=?XCDE|4TyMro>yb|CQDoo%Y6yl&e)ol}F+ zc&<$9xA61wZvH+_;DE41EV@dtH4}RutQ`hJ5zQ^ayn7&`Bn#Xux5&^7Kia>%hMwYA zQxXDhabTq512CfCZ2!|8(JR3$IPPLr#3Z@)NUYBTUS5wRUrDyz9m;)QBH@PQb48ol z8TDTv!5el0n>3c|U2s(wnKS}DbD!nlvuEt!4JjesJ1vNW7zik6i2TQ3{zu1`*ReUJ z?L{DO=r1cYuo4W0O&Ia#-@kuXCjFr-WE2i^`d0olKz0rX7^k&Ew}E&)Jv|-3j-0`p zlv_OZW9MhAeP?yKkrO$-DOyQ#R2Nq8d)w=tk&81g=877s=*P81LlpX|xTK`<+p%T4 z_CKND{xBm%-r&6#4H!@{GBT<_ZMKLGc#dZmHg|S*ioPoIW`j1piwHU$4zsgXRP0w_8cNYYnl)2qU_)*N+>p#r|>VNE>_T%q4b5l*OyGn$G zeMN*N=mGB)yJZ0h{Gz{#TW=KcKl)frd9Y%ip2 zGIR_LeMUb0e*5FMcVm$j;XKnM(?78e)k+0fm~=5GO%sC$y_rmCD8 z)R%P#!j>|komskiHDi|5JPp>?HvW5sOsZJ&oHS!1 zG@uvfmfgR5DZW|tYPiLkr^9|q2EHoQGAsQr7%O3*AXGrbtl)=_YfOnf*2}80FSX7D z-3xy8gsz=N+yS=~1peC#5E=@NgvxO+kj~+z~ z6mb&KiNF@c1bhdJD@J8$XlN)HcJwVcPby7wwRDhbsLo|hNn^N+{eX!8XFeB^TUzVICRFtv^N9QJjRy?^ugL@`A2l#Y&W6OAU(2V*kRRYE!;ObH^v*ed8G zLX0(mWrmFm%FE5YZnEvq&@MgU<>T8{g+XoqLbYqau2CeVIdb{*vVRyZvpAguLQSL; zrO3yhVi1-QixsM}@u}W*PcLj_US8e?;`(BgB07e%_y67J@Sj}}=5DuSr7AypS*O}D R;LZ&|RZ$a$dSdqWe*nwQjZ^>t diff --git a/icons/com.ublinux.ubl-settings-info.logo.png b/icons/com.ublinux.ubl-settings-info.logo.png deleted file mode 100644 index 8d02cc604d3534fc409abca672a695ba1fa22ab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8757 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 z Date: Wed, 28 May 2025 10:27:20 +0600 Subject: [PATCH 7/8] Makefile update --- Makefile | 66 ++++++++++++++++++++++++++++++-------------------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 667e8e6..9a44772 100644 --- a/Makefile +++ b/Makefile @@ -8,9 +8,14 @@ MAKEFILE_PATH := $(dir $(MAKEFILE_FILEPATH)) CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = $(MAKEFILE_PATH)source CMAKE_BUILD_DIR = $(MAKEFILE_PATH)compile -DEPENDS = /bin/cmake /bin/screenfetch -PREFIX ?= /usr +DEPENDS = /bin/cmake +PREFIX ?= /usr/local PKGNAME = $(MAKEFILE_DIR) +FILE_VER = source/${PKGNAME}.h +PKGIDENT=$(subst /,-,${PREFIX}) + +FILE_MO := $(PKGNAME).mo +LOCALE_DIR := ./locale default_target: all @@ -21,11 +26,16 @@ all: init build init: @echo "Initialize ..."; \ if [ -d ".git" ]; then \ - LATEST_TAG=$$(git describe --tags | sed 's/^v//'); \ + LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \ + if [ -z "$${LATEST_TAG}" ]; \ + then \ + LATEST_TAG=$$"0.0"; \ + echo "$${LATEST_TAG} is empty"; \ + fi; \ else \ - LATEST_TAG="0.0"; \ + LATEST_TAG="Development"; \ fi; \ - sed -r "s/^(string version_application = ).*/\1\"$${LATEST_TAG}\";/" -i source/${PKGNAME}.c; \ + sed -r "s/^(string version_application).*/\1 = \"$${LATEST_TAG}\";/" -i ${FILE_VER}; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" depend: @@ -36,8 +46,8 @@ depend: exit 1; \ fi; \ done; \ + $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B${CMAKE_BUILD_DIR} --check-build-system CMakeFiles/Makefile.cmake 1 || exit 1; \ echo "Check depends: OK" -# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1 debug: @echo "Debug ..." @@ -64,7 +74,8 @@ check: build: depend prepare @echo "Build ..."; \ - make --directory=${CMAKE_BUILD_DIR}; \ + $(MAKE_COMMAND) --directory=${CMAKE_BUILD_DIR}; \ + sed -r "s/^(string version_application).*/\1;/" -i ${FILE_VER}; \ echo "Build: OK" uninstall: @@ -72,7 +83,7 @@ uninstall: @for FILE_PO in $(wildcard *.po); do \ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ + PATH_FILE_MO="${DESTDIR}/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ $(RM) "$${PATH_FILE_MO}"; \ done @for SIZE in 16x16 32x32 48x48 scalable; do \ @@ -86,9 +97,7 @@ uninstall: done @$(RM) "${DESTDIR}${PREFIX}/bin/${PKGNAME}" @$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop" - @$(RM) "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/logo-background.png" - @$(RM) "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/com.ublinux.${PKGNAME}.svg" - @$(RM) -rd "${DESTDIR}${PREFIX}/share/${PKGNAME}" + @$(RM) "${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}${PKGIDENT}.policy" @if [ -z ${DESTDIR} ]; then \ [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ @@ -98,33 +107,28 @@ uninstall: install: check uninstall @echo "Install ..." - @for FILE_PO in $(wildcard *.po); do \ - LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \ - install -dm755 "${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES"; \ - FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \ - PATH_FILE_MO="${DESTDIR}${PREFIX}/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \ - echo "$${FILE_PO}"; \ - msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ + @for po in $(LOCALE_DIR)/$(PKGNAME)_*.po; do \ + lang=$$(basename $$po | sed -E 's/^$(PKGNAME)_([^.]+)\.po$$/\1/'); \ + file=$$(find ./locale/ -name '*_'"$$lang"'.po'); \ + msgfmt $$file -v -f -o ${DESTDIR}/usr/share/locale/$$lang/LC_MESSAGES/$(FILE_MO); \ done + @for SIZE in 16 32 48; do \ install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ - rsvg-convert -w $${SIZE} -h $${SIZE} -f png --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.png"; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "icons/apps/com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \ + done + @install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/apps/" "icons/apps/com.ublinux.${PKGNAME}.svg" + @for FILE_ICON in $(wildcard icons/*/*.svg); do \ + SUB_NAME=$${FILE_ICON#*/}; SUB_NAME=$${SUB_NAME%/*}; \ + install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/$${SUB_NAME}" $${FILE_ICON}; \ done - @install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/icons/hicolor/scalable/apps/" "com.ublinux.${PKGNAME}.svg" @install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}" - @install -dm755 "${DESTDIR}${PREFIX}/share/applications" @install -Dm644 -t "${DESTDIR}${PREFIX}/share/applications/" "${PKGNAME}.desktop" - @install -dm755 "${DESTDIR}${PREFIX}/share/${PKGNAME}"/{ui,css,images} - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/ui/" "${PKGNAME}.glade" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/css/" "${PKGNAME}.css" - @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" \ - "logo-background.png" \ - "ublinux-logo.svg" + @ldconfig -n /usr/local/lib @if [ -z ${DESTDIR} ]; then \ - [ -d "${DESTDIR}${PREFIX}/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}${PREFIX}/share/icons/hicolor/" &>/dev/null || true; \ + [ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \ update-desktop-database --quiet &>/dev/null || true; \ - [ -d "${DESTDIR}${PREFIX}/share/applications" ] && touch "${DESTDIR}${PREFIX}/share/applications" &>/dev/null || true; \ + [ -d "${DESTDIR}/usr/share/applications" ] && touch "${DESTDIR}/usr/share/applications" &>/dev/null || true; \ fi @echo "Install: OK" @@ -146,4 +150,4 @@ help: echo "... compile"; \ echo "... install"; \ echo "... uninstall"; \ - echo "... clean" + echo "... clean" \ No newline at end of file From 78f8a1ed520c5ed6e3e6dae5d1d07a8f7a61af21 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 28 May 2025 10:34:27 +0600 Subject: [PATCH 8/8] fastfetch command moved to localisation --- locale/ubl-settings-info.pot | 20 +++++++++----------- locale/ubl-settings-info_ru.po | 18 ++++++++++++++---- source/ubl-settings-info.h | 2 +- 3 files changed, 24 insertions(+), 16 deletions(-) diff --git a/locale/ubl-settings-info.pot b/locale/ubl-settings-info.pot index b9b8f7e..c8beaef 100644 --- a/locale/ubl-settings-info.pot +++ b/locale/ubl-settings-info.pot @@ -17,22 +17,20 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-settings-info.c:37 -msgid "Basic System Information" +#: source/ubl-settings-info.h:26 +msgid "fastfetch --logo none --disable-linewrap --config all.jsonc" msgstr "" -#: source/ubl-settings-info.c:38 source/ubl-settings-info.c:67 source/ubl-settings-info.c:68 +#: source/ubl-strings.h:2 msgid "System Information" msgstr "" -#: source/ubl-settings-info.c:40 -msgid "Project Home Page" -msgstr "" - -#: source/ubl-settings-info.c:41 -msgid "About System info" +#: source/ubl-strings.h:3 +msgid "Basic System Information" msgstr "" -#: source/ubl-settings-info.c:70 -msgid "About program" +#: source/ubl-strings.h:4 +msgid "" +"https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/" +"ubl-settings-info" msgstr "" diff --git a/locale/ubl-settings-info_ru.po b/locale/ubl-settings-info_ru.po index 867e08b..6f1642d 100644 --- a/locale/ubl-settings-info_ru.po +++ b/locale/ubl-settings-info_ru.po @@ -17,10 +17,20 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: source/ubl-settings-info.c:41 -msgid "Basic System Information" -msgstr "Основная информация о системе" +#: source/ubl-settings-info.h:26 +msgid "fastfetch --logo none --disable-linewrap --config all.jsonc" +msgstr "" -#: source/ubl-settings-info.c:38 source/ubl-settings-info.c:67 source/ubl-settings-info.c:68 +#: source/ubl-strings.h:2 msgid "System Information" msgstr "Информация о системе" + +#: source/ubl-strings.h:3 +msgid "Basic System Information" +msgstr "Основная информация о системе" + +#: source/ubl-strings.h:4 +msgid "" +"https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/" +"ubl-settings-info" +msgstr "" diff --git a/source/ubl-settings-info.h b/source/ubl-settings-info.h index 95e4a9a..d7f5d2f 100644 --- a/source/ubl-settings-info.h +++ b/source/ubl-settings-info.h @@ -23,7 +23,7 @@ #define LocaleName "ubl-settings-info" -#define main_command "fastfetch --logo none --disable-linewrap --config all.jsonc" +#define main_command _("fastfetch --logo none --disable-linewrap --config all.jsonc") typedef char* string;