From 26593a42dbc1b05ce00b099d4591ad75c7fef243 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 25 Jan 2023 16:49:00 +0000 Subject: [PATCH 1/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D1=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 + Makefile | 135 ++++ org.ublinux.pkexec.ublexec.exec.policy | 24 + source/CMakeLists.txt | 25 + source/main.cc | 86 ++ source/ublexec.cc | 431 ++++++++++ source/ublexec.h | 157 ++++ ublexec.desktop | 13 + ublexec.glade | 1027 ++++++++++++++++++++++++ ublexec_ru.po | 76 ++ 10 files changed, 1978 insertions(+) create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 org.ublinux.pkexec.ublexec.exec.policy create mode 100644 source/CMakeLists.txt create mode 100644 source/main.cc create mode 100644 source/ublexec.cc create mode 100644 source/ublexec.h create mode 100644 ublexec.desktop create mode 100644 ublexec.glade create mode 100644 ublexec_ru.po 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..c71260d --- /dev/null +++ b/Makefile @@ -0,0 +1,135 @@ +#!/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,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/ ${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/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/source/CMakeLists.txt b/source/CMakeLists.txt new file mode 100644 index 0000000..d9ace9b --- /dev/null +++ b/source/CMakeLists.txt @@ -0,0 +1,25 @@ +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}) + +#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 -Wmissing-declarations -fdiagnostics-color=always") + +set(SOURCE_FILES + main.cc + ublexec.cc + ublexec.h) + +set(LIBRARIES + ${GTK_LIBRARIES} + pthread) + +add_executable(ublexec ${SOURCE_FILES}) +target_link_libraries(ublexec ${LIBRARIES}) +install(TARGETS ublexec DESTINATION bin) diff --git a/source/main.cc b/source/main.cc new file mode 100644 index 0000000..74a37dc --- /dev/null +++ b/source/main.cc @@ -0,0 +1,86 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ublexec.h" + + + + + +int main(int argc, char** argv) +{ + + string str_cmd_argv = ""; + for (int i=1; irun(plug); + return 0; + } + else { + MainWindow* wnd = nullptr; + builder->get_widget_derived("window", wnd); + auto r = app->run(*wnd); + delete wnd; + return r; + } + +} diff --git a/source/ublexec.cc b/source/ublexec.cc new file mode 100644 index 0000000..9688acd --- /dev/null +++ b/source/ublexec.cc @@ -0,0 +1,431 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "ublexec.h" +using namespace std; + +string path_app= "/usr/bin/"; +string path_glade= "/usr/share/ublexec/ui/ublexec.glade"; +//string path_app = "/home/superadmin/Документы/Проект/ubconfig_new/ubcall/"; +string app_name = "ublexec"; +CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help) +: Glib::OptionGroup{p_name, p_description, p_help} { + Glib::OptionEntry socketIDArg; + socketIDArg.set_long_name("socket-id"); + socketIDArg.set_short_name('s'); + socketIDArg.set_flags(Glib::OptionEntry::FLAG_IN_MAIN); + socketIDArg.set_description("Settings manager socket"); + add_entry(socketIDArg, m_socketID); +} +::Window CmdArgParser::GetSocketID() const{ + return m_socketID; +} +MainWindow::MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder) + : Gtk::ApplicationWindow(obj), builder{builder} { + this->settings(); + } +MainWindow::MainWindow(Glib::RefPtr const& builder) { + this->builder = builder; + this->settings(); +} +void MainWindow::get_builder(){ + builder->get_widget("btnFilemaneg", btnFilemaneg); + builder->get_widget("btnListApp", btnListApp); + builder->get_widget("btnStart", btnStart); + builder->get_widget("chbTerminal", chbTerminal); + builder->get_widget("chbAnotherUser", chbAnotherUser); + builder->get_widget("cbxExecuteEpriority", cbxExecuteEpriority); + builder->get_widget("cmbUser", cmbUser); + builder->get_widget("spinPriority", spinPriority); + builder->get_widget("scalePriority", scalePriority); + builder->get_widget("rbPkexec", rbPkexec); + builder->get_widget("rbSu", rbSu); + builder->get_widget("rbSudo", rbSudo); + builder->get_widget("txtCmd", txtCmd); + builder->get_widget("wndChooseDirWallpaper", wndChooseDirWallpaper); + builder->get_widget("btnFilemangerExit", btnFilemangerExit); + builder->get_widget("btnFilemangerOk", btnFilemangerOk); + builder->get_widget("lblTimeEpriorityLow", lblTimeEpriorityLow); + builder->get_widget("lblTime4EpriorityHigh", lblTime4EpriorityHigh); + //builder->get_widget("lblUserName", lblUserName); + builder->get_widget("messageError", messageError); + builder->get_widget("lblMessageError", lblMessageError); + builder->get_widget("btnMessageErrorOk", btnMessageErrorOk); + builder->get_widget("btnMessageErrorOk", btnMessageErrorOk); + builder->get_widget("btnMessageErrorOk", btnMessageErrorOk); + builder->get_widget("dialogStartMenu", dialogStartMenu); + builder->get_widget("btnStartMenuOK", btnStartMenuOK); + builder->get_widget("btnStartMenuExit", btnStartMenuExit); + builder->get_widget("boxlistProgramm", boxlistProgramm); + + builder->get_widget("lblInfoHead", lblInfoHead); + builder->get_widget("lblinfoCmd", lblinfoCmd); + builder->get_widget("lblInfoTime", lblInfoTime); + builder->get_widget("labInfoExecutTerm", labInfoExecutTerm); + builder->get_widget("lblInfoUser", lblInfoUser); + builder->get_widget("lblInfoUserOther", lblInfoUserOther); + builder->get_widget("lblInfoUserName", lblInfoUserName); + builder->get_widget("lblInfoNooPriority", lblInfoNooPriority); + builder->get_widget("lblInfoExec", lblInfoExec); + builder->get_widget("lblInfoPriority", lblInfoPriority); + builder->get_widget("lblInfoPriority", lblInfoEnterProg); +} +void MainWindow::localization(){ + this->set_title(gettext("ublexec")); + dialogStartMenu->set_title(gettext("Warning!")); + lblInfoHead->set_text(gettext("Running applications as a user with a specified priority")); + lblinfoCmd->set_text(gettext("Command Line")); + lblInfoTime->set_text(gettext("Team:")); + labInfoExecutTerm->set_text(gettext("Run in the terminal emulator")); + lblInfoUser->set_text(gettext("User")); + lblInfoUserOther->set_text(gettext("Run as another user")); + lblInfoUserName->set_text(gettext("User Name:")); + lblInfoNooPriority->set_text(gettext("Priority:")); + lblInfoExec->set_text(gettext("Run with a different priority")); + lblInfoPriority->set_text(gettext("Priority:")); + lblMessageError->set_text(gettext("Select an executable file or program")); + lblInfoEnterProg->set_text(gettext("Selecting Programs")); + btnStart->set_label(gettext("Run")); +} + +void MainWindow::event(){ + btnFilemaneg->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_filemaneg)); + btnListApp->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::open_list_app)); + btnStart->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::start_cmd)); + cmbUser->signal_changed().connect(sigc::mem_fun(*this, &MainWindow::changed_user)); + //chbTerminal->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::execute_terminal)); + chbAnotherUser->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::activ_or_block_other_user)); + spinPriority->signal_value_changed().connect(sigc::mem_fun(*this, &MainWindow::change_scale_priority)); + scalePriority->signal_value_changed().connect(sigc::mem_fun(*this, &MainWindow::change_spin_priority)); + btnFilemangerExit->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::close_filemaneg)); + btnFilemangerOk->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::get_path_filemaneg)); + cbxExecuteEpriority->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::activ_or_block_execute_epriority)); + btnMessageErrorOk->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::message_gui_close)); + btnStartMenuOK->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::start_menu_entry_app)); + btnStartMenuExit->signal_clicked().connect(sigc::mem_fun(*this, &MainWindow::close_start_menu)); +} +void MainWindow::settings(){ + this->pars_apps(); + this->builder = builder; + this->get_builder(); + this->event(); + this->localization(); + spinPriority->set_range(-20,19); + spinPriority->set_increments(1.0,-1.0); + scalePriority->set_inverted(true); + this->pars_dir_bin(); + this->pars_users(); + this->activ_or_block_execute_epriority(); + this->activ_or_block_other_user(); + +} +void MainWindow::close_start_menu(){ + dialogStartMenu->hide(); +} + +void MainWindow::start_menu_entry_app(){} + +void MainWindow::message_gui_close(){ + messageError->hide(); +} + +void MainWindow::activ_or_block_execute_epriority(){ + bool flag = cbxExecuteEpriority->get_active(); + scalePriority->set_sensitive(flag); + spinPriority->set_sensitive(flag); + lblInfoNooPriority->set_sensitive(flag); + lblTimeEpriorityLow->set_sensitive(flag); + lblTime4EpriorityHigh->set_sensitive(flag); +} + +void MainWindow::open_filemaneg(){ + wndChooseDirWallpaper->show(); +} +void MainWindow::close_filemaneg(){ + wndChooseDirWallpaper->hide(); +} +void MainWindow::get_path_filemaneg(){ + path_file_name = wndChooseDirWallpaper->get_filename(); + if (path_file_name.length()==0){} + else{ + this->close_filemaneg(); + } +} +void MainWindow::open_list_app(){ + for (const auto & str_categor : set_categories){ + Gtk::Label* Label1 = new Gtk::Label(str_categor); + Gtk::IconView* icon = new Gtk::IconView(); + boxlistProgramm->pack_start(*icon); + boxlistProgramm->pack_start(*Label1); + dialogStartMenu->show_all(); + } +} +void MainWindow::start_cmd(){ + txtCmd->set_text(""); + string str_cmd_terminal=""; + string str_variants_root = ""; + string str_nice_cmd = ""; + //========================================= + if (chbAnotherUser->get_active()){ + if (rbPkexec->get_active()){ + if (geteuid()!=0){ + if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { + str_variants_root = "pcexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } + else if (chbAnotherUser->get_active()){ + str_variants_root = "pcexec --user " + cmbUser->get_active_text() + " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } + else{ + str_variants_root = "pcexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } + } + else{ + if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { + str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } + else if (chbAnotherUser->get_active()){ + str_variants_root = "pkexec --user " + cmbUser->get_active_text() + " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } + + else{ + str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } + } + } + else if (rbSu->get_active()){ + if (geteuid()!=0){ + chbTerminal->set_active(true); + } + if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { + str_variants_root="su "; + } + else if (chbAnotherUser->get_active()){ + str_variants_root="su --user " + cmbUser->get_active_text() + " "; + } + else{ + str_variants_root="su" ; + } + } + else if (rbSudo->get_active()){ + if (geteuid()!=0){ + chbTerminal->set_active(true); + } + if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { + str_variants_root="sudo "; + } + else if (chbAnotherUser->get_active()){ + str_variants_root="sudo --user " + cmbUser->get_active_text() + " "; + } + else{ + str_variants_root="sudo "; + } + } + } + if (cbxExecuteEpriority->get_active()){ + str_nice_cmd = "nice -n " + to_string(spinPriority->get_value_as_int()) + " "; + } + //========================================= + if (chbTerminal->get_active()){ + str_cmd_terminal=" xterm -e "; + } + else{ + str_cmd_terminal=""; + } + //========================================= + if (path_file_name.length()==0){ + messageError->show(); + } + txtCmd->set_text(str_cmd_terminal + str_variants_root + str_nice_cmd); + + + + + path_file_name=""; + } +void MainWindow::changed_user(){ + Glib::ustring entry_user = cmbUser->get_active_text(); + if (entry_user == "superadmin" || entry_user == "root"){ + spinPriority->set_range(-20,19); + spinPriority->set_increments(1.0,-1.0); + scalePriority->set_range(-20,19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("-20 (Высокий)"); + } + else{ + spinPriority->set_range(0,19); + spinPriority->set_increments(1.0,-1.0); + scalePriority->set_range(0,19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("0 (Высокий)"); + } +} +//void MainWindow::execute_terminal(){} +//void MainWindow::execute_another_User(){} +void MainWindow::activ_or_block_other_user(){ + bool flag = chbAnotherUser->get_active(); + cmbUser->set_sensitive(flag); + //lblInfoUserOther->set_sensitive(flag); + if (flag_pkexec==true){ + rbPkexec->set_sensitive(flag); + } + if (flag_su==true){ + rbSu->set_sensitive(flag); + } + if (flag_sudo==true){ + rbSudo->set_sensitive(flag); + } +} +void MainWindow::change_scale_priority(){ + scalePriority->set_value(spinPriority->get_value_as_int()); +} +void MainWindow::change_spin_priority(){ + spinPriority->set_value(scalePriority->get_value()); +} +void MainWindow::pars_dir_bin(){ + namespace fs = std::filesystem; + std::string path = "/bin"; + string file_name = ""; + for (const auto & entry : fs::directory_iterator(path)){ + file_name = entry.path().filename().string(); + if (file_name=="su"){ + flag_su=true; + } + else if (file_name=="sudo"){ + flag_sudo=true; + } + else if (file_name=="pkexec"){ + flag_pkexec=true; + } + } + rbPkexec->set_sensitive(flag_pkexec); + rbSu->set_sensitive(flag_su); + rbSudo->set_sensitive(flag_sudo); +} +void MainWindow::pars_users(){ + while (true) { + errno = 0; // so we can distinguish errors from no more entries + passwd* entry = getpwent(); + if (!entry) { + if (errno) { + break; + } + break; + } + if (entry->pw_uid>=1000 && entry->pw_uid!=65534){ + cmbUser->append(entry->pw_name); + } + } + endpwent(); +} +void MainWindow::pars_apps(){ + namespace fs = std::filesystem; + string file_name=""; + std::string line; + int index_equals = 0; + string key = ""; + string value = ""; + for (const auto & entry : fs::directory_iterator("/usr/share/applications/")){ + file_name = entry.path().filename().string(); + if (file_name.find(".desktop")!=std::string::npos){ + std::ifstream in(entry.path()); + if (in.is_open()){ + while (getline(in, line)){ + index_equals=line.find("="); + if (index_equals!=std::string::npos){ + key = line.substr(0, index_equals); + value = line.substr(index_equals+1,line.length()); + struct_App App; + if (key=="Name"){ + App.Name = value; + } + else if (key=="Type"){ + App.Type = value; + } + else if (key=="Exec"){ + App.Exec = value; + } + else if (key=="Icon"){ + App.Icon = value; + } + else if (key=="Icon"){ + App.Icon = value; + } + else if (key=="MimeType"){ + App.Icon = value; + } + else if (key=="Categories"){ + App.Categories = value; + string substr1 = ";"; + int index=0; + int old_index=0; + while ((index = value.find(substr1, index)) != std::string::npos) { + if ((value.length()-1)!=index){ + string s = value.substr(old_index, index); + if (s.find(";") != std::string::npos){ + s=s.replace(0,s.length(), ";"); + set_categories.insert(s); + } + else{ + if (value.substr(old_index, index).find(";") == std::string::npos){ + set_categories.insert(value.substr(old_index, index)); + } + } + } + if ((value.length()-1)==index){ + if (value.substr(old_index, index).find(";") == std::string::npos){ + set_categories.insert(value.substr(index,value.length())); + } + } + old_index=index; + index += substr1.length(); + } + } + } + } + } + } + } +} +SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr builder) + : Gtk::Plug{p_socketID} { + MainWindow* wnd = nullptr; + builder->get_widget_derived("window", wnd); + builder->get_widget("plugBox", plugBox); + plugBox->get_parent()->remove(*plugBox); + add(*plugBox); + show_all_children(); +} + + + + diff --git a/source/ublexec.h b/source/ublexec.h new file mode 100644 index 0000000..eb62d22 --- /dev/null +++ b/source/ublexec.h @@ -0,0 +1,157 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +using namespace std; + +extern string path_app; +extern string app_name; +extern string path_glade; + + +class CmdArgParser : public Glib::OptionGroup +{ + +public: + + CmdArgParser(const std::string& p_name, const std::string& p_description, const std::string& p_help); + + ::Window GetSocketID() const; + +private: + + int m_socketID = 0; + +}; + +// This is what is going to be plugged into xfce4-settings-manager: +// +// Documented here: +// +// https://developer.gnome.org/gtkmm-tutorial/3.22/sec-plugs-sockets-example.html.en +// +class MainWindow : public Gtk::ApplicationWindow { +public: + MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); + MainWindow(Glib::RefPtr const& builder); + void get_builder(); + void localization(); + void event(); + void settings(); + void close_start_menu(); + void start_menu_entry_app(); + void message_gui_close(); + void activ_or_block_execute_epriority(); + void open_filemaneg(); + void close_filemaneg(); + void get_path_filemaneg(); + void open_list_app(); + void start_cmd(); + void changed_user(); + void execute_terminal(){} + void execute_another_User(){} + void activ_or_block_other_user(); + void change_scale_priority(); + void change_spin_priority(); + void pars_dir_bin(); + void pars_users(); + void pars_apps(); + + public: + Glib::RefPtr builder; + Gtk::Button *btnFilemaneg; + Gtk::Button *btnListApp; + Gtk::Button *btnStart; + Gtk::CheckButton *chbTerminal; + Gtk::CheckButton *chbAnotherUser; + Gtk::CheckButton *cbxExecuteEpriority; + Gtk::ComboBoxText *cmbUser; + Gtk::SpinButton *spinPriority; + Gtk::Scale *scalePriority; + Gtk::RadioButton *rbPkexec; + Gtk::RadioButton *rbSu; + Gtk::RadioButton *rbSudo; + Gtk::Entry *txtCmd; + Gtk::FileChooserDialog *wndChooseDirWallpaper; + Gtk::Button *btnFilemangerExit; + Gtk::Button *btnFilemangerOk; + Gtk::Label *lblTimeEpriority; + Gtk::Label *lblTimeEpriorityLow; + Gtk::Label *lblTime4EpriorityHigh; + Gtk::Label *lblUserName; + Gtk::MessageDialog *messageError; + Gtk::Button *btnMessageErrorOk; + Gtk::Label *lblMessageError; + Gtk::Button *btnStartMenuOK; + Gtk::Button *btnStartMenuExit; + Gtk::Box *boxlistProgramm; + Gtk::Dialog *dialogStartMenu; + Gtk::Label *lblInfoHead; + Gtk::Label * lblinfoCmd; + Gtk::Label * lblInfoTime; + Gtk::Label * labInfoExecutTerm; + Gtk::Label * lblInfoUser; + Gtk::Label * lblInfoUserOther; + Gtk::Label * lblInfoUserName; + Gtk::Label * lblInfoNooPriority; + Gtk::Label * lblInfoExec; + Gtk::Label * lblInfoPriority; + Gtk::Label * lblInfoEnterProg; + + + + public: + string execute_cmd = ""; + bool flag_pkexec = false; + bool flag_su = false; + bool flag_sudo = false; + string path_file_name; + struct struct_App{ + string Name; + string Exec; + string Icon; + string MimeType; + string Type; + string Categories;}; + list list_app; + set set_categories; + + +}; + +class SettingsPlug : public Gtk::Plug{ +public: + Gtk::Window *window; + SettingsPlug(::Window p_socketID, Glib::RefPtr builder); + +private: + Gtk::Widget *plugBox; + Gtk::Widget *parent; +}; diff --git a/ublexec.desktop b/ublexec.desktop new file mode 100644 index 0000000..afa9126 --- /dev/null +++ b/ublexec.desktop @@ -0,0 +1,13 @@ +[Desktop Entry] +Encoding=UTF-8 +Name=ublexec +Name[ru]=Выполнить +GenericName=Execution from user rights +GenericName[ru]=Выполнить +Comment=Execution from user rights +Comment[ru]=Выполнить +Type=Application +Exec=ublexec +Icon=ublexec +Terminal=false +Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings; \ No newline at end of file diff --git a/ublexec.glade b/ublexec.glade new file mode 100644 index 0000000..84fe9bc --- /dev/null +++ b/ublexec.glade @@ -0,0 +1,1027 @@ + + + + + + -20 + 19 + 1 + 10 + + + False + Внимание! + dialog + + + False + vertical + 2 + + + False + end + + + ОК + True + True + True + + + True + True + 0 + + + + + Выход + True + True + True + + + True + True + 1 + + + + + False + False + 0 + + + + + True + False + vertical + + + True + False + Выбор программ + + + False + True + 0 + + + + + True + True + in + + + True + False + + + True + False + vertical + + + + + + + + + + True + True + 1 + + + + + True + True + 1 + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + gtk-media-play + + + False + + + True + False + vertical + + + True + False + vertical + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 80 + application-x-executable + + + False + True + 0 + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + Запуск приложений от имени пользователя с указанным приоритетом + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + 10 + vertical + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 0.019999999552965164 + in + + + True + False + 5 + 5 + vertical + + + True + False + + + 145 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + Команда: + True + 0 + + + False + True + 0 + + + + + 330 + True + True + Дата +Формат: ДД.ММ.ГГГГ + 5 + 5 + 5 + 5 + 6 + 6 + + + False + True + 1 + + + + + True + True + True + 5 + 5 + 5 + 5 + 6 + 6 + + + True + False + center + center + 5 + 5 + 5 + 5 + 6 + 6 + gtk-directory + + + + + False + True + 2 + + + + + True + True + True + 5 + 5 + 5 + 5 + 6 + 6 + + + True + False + center + center + 5 + 5 + 5 + 5 + 6 + 6 + edit-select-all + + + + + False + True + 3 + + + + + False + True + 0 + + + + + True + False + + + 135 + True + False + 15 + 5 + 15 + 5 + + + False + True + 0 + + + + + True + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + True + + + True + False + Выполнить в эмуляторе терминале + + + + + False + True + 1 + + + + + False + True + 1 + + + + + + + True + False + Командная строка + + + + + False + True + 0 + + + + + False + True + 1 + + + + + True + False + 10 + vertical + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 0.019999999552965164 + in + + + True + False + 5 + 5 + vertical + + + True + False + + + True + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + True + + + True + False + Выполнить от имени другого пользователя + + + + + False + True + 0 + + + + + pkexec + True + True + False + True + rbSu + + + False + True + 1 + + + + + su + True + True + False + True + rbPkexec + + + False + True + 2 + + + + + sudo + True + True + False + True + rbSu + + + False + True + 3 + + + + + 95 + True + False + end + 15 + 5 + 15 + 5 + + + False + True + 4 + + + + + False + True + 0 + + + + + True + False + + + 145 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + Имя поьзователя: + True + 0 + + + False + True + 0 + + + + + 330 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + + + False + True + 1 + + + + + False + True + 1 + + + + + + + True + False + Пользователь + + + + + False + True + 0 + + + + + False + True + 2 + + + + + True + False + 10 + vertical + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 0.019999999552965164 + in + + + True + False + 5 + 5 + vertical + + + True + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + True + + + True + False + Выполнить c другим приоритетом + + + + + False + True + 0 + + + + + True + False + + + 5 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + Приоритет: + True + 0 + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 6 + 6 + adjustment1 + 20 + 0 + + + True + True + 1 + + + + + True + True + 5 + 5 + 5 + 5 + 6 + 6 + True + + + False + True + 2 + + + + + False + True + 1 + + + + + True + False + + + 65 + True + False + 15 + 5 + 15 + 5 + 0 + + + False + True + 0 + + + + + 145 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 19 (Низкий) + True + 0 + + + False + True + 1 + + + + + True + False + end + center + 5 + 5 + 5 + 5 + 6 + 6 + -20 (Высокий) + True + 0 + + + True + True + 3 + + + + + 95 + True + False + end + 15 + 5 + 15 + 5 + + + False + True + 4 + + + + + False + True + 2 + + + + + + + True + False + Приоритет + + + + + False + True + 0 + + + + + False + True + 3 + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 0.019999999552965164 + in + + + True + False + 5 + 5 + vertical + + + Запустить + True + True + True + 5 + 5 + 5 + 5 + 6 + 6 + image1 + True + + + False + True + 0 + + + + + + + + + + False + True + 4 + + + + + True + True + 0 + + + + + False + True + 0 + + + + + + + False + Внимание! + dialog + + + False + vertical + 2 + + + False + True + end + + + + + + ОК + True + True + True + + + True + True + 1 + + + + + False + False + 0 + + + + + True + False + 10 + 10 + 15 + Выберите исполняемый файл или программу + + + True + True + 2 + + + + + + + False + Пожалуйста Выберите Файл + True + center + 500 + 400 + True + dialog + True + True + + + False + vertical + 2 + + + False + end + + + gtk-cancel + True + True + True + True + + + True + True + 0 + + + + + gtk-ok + True + True + True + True + + + True + True + 1 + + + + + False + False + 0 + + + + + + + + + diff --git a/ublexec_ru.po b/ublexec_ru.po new file mode 100644 index 0000000..591a127 --- /dev/null +++ b/ublexec_ru.po @@ -0,0 +1,76 @@ +# English translations for PACKAGE package. +# Copyright (C) 2023 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# Automatically generated, 2023. +# +msgid "" +msgstr "" + +msgid "ОК" +msgstr "ОК" + +msgid "Exit" +msgstr "Выход" + +msgid "Selecting Programs" +msgstr "Выбор программ" + +msgid "Running applications as a user with a specified priority" +msgstr "Запуск приложений от имени пользователя с указанным приоритетом" + +msgid "Team:" +msgstr "Команда:" + +msgid "Run in the terminal emulator" +msgstr "Выполнить в эмуляторе терминале" + +msgid "Command Line" +msgstr "Командная строка" + +msgid "Run as another user" +msgstr "Выполнить от имени другого пользователя" + +msgid "pkexec" +msgstr "pkexec" + +msgid "su" +msgstr "su" + +msgid "sudo" +msgstr "sudo" + +msgid "User Name:" +msgstr "Имя поьзователя:" + +msgid "User" +msgstr "Пользователь" + +msgid "Run with a different priority" +msgstr "Выполнить c другим приоритетом" + +msgid "Priority:" +msgstr "Приоритет:" + +msgid "19 (Low)" +msgstr "19 (Низкий)" + +msgid "-20 (High)" +msgstr "-20 (Высокий)" + +msgid "Priority" +msgstr "Приоритет" + +msgid "Run" +msgstr "Запустить" + +msgid "Select an executable file or program" +msgstr "Выберите исполняемый файл или программу" + +msgid "Please select File" +msgstr "Пожалуйста Выберите Файл" + +msgid "Warning!" +msgstr "Внимание!" + +msgid "ublexec" +msgstr "Выполнить" From e912ffe356508283ee5f9fd9eb10d5fce307b711 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Wed, 25 Jan 2023 17:57:04 +0000 Subject: [PATCH 2/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20CSS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 4 ++-- README.md | 26 ++++++++++++++++++++++++++ screenshot/screenshot.png | Bin 0 -> 34262 bytes source/ublexec.cc | 30 +++++++++++++++++++++--------- source/ublexec.h | 25 ++++++++++++++----------- style.css | 4 ++++ ublexec.glade | 14 +++++++++----- ublexec_ru.po | 2 +- 8 files changed, 77 insertions(+), 28 deletions(-) create mode 100644 screenshot/screenshot.png create mode 100644 style.css diff --git a/Makefile b/Makefile index c71260d..494a4fd 100644 --- a/Makefile +++ b/Makefile @@ -104,9 +104,9 @@ install: check uninstall @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,images} + @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}/css/ style.css # @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/ diff --git a/README.md b/README.md index 141ec06..0072bc5 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 +``` + +![alt text](screenshot/screenshot.png) diff --git a/screenshot/screenshot.png b/screenshot/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2ec435f152d8b3c479f77c1b95ad788be8a220 GIT binary patch literal 34262 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 f3BVmOagAR8Y`tU^get_widget("rbSu", rbSu); builder->get_widget("rbSudo", rbSudo); builder->get_widget("txtCmd", txtCmd); - builder->get_widget("wndChooseDirWallpaper", wndChooseDirWallpaper); + builder->get_widget("wndChooseFileWallpaper", wndChooseFileWallpaper); builder->get_widget("btnFilemangerExit", btnFilemangerExit); builder->get_widget("btnFilemangerOk", btnFilemangerOk); builder->get_widget("lblTimeEpriorityLow", lblTimeEpriorityLow); @@ -85,7 +86,6 @@ void MainWindow::get_builder(){ builder->get_widget("btnStartMenuOK", btnStartMenuOK); builder->get_widget("btnStartMenuExit", btnStartMenuExit); builder->get_widget("boxlistProgramm", boxlistProgramm); - builder->get_widget("lblInfoHead", lblInfoHead); builder->get_widget("lblinfoCmd", lblinfoCmd); builder->get_widget("lblInfoTime", lblInfoTime); @@ -97,9 +97,23 @@ void MainWindow::get_builder(){ builder->get_widget("lblInfoExec", lblInfoExec); builder->get_widget("lblInfoPriority", lblInfoPriority); builder->get_widget("lblInfoPriority", lblInfoEnterProg); + builder->get_widget("boxColor", boxColor); +} + +void MainWindow::add_CSS(){ + Glib::RefPtr cssProvider = Gtk::CssProvider::create(); + cssProvider->load_from_path(path_css); + Glib::RefPtr styleContext = Gtk::StyleContext::create(); + Glib::RefPtr screen = Gdk::Screen::get_default();//get default screen + styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application + Glib::RefPtr context = boxColor->get_style_context(); + context->add_class("cssboxColor1"); } + void MainWindow::localization(){ this->set_title(gettext("ublexec")); + btnStart->set_label(gettext("Run")); + wndChooseFileWallpaper->set_title(gettext("Please select File")); dialogStartMenu->set_title(gettext("Warning!")); lblInfoHead->set_text(gettext("Running applications as a user with a specified priority")); lblinfoCmd->set_text(gettext("Command Line")); @@ -113,7 +127,7 @@ void MainWindow::localization(){ lblInfoPriority->set_text(gettext("Priority:")); lblMessageError->set_text(gettext("Select an executable file or program")); lblInfoEnterProg->set_text(gettext("Selecting Programs")); - btnStart->set_label(gettext("Run")); + } void MainWindow::event(){ @@ -138,6 +152,7 @@ void MainWindow::settings(){ this->get_builder(); this->event(); this->localization(); + this->add_CSS(); spinPriority->set_range(-20,19); spinPriority->set_increments(1.0,-1.0); scalePriority->set_inverted(true); @@ -167,13 +182,13 @@ void MainWindow::activ_or_block_execute_epriority(){ } void MainWindow::open_filemaneg(){ - wndChooseDirWallpaper->show(); + wndChooseFileWallpaper->show(); } void MainWindow::close_filemaneg(){ - wndChooseDirWallpaper->hide(); + wndChooseFileWallpaper->hide(); } void MainWindow::get_path_filemaneg(){ - path_file_name = wndChooseDirWallpaper->get_filename(); + path_file_name = wndChooseFileWallpaper->get_filename(); if (path_file_name.length()==0){} else{ this->close_filemaneg(); @@ -265,9 +280,6 @@ void MainWindow::start_cmd(){ } txtCmd->set_text(str_cmd_terminal + str_variants_root + str_nice_cmd); - - - path_file_name=""; } void MainWindow::changed_user(){ diff --git a/source/ublexec.h b/source/ublexec.h index eb62d22..49b9dec 100644 --- a/source/ublexec.h +++ b/source/ublexec.h @@ -34,6 +34,7 @@ using namespace std; extern string path_app; extern string app_name; extern string path_glade; +extern string path_css; class CmdArgParser : public Glib::OptionGroup @@ -62,6 +63,7 @@ public: MainWindow(BaseObjectType* obj, Glib::RefPtr const& builder); MainWindow(Glib::RefPtr const& builder); void get_builder(); + void add_CSS(); void localization(); void event(); void settings(); @@ -99,7 +101,7 @@ public: Gtk::RadioButton *rbSu; Gtk::RadioButton *rbSudo; Gtk::Entry *txtCmd; - Gtk::FileChooserDialog *wndChooseDirWallpaper; + Gtk::FileChooserDialog *wndChooseFileWallpaper; Gtk::Button *btnFilemangerExit; Gtk::Button *btnFilemangerOk; Gtk::Label *lblTimeEpriority; @@ -114,16 +116,17 @@ public: Gtk::Box *boxlistProgramm; Gtk::Dialog *dialogStartMenu; Gtk::Label *lblInfoHead; - Gtk::Label * lblinfoCmd; - Gtk::Label * lblInfoTime; - Gtk::Label * labInfoExecutTerm; - Gtk::Label * lblInfoUser; - Gtk::Label * lblInfoUserOther; - Gtk::Label * lblInfoUserName; - Gtk::Label * lblInfoNooPriority; - Gtk::Label * lblInfoExec; - Gtk::Label * lblInfoPriority; - Gtk::Label * lblInfoEnterProg; + Gtk::Label *lblinfoCmd; + Gtk::Label *lblInfoTime; + Gtk::Label *labInfoExecutTerm; + Gtk::Label *lblInfoUser; + Gtk::Label *lblInfoUserOther; + Gtk::Label *lblInfoUserName; + Gtk::Label *lblInfoNooPriority; + Gtk::Label *lblInfoExec; + Gtk::Label *lblInfoPriority; + Gtk::Label *lblInfoEnterProg; + Gtk::Box *boxColor; diff --git a/style.css b/style.css new file mode 100644 index 0000000..f3bdf4e --- /dev/null +++ b/style.css @@ -0,0 +1,4 @@ +.cssboxColor1{ + background-color: rgb(255, 255, 255); + background-size: 100% auto; +} \ No newline at end of file diff --git a/ublexec.glade b/ublexec.glade index 84fe9bc..552ef51 100644 --- a/ublexec.glade +++ b/ublexec.glade @@ -122,6 +122,7 @@ False + Выполнить True @@ -138,7 +139,7 @@ False vertical - + True False @@ -171,6 +172,9 @@ 6 6 Запуск приложений от имени пользователя с указанным приоритетом + + + True @@ -264,8 +268,8 @@ 5 5 5 - 6 - 6 + 3 + 3 True @@ -963,9 +967,9 @@ - + False - Пожалуйста Выберите Файл + Пожалуйста выберите Файл True center 500 diff --git a/ublexec_ru.po b/ublexec_ru.po index 591a127..e395e0c 100644 --- a/ublexec_ru.po +++ b/ublexec_ru.po @@ -67,7 +67,7 @@ msgid "Select an executable file or program" msgstr "Выберите исполняемый файл или программу" msgid "Please select File" -msgstr "Пожалуйста Выберите Файл" +msgstr "Пожалуйста выберите Файл" msgid "Warning!" msgstr "Внимание!" From 1b8e13e3f34b505bf78d9de47f548eb9f5adaccd Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Thu, 26 Jan 2023 17:55:37 +0600 Subject: [PATCH 3/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=84=D0=BE=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 7 +- bg_top.png | Bin 0 -> 45513 bytes source/main.cc | 2 +- source/ublexec.cc | 41 +- style.css | 3 +- ublexec.glade | 6 +- ublexec.svg | 5680 +++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 5716 insertions(+), 23 deletions(-) create mode 100644 bg_top.png create mode 100644 ublexec.svg diff --git a/Makefile b/Makefile index 494a4fd..69aebbf 100644 --- a/Makefile +++ b/Makefile @@ -95,19 +95,20 @@ install: check uninstall echo $${FILE_PO}; \ msgfmt "$${FILE_PO}" -v -f -o "$${PATH_FILE_MO}"; \ done -# @for SIZE in 16 32 48; do \ + @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 -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/ ${PKGNAME}.svg + @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 diff --git a/bg_top.png b/bg_top.png new file mode 100644 index 0000000000000000000000000000000000000000..d673a36f2602b94f7541bf9d6b9b846fb3cbeccd GIT binary patch literal 45513 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 T)U!vG00000NkvXXu0mjfBYct@ literal 0 HcmV?d00001 diff --git a/source/main.cc b/source/main.cc index 74a37dc..0f9293c 100644 --- a/source/main.cc +++ b/source/main.cc @@ -43,7 +43,7 @@ int main(int argc, char** argv) str_cmd_argv+= to_string(*argv[i]) + " "; } if (geteuid()!=0){ - string cmd = "pkexec " + app_name + " " + str_cmd_argv ; + string cmd = "pkexec " + app_name + " " + str_cmd_argv; system(cmd.c_str()); return 0; } diff --git a/source/ublexec.cc b/source/ublexec.cc index 522a1e3..09e7732 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -191,6 +191,7 @@ void MainWindow::get_path_filemaneg(){ path_file_name = wndChooseFileWallpaper->get_filename(); if (path_file_name.length()==0){} else{ + txtCmd->set_text(path_file_name); this->close_filemaneg(); } } @@ -204,7 +205,7 @@ void MainWindow::open_list_app(){ } } void MainWindow::start_cmd(){ - txtCmd->set_text(""); + //txtCmd->set_text(""); string str_cmd_terminal=""; string str_variants_root = ""; string str_nice_cmd = ""; @@ -268,17 +269,24 @@ void MainWindow::start_cmd(){ str_nice_cmd = "nice -n " + to_string(spinPriority->get_value_as_int()) + " "; } //========================================= + + string user_cmd = txtCmd->get_text(); + //========================================= + if (user_cmd.length()==0){ + messageError->show(); + } + if (chbTerminal->get_active()){ str_cmd_terminal=" xterm -e "; } else{ str_cmd_terminal=""; } - //========================================= - if (path_file_name.length()==0){ - messageError->show(); - } - txtCmd->set_text(str_cmd_terminal + str_variants_root + str_nice_cmd); + string cmd = ""; + cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; + cout << cmd << endl; + txtCmd->set_text(cmd); + system(cmd.c_str()); path_file_name=""; } @@ -345,18 +353,21 @@ void MainWindow::pars_dir_bin(){ } void MainWindow::pars_users(){ while (true) { - errno = 0; // so we can distinguish errors from no more entries - passwd* entry = getpwent(); - if (!entry) { - if (errno) { + errno = 0; // so we can distinguish errors from no more entries + passwd* entry = getpwent(); + if (!entry) { + if (errno) { + break; + } break; } - break; - } - if (entry->pw_uid>=1000 && entry->pw_uid!=65534){ - cmbUser->append(entry->pw_name); - } + + if (entry->pw_uid>=1000 && entry->pw_uid!=65534){ + cmbUser->append(entry->pw_name); + } } + + cmbUser->append("root"); endpwent(); } void MainWindow::pars_apps(){ diff --git a/style.css b/style.css index f3bdf4e..5496feb 100644 --- a/style.css +++ b/style.css @@ -1,4 +1,3 @@ .cssboxColor1{ - background-color: rgb(255, 255, 255); - background-size: 100% auto; + background: url("/usr/share/ublexec/images/bg_top.png") no-repeat; } \ No newline at end of file diff --git a/ublexec.glade b/ublexec.glade index 552ef51..768ed98 100644 --- a/ublexec.glade +++ b/ublexec.glade @@ -152,8 +152,8 @@ 5 6 6 - 80 - application-x-executable + 69 + ublexec False @@ -173,6 +173,8 @@ 6 Запуск приложений от имени пользователя с указанным приоритетом + + diff --git a/ublexec.svg b/ublexec.svg new file mode 100644 index 0000000..0ec751a --- /dev/null +++ b/ublexec.svg @@ -0,0 +1,5680 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 06f1ab1821bb4c9fdabf2d638b454e0b8558d6b3 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 27 Jan 2023 14:38:09 +0600 Subject: [PATCH 4/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D0=BF=D0=B0=D1=80=D1=81=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/main.cc | 2 - source/ublexec.cc | 192 +++++++++----- source/ublexec.h | 41 ++- ublexec.glade | 620 ++++++++++++++++++++++++++++++++++++++-------- ublexec_ru.po | 30 +++ 5 files changed, 715 insertions(+), 170 deletions(-) diff --git a/source/main.cc b/source/main.cc index 0f9293c..91c417f 100644 --- a/source/main.cc +++ b/source/main.cc @@ -9,7 +9,6 @@ #include #include #include -#include #include #include #include @@ -24,7 +23,6 @@ #include #include #include -#include #include #include #include diff --git a/source/ublexec.cc b/source/ublexec.cc index 09e7732..6127199 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -24,7 +24,6 @@ #include #include #include -#include #include #include #include @@ -98,6 +97,37 @@ void MainWindow::get_builder(){ builder->get_widget("lblInfoPriority", lblInfoPriority); builder->get_widget("lblInfoPriority", lblInfoEnterProg); builder->get_widget("boxColor", boxColor); + builder->get_widget("lblGraphics", lblGraphics); + builder->get_widget("lblTools", lblTools); + builder->get_widget("lblInternet", lblInternet); + builder->get_widget("lblMultimedia", lblMultimedia); + builder->get_widget("lblSettings", lblSettings); + builder->get_widget("lblEducation", lblEducation); + builder->get_widget("lblOffice", lblOffice); + builder->get_widget("lblOther", lblOther); + builder->get_widget("lblDevelopment", lblDevelopment); + builder->get_widget("lblSystem", lblSystem); + builder->get_widget("iconGraphics", iconGraphics); + builder->get_widget("iconTools", iconTools); + builder->get_widget("iconInternet", iconInternet); + builder->get_widget("iconMultimedia", iconMultimedia); + builder->get_widget("iconSettings", iconSettings); + builder->get_widget("iconEducation", iconEducation); + builder->get_widget("iconOffice", iconOffice); + builder->get_widget("iconOther", iconOther); + builder->get_widget("iconDevelopment", iconDevelopment); + builder->get_widget("iconSystem", iconSystem); + + builder->get_widget("liststoreGraphics", liststoreGraphics); + builder->get_widget("liststoreTools", liststoreTools); + builder->get_widget("liststoreInternet", liststoreInternet); + builder->get_widget("liststoreMultimedia", liststoreMultimedia); + builder->get_widget("liststoreSettings", liststoreSettings); + builder->get_widget("liststoreEducation", liststoreEducation); + builder->get_widget("liststoreOffice", liststoreOffice); + builder->get_widget("liststoreOther", liststoreOther); + builder->get_widget("liststoreDevelopment", liststoreDevelopment); + builder->get_widget("liststoreSystem", liststoreSystem); } void MainWindow::add_CSS(){ @@ -127,7 +157,16 @@ void MainWindow::localization(){ lblInfoPriority->set_text(gettext("Priority:")); lblMessageError->set_text(gettext("Select an executable file or program")); lblInfoEnterProg->set_text(gettext("Selecting Programs")); - + lblGraphics->set_text(gettext("Graphics")); + lblTools->set_text(gettext("Tools")); + lblInternet->set_text(gettext("Internet")); + lblMultimedia->set_text(gettext("Multimedia")); + lblSettings->set_text(gettext("Settings")); + lblEducation->set_text(gettext("Education")); + lblOffice->set_text(gettext("Office")); + lblOther->set_text(gettext("Other")); + lblDevelopment->set_text(gettext("Development")); + lblSystem->set_text(gettext("System")); } void MainWindow::event(){ @@ -196,13 +235,54 @@ void MainWindow::get_path_filemaneg(){ } } void MainWindow::open_list_app(){ + //liststoreDevelopment = iconDevelopment->get_model(); + /* + for ( const auto &str_app : list_app){ + for ( const auto &str_categor : str_app.Categories){ + if (str_categor=="Graphics"){ + + } + else if (str_categor=="Tools"){ + + } + else if (str_categor=="Internet"){ + + } + else if (str_categor=="Multimedia"){ + + } + else if (str_categor=="Settings"){ + + } + else if (str_categor=="Education"){ + + } + else if (str_categor=="Office"){ + + } + else if (str_categor=="Other"){ + + } + else if (str_categor=="Development"){ + cout << str_categor << endl; + } + else if (str_categor=="System"){ + + } + + } + } for (const auto & str_categor : set_categories){ Gtk::Label* Label1 = new Gtk::Label(str_categor); Gtk::IconView* icon = new Gtk::IconView(); boxlistProgramm->pack_start(*icon); boxlistProgramm->pack_start(*Label1); - dialogStartMenu->show_all(); + } + + */ + dialogStartMenu->show_all(); + } void MainWindow::start_cmd(){ //txtCmd->set_text(""); @@ -284,7 +364,6 @@ void MainWindow::start_cmd(){ } string cmd = ""; cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; - cout << cmd << endl; txtCmd->set_text(cmd); system(cmd.c_str()); @@ -370,73 +449,55 @@ void MainWindow::pars_users(){ cmbUser->append("root"); endpwent(); } + +vector MainWindow::split(const std::string &s, char delim) { + std::stringstream ss(s); + std::string item; + std::vector elems; + while (std::getline(ss, item, delim)) { + elems.push_back(item); + // elems.push_back(std::move(item)); // if C++11 (based on comment from @mchiasson) + } + return elems; +} + void MainWindow::pars_apps(){ + if (list_app.size()!=0){return;} namespace fs = std::filesystem; - string file_name=""; - std::string line; - int index_equals = 0; - string key = ""; - string value = ""; - for (const auto & entry : fs::directory_iterator("/usr/share/applications/")){ + struct struct_App App; + string file_name = ""; + string str_Categories; + string path = "/usr/share/applications/"; + for (const auto & entry : fs::directory_iterator(path)){ file_name = entry.path().filename().string(); + path = "/usr/share/applications/"+file_name; if (file_name.find(".desktop")!=std::string::npos){ - std::ifstream in(entry.path()); - if (in.is_open()){ - while (getline(in, line)){ - index_equals=line.find("="); - if (index_equals!=std::string::npos){ - key = line.substr(0, index_equals); - value = line.substr(index_equals+1,line.length()); - struct_App App; - if (key=="Name"){ - App.Name = value; - } - else if (key=="Type"){ - App.Type = value; - } - else if (key=="Exec"){ - App.Exec = value; - } - else if (key=="Icon"){ - App.Icon = value; - } - else if (key=="Icon"){ - App.Icon = value; - } - else if (key=="MimeType"){ - App.Icon = value; - } - else if (key=="Categories"){ - App.Categories = value; - string substr1 = ";"; - int index=0; - int old_index=0; - while ((index = value.find(substr1, index)) != std::string::npos) { - if ((value.length()-1)!=index){ - string s = value.substr(old_index, index); - if (s.find(";") != std::string::npos){ - s=s.replace(0,s.length(), ";"); - set_categories.insert(s); - } - else{ - if (value.substr(old_index, index).find(";") == std::string::npos){ - set_categories.insert(value.substr(old_index, index)); - } - } - } - if ((value.length()-1)==index){ - if (value.substr(old_index, index).find(";") == std::string::npos){ - set_categories.insert(value.substr(index,value.length())); - } - } - old_index=index; - index += substr1.length(); - } - } - } - } + GKeyFile *gfile=g_key_file_new(); + g_key_file_load_from_file(gfile,path.c_str(),G_KEY_FILE_KEEP_TRANSLATIONS,NULL); + char *Type=g_key_file_get_string(gfile,"Desktop Entry", "Type",NULL); + char *Name=g_key_file_get_locale_string(gfile,"Desktop Entry","Name",setlocale(LC_ALL,NULL),NULL); + char *Exec=g_key_file_get_string(gfile,"Desktop Entry", "Exec",NULL); + char *Categories=g_key_file_get_locale_string(gfile,"Desktop Entry", "Categories",setlocale(LC_ALL,""),NULL); + char *Icon=g_key_file_get_string(gfile,"Desktop Entry", "Icon",NULL); + if (Type==NULL) continue; + if (Name==NULL) continue; + if (Exec==NULL) continue; + if (Categories==NULL) continue; + if (Icon==NULL) continue; + str_Categories = Categories; + App.Name = Name; + App.Type = Type; + App.Exec = Exec; + App.Icon = Name; + App.Name_desktop = file_name; + App.Categories = split(str_Categories, ';'); + for ( const auto &text : App.Categories){ + set_categories.insert(text); + } + } + list_app.push_back(App); } } SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr builder) @@ -452,3 +513,4 @@ SettingsPlug::SettingsPlug(::Window p_socketID, Glib::RefPtr build + diff --git a/source/ublexec.h b/source/ublexec.h index 49b9dec..7d05c8b 100644 --- a/source/ublexec.h +++ b/source/ublexec.h @@ -85,6 +85,7 @@ public: void pars_dir_bin(); void pars_users(); void pars_apps(); + vector split(const std::string &s, char delim); public: Glib::RefPtr builder; @@ -115,6 +116,7 @@ public: Gtk::Button *btnStartMenuExit; Gtk::Box *boxlistProgramm; Gtk::Dialog *dialogStartMenu; + Gtk::Box *boxColor; Gtk::Label *lblInfoHead; Gtk::Label *lblinfoCmd; Gtk::Label *lblInfoTime; @@ -126,7 +128,40 @@ public: Gtk::Label *lblInfoExec; Gtk::Label *lblInfoPriority; Gtk::Label *lblInfoEnterProg; - Gtk::Box *boxColor; + + Gtk::Label *lblGraphics; + Gtk::Label *lblTools; + Gtk::Label *lblInternet; + Gtk::Label *lblMultimedia; + Gtk::Label *lblSettings; + Gtk::Label *lblEducation; + Gtk::Label *lblOffice; + Gtk::Label *lblOther; + Gtk::Label *lblDevelopment; + Gtk::Label *lblSystem; + + Gtk::IconView *iconGraphics; + Gtk::IconView *iconTools; + Gtk::IconView *iconInternet; + Gtk::IconView *iconMultimedia; + Gtk::IconView *iconSettings; + Gtk::IconView *iconEducation; + Gtk::IconView *iconOffice; + Gtk::IconView *iconOther; + Gtk::IconView *iconDevelopment; + Gtk::IconView *iconSystem; + + Gtk::ListStore *liststoreGraphics; + Gtk::ListStore *liststoreTools; + Gtk::ListStore *liststoreInternet; + Gtk::ListStore *liststoreMultimedia; + Gtk::ListStore *liststoreSettings; + Gtk::ListStore *liststoreEducation; + Gtk::ListStore *liststoreOffice; + Gtk::ListStore *liststoreOther; + Gtk::ListStore *liststoreDevelopment; + Gtk::ListStore *liststoreSystem; + @@ -137,12 +172,14 @@ public: bool flag_sudo = false; string path_file_name; struct struct_App{ + string Name_desktop; string Name; string Exec; string Icon; string MimeType; string Type; - string Categories;}; + vector Categories; + }; list list_app; set set_categories; diff --git a/ublexec.glade b/ublexec.glade index 768ed98..36549df 100644 --- a/ublexec.glade +++ b/ublexec.glade @@ -8,107 +8,6 @@ 1 10 - - False - Внимание! - dialog - - - False - vertical - 2 - - - False - end - - - ОК - True - True - True - - - True - True - 0 - - - - - Выход - True - True - True - - - True - True - 1 - - - - - False - False - 0 - - - - - True - False - vertical - - - True - False - Выбор программ - - - False - True - 0 - - - - - True - True - in - - - True - False - - - True - False - vertical - - - - - - - - - - True - True - 1 - - - - - True - True - 1 - - - - - True False @@ -914,6 +813,525 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 250 + 470 + False + dialog + + + False + vertical + 2 + + + False + end + + + ОК + True + True + True + + + True + True + 0 + + + + + Выход + True + True + True + + + True + True + 1 + + + + + False + False + 0 + + + + + True + False + vertical + + + True + False + Выбор программ + + + False + True + 0 + + + + + True + True + in + + + True + False + + + True + False + vertical + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Графика + + + False + True + 0 + + + + + True + True + 6 + horizontal + liststoreGraphics + + + False + True + 1 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Инструменты + + + False + True + 2 + + + + + True + True + 6 + horizontal + liststoreTools + + + False + True + 3 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Интернет + + + False + True + 4 + + + + + True + True + 6 + horizontal + liststoreInternet + + + False + True + 5 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Мультимедиа + + + False + True + 6 + + + + + True + True + 6 + horizontal + liststoreMultimedia + + + False + True + 7 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Настройки + + + False + True + 8 + + + + + True + True + 6 + horizontal + liststoreSettings + + + False + True + 9 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Образование + + + False + True + 10 + + + + + True + True + 6 + horizontal + liststoreEducation + + + False + True + 11 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Офис + + + False + True + 12 + + + + + True + True + 6 + horizontal + liststoreOffice + + + False + True + 13 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Прочие + + + False + True + 14 + + + + + True + True + 6 + horizontal + liststoreOther + + + False + True + 15 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Разработка + + + False + True + 16 + + + + + True + True + 6 + horizontal + liststoreDevelopment + + + False + True + 17 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Система + + + False + True + 18 + + + + + True + True + 6 + horizontal + liststoreSystem + + + False + True + 19 + + + + + + + + + True + True + 1 + + + + + True + True + 1 + + + + + False Внимание! diff --git a/ublexec_ru.po b/ublexec_ru.po index e395e0c..051caa7 100644 --- a/ublexec_ru.po +++ b/ublexec_ru.po @@ -6,6 +6,36 @@ msgid "" msgstr "" +msgid "System" +msgstr "Система" + +msgid "Development" +msgstr "Разработка" + +msgid "Other" +msgstr "Прочие" + +msgid "Office" +msgstr "Офис" + +msgid "Education" +msgstr "Образование" + +msgid "Settings" +msgstr "Настройки" + +msgid "Multimedia" +msgstr "Мультимедиа" + +msgid "Internet" +msgstr "Интернет" + +msgid "Tools" +msgstr "Инструменты" + +msgid "Graphics" +msgstr "Графика" + msgid "ОК" msgstr "ОК" From 538e43e6b5a31f314f87b896644edbc2e5e7f362 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Fri, 27 Jan 2023 15:53:54 +0600 Subject: [PATCH 5/7] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8=20?= =?UTF-8?q?=D1=81=20=D0=BF=D1=80=D0=B8=D0=B2=D0=B5=D0=BB=D0=B5=D0=B3=D0=B8?= =?UTF-8?q?=D1=8F=D0=BC=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- source/main.cc | 6 +++--- source/ublexec.cc | 22 ++++++++++++++++------ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/source/main.cc b/source/main.cc index 91c417f..9c08001 100644 --- a/source/main.cc +++ b/source/main.cc @@ -41,9 +41,9 @@ int main(int argc, char** argv) str_cmd_argv+= to_string(*argv[i]) + " "; } if (geteuid()!=0){ - string cmd = "pkexec " + app_name + " " + str_cmd_argv; - system(cmd.c_str()); - return 0; + //string cmd = "pkexec " + app_name + " " + str_cmd_argv; + //system(cmd.c_str()); + //return 0; } auto app = Gtk::Application::create(argc, argv, "org.gtkmm.example.plug"); auto builder = Gtk::Builder::create_from_file(path_glade); diff --git a/source/ublexec.cc b/source/ublexec.cc index 6127199..d8e7f43 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -128,6 +128,7 @@ void MainWindow::get_builder(){ builder->get_widget("liststoreOther", liststoreOther); builder->get_widget("liststoreDevelopment", liststoreDevelopment); builder->get_widget("liststoreSystem", liststoreSystem); + } void MainWindow::add_CSS(){ @@ -192,8 +193,12 @@ void MainWindow::settings(){ this->event(); this->localization(); this->add_CSS(); - spinPriority->set_range(-20,19); + spinPriority->set_range(0,19); spinPriority->set_increments(1.0,-1.0); + scalePriority->set_range(0,19); + scalePriority->set_value(0); + lblTimeEpriorityLow->set_text("19 (Низкий)"); + lblTime4EpriorityHigh->set_text("0 (Высокий)"); scalePriority->set_inverted(true); this->pars_dir_bin(); this->pars_users(); @@ -235,8 +240,10 @@ void MainWindow::get_path_filemaneg(){ } } void MainWindow::open_list_app(){ + + //liststoreDevelopment = iconDevelopment->get_model(); - /* + for ( const auto &str_app : list_app){ for ( const auto &str_categor : str_app.Categories){ if (str_categor=="Graphics"){ @@ -272,15 +279,16 @@ void MainWindow::open_list_app(){ } } + /* for (const auto & str_categor : set_categories){ Gtk::Label* Label1 = new Gtk::Label(str_categor); Gtk::IconView* icon = new Gtk::IconView(); boxlistProgramm->pack_start(*icon); boxlistProgramm->pack_start(*Label1); - } + }*/ - */ + dialogStartMenu->show_all(); } @@ -363,7 +371,7 @@ void MainWindow::start_cmd(){ str_cmd_terminal=""; } string cmd = ""; - cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; + cmd = "nohup " + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; txtCmd->set_text(cmd); system(cmd.c_str()); @@ -371,7 +379,7 @@ void MainWindow::start_cmd(){ } void MainWindow::changed_user(){ Glib::ustring entry_user = cmbUser->get_active_text(); - if (entry_user == "superadmin" || entry_user == "root"){ + if (geteuid()==0 || entry_user == "root"){ spinPriority->set_range(-20,19); spinPriority->set_increments(1.0,-1.0); scalePriority->set_range(-20,19); @@ -393,7 +401,9 @@ void MainWindow::changed_user(){ void MainWindow::activ_or_block_other_user(){ bool flag = chbAnotherUser->get_active(); cmbUser->set_sensitive(flag); + lblInfoUserName->set_sensitive(flag); //lblInfoUserOther->set_sensitive(flag); + if (flag_pkexec==true){ rbPkexec->set_sensitive(flag); } From ff979ab71ddae9901260ab5a7b4a1a15ca9a532d Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Mon, 30 Jan 2023 15:49:05 +0000 Subject: [PATCH 6/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D0=BE=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=20=D0=B2=D1=8B=D0=B1=D0=BE=D1=80=D0=B0=20=D1=84=D0=B0?= =?UTF-8?q?=D0=B9=D0=BB=D0=BE=D0=B2=20=D0=B8=20=D0=BE=D1=82=D0=BA=D1=80?= =?UTF-8?q?=D1=8B=D1=82=D0=B8=D1=8F=20=D0=B8=D1=85=20=D1=87=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=B7=20mime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- screenshot/screenshot.png | Bin 34262 -> 65265 bytes source/ublexec.cc | 89 +- source/ublexec.h | 42 +- style.css | 3 + ublexec.glade | 2197 +++++++++++++++++++------------------ ublexec_ru.po | 8 +- 7 files changed, 1191 insertions(+), 1150 deletions(-) diff --git a/README.md b/README.md index 0072bc5..eacfcda 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # ublexec -# ВЫполнить +# Выполнить # Build In order to build ublexec you will need: diff --git a/screenshot/screenshot.png b/screenshot/screenshot.png index 1c2ec435f152d8b3c479f77c1b95ad788be8a220..1b575f2deace2600703de43246a9fb3115eda613 100644 GIT binary patch literal 65265 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 hL#HnYug)tHHmpp2;Xf3Z)F*{U4boBe(zn literal 34262 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 f3BVmOagAR8Y`tU^get_widget("lblOffice", lblOffice); builder->get_widget("lblOther", lblOther); builder->get_widget("lblDevelopment", lblDevelopment); + builder->get_widget("lblSystem", lblSystem); + + /* builder->get_widget("iconGraphics", iconGraphics); builder->get_widget("iconTools", iconTools); builder->get_widget("iconInternet", iconInternet); @@ -117,17 +120,8 @@ void MainWindow::get_builder(){ builder->get_widget("iconOther", iconOther); builder->get_widget("iconDevelopment", iconDevelopment); builder->get_widget("iconSystem", iconSystem); - - builder->get_widget("liststoreGraphics", liststoreGraphics); - builder->get_widget("liststoreTools", liststoreTools); - builder->get_widget("liststoreInternet", liststoreInternet); - builder->get_widget("liststoreMultimedia", liststoreMultimedia); - builder->get_widget("liststoreSettings", liststoreSettings); - builder->get_widget("liststoreEducation", liststoreEducation); - builder->get_widget("liststoreOffice", liststoreOffice); - builder->get_widget("liststoreOther", liststoreOther); - builder->get_widget("liststoreDevelopment", liststoreDevelopment); - builder->get_widget("liststoreSystem", liststoreSystem); + */ + builder->get_widget("treeViewGraphics", treeViewGraphics); } @@ -137,8 +131,10 @@ void MainWindow::add_CSS(){ Glib::RefPtr styleContext = Gtk::StyleContext::create(); Glib::RefPtr screen = Gdk::Screen::get_default();//get default screen styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application - Glib::RefPtr context = boxColor->get_style_context(); - context->add_class("cssboxColor1"); + Glib::RefPtr context_box = boxColor->get_style_context(); + Glib::RefPtr context_lbl_head = lblInfoHead->get_style_context(); + context_box->add_class("cssboxColor1"); + context_lbl_head->add_class("textHead"); } void MainWindow::localization(){ @@ -146,7 +142,7 @@ void MainWindow::localization(){ btnStart->set_label(gettext("Run")); wndChooseFileWallpaper->set_title(gettext("Please select File")); dialogStartMenu->set_title(gettext("Warning!")); - lblInfoHead->set_text(gettext("Running applications as a user with a specified priority")); + lblInfoHead->set_text(gettext("Running applications as a user with a\n specified priority")); lblinfoCmd->set_text(gettext("Command Line")); lblInfoTime->set_text(gettext("Team:")); labInfoExecutTerm->set_text(gettext("Run in the terminal emulator")); @@ -154,7 +150,7 @@ void MainWindow::localization(){ lblInfoUserOther->set_text(gettext("Run as another user")); lblInfoUserName->set_text(gettext("User Name:")); lblInfoNooPriority->set_text(gettext("Priority:")); - lblInfoExec->set_text(gettext("Run with a different priority")); + lblInfoExec->set_text(gettext("Change startup priority")); lblInfoPriority->set_text(gettext("Priority:")); lblMessageError->set_text(gettext("Select an executable file or program")); lblInfoEnterProg->set_text(gettext("Selecting Programs")); @@ -203,7 +199,12 @@ void MainWindow::settings(){ this->pars_dir_bin(); this->pars_users(); this->activ_or_block_execute_epriority(); - this->activ_or_block_other_user(); + cmbUser->set_active(0); + cmbUser->set_sensitive(false); + lblInfoUserName->set_sensitive(false); + rbPkexec->set_sensitive(false); + rbSu->set_sensitive(false); + rbSudo->set_sensitive(false); } void MainWindow::close_start_menu(){ @@ -232,10 +233,10 @@ void MainWindow::close_filemaneg(){ wndChooseFileWallpaper->hide(); } void MainWindow::get_path_filemaneg(){ - path_file_name = wndChooseFileWallpaper->get_filename(); - if (path_file_name.length()==0){} + path_file = wndChooseFileWallpaper->get_filename(); + if (path_file.length()==0){} else{ - txtCmd->set_text(path_file_name); + txtCmd->set_text(path_file); this->close_filemaneg(); } } @@ -243,11 +244,11 @@ void MainWindow::open_list_app(){ //liststoreDevelopment = iconDevelopment->get_model(); - + string path = ""; for ( const auto &str_app : list_app){ for ( const auto &str_categor : str_app.Categories){ + path = "/usr/share/applications/" + str_app.Icon + ".svg"; if (str_categor=="Graphics"){ - } else if (str_categor=="Tools"){ @@ -300,28 +301,14 @@ void MainWindow::start_cmd(){ //========================================= if (chbAnotherUser->get_active()){ if (rbPkexec->get_active()){ - if (geteuid()!=0){ - if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { - str_variants_root = "pcexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; - } - else if (chbAnotherUser->get_active()){ - str_variants_root = "pcexec --user " + cmbUser->get_active_text() + " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; - } - else{ - str_variants_root = "pcexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; - } + if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { + str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; } + else if (chbAnotherUser->get_active()){ + str_variants_root = "pkexec --user " + cmbUser->get_active_text() + " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } else{ - if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { - str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; - } - else if (chbAnotherUser->get_active()){ - str_variants_root = "pkexec --user " + cmbUser->get_active_text() + " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; - } - - else{ - str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; - } + str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; } } else if (rbSu->get_active()){ @@ -356,6 +343,7 @@ void MainWindow::start_cmd(){ if (cbxExecuteEpriority->get_active()){ str_nice_cmd = "nice -n " + to_string(spinPriority->get_value_as_int()) + " "; } + //========================================= string user_cmd = txtCmd->get_text(); @@ -371,12 +359,18 @@ void MainWindow::start_cmd(){ str_cmd_terminal=""; } string cmd = ""; - cmd = "nohup " + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; + if (path_file!=""){ + cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + " xdg-open '" + user_cmd + "' &"; + } + else{ + cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; + } txtCmd->set_text(cmd); system(cmd.c_str()); path_file_name=""; - } + path_file=""; +} void MainWindow::changed_user(){ Glib::ustring entry_user = cmbUser->get_active_text(); if (geteuid()==0 || entry_user == "root"){ @@ -400,6 +394,7 @@ void MainWindow::changed_user(){ //void MainWindow::execute_another_User(){} void MainWindow::activ_or_block_other_user(){ bool flag = chbAnotherUser->get_active(); + cmbUser->set_active(0); cmbUser->set_sensitive(flag); lblInfoUserName->set_sensitive(flag); //lblInfoUserOther->set_sensitive(flag); @@ -489,6 +484,7 @@ void MainWindow::pars_apps(){ char *Exec=g_key_file_get_string(gfile,"Desktop Entry", "Exec",NULL); char *Categories=g_key_file_get_locale_string(gfile,"Desktop Entry", "Categories",setlocale(LC_ALL,""),NULL); char *Icon=g_key_file_get_string(gfile,"Desktop Entry", "Icon",NULL); + char *Mime=g_key_file_get_string(gfile,"Desktop Entry", "MimeType",NULL); if (Type==NULL) continue; if (Name==NULL) continue; if (Exec==NULL) continue; @@ -499,6 +495,13 @@ void MainWindow::pars_apps(){ App.Type = Type; App.Exec = Exec; App.Icon = Name; + if (Mime!=NULL){ + App.MimeType = Mime; + cout << App.MimeType << endl; + } + else{ + App.MimeType = ""; + } App.Name_desktop = file_name; App.Categories = split(str_Categories, ';'); for ( const auto &text : App.Categories){ diff --git a/source/ublexec.h b/source/ublexec.h index 7d05c8b..d87a70f 100644 --- a/source/ublexec.h +++ b/source/ublexec.h @@ -87,6 +87,19 @@ public: void pars_apps(); vector split(const std::string &s, char delim); + public: + class ModelColumns : public Gtk::TreeModel::ColumnRecord + { + public: + + ModelColumns() + { add(m_col_id); add(m_col_name); } + + Gtk::TreeModelColumn m_col_id; + Gtk::TreeModelColumn m_col_name; + }; + + ModelColumns m_Columns; public: Glib::RefPtr builder; Gtk::Button *btnFilemaneg; @@ -140,33 +153,18 @@ public: Gtk::Label *lblDevelopment; Gtk::Label *lblSystem; - Gtk::IconView *iconGraphics; - Gtk::IconView *iconTools; - Gtk::IconView *iconInternet; - Gtk::IconView *iconMultimedia; - Gtk::IconView *iconSettings; - Gtk::IconView *iconEducation; - Gtk::IconView *iconOffice; - Gtk::IconView *iconOther; - Gtk::IconView *iconDevelopment; - Gtk::IconView *iconSystem; - - Gtk::ListStore *liststoreGraphics; - Gtk::ListStore *liststoreTools; - Gtk::ListStore *liststoreInternet; - Gtk::ListStore *liststoreMultimedia; - Gtk::ListStore *liststoreSettings; - Gtk::ListStore *liststoreEducation; - Gtk::ListStore *liststoreOffice; - Gtk::ListStore *liststoreOther; - Gtk::ListStore *liststoreDevelopment; - Gtk::ListStore *liststoreSystem; + + + Gtk::TreeView *treeViewGraphics=0; + Glib::RefPtr tree_store; + Glib::RefPtr m_refTreeModel; public: string execute_cmd = ""; + string path_file = ""; bool flag_pkexec = false; bool flag_su = false; bool flag_sudo = false; @@ -195,3 +193,5 @@ private: Gtk::Widget *plugBox; Gtk::Widget *parent; }; + + diff --git a/style.css b/style.css index 5496feb..d237a01 100644 --- a/style.css +++ b/style.css @@ -1,3 +1,6 @@ .cssboxColor1{ background: url("/usr/share/ublexec/images/bg_top.png") no-repeat; +} +.textHead{ + text-shadow: 1px 1px #ffffff; } \ No newline at end of file diff --git a/ublexec.glade b/ublexec.glade index 36549df..717eb2f 100644 --- a/ublexec.glade +++ b/ublexec.glade @@ -8,568 +8,630 @@ 1 10 - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - gtk-media-play - - + + 250 + 470 False - Выполнить - + dialog + - True False vertical + 2 + + + False + end + + + ОК + True + True + True + + + True + True + 0 + + + + + Выход + True + True + True + + + True + True + 1 + + + + + False + False + 0 + + - + True False vertical - + True False - vertical - - - True - False - - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 69 - ublexec - - - False - True - 0 - - - - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - Запуск приложений от имени пользователя с указанным приоритетом - - - - - - - - True - True - 1 - - - - - False - True - 0 - - + Выбор программ + + + False + True + 0 + + + + + True + True + in - + True False - 10 - vertical - + True False - 5 - 5 - 5 - 5 - 6 - 6 - 0.019999999552965164 - in + vertical - + True False + start + center 5 + 5 5 - vertical + 5 + 6 + 6 + Графика + + + False + True + 0 + + + + + True + True + in - + True - False - - - 145 - True - False - 5 - 5 - 5 - 5 - 6 - 6 - Команда: - True - 0 - - - False - True - 0 - + True + + - - - 330 - True - True - Дата -Формат: ДД.ММ.ГГГГ - 5 - 5 - 5 - 5 - 6 - 6 - - - False - True - 1 - - - - - True - True - True - 5 - 5 - 5 - 5 - 3 - 3 - - - True - False - center - center - 5 - 5 - 5 - 5 - 6 - 6 - gtk-directory - - - - - False - True - 2 - - - - - True - True - True - 5 - 5 - 5 - 5 - 6 - 6 - - - True - False - center - center - 5 - 5 - 5 - 5 - 6 - 6 - edit-select-all - - - - - False - True - 3 - + + + + + False + True + 1 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Инструменты + + + False + True + 2 + + + + + True + True + in + + + True + True + + - - False - True - 0 - + + + False + True + 3 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Интернет + + + False + True + 4 + + + + + True + True + in - + True - False - - - 135 - True - False - 15 - 5 - 15 - 5 - - - False - True - 0 - - - - - True - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - True - - - True - False - Выполнить в эмуляторе терминале - - - - - False - True - 1 - + True + + - - False - True - 1 - + + False + True + 5 + - - + + True False - Командная строка + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Мультимедиа + + False + True + 6 + - - - False - True - 0 - - - - - False - True - 1 - - - - - True - False - 10 - vertical - - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 0.019999999552965164 - in - + + True + True + in + + + True + True + + + + + + + + False + True + 7 + + + + True False + start + center 5 + 5 5 - vertical + 5 + 6 + 6 + Настройки + + + False + True + 8 + + + + + True + True + in - + True - False - - - True - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - True - - - True - False - Выполнить от имени другого пользователя - - - - - False - True - 0 - - - - - pkexec - True - True - False - True - rbSu - - - False - True - 1 - - - - - su - True - True - False - True - rbPkexec - - - False - True - 2 - - - - - sudo - True - True - False - True - rbSu - - - False - True - 3 - - - - - 95 - True - False - end - 15 - 5 - 15 - 5 - - - False - True - 4 - + True + + - - False - True - 0 - + + + False + True + 9 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Образование + + + False + True + 10 + + + + + True + True + in - + True - False - - - 145 - True - False - 5 - 5 - 5 - 5 - 6 - 6 - Имя поьзователя: - True - 0 - - - False - True - 0 - - - - - 330 - True - False - 5 - 5 - 5 - 5 - 6 - 6 - - - False - True - 1 - + True + + - - False - True - 1 - + + False + True + 11 + - - + + True False - Пользователь + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Офис + + False + True + 12 + - - - False - True - 0 - - - - - False - True - 2 - - - - - True - False - 10 - vertical - - - True - False - 5 - 5 - 5 - 5 - 6 - 6 - 0.019999999552965164 - in - + + True + True + in + + + True + True + + + + + + + + False + True + 13 + + + + True False + start + center 5 + 5 5 - vertical + 5 + 6 + 6 + Прочие + + + False + True + 14 + + + + + True + True + in - + True True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - True - - - True - False - Выполнить c другим приоритетом - + + - - False - True - 0 - - - - True - False + + + False + True + 15 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Разработка + + + False + True + 16 + + + + + True + True + in + + + True + True + + + + + + + + False + True + 17 + + + + + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + Система + + + False + True + 18 + + + + + True + True + in + + + True + True + + + + + + + + False + True + 19 + + + + + + + + + True + True + 1 + + + + + True + True + 1 + + + + + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + gtk-media-play + + + False + Выполнить + + + True + False + vertical + + + True + False + vertical + + + True + False + vertical + + + True + False + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 69 + ublexec + + + False + True + 0 + + + + + True + False + start + 5 + 5 + 5 + 5 + 6 + 6 + Запуск приложений от имени пользователя с +указанным приоритетом + + + + + + + + True + True + 1 + + + + + False + True + 0 + + + + + True + False + vertical + + + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 0.019999999552965164 + in + + + True + False + 5 + 5 + vertical + + + True + False - - 5 + + 145 True False 5 @@ -578,7 +640,7 @@ 5 6 6 - Приоритет: + Команда: True 0 @@ -589,36 +651,49 @@ - + + 330 True True + Дата +Формат: ДД.ММ.ГГГГ 5 5 5 5 6 6 - adjustment1 - 20 - 0 - True + False True 1 - + True True - 5 - 5 + True 5 5 6 6 - True + + + True + False + center + center + 5 + 5 + 5 + 5 + 6 + 6 + gtk-directory + + False @@ -626,27 +701,61 @@ 2 - - - False - True - 1 - - - - - True + + + True + True + True + 5 + 5 + 5 + 5 + 6 + 6 + + + True + False + center + center + 5 + 5 + 5 + 5 + 6 + 6 + edit-select-all + + + + + False + True + 3 + + + + + False + True + 0 + + + + + True False + 6 + 6 - 65 + 131 True False 15 5 15 5 - 0 False @@ -655,19 +764,25 @@ - - 145 + True - False + True + False + start + center 5 5 5 5 - 6 6 - 19 (Низкий) - True - 0 + True + + + True + False + Выполнить в эмуляторе терминале + + False @@ -675,11 +790,69 @@ 1 + + + False + True + 1 + + + + + + + True + False + Командная строка + + + + + False + True + 0 + + + + + False + True + 1 + + + + + True + False + 5 + vertical + + + True + False + 5 + 5 + 5 + 5 + 0.019999999552965164 + in + + + True + False + 5 + 5 + vertical + + + True + False - + True - False - end + True + False + start center 5 5 @@ -687,12 +860,62 @@ 5 6 6 - -20 (Высокий) - True - 0 + True + + + True + False + Выполнить от имени другого пользователя + + - True + False + True + 0 + + + + + pkexec + True + True + False + True + rbSu + + + False + True + 1 + + + + + su + True + True + False + True + rbPkexec + + + False + True + 2 + + + + + sudo + True + True + False + True + rbSu + + + False True 3 @@ -718,16 +941,66 @@ False True - 2 + 0 + + + + + True + False + + + 145 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + Имя поьзователя: + True + 0 + + + False + True + 0 + + + + + 330 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + + + False + True + 1 + + + + + False + True + 1 - + True False - Приоритет + Пользователь @@ -741,597 +1014,359 @@ False True - 3 + 2 - + True False - 5 - 5 - 5 - 5 - 6 - 6 - 0.019999999552965164 - in + 5 + vertical - + True False 5 + 5 5 - vertical - - - Запустить - True - True - True - 5 - 5 - 5 - 5 - 6 - 6 - image1 - True - - - False - True - 0 - - - - - - - - - - False - True - 4 - - - - - True - True - 0 - - - - - False - True - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 250 - 470 - False - dialog - - - False - vertical - 2 - - - False - end - - - ОК - True - True - True - - - True - True - 0 - - - - - Выход - True - True - True - - - True - True - 1 - - - - - False - False - 0 - - - - - True - False - vertical - - - True - False - Выбор программ - - - False - True - 0 - - - - - True - True - in - - - True - False - - - True - False - vertical - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Графика - - - False - True - 0 - - - - - True - True - 6 - horizontal - liststoreGraphics - - - False - True - 1 - - - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Инструменты - - - False - True - 2 - - - - - True - True - 6 - horizontal - liststoreTools - - - False - True - 3 - - - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Интернет - - - False - True - 4 - - - - - True - True - 6 - horizontal - liststoreInternet - - - False - True - 5 - - - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Мультимедиа - - - False - True - 6 - - - - - True - True - 6 - horizontal - liststoreMultimedia - - - False - True - 7 - - - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Настройки - - - False - True - 8 - - - - - True - True - 6 - horizontal - liststoreSettings - - - False - True - 9 - - - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Образование - - - False - True - 10 - - - - - True - True - 6 - horizontal - liststoreEducation - - - False - True - 11 - - - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Офис - - - False - True - 12 - - - - - True - True - 6 - horizontal - liststoreOffice - - - False - True - 13 - - - - - True - False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Прочие - - - False - True - 14 - - - - - True - True - 6 - horizontal - liststoreOther - - - False - True - 15 - - + 5 + 0.019999999552965164 + in - + True False - start - center 5 - 5 5 - 5 - 6 - 6 - Разработка - - - False - True - 16 - - - - - True - True - 6 - horizontal - liststoreDevelopment + vertical + + + True + True + False + start + center + 5 + 5 + 5 + 5 + 6 + 6 + True + + + True + False + Изменить приоритет запуска + + + + + False + True + 0 + + + + + True + False + + + 5 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + Приоритет: + True + 0 + + + False + True + 0 + + + + + True + True + 5 + 5 + 5 + 5 + 6 + 6 + adjustment1 + 20 + 0 + + + True + True + 1 + + + + + True + True + 5 + 5 + 5 + 5 + 6 + 6 + True + + + False + True + 2 + + + + + False + True + 1 + + + + + True + False + + + 65 + True + False + 15 + 5 + 15 + 5 + 0 + + + False + True + 0 + + + + + 145 + True + False + 5 + 5 + 5 + 5 + 6 + 6 + 19 (Низкий) + True + 0 + + + False + True + 1 + + + + + True + False + end + center + 5 + 5 + 5 + 5 + 6 + 6 + -20 (Высокий) + True + 0 + + + True + True + 3 + + + + + 95 + True + False + end + 15 + 5 + 15 + 5 + + + False + True + 4 + + + + + False + True + 2 + + - - False - True - 17 - - - + + True False - start - center - 5 - 5 - 5 - 5 - 6 - 6 - Система - - - False - True - 18 - - - - - True - True - 6 - horizontal - liststoreSystem + Приоритет - - False - True - 19 - + + False + True + 0 + + + False + True + 3 + + + + + Запустить + True + True + True + 5 + 5 + 5 + 5 + 6 + 6 + image1 + True + + + False + True + 4 + True True - 1 + 0 - True + False True - 1 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + False Внимание! diff --git a/ublexec_ru.po b/ublexec_ru.po index 051caa7..b718cd2 100644 --- a/ublexec_ru.po +++ b/ublexec_ru.po @@ -45,8 +45,8 @@ msgstr "Выход" msgid "Selecting Programs" msgstr "Выбор программ" -msgid "Running applications as a user with a specified priority" -msgstr "Запуск приложений от имени пользователя с указанным приоритетом" +msgid "Running applications as a user with a\n specified priority" +msgstr "Запуск приложений от имени пользователя с\n указанным приоритетом" msgid "Team:" msgstr "Команда:" @@ -75,8 +75,8 @@ msgstr "Имя поьзователя:" msgid "User" msgstr "Пользователь" -msgid "Run with a different priority" -msgstr "Выполнить c другим приоритетом" +msgid "Change startup priority" +msgstr "Изменить приоритет запуска" msgid "Priority:" msgstr "Приоритет:" From 35cff5a54ee2cea3a25a3e3a61c652146cd73b30 Mon Sep 17 00:00:00 2001 From: Igor Belitskiy Date: Tue, 31 Jan 2023 17:55:43 +0600 Subject: [PATCH 7/7] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20iconView=20=D0=B4=D0=BB=D1=8F=20=D0=B3=D1=80=D0=B0?= =?UTF-8?q?=D1=84=D0=B8=D0=BA=D0=B8=20=D0=B2=20=D0=BA=D0=BD=D0=BE=D0=BF?= =?UTF-8?q?=D0=BA=D0=B8=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bg_top.png | Bin 45513 -> 33872 bytes source/ublexec.cc | 71 ++++++++++++----------- source/ublexec.h | 24 ++++---- ublexec.glade | 139 ++++++++++++---------------------------------- 4 files changed, 89 insertions(+), 145 deletions(-) diff --git a/bg_top.png b/bg_top.png index d673a36f2602b94f7541bf9d6b9b846fb3cbeccd..8eb67cbc38babeaf498d981356cf7e77e2741f12 100644 GIT binary patch literal 33872 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 diff --git a/source/ublexec.cc b/source/ublexec.cc index 498d29d..4bc505a 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -106,22 +106,20 @@ void MainWindow::get_builder(){ builder->get_widget("lblOffice", lblOffice); builder->get_widget("lblOther", lblOther); builder->get_widget("lblDevelopment", lblDevelopment); + builder->get_widget("iconGraphics", iconGraphics); builder->get_widget("lblSystem", lblSystem); - /* - builder->get_widget("iconGraphics", iconGraphics); - builder->get_widget("iconTools", iconTools); - builder->get_widget("iconInternet", iconInternet); - builder->get_widget("iconMultimedia", iconMultimedia); - builder->get_widget("iconSettings", iconSettings); - builder->get_widget("iconEducation", iconEducation); - builder->get_widget("iconOffice", iconOffice); - builder->get_widget("iconOther", iconOther); - builder->get_widget("iconDevelopment", iconDevelopment); - builder->get_widget("iconSystem", iconSystem); - */ - builder->get_widget("treeViewGraphics", treeViewGraphics); + + + list_Graphics = Gtk::ListStore::create( m_Columns ); + list_Graphics->set_sort_column( m_Columns.m_col_description, Gtk::SORT_ASCENDING ); + + iconGraphics->set_model(list_Graphics); + iconGraphics->set_markup_column(m_Columns.m_col_description); + iconGraphics->set_pixbuf_column(m_Columns.m_col_pixbuf); + + } @@ -249,6 +247,9 @@ void MainWindow::open_list_app(){ for ( const auto &str_categor : str_app.Categories){ path = "/usr/share/applications/" + str_app.Icon + ".svg"; if (str_categor=="Graphics"){ + Gtk::TreeModel::Row row = *(list_Graphics->append()); + row[m_Columns.m_col_filename] = path; + row[m_Columns.m_col_description] = str_app.Name; } else if (str_categor=="Tools"){ @@ -280,41 +281,51 @@ void MainWindow::open_list_app(){ } } - /* - for (const auto & str_categor : set_categories){ - Gtk::Label* Label1 = new Gtk::Label(str_categor); - Gtk::IconView* icon = new Gtk::IconView(); - boxlistProgramm->pack_start(*icon); - boxlistProgramm->pack_start(*Label1); - - }*/ - - dialogStartMenu->show_all(); } +/* +void MainWindow::tmp_desktop(string cmd_name){ + string desktop = ""; + desktop = "[Desktop Entry]\nEncoding=UTF-8\nName=test\nName[ru]=тест\nGenericName=test\nGenericName[ru]=тест\nComment=test\nComment[ru]=test\nType=Application\nExec=pkexec "+cmd_name + + "\nIcon=ublexec\nTerminal=false\nCategories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;"; + string cmd = ""; + cmd = "touch /tmp/" + cmd_name + ".desktop; echo \"" + desktop + "\" > /tmp/"+cmd_name+".desktop; chmod +x /tmp/"+cmd_name+".desktop"; + cout << cmd << endl; + system(cmd.c_str()); +} +*/ + void MainWindow::start_cmd(){ //txtCmd->set_text(""); string str_cmd_terminal=""; string str_variants_root = ""; string str_nice_cmd = ""; + string user_cmd = ""; + user_cmd = txtCmd->get_text(); //========================================= if (chbAnotherUser->get_active()){ + if (geteuid()!=0){ + chbTerminal->set_active(true); + } if (rbPkexec->get_active()){ + if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + //this->tmp_desktop(user_cmd); + } else if (chbAnotherUser->get_active()){ str_variants_root = "pkexec --user " + cmbUser->get_active_text() + " env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + } else{ str_variants_root = "pkexec env PATH=$PATH DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY "; + //this->tmp_desktop(user_cmd); + //user_cmd = "/tmp/" + user_cmd + ".desktop"; } } else if (rbSu->get_active()){ - if (geteuid()!=0){ - chbTerminal->set_active(true); - } if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { str_variants_root="su "; } @@ -326,9 +337,6 @@ void MainWindow::start_cmd(){ } } else if (rbSudo->get_active()){ - if (geteuid()!=0){ - chbTerminal->set_active(true); - } if ((chbAnotherUser->get_active()) && (cmbUser->get_active_text().length()==0)) { str_variants_root="sudo "; } @@ -346,7 +354,6 @@ void MainWindow::start_cmd(){ //========================================= - string user_cmd = txtCmd->get_text(); //========================================= if (user_cmd.length()==0){ messageError->show(); @@ -360,10 +367,12 @@ void MainWindow::start_cmd(){ } string cmd = ""; if (path_file!=""){ + cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + " xdg-open '" + user_cmd + "' &"; } else{ - cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; + + cmd = "" + str_cmd_terminal + str_variants_root + str_nice_cmd + user_cmd + " &"; } txtCmd->set_text(cmd); system(cmd.c_str()); diff --git a/source/ublexec.h b/source/ublexec.h index d87a70f..f631439 100644 --- a/source/ublexec.h +++ b/source/ublexec.h @@ -85,21 +85,27 @@ public: void pars_dir_bin(); void pars_users(); void pars_apps(); + void tmp_desktop(string cmd_name); vector split(const std::string &s, char delim); public: - class ModelColumns : public Gtk::TreeModel::ColumnRecord + class ModelColumns : public Gtk::TreeModel::ColumnRecord { public: ModelColumns() - { add(m_col_id); add(m_col_name); } - - Gtk::TreeModelColumn m_col_id; - Gtk::TreeModelColumn m_col_name; + { + add(m_col_filename); + add(m_col_description); + add(m_col_pixbuf); + } + + Gtk::TreeModelColumn m_col_filename; + Gtk::TreeModelColumn m_col_description; + Gtk::TreeModelColumn > m_col_pixbuf; }; - ModelColumns m_Columns; + ModelColumns m_Columns; public: Glib::RefPtr builder; Gtk::Button *btnFilemaneg; @@ -152,12 +158,10 @@ public: Gtk::Label *lblOther; Gtk::Label *lblDevelopment; Gtk::Label *lblSystem; + Gtk::IconView *iconGraphics; - - Gtk::TreeView *treeViewGraphics=0; - Glib::RefPtr tree_store; - Glib::RefPtr m_refTreeModel; + Glib::RefPtr list_Graphics; diff --git a/ublexec.glade b/ublexec.glade index 717eb2f..5da0d4d 100644 --- a/ublexec.glade +++ b/ublexec.glade @@ -10,7 +10,7 @@

250 - 470 + 250 False dialog @@ -107,19 +107,10 @@ - + True True - in - - - True - True - - - - - + 6 False @@ -148,18 +139,11 @@ - + True True - in - - - True - True - - - - + + @@ -189,18 +173,11 @@ - + True True - in - - - True - True - - - - + + @@ -230,18 +207,11 @@ - + True True - in - - - True - True - - - - + + @@ -271,18 +241,11 @@ - + True True - in - - - True - True - - - - + + @@ -312,18 +275,11 @@ - + True True - in - - - True - True - - - - + + @@ -353,18 +309,11 @@ - + True True - in - - - True - True - - - - + + @@ -394,18 +343,11 @@ - + True True - in - - - True - True - - - - + + @@ -435,18 +377,11 @@ - + True True - in - - - True - True - - - - + + @@ -476,18 +411,11 @@ - + True True - in - - - True - True - - - - + + @@ -583,9 +511,9 @@ Запуск приложений от имени пользователя с указанным приоритетом - + - + @@ -675,6 +603,7 @@ True True True + end 5 5 6 @@ -706,6 +635,7 @@ True True True + end 5 5 5 @@ -1106,6 +1036,7 @@ adjustment1 20 0 + 0 True