diff --git a/.gitignore b/.gitignore
index 3885a3f..87de55e 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,4 +16,5 @@ images/
locale/
ui/
ubl-settings-manager_ru.pos
+ubl-settings-manager_ru.po~
deleted
\ No newline at end of file
diff --git a/Makefile b/Makefile
index e166a62..649dc53 100644
--- a/Makefile
+++ b/Makefile
@@ -8,23 +8,25 @@ 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
-PREFIX ?= /usr
+PREFIX ?= /usr/local
PKGNAME = $(MAKEFILE_DIR)
-#PKGNAME = ubl-settings-manager
+FILE_VER = source/${PKGNAME}.h
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-manager.h; \
+ if [ -d ".git" ]; then \
+ LATEST_TAG=$$(git describe --abbrev=0 --tags | sed 's/^v//'); \
+ 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 +37,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 +65,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:
@@ -87,7 +90,7 @@ uninstall:
@$(RM) "${DESTDIR}/etc/xdg/${PKGNAME}/${PKGNAME}.conf"
@$(RM) "${DESTDIR}${PREFIX}/share/applications/${PKGNAME}.desktop"
@$(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}.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; \
@@ -109,18 +112,12 @@ install: check uninstall
install -dm755 "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \
rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data "com.ublinux.${PKGNAME}.svg" -o "${DESTDIR}${PREFIX}/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/com.ublinux.${PKGNAME}.svg"; \
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 -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "com.ublinux.${PKGNAME}.policy"
@install -Dm755 -t "${DESTDIR}${PREFIX}/bin/" "${CMAKE_BUILD_DIR}/${PKGNAME}"
- @install -dm755 "${DESTDIR}/etc/xdg"
@install -Dm744 -t "${DESTDIR}/etc/xdg/${PKGNAME}/" "${PKGNAME}.conf"
- @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/" "ublinux-logo.svg"
- @install -Dm644 -t "${DESTDIR}${PREFIX}/share/${PKGNAME}/images/" "${PKGNAME}-banner.png"
+ @sed -e 's+/usr/bin+${PREFIX}/bin+g' -i ${DESTDIR}/usr/share/polkit-1/actions/com.ublinux.${PKGNAME}.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; \
@@ -137,14 +134,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)"; \
@@ -154,5 +143,4 @@ help:
echo "... compile"; \
echo "... install"; \
echo "... uninstall"; \
- echo "... clean"; \
- echo "... up_ver"
+ echo "... clean"
\ No newline at end of file
diff --git a/com.ublinux.ubl-settings-manager.policy b/com.ublinux.ubl-settings-manager.policy
new file mode 100644
index 0000000..63fd4eb
--- /dev/null
+++ b/com.ublinux.ubl-settings-manager.policy
@@ -0,0 +1,24 @@
+
+
+
+
+ UBLinux
+ https://ublinux.ru
+
+
+ Run ubl-settings-manager as root
+ Запуск утилиты ubl-settings-manager с правами root
+ Authentication is required to run ubl-settings-manager
+ Требуется авторизация для запуска утилиты ubl-settings-manager с правами root
+
+ auth_admin
+ auth_admin
+ auth_admin
+
+ /usr/bin/ubl-settings-manager
+ true
+
+
+
diff --git a/gresource.xml b/gresource.xml
new file mode 100644
index 0000000..a6b8179
--- /dev/null
+++ b/gresource.xml
@@ -0,0 +1,12 @@
+
+
+
+ ubl-settings-manager.glade
+
+
+ ubl-settings-manager.css
+
+
+ ubl-settings-manager-banner.png
+
+
\ No newline at end of file
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index 8caec66..19ec51d 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -8,10 +8,14 @@ include_directories(${GTK_INCLUDE_DIRS})
link_directories(${GTK_LIBRARY_DIRS})
add_definitions(${GTK_CFLAGS_OTHER})
-option(WEBKIT_FOUND "No" OFF)
+#pkg_check_modules(VTE291 REQUIRED vte-2.91)
+#include_directories(${VTE291_INCLUDE_DIRS})
+#link_directories(${VTE291_LIBRARY_DIRS})
+#add_definitions(${VTE291_CFLAGS_OTHER})
find_library(WEBKIT_LIBRARIES_FOUND webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
+option(WEBKIT_FOUND "No" OFF)
if(WEBKIT_LIBRARIES_FOUND)
option(WEBKIT_FOUND "Yes" ON)
PKG_CHECK_MODULES(WEBKIT REQUIRED webkit2gtk-4.0 webkit2gtk-web-extension-4.0)
@@ -20,7 +24,42 @@ if(WEBKIT_LIBRARIES_FOUND)
add_definitions(${WEBKIT_CFLAGS_OTHER})
endif()
-configure_file(ubl-settings-manager.h.in ubl-settings-manager-cm.h)
+configure_file(ubl-cmake.in ubl-cmake.h)
+
+file(COPY ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h DESTINATION ./)
+
+set(GRESOURCE_C resources.c)
+set(GRESOURCE_XML gresource.xml)
+
+find_program(GLIB_COMPILE_RESOURCES NAMES glib-compile-resources REQUIRED)
+add_custom_target(GLADE ubl-settings-manager.glade)
+
+set(DEPENDFILES
+ ../ubl-settings-manager.glade
+ ../gresource.xml
+ ../ubl-settings-manager-banner.png
+ ../ubl-settings-manager.css
+ )
+
+file(COPY ${DEPENDFILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+add_custom_command(
+ OUTPUT ${GRESOURCE_C}
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+ COMMAND ${GLIB_COMPILE_RESOURCES}
+ ARGS
+ --generate-source
+ --target=${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
+ ${GRESOURCE_XML}
+ VERBATIM
+ MAIN_DEPENDENCY ${GRESOURCE_XML}
+ DEPENDS
+ ${GLADE}
+)
+add_custom_target(
+ dummy-resource
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
+)
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a")
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -lm")
@@ -28,20 +67,27 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissin
-O2 -pipe -fno-plt -fexceptions \
-Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security \
-fstack-clash-protection -fcf-protection")
+
set(SOURCE_FILES
ubl-settings-manager.c
ubl-settings-manager.h
- ubl-settings-manager-cm.h)
+ ${CMAKE_CURRENT_BINARY_DIR}/ubl-cmake.h
+ )
set(LIBRARIES
${GTK_LIBRARIES}
+ ${WEBKIT_LIBRARIES}
+# ${VTE291_LIBRARIES}
pthread)
-add_executable(ubl-settings-manager ${SOURCE_FILES})
-target_link_libraries(ubl-settings-manager PUBLIC ${WEBKIT_LIBRARIES} ${LIBRARIES})
-target_include_directories(ubl-settings-manager PUBLIC
- "${PROJECT_BINARY_DIR}"
- ${WEBKIT_INCLUDE_DIRS}
- )
-install(TARGETS ubl-settings-manager DESTINATION bin)
\ No newline at end of file
+
+add_executable(${PROJECT_NAME} ${SOURCE_FILES} ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C})
+target_link_libraries(${PROJECT_NAME} PUBLIC ${LIBRARIES})
+target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_BINARY_DIR})
+set_source_files_properties(
+ ${CMAKE_CURRENT_BINARY_DIR}/${GRESOURCE_C}
+ PROPERTIES GENERATED TRUE
+)
+install(TARGETS ${PROJECT_NAME} DESTINATION bin)
+add_dependencies(${PROJECT_NAME} dummy-resource)
\ No newline at end of file
diff --git a/source/ubl-settings-manager.h.in b/source/ubl-cmake.in
similarity index 100%
rename from source/ubl-settings-manager.h.in
rename to source/ubl-cmake.in
diff --git a/source/ubl-settings-manager-cm.h b/source/ubl-settings-manager-cm.h
deleted file mode 100644
index 26a7931..0000000
--- a/source/ubl-settings-manager-cm.h
+++ /dev/null
@@ -1 +0,0 @@
-#define WEBKIT_FOUND
diff --git a/source/ubl-settings-manager.c b/source/ubl-settings-manager.c
index 3525b5d..44b4114 100644
--- a/source/ubl-settings-manager.c
+++ b/source/ubl-settings-manager.c
@@ -140,7 +140,7 @@ void on_ButtonOpenHelp_activated(GtkWidget *button, GtkBuilder *builder){
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(gtk_builder_get_object(builder,"AlwaysOpenHelpCheckbox"))))
{
#ifdef WEBKIT_FOUND
- GtkBuilder *web_builder=gtk_builder_new_from_file(GladePath);
+ GtkBuilder *web_builder=gtk_builder_new_from_resource(GladePath);
GtkWidget *browser=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Window"));
GtkWidget *web_place=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Place"));
GtkWidget *WebView=webkit_web_view_new();
@@ -173,7 +173,7 @@ void on_CancelHelpButton_activated(GtkWidget *button,GtkBuilder *builder){
void on_ReadHelpButton_activated(GtkWidget *button, GtkBuilder *builder){
#ifdef WEBKIT_FOUND
- GtkBuilder *web_builder=gtk_builder_new_from_file(GladePath);
+ GtkBuilder *web_builder=gtk_builder_new_from_resource(GladePath);
GtkWidget *browser=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Window"));
GtkWidget *web_place=GTK_WIDGET(gtk_builder_get_object(web_builder,"Web_Place"));
GtkWidget *WebView=webkit_web_view_new();
@@ -657,7 +657,7 @@ void on_double_click_changed(GtkWidget *Switch, gboolean state, dictionary *widg
}
void on_about(GtkWidget *button, GtkBuilder *buildr){
- GtkBuilder *builder = gtk_builder_new_from_file(GladePath);
+ GtkBuilder *builder = gtk_builder_new_from_resource(GladePath);
GtkWidget *AboutButtons = GTK_WIDGET(gtk_builder_get_object(builder,"AboutButtons"));
GtkWidget *AboutHeadLabel = GTK_WIDGET(gtk_builder_get_object(builder,"aboutHeadLabel"));
GtkWidget *About = GTK_WIDGET(gtk_builder_get_object(builder, "ublAbloutWindow"));
@@ -1142,7 +1142,7 @@ void yon_set_default_sections(dictionary *section){
IVGraphicals *yon_create_single_section_IV(char *name,char *cats){
IVGraphicals *IVG = malloc(sizeof(IVGraphicals));
GtkWidget *box = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- GtkBuilder *builder = gtk_builder_new_from_file(GladePath);
+ GtkBuilder *builder = gtk_builder_new_from_resource(GladePath);
GtkWidget *iv = GTK_WIDGET(gtk_builder_get_object(builder,"iconTemplate"));
gtk_widget_show(iv);
GtkWidget *label = gtk_label_new(_(name));
@@ -1869,7 +1869,7 @@ int main(int argc, char *argv[]){
int *size=malloc(sizeof(int));
apps *applist=find_apps(size);
sort_apps(applist,*size);
- GtkBuilder *builder=gtk_builder_new_from_file(GladePath);
+ GtkBuilder *builder=gtk_builder_new_from_resource(GladePath);
actionWidgets *widg=(actionWidgets*)widgets->first->data;
char *theme;
if (main_config.WindowTheme==1){ theme="Gnome";
@@ -1945,18 +1945,18 @@ int main(int argc, char *argv[]){
if (main_config.WindowTheme==1)
gtk_widget_hide(widg->MenuItemAboutSystem);
GtkWidget *banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"MainBanner"));
- gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file(AppBannerPath,NULL));
+ gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_resource(AppBannerPath,NULL));
banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"GnomeBanner"));
- gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file(AppBannerPath,NULL));
+ gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_resource(AppBannerPath,NULL));
banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"loaderBanner"));
- gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file(AppBannerPath,NULL));
+ gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_resource(AppBannerPath,NULL));
banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"GnomeInfoLogo"));
- gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gdk_pixbuf_new_from_file_at_scale(ublinux_logo,512,512,1,NULL));
+ gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(gtk_icon_theme_get_default(), AppIconPath,512,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
banner = GTK_WIDGET(gtk_builder_get_object(widg->builder,"settingsIcon"));
GtkIconTheme *icthm=gtk_icon_theme_get_default();
gtk_image_set_from_pixbuf(GTK_IMAGE(banner),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, AppIconPath,yon_get_icon_size(*main_config.currentThemeIconSize),1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
GtkCssProvider *css=gtk_css_provider_new();
- gtk_css_provider_load_from_path(css,CssPath,NULL);
+ gtk_css_provider_load_from_resource(css,CssPath,NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css),
-1);
diff --git a/source/ubl-settings-manager.h b/source/ubl-settings-manager.h
index 5de5932..04d1de1 100644
--- a/source/ubl-settings-manager.h
+++ b/source/ubl-settings-manager.h
@@ -5,7 +5,7 @@
#include
#include
#include
-#include "ubl-settings-manager-cm.h"
+#include "ubl-cmake.h"
#ifdef WEBKIT_FOUND
#include
#endif
@@ -17,21 +17,20 @@
#define cmdVersionText yon_char_get_augumented(yon_char_get_augumented(_("Version: "),version_application),"\n")
#define cmdHelpText yon_char_get_augumented(yon_char_get_augumented(_("ubl-settings-manager version: "),version_application),_("\nGTK settings manager for UBLinux\nUsage: ubl-settings-manager [OPTIONS...]\nOptions:\n -h, --help Show this help\n -V, --version Show package version\n --lock-settings Lock menu settings\n"))
-#define GladePath "/usr/share/ubl-settings-manager/ui/ubl-settings-manager.glade"
-#define CssPath "/usr/share/ubl-settings-manager/css/ubl-settings-manager.css"
+#define GladePath "/com/ublinux/ui/ubl-settings-manager.glade"
+#define CssPath "/com/ublinux/css/ubl-settings-manager.css"
#define GlobalConfigPath "/etc/xdg/ubl-settings-manager/ubl-settings-manager.conf"
#define UserConfigPath "/.config/ubl-settings-manager/ubl-settings-manager.conf"
#define AppIconPath "com.ublinux.ubl-settings-manager"
-#define AppBannerPath "/usr/share/ubl-settings-manager/images/ubl-settings-manager-banner.png"
+#define AppBannerPath "/com/ublinux/images/ubl-settings-manager-banner.png"
#define DesktopPath "/usr/share/applications/"
#define IconPicturesPath "/usr/share/icons/hicolor/scalable/apps/"
-#define ublinux_logo "/usr/share/ubl-settings-manager/images/ublinux-logo.svg"
#define LocalePath "/usr/share/locale"
#define LocaleName "ubl-settings-manager"
#define ubl_settings_infoPath "ubl-settings-info"
#define ubl_settings_infoPathLaunch "ubl-settings-info --socket-id="
typedef char* string;
-string version_application = "1.4";
+string version_application;
#define UBL_SETTINGS_MANAGER_TITLE _("UBLinux Settings Manager")
#define UBL_SETTINGS_MANAGER_ABOUT_TITLE _("About UBLinux Settings Manager")