diff --git a/source/ubl-settings-services.c b/source/ubl-settings-services.c index f9beddf..1a0b394 100644 --- a/source/ubl-settings-services.c +++ b/source/ubl-settings-services.c @@ -564,6 +564,7 @@ log_window *yon_log_window_new(){ window->target=NULL; window->adjustment = GTK_ADJUSTMENT(gtk_builder_get_object(builder,"adjustment1")); yon_gtk_widget_set_scroll_window_for_scroll(window->Window,GTK_SCROLLBAR(window->TerminalScroll)); + gtk_window_set_icon_name(GTK_WINDOW(window->Window),"com.ublinux.ubl-settings-services"); GdkRGBA rgba; vte_terminal_get_color_background_for_draw(VTE_TERMINAL(window->SystemTerminal),&rgba); vte_terminal_set_color_cursor(VTE_TERMINAL(window->SystemTerminal),&rgba); @@ -575,18 +576,18 @@ log_window *yon_log_window_new(){ void yon_system_systemd_restart(GtkWidget *self, main_window *widgets){ if (self){}; if (widgets){ - if (getuid()!=0&>k_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ + if (!getuid()&>k_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (system(reload_systemd_root_command)){ yon_ubl_status_box_render(SYSTEMD_RELAUNCH_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } else { - yon_ubl_status_box_render(SYSTEMD_RELAUNCH_SUCCESS_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_render(SYSTEMD_RELAUNCH_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } } else { if (system(reload_systemd_user_command)){ yon_ubl_status_box_render(SYSTEMD_RELAUNCH_ERROR_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); } else { - yon_ubl_status_box_render(SYSTEMD_RELAUNCH_SUCCESS_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); + yon_ubl_status_box_render(SYSTEMD_RELAUNCH_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); } } @@ -879,6 +880,8 @@ void on_config_edit_clicked(GtkWidget *self, main_window *widgets){ GtkTreeModel *model = GTK_TREE_MODEL(widgets->ConfigList); if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ConfigMainTree)),&model,&iter)){ log_window *window = yon_log_window_new(); + if (getuid()) + gtk_widget_set_sensitive(window->SaveButton,0); gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),EDIT_CONFIG_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),EDIT_CONFIG_LABEL); gtk_widget_hide(gtk_widget_get_parent(window->SystemTerminal)); @@ -933,7 +936,7 @@ void on_units_status(GtkWidget *self, main_window *widgets){ log_window *window = yon_log_window_new(); gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),INSTALLED_UNIT_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),INSTALLED_UNIT_LABEL); - window->target = installed_units_states_command; + window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?installed_units_states_command:user_installed_units_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); @@ -947,7 +950,7 @@ void on_units_list_status(GtkWidget *self, main_window *widgets){ log_window *window = yon_log_window_new(); gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),UNITS_LIST_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),UNITS_LIST_LABEL); - window->target = list_of_units_states_command; + window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?list_of_units_states_command:user_list_of_units_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); @@ -961,7 +964,7 @@ void on_sockets_list_status(GtkWidget *self, main_window *widgets){ log_window *window = yon_log_window_new(); gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),SOCKETS_LIST_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),SOCKETS_LIST_LABEL); - window->target = list_of_sockets_states_command; + window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?list_of_sockets_states_command:user_list_of_sockets_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); @@ -975,7 +978,7 @@ void on_timers_list_status(GtkWidget *self, main_window *widgets){ log_window *window = yon_log_window_new(); gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),TIMERS_LIST_LABEL); gtk_window_set_title(GTK_WINDOW(window->Window),TIMERS_LIST_LABEL); - window->target = list_of_timers_states_command; + window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?list_of_timers_states_command:user_list_of_timers_states_command; yon_terminal_integrated_start(window->SystemTerminal,window->target,NULL,NULL); gtk_widget_show(window->Window); @@ -1284,6 +1287,8 @@ void config_init(){ main_config.lock_save_local=0; main_config.load_mode=1; main_config.update_thread_active=0; + main_config.launch_arguments=NULL; + main_config.launch_size=0; } void on_tree_selection_changed(GtkWidget *self, main_window *widgets){ @@ -1348,29 +1353,6 @@ void on_tree_selection_changed(GtkWidget *self, main_window *widgets){ } } -void on_root_get_root(char *argline){ - yon_launch(argline); -} - -void on_root_access(GtkWidget *self, main_window *widgets){ - if (self){}; - if (getuid()){ - char *argline = LocaleName; - for (int i=1;iWindow); - } - } -} - /**yon_main_window_complete(main_window *widgets) * [EN] * @@ -1395,12 +1377,17 @@ void yon_main_window_complete(main_window *widgets){ widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook"); widgets->SystemServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"SystemServicesStatusMenuItem"); - widgets->UserServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"UserServicesStatusMenuItem"); widgets->InstalledUnitsStatusMenuItem=yon_gtk_builder_get_widget(builder,"InstalledUnitsStatusMenuItem"); widgets->UnitsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UnitsStatusListMenuItem"); widgets->SocketsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"SocketsStatusListMenuItem"); widgets->TimersStatusListMenuItem=yon_gtk_builder_get_widget(builder,"TimersStatusListMenuItem"); + widgets->UserServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"UserServicesStatusMenuItem"); + widgets->UserInstalledUnitsStatusMenuItem=yon_gtk_builder_get_widget(builder,"UserInstalledUnitsStatusMenuItem"); + widgets->UserUnitsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UserUnitsStatusListMenuItem"); + widgets->UserSocketsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UserSocketsStatusListMenuItem"); + widgets->UserTimersStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UserTimersStatusListMenuItem"); + widgets->SystemSearchEntry=yon_gtk_builder_get_widget(builder,"SystemSearchEntry"); widgets->SystemFiltersCombo=yon_gtk_builder_get_widget(builder,"SystemFiltersCombo"); widgets->SystemInactiveShowCheck=yon_gtk_builder_get_widget(builder,"SystemInactiveShowCheck"); @@ -1515,12 +1502,17 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SessionBlockButton),"clicked",G_CALLBACK(on_session_block),widgets); g_signal_connect(G_OBJECT(widgets->SystemServicesStatusMenuItem),"activate",G_CALLBACK(on_system_services_status),widgets); - g_signal_connect(G_OBJECT(widgets->UserServicesStatusMenuItem),"activate",G_CALLBACK(on_user_services_status),widgets); g_signal_connect(G_OBJECT(widgets->InstalledUnitsStatusMenuItem),"activate",G_CALLBACK(on_units_status),widgets); g_signal_connect(G_OBJECT(widgets->UnitsStatusListMenuItem),"activate",G_CALLBACK(on_units_list_status),widgets); g_signal_connect(G_OBJECT(widgets->SocketsStatusListMenuItem),"activate",G_CALLBACK(on_sockets_list_status),widgets); g_signal_connect(G_OBJECT(widgets->TimersStatusListMenuItem),"activate",G_CALLBACK(on_timers_list_status),widgets); + g_signal_connect(G_OBJECT(widgets->UserServicesStatusMenuItem),"activate",G_CALLBACK(on_user_services_status),widgets); + g_signal_connect(G_OBJECT(widgets->UserInstalledUnitsStatusMenuItem),"activate",G_CALLBACK(on_units_status),widgets); + g_signal_connect(G_OBJECT(widgets->UserUnitsStatusListMenuItem),"activate",G_CALLBACK(on_units_list_status),widgets); + g_signal_connect(G_OBJECT(widgets->UserSocketsStatusListMenuItem),"activate",G_CALLBACK(on_sockets_list_status),widgets); + g_signal_connect(G_OBJECT(widgets->UserTimersStatusListMenuItem),"activate",G_CALLBACK(on_timers_list_status),widgets); + g_signal_connect(G_OBJECT(widgets->ConfigAutostartCell),"toggled",G_CALLBACK(on_config_autostart_clicked),widgets); g_signal_connect(G_OBJECT(widgets->ConfigAutostopCell),"toggled",G_CALLBACK(on_config_autostop_clicked),widgets); g_signal_connect(G_OBJECT(widgets->ConfigBlockCell),"toggled",G_CALLBACK(on_config_block_clicked),widgets); @@ -1528,7 +1520,10 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->UserConfigAutostartCell),"toggled",G_CALLBACK(on_config_autostart_clicked),widgets); g_signal_connect(G_OBJECT(widgets->UserConfigAutostopCell),"toggled",G_CALLBACK(on_config_autostop_clicked),widgets); g_signal_connect(G_OBJECT(widgets->UserConfigBlockCell),"toggled",G_CALLBACK(on_config_block_clicked),widgets); + if (getuid()==0){ + gtk_widget_set_sensitive(widgets->UserUpdateButton,0); + gtk_widget_set_sensitive(widgets->UserPrevButton,0); g_signal_connect(G_OBJECT(widgets->SystemAutostartCell),"toggled",G_CALLBACK(on_system_autostart_clicked),widgets); g_signal_connect(G_OBJECT(widgets->SystemLaunchedCell),"toggled",G_CALLBACK(on_system_launch_clicked),widgets); @@ -1536,9 +1531,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->UserSystemLaunchedCell),"toggled",G_CALLBACK(on_system_launch_clicked),widgets); } else { gtk_widget_set_sensitive(widgets->SystemUpdateButton,0); - gtk_widget_set_sensitive(widgets->UserUpdateButton,0); gtk_widget_set_sensitive(widgets->SystemPrevButton,0); - gtk_widget_set_sensitive(widgets->UserPrevButton,0); } yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->UserUnitsTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->SystemUnitsTree)); @@ -1580,6 +1573,7 @@ void yon_main_window_complete(main_window *widgets){ yon_window_config_add_listener(g_list_nth_data(list,i),yon_char_append("TimersUnitsColumn",yon_char_from_int(i)),"fixed-width",YON_TYPE_INT); } g_list_free(list); + on_column_resize(NULL,NULL,widgets); g_signal_connect(G_OBJECT(widgets->LoadLocalMenuItem),"activate",G_CALLBACK(on_config_local_load),widgets); g_signal_connect(G_OBJECT(widgets->LoadGlobalMenuItem),"activate",G_CALLBACK(on_config_global_load),widgets); @@ -1591,23 +1585,7 @@ void yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->SaveCustomMenuItem),"activate",G_CALLBACK(on_config_custom_save),NULL); g_signal_connect(G_OBJECT(widgets->SystemUnitsTree),"cursor-changed",G_CALLBACK(on_tree_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserUnitsTree),"cursor-changed",G_CALLBACK(on_tree_selection_changed),widgets); - GtkWidget *root_item = gtk_menu_item_new(); - gtk_style_context_add_class(gtk_widget_get_style_context(root_item),"menuitemtop"); - gtk_style_context_add_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemmiddle"); - gtk_style_context_remove_class(gtk_widget_get_style_context(widgets->DocumentationMenuItem),"menuitemtop"); - GtkWidget *box = gtk_box_new(GTK_ORIENTATION_HORIZONTAL,5); - GtkWidget *root_label = gtk_label_new(ROOT_CHECK_LABEL); - GtkWidget *root_check = gtk_check_button_new(); - gtk_menu_shell_prepend(GTK_MENU_SHELL(gtk_widget_get_parent(widgets->DocumentationMenuItem)),root_item); - gtk_box_pack_start(GTK_BOX(box),root_label,1,1,0); - gtk_box_pack_start(GTK_BOX(box),root_check,0,0,0); - gtk_container_add(GTK_CONTAINER(root_item),box); - gtk_widget_show_all(root_item); - g_signal_connect(G_OBJECT(root_item),"activate", G_CALLBACK(on_root_access),widgets); - if (getuid()==0) { - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(root_check),1); - gtk_widget_set_sensitive(root_item,0); - } + yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size); gtk_tree_model_filter_set_visible_func(widgets->UserFilter,(GtkTreeModelFilterVisibleFunc)yon_filter,widgets,NULL); gtk_tree_model_filter_set_visible_func(widgets->SystemFilter,(GtkTreeModelFilterVisibleFunc)yon_filter,widgets,NULL); gtk_tree_view_set_search_column(GTK_TREE_VIEW(widgets->UserUnitsTree),5); @@ -1641,7 +1619,7 @@ int main(int argc, char *argv[]){ yon_ubl_status_box_render(ROOT_WARNING_LABEL,BACKGROUND_IMAGE_FAIL_TYPE); textdomain(LocaleName); } - main_config.launch_arguments=argv; + main_config.launch_arguments=yon_char_parsed_copy(argv,argc); main_config.launch_size=argc; gtk_main(); return 0; diff --git a/source/ubl-settings-services.h b/source/ubl-settings-services.h index 62429f2..b49aa1a 100644 --- a/source/ubl-settings-services.h +++ b/source/ubl-settings-services.h @@ -58,13 +58,18 @@ #define get_config_files_command "find /etc/systemd -iname *.conf -exec du -sh --time {} \\;|sed -e 's/\t/;/g'" #define system_services_status_command "systemctl status --no-pager" -#define user_services_status_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ status --no-pager",NULL) #define installed_units_states_command "systemctl list-unit-files --no-pager" #define list_of_units_states_command "systemctl list-units --all --no-pager" #define list_of_sockets_states_command "systemctl list-sockets --all --no-pager" #define list_of_timers_states_command "systemctl list-timers --all --no-pager" #define get_timers_command "systemctl list-timers --all --no-pager --plain --no-legend --output=json" +#define user_services_status_command !getuid()?yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ status --no-pager",NULL):"systemctl --user status --no-pager" +#define user_installed_units_states_command !getuid()?yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-unit-files --no-pager",NULL):"systemctl --user list-unit-files --no-pager" +#define user_list_of_units_states_command !getuid()?yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --all --no-pager",NULL):"systemctl --user list-units --all --no-pager" +#define user_list_of_sockets_states_command !getuid()?yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-sockets --all --no-pager",NULL):"systemctl --user list-sockets --all --no-pager" +#define user_list_of_timers_states_command !getuid()?yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-timers --all --no-pager",NULL):"systemctl --user list-timers --all --no-pager" + #define installed_units_command "systemctl list-unit-files --no-pager| sed -e 's/ */;/g'" #define list_of_units_command "systemctl list-units --all --no-pager| sed -e 's/ */;/g'" #define list_of_sockets_command "systemctl list-sockets --all --no-pager| sed -e 's/ */;/g'" @@ -189,11 +194,17 @@ typedef struct { GtkWidget *MainNotebook; GtkWidget *SystemServicesStatusMenuItem; - GtkWidget *UserServicesStatusMenuItem; GtkWidget *InstalledUnitsStatusMenuItem; GtkWidget *UnitsStatusListMenuItem; GtkWidget *SocketsStatusListMenuItem; GtkWidget *TimersStatusListMenuItem; + + GtkWidget *UserServicesStatusMenuItem; + GtkWidget *UserInstalledUnitsStatusMenuItem; + GtkWidget *UserUnitsStatusListMenuItem; + GtkWidget *UserSocketsStatusListMenuItem; + GtkWidget *UserTimersStatusListMenuItem; + GtkTreeModelFilter *SystemFilter; GtkTreeModelFilter *UserFilter; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 971fb69..4700ee2 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -128,8 +128,6 @@ #define STATE_PLUGGED_LABEL _("plugged") #define STATE_ABANDONED_LABEL _("abandoned") -#define ROOT_CHECK_LABEL _("Upgrade to root") - #define SERVICE_STATE_TITLE_LABEL(target) yon_char_append(_("State of "),target) #define SERVICE_LOG_TITLE_LABEL(target) yon_char_unite(_("View")," ",target," ",_("log"),NULL) #define SERVICE_UNIT_EDIT_TITLE_LABEL _("Edit unit file") diff --git a/ubl-settings-services.glade b/ubl-settings-services.glade index 5d0fa4e..5be103e 100644 --- a/ubl-settings-services.glade +++ b/ubl-settings-services.glade @@ -198,14 +198,6 @@ True - - - True - False - User services status - True - - True @@ -239,6 +231,45 @@ + + True + False + + + True + False + User services status + + + + + True + False + Installed unit files + + + + + True + False + Units and status list + + + + + True + False + Sockets and status list + + + + + True + False + Timers and status list + + + True False @@ -1020,12 +1051,48 @@ + + False + True + 6 + + + + + True + False + False True 7 + + + True + True + False + True + Show... + menu2 + + + True + False + com.ublinux.ubl-settings-services.menu-symbolic + + + + + + False + True + 8 + + False @@ -1802,8 +1869,4 @@ - - True - False -