diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..3716db2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+ublexec.glade~
+test.cpp
+.vscode
+ublexec
\ No newline at end of file
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..69aebbf
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,136 @@
+#!/usr/bin/make -f
+#!/usr/bin/make -f
+
+#SHELL := /bin/bash
+MAKEFILE_FILEPATH := $(abspath $(lastword $(MAKEFILE_LIST)))
+MAKEFILE_DIR := $(notdir $(patsubst %/,%,$(dir $(MAKEFILE_FILEPATH))))
+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
+DEPENDS = cmake
+#PKGNAME = $(MAKEFILE_DIR)
+PKGNAME = ublexec
+
+default_target: all
+all: init build
+
+init:
+ @echo "Initialize ..."; \
+ echo "-- Build path: ${CMAKE_BUILD_DIR}"
+
+depend:
+ @echo "Check depends ..."; \
+ if [ ! -f /bin/${DEPENDS} ]; then \
+ echo "-- Depend '${DEPENDS}' not fount !"; \
+ exit 1; \
+ fi; \
+ echo "Check depends: OK"
+# $(CMAKE_COMMAND) -S$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles/Makefile.cmake 1
+
+debug:
+ @echo "Debug ..."
+ if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
+ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX="/usr"; \
+ fi; \
+ echo "Debug: OK"
+
+prepare:
+ @echo "Prepare ..."; \
+ if [ ! -d ${CMAKE_BUILD_DIR} ]; then \
+ $(CMAKE_COMMAND) -S${CMAKE_SOURCE_DIR} -B${CMAKE_BUILD_DIR} -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="/usr"; \
+ fi; \
+ echo "Prepare: OK"
+
+check:
+ @echo "Check ..."; \
+ if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \
+ echo "Check: OK"; \
+ else \
+ echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not fount !"; \
+ exit 1; \
+ fi
+
+build: depend prepare
+ @echo "Build ..."; \
+ make --directory=${CMAKE_BUILD_DIR}; \
+ echo "Build: OK"
+
+uninstall:
+ @echo "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="/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
+ $(RM) "/usr/share/locale/$${LANG}/LC_MESSAGES/$${FILE_MO}"; \
+ done
+# @for SIZE in 16x16 32x32 48x48 scalable; do \
+ $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/${PKGNAME}.svg"; \
+ $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/${PKGNAME}.png"; \
+ done
+# @for FILE_SVG in $(wildcard *.svg); do \
+ for SIZE in 16x16 32x32 48x48 scalable; do \
+ $(RM) "/usr/share/icons/hicolor/$${SIZE}/status/$${FILE_SVG%.*}".{svg,png,jpg}; \
+ done; \
+ done
+ @$(RM) "/usr/bin/${PKGNAME}"
+ @$(RM) "/usr/share/applications/${PKGNAME}.desktop"
+ @$(RM) "/usr/share/polkit-1/actions/ru.ublinux.pkexec.${PKGNAME}.exec.policy"
+ @$(RM) -rd "/usr/share/${PKGNAME}"
+ @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null
+ @update-desktop-database --quiet 2>/dev/null
+ @touch /usr/share/applications
+ @echo "Uninstall: OK"
+
+install: check uninstall
+ @echo "Install ..."
+ @for FILE_PO in $(wildcard *.po); do \
+ LANG=$${FILE_PO##*_};LANG=$${LANG%.*}; \
+ install -dm755 /usr/share/locale/$${LANG}/LC_MESSAGES; \
+ FILE_MO=$${FILE_PO##*/}; FILE_MO="$${FILE_MO%_*.po}.mo"; \
+ PATH_FILE_MO="/usr/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 /usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps; \
+ rsvg-convert -w $${SIZE} -h $${SIZE} -f svg --keep-image-data ${PKGNAME}.svg -o "/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/${PKGNAME}.svg"; \
+ done
+ @install -dm755 /usr/share/icons/hicolor/scalable/apps
+ @install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ ${PKGNAME}.svg
+ @install -Dm755 -t /usr/bin/ ${CMAKE_BUILD_DIR}/${PKGNAME}
+ @install -Dm644 -t /usr/share/applications/ ${PKGNAME}.desktop
+ @install -Dm644 -t /usr/share/polkit-1/actions/ org.ublinux.pkexec.${PKGNAME}.exec.policy
+ @install -dm755 /usr/share/${PKGNAME}/{ui,css,images}
+ @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}.glade
+ @install -Dm644 -t /usr/share/${PKGNAME}/css/ style.css
+ @install -Dm644 -t /usr/share/${PKGNAME}/images/ bg_top.png
+ @install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.svg
+# @install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.png
+ @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/
+ @update-desktop-database --quiet 2>/dev/null
+ @touch /usr/share/applications
+ @echo "Install: OK"
+
+clean:
+ @echo "Clean ..."
+ @$(RM) -rd ${CMAKE_BUILD_DIR}
+ @if [ -d ${CMAKE_BUILD_DIR} ]; then \
+ echo "Clean: error, compile directory exist ${CMAKE_BUILD_DIR}"; \
+ else \
+ echo "Clean: OK"; \
+ fi
+
+help:
+ @echo "The following are some of the valid targets for this Makefile:"
+ @echo "... all (the default if no target is provided)"
+ @echo "... init"
+ @echo "... debug"
+ @echo "... prepare"
+ @echo "... compile"
+ @echo "... install"
+ @echo "... uninstall"
+ @echo "... clean"
\ No newline at end of file
diff --git a/README.md b/README.md
index 141ec06..eacfcda 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,28 @@
# ublexec
+# Выполнить
+# Build
+In order to build ublexec you will need:
+
+- CMake
+- C compiler
+- GTK+ 3 & dependencies
+
+Once you have all the necessary dependencies, you can use:
+```sh
+$ make
+```
+
+# Installation
+After a successful build, just use:
+```sh
+$ sudo make install clean
+```
+
+# Uninstallation
+After a successful build, just use:
+```sh
+$ sudo make uninstall
+```
+
+
diff --git a/bg_top.png b/bg_top.png
new file mode 100644
index 0000000..8eb67cb
Binary files /dev/null and b/bg_top.png differ
diff --git a/org.ublinux.pkexec.ublexec.exec.policy b/org.ublinux.pkexec.ublexec.exec.policy
new file mode 100644
index 0000000..3664113
--- /dev/null
+++ b/org.ublinux.pkexec.ublexec.exec.policy
@@ -0,0 +1,24 @@
+
+
+
+
+ UBLinux
+ https://ublinux.ru
+
+
+ Run "ublexec" as root
+ Запус "Выполнить" с правами root
+ Authentication is required to run ublexec
+ Требуется авторизация для запуска "Выполнить" с правами root
+
+ auth_admin
+ auth_admin
+ auth_admin
+
+ /usr/bin/ublexec
+ true
+
+
+
diff --git a/screenshot/screenshot.png b/screenshot/screenshot.png
new file mode 100644
index 0000000..1b575f2
Binary files /dev/null and b/screenshot/screenshot.png differ
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
new file mode 100644
index 0000000..82357c3
--- /dev/null
+++ b/source/CMakeLists.txt
@@ -0,0 +1,28 @@
+cmake_minimum_required(VERSION 3.7)
+project(ublexec)
+
+find_package(PkgConfig REQUIRED)
+
+pkg_check_modules(GTK REQUIRED gtkmm-3.0)
+include_directories(${GTK_INCLUDE_DIRS})
+link_directories(${GTK_LIBRARY_DIRS})
+add_definitions(${GTK_CFLAGS_OTHER})
+find_package(Threads REQUIRED)
+
+#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wall -Wextra -Werror -Wmissing-declarations -fdiagnostics-color=always -std=c++2a -g")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic -Wmissing-declarations -fdiagnostics-color=always")
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+set(SOURCE_FILES
+ main.cc
+ ublexec.cc
+ ublexec.h)
+
+set(LIBRARIES
+ ${GTK_LIBRARIES}
+ pthread)
+
+add_executable(ublexec ${SOURCE_FILES})
+target_link_libraries(ublexec ${LIBRARIES} Threads::Threads)
+install(TARGETS ublexec DESTINATION bin)
diff --git a/source/main.cc b/source/main.cc
new file mode 100644
index 0000000..0995b90
--- /dev/null
+++ b/source/main.cc
@@ -0,0 +1,68 @@
+#include
+#include
+#include
+#include
+#include
+#include
+#include