diff --git a/Makefile b/Makefile index 6492333..26e4b34 100644 --- a/Makefile +++ b/Makefile @@ -12,21 +12,18 @@ CMAKE_COMMAND = cmake CMAKE_SOURCE_DIR = ./source CMAKE_BUILD_DIR = ./compile DEPENDS = cmake -#PKGNAME = $(MAKEFILE_DIR) -PKGNAME = ublexec +pkgname = $(MAKEFILE_DIR) +#pkgname = ublexec +pkgdir = default_target: all all: init build init: @echo "Initialize ..."; \ - version="$$(cat VERSION.md)"; \ - version=$${version:8}; \ - search="s/string version_application.*$&"; \ - replace="string version_application = \"$${version}\";"; \ - sed -i -e "$$search/$$replace/gi" source/ublexec.h; \ + sed -r "s/(version_application = ).*/\1\"$$(grep 'VERSION' VERSION.md | cut -d" " -f2)\";/" -i source/ublexec.h; \ echo "-- Build path: ${CMAKE_BUILD_DIR}" - + depend: @echo "Check depends ..."; \ if [ ! -f /bin/${DEPENDS} ]; then \ @@ -52,10 +49,10 @@ prepare: check: @echo "Check ..."; \ - if [ -f ${CMAKE_BUILD_DIR}/${PKGNAME} ]; then \ + if [ -f ${CMAKE_BUILD_DIR}/${pkgname} ]; then \ echo "Check: OK"; \ else \ - echo "Check: ${CMAKE_BUILD_DIR}/${PKGNAME} not fount !"; \ + echo "Check: ${CMAKE_BUILD_DIR}/${pkgname} not fount !"; \ exit 1; \ fi @@ -72,19 +69,19 @@ uninstall: 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}/apps/ru.ublinux.${pkgname}.svg"; \ + $(RM) "/usr/share/icons/hicolor/$${SIZE}/apps/ru.ublinux.${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}" + @$(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 @@ -94,28 +91,26 @@ 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; \ + install -dm755 "${pkgdir}/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}"; \ + PATH_FILE_MO="${pkgdir}/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 "ru.ublinux.${PKGNAME}.svg" -o "/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/ru.ublinux.${PKGNAME}.svg"; \ + install -dm755 "${pkgdir}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps"; \ + rsvg-convert -w $${SIZE} -h $${SIZE} -f png --keep-image-data "ru.ublinux.${pkgname}.svg" -o "${pkgdir}/usr/share/icons/hicolor/$${SIZE}x$${SIZE}/apps/ru.ublinux.${pkgname}.png"; \ done - @install -dm755 /usr/share/icons/hicolor/scalable/apps - @install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ "ru.ublinux.${PKGNAME}.svg" - @install -Dm755 -t /usr/bin/ ${CMAKE_BUILD_DIR}/${PKGNAME} - @install -Dm644 -t /usr/share/applications/ ${PKGNAME}.desktop - @install -Dm644 -t /usr/share/polkit-1/actions/ org.ublinux.pkexec.${PKGNAME}.exec.policy - @install -dm755 /usr/share/${PKGNAME}/{ui,css,images} - @install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}.glade - @install -Dm644 -t /usr/share/${PKGNAME}/css/ style.css - @install -Dm644 -t /usr/share/${PKGNAME}/images/ bg_top.png - @install -Dm644 -t /usr/share/${PKGNAME}/images/ "ru.ublinux.${PKGNAME}.svg" -# @install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.png - @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ + @install -dm755 "${pkgdir}/usr/share/icons/hicolor/scalable/apps" + @install -Dm644 -t "${pkgdir}/usr/share/icons/hicolor/scalable/apps/" "ru.ublinux.${pkgname}.svg" + @install -Dm755 -t "${pkgdir}/usr/bin/" "${CMAKE_BUILD_DIR}/${pkgname}" + @install -Dm644 -t "${pkgdir}/usr/share/applications/" "${pkgname}.desktop" + @install -Dm644 -t "${pkgdir}/usr/share/polkit-1/actions/" "com.ublinux.pkexec.${pkgname}.exec.policy" + @install -dm755 "${pkgdir}/usr/share/${pkgname}"/{ui,css,images} + @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/ui/" "${pkgname}.glade" + @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/css/" style.css + @install -Dm644 -t "${pkgdir}/usr/share/${pkgname}/images/" "logo-background.png" + @gtk-update-icon-cache -fiq /usr/share/icons/hicolor/ &>/dev/null @update-desktop-database --quiet 2>/dev/null @touch /usr/share/applications @echo "Install: OK" diff --git a/VERSION.md b/VERSION.md index 12ebd01..31c5941 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -VERSION 1.0 +VERSION 1.2 diff --git a/com.ublinux.pkexec.ublexec.exec.policy b/com.ublinux.pkexec.ublexec.exec.policy new file mode 100644 index 0000000..3664113 --- /dev/null +++ b/com.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/devel/update-version b/devel/update-version new file mode 100755 index 0000000..e86b1b4 --- /dev/null +++ b/devel/update-version @@ -0,0 +1,18 @@ +#!/bin/bash +## +## Update VERSION 1.4 +## $1 - Version +## Default - current Version value plus one (in minor section) +## + +FILE_VERSION="VERSION.md" +[[ $1 ]] && VER=$1 +if [[ -z ${VER} ]] ; then + SOURCE_FILE_VERSION=$(find ../ -maxdepth 1 -type f -iname "${FILE_VERSION}" -print -quit) + CURRENT=$(cat ${SOURCE_FILE_VERSION} | grep 'VERSION' | cut -d" " -f2) + MAJOR=$(echo ${CURRENT} | cut -d. -f1) + MINOR=$(echo ${CURRENT} | cut -d. -f2) + VER="${MAJOR}.$(echo $((${MINOR} +1)))" +fi +echo ":: Updated VERSION ${CURRENT} to ${VER}" +find ../ -maxdepth 2 -type f -iname "${FILE_VERSION}" -exec echo ":: Insert version in file: {}" \; -exec sed "s/VERSION *[[:digit:]]*.*/VERSION ${VER}/" -i {} \; \ No newline at end of file diff --git a/logo-background.png b/logo-background.png new file mode 100644 index 0000000..8eb67cb Binary files /dev/null and b/logo-background.png differ diff --git a/source/main.cc b/source/main.cc old mode 100755 new mode 100644 diff --git a/source/ubl-util-standard.c b/source/ubl-util-standard.c index 8cff122..3b753b1 100644 --- a/source/ubl-util-standard.c +++ b/source/ubl-util-standard.c @@ -44,6 +44,14 @@ inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, in if (left_plug_id>0&&LeftWidget){ GtkWidget *plug=gtk_plug_new(left_plug_id); GtkWidget *toplug=GTK_WIDGET(LeftWidget->gobj()); + {GdkScreen *screen = gtk_widget_get_screen(plug); + gtk_widget_set_app_paintable(plug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(plug, colormap);} + {GdkScreen *screen = gtk_widget_get_screen(toplug); + gtk_widget_set_app_paintable(toplug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(toplug, colormap);} if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ g_object_ref(G_OBJECT(toplug)); GtkWidget *parent=gtk_widget_get_parent(toplug); @@ -52,10 +60,21 @@ inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, in } else gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); gtk_widget_show(GTK_WIDGET(plug)); + gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim"); + gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim"); + gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); } if (right_plug_id>0&&RightWidget){ GtkWidget *plug=gtk_plug_new(right_plug_id); GtkWidget *toplug=GTK_WIDGET(RightWidget->gobj()); + {GdkScreen *screen = gtk_widget_get_screen(plug); + gtk_widget_set_app_paintable(plug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(plug, colormap);} + {GdkScreen *screen = gtk_widget_get_screen(toplug); + gtk_widget_set_app_paintable(toplug,TRUE); + GdkVisual *colormap = gdk_screen_get_rgba_visual(screen); + gtk_widget_set_visual(toplug, colormap);} if (gtk_widget_get_parent(GTK_WIDGET(toplug))){ g_object_ref(G_OBJECT(toplug)); GtkWidget *parent=gtk_widget_get_parent(toplug); @@ -64,6 +83,9 @@ inline void ubl_make_plugs(Gtk::Widget *LeftWidget, Gtk::Widget *RightWidget, in } else gtk_container_add(GTK_CONTAINER(plug),GTK_WIDGET(toplug)); gtk_widget_show(GTK_WIDGET(plug)); + gtk_style_context_add_class(gtk_widget_get_style_context(plug),"bkim"); + gtk_style_context_add_class(gtk_widget_get_style_context(toplug),"bkim"); + gtk_style_context_add_class(gtk_widget_get_style_context(plug),"primary-toolbar"); } } #endif \ No newline at end of file diff --git a/source/ublexec.cc b/source/ublexec.cc index 139f269..2639d41 100644 --- a/source/ublexec.cc +++ b/source/ublexec.cc @@ -1,11 +1,13 @@ #include "ublexec.h" using namespace std; + const string path_app = "/usr/bin/"; const string path_glade = "/usr/share/ublexec/ui/ublexec.glade"; const string path_css = "/usr/share/ublexec/css/style.css"; const string app_name = "ublexec"; int socket_ext_id_I = 0; int socket_trd_id_I = 0; + 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; @@ -135,8 +137,12 @@ void MainWindow::add_CSS() { styleContext->add_provider_for_screen(screen, cssProvider, GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);//add provider for screen in all application Glib::RefPtr context_box = boxColor->get_style_context(); Glib::RefPtr context_lbl_head = lblInfoHead->get_style_context(); + Glib::RefPtr boxAbout_css = boxAbout->get_style_context(); context_box->add_class("cssboxColor1"); context_lbl_head->add_class("textHead"); + if (socket_ext_id_I == 0){ + boxAbout_css->add_class("bkim_no_plug"); + } } void MainWindow::localization() { @@ -177,14 +183,15 @@ void MainWindow::localization() { lblOther->set_text(_("Other")); lblDevelopment->set_text(_("Development")); lblSystem->set_text(_("System")); - + btnListApp->set_tooltip_text(_("Application Overview")); + btnFilemaneg->set_tooltip_text(_("File Overview")); } 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::entry_app)); - chbTerminal->signal_toggled().connect([&]() {cmbTerminal->set_sensitive(chbTerminal->get_active());this->denamic_cmd();}); + chbTerminal->signal_toggled().connect([&]() {cmbTerminal->set_sensitive(chbTerminal->get_active());denamic_cmd();}); 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)); @@ -207,13 +214,14 @@ void MainWindow::event() { iconSystem->signal_selection_changed().connect(sigc::mem_fun(*this,&MainWindow::select_System)); btnSynopsis->signal_activate().connect(sigc::mem_fun(*this, &MainWindow::synopsis_show)); btnAbout->signal_activate().connect([&]() {aboutWindows->show();}); - cmbUser->signal_changed().connect([&]() {changed_user();denamic_cmd();}); + cmbUser->signal_changed().connect([&]() {changed_user();this->denamic_cmd();}); rbSudo->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::sudo_nice)); txtCmd->signal_focus_out_event().connect(sigc::mem_fun(*this, &MainWindow::focus_out_txt_cmd)); txtCmd->signal_focus_in_event().connect(sigc::mem_fun(*this, &MainWindow::focus_in_txt_cmd)); txtCmd->signal_delete_text().connect(sigc::mem_fun(*this, &MainWindow::delete_cmd)); rbSu->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::sudo_nice)); rbPkexec->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::sudo_nice)); + cmbTerminal->signal_changed().connect([&]() {this->denamic_cmd();}); } @@ -289,8 +297,10 @@ bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event) { if (user_cmd.length() != 0) { } else if (name_app.length() != 0) { + name_app = ""; } else if (path_file.length() != 0) { + path_file = ""; } else{ user_cmd = txtCmd->get_text(); @@ -605,19 +615,20 @@ string MainWindow::start_cmd(string user_cmd) { return ""; } if (chbTerminal->get_active() == true) { + string name_terminal_arr = ""; string name_terminal = cmbTerminal->get_active_text(); - if (name_terminal.length() != 0){ - if (name_terminal == "xfce4-terminal") { - str_cmd_terminal = "xfce4-terminal -x "; - } - else if (name_terminal == "konsole") { - str_cmd_terminal = "konsole -e "; - } - else if (name_terminal == "xterm") { - str_cmd_terminal = "xterm -e "; - } - else{ - str_cmd_terminal = ""; + if (name_terminal.length() != 0) { + int len_termunal_cmd = sizeof(termunal_cmd)/sizeof(*termunal_cmd); + for (int index = 0; indexset_text(this->start_cmd(user_cmd)); } + } } @@ -722,7 +734,6 @@ void MainWindow::entry_app() { void MainWindow::activ_or_block_other_user() { bool flag = chbAnotherUser->get_active(); - cmbUser->set_active(0); cmbUser->set_sensitive(flag); lblInfoUserName->set_sensitive(flag); if (flag_pkexec == true) { @@ -772,19 +783,21 @@ void MainWindow::pars_dir_terminal() { namespace fs = std::filesystem; std::string path = "/bin"; string file_name = ""; + string name_terminal = ""; for (const auto & entry: fs::directory_iterator(path)) { file_name = entry.path().filename().string(); - if (file_name == "konsole") { - cmbTerminal->append("konsole"); - cmbTerminal->set_active_text("konsole"); - } - else if (file_name == "xfce4-terminal") { - cmbTerminal->append("xfce4-terminal"); - cmbTerminal->set_active_text("xfce4-terminal"); - } - else if (file_name == "xterm") { - cmbTerminal->append("xterm"); - } + int len_termunal_cmd = sizeof(termunal_cmd)/sizeof(*termunal_cmd); + for (int index = 0; index < len_termunal_cmd; ++index) { + name_terminal = termunal_cmd[index]; + size_t index_term = name_terminal.find(" "); + if (index_term != string::npos){ + name_terminal = name_terminal.substr(0, index_term); + if (name_terminal == file_name) { + cmbTerminal->append(name_terminal); + cmbTerminal->set_active_text(name_terminal); + } + } + } } } @@ -800,15 +813,50 @@ void MainWindow::is_user_wheel(){ } } +unsigned short MainWindow::read_uid_min_max(string filename, string search){ + std::string line; + int uid = 0; + string remove_tab = "\t"; + string remove_space = " "; + std::ifstream in(filename); // окрываем файл для чтения + if (in.is_open()){ + while (getline(in, line)){ + try{ + if (line.find(search) != string::npos && (line.find("SYS_"+search) == string::npos)) { + this->str_remove(line, search); + this->str_remove(line, remove_space); + this->str_remove(line, remove_tab); + uid = atoi(line.c_str()); + } + } + catch (int x) { + if (search == "UID_MIN"){ + uid = 1000; + } + else{ + uid = 65534; + } + + } + + } + } + else{ + if (search == "UID_MIN") { + uid = 1000; + } + else{ + uid = 65534; + } + } + in.close(); + return uid; + +} + void MainWindow::pars_users() { - //string str_uid_max = this->call("grep \"^UID_MAX\" /etc/login.defs | xargs | cut -d ' ' -f 2)"); - //int uid_max = 0; - //if (str_uid_max.length() > 3){ - // int uid_max = stoi(str_uid_max); - //} - //else{ - int uid_max = 65534; - //} + unsigned short uid_min = this->read_uid_min_max("/etc/login.defs", "UID_MIN"); + unsigned short uid_max = this->read_uid_min_max("/etc/login.defs", "UID_MAX"); while (true) { errno = 0; passwd* entry = getpwent(); @@ -818,7 +866,7 @@ void MainWindow::pars_users() { } break; } - if ((entry->pw_uid >= 1000 && entry->pw_uid < uid_max) || entry->pw_uid == 0) { + if ((entry->pw_uid >= uid_min && entry->pw_uid < uid_max) || entry->pw_uid == 0) { cmbUser->append(entry->pw_name); } } @@ -835,7 +883,7 @@ vector MainWindow::split(const std::string &s, char delim) { return elems; } -void MainWindow::str_remove(std::string& source, std::string & to_remove) { +void MainWindow::str_remove(std::string& source, std::string to_remove) { string::size_type n = to_remove.length(); for (string::size_type i = source.find(to_remove); i != string::npos; diff --git a/source/ublexec.h b/source/ublexec.h old mode 100755 new mode 100644 index 3a482c5..b14107b --- a/source/ublexec.h +++ b/source/ublexec.h @@ -15,6 +15,7 @@ #include #include #include +#include #include "ubl-util-standard.c" using namespace std; @@ -93,7 +94,8 @@ public: bool focus_in_txt_cmd(GdkEventFocus* event); void unselect_icon(Gtk::IconView *icon_entry); void pars_dir_terminal(); - void str_remove(std::string& source, std::string & to_remove); + unsigned short read_uid_min_max(string filename, string search); + void str_remove(std::string& source, std::string to_remove); string call(string cmd); vector split(const std::string &s, char delim); public: @@ -198,7 +200,8 @@ public: Glib::RefPtr list_System; Gtk::Widget *boxAbout; public: - string version_application = "1.0"; + string termunal_cmd[3] = {"konsole -e ", "xfce4-terminal -x ", "xterm -e "}; + string version_application = "1.2"; string cmd_old = ""; string user_exec_app = ""; string user_cmd = ""; diff --git a/style.css b/style.css index 169a838..fa795ee 100644 --- a/style.css +++ b/style.css @@ -1,9 +1,56 @@ .cssboxColor1{ - background: url("/usr/share/ublexec/images/bg_top.png") no-repeat; + background: url("/usr/share/ublexec/images/logo-background.png") no-repeat; } .textHead{ text-shadow: 1px 1px #ffffff; } +.bannerbackground { + background-color: #404040; +} +#GnomeIcon{ + border-style:solid; + border-bottom-width: 1px; + border-image: linear-gradient(90deg, alpha(@theme_text_color,0.4) 55%, alpha(@theme_bg_color, 0) 100%); + border-image-slice: 1; +} + +#SepIcon{ + background-color: alpha(@theme_text_color, 0.6); +} + +#iconlabel { + font-size:14px; + font-weight: bold; + +} +.roundborder * { + border-width:0px; + border-radius:5px; +} +.noborder { + border: none; +} +.menu:hover { + border-color:alpha(@theme_text_color, 0.01); +} +.menu { + border-color:alpha(@theme_text_color, 0.01); +} +.menu:hover >* { + border-color:alpha(@theme_text_color, 0.01); +} +.menuitembottom{ + margin-top:0px; + margin-bottom:3px; +} +.menuitemmiddle{ + margin-top:0px; + margin-bottom:0px; +} + +.menuitemtop{ + margin-bottom:0px; +} .menuitemtop *{ margin:2px 2px 0 2px; padding: 5px 10px 3px 5px; @@ -17,47 +64,61 @@ padding: 3px 10px 5px 5px; } .menuitemtop:hover { - border-radius:3px; background:@theme_bg_color; } .menuitemmiddle:hover { - border-radius:3px; background:@theme_bg_color; } .menuitembottom:hover { - border-radius:3px; background:@theme_bg_color; } .menuitemtop:hover* { - border-radius:3px; margin:2px 2px 0 2px; padding: 5px 10px 3px 5px; background:@theme_selected_bg_color; - border-color:transparent; + border-radius:2px; } .menuitemmiddle:hover* { - border-radius:3px; margin:0 2px 0 2px; padding: 3px 10px 3px 5px; background:@theme_selected_bg_color; - border-color:transparent; + border-radius:2px; } .menuitembottom:hover* { - border-radius:3px; margin:0 2px 2px 2px; padding: 3px 10px 5px 5px; background:@theme_selected_bg_color; - border-color:transparent; + border-radius:2px; } -.menuitembottom{ - margin-top:0px; + +.workingbg, #workingbg { + background-color:@theme_base_color; } -.menuitemmiddle{ - margin-top:0px; - margin-bottom:0px; +.workingbg.view.cell:selected { + background-color:@theme_selected_bg_color; +} +.workingbg.view.cell:hover { + background-color:darker(@theme_selected_bg_color); + color:@theme_selected_text_color; + border-radius:3px; +} +.bkim { + transition: 200ms ease-out; + background-image: none; +} +.noborder{ +border:none; } -.menuitemtop{ - margin-bottom:0px; -} \ No newline at end of file +.bkim{ +opacity:0.99; +border:none; +} + +.bkim_no_plug{ +background-color: transparent; +opacity:0.99; +} + + diff --git a/ublexec.glade b/ublexec.glade index ca1e689..c7e888b 100644 --- a/ublexec.glade +++ b/ublexec.glade @@ -18,7 +18,7 @@ True False False - ubl-exec + ublexec 1.0 Copyright © UBSoft LLC, 2022 - ublexec @@ -63,7 +63,7 @@ 10 - 450 + 410 240 False ru.ublinux.ublexec @@ -920,6 +920,12 @@ True True True + 5 + 5 + 5 + 5 + 6 + 6 True @@ -933,6 +939,12 @@ True True True + 5 + 5 + 5 + 5 + 6 + 6 True @@ -1133,7 +1145,7 @@ specified priority - 381 + 440 True True 5 @@ -1207,7 +1219,7 @@ specified priority 5 5 5 - edit-select-all + view-list-details @@ -1279,7 +1291,7 @@ specified priority True False start - 9 + 2 5 5 6 @@ -1398,6 +1410,7 @@ specified priority True True False + 6 True rbSu @@ -1413,6 +1426,10 @@ specified priority True True False + 6 + 6 + 6 + 6 True rbPkexec @@ -1428,6 +1445,10 @@ specified priority True True False + 6 + 6 + 6 + 6 True rbSu @@ -1489,7 +1510,7 @@ specified priority - 381 + 374 True False 5 diff --git a/ublexec.pot b/ublexec.pot index dc8b95f..efdccec 100644 --- a/ublexec.pot +++ b/ublexec.pot @@ -6,6 +6,12 @@ msgid "" msgstr "" +msgid "File Overview" +msgstr "" + +msgid "Application Overview" +msgstr "" + msgid "https://wiki.ublinux.com" msgstr "" diff --git a/ublexec_ru.po b/ublexec_ru.po index 07acf1b..2b26faa 100644 --- a/ublexec_ru.po +++ b/ublexec_ru.po @@ -16,6 +16,12 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +msgid "File Overview" +msgstr "Обзор файлов" + +msgid "Application Overview" +msgstr "Обзор приложений" + msgid "https://wiki.ublinux.com" msgstr "https://wiki.ublinux.ru"