|
Before Width: | Height: | Size: 212 KiB After Width: | Height: | Size: 212 KiB |
|
Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 64 KiB |
@ -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> >k_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){
|
|||||||
|
asmeron
commented 3 years ago
Review
Перечень возможных терминалов вынести в массив, который описать в заголовке ! |
|||||||
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") {
|
|||||||
|
asmeron
commented 3 years ago
Review
Использовать массив терминалов для выборки и обработки |
|||||||
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;
|
|||||||
|
asmeron
commented 3 years ago
Review
Задача по этому поводу существует, исправить ! |
|||||||
//}
|
|||||||
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);
|
|||||||
}
|
|||||||
|
|||||||
@ -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;
|
||||
@ -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 ""
|
|||||||
|
asmeron
commented 3 years ago
Review
Это говорил убрать !!
Igor1
commented 3 years ago
Review
Исправил. |
|||||||
|
|||||||
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 ""
|
|||||||
Уже писал об этом !
Дубликат который храниться в двух местах:
@install -Dm644 -t /usr/share/icons/hicolor/scalable/apps/ "ru.ublinux.${PKGNAME}.svg"@install -Dm644 -t /usr/share/${PKGNAME}/images/ "ru.ublinux.${PKGNAME}.svg"Для чего ??