Merge pull request 'master' (#91) from YanTheKaller/ubl-settings-services:master into master

Reviewed-on: #91
pull/128/head^2 v2.14
Dmitry Razumov 1 year ago
commit 655f1915b6

@ -166,20 +166,24 @@ void on_activate(GtkTreeView *self, main_window *widgets){
void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *widgets){ void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *widgets){
GtkTreeIter filter_iter; GtkTreeIter filter_iter;
GtkTreeIter iter; GtkTreeIter iter,itor;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeModel *filter; GtkTreeModel *filter;
GtkTreeModel *sort;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->SystemList); model = GTK_TREE_MODEL(widgets->SystemList);
filter = GTK_TREE_MODEL(widgets->SystemFilter); filter = GTK_TREE_MODEL(widgets->SystemFilter);
sort = GTK_TREE_MODEL(widgets->SystemSort);
} else { } else {
model = GTK_TREE_MODEL(widgets->UserList); model = GTK_TREE_MODEL(widgets->UserList);
filter = GTK_TREE_MODEL(widgets->UserFilter); filter = GTK_TREE_MODEL(widgets->UserFilter);
sort = GTK_TREE_MODEL(widgets->UserSort);
} }
GtkTreePath *path_converted = gtk_tree_path_new_from_string(path); GtkTreePath *path_converted = gtk_tree_path_new_from_string(path);
gtk_tree_model_get_iter(filter,&filter_iter,path_converted); gtk_tree_model_get_iter(sort,&filter_iter,path_converted);
{ {
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&filter_iter); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(sort),&itor,&filter_iter);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&itor);
gboolean status = 0; gboolean status = 0;
char *name; char *name;
gtk_tree_model_get(model,&iter,0,&status,5,&name,-1); gtk_tree_model_get(model,&iter,0,&status,5,&name,-1);
@ -224,20 +228,24 @@ void on_config_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid
void on_config_autostop_clicked(GtkCellRenderer *, char *path, main_window *widgets){ void on_config_autostop_clicked(GtkCellRenderer *, char *path, main_window *widgets){
GtkTreeIter filter_iter; GtkTreeIter filter_iter;
GtkTreeIter iter; GtkTreeIter iter,itor;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeModel *filter; GtkTreeModel *filter;
GtkTreeModel *sort;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->SystemList); model = GTK_TREE_MODEL(widgets->SystemList);
filter = GTK_TREE_MODEL(widgets->SystemFilter); filter = GTK_TREE_MODEL(widgets->SystemFilter);
sort = GTK_TREE_MODEL(widgets->SystemSort);
} else { } else {
model = GTK_TREE_MODEL(widgets->UserList); model = GTK_TREE_MODEL(widgets->UserList);
filter = GTK_TREE_MODEL(widgets->UserFilter); filter = GTK_TREE_MODEL(widgets->UserFilter);
sort = GTK_TREE_MODEL(widgets->UserSort);
} }
GtkTreePath *path_converted = gtk_tree_path_new_from_string(path); GtkTreePath *path_converted = gtk_tree_path_new_from_string(path);
gtk_tree_model_get_iter(filter,&filter_iter,path_converted); gtk_tree_model_get_iter(sort,&filter_iter,path_converted);
{ {
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&filter_iter); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(sort),&itor,&filter_iter);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&itor);
gboolean status = 0; gboolean status = 0;
char *name; char *name;
gtk_tree_model_get(model,&iter,1,&status,5,&name,-1); gtk_tree_model_get(model,&iter,1,&status,5,&name,-1);
@ -283,20 +291,24 @@ void on_config_autostop_clicked(GtkCellRenderer *, char *path, main_window *widg
void on_config_block_clicked(GtkCellRenderer *, char *path, main_window *widgets){ void on_config_block_clicked(GtkCellRenderer *, char *path, main_window *widgets){
GtkTreeIter filter_iter; GtkTreeIter filter_iter;
GtkTreeIter iter; GtkTreeIter iter,itor;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeModel *filter; GtkTreeModel *filter;
GtkTreeModel *sort;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->SystemList); model = GTK_TREE_MODEL(widgets->SystemList);
filter = GTK_TREE_MODEL(widgets->SystemFilter); filter = GTK_TREE_MODEL(widgets->SystemFilter);
sort = GTK_TREE_MODEL(widgets->SystemSort);
} else { } else {
model = GTK_TREE_MODEL(widgets->UserList); model = GTK_TREE_MODEL(widgets->UserList);
filter = GTK_TREE_MODEL(widgets->UserFilter); filter = GTK_TREE_MODEL(widgets->UserFilter);
sort = GTK_TREE_MODEL(widgets->UserSort);
} }
GtkTreePath *path_converted = gtk_tree_path_new_from_string(path); GtkTreePath *path_converted = gtk_tree_path_new_from_string(path);
gtk_tree_model_get_iter(filter,&filter_iter,path_converted); gtk_tree_model_get_iter(sort,&filter_iter,path_converted);
{ {
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&filter_iter); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(sort),&itor,&filter_iter);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&itor);
gboolean status = 0; gboolean status = 0;
char *name; char *name;
gtk_tree_model_get(model,&iter,2,&status,5,&name,-1); gtk_tree_model_get(model,&iter,2,&status,5,&name,-1);
@ -346,28 +358,33 @@ void on_system_autostart_confirmed(GtkWidget *,char *service_command){
void on_system_autostart_clicked(GtkCellRenderer *, char *path, main_window *widgets){ void on_system_autostart_clicked(GtkCellRenderer *, char *path, main_window *widgets){
GtkTreeIter filter_iter; GtkTreeIter filter_iter;
GtkTreeIter iter; GtkTreeIter iter,itor;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeModel *filter; GtkTreeModel *filter;
GtkTreeModel *sort;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->SystemList); model = GTK_TREE_MODEL(widgets->SystemList);
filter = GTK_TREE_MODEL(widgets->SystemFilter); filter = GTK_TREE_MODEL(widgets->SystemFilter);
sort = GTK_TREE_MODEL(widgets->SystemSort);
} else { } else {
model = GTK_TREE_MODEL(widgets->UserList); model = GTK_TREE_MODEL(widgets->UserList);
filter = GTK_TREE_MODEL(widgets->UserFilter); filter = GTK_TREE_MODEL(widgets->UserFilter);
sort = GTK_TREE_MODEL(widgets->UserSort);
} }
GtkTreePath *path_converted = gtk_tree_path_new_from_string(path); GtkTreePath *path_converted = gtk_tree_path_new_from_string(path);
gtk_tree_model_get_iter(filter,&filter_iter,path_converted); gtk_tree_model_get_iter(sort,&filter_iter,path_converted);
{ {
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&filter_iter); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(sort),&itor,&filter_iter);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&itor);
gboolean status = 0; gboolean status = 0;
char *service_name; char *service_name;
gtk_tree_model_get(model,&iter,3,&status,5,&service_name,-1); gtk_tree_model_get(model,&iter,3,&status,5,&service_name,-1);
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=(!status)==0 ?SERVICE_DISABLE_WARNING_LABEL(service_name):SERVICE_ENABLE_WARNING_LABEL(service_name); data->action_text=(!status)==0 ?SERVICE_DISABLE_WARNING_LABEL(service_name):SERVICE_ENABLE_WARNING_LABEL(service_name);
data->data=(!status)==1 ? service_enable_command(service_name) : \ data->data=(!status)==1 ? service_enable_command(service_name) : \
service_disable_command(service_name); service_disable_command(service_name);
data->function=(void*)(void*)on_system_autostart_confirmed; data->function=(void*)(void*)on_system_autostart_confirmed;
data->title = status?SERVICE_AUTOSTOP_TITLE_LABEL:SERVICE_AUTOSTART_TITLE_LABEL;
int responce = yon_confirmation_dialog_call(widgets->Window,data); int responce = yon_confirmation_dialog_call(widgets->Window,data);
if (responce == GTK_RESPONSE_ACCEPT){ if (responce == GTK_RESPONSE_ACCEPT){
gtk_list_store_set(GTK_LIST_STORE(model),&iter,3,!status,-1); gtk_list_store_set(GTK_LIST_STORE(model),&iter,3,!status,-1);
@ -376,10 +393,42 @@ void on_system_autostart_clicked(GtkCellRenderer *, char *path, main_window *wid
} }
gboolean sort_bool(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,gpointer col){
int val_a,val_b;
char *name_a="", *name_b="";
gtk_tree_model_get(model,a,GPOINTER_TO_INT(col),&val_a,6,&name_a,-1);
gtk_tree_model_get(model,b,GPOINTER_TO_INT(col),&val_b,6,&name_b,-1);
if (val_a==val_b){
gchar *key_a = g_utf8_collate_key(name_a, -1);
gchar *key_b = g_utf8_collate_key(name_b, -1);
gint result = strcmp(key_a, key_b);
g_free(key_a);
g_free(key_b);
return result;
}
return val_a ? -1 : 1;
}
gboolean sort_string(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,gpointer col){
char *name_a="", *name_b="";
gtk_tree_model_get(model,a,GPOINTER_TO_INT(col),&name_a,-1);
gtk_tree_model_get(model,b,GPOINTER_TO_INT(col),&name_b,-1);
if (!name_a) name_a="";
if (!name_b) name_b="";
gchar *key_a = g_utf8_collate_key(name_a, -1);
gchar *key_b = g_utf8_collate_key(name_b, -1);
gint result = strcmp(key_a, key_b);
g_free(key_a);
g_free(key_b);
return result;
}
gboolean yon_filter(GtkTreeModel* model, GtkTreeIter *iter, main_window *widgets){ gboolean yon_filter(GtkTreeModel* model, GtkTreeIter *iter, main_window *widgets){
gboolean autostart,autostop,masked,type,loaded,active; gboolean autostart,autostop,masked,type,loaded,active;
char *name; char *name;
gtk_tree_model_get(model,iter,0,&autostart,1,&autostop,2,&masked,5,&name,7,&type,8,&loaded,9,&active,-1); gtk_tree_model_get(model,iter,0,&autostart,1,&autostop,2,&masked,5,&name,7,&type,8,&active,9,&loaded,-1);
GtkWidget *combo=NULL; GtkWidget *combo=NULL;
GtkWidget *loaded_check=NULL; GtkWidget *loaded_check=NULL;
GtkWidget *active_check=NULL; GtkWidget *active_check=NULL;
@ -439,11 +488,11 @@ void on_filter_changed(GtkWidget *, main_window *widgets){
if (page == 0){ if (page == 0){
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),NULL);
gtk_tree_model_filter_refilter(widgets->SystemFilter); gtk_tree_model_filter_refilter(widgets->SystemFilter);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemFilter)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemSort));
} else if (page == 1){ } else if (page == 1){
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),NULL);
gtk_tree_model_filter_refilter(widgets->UserFilter); gtk_tree_model_filter_refilter(widgets->UserFilter);
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserFilter)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserSort));
} }
} }
@ -452,28 +501,32 @@ void on_system_kill_confirmed(GtkWidget *,char *service_name){
} }
void on_system_launch_clicked(GtkWidget *, char *path, main_window *widgets){ void on_system_launch_clicked(GtkWidget *, char *path, main_window *widgets){
GtkTreeIter iter, filter_iter; GtkTreeIter iter, itor, filter_iter;
GtkTreeModel *model; GtkTreeModel *model;
GtkTreeModel *filter; GtkTreeModel *filter;
GtkTreeModel *sort;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){ if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
model = GTK_TREE_MODEL(widgets->SystemList); model = GTK_TREE_MODEL(widgets->SystemList);
filter = GTK_TREE_MODEL(widgets->SystemFilter); filter = GTK_TREE_MODEL(widgets->SystemFilter);
sort = GTK_TREE_MODEL(widgets->SystemSort);
} else { } else {
model = GTK_TREE_MODEL(widgets->UserList); model = GTK_TREE_MODEL(widgets->UserList);
filter = GTK_TREE_MODEL(widgets->UserFilter); filter = GTK_TREE_MODEL(widgets->UserFilter);
sort = GTK_TREE_MODEL(widgets->UserSort);
} }
GtkTreePath *path_converted = gtk_tree_path_new_from_string(path); GtkTreePath *path_converted = gtk_tree_path_new_from_string(path);
gtk_tree_model_get_iter(filter,&filter_iter,path_converted); gtk_tree_model_get_iter(sort,&filter_iter,path_converted);
{ {
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&filter_iter); gtk_tree_model_sort_convert_iter_to_child_iter(GTK_TREE_MODEL_SORT(sort),&itor,&filter_iter);
gtk_tree_model_filter_convert_iter_to_child_iter(GTK_TREE_MODEL_FILTER(filter),&iter,&itor);
gboolean status = 0; gboolean status = 0;
char *service_name; char *service_name;
gtk_tree_model_get(model,&iter,4,&status,5,&service_name,-1); gtk_tree_model_get(model,&iter,4,&status,5,&service_name,-1);
if (status){ if (status){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=SERVICE_STOP_WARNING_LABEL(service_name); data->action_text=SERVICE_STOP_WARNING_LABEL(service_name);
data->data=service_stop_command(service_name); data->data=service_stop_command(service_name);
data->function=NULL; data->title = SERVICE_STOP_TITLE_LABEL;
int size; int size;
config_str result = yon_config_load(service_check_active_command(service_name),&size); config_str result = yon_config_load(service_check_active_command(service_name),&size);
yon_char_remove_last_symbol(result[0],'\n'); yon_char_remove_last_symbol(result[0],'\n');
@ -496,10 +549,11 @@ void on_system_launch_clicked(GtkWidget *, char *path, main_window *widgets){
} }
yon_char_parsed_free(result,size); yon_char_parsed_free(result,size);
} else { } else {
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=SERVICE_START_WARNING_LABEL(service_name); data->action_text=SERVICE_START_WARNING_LABEL(service_name);
data->data=service_start_command(service_name); data->data=service_start_command(service_name);
data->function=(void*)(void*)on_system_kill_confirmed; data->function=(void*)(void*)on_system_kill_confirmed;
data->title = SERVICE_START_TITLE_LABEL;
int size; int size;
config_str result = yon_config_load(service_check_active_command(service_name),&size); config_str result = yon_config_load(service_check_active_command(service_name),&size);
yon_char_remove_last_symbol(result[0],'\n'); yon_char_remove_last_symbol(result[0],'\n');
@ -507,7 +561,7 @@ void on_system_launch_clicked(GtkWidget *, char *path, main_window *widgets){
int responce = yon_confirmation_dialog_call(widgets->Window,data); int responce = yon_confirmation_dialog_call(widgets->Window,data);
if (responce == GTK_RESPONSE_ACCEPT){ if (responce == GTK_RESPONSE_ACCEPT){
gtk_list_store_set(GTK_LIST_STORE(model),&iter,4,1,-1); gtk_list_store_set(GTK_LIST_STORE(model),&iter,4,1,-1);
yon_ubl_status_box_render(SERVICE_RELOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(SERVICE_START_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
} }
} }
} }
@ -535,10 +589,11 @@ void on_system_restart_clicked(GtkWidget *, main_window *widgets){
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(target_tree)),&model,&iter)){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(target_tree)),&model,&iter)){
char *target; char *target;
gtk_tree_model_get(model,&iter,5,&target,-1); gtk_tree_model_get(model,&iter,5,&target,-1);
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text=REEXEC_SERVICE_WARMING_LABEL(target); data->action_text=REEXEC_SERVICE_WARMING_LABEL(target);
data->data=target; data->data=target;
data->function=(void*)(void*)on_service_restart_confirmed; data->function=(void*)(void*)on_service_restart_confirmed;
data->title = RELAUNCH_SERVICE_LABEL;
int responce = yon_confirmation_dialog_call(widgets->Window,data); int responce = yon_confirmation_dialog_call(widgets->Window,data);
if (responce == GTK_RESPONSE_ACCEPT){ if (responce == GTK_RESPONSE_ACCEPT){
yon_ubl_status_box_render(SERVICE_RELOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(SERVICE_RELOAD_SUCCESS_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);
@ -553,14 +608,16 @@ void on_sessions_selection_changed(GtkWidget *, main_window *widgets){
gtk_widget_set_sensitive(widgets->SessionStopButton,1); gtk_widget_set_sensitive(widgets->SessionStopButton,1);
gtk_widget_set_sensitive(widgets->SessionBlockButton,1); gtk_widget_set_sensitive(widgets->SessionBlockButton,1);
gtk_widget_set_sensitive(widgets->SessionStartButton,1); gtk_widget_set_sensitive(widgets->SessionStartButton,1);
gtk_widget_set_sensitive(widgets->SessionSwitchButton,1);
} else { } else {
gtk_widget_set_sensitive(widgets->SessionStopButton,0); gtk_widget_set_sensitive(widgets->SessionStopButton,0);
gtk_widget_set_sensitive(widgets->SessionBlockButton,0); gtk_widget_set_sensitive(widgets->SessionBlockButton,0);
gtk_widget_set_sensitive(widgets->SessionStartButton,0); gtk_widget_set_sensitive(widgets->SessionStartButton,0);
gtk_widget_set_sensitive(widgets->SessionSwitchButton,0);
} }
} }
void yon_sessions_update(main_window *widgets){ gboolean yon_sessions_update(main_window *widgets){
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SessionMainTree),NULL); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SessionMainTree),NULL);
gtk_list_store_clear(widgets->SessionsList); gtk_list_store_clear(widgets->SessionsList);
int sessions_size; int sessions_size;
@ -574,48 +631,93 @@ void yon_sessions_update(main_window *widgets){
else parsed[1]=INACTIVE_LABEL; else parsed[1]=INACTIVE_LABEL;
if (parsed&&size>4){ if (parsed&&size>4){
gtk_list_store_append(widgets->SessionsList,&iter); gtk_list_store_append(widgets->SessionsList,&iter);
gtk_list_store_set(widgets->SessionsList,&iter,0,atoi(parsed[0]),1,parsed[1],2,atoi(parsed[2]),3,parsed[3],4,parsed[4],-1); gtk_list_store_set(widgets->SessionsList,&iter,0,atoi(parsed[0]),1,parsed[1],2,atoi(parsed[2]),3,parsed[3],4,parsed[4],5,parsed[4],6,parsed[5],-1);
} }
} }
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SessionMainTree),GTK_TREE_MODEL(widgets->SessionsList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SessionMainTree),GTK_TREE_MODEL(widgets->SessionsList));
return G_SOURCE_REMOVE;
} }
void on_session_activate(GtkWidget *, main_window *widgets){ void on_session_activate(GtkWidget *self, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList); GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList);
GtkTreeIter iter; GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){
int id; int id;
gtk_tree_model_get(model,&iter,0,&id,-1); gtk_tree_model_get(model,&iter,0,&id,-1);
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
char *convert = yon_char_from_int(id); char *convert = yon_char_from_int(id);
yon_launch(session_activate_session(convert)); data->action_text = SESSION_ACTIVATE_TOOLTIP_LABEL(convert);
free(convert); data->title = SESSION_SWITCH_TITLE_LABEL(convert);
yon_sessions_update(widgets); if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
yon_launch(session_activate_session(convert));
free(convert);
yon_sessions_update(widgets);
}
} }
} }
void on_session_end(GtkWidget *, main_window *widgets){ void on_session_end(GtkWidget *self, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList); GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList);
GtkTreeIter iter; GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){
int id; int id;
gtk_tree_model_get(model,&iter,0,&id,-1); gtk_tree_model_get(model,&iter,0,&id,-1);
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
char *convert = yon_char_from_int(id); char *convert = yon_char_from_int(id);
yon_launch(session_terminate_session(convert)); data->action_text = SESSION_END_TOOLTIP_LABEL(convert);
free(convert); data->title = SESSION_TERMINATE_TITLE_LABEL(convert);
yon_sessions_update(widgets); if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
if (!system(session_terminate_session(convert))){
GtkTreeModel *model;
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model, &iter)){
gtk_list_store_remove(widgets->SessionsList,&iter);
}
}
free(convert);
}
}
}
void on_session_unlock(GtkWidget *self, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList);
GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){
int id;
gtk_tree_model_get(model,&iter,0,&id,-1);
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
char *convert = yon_char_from_int(id);
data->action_text = SESSION_UNLOCK_TOOLTIP_LABEL(convert);
data->data = NULL;
data->function = NULL;
data->title = SESSION_UNLOCK_TITLE_LABEL(convert);
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
yon_launch(session_unlock_session(convert));
free(convert);
yon_sessions_update(widgets);
}
} }
} }
void on_session_block(GtkWidget *, main_window *widgets){ void on_session_block(GtkWidget *self, main_window *widgets){
GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList); GtkTreeModel *model = GTK_TREE_MODEL(widgets->SessionsList);
GtkTreeIter iter; GtkTreeIter iter;
if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){ if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->SessionMainTree)),&model,&iter)){
int id; int id;
gtk_tree_model_get(model,&iter,0,&id,-1); gtk_tree_model_get(model,&iter,0,&id,-1);
dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
char *convert = yon_char_from_int(id); char *convert = yon_char_from_int(id);
yon_launch(session_lock_session(convert)); data->action_text = SESSION_BLOCK_TOOLTIP_LABEL(convert);
free(convert); data->data = NULL;
yon_sessions_update(widgets); data->function = NULL;
data->title = SESSION_LOCK_TITLE_LABEL(convert);
if (yon_confirmation_dialog_call(self,data) == GTK_RESPONSE_ACCEPT){
yon_launch(session_lock_session(convert));
free(convert);
yon_sessions_update(widgets);
}
} }
} }
@ -686,10 +788,15 @@ typedef void (*data_function)(void*,void*);
void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets){ void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets){
if (widgets){ if (widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = RELOAD_SERVICE_WARMING_LABEL("systemd"); if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==0){
data->action_text = RELOAD_SYSTEM_SETTINGS_WARNING_LABEL;
}else if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))==1){
data->action_text = RELOAD_USER_SETTINGS_WARNING_LABEL;
}
data->data = widgets; data->data = widgets;
data->function = (data_function)yon_system_systemd_restart; data->function = (data_function)yon_system_systemd_restart;
data->title = RELAUNCH_SYSTEMCTL_LABEL;
yon_confirmation_dialog_call(self,data); yon_confirmation_dialog_call(self,data);
} }
@ -697,7 +804,7 @@ void on_system_update_hz_clicked(GtkWidget *self, main_window *widgets){
void on_system_update_clicked(GtkWidget *self, main_window *widgets){ void on_system_update_clicked(GtkWidget *self, main_window *widgets){
if (widgets){ if (widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = REEXEC_SERVICE_WARMING_LABEL("systemd"); data->action_text = REEXEC_SERVICE_WARMING_LABEL("systemd");
data->data = widgets; data->data = widgets;
data->function = (data_function)yon_system_systemd_reexec; data->function = (data_function)yon_system_systemd_reexec;
@ -808,10 +915,11 @@ void on_system_status_clicked(GtkWidget *, main_window *widgets){
void on_user_update_hz_clicked(GtkWidget *self, main_window *widgets){ void on_user_update_hz_clicked(GtkWidget *self, main_window *widgets){
if (widgets){ if (widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = REEXEC_SERVICE_WARMING_LABEL("systemd"); data->action_text = REEXEC_SERVICE_WARMING_LABEL("systemd");
data->data = widgets; data->data = widgets;
data->function = (data_function)yon_system_systemd_restart; data->function = (data_function)yon_system_systemd_restart;
data->title = REEXEC_SYSTEMCTL_LABEL;
yon_confirmation_dialog_call(self,data); yon_confirmation_dialog_call(self,data);
} }
@ -820,7 +928,7 @@ void on_user_update_hz_clicked(GtkWidget *self, main_window *widgets){
void on_user_update_clicked(GtkWidget *self, main_window *widgets){ void on_user_update_clicked(GtkWidget *self, main_window *widgets){
if (widgets){ if (widgets){
dialog_confirmation_data *data = malloc(sizeof(dialog_confirmation_data)); dialog_confirmation_data *data = yon_confirmation_dialog_data_new();
data->action_text = RELOAD_SERVICE_WARMING_LABEL("systemd"); data->action_text = RELOAD_SERVICE_WARMING_LABEL("systemd");
data->data = widgets; data->data = widgets;
data->function = (data_function)yon_system_systemd_reexec; data->function = (data_function)yon_system_systemd_reexec;
@ -1049,9 +1157,17 @@ gboolean yon_interface_list_models_disconnect(main_window *widgets){
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
void on_sort_activate(GtkTreeViewColumn *self, main_window *widgets){
if (self == gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemUpperTree),2)){
gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemUnitsTree),6));
} else {
gtk_tree_view_column_clicked(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->UserUnitsTree),6));
}
}
gboolean yon_interface_list_models_connect(main_window *widgets){ gboolean yon_interface_list_models_connect(main_window *widgets){
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemFilter)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->SystemUnitsTree),GTK_TREE_MODEL(widgets->SystemSort));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserFilter)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->UserUnitsTree),GTK_TREE_MODEL(widgets->UserSort));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ConfigMainTree),GTK_TREE_MODEL(widgets->ConfigList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->ConfigMainTree),GTK_TREE_MODEL(widgets->ConfigList));
gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->TimersMainTree),GTK_TREE_MODEL(widgets->TimersList)); gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->TimersMainTree),GTK_TREE_MODEL(widgets->TimersList));
@ -1065,21 +1181,21 @@ gboolean yon_interface_list_models_connect(main_window *widgets){
gboolean yon_system_set(struct system_services_data *data){ gboolean yon_system_set(struct system_services_data *data){
GtkTreeIter iter; GtkTreeIter iter;
gtk_list_store_append(data->widgets->SystemList,&iter); gtk_list_store_append(data->widgets->SystemList,&iter);
gtk_list_store_set(data->widgets->SystemList,&iter,3,data->SystemAutostart,4,data->SystemLaunched,5,data->Name,6,data->Descr,7,data->Type,8,data->Loaded,9,data->Active,11,data->State,-1); gtk_list_store_set(data->widgets->SystemList,&iter,3,data->SystemAutostart,4,data->SystemLaunched,5,data->Name,6,data->Descr,7,data->Type,8,data->Loaded,9,data->Active,11,_(data->State),13,data->State,-1);
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
gboolean yon_user_set(struct system_user_data *data){ gboolean yon_user_set(struct system_user_data *data){
GtkTreeIter iter; GtkTreeIter iter;
gtk_list_store_append(data->widgets->UserList,&iter); gtk_list_store_append(data->widgets->UserList,&iter);
gtk_list_store_set(data->widgets->UserList,&iter,3,data->SystemAutostart,4,data->SystemLaunched,5,data->Name,6,data->Descr,5,data->Name,6,data->Descr,7,data->Type,8,data->Loaded,9,data->Active,11,data->State,-1); gtk_list_store_set(data->widgets->UserList,&iter,3,data->SystemAutostart,4,data->SystemLaunched,5,data->Name,6,data->Descr,5,data->Name,6,data->Descr,7,data->Type,8,data->Loaded,9,data->Active,11,_(data->State),13,data->State,-1);
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
gboolean yon_system_config_set(struct system_config_data *data){ gboolean yon_system_config_set(struct system_config_data *data){
GtkTreeIter iter; GtkTreeIter iter;
gtk_list_store_append(data->widgets->ConfigList,&iter); gtk_list_store_append(data->widgets->ConfigList,&iter);
gtk_list_store_set(data->widgets->ConfigList,&iter,0,data->Name,1,data->Date,2,data->Descr,-1); gtk_list_store_set(data->widgets->ConfigList,&iter,0,data->Name,1,data->Descr,2,data->Date,-1);
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
@ -1220,22 +1336,29 @@ gboolean yon_interface_update_finish(main_window *widgets){
} }
} }
main_config.update_thread_active=0; main_config.update_thread_active=0;
char *final = yon_char_unite(yon_char_get_localised_from_lib(SUCCESS_LABEL),". ",main_config.load_mode==0?yon_char_get_localised_from_lib(GLOBAL_LOAD_SUCCESS_LABEL):yon_char_get_localised_from_lib(LOCAL_LOAD_SUCCESS_LABEL),NULL);
yon_ubl_status_box_render(final,BACKGROUND_IMAGE_SUCCESS_TYPE);
free(final);
return G_SOURCE_REMOVE; return G_SOURCE_REMOVE;
} }
void* yon_interface_update(main_window *widgets){ void* yon_interface_update(main_window *widgets){
dictionary *dict = yon_systemd_get_list(); // dictionary *dict = yon_systemd_get_list();
if (dict){} // if (dict){}
if (widgets){ if (widgets){
g_idle_add((GSourceFunc)yon_interface_list_models_disconnect,widgets); g_idle_add((GSourceFunc)yon_interface_list_models_disconnect,widgets);
// int system_size; int system_size;
// config_str system_services = yon_config_load(load_services_command,&system_size); config_str system_services = yon_config_load(load_services_command,&system_size);
int system_units_size;
config_str system_units = yon_config_load(load_system_units_command,&system_units_size);
int user_size; int user_size;
config_str user_services = yon_config_load(load_user_services_command,&user_size); config_str user_services = yon_config_load(load_user_services_command,&user_size);
int user_units_size;
config_str user_units = yon_config_load(load_user_units_command,&user_units_size);
int config_size; int config_size;
config_str config_files = yon_config_load(get_config_files_command,&config_size); config_str config_files = yon_config_load(get_config_files_command,&config_size);
int timers_size; int timers_size;
config_str timers = yon_config_load(get_timers_command,&timers_size); config_str timers = yon_config_load(get_timers_command,&timers_size);
struct json_object *jsobject = json_tokener_parse(timers[0]); struct json_object *jsobject = json_tokener_parse(timers[0]);
int launched_size; int launched_size;
config_str launched = yon_config_load(load_launched_command,&launched_size); config_str launched = yon_config_load(load_launched_command,&launched_size);
@ -1243,47 +1366,101 @@ void* yon_interface_update(main_window *widgets){
yon_char_remove_last_symbol(launched[i],'\n'); yon_char_remove_last_symbol(launched[i],'\n');
} }
dictionary *dact = NULL; // dictionary *dact = NULL;
for_dictionaries(dact,dict){ // for_dictionaries(dact,dict){
enum YON_UNIT_TYPE type = yon_get_unit_type(((systemd_struct*)dact->data)->name); // enum YON_UNIT_TYPE type = yon_get_unit_type(((systemd_struct*)dact->data)->name);
struct system_services_data *data = malloc(sizeof(struct system_services_data)); // struct system_services_data *data = malloc(sizeof(struct system_services_data));
{ // {
data->widgets=widgets; // data->widgets=widgets;
data->SystemAutostart=((systemd_struct*)dact->data)->enable; // data->SystemAutostart=((systemd_struct*)dact->data)->enable;
data->SystemLaunched=((systemd_struct*)dact->data)->active; // data->SystemLaunched=((systemd_struct*)dact->data)->active;
data->Name=((systemd_struct*)dact->data)->name; // data->Name=((systemd_struct*)dact->data)->name;
data->Descr=((systemd_struct*)dact->data)->description; // data->Descr=((systemd_struct*)dact->data)->description;
data->Type = type; // data->Type = type;
data->Loaded=((systemd_struct*)dact->data)->load; // data->Loaded=((systemd_struct*)dact->data)->load;
data->Active=((systemd_struct*)dact->data)->active; // data->Active=((systemd_struct*)dact->data)->active;
data->State=((systemd_struct*)dact->data)->state; // data->State=((systemd_struct*)dact->data)->state;
} // }
g_idle_add((GSourceFunc)yon_system_set,data); // g_idle_add((GSourceFunc)yon_system_set,data);
// }
for (int i=0; i<system_size;i++){
GtkTreeIter iter;
if (system_services[i][strlen(system_services[i])-1]=='\n') system_services[i][strlen(system_services[i])-1] = '\0';
int size;
config_str parsed = yon_char_parse(system_services[i],&size,";");
char *name_temp = yon_char_replace(parsed[0],"\\","\18");
if (name_temp!=parsed[0]) free(parsed[0]);
parsed[0]=yon_char_replace(name_temp,"\18","\\\\");
if (name_temp!=parsed[0]) free(name_temp);
if (parsed){
int loaded = !strcmp(parsed[1],"loaded");
int active = !strcmp(parsed[2],"active");
enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]);
gtk_list_store_append(widgets->SystemList,&iter);
gtk_list_store_set(widgets->SystemList,&iter,3,loaded,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,1,11,_(parsed[3]),13,parsed[3],-1);
}
}
for (int i=0;i<system_units_size;i++){
yon_char_remove_last_symbol(system_units[i],'\n');
if (!yon_char_parsed_check_exist_begins_with(system_services,system_size,system_units[i])){
GtkTreeIter iter;
gtk_list_store_append(widgets->SystemList,&iter);
enum YON_UNIT_TYPE type = yon_get_unit_type(system_units[i]);
gtk_list_store_set(widgets->SystemList,&iter,0,0,1,0,2,0,3,0,4,0,5,system_units[i],6,"",7,type,8,0,9,0,10,0,11,_("disabled"),13,"disabled",-1);
}
} }
// for (int i=0; i<user_size;i++){
// if (user_services[i][strlen(user_services[i])-1]=='\n') user_services[i][strlen(user_services[i])-1] = '\0';
// int size;
// config_str parsed = yon_char_parse(user_services[i],&size,";");
// if (parsed){
// // int loaded = !system(user_check_enabled_command(parsed[0]));
// // int active = !system(user_check_active_command(parsed[0]));
// enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]);
// struct system_user_data *data = malloc(sizeof(struct system_user_data));
// {
// data->widgets=widgets;
// data->SystemAutostart=0;//loaded;
// data->SystemLaunched=0;//active;
// data->Name=yon_char_new(parsed[0]);
// data->Descr=yon_char_new(parsed[4]);
// data->Type = type;
// data->Loaded=strcmp(parsed[1],"loaded")?0:1;
// data->Active=strcmp(parsed[2],"active")?0:1;
// data->State=yon_char_new(_(parsed[3]));
// }
// g_idle_add((GSourceFunc)yon_user_set,data);
// }
// yon_char_parsed_free(parsed,size);
// }
for (int i=0; i<user_size;i++){ for (int i=0; i<user_size;i++){
GtkTreeIter iter;
if (user_services[i][strlen(user_services[i])-1]=='\n') user_services[i][strlen(user_services[i])-1] = '\0'; if (user_services[i][strlen(user_services[i])-1]=='\n') user_services[i][strlen(user_services[i])-1] = '\0';
int size; int size;
config_str parsed = yon_char_parse(user_services[i],&size,";"); config_str parsed = yon_char_parse(user_services[i],&size,";");
if (parsed){ if (parsed){
// int loaded = !system(user_check_enabled_command(parsed[0])); int loaded = !strcmp(parsed[1],"loaded");
// int active = !system(user_check_active_command(parsed[0])); int active = !strcmp(parsed[2],"active");
enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]); enum YON_UNIT_TYPE type = yon_get_unit_type(parsed[0]);
struct system_user_data *data = malloc(sizeof(struct system_user_data)); gtk_list_store_append(widgets->UserList,&iter);
{ gtk_list_store_set(widgets->UserList,&iter,3,loaded,4,active,5,parsed[0],6,parsed[4],7,type,8,active,9,1,11,_(parsed[3]),13,parsed[3],-1);
data->widgets=widgets; }
data->SystemAutostart=0;//loaded;
data->SystemLaunched=0;//active; }
data->Name=yon_char_new(parsed[0]); for (int i=0;i<user_units_size;i++){
data->Descr=yon_char_new(parsed[4]); yon_char_remove_last_symbol(user_units[i],'\n');
data->Type = type; if (!yon_char_parsed_check_exist_begins_with(user_services,user_size,user_units[i])){
data->Loaded=strcmp(parsed[1],"loaded")?0:1; GtkTreeIter iter;
data->Active=strcmp(parsed[2],"active")?0:1; gtk_list_store_append(widgets->UserList,&iter);
data->State=yon_char_new(_(parsed[3])); enum YON_UNIT_TYPE type = yon_get_unit_type(user_units[i]);
} gtk_list_store_set(widgets->UserList,&iter,0,0,1,0,2,0,3,0,4,0,5,user_units[i],6,"",7,type,8,0,9,0,10,0,11,_("disabled"),13,"disabled",-1);
g_idle_add((GSourceFunc)yon_user_set,data);
} }
yon_char_parsed_free(parsed,size);
} }
int descr_size; int descr_size;
@ -1326,7 +1503,7 @@ void* yon_interface_update(main_window *widgets){
g_idle_add((GSourceFunc)yon_system_config_set,data); g_idle_add((GSourceFunc)yon_system_config_set,data);
} }
} }
yon_sessions_update(widgets); g_idle_add((GSourceFunc)yon_sessions_update,widgets);
for (size_t i=0;i<json_object_array_length(jsobject);i++){ for (size_t i=0;i<json_object_array_length(jsobject);i++){
struct json_object *item_obj = json_object_array_get_idx(jsobject, i); struct json_object *item_obj = json_object_array_get_idx(jsobject, i);
@ -1556,7 +1733,7 @@ gboolean on_tooltip_show(GtkWidget*, gint x, gint y, gboolean, GtkTooltip* toolt
if (name[0]=='-'){ if (name[0]=='-'){
name_target = yon_char_append("-- ",name_target); name_target = yon_char_append("-- ",name_target);
} }
config_str target = yon_config_load(get_activate_deactivate_times(name_target), &size); config_str target = yon_config_load(yon_debug_output("%s\n",get_activate_deactivate_times(name_target)), &size);
free(name_target); free(name_target);
if (target){ if (target){
free(yon_char_divide_search(target[0], "=", -1)); free(yon_char_divide_search(target[0], "=", -1));
@ -1578,7 +1755,7 @@ gboolean on_tooltip_show(GtkWidget*, gint x, gint y, gboolean, GtkTooltip* toolt
if (target){ if (target){
gchar *formatted_activa = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[1])&&strcmp(target[1],"0")?target[1]:g_strdup(NULL_LABEL); gchar *formatted_activa = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[1])&&strcmp(target[1],"0")?target[1]:g_strdup(NULL_LABEL);
gchar *formatted_deactiva = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[2])&&strcmp(target[2],"0")?target[2]:g_strdup(NULL_LABEL); gchar *formatted_deactiva = g_strdup(NULL_LABEL);//!yon_char_is_empty(target[2])&&strcmp(target[2],"0")?target[2]:g_strdup(NULL_LABEL);
if (strcmp(target[1],"0")){ if (!yon_char_is_empty(target[1])&&strcmp(target[1],"0")){
int activated_size; int activated_size;
config_str activated_parsed = yon_char_parse(target[1],&activated_size," "); config_str activated_parsed = yon_char_parse(target[1],&activated_size," ");
int date_size; int date_size;
@ -1587,16 +1764,16 @@ gboolean on_tooltip_show(GtkWidget*, gint x, gint y, gboolean, GtkTooltip* toolt
char *temp = date_parsed[0]; char *temp = date_parsed[0];
date_parsed[0]=date_parsed[2]; date_parsed[0]=date_parsed[2];
date_parsed[2]=temp; date_parsed[2]=temp;
formatted_deactiva = yon_char_unite(date_parsed?yon_char_parsed_to_string(date_parsed,date_size,"."):""," ",activated_parsed[2],NULL); formatted_activa = yon_char_unite(date_parsed?yon_char_parsed_to_string(date_parsed,date_size,"."):""," ",activated_parsed[2],NULL);
if (date_size) yon_char_parsed_free(date_parsed,date_size); if (date_size) yon_char_parsed_free(date_parsed,date_size);
} }
if (activated_size) yon_char_parsed_free(activated_parsed,activated_size); if (activated_size) yon_char_parsed_free(activated_parsed,activated_size);
} }
if (strcmp(target[2],"0")){ if (!yon_char_is_empty(target[2])&&strcmp(target[2],"0")){
int deactivated_size; int deactivated_size;
config_str deactivated_parsed = yon_char_parse(target[2],&deactivated_size," "); config_str deactivated_parsed = yon_char_parse(target[2],&deactivated_size," ");
int date_size; int date_size;
config_str date_parsed = yon_char_parse(deactivated_parsed[0],&date_size,"-"); config_str date_parsed = yon_char_parse(deactivated_parsed[1],&date_size,"-");
if (date_size>=2){ if (date_size>=2){
char *temp = date_parsed[0]; char *temp = date_parsed[0];
date_parsed[0]=date_parsed[2]; date_parsed[0]=date_parsed[2];
@ -1680,7 +1857,9 @@ void yon_main_window_complete(main_window *widgets){
widgets->SystemEditButton=yon_gtk_builder_get_widget(builder,"SystemEditButton"); widgets->SystemEditButton=yon_gtk_builder_get_widget(builder,"SystemEditButton");
widgets->SystemPropertiesButton=yon_gtk_builder_get_widget(builder,"SystemPropertiesButton"); widgets->SystemPropertiesButton=yon_gtk_builder_get_widget(builder,"SystemPropertiesButton");
widgets->SystemFilter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder,"SystemFilter")); widgets->SystemFilter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder,"SystemFilter"));
widgets->SystemSort = GTK_TREE_MODEL_SORT(gtk_builder_get_object(builder,"SystemSort"));
widgets->UserFilter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder,"UserFilter")); widgets->UserFilter = GTK_TREE_MODEL_FILTER(gtk_builder_get_object(builder,"UserFilter"));
widgets->UserSort = GTK_TREE_MODEL_SORT(gtk_builder_get_object(builder,"UserSort"));
widgets->SystemStatusButton=yon_gtk_builder_get_widget(builder,"SystemStatusButton"); widgets->SystemStatusButton=yon_gtk_builder_get_widget(builder,"SystemStatusButton");
widgets->ConfigAutostartCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ConfigAutostartCell")); widgets->ConfigAutostartCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ConfigAutostartCell"));
widgets->ConfigAutostopCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ConfigAutostopCell")); widgets->ConfigAutostopCell = GTK_CELL_RENDERER(gtk_builder_get_object(builder,"ConfigAutostopCell"));
@ -1727,19 +1906,24 @@ void yon_main_window_complete(main_window *widgets){
PROPERTIES_LABEL,properties_icon_path,on_user_status_clicked,widgets, PROPERTIES_LABEL,properties_icon_path,on_user_status_clicked,widgets,
NULL); NULL);
widgets->ConfigUpdateButton=yon_gtk_builder_get_widget(builder,"ConfigUpdateButton");
widgets->ConfigEditButton=yon_gtk_builder_get_widget(builder,"ConfigEditButton"); widgets->ConfigEditButton=yon_gtk_builder_get_widget(builder,"ConfigEditButton");
widgets->ConfigMainTree=yon_gtk_builder_get_widget(builder,"ConfigMainTree"); widgets->ConfigMainTree=yon_gtk_builder_get_widget(builder,"ConfigMainTree");
widgets->SessionRestartButton=yon_gtk_builder_get_widget(builder,"SessionRestartButton"); widgets->SessionRestartButton=yon_gtk_builder_get_widget(builder,"SessionRestartButton");
widgets->SessionMainTree=yon_gtk_builder_get_widget(builder,"SessionMainTree"); widgets->SessionMainTree=yon_gtk_builder_get_widget(builder,"SessionMainTree");
widgets->SessionSwitchButton=yon_gtk_builder_get_widget(builder,"SessionSwitchButton");
widgets->SessionStartButton=yon_gtk_builder_get_widget(builder,"SessionStartButton"); widgets->SessionStartButton=yon_gtk_builder_get_widget(builder,"SessionStartButton");
widgets->SessionStopButton=yon_gtk_builder_get_widget(builder,"SessionStopButton"); widgets->SessionStopButton=yon_gtk_builder_get_widget(builder,"SessionStopButton");
widgets->SessionBlockButton=yon_gtk_builder_get_widget(builder,"SessionBlockButton"); widgets->SessionBlockButton=yon_gtk_builder_get_widget(builder,"SessionBlockButton");
widgets->SessionMenu = yon_rmb_menu_setup(widgets->SessionMainTree,NULL,NULL, widgets->SessionMenu = yon_rmb_menu_setup(widgets->SessionMainTree,NULL,NULL,
ACTIVATE_SESSION_LABEL,play_icon_path,G_CALLBACK(on_session_activate),widgets, UPDATE_LABEL,update_icon_path,G_CALLBACK(on_interface_update),widgets,
END_SESSION_LABEL,stop_icon_path,G_CALLBACK(on_session_end),widgets, ACTIVATE_SESSION_LABEL,switch_icon_path,G_CALLBACK(on_session_activate),widgets,
BLOCK_SESSION_LABEL,block_icon_path,G_CALLBACK(on_session_block),widgets, BLOCK_SESSION_LABEL,block_icon_path,G_CALLBACK(on_session_block),widgets,
UNLOCK_SESSION_LABEL,unlock_icon_path,G_CALLBACK(on_session_unlock),widgets,
END_SESSION_LABEL,end_icon_path,G_CALLBACK(on_session_end),widgets,
NULL); NULL);
gtk_style_context_add_class(gtk_widget_get_style_context(((GtkWidget*)widgets->SessionMenu->buttons->first->data)),"separatorBottom");
{ {
GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->SystemMenu->menu)); GList *list = gtk_container_get_children(GTK_CONTAINER(widgets->SystemMenu->menu));
gtk_style_context_add_class(gtk_widget_get_style_context(g_list_nth_data(list,1)),"separatorTop"); gtk_style_context_add_class(gtk_widget_get_style_context(g_list_nth_data(list,1)),"separatorTop");
@ -1756,6 +1940,7 @@ void yon_main_window_complete(main_window *widgets){
widgets->SystemDescriptionLabel=yon_gtk_builder_get_widget(builder,"SystemDescriptionLabel"); widgets->SystemDescriptionLabel=yon_gtk_builder_get_widget(builder,"SystemDescriptionLabel");
} }
widgets->TimersMainTree=yon_gtk_builder_get_widget(builder,"TimersMainTree"); widgets->TimersMainTree=yon_gtk_builder_get_widget(builder,"TimersMainTree");
widgets->TimersUpdateButton=yon_gtk_builder_get_widget(builder,"TimersUpdateButton");
GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->SystemUnitsTree)); GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(widgets->SystemUnitsTree));
yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->SystemUnitsTree)); yon_gtk_tree_view_minimal_fixed_size_set_full(GTK_TREE_VIEW(widgets->SystemUnitsTree));
@ -1789,9 +1974,11 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->UserUnloadedShowCheck),"toggled",G_CALLBACK(on_filter_changed),widgets); g_signal_connect(G_OBJECT(widgets->UserUnloadedShowCheck),"toggled",G_CALLBACK(on_filter_changed),widgets);
g_signal_connect(G_OBJECT(widgets->ConfigEditButton),"clicked",G_CALLBACK(on_config_edit_clicked),widgets); g_signal_connect(G_OBJECT(widgets->ConfigEditButton),"clicked",G_CALLBACK(on_config_edit_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->ConfigUpdateButton),"clicked",G_CALLBACK(on_interface_update),widgets);
g_signal_connect(G_OBJECT(widgets->SessionRestartButton),"clicked",G_CALLBACK(on_interface_update),widgets); g_signal_connect(G_OBJECT(widgets->SessionRestartButton),"clicked",G_CALLBACK(on_interface_update),widgets);
g_signal_connect(G_OBJECT(widgets->SessionStartButton),"clicked",G_CALLBACK(on_session_activate),widgets); g_signal_connect(G_OBJECT(widgets->SessionSwitchButton),"clicked",G_CALLBACK(on_session_activate),widgets);
g_signal_connect(G_OBJECT(widgets->SessionStartButton),"clicked",G_CALLBACK(on_session_unlock),widgets);
g_signal_connect(G_OBJECT(widgets->SessionStopButton),"clicked",G_CALLBACK(on_session_end),widgets); g_signal_connect(G_OBJECT(widgets->SessionStopButton),"clicked",G_CALLBACK(on_session_end),widgets);
g_signal_connect(G_OBJECT(widgets->SessionBlockButton),"clicked",G_CALLBACK(on_session_block),widgets); g_signal_connect(G_OBJECT(widgets->SessionBlockButton),"clicked",G_CALLBACK(on_session_block),widgets);
g_signal_connect(G_OBJECT(widgets->SessionMainTree),"cursor-changed",G_CALLBACK(on_sessions_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->SessionMainTree),"cursor-changed",G_CALLBACK(on_sessions_selection_changed),widgets);
@ -1815,7 +2002,12 @@ 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->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->UserConfigAutostopCell),"toggled",G_CALLBACK(on_config_autostop_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->UserConfigBlockCell),"toggled",G_CALLBACK(on_config_block_clicked),widgets); g_signal_connect(G_OBJECT(widgets->UserConfigBlockCell),"toggled",G_CALLBACK(on_config_block_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->TimersUpdateButton),"clicked",G_CALLBACK(on_interface_update),widgets);
g_signal_connect(G_OBJECT(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->SystemUpperTree),2)),"clicked",G_CALLBACK(on_sort_activate),widgets);
g_signal_connect(G_OBJECT(gtk_tree_view_get_column(GTK_TREE_VIEW(widgets->UsersUpperTree),2)),"clicked",G_CALLBACK(on_sort_activate),widgets);
if (getuid()==0){ if (getuid()==0){
gtk_widget_set_sensitive(widgets->UserServiceUpdateButton,0); gtk_widget_set_sensitive(widgets->UserServiceUpdateButton,0);
gtk_widget_set_sensitive(widgets->UserPrevButton,0); gtk_widget_set_sensitive(widgets->UserPrevButton,0);
@ -1883,6 +2075,11 @@ void yon_main_window_complete(main_window *widgets){
yon_root_button_setup((template_main_window*)widgets,main_config.launch_arguments,main_config.launch_size); 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->UserFilter,(GtkTreeModelFilterVisibleFunc)yon_filter,widgets,NULL);
gtk_tree_model_filter_set_visible_func(widgets->SystemFilter,(GtkTreeModelFilterVisibleFunc)yon_filter,widgets,NULL); gtk_tree_model_filter_set_visible_func(widgets->SystemFilter,(GtkTreeModelFilterVisibleFunc)yon_filter,widgets,NULL);
for (int i=0;i<5;i++){
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->SystemSort),i,(GtkTreeIterCompareFunc)sort_bool,GINT_TO_POINTER(i),NULL);
}
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->SystemSort),5,(GtkTreeIterCompareFunc)sort_string,GINT_TO_POINTER(13),NULL);
gtk_tree_sortable_set_sort_func(GTK_TREE_SORTABLE(widgets->SystemSort),6,(GtkTreeIterCompareFunc)sort_string,GINT_TO_POINTER(6),NULL);
gtk_tree_view_set_search_column(GTK_TREE_VIEW(widgets->UserUnitsTree),5); gtk_tree_view_set_search_column(GTK_TREE_VIEW(widgets->UserUnitsTree),5);
yon_load_proceed(YON_CONFIG_LOCAL); yon_load_proceed(YON_CONFIG_LOCAL);
yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE); yon_ubl_status_box_render(LIST_LOAD_LABEL,BACKGROUND_IMAGE_SUCCESS_TYPE);

@ -39,6 +39,8 @@
#define systemd_config_path "resource:///com/ublinux/csv/systemd_conf.csv" #define systemd_config_path "resource:///com/ublinux/csv/systemd_conf.csv"
#define load_services_command "systemctl list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'" #define load_services_command "systemctl list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'"
#define load_system_units_command "systemctl list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)(.*)/\\1/'"
#define load_user_units_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-unit-files --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)(.*)/\\1;\\2;\\3;/'",NULL)
#define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'",NULL) #define load_user_services_command yon_char_unite("systemctl --user --machine=",yon_ubl_root_user_get(),"@ list-units --no-pager --all --plain --no-legend |sed -E 's/(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(\\S+)\\s+(.*)/\\1;\\2;\\3;\\4;\\5/'",NULL)
#define load_system_services_command "systemctl --system list-units --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'" #define load_system_services_command "systemctl --system list-units --no-pager --all |grep -E \"^ \" |grep -v \"UNIT\" |sed -e 's/ */;/g' -e 's/^;//g' |cut -f1 -d';'"
#define load_enabled_command "systemctl list-unit-files --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:" #define load_enabled_command "systemctl list-unit-files --no-pager --state=enabled --all |sed -e 's/ */:/g' -e 's/ *: */:/g'|cut -f1 -d:"
@ -83,7 +85,7 @@
#define list_of_sockets_command "systemctl list-sockets --all --no-pager| sed -e 's/ */;/g'" #define list_of_sockets_command "systemctl list-sockets --all --no-pager| sed -e 's/ */;/g'"
#define list_of_timers_command "systemctl list-timers --all --no-pager| sed -e 's/ */;/g'" #define list_of_timers_command "systemctl list-timers --all --no-pager| sed -e 's/ */;/g'"
#define list_of_session_command "while IFS=\" \" read -r GET_SESSION GET_UID GET_USER GET_SEAT GET_TTY; do echo -e \"${GET_SESSION} $(loginctl session-status ${GET_SESSION} --no-page | sed -Enr \"s/^\\s*State: (.*)$/\1/p\") ${GET_UID} ${GET_USER} ${GET_SEAT} ${GET_TTY}\"; done < <(loginctl list-sessions --no-legend)" #define list_of_session_command "while IFS=\" \" read -r GET_SESSION GET_UID GET_USER GET_SEAT GET_TTY; do echo -e \"${GET_SESSION} $(loginctl session-status ${GET_SESSION} --no-page | sed -Enr \"s/^\\s*State: (.*)$/\1/p\") ${GET_UID} ${GET_USER} ${GET_SEAT} ${GET_TTY}\"; done < <(loginctl list-sessions --no-legend)"
#define get_activate_deactivate_times(target) yon_char_append("systemctl show --timestamp=utc -p Names -p ActiveEnterTimestamp -p InactiveEnterTimestampMonotonic ",target) #define get_activate_deactivate_times(target) yon_char_append("systemctl show --timestamp=utc -p Names -p ActiveEnterTimestamp -p InactiveEnterTimestamp ",target)
#define config_get_command(target) yon_char_append("cat ",target) #define config_get_command(target) yon_char_append("cat ",target)
@ -102,7 +104,10 @@
#define play_icon_path "com.ublinux.ubl-settings-services.play-symbolic" #define play_icon_path "com.ublinux.ubl-settings-services.play-symbolic"
#define stop_icon_path "com.ublinux.ubl-settings-services.stop-symbolic" #define stop_icon_path "com.ublinux.ubl-settings-services.stop-symbolic"
#define block_icon_path "com.ublinux.ubl-settings-services.cancel-symbolic" #define block_icon_path "com.ublinux.libublsettingsui-gtk3.changes-prevent-symbolic"
#define unlock_icon_path "com.ublinux.libublsettingsui-gtk3.changes-allow-symbolic"
#define end_icon_path "com.ublinux.libublsettingsui-gtk3.move-away-symbolic"
#define switch_icon_path "com.ublinux.libublsettingsui-gtk3.move-in-symbolic"
#define start_icon_path "com.ublinux.ubl-settings-services.launch-symbolic" #define start_icon_path "com.ublinux.ubl-settings-services.launch-symbolic"
#define update_icon_path "com.ublinux.ubl-settings-services.sync-symbolic" #define update_icon_path "com.ublinux.ubl-settings-services.sync-symbolic"
#define launch_icon_path "com.ublinux.ubl-settings-services.check-symbolic" #define launch_icon_path "com.ublinux.ubl-settings-services.check-symbolic"
@ -222,16 +227,19 @@ typedef struct {
GtkWidget *UserDescriptionLabel; GtkWidget *UserDescriptionLabel;
GtkWidget *ConfigEditButton; GtkWidget *ConfigEditButton;
GtkWidget *ConfigUpdateButton;
GtkWidget *ConfigMainTree; GtkWidget *ConfigMainTree;
GtkWidget *SessionRestartButton; GtkWidget *SessionRestartButton;
GtkWidget *SessionMainTree; GtkWidget *SessionMainTree;
GtkWidget *SessionSwitchButton;
GtkWidget *SessionStartButton; GtkWidget *SessionStartButton;
GtkWidget *SessionStopButton; GtkWidget *SessionStopButton;
GtkWidget *SessionBlockButton; GtkWidget *SessionBlockButton;
rmb_menu_window *SessionMenu; rmb_menu_window *SessionMenu;
GtkWidget *TimersMainTree; GtkWidget *TimersMainTree;
GtkWidget *TimersUpdateButton;
GtkWidget *MainNotebook; GtkWidget *MainNotebook;
GtkWidget *SystemServicesStatusMenuItem; GtkWidget *SystemServicesStatusMenuItem;
@ -255,7 +263,9 @@ typedef struct {
GtkWidget *DeactivateLabel; GtkWidget *DeactivateLabel;
GtkTreeModelFilter *SystemFilter; GtkTreeModelFilter *SystemFilter;
GtkTreeModelSort *SystemSort;
GtkTreeModelFilter *UserFilter; GtkTreeModelFilter *UserFilter;
GtkTreeModelSort *UserSort;
GtkCellRenderer *ConfigAutostartCell; GtkCellRenderer *ConfigAutostartCell;
GtkCellRenderer *ConfigAutostopCell; GtkCellRenderer *ConfigAutostopCell;
@ -386,7 +396,9 @@ void on_service_restart_confirmed(GtkWidget *self,char *service_name);
void on_system_system_restart_clicked(GtkWidget *self, main_window *widgets); void on_system_system_restart_clicked(GtkWidget *self, main_window *widgets);
void yon_sessions_update(main_window *widgets); gboolean yon_sessions_update(main_window *widgets);
void on_session_unlock(GtkWidget *self, main_window *widgets);
void on_session_activate(); void on_session_activate();
@ -531,4 +543,7 @@ gboolean yon_user_set(struct system_user_data *data);
gboolean yon_system_set(struct system_services_data *data); gboolean yon_system_set(struct system_services_data *data);
gboolean yon_interface_list_models_connect(main_window *widgets); gboolean yon_interface_list_models_connect(main_window *widgets);
gboolean yon_interface_list_models_disconnect(main_window *widgets); gboolean yon_interface_list_models_disconnect(main_window *widgets);
void on_sort_activate(GtkTreeViewColumn *self, main_window *widgets);
gboolean sort_bool(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,gpointer col);
gboolean sort_string(GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b,gpointer col);
#endif #endif

@ -50,9 +50,10 @@
#define SHOW_LOG_LABEL _("Show log") #define SHOW_LOG_LABEL _("Show log")
#define SHOW_SOURCE_LABEL _("Show source") #define SHOW_SOURCE_LABEL _("Show source")
#define PROPERTIES_LABEL _("Properties") #define PROPERTIES_LABEL _("Properties")
#define ACTIVATE_SESSION_LABEL _("Activate session") #define ACTIVATE_SESSION_LABEL _("Switch to session")
#define END_SESSION_LABEL _("Terminate session") #define END_SESSION_LABEL _("Terminate session")
#define BLOCK_SESSION_LABEL _("Block session") #define BLOCK_SESSION_LABEL _("Lock session")
#define UNLOCK_SESSION_LABEL _("Unlock session")
#define SOURCE_UNFOUND_LABEL _("Service source were not loaded") #define SOURCE_UNFOUND_LABEL _("Service source were not loaded")
#define SERVICE_START_FAILED_LABEL _("Failed to launch service") #define SERVICE_START_FAILED_LABEL _("Failed to launch service")
@ -69,6 +70,23 @@
#define RELOAD_SERVICE_WARMING_LABEL(target) yon_char_unite(_("Are you sure want to reload "),target,"?\n",_("The system may become unstable."),NULL) #define RELOAD_SERVICE_WARMING_LABEL(target) yon_char_unite(_("Are you sure want to reload "),target,"?\n",_("The system may become unstable."),NULL)
#define SERVICE_ENABLE_WARNING_LABEL(target) yon_char_unite(_("Are you sure want to enable "),target,"?\n",_("The system may become unstable."),NULL) #define SERVICE_ENABLE_WARNING_LABEL(target) yon_char_unite(_("Are you sure want to enable "),target,"?\n",_("The system may become unstable."),NULL)
#define SERVICE_DISABLE_WARNING_LABEL(target) yon_char_unite(_("Are you sure want to disable "),target,"?\n",_("The system may become unstable."),NULL) #define SERVICE_DISABLE_WARNING_LABEL(target) yon_char_unite(_("Are you sure want to disable "),target,"?\n",_("The system may become unstable."),NULL)
#define RELOAD_SYSTEM_SETTINGS_WARNING_LABEL yon_char_unite(_("Are you sure want to reload system units settings?"),"\n",_("The system may become unstable."),NULL)
#define RELOAD_USER_SETTINGS_WARNING_LABEL yon_char_unite(_("Are you sure want to reload user units settings?"),"\n",_("The system may become unstable."),NULL)
#define SESSION_ACTIVATE_TOOLTIP_LABEL(target) yon_char_unite(_("Are you sure you want to switch on session")," <b>ID-",target,"</b>?",NULL)
#define SESSION_END_TOOLTIP_LABEL(target) yon_char_unite("<b>",_("Attention!"),"</b> ",_("You are about to")," <b>",_("end your session")," ID-",target,"</b>. ",_("If this is your active session, you will be taken to the login screen. Make sure to save all files before performing this operation."),NULL)
#define SESSION_BLOCK_TOOLTIP_LABEL(target) yon_char_unite(_("Are you sure you want to block session")," <b>ID-",target,"</b>?",NULL)
#define SESSION_UNLOCK_TOOLTIP_LABEL(target) yon_char_unite(_("Are you sure you want to unlock session")," <b>ID-",target,"</b>?",NULL)
#define SERVICE_START_TITLE_LABEL _("Service start")
#define SERVICE_STOP_TITLE_LABEL _("Service stop")
#define SERVICE_AUTOSTART_TITLE_LABEL _("Service enabling")
#define SERVICE_AUTOSTOP_TITLE_LABEL _("Service disabling")
#define SESSION_SWITCH_TITLE_LABEL(target) yon_char_unite(_("Switching to session")," ID-",target,NULL)
#define SESSION_LOCK_TITLE_LABEL(target) yon_char_unite(_("Lock session")," ID-",target,NULL)
#define SESSION_UNLOCK_TITLE_LABEL(target) yon_char_unite(_("Unlock session")," ID-",target,NULL)
#define SESSION_TERMINATE_TITLE_LABEL(target) yon_char_unite(_("Terminate session")," ID-",target,NULL)
#define DAYS_LABEL _("Days") #define DAYS_LABEL _("Days")
#define HOURS_LABEL _("Hours") #define HOURS_LABEL _("Hours")
#define MINUTES_LABEL _("Minutes") #define MINUTES_LABEL _("Minutes")
@ -94,12 +112,12 @@
#define RELAUNCH_SYSTEMCTL_LABEL _("Reload settings") #define RELAUNCH_SYSTEMCTL_LABEL _("Reload settings")
#define REEXEC_SYSTEMCTL_LABEL _("Reexec systemd") #define REEXEC_SYSTEMCTL_LABEL _("Reexec systemd")
#define SHOW_SERVICE_INFO_LABEL _("Show service information") #define SHOW_SERVICE_INFO_LABEL _("Service information")
#define RELAUNCH_SERVICE_LABEL _("Relaunch with new configuration") #define RELAUNCH_SERVICE_LABEL _("Relaunch with new configuration")
#define SHOW_SERVICE_LOG_LABEL _("Show service log") #define SHOW_SERVICE_LOG_LABEL _("Service log")
#define SHOW_SERVICE_SOURCE_LABEL _("Show service source file") #define SHOW_SERVICE_SOURCE_LABEL _("Service source file")
#define SHOW_SERVICE_PROPERTIES_LABEL _("Show service properties") #define SHOW_SERVICE_PROPERTIES_LABEL _("Service properties")
#define SHOW_LABEL _("Show...") #define SHOW_LABEL _("Additional information")
#define EDIT_CONFIG_LABEL _("Edit configuration file") #define EDIT_CONFIG_LABEL _("Edit configuration file")
@ -127,6 +145,7 @@
#define PASSED_LABEL _("Passed") #define PASSED_LABEL _("Passed")
#define ACTIVATES_LABEL _("Activates") #define ACTIVATES_LABEL _("Activates")
#define STATE_DISABLED_LABEL _("disabled")
#define STATE_ACTIVE_LABEL _("active") #define STATE_ACTIVE_LABEL _("active")
#define STATE_DEAD_LABEL _("dead") #define STATE_DEAD_LABEL _("dead")
#define STATE_WAITING_LABEL _("waiting") #define STATE_WAITING_LABEL _("waiting")
@ -148,6 +167,7 @@
#define SYSTEMD_RELAUNCH_SUCCESS_LABEL _("Systemd has been relaunched") #define SYSTEMD_RELAUNCH_SUCCESS_LABEL _("Systemd has been relaunched")
#define SERVICE_RELOAD_SUCCESS_LABEL _("Service has been successfully restarted") #define SERVICE_RELOAD_SUCCESS_LABEL _("Service has been successfully restarted")
#define SERVICE_START_SUCCESS_LABEL _("Service has been successfully launched")
#define SAVE_LABEL _("Save") #define SAVE_LABEL _("Save")
#define NULL_LABEL _("Null") #define NULL_LABEL _("Null")

@ -19,7 +19,7 @@
<column type="gint"/> <column type="gint"/>
<!-- column-name Status --> <!-- column-name Status -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name User Id --> <!-- column-name User -->
<column type="gint"/> <column type="gint"/>
<!-- column-name Username --> <!-- column-name Username -->
<column type="gchararray"/> <column type="gchararray"/>
@ -59,11 +59,16 @@
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Tooltip --> <!-- column-name Tooltip -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name UnitStateUnlocalised -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkTreeModelFilter" id="SystemFilter"> <object class="GtkTreeModelFilter" id="SystemFilter">
<property name="child-model">SystemList</property> <property name="child-model">SystemList</property>
</object> </object>
<object class="GtkTreeModelSort" id="SystemSort">
<property name="model">SystemFilter</property>
</object>
<object class="GtkListStore" id="TimersList"> <object class="GtkListStore" id="TimersList">
<columns> <columns>
<!-- column-name gchararray1 --> <!-- column-name gchararray1 -->
@ -356,11 +361,16 @@
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name Tooltip --> <!-- column-name Tooltip -->
<column type="gchararray"/> <column type="gchararray"/>
<!-- column-name UnitStateUnlocalised -->
<column type="gchararray"/>
</columns> </columns>
</object> </object>
<object class="GtkTreeModelFilter" id="UserFilter"> <object class="GtkTreeModelFilter" id="UserFilter">
<property name="child-model">UserList</property> <property name="child-model">UserList</property>
</object> </object>
<object class="GtkTreeModelSort" id="UserSort">
<property name="model">UserFilter</property>
</object>
<object class="GtkImage" id="image1"> <object class="GtkImage" id="image1">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -369,12 +379,12 @@
<object class="GtkImage" id="image10"> <object class="GtkImage" id="image10">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.stop-symbolic</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.move-away-symbolic</property>
</object> </object>
<object class="GtkImage" id="image11"> <object class="GtkImage" id="image11">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.play-symbolic</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.changes-allow-symbolic</property>
</object> </object>
<object class="GtkImage" id="image12"> <object class="GtkImage" id="image12">
<property name="visible">True</property> <property name="visible">True</property>
@ -411,6 +421,11 @@
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.properties-symbolic</property> <property name="icon-name">com.ublinux.ubl-settings-services.properties-symbolic</property>
</object> </object>
<object class="GtkImage" id="image19">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.sync-symbolic</property>
</object>
<object class="GtkImage" id="image2"> <object class="GtkImage" id="image2">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
@ -429,7 +444,17 @@
<object class="GtkImage" id="image22"> <object class="GtkImage" id="image22">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.sync-symbolic</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.sync-symbolic</property>
</object>
<object class="GtkImage" id="image23">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.sync-symbolic</property>
</object>
<object class="GtkImage" id="image24">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.libublsettingsui-gtk3.move-in-symbolic</property>
</object> </object>
<object class="GtkImage" id="image3"> <object class="GtkImage" id="image3">
<property name="visible">True</property> <property name="visible">True</property>
@ -464,7 +489,7 @@
<object class="GtkImage" id="image9"> <object class="GtkImage" id="image9">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.lock-symbolic</property> <property name="icon-name">com.ublinux.libublsettingsui-gtk3.changes-prevent-symbolic</property>
</object> </object>
<object class="GtkListStore" id="liststore1"/> <object class="GtkListStore" id="liststore1"/>
<object class="GtkListStore" id="liststore3"/> <object class="GtkListStore" id="liststore3"/>
@ -760,7 +785,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service information</property> <property name="tooltip-text" translatable="yes">Unit information</property>
<property name="image">image3</property> <property name="image">image3</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -778,7 +803,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service log</property> <property name="tooltip-text" translatable="yes">Unit log</property>
<property name="image">image4</property> <property name="image">image4</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -796,7 +821,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service source file</property> <property name="tooltip-text" translatable="yes">Unit source file</property>
<property name="image">image5</property> <property name="image">image5</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -814,7 +839,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service properties</property> <property name="tooltip-text" translatable="yes">Unit properties</property>
<property name="image">image7</property> <property name="image">image7</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -843,7 +868,7 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="focus-on-click">False</property> <property name="focus-on-click">False</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show...</property> <property name="tooltip-text" translatable="yes">Additional information</property>
<property name="popup">menu1</property> <property name="popup">menu1</property>
<child> <child>
<object class="GtkImage"> <object class="GtkImage">
@ -911,6 +936,7 @@
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="sizing">autosize</property> <property name="sizing">autosize</property>
<property name="title" translatable="yes">Service</property> <property name="title" translatable="yes">Service</property>
<property name="clickable">True</property>
</object> </object>
</child> </child>
</object> </object>
@ -941,6 +967,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Autostart</property> <property name="title" translatable="yes">Autostart</property>
<property name="clickable">True</property>
<property name="sort-column-id">0</property>
<child> <child>
<object class="GtkCellRendererToggle" id="ConfigAutostartCell"/> <object class="GtkCellRendererToggle" id="ConfigAutostartCell"/>
<attributes> <attributes>
@ -955,6 +983,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Autostop</property> <property name="title" translatable="yes">Autostop</property>
<property name="clickable">True</property>
<property name="sort-column-id">1</property>
<child> <child>
<object class="GtkCellRendererToggle" id="ConfigAutostopCell"/> <object class="GtkCellRendererToggle" id="ConfigAutostopCell"/>
<attributes> <attributes>
@ -969,6 +999,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Block</property> <property name="title" translatable="yes">Block</property>
<property name="clickable">True</property>
<property name="sort-column-id">2</property>
<child> <child>
<object class="GtkCellRendererToggle" id="ConfigBlockCell"/> <object class="GtkCellRendererToggle" id="ConfigBlockCell"/>
<attributes> <attributes>
@ -983,6 +1015,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Autostart</property> <property name="title" translatable="yes">Autostart</property>
<property name="clickable">True</property>
<property name="sort-column-id">3</property>
<child> <child>
<object class="GtkCellRendererToggle" id="SystemAutostartCell"/> <object class="GtkCellRendererToggle" id="SystemAutostartCell"/>
<attributes> <attributes>
@ -997,6 +1031,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Launched</property> <property name="title" translatable="yes">Launched</property>
<property name="clickable">True</property>
<property name="sort-column-id">4</property>
<child> <child>
<object class="GtkCellRendererToggle" id="SystemLaunchedCell"/> <object class="GtkCellRendererToggle" id="SystemLaunchedCell"/>
<attributes> <attributes>
@ -1011,6 +1047,8 @@
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Unit</property> <property name="title" translatable="yes">Unit</property>
<property name="clickable">True</property>
<property name="sort-column-id">5</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -1025,6 +1063,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes"> </property> <property name="title" translatable="yes"> </property>
<property name="clickable">True</property>
<property name="sort-column-id">6</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -1365,7 +1405,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service information</property> <property name="tooltip-text" translatable="yes">Unit information</property>
<property name="image">image15</property> <property name="image">image15</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -1383,7 +1423,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service log</property> <property name="tooltip-text" translatable="yes">Unit log</property>
<property name="image">image16</property> <property name="image">image16</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -1401,7 +1441,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service source file</property> <property name="tooltip-text" translatable="yes">Unit source file</property>
<property name="image">image17</property> <property name="image">image17</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -1419,7 +1459,7 @@
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show service properties</property> <property name="tooltip-text" translatable="yes">Unit properties</property>
<property name="image">image18</property> <property name="image">image18</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
@ -1448,7 +1488,7 @@
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="focus-on-click">False</property> <property name="focus-on-click">False</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Show...</property> <property name="tooltip-text" translatable="yes">Additional information</property>
<property name="popup">menu2</property> <property name="popup">menu2</property>
<child> <child>
<object class="GtkImage"> <object class="GtkImage">
@ -1512,6 +1552,7 @@
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="title" translatable="yes">Service</property> <property name="title" translatable="yes">Service</property>
<property name="clickable">True</property>
</object> </object>
</child> </child>
</object> </object>
@ -1542,6 +1583,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Autostart</property> <property name="title" translatable="yes">Autostart</property>
<property name="clickable">True</property>
<property name="sort-column-id">0</property>
<child> <child>
<object class="GtkCellRendererToggle" id="UserConfigAutostartCell"/> <object class="GtkCellRendererToggle" id="UserConfigAutostartCell"/>
<attributes> <attributes>
@ -1556,6 +1599,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Autostop</property> <property name="title" translatable="yes">Autostop</property>
<property name="clickable">True</property>
<property name="sort-column-id">1</property>
<child> <child>
<object class="GtkCellRendererToggle" id="UserConfigAutostopCell"/> <object class="GtkCellRendererToggle" id="UserConfigAutostopCell"/>
<attributes> <attributes>
@ -1570,6 +1615,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Block</property> <property name="title" translatable="yes">Block</property>
<property name="clickable">True</property>
<property name="sort-column-id">2</property>
<child> <child>
<object class="GtkCellRendererToggle" id="UserConfigBlockCell"/> <object class="GtkCellRendererToggle" id="UserConfigBlockCell"/>
<attributes> <attributes>
@ -1584,6 +1631,7 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Autostart</property> <property name="title" translatable="yes">Autostart</property>
<property name="clickable">True</property>
<child> <child>
<object class="GtkCellRendererToggle" id="UserSystemAutostartCell"/> <object class="GtkCellRendererToggle" id="UserSystemAutostartCell"/>
<attributes> <attributes>
@ -1598,6 +1646,8 @@
<property name="sizing">fixed</property> <property name="sizing">fixed</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Launched</property> <property name="title" translatable="yes">Launched</property>
<property name="clickable">True</property>
<property name="sort-column-id">4</property>
<child> <child>
<object class="GtkCellRendererToggle" id="UserSystemLaunchedCell"/> <object class="GtkCellRendererToggle" id="UserSystemLaunchedCell"/>
<attributes> <attributes>
@ -1612,6 +1662,8 @@
<property name="fixed-width">10</property> <property name="fixed-width">10</property>
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Unit</property> <property name="title" translatable="yes">Unit</property>
<property name="clickable">True</property>
<property name="sort-column-id">5</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -1626,6 +1678,8 @@
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes"> </property> <property name="title" translatable="yes"> </property>
<property name="expand">True</property> <property name="expand">True</property>
<property name="clickable">True</property>
<property name="sort-column-id">6</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
<attributes> <attributes>
@ -1782,6 +1836,24 @@
<property name="visible">True</property> <property name="visible">True</property>
<property name="can-focus">False</property> <property name="can-focus">False</property>
<property name="orientation">vertical</property> <property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="ConfigUpdateButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update</property>
<property name="image">image23</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child> <child>
<object class="GtkButton" id="ConfigEditButton"> <object class="GtkButton" id="ConfigEditButton">
<property name="visible">True</property> <property name="visible">True</property>
@ -1796,7 +1868,7 @@
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>
@ -1943,13 +2015,13 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="SessionStartButton"> <object class="GtkButton" id="SessionSwitchButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Activate session</property> <property name="tooltip-text" translatable="yes">Switch to session</property>
<property name="image">image11</property> <property name="image">image24</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
</style> </style>
@ -1961,13 +2033,13 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="SessionStopButton"> <object class="GtkButton" id="SessionBlockButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Terminate session</property> <property name="tooltip-text" translatable="yes">Lock session</property>
<property name="image">image10</property> <property name="image">image9</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
</style> </style>
@ -1979,13 +2051,13 @@
</packing> </packing>
</child> </child>
<child> <child>
<object class="GtkButton" id="SessionBlockButton"> <object class="GtkButton" id="SessionStartButton">
<property name="visible">True</property> <property name="visible">True</property>
<property name="sensitive">False</property> <property name="sensitive">False</property>
<property name="can-focus">True</property> <property name="can-focus">True</property>
<property name="receives-default">True</property> <property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Lock session</property> <property name="tooltip-text" translatable="yes">Unlock session</property>
<property name="image">image9</property> <property name="image">image11</property>
<style> <style>
<class name="thin"/> <class name="thin"/>
</style> </style>
@ -1996,6 +2068,24 @@
<property name="position">4</property> <property name="position">4</property>
</packing> </packing>
</child> </child>
<child>
<object class="GtkButton" id="SessionStopButton">
<property name="visible">True</property>
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Terminate session</property>
<property name="image">image10</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
</object> </object>
<packing> <packing>
<property name="expand">False</property> <property name="expand">False</property>
@ -2085,8 +2175,7 @@
<child> <child>
<object class="GtkTreeViewColumn"> <object class="GtkTreeViewColumn">
<property name="min-width">20</property> <property name="min-width">20</property>
<property name="title" translatable="yes">Seat ID | TTY</property> <property name="title" translatable="yes">Seat ID</property>
<property name="expand">True</property>
<property name="sort-column-id">4</property> <property name="sort-column-id">4</property>
<child> <child>
<object class="GtkCellRendererText"/> <object class="GtkCellRendererText"/>
@ -2096,6 +2185,19 @@
</child> </child>
</object> </object>
</child> </child>
<child>
<object class="GtkTreeViewColumn">
<property name="min-width">20</property>
<property name="title" translatable="yes">TTY</property>
<property name="expand">True</property>
<child>
<object class="GtkCellRendererText"/>
<attributes>
<attribute name="text">6</attribute>
</attributes>
</child>
</object>
</child>
</object> </object>
</child> </child>
</object> </object>
@ -2134,7 +2236,37 @@
<property name="margin-end">5</property> <property name="margin-end">5</property>
<property name="margin-top">5</property> <property name="margin-top">5</property>
<property name="margin-bottom">5</property> <property name="margin-bottom">5</property>
<property name="orientation">vertical</property> <property name="spacing">5</property>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="orientation">vertical</property>
<property name="spacing">5</property>
<child>
<object class="GtkButton" id="TimersUpdateButton">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Update</property>
<property name="image">image19</property>
<style>
<class name="thin"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child> <child>
<object class="GtkFrame"> <object class="GtkFrame">
<property name="visible">True</property> <property name="visible">True</property>
@ -2254,7 +2386,7 @@
<packing> <packing>
<property name="expand">True</property> <property name="expand">True</property>
<property name="fill">True</property> <property name="fill">True</property>
<property name="position">0</property> <property name="position">1</property>
</packing> </packing>
</child> </child>
</object> </object>

@ -77,7 +77,7 @@ msgstr ""
msgid "User services only" msgid "User services only"
msgstr "" msgstr ""
#: source/ubl-strings.h:19 source/ubl-strings.h:61 #: source/ubl-strings.h:19 source/ubl-strings.h:62
msgid "Saving..." msgid "Saving..."
msgstr "" msgstr ""
@ -137,7 +137,7 @@ msgstr ""
msgid "Service:" msgid "Service:"
msgstr "" msgstr ""
#: source/ubl-strings.h:37 source/ubl-strings.h:159 #: source/ubl-strings.h:37 source/ubl-strings.h:179
msgid "Description:" msgid "Description:"
msgstr "" msgstr ""
@ -170,351 +170,428 @@ msgid "Properties"
msgstr "" msgstr ""
#: source/ubl-strings.h:53 #: source/ubl-strings.h:53
msgid "Activate session" msgid "Switch to session"
msgstr "" msgstr ""
#: source/ubl-strings.h:54 #: source/ubl-strings.h:54
msgid "Terminate session" msgid "Terminate session"
msgstr "" msgstr ""
#: source/ubl-strings.h:55 #: source/ubl-strings.h:55 source/ubl-strings.h:139
msgid "Block session" msgid "Lock session"
msgstr "" msgstr ""
#: source/ubl-strings.h:57 #: source/ubl-strings.h:56
msgid "Service source were not loaded" msgid "Unlock session"
msgstr "" msgstr ""
#: source/ubl-strings.h:58 #: source/ubl-strings.h:58
msgid "Failed to launch service" msgid "Service source were not loaded"
msgstr "" msgstr ""
#: source/ubl-strings.h:59 #: source/ubl-strings.h:59
msgid "Failed to launch service"
msgstr ""
#: source/ubl-strings.h:60
msgid "Failed to stop service" msgid "Failed to stop service"
msgstr "" msgstr ""
#: source/ubl-strings.h:62 #: source/ubl-strings.h:63
msgid "Saved" msgid "Saved"
msgstr "" msgstr ""
#: source/ubl-strings.h:63 #: source/ubl-strings.h:64
msgid "Error has occured" msgid "Error has occured"
msgstr "" msgstr ""
#: source/ubl-strings.h:65 #: source/ubl-strings.h:66
msgid "Service were not stopped" msgid "Service were not stopped"
msgstr "" msgstr ""
#: source/ubl-strings.h:66 #: source/ubl-strings.h:67
msgid "Are you sure want to stop " msgid "Are you sure want to stop "
msgstr "" msgstr ""
#: source/ubl-strings.h:66 source/ubl-strings.h:67 source/ubl-strings.h:68 #: source/ubl-strings.h:67 source/ubl-strings.h:68 source/ubl-strings.h:69
#: source/ubl-strings.h:69 source/ubl-strings.h:70 source/ubl-strings.h:71 #: source/ubl-strings.h:70 source/ubl-strings.h:71 source/ubl-strings.h:72
#: source/ubl-strings.h:73 source/ubl-strings.h:74
msgid "The system may become unstable." msgid "The system may become unstable."
msgstr "" msgstr ""
#: source/ubl-strings.h:67 #: source/ubl-strings.h:68
msgid "Are you sure want to start " msgid "Are you sure want to start "
msgstr "" msgstr ""
#: source/ubl-strings.h:68 #: source/ubl-strings.h:69
msgid "Are you sure want to restart " msgid "Are you sure want to restart "
msgstr "" msgstr ""
#: source/ubl-strings.h:69 #: source/ubl-strings.h:70
msgid "Are you sure want to reload " msgid "Are you sure want to reload "
msgstr "" msgstr ""
#: source/ubl-strings.h:70 #: source/ubl-strings.h:71
msgid "Are you sure want to enable " msgid "Are you sure want to enable "
msgstr "" msgstr ""
#: source/ubl-strings.h:71 #: source/ubl-strings.h:72
msgid "Are you sure want to disable " msgid "Are you sure want to disable "
msgstr "" msgstr ""
#: source/ubl-strings.h:72 #: source/ubl-strings.h:73
msgid "Are you sure want to reload system units settings?"
msgstr ""
#: source/ubl-strings.h:74
msgid "Are you sure want to reload user units settings?"
msgstr ""
#: source/ubl-strings.h:75
msgid "Are you sure you want to switch on session"
msgstr ""
#: source/ubl-strings.h:76
msgid "Attention!"
msgstr ""
#: source/ubl-strings.h:76
msgid "You are about to"
msgstr ""
msgstr ""
#: source/ubl-strings.h:76
msgid "end your session"
msgstr ""
#: source/ubl-strings.h:76
msgid ""
"If this is your active session, you will be taken to the login screen. Make "
"sure to save all files before performing this operation."
msgstr ""
#: source/ubl-strings.h:77
msgid "Are you sure you want to block session"
msgstr ""
#: source/ubl-strings.h:78
msgid "Are you sure you want to unlock session"
msgstr ""
#: source/ubl-strings.h:80
msgid "Service start"
msgstr ""
#: source/ubl-strings.h:81
msgid "Service stop"
msgstr ""
#: source/ubl-strings.h:82
msgid "Service enabling"
msgstr ""
#: source/ubl-strings.h:83
msgid "Service disabling"
msgstr ""
#: source/ubl-strings.h:85
msgid "Switching to session"
msgstr ""
#: source/ubl-strings.h:86
msgid "Session locking"
msgstr ""
#: source/ubl-strings.h:87
msgid "Session unlocking"
msgstr ""
#: source/ubl-strings.h:88
msgid "Session termination"
msgstr ""
#: source/ubl-strings.h:90
msgid "Days" msgid "Days"
msgstr "" msgstr ""
#: source/ubl-strings.h:73 #: source/ubl-strings.h:91
msgid "Hours" msgid "Hours"
msgstr "" msgstr ""
#: source/ubl-strings.h:74 #: source/ubl-strings.h:92
msgid "Minutes" msgid "Minutes"
msgstr "" msgstr ""
#: source/ubl-strings.h:75 #: source/ubl-strings.h:93
msgid "Seconds" msgid "Seconds"
msgstr "" msgstr ""
#: source/ubl-strings.h:77 #: source/ubl-strings.h:95
msgid "Active" msgid "Active"
msgstr "" msgstr ""
#: source/ubl-strings.h:78 #: source/ubl-strings.h:96
msgid "Inactive" msgid "Inactive"
msgstr "" msgstr ""
#: source/ubl-strings.h:80 #: source/ubl-strings.h:98
msgid "System units" msgid "System units"
msgstr "" msgstr ""
#: source/ubl-strings.h:81 #: source/ubl-strings.h:99
msgid "User units" msgid "User units"
msgstr "" msgstr ""
#: source/ubl-strings.h:82 #: source/ubl-strings.h:100
msgid "Config files" msgid "Config files"
msgstr "" msgstr ""
#: source/ubl-strings.h:83 #: source/ubl-strings.h:101
msgid "Sessions" msgid "Sessions"
msgstr "" msgstr ""
#: source/ubl-strings.h:84 #: source/ubl-strings.h:102
msgid "Timers" msgid "Timers"
msgstr "" msgstr ""
#: source/ubl-strings.h:86 #: source/ubl-strings.h:104
msgid "System services status" msgid "System services status"
msgstr "" msgstr ""
#: source/ubl-strings.h:87 #: source/ubl-strings.h:105
msgid "User services status" msgid "User services status"
msgstr "" msgstr ""
#: source/ubl-strings.h:88 #: source/ubl-strings.h:106
msgid "Installed unit files" msgid "Installed unit files"
msgstr "" msgstr ""
#: source/ubl-strings.h:89 #: source/ubl-strings.h:107
msgid "Units and status list" msgid "Units and status list"
msgstr "" msgstr ""
#: source/ubl-strings.h:90 #: source/ubl-strings.h:108
msgid "Sockets and status list" msgid "Sockets and status list"
msgstr "" msgstr ""
#: source/ubl-strings.h:91 #: source/ubl-strings.h:109
msgid "Timers and status list" msgid "Timers and status list"
msgstr "" msgstr ""
#: source/ubl-strings.h:93 #: source/ubl-strings.h:111
msgid "Unit" msgid "Unit"
msgstr "" msgstr ""
#: source/ubl-strings.h:95 #: source/ubl-strings.h:113
msgid "Reload settings" msgid "Reload settings"
msgstr "" msgstr ""
#: source/ubl-strings.h:96 #: source/ubl-strings.h:114
msgid "Reexec systemd" msgid "Reexec systemd"
msgstr "" msgstr ""
#: source/ubl-strings.h:97 #: source/ubl-strings.h:115
msgid "Show service information" msgid "Service information"
msgstr "" msgstr ""
#: source/ubl-strings.h:98 #: source/ubl-strings.h:116
msgid "Relaunch with new configuration" msgid "Relaunch with new configuration"
msgstr "" msgstr ""
#: source/ubl-strings.h:99 #: source/ubl-strings.h:117
msgid "Show service log" msgid "Service log"
msgstr "" msgstr ""
#: source/ubl-strings.h:100 #: source/ubl-strings.h:118
msgid "Show service source file" msgid "Service source file"
msgstr "" msgstr ""
#: source/ubl-strings.h:101 #: source/ubl-strings.h:119
msgid "Show service properties" msgid "Service properties"
msgstr "" msgstr ""
#: source/ubl-strings.h:102 #: source/ubl-strings.h:120
msgid "Show..." msgid "Additional information"
msgstr "" msgstr ""
#: source/ubl-strings.h:104 #: source/ubl-strings.h:122
msgid "Edit configuration file" msgid "Edit configuration file"
msgstr "" msgstr ""
#: source/ubl-strings.h:106 #: source/ubl-strings.h:124
msgid "Show inactive" msgid "Show inactive"
msgstr "" msgstr ""
#: source/ubl-strings.h:107 #: source/ubl-strings.h:125
msgid "Show unloaded" msgid "Show unloaded"
msgstr "" msgstr ""
#: source/ubl-strings.h:109 #: source/ubl-strings.h:127
msgid "File" msgid "File"
msgstr "" msgstr ""
#: source/ubl-strings.h:110 #: source/ubl-strings.h:128
msgid "Change date" msgid "Change date"
msgstr "" msgstr ""
#: source/ubl-strings.h:111 #: source/ubl-strings.h:129
msgid "Description" msgid "Description"
msgstr "" msgstr ""
#: source/ubl-strings.h:112 #: source/ubl-strings.h:130
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: source/ubl-strings.h:114 #: source/ubl-strings.h:132
msgid "Session ID" msgid "Session ID"
msgstr "" msgstr ""
#: source/ubl-strings.h:115 #: source/ubl-strings.h:133
msgid "User ID" msgid "User ID"
msgstr "" msgstr ""
#: source/ubl-strings.h:116 #: source/ubl-strings.h:134
msgid "User name" msgid "User name"
msgstr "" msgstr ""
#: source/ubl-strings.h:117 #: source/ubl-strings.h:135
msgid "Seat ID" msgid "Seat ID"
msgstr "" msgstr ""
#: source/ubl-strings.h:119 #: source/ubl-strings.h:137
msgid "Start session" msgid "Start session"
msgstr "" msgstr ""
#: source/ubl-strings.h:120 #: source/ubl-strings.h:138
msgid "Stop session" msgid "Stop session"
msgstr "" msgstr ""
#: source/ubl-strings.h:121 #: source/ubl-strings.h:141
msgid "Lock session"
msgstr ""
#: source/ubl-strings.h:123
msgid "Timer" msgid "Timer"
msgstr "" msgstr ""
#: source/ubl-strings.h:124 #: source/ubl-strings.h:142
msgid "Next" msgid "Next"
msgstr "" msgstr ""
#: source/ubl-strings.h:125 #: source/ubl-strings.h:143
msgid "Left" msgid "Left"
msgstr "" msgstr ""
#: source/ubl-strings.h:126 #: source/ubl-strings.h:144
msgid "Last" msgid "Last"
msgstr "" msgstr ""
#: source/ubl-strings.h:127 #: source/ubl-strings.h:145
msgid "Passed" msgid "Passed"
msgstr "" msgstr ""
#: source/ubl-strings.h:128 #: source/ubl-strings.h:146
msgid "Activates" msgid "Activates"
msgstr "" msgstr ""
#: source/ubl-strings.h:130 #: source/ubl-strings.h:148 source/ubl-settings-services.c:1377
#: source/ubl-settings-services.c:1427
msgid "disabled"
msgstr ""
#: source/ubl-strings.h:149
msgid "active" msgid "active"
msgstr "" msgstr ""
#: source/ubl-strings.h:131 #: source/ubl-strings.h:150
msgid "dead" msgid "dead"
msgstr "" msgstr ""
#: source/ubl-strings.h:132 #: source/ubl-strings.h:151
msgid "waiting" msgid "waiting"
msgstr "" msgstr ""
#: source/ubl-strings.h:133 #: source/ubl-strings.h:152
msgid "running" msgid "running"
msgstr "" msgstr ""
#: source/ubl-strings.h:134 #: source/ubl-strings.h:153
msgid "listening" msgid "listening"
msgstr "" msgstr ""
#: source/ubl-strings.h:135 #: source/ubl-strings.h:154
msgid "exited" msgid "exited"
msgstr "" msgstr ""
#: source/ubl-strings.h:136 #: source/ubl-strings.h:155
msgid "mounted" msgid "mounted"
msgstr "" msgstr ""
#: source/ubl-strings.h:137 #: source/ubl-strings.h:156
msgid "plugged" msgid "plugged"
msgstr "" msgstr ""
#: source/ubl-strings.h:138 #: source/ubl-strings.h:157
msgid "abandoned" msgid "abandoned"
msgstr "" msgstr ""
#: source/ubl-strings.h:140 #: source/ubl-strings.h:159
msgid "State of " msgid "State of "
msgstr "" msgstr ""
#: source/ubl-strings.h:141 #: source/ubl-strings.h:160
msgid "View log" msgid "View log"
msgstr "" msgstr ""
#: source/ubl-strings.h:141 #: source/ubl-strings.h:161
msgid "log"
msgstr ""
#: source/ubl-strings.h:142
msgid "Edit unit file" msgid "Edit unit file"
msgstr "" msgstr ""
#: source/ubl-strings.h:144 #: source/ubl-strings.h:163
msgid "Failed to re-execute systemd" msgid "Failed to re-execute systemd"
msgstr "" msgstr ""
#: source/ubl-strings.h:145 #: source/ubl-strings.h:164
msgid "failed to relaunch systemd" msgid "failed to relaunch systemd"
msgstr "" msgstr ""
#: source/ubl-strings.h:147 #: source/ubl-strings.h:166
msgid "Systemd has been re-executed" msgid "Systemd has been re-executed"
msgstr "" msgstr ""
#: source/ubl-strings.h:148 #: source/ubl-strings.h:167
msgid "Systemd has been relaunched" msgid "Systemd has been relaunched"
msgstr "" msgstr ""
#: source/ubl-strings.h:150 #: source/ubl-strings.h:169
msgid "Service has been successfully restarted" msgid "Service has been successfully restarted"
msgstr "" msgstr ""
#: source/ubl-strings.h:152 #: source/ubl-strings.h:170
msgid "Service has been successfully launched"
msgstr ""
#: source/ubl-strings.h:172
msgid "Save" msgid "Save"
msgstr "" msgstr ""
#: source/ubl-strings.h:153 #: source/ubl-strings.h:173
msgid "Null" msgid "Null"
msgstr "" msgstr ""
#: source/ubl-strings.h:154 source/ubl-strings.h:159 #: source/ubl-strings.h:174 source/ubl-strings.h:179
msgid "Unit file:" msgid "Unit file:"
msgstr "" msgstr ""
#: source/ubl-strings.h:155 #: source/ubl-strings.h:175
msgid "Unit file state:" msgid "Unit file state:"
msgstr "" msgstr ""
#: source/ubl-strings.h:156 source/ubl-strings.h:159 #: source/ubl-strings.h:176 source/ubl-strings.h:179
msgid "Activated:" msgid "Activated:"
msgstr "" msgstr ""
#: source/ubl-strings.h:157 source/ubl-strings.h:159 #: source/ubl-strings.h:177 source/ubl-strings.h:179
msgid "Deactivated:" msgid "Deactivated:"
msgstr "" msgstr ""
#: source/ubl-strings.h:159 #: source/ubl-strings.h:179
msgid "Status:" msgid "Status:"
msgstr "" msgstr ""

@ -77,7 +77,7 @@ msgstr "Только системные сервисы"
msgid "User services only" msgid "User services only"
msgstr "Только сервисы пользователя" msgstr "Только сервисы пользователя"
#: source/ubl-strings.h:19 source/ubl-strings.h:61 #: source/ubl-strings.h:19 source/ubl-strings.h:62
msgid "Saving..." msgid "Saving..."
msgstr "Сохранение..." msgstr "Сохранение..."
@ -137,7 +137,7 @@ msgstr "Открыть лог сервиса"
msgid "Service:" msgid "Service:"
msgstr "Сервис:" msgstr "Сервис:"
#: source/ubl-strings.h:37 source/ubl-strings.h:159 #: source/ubl-strings.h:37 source/ubl-strings.h:179
msgid "Description:" msgid "Description:"
msgstr "Описание:" msgstr "Описание:"
@ -170,354 +170,430 @@ msgid "Properties"
msgstr "Свойства" msgstr "Свойства"
#: source/ubl-strings.h:53 #: source/ubl-strings.h:53
msgid "Activate session" msgid "Switch to session"
msgstr "Активировать сессию" msgstr "Переключиться на сессию"
#: source/ubl-strings.h:54 #: source/ubl-strings.h:54
msgid "Terminate session" msgid "Terminate session"
msgstr "Завершить сессию" msgstr "Завершить сессию"
#: source/ubl-strings.h:55 #: source/ubl-strings.h:55 source/ubl-strings.h:139
msgid "Block session" msgid "Lock session"
msgstr "Заблокировать сессию" msgstr "Заблокировать сессию"
#: source/ubl-strings.h:57 #: source/ubl-strings.h:56
msgid "Unlock session"
msgstr "Разблокировать сессию"
#: source/ubl-strings.h:58
msgid "Service source were not loaded" msgid "Service source were not loaded"
msgstr "Сервис не был загружен" msgstr "Сервис не был загружен"
#: source/ubl-strings.h:58 #: source/ubl-strings.h:59
msgid "Failed to launch service" msgid "Failed to launch service"
msgstr "Ошибка запуска сервиса" msgstr "Ошибка запуска сервиса"
#: source/ubl-strings.h:59 #: source/ubl-strings.h:60
msgid "Failed to stop service" msgid "Failed to stop service"
msgstr "Ошибка остановки сервиса" msgstr "Ошибка остановки сервиса"
#: source/ubl-strings.h:62 #: source/ubl-strings.h:63
msgid "Saved" msgid "Saved"
msgstr "Сохранено" msgstr "Сохранено"
#: source/ubl-strings.h:63 #: source/ubl-strings.h:64
msgid "Error has occured" msgid "Error has occured"
msgstr "Произошла ошибка" msgstr "Произошла ошибка"
#: source/ubl-strings.h:65 #: source/ubl-strings.h:66
msgid "Service were not stopped" msgid "Service were not stopped"
msgstr "Сервис не был остановлен" msgstr "Сервис не был остановлен"
#: source/ubl-strings.h:66 #: source/ubl-strings.h:67
msgid "Are you sure want to stop " msgid "Are you sure want to stop "
msgstr "Вы уверены, что хотите выключить " msgstr "Вы уверены, что хотите выключить "
#: source/ubl-strings.h:66 source/ubl-strings.h:67 source/ubl-strings.h:68 #: source/ubl-strings.h:67 source/ubl-strings.h:68 source/ubl-strings.h:69
#: source/ubl-strings.h:69 source/ubl-strings.h:70 source/ubl-strings.h:71 #: source/ubl-strings.h:70 source/ubl-strings.h:71 source/ubl-strings.h:72
#: source/ubl-strings.h:73 source/ubl-strings.h:74
msgid "The system may become unstable." msgid "The system may become unstable."
msgstr "Возможна нестабильная работа системы." msgstr "Возможна нестабильная работа системы."
#: source/ubl-strings.h:67 #: source/ubl-strings.h:68
msgid "Are you sure want to start " msgid "Are you sure want to start "
msgstr "Вы уверены, что хотите запустить " msgstr "Вы уверены, что хотите запустить "
#: source/ubl-strings.h:68 #: source/ubl-strings.h:69
msgid "Are you sure want to restart " msgid "Are you sure want to restart "
msgstr "Вы уверены, что хотите перезапустить " msgstr "Вы уверены, что хотите перезапустить "
#: source/ubl-strings.h:69 #: source/ubl-strings.h:70
msgid "Are you sure want to reload " msgid "Are you sure want to reload "
msgstr "Вы уверены, что хотите перезагрузить " msgstr "Вы уверены, что хотите перезагрузить "
#: source/ubl-strings.h:70 #: source/ubl-strings.h:71
#, fuzzy
msgid "Are you sure want to enable " msgid "Are you sure want to enable "
msgstr "Вы уверены, что хотите включить автозапуск для " msgstr "Вы уверены, что хотите включить автозапуск для "
#: source/ubl-strings.h:71 #: source/ubl-strings.h:72
#, fuzzy
msgid "Are you sure want to disable " msgid "Are you sure want to disable "
msgstr "Вы уверены, что хотите отключить автозапуск для " msgstr "Вы уверены, что хотите отключить автозапуск для "
#: source/ubl-strings.h:72 #: source/ubl-strings.h:73
msgid "Are you sure want to reload system units settings?"
msgstr "Вы уверены, что хотите перезагрузить настройки системных юнитов?"
#: source/ubl-strings.h:74
msgid "Are you sure want to reload user units settings?"
msgstr ""
"Вы уверены, что хотите перезагрузить настройки пользовательских юнитов?"
#: source/ubl-strings.h:75
msgid "Are you sure you want to switch on session"
msgstr "Вы уверены, что хотите переключиться на сессию"
#: source/ubl-strings.h:76
msgid "Attention!"
msgstr "Внимание!"
#: source/ubl-strings.h:76
msgid "You are about to"
msgstr "Вы собираетесь"
#: source/ubl-strings.h:76
msgid "end your session"
msgstr "завершить сессию"
#: source/ubl-strings.h:76
msgid ""
"If this is your active session, you will be taken to the login screen. Make "
"sure to save all files before performing this operation."
msgstr ""
"Если это ваша активная сессия, вы будете выведены в экран входа. Убедитесь, "
"что сохранили все файлы перед выполнением этой операции."
#: source/ubl-strings.h:77
msgid "Are you sure you want to block session"
msgstr "Вы уверены, что хотите заблокировать сессию"
#: source/ubl-strings.h:78
msgid "Are you sure you want to unlock session"
msgstr "Вы уверены, что хотите разблокировать сессию"
#: source/ubl-strings.h:80
msgid "Service start"
msgstr "Запуск юнита"
#: source/ubl-strings.h:81
msgid "Service stop"
msgstr "Остановка юнита"
#: source/ubl-strings.h:82
msgid "Service enabling"
msgstr "Включение автообновления юнита"
#: source/ubl-strings.h:83
msgid "Service disabling"
msgstr "Отключение автообновления юнита"
#: source/ubl-strings.h:85
msgid "Switching to session"
msgstr "Переключение на сессию"
#: source/ubl-strings.h:86
msgid "Session locking"
msgstr "Блокирование сессии"
#: source/ubl-strings.h:87
msgid "Session unlocking"
msgstr "Разблакирование сессии"
#: source/ubl-strings.h:88
msgid "Session termination"
msgstr "Завершение сессии"
#: source/ubl-strings.h:90
msgid "Days" msgid "Days"
msgstr "Дней" msgstr "Дней"
#: source/ubl-strings.h:73 #: source/ubl-strings.h:91
msgid "Hours" msgid "Hours"
msgstr "Часов" msgstr "Часов"
#: source/ubl-strings.h:74 #: source/ubl-strings.h:92
msgid "Minutes" msgid "Minutes"
msgstr "Минут" msgstr "Минут"
#: source/ubl-strings.h:75 #: source/ubl-strings.h:93
msgid "Seconds" msgid "Seconds"
msgstr "Секунд" msgstr "Секунд"
#: source/ubl-strings.h:77 #: source/ubl-strings.h:95
msgid "Active" msgid "Active"
msgstr "Активна" msgstr "Активна"
#: source/ubl-strings.h:78 #: source/ubl-strings.h:96
msgid "Inactive" msgid "Inactive"
msgstr "Неактивна" msgstr "Неактивна"
#: source/ubl-strings.h:80 #: source/ubl-strings.h:98
msgid "System units" msgid "System units"
msgstr "Системные юниты" msgstr "Системные юниты"
#: source/ubl-strings.h:81 #: source/ubl-strings.h:99
msgid "User units" msgid "User units"
msgstr "Пользовательские юниты" msgstr "Пользовательские юниты"
#: source/ubl-strings.h:82 #: source/ubl-strings.h:100
msgid "Config files" msgid "Config files"
msgstr "Конфигурационные файлы" msgstr "Конфигурационные файлы"
#: source/ubl-strings.h:83 #: source/ubl-strings.h:101
msgid "Sessions" msgid "Sessions"
msgstr "Сессии" msgstr "Сессии"
#: source/ubl-strings.h:84 #: source/ubl-strings.h:102
msgid "Timers" msgid "Timers"
msgstr "Таймеры" msgstr "Таймеры"
#: source/ubl-strings.h:86 #: source/ubl-strings.h:104
msgid "System services status" msgid "System services status"
msgstr "Статус сервисов системы" msgstr "Статус сервисов системы"
#: source/ubl-strings.h:87 #: source/ubl-strings.h:105
msgid "User services status" msgid "User services status"
msgstr "Статус сервисов пользователя" msgstr "Статус сервисов пользователя"
#: source/ubl-strings.h:88 #: source/ubl-strings.h:106
msgid "Installed unit files" msgid "Installed unit files"
msgstr "Установленные юнит-файлы" msgstr "Установленные юнит-файлы"
#: source/ubl-strings.h:89 #: source/ubl-strings.h:107
msgid "Units and status list" msgid "Units and status list"
msgstr "Список юнитов и состояния" msgstr "Список юнитов и состояния"
#: source/ubl-strings.h:90 #: source/ubl-strings.h:108
msgid "Sockets and status list" msgid "Sockets and status list"
msgstr "Список сокетов и состояния" msgstr "Список сокетов и состояния"
#: source/ubl-strings.h:91 #: source/ubl-strings.h:109
msgid "Timers and status list" msgid "Timers and status list"
msgstr "Список таймеров и состояния" msgstr "Список таймеров и состояния"
#: source/ubl-strings.h:93 #: source/ubl-strings.h:111
msgid "Unit" msgid "Unit"
msgstr "Юнит" msgstr "Юнит"
#: source/ubl-strings.h:95 #: source/ubl-strings.h:113
msgid "Reload settings" msgid "Reload settings"
msgstr "Перезагрузить настройки" msgstr "Перезагрузить настройки"
#: source/ubl-strings.h:96 #: source/ubl-strings.h:114
msgid "Reexec systemd" msgid "Reexec systemd"
msgstr "Перезапустить systemd" msgstr "Перезапустить systemd"
#: source/ubl-strings.h:97 #: source/ubl-strings.h:115
msgid "Show service information" msgid "Service information"
msgstr "Показать информацию о сервисе" msgstr "Информация о юните"
#: source/ubl-strings.h:98 #: source/ubl-strings.h:116
#, fuzzy
msgid "Relaunch with new configuration" msgid "Relaunch with new configuration"
msgstr "Перезапустить с новой конфигурацией" msgstr "Перезапустить с новой конфигурацией"
#: source/ubl-strings.h:99 #: source/ubl-strings.h:117
msgid "Show service log" msgid "Service log"
msgstr "Открыть лог сервиса" msgstr "Лог юнита"
#: source/ubl-strings.h:100 #: source/ubl-strings.h:118
msgid "Show service source file" msgid "Service source file"
msgstr "Показать конфигурационный файл сервиса" msgstr "Конфигурационный файл юнита"
#: source/ubl-strings.h:101 #: source/ubl-strings.h:119
msgid "Show service properties" msgid "Service properties"
msgstr "Открыть свойства сервиса" msgstr "Свойства юнита"
#: source/ubl-strings.h:102 #: source/ubl-strings.h:120
msgid "Show..." msgid "Additional information"
msgstr "Показать..." msgstr "Дополнительная информация"
#: source/ubl-strings.h:104 #: source/ubl-strings.h:122
msgid "Edit configuration file" msgid "Edit configuration file"
msgstr "Редактировать в конфигурации" msgstr "Редактировать конфигурационный файл"
#: source/ubl-strings.h:106 #: source/ubl-strings.h:124
msgid "Show inactive" msgid "Show inactive"
msgstr "Показать неактивные" msgstr "Показать неактивные"
#: source/ubl-strings.h:107 #: source/ubl-strings.h:125
msgid "Show unloaded" msgid "Show unloaded"
msgstr "Показать незагруженные" msgstr "Показать незагруженные"
#: source/ubl-strings.h:109 #: source/ubl-strings.h:127
msgid "File" msgid "File"
msgstr "Файл" msgstr "Файл"
#: source/ubl-strings.h:110 #: source/ubl-strings.h:128
msgid "Change date" msgid "Change date"
msgstr "Изменён" msgstr "Изменён"
#: source/ubl-strings.h:111 #: source/ubl-strings.h:129
msgid "Description" msgid "Description"
msgstr "Описание" msgstr "Описание"
#: source/ubl-strings.h:112 #: source/ubl-strings.h:130
msgid "Edit" msgid "Edit"
msgstr "Редактировать" msgstr "Редактировать"
#: source/ubl-strings.h:114 #: source/ubl-strings.h:132
msgid "Session ID" msgid "Session ID"
msgstr "ID сессии" msgstr "ID сессии"
#: source/ubl-strings.h:115 #: source/ubl-strings.h:133
msgid "User ID" msgid "User ID"
msgstr "ID пользователя" msgstr "ID пользователя"
#: source/ubl-strings.h:116 #: source/ubl-strings.h:134
msgid "User name" msgid "User name"
msgstr "Имя пользователя" msgstr "Имя пользователя"
#: source/ubl-strings.h:117 #: source/ubl-strings.h:135
msgid "Seat ID" msgid "Seat ID"
msgstr "Seat ID" msgstr "Seat ID"
#: source/ubl-strings.h:119 #: source/ubl-strings.h:137
msgid "Start session" msgid "Start session"
msgstr "Запустить сессию" msgstr "Запустить сессию"
#: source/ubl-strings.h:120 #: source/ubl-strings.h:138
msgid "Stop session" msgid "Stop session"
msgstr "Остановить сессию" msgstr "Остановить сессию"
#: source/ubl-strings.h:121 #: source/ubl-strings.h:141
msgid "Lock session"
msgstr "Заблокировать сессию"
#: source/ubl-strings.h:123
msgid "Timer" msgid "Timer"
msgstr "Таймер" msgstr "Таймер"
#: source/ubl-strings.h:124 #: source/ubl-strings.h:142
msgid "Next" msgid "Next"
msgstr "Следующий" msgstr "Следующий"
#: source/ubl-strings.h:125 #: source/ubl-strings.h:143
msgid "Left" msgid "Left"
msgstr "Осталось времени" msgstr "Осталось времени"
#: source/ubl-strings.h:126 #: source/ubl-strings.h:144
msgid "Last" msgid "Last"
msgstr "Последний" msgstr "Последний"
#: source/ubl-strings.h:127 #: source/ubl-strings.h:145
msgid "Passed" msgid "Passed"
msgstr "Пройденный" msgstr "Пройденный"
#: source/ubl-strings.h:128 #: source/ubl-strings.h:146
msgid "Activates" msgid "Activates"
msgstr "Активируется" msgstr "Активируется"
#: source/ubl-strings.h:130 #: source/ubl-strings.h:148 source/ubl-settings-services.c:1377
#: source/ubl-settings-services.c:1427
msgid "disabled"
msgstr "неактивен"
#: source/ubl-strings.h:149
msgid "active" msgid "active"
msgstr "активен" msgstr "активен"
#: source/ubl-strings.h:131 #: source/ubl-strings.h:150
msgid "dead" msgid "dead"
msgstr "остановлен" msgstr "остановлен"
#: source/ubl-strings.h:132 #: source/ubl-strings.h:151
msgid "waiting" msgid "waiting"
msgstr "ожидание" msgstr "ожидание"
#: source/ubl-strings.h:133 #: source/ubl-strings.h:152
msgid "running" msgid "running"
msgstr "работает" msgstr "работает"
#: source/ubl-strings.h:134 #: source/ubl-strings.h:153
msgid "listening" msgid "listening"
msgstr "прослушивание" msgstr "прослушивание"
#: source/ubl-strings.h:135 #: source/ubl-strings.h:154
msgid "exited" msgid "exited"
msgstr "завершён" msgstr "завершён"
#: source/ubl-strings.h:136 #: source/ubl-strings.h:155
msgid "mounted" msgid "mounted"
msgstr "примонтирован" msgstr "примонтирован"
#: source/ubl-strings.h:137 #: source/ubl-strings.h:156
msgid "plugged" msgid "plugged"
msgstr "подключен" msgstr "подключен"
#: source/ubl-strings.h:138 #: source/ubl-strings.h:157
msgid "abandoned" msgid "abandoned"
msgstr "заброшен" msgstr "заброшен"
#: source/ubl-strings.h:140 #: source/ubl-strings.h:159
msgid "State of " msgid "State of "
msgstr "Состояние " msgstr "Состояние "
#: source/ubl-strings.h:141 #: source/ubl-strings.h:160
msgid "View log" msgid "View log"
msgstr "Просмотр лога" msgstr "Просмотр лога"
#: source/ubl-strings.h:141 #: source/ubl-strings.h:161
msgid "log"
msgstr "лога"
#: source/ubl-strings.h:142
msgid "Edit unit file" msgid "Edit unit file"
msgstr "Редактировать юнит-файл" msgstr "Редактировать юнит-файл"
#: source/ubl-strings.h:144 #: source/ubl-strings.h:163
msgid "Failed to re-execute systemd" msgid "Failed to re-execute systemd"
msgstr "Ошибка перезагрузки systemd" msgstr "Ошибка перезагрузки systemd"
#: source/ubl-strings.h:145 #: source/ubl-strings.h:164
msgid "failed to relaunch systemd" msgid "failed to relaunch systemd"
msgstr "Ошибка перезапуска systemd" msgstr "Ошибка перезапуска systemd"
#: source/ubl-strings.h:147 #: source/ubl-strings.h:166
msgid "Systemd has been re-executed" msgid "Systemd has been re-executed"
msgstr "Systemd был успешно перезапущен" msgstr "Systemd был успешно перезапущен"
#: source/ubl-strings.h:148 #: source/ubl-strings.h:167
msgid "Systemd has been relaunched" msgid "Systemd has been relaunched"
msgstr "Systemd был успешно перезагружен" msgstr "Systemd был успешно перезагружен"
#: source/ubl-strings.h:150 #: source/ubl-strings.h:169
msgid "Service has been successfully restarted" msgid "Service has been successfully restarted"
msgstr "Сервис был успешно перезапущен" msgstr "Сервис был успешно перезапущен"
#: source/ubl-strings.h:152 #: source/ubl-strings.h:170
msgid "Service has been successfully launched"
msgstr "Сервис был успешно запущен"
#: source/ubl-strings.h:172
msgid "Save" msgid "Save"
msgstr "Сохранить" msgstr "Сохранить"
#: source/ubl-strings.h:153 #: source/ubl-strings.h:173
msgid "Null" msgid "Null"
msgstr "Нет данных" msgstr "Нет данных"
#: source/ubl-strings.h:154 source/ubl-strings.h:159 #: source/ubl-strings.h:174 source/ubl-strings.h:179
msgid "Unit file:" msgid "Unit file:"
msgstr "Юнит-файл:" msgstr "Юнит-файл:"
#: source/ubl-strings.h:155 #: source/ubl-strings.h:175
msgid "Unit file state:" msgid "Unit file state:"
msgstr "Статус юнит-файла:" msgstr "Статус юнит-файла:"
#: source/ubl-strings.h:156 source/ubl-strings.h:159 #: source/ubl-strings.h:176 source/ubl-strings.h:179
msgid "Activated:" msgid "Activated:"
msgstr "Активирован:" msgstr "Активирован:"
#: source/ubl-strings.h:157 source/ubl-strings.h:159 #: source/ubl-strings.h:177 source/ubl-strings.h:179
msgid "Deactivated:" msgid "Deactivated:"
msgstr "Деактивирован:" msgstr "Деактивирован:"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:179
msgid "Status:" msgid "Status:"
msgstr "Статус:" msgstr "Статус:"
@ -545,7 +621,9 @@ msgstr "Настройка глобальных сетевых параметр
msgid "" msgid ""
"Configuration file for systemd-pstore, a tool for archiving the contents of " "Configuration file for systemd-pstore, a tool for archiving the contents of "
"the pstore persistent storage file system" "the pstore persistent storage file system"
msgstr "Файл конфигурации для systemd-pstore, инструмента для архивирования содержимого постоянной файловой системы хранения pstore" msgstr ""
"Файл конфигурации для systemd-pstore, инструмента для архивирования "
"содержимого постоянной файловой системы хранения pstore"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:159
msgid "Workstation hibernation options" msgid "Workstation hibernation options"
@ -563,22 +641,28 @@ msgstr "Конфигурация пользователя"
msgid "" msgid ""
"Settings management configuration for user account home directories created " "Settings management configuration for user account home directories created "
"and managed by systemd-homed.service" "and managed by systemd-homed.service"
msgstr "Конфигурация управления настройками для домашних каталогов учетных записей пользователей, созданная и управляемая systemd-homed.service" msgstr ""
"Конфигурация управления настройками для домашних каталогов учетных записей "
"пользователей, созданная и управляемая systemd-homed.service"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:159
msgid "" msgid ""
"Configuration files for various systemd-journal-remote.service parameters" "Configuration files for various systemd-journal-remote.service parameters"
msgstr "Файлы конфигурации для различных параметров systemd-journal-remote.service" msgstr ""
"Файлы конфигурации для различных параметров systemd-journal-remote.service"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:159
msgid "Configuration files for various systemd login manager options" msgid "Configuration files for various systemd login manager options"
msgstr "Файлы конфигурации для различных опций менеджера входа в систему systemd" msgstr ""
"Файлы конфигурации для различных опций менеджера входа в систему systemd"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:159
msgid "" msgid ""
"Configuration files for various out-of-memory (OOM) killer parameters in " "Configuration files for various out-of-memory (OOM) killer parameters in "
"systemd user space" "systemd user space"
msgstr "Файлы конфигурации для различных параметров исключения нехватки памяти (OOM) в пользовательском пространстве systemd" msgstr ""
"Файлы конфигурации для различных параметров исключения нехватки памяти (OOM) "
"в пользовательском пространстве systemd"
#: source/ubl-strings.h:159 #: source/ubl-strings.h:159
msgid "Local DNS and LLMNR name resolution management configuration files" msgid "Local DNS and LLMNR name resolution management configuration files"
@ -591,3 +675,6 @@ msgstr "Файлы конфигурации управления файлами
#: source/ubl-strings.h:159 #: source/ubl-strings.h:159
msgid "Configuration file controlling NTP network time synchronization" msgid "Configuration file controlling NTP network time synchronization"
msgstr "Файл конфигурации, управляющий синхронизацией времени сети NTP" msgstr "Файл конфигурации, управляющий синхронизацией времени сети NTP"
#~ msgid "Unit log"
#~ msgstr "Лог юнита"

Loading…
Cancel
Save