Merge pull request 'master' (#13) from Igor1/ublexec:master into develop

Reviewed-on: #13
pull/20/head
Dmitry Razumov 3 years ago
commit 987a5e8d53

@ -102,10 +102,10 @@ install: check uninstall
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"; \
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"; \
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/ "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
@ -113,7 +113,7 @@ install: check uninstall
@install -Dm644 -t /usr/share/${PKGNAME}/ui/ ${PKGNAME}.glade
@install -Dm644 -t /usr/share/${PKGNAME}/css/ style.css
@install -Dm644 -t /usr/share/${PKGNAME}/images/ bg_top.png
@install -Dm644 -t /usr/share/${PKGNAME}/images/ ${PKGNAME}.svg
@install -Dm644 -t /usr/share/${PKGNAME}/images/ "ru.ublinux.${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

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 64 KiB

@ -1,18 +1,11 @@
#include "ublexec.h"
int main(int argc, char** argv)
{
int main(int argc, char** argv) {
string str_cmd_argv = "";
for (int i=1; i<argc; i++){
str_cmd_argv += to_string(*argv[i]) + " ";
}
if (geteuid()!=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);
setlocale(LC_ALL, "");
@ -23,7 +16,6 @@ int main(int argc, char** argv)
Glib::init();
setlocale(LC_ALL, "");
Glib::OptionContext context;
CmdArgParser parser{
"Socket ID",
"Command line argument for socket ID communication.",
@ -32,18 +24,13 @@ int main(int argc, char** argv)
context.set_main_group(parser);
context.parse(argc, argv);
::Window socketID = parser.GetSocketID();
// Handle plug:
SettingsPlug plug{socketID, builder};
plug.show();
app->run(plug);
return 0;
}
else {
MainWindow* wnd = nullptr;
builder->get_widget_derived("window", wnd);
auto r = app->run(*wnd);

@ -1,9 +1,9 @@
#include "ublexec.h"
using namespace std;
string path_app= "/usr/bin/";
string path_glade= "/usr/share/ublexec/ui/ublexec.glade";
string path_css = "/usr/share/ublexec/css/style.css";
string app_name = "ublexec";
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)
@ -12,17 +12,14 @@ CmdArgParser::CmdArgParser(const std::string& p_name, const std::string& p_descr
socketIDArg.set_long_name("socket-id");
socketIDArg.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
socketIDArg.set_description("Settings manager socket");
Glib::OptionEntry socketExtId;
socketExtId.set_long_name("socket-ext-id");
socketExtId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
socketExtId.set_description("Settings manager secondary socket");
Glib::OptionEntry socketTrdId;
socketTrdId.set_long_name("socket-trd-id");
socketTrdId.set_flags(Glib::OptionEntry::FLAG_IN_MAIN);
socketTrdId.set_description("Settings manager secondary socket");
add_entry(socketIDArg, m_socketID);
add_entry(socketExtId, socket_ext_id_I);
add_entry(socketTrdId, socket_trd_id_I);
@ -106,6 +103,8 @@ void MainWindow::get_builder(){
builder->get_widget("aboutWindows", aboutWindows);
builder->get_widget("btnSettings", btnSettings);
builder->get_widget("btnBoxAboutDialog", btnBoxAboutDialog);
builder->get_widget("boxAbout", boxAbout);
builder->get_widget("cmbTerminal", cmbTerminal);
}
void MainWindow::set_icon_array() {
@ -141,9 +140,14 @@ void MainWindow::add_CSS(){
}
void MainWindow::localization() {
time_t now = time(0);
tm *ltm = localtime(&now);
unsigned int year= 1900+ ltm->tm_year;
string str_authors = string(_("Copyright © UBSoft LLC, 2022 - ")) + to_string(year);
aboutWindows->set_copyright(str_authors);
aboutWindows->set_website(_("https://wiki.ublinux.com"));
btnSynopsis->set_label(_("Help"));
btnAbout->set_label(_("About the program"));
btnAbout->set_label(_("About"));
aboutWindows->set_comments(_("ublexec"));
aboutWindows->set_website_label(_("Project Home Page"));
aboutWindows->set_version(_(version_application.c_str()));
@ -154,14 +158,14 @@ void MainWindow::localization(){
dialogStartMenu->set_title(_("Selecting Programs"));
lblInfoHead->set_text(_("Running applications as a user with a\nspecified priority"));
lblinfoCmd->set_text(_("Command Line"));
lblInfoTime->set_text(_("Team"));
lblInfoTime->set_text(_("Team:"));
labInfoExecutTerm->set_text(_("Run in the terminal emulator"));
lblInfoUser->set_text(_("User"));
lblInfoUserOther->set_text(_("Run as another user"));
lblInfoUserName->set_text(_("User Name"));
lblInfoUserOther->set_text(_("Run as another user:"));
lblInfoUserName->set_text(_("User Name:"));
lblInfoNooPriority->set_text(_("Priority"));
lblInfoExec->set_text(_("Change startup priority"));
lblInfoPriority->set_text(_("Priority"));
lblInfoPriority->set_text(_("Priority:"));
lblMessageError->set_text(_("Select an executable file or program"));
lblGraphics->set_text(_("Graphics"));
lblTools->set_text(_("Tools"));
@ -173,13 +177,14 @@ void MainWindow::localization(){
lblOther->set_text(_("Other"));
lblDevelopment->set_text(_("Development"));
lblSystem->set_text(_("System"));
}
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(sigc::mem_fun(*this, &MainWindow::denamic_cmd));
chbTerminal->signal_toggled().connect([&]() {cmbTerminal->set_sensitive(chbTerminal->get_active());this->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));
@ -202,12 +207,75 @@ 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([&](){denamic_cmd();changed_user();});
rbSudo->signal_toggled().connect(sigc::mem_fun(*this, &MainWindow::denamic_cmd));
cmbUser->signal_changed().connect([&]() {changed_user();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));
}
void MainWindow::sudo_nice(){
string response = this->call("id -Gn");
if (geteuid() == 0 || cmbUser->get_active_text() == "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 (Low)"));
lblTime4EpriorityHigh->set_text(_("-20 (High)"));
}
else if (rbSudo->get_active() && response.find("wheel") != string::npos){
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 (Low)"));
lblTime4EpriorityHigh->set_text(_("-20 (High)"));
}
else if (rbSu->get_active()){
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 (Low)"));
lblTime4EpriorityHigh->set_text(_("0 (High)"));
}
else if (rbPkexec->get_active()){
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 (Low)"));
lblTime4EpriorityHigh->set_text(_("0 (High)"));
}
this->denamic_cmd();
}
void MainWindow::changed_user() {
Glib::ustring entry_user = cmbUser->get_active_text();
string response = this->call("id -Gn");
bool flag_wheel_sudo = (rbSudo->get_active()==true && response.find("wheel") != string::npos);
if (geteuid() == 0 || entry_user == "root" || flag_wheel_sudo==true) {
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 (Low)"));
lblTime4EpriorityHigh->set_text(_("-20 (High)"));
}
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 (Low)"));
lblTime4EpriorityHigh->set_text(_("0 (High)"));
}
}
void MainWindow::delete_cmd(const int &x, const int &y) {
if (y > 1) {
chbTerminal->set_active(false);
@ -219,13 +287,10 @@ void MainWindow::delete_cmd(const int &x,const int &y){
bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event) {
if (user_cmd.length() != 0) {
//user_cmd_old = user_cmd;gi
}
else if (name_app.length() != 0) {
//name_app_old = name_app;
}
else if (path_file.length() != 0) {
//path_file_old = path_file;
}
else{
user_cmd = txtCmd->get_text();
@ -234,9 +299,9 @@ bool MainWindow::focus_in_txt_cmd(GdkEventFocus* event){
return true;
}
void MainWindow::synopsis_show() {
system("xdg-open https://wiki.ublinux.ru/ru/home &");
string cmd = "xdg-open " + string(_("https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/")) + app_name + " &";
system(cmd.c_str());
}
void MainWindow::icon_clear() {
@ -289,8 +354,7 @@ void MainWindow::select_System(){
}
void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtr<Gtk::ListStore> &gtk_list) {
auto selected = (*icon).get_selected_items();
if(!selected.empty())
{
if(!selected.empty()) {
this->set_icon_array();
this->unselect_icon(icon);
const Gtk::TreeModel::Path& path = *selected.begin();
@ -309,6 +373,7 @@ void MainWindow::tempate_icon_select(Gtk::IconView *icon, Glib::RefPtr<Gtk::List
str_remove(name_app, del_sim);
if (name_app.length() != len_name_app) {
txtCmd->set_text(name_app);
this->denamic_cmd();
break;
}
}
@ -334,26 +399,26 @@ void MainWindow::settings(){
spinPriority->set_increments(1.0, -1.0);
scalePriority->set_range(0, 19);
scalePriority->set_value(0);
lblTimeEpriorityLow->set_text("19 (Низкий)");
lblTime4EpriorityHigh->set_text("0 (Высокий)");
lblTimeEpriorityLow->set_text(_("19 (Low)"));
lblTime4EpriorityHigh->set_text(_("0 (High)"));
scalePriority->set_inverted(true);
this->pars_dir_bin();
this->pars_dir_terminal();
this->pars_users();
this->is_user_wheel();
cmbUser->set_active_text(user_exec_app);
this->activ_or_block_execute_epriority();
this->changed_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);
btnBoxAboutDialog->set_visible(false);
Gtk::Widget *boxAbout;
builder->get_widget("boxAbout",boxAbout);
ubl_make_plugs(boxAbout,boxAbout, 0, socket_trd_id_I);
cmbTerminal->set_sensitive(false);
ubl_make_plugs(boxAbout, boxAbout, socket_ext_id_I, 0);
}
void MainWindow::close_entry_app() {
this->icon_clear();
dialogStartMenu->hide();
@ -369,13 +434,13 @@ 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);
this->denamic_cmd();
}
void MainWindow::open_filemaneg() {
wndChooseFileWallpaper->set_current_folder("/bin/");
wndChooseFileWallpaper->show();
}
@ -396,8 +461,38 @@ void MainWindow::get_path_filemaneg(){
this->denamic_cmd();
}
vector <size_t> MainWindow::find_all(string &text, string &word) {
size_t index{};
vector <size_t> list_index;
while ((index = text.find(word, index)) != std::string::npos)
{
index += word.length();
list_index.push_back(index);
}
return list_index;
}
void MainWindow::tempalte_row(string Name, string Exec, string path , Glib::RefPtr<Gtk::ListStore> &dtk_list) {
Gtk::TreeModel::Row row = *(dtk_list->append());
string s_remove[] = {".png", ".jpg", ".jpeg", ".svg", ".xpm"};
string str_search = "/";
if (path.find(str_search) != string::npos){
vector <size_t> list_index = this->find_all(path, str_search);
int index = list_index.size();
if (index>1){
index = index-1;
index = list_index.at(index);
if (index){
size_t len_path = path.length();
path = path.substr(index, len_path);
}
}
}
for (string &del: s_remove){
if (path.find(del) != string::npos){
str_remove(path, del);
}
}
row[m_Columns.m_col_filename] = path;
row[m_Columns.m_col_description] = Name;
row[m_Columns.icon_name] = path;
@ -462,9 +557,6 @@ string MainWindow::start_cmd(string user_cmd){
string str_variants_root = "";
string str_nice_cmd = "";
if (chbAnotherUser->get_active()) {
if (geteuid()!=0){
//chbTerminal->set_active(true);
}
if (rbPkexec->get_active()) {
str_variants_root = "pkexec --user " + cmbUser->get_active_text();
if (cbxExecuteEpriority->get_active()) {
@ -481,15 +573,14 @@ string MainWindow::start_cmd(string user_cmd){
else{
str_variants_root = "su ";
}
str_variants_root += + " -c \" DISPLAY=$DISPLAY ";
str_variants_root += " -c \" DISPLAY=$DISPLAY ";
if (cbxExecuteEpriority->get_active()) {
str_variants_root += "nice -n " + to_string(spinPriority->get_value_as_int()) + " ";
}
}
else if (rbSudo->get_active()) {
chbTerminal->set_active(true);
if (getlogin()==cmbUser->get_active_text()){
if (user_exec_app==cmbUser->get_active_text()) {
str_variants_root = "sudo ";
}
else{
@ -503,6 +594,7 @@ string MainWindow::start_cmd(string user_cmd){
if (cmbUser->get_active_text().length() != 0) {
string user_cmd_X = "xhost +SI:localuser:";
user_cmd_X += cmbUser->get_active_text();
user_cmd_X += " > /dev/null 2>&1";
system(user_cmd_X.c_str());
}
if ((cbxExecuteEpriority->get_active()) && (chbAnotherUser->get_active() == false)) {
@ -512,29 +604,51 @@ string MainWindow::start_cmd(string user_cmd){
messageError->show();
return "";
}
if (chbTerminal->get_active() == true) {
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 = "";
}
}
else{
str_cmd_terminal = "";
}
}
else{
str_cmd_terminal = "";
}
string cmd = "";
if (path_file.length() > 0) {
cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + " xdg-open '" + path_file + "' ";
if (access(path_file.c_str(), X_OK) != -1) {
cmd = str_nice_cmd + str_cmd_terminal + str_variants_root + " " + path_file;
}
else{
cmd = str_nice_cmd + str_cmd_terminal + str_variants_root + " xdg-open '" + path_file + "' ";
}
}
else if (name_app.length() > 0) {
cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + name_app;
cmd = str_nice_cmd + str_cmd_terminal + str_variants_root + name_app;
}
else if (user_cmd.length() > 0) {
cmd = "nohup " + str_nice_cmd + str_cmd_terminal + str_variants_root + " " + user_cmd;
cmd = str_nice_cmd + str_cmd_terminal + str_variants_root + " " + user_cmd;
}
if (cmd.find("-e su ")!=string::npos){
if ((cmd.find("-e su ") != string::npos) || (cmd.find("-x su ") != string::npos)) {
cmd+=" \"";
}
cmd = "nohup " + cmd;
cmd += " > /dev/null 2>&1";
return cmd;
}
@ -573,6 +687,24 @@ void MainWindow::denamic_cmd(){
}
}
string MainWindow::call(string cmd) {
FILE *fp;
int status;
char path[PATH_MAX] = {0};
fp = popen(cmd.c_str(), "r");
if (fp == NULL) {
exit(1);
}
while (fgets(path, PATH_MAX, fp) != NULL) {
break;
}
status = pclose(fp);
if (status == -1) {
exit(1);
}
return path;
}
bool MainWindow::focus_out_txt_cmd(GdkEventFocus* event) {
if (cmd_old != txtCmd->get_text()) {
user_cmd = txtCmd->get_text();
@ -583,32 +715,11 @@ bool MainWindow::focus_out_txt_cmd(GdkEventFocus* event){
void MainWindow::entry_app() {
this->denamic_cmd();
if (name_app.length() == 0 && path_file.length() == 0) {
}
string cmd = txtCmd->get_text();
this->call_app(cmd);
}
void MainWindow::changed_user(){
Glib::ustring entry_user = cmbUser->get_active_text();
if (geteuid()==0 || 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::activ_or_block_other_user() {
bool flag = chbAnotherUser->get_active();
cmbUser->set_active(0);
@ -657,7 +768,47 @@ void MainWindow::pars_dir_bin(){
rbSudo->set_sensitive(flag_sudo);
}
void MainWindow::pars_dir_terminal() {
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 == "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");
}
}
}
void MainWindow::is_user_wheel(){
string response = this->call("id -Gn");
if (response.find("wheel") == string::npos){
flag_sudo = false;
rbSudo->set_sensitive(flag_sudo);
}
size_t user_index = response.find(" ");
if (user_index!=string::npos){
user_exec_app = response.substr(0, user_index);
}
}
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;
//}
while (true) {
errno = 0;
passwd* entry = getpwent();
@ -667,12 +818,10 @@ void MainWindow::pars_users(){
}
break;
}
if (entry->pw_uid >= 1000 && entry->pw_uid!=65534){
if ((entry->pw_uid >= 1000 && entry->pw_uid < uid_max) || entry->pw_uid == 0) {
cmbUser->append(entry->pw_name);
}
}
cmbUser->append("root");
endpwent();
}
@ -731,7 +880,6 @@ void MainWindow::pars_apps(){
}
App.Name_desktop = file_name;
App.Categories = split(str_Categories, ';');
}
list_app.push_back(App);
}

@ -19,10 +19,10 @@
using namespace std;
extern string path_app;
extern string app_name;
extern string path_glade;
extern string path_css;
extern const string path_app;
extern const string app_name;
extern const string path_glade;
extern const string path_css;
extern int socket_ext_id_I;
extern int socket_trd_id_I;
void me_thread(string cmd);
@ -86,14 +86,18 @@ public:
void delete_cmd(const int &x,const int &y);
void synopsis_show();
void denamic_cmd();
void is_user_wheel();
void sudo_nice();
vector <size_t> find_all(string &text, string &word);
bool focus_out_txt_cmd(GdkEventFocus* event);
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);
string call(string cmd);
vector<std::string> split(const std::string &s, char delim);
public:
class ModelColumns : public Gtk::TreeModel::ColumnRecord
{
class ModelColumns : public Gtk::TreeModel::ColumnRecord {
public:
ModelColumns()
{
@ -154,7 +158,6 @@ public:
Gtk::Label *lblInfoNooPriority;
Gtk::Label *lblInfoExec;
Gtk::Label *lblInfoPriority;
Gtk::Label *lblGraphics;
Gtk::Label *lblTools;
Gtk::Label *lblInternet;
@ -166,7 +169,6 @@ public:
Gtk::Label *lblDevelopment;
Gtk::Label *lblSystem;
Gtk::Label *lblHeaderName;
Gtk::IconView *iconGraphics;
Gtk::IconView *iconTools;
Gtk::IconView *iconInternet;
@ -183,7 +185,7 @@ public:
Gtk::AboutDialog *aboutWindows;
Gtk::MenuButton *btnSettings;
Gtk::ButtonBox *btnBoxAboutDialog;
Gtk::ComboBoxText *cmbTerminal;
Glib::RefPtr<Gtk::ListStore> list_Graphics;
Glib::RefPtr<Gtk::ListStore> list_Tools;
Glib::RefPtr<Gtk::ListStore> list_Internet;
@ -194,9 +196,11 @@ public:
Glib::RefPtr<Gtk::ListStore> list_Other;
Glib::RefPtr<Gtk::ListStore> list_Development;
Glib::RefPtr<Gtk::ListStore> list_System;
Gtk::Widget *boxAbout;
public:
string version_application = "1.0";
string cmd_old = "";
string user_exec_app = "";
string user_cmd = "";
string user_cmd_old = "";
string name_app_old = "";
@ -215,13 +219,13 @@ public:
string Icon;
string MimeType;
string Type;
vector<std::string> Categories;};
vector<std::string> Categories;
};
list <struct_App> list_app;
set <string> set_categories;
int index_exec_gui_apps = 0;
Gtk::IconView* array_icon[10];
};
class SettingsPlug : public Gtk::Plug{

@ -61,12 +61,3 @@
.menuitemtop{
margin-bottom:0px;
}
.bkim{
background-image: -gtk-gradient(linear,
left top, left bottom,
from(@entry_background_a),
color-stop(0.20, @entry_background_b),
color-stop(0.85, @entry_background_c),
to(@entry_background_d));
}

@ -1,14 +1,15 @@
[Desktop Entry]
Encoding=UTF-8
Name=ublexec
Name[ru]=Выполнить
Name[ru]=Выполнить как...
GenericName=Execution from user rights
GenericName[ru]=Выполнить
GenericName[ru]=Выполнить как...
Comment=Execution from user rights
Comment[ru]=Выполнить
Comment[ru]=Выполнить как...
Type=Application
Exec=ublexec
Icon=ublexec
Icon=ru.ublinux.ublexec
Terminal=false
X-XfcePluggable=true
Categories=XFCE;GTK;Settings;DesktopSettings;X-XFCE-SettingsDialog;X-XFCE-SystemSettings;X-UBL-SettingsManager;X-UBL-SystemSettings;
X-UBLPluggable=true
Categories=XFCE;GTK;Utility;X-GNOME-Utilities;System;

@ -16,17 +16,19 @@
<property name="icon-name">ubl-settings-datetime</property>
<property name="type-hint">dialog</property>
<property name="urgency-hint">True</property>
<property name="program-name">ublexec</property>
<property name="accept-focus">False</property>
<property name="focus-on-map">False</property>
<property name="program-name">ubl-exec</property>
<property name="version">1.0</property>
<property name="copyright" translatable="yes">Copyright © 2023 - UBSoft Software LLC</property>
<property name="comments" translatable="yes">Setting the date and time</property>
<property name="copyright" translatable="yes">Copyright © UBSoft LLC, 2022 - </property>
<property name="comments" translatable="yes">ublexec</property>
<property name="website">https://ublinux.ru/</property>
<property name="website-label" translatable="yes">Project Home Page</property>
<property name="license" translatable="yes">Это приложение распространяется без каких-либо гарантий.
Подробнее в &lt;a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html"&gt;GNU General Public License, версии 2 или позднее&lt;/a&gt;.</property>
<property name="authors">UBGroup</property>
<property name="artists">UBGroup</property>
<property name="logo-icon-name">ublexec</property>
<property name="logo-icon-name">ru.ublinux.ublexec</property>
<property name="wrap-license">True</property>
<property name="license-type">gpl-2-0</property>
<child internal-child="vbox">
@ -64,6 +66,7 @@
<property name="width-request">450</property>
<property name="height-request">240</property>
<property name="can-focus">False</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -958,8 +961,6 @@
<property name="margin-bottom">6</property>
<property name="stock">gtk-media-play</property>
</object>
<<<<<<< HEAD
=======
<object class="GtkListStore" id="list_Other">
<columns>
<!-- column-name gchararray1 -->
@ -988,7 +989,6 @@
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Synopsis</property>
<property name="use-underline">True</property>
<style>
<class name="menuitemtop"/>
</style>
@ -998,17 +998,16 @@
<object class="GtkMenuItem" id="btnAbout">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">About the program</property>
<property name="use-underline">True</property>
<property name="label" translatable="yes">About</property>
<style>
<class name="menuitembottom"/>
</style>
</object>
</child>
</object>
>>>>>>> devel
<object class="GtkWindow" id="window">
<property name="can-focus">False</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
@ -1029,7 +1028,7 @@
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="pixel-size">69</property>
<property name="icon-name">ublexec</property>
<property name="icon-name">ru.ublinux.ublexec</property>
</object>
<packing>
<property name="expand">False</property>
@ -1083,9 +1082,10 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<object class="GtkFrame" id="frame1">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1094,6 +1094,7 @@ specified priority</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="hexpand">True</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
@ -1102,14 +1103,16 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="lblInfoTime">
<property name="width-request">145</property>
<property name="width-request">0</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1118,7 +1121,7 @@ specified priority</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">Team</property>
<property name="label" translatable="yes" context="Time" comments="Time">Team:</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
@ -1130,7 +1133,7 @@ specified priority</property>
</child>
<child>
<object class="GtkEntry" id="txtCmd">
<property name="width-request">330</property>
<property name="width-request">381</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">5</property>
@ -1148,6 +1151,7 @@ specified priority</property>
</child>
<child>
<object class="GtkButton" id="btnFilemaneg">
<property name="width-request">51</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -1182,6 +1186,7 @@ specified priority</property>
</child>
<child>
<object class="GtkButton" id="btnListApp">
<property name="width-request">51</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
@ -1225,9 +1230,10 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel">
<property name="width-request">131</property>
<property name="width-request">110</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">15</property>
@ -1268,6 +1274,34 @@ specified priority</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkComboBoxText" id="cmbTerminal">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="margin-left">9</property>
<property name="margin-right">5</property>
<property name="margin-end">5</property>
<property name="margin-bottom">6</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="width-request">116</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@ -1281,6 +1315,7 @@ specified priority</property>
<object class="GtkLabel" id="lblinfoCmd">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="Setting the date and time" comments="Setting the date and time">Command Line</property>
</object>
</child>
@ -1293,7 +1328,7 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
@ -1303,15 +1338,17 @@ specified priority</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<object class="GtkFrame" id="frame2">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="hexpand">True</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
@ -1320,11 +1357,13 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkCheckButton" id="chbAnotherUser">
<property name="visible">True</property>
@ -1343,7 +1382,7 @@ specified priority</property>
<object class="GtkLabel" id="lblInfoUserOther">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Run as another user</property>
<property name="label" translatable="yes">Run as another user:</property>
</object>
</child>
</object>
@ -1426,9 +1465,10 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="lblInfoUserName">
<property name="width-request">145</property>
<property name="width-request">123</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1437,7 +1477,7 @@ specified priority</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">User Name</property>
<property name="label" translatable="yes" context="Time" comments="Time">User Name:</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
@ -1449,7 +1489,7 @@ specified priority</property>
</child>
<child>
<object class="GtkComboBoxText" id="cmbUser">
<property name="width-request">330</property>
<property name="width-request">381</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
@ -1465,6 +1505,19 @@ specified priority</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkLabel">
<property name="width-request">0</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-end">100</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
@ -1478,6 +1531,7 @@ specified priority</property>
<object class="GtkLabel" id="lblInfoUser">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="Setting the date and time" comments="Setting the date and time">User</property>
</object>
</child>
@ -1490,7 +1544,7 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
@ -1500,15 +1554,17 @@ specified priority</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-bottom">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkFrame">
<object class="GtkFrame" id="frame3">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="hexpand">True</property>
<property name="label-xalign">0.019999999552965164</property>
<property name="shadow-type">in</property>
<child>
@ -1517,6 +1573,7 @@ specified priority</property>
<property name="can-focus">False</property>
<property name="margin-left">5</property>
<property name="margin-start">5</property>
<property name="hexpand">True</property>
<property name="orientation">vertical</property>
<child>
<object class="GtkCheckButton" id="cbxExecuteEpriority">
@ -1550,6 +1607,7 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<child>
<object class="GtkLabel" id="lblInfoPriority">
<property name="width-request">5</property>
@ -1560,8 +1618,7 @@ specified priority</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">Priority</property>
<property name="label" translatable="yes" context="Time" comments="Time">Priority:</property>
<property name="wrap">True</property>
<property name="xalign">0</property>
</object>
@ -1573,14 +1630,14 @@ specified priority</property>
</child>
<child>
<object class="GtkScale" id="scalePriority">
<property name="width-request">-1</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="margin-left">5</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="margin-bottom">9</property>
<property name="adjustment">adjustment1</property>
<property name="fill-level">20</property>
<property name="round-digits">0</property>
@ -1601,7 +1658,6 @@ specified priority</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="numeric">True</property>
</object>
<packing>
@ -1621,9 +1677,10 @@ specified priority</property>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="hexpand">False</property>
<child>
<object class="GtkLabel">
<property name="width-request">65</property>
<property name="width-request">62</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="margin-left">15</property>
@ -1647,7 +1704,6 @@ specified priority</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">19 (Low)</property>
<property name="wrap">True</property>
@ -1669,7 +1725,6 @@ specified priority</property>
<property name="margin-right">5</property>
<property name="margin-start">5</property>
<property name="margin-end">5</property>
<property name="margin-top">6</property>
<property name="margin-bottom">6</property>
<property name="label" translatable="yes" context="Time" comments="Time">-20 (High)</property>
<property name="wrap">True</property>
@ -1683,7 +1738,7 @@ specified priority</property>
</child>
<child>
<object class="GtkLabel">
<property name="width-request">95</property>
<property name="width-request">107</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">end</property>
@ -1711,6 +1766,7 @@ specified priority</property>
<object class="GtkLabel" id="lblInfoNooPriority">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="Setting the date and time" comments="Setting the date and time">Priority</property>
</object>
</child>
@ -1723,7 +1779,7 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
@ -1751,24 +1807,22 @@ specified priority</property>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">True</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
</object>
</child>
<<<<<<< HEAD
=======
<child type="titlebar">
<object class="GtkHeaderBar">
<object class="GtkHeaderBar" id="headerBar">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="show-close-button">True</property>
@ -1787,7 +1841,7 @@ specified priority</property>
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="pixel-size">32</property>
<property name="icon-name">ublexec</property>
<property name="icon-name">ru.ublinux.ublexec</property>
</object>
</child>
<child>
@ -1825,11 +1879,11 @@ specified priority</property>
</child>
</object>
</child>
>>>>>>> devel
</object>
<object class="GtkMessageDialog" id="messageError">
<property name="can-focus">False</property>
<property name="title" translatable="yes">Внимание!</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<property name="type-hint">dialog</property>
<child internal-child="vbox">
<object class="GtkBox">
@ -1890,6 +1944,7 @@ specified priority</property>
<property name="default-width">500</property>
<property name="default-height">400</property>
<property name="destroy-with-parent">True</property>
<property name="icon-name">ru.ublinux.ublexec</property>
<property name="type-hint">dialog</property>
<property name="skip-taskbar-hint">True</property>
<property name="urgency-hint">True</property>

@ -0,0 +1,127 @@
# Russian 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 "https://wiki.ublinux.com"
msgstr ""
msgid "About"
msgstr ""
msgid "Help"
msgstr ""
msgid "Project Home Page"
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 ""
msgid "Exit"
msgstr ""
msgid "Selecting Programs"
msgstr ""
msgid "Running applications as a user with a\nspecified 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 ""
msgid "su"
msgstr ""
msgid "sudo"
msgstr ""
msgid "User Name"
msgstr ""
msgid "User"
msgstr ""
msgid "Change startup priority"
msgstr ""
msgid "Priority"
msgstr ""
msgid "19 (Low)"
msgstr ""
msgid "-20 (High)"
msgstr ""
msgid "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgstr ""
msgid "0 (High)"
msgstr ""
msgid "Run"
msgstr ""
msgid "Select an executable file or program"
msgstr ""
msgid "Please select File"
msgstr ""
msgid "Warning!"
msgstr ""
msgid "ublexec"
msgstr ""
msgid "ubl-exec"
msgstr ""
msgid "Copyright © UBSoft LLC, 2022 - "
msgstr ""

@ -1,15 +1,25 @@
# English translations for PACKAGE package.
# Russian 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 ""
"Project-Id-Version: ubconfig 1.0\n"
"Report-Msgid-Bugs-To: info@ublinux.ru\n"
"POT-Creation-Date: 2020-02-22 23:22+0600\n"
"PO-Revision-Date: 2020-02-22 23:28+0600\n"
"Last-Translator: ublinux <info@ublinux.ru>\n"
"Language-Team: Russian - UBLinux Team <info@ublinux.ru>\n"
"Language: Russian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
msgid "https://wiki.ublinux.com"
msgstr "https://wiki.ublinux.ru"
msgid "About the program"
msgid "About"
msgstr "О программе"
msgid "Help"
@ -60,8 +70,8 @@ msgstr "Выбор программ"
msgid "Running applications as a user with a\nspecified priority"
msgstr "Запуск приложений от имени пользователя с\nуказанным приоритетом"
msgid "Team"
msgstr "Команда"
msgid "Team:"
msgstr "Команда:"
msgid "Run in the terminal emulator"
msgstr "Выполнить в эмуляторе терминала"
@ -69,8 +79,8 @@ msgstr "Выполнить в эмуляторе терминала"
msgid "Command Line"
msgstr "Командная строка"
msgid "Run as another user"
msgstr "Выполнить от имени другого пользователя"
msgid "Run as another user:"
msgstr "Выполнить от имени другого пользователя:"
msgid "pkexec"
msgstr "pkexec"
@ -81,8 +91,8 @@ msgstr "su"
msgid "sudo"
msgstr "sudo"
msgid "User Name"
msgstr "Имя поьзователя"
msgid "User Name:"
msgstr "Имя пользователя:"
msgid "User"
msgstr "Пользователь"
@ -90,6 +100,9 @@ msgstr "Пользователь"
msgid "Change startup priority"
msgstr "Изменить приоритет запуска"
msgid "Priority:"
msgstr "Приоритет:"
msgid "Priority"
msgstr "Приоритет"
@ -99,6 +112,12 @@ msgstr "19 (Низкий)"
msgid "-20 (High)"
msgstr "-20 (Высокий)"
msgid "https://wiki.ublinux.com/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgstr "https://wiki.ublinux.ru/ru/Программное_обеспечениерограммы_и_утилиты/Все/"
msgid "0 (High)"
msgstr "0 (Высокий)"
msgid "Run"
msgstr "Запустить"
@ -112,4 +131,10 @@ msgid "Warning!"
msgstr "Внимание!"
msgid "ublexec"
msgstr "Выполнить"
msgstr "Выполнить как..."
msgid "ubl-exec"
msgstr "ubl-exec"
msgid "Copyright © UBSoft LLC, 2022 - "
msgstr "Авторские права © ООО \"Юбисофт\", 2022 - "
Loading…
Cancel
Save