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

Reviewed-on: #71
pull/128/head^2 v2.9
Dmitry Razumov 2 years ago
commit 3b25e6dfe3

@ -143,6 +143,7 @@ install: check uninstall
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.source-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.save-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.update-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/icons/hicolor/scalable/actions/" "icons/com.ublinux.${PKGNAME}.arrow-round-symbolic.svg"
@install -Dm644 -t "${DESTDIR}/usr/share/polkit-1/actions/" "${CMAKE_BUILD_DIR}/com.ublinux.${PKGNAME}${PKGIDENT}.policy"
@if [ -z ${DESTDIR} ]; then \
[ -d "${DESTDIR}/usr/share/icons/hicolor/" ] && gtk-update-icon-cache -fiq "${DESTDIR}/usr/share/icons/hicolor/" &>/dev/null || true; \

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2023 Fonticons, Inc. --><path d="M125.7 160H176c17.7 0 32 14.3 32 32s-14.3 32-32 32H48c-17.7 0-32-14.3-32-32V64c0-17.7 14.3-32 32-32s32 14.3 32 32v51.2L97.6 97.6c87.5-87.5 229.3-87.5 316.8 0s87.5 229.3 0 316.8s-229.3 87.5-316.8 0c-12.5-12.5-12.5-32.8 0-45.3s32.8-12.5 45.3 0c62.5 62.5 163.8 62.5 226.3 0s62.5-163.8 0-226.3s-163.8-62.5-226.3 0L125.7 160z"/></svg>

After

Width:  |  Height:  |  Size: 611 B

@ -731,7 +731,7 @@ void on_system_info_clicked(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),SERVICE_STATE_TITLE_LABEL(name));
gtk_window_set_title(GTK_WINDOW(window->Window),SERVICE_STATE_TITLE_LABEL(name));
window->target = service_info_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
}
@ -750,7 +750,7 @@ void on_system_log_clicked(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),SERVICE_LOG_TITLE_LABEL(name));
gtk_window_set_title(GTK_WINDOW(window->Window),SERVICE_LOG_TITLE_LABEL(name));
window->target = get_log_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
}
@ -761,7 +761,7 @@ void *on_terminal_relaunch(log_window *window){
gtk_widget_set_sensitive(window->SystemTerminal,0);
sleep(1);
gtk_widget_set_sensitive(window->SystemTerminal,1);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
return NULL;
}
@ -775,7 +775,7 @@ void on_save_clicked(GtkWidget *self, log_window *window){
void on_update_clicked(GtkWidget *self, log_window *window){
if (self){};
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
}
void on_system_edit_clicked(GtkWidget *self, main_window *widgets){
@ -791,7 +791,7 @@ void on_system_edit_clicked(GtkWidget *self, main_window *widgets){
gtk_window_set_title(GTK_WINDOW(window->Window),SERVICE_UNIT_EDIT_TITLE_LABEL);
gtk_widget_show(window->SaveButton);
window->target=show_source_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
GdkRGBA rgba;
rgba.blue=1;
rgba.green=1;
@ -817,7 +817,7 @@ void on_system_status_clicked(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),PROPERTIES_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),PROPERTIES_LABEL);
window->target = properties_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -862,7 +862,7 @@ void on_user_info_clicked(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),SERVICE_STATE_TITLE_LABEL(name));
gtk_window_set_title(GTK_WINDOW(window->Window),SERVICE_STATE_TITLE_LABEL(name));
window->target = user_service_info_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
}
@ -881,7 +881,7 @@ void on_user_log_clicked(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),SERVICE_LOG_TITLE_LABEL(name));
gtk_window_set_title(GTK_WINDOW(window->Window),SERVICE_LOG_TITLE_LABEL(name));
window->target = user_get_log_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
}
@ -901,7 +901,7 @@ void on_user_edit_clicked(GtkWidget *self, main_window *widgets){
gtk_window_set_title(GTK_WINDOW(window->Window),SERVICE_UNIT_EDIT_TITLE_LABEL);
gtk_widget_show(window->SaveButton);
window->target=user_show_source_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
GdkRGBA rgba;
rgba.blue=1;
rgba.green=1;
@ -927,7 +927,7 @@ void on_user_status_clicked(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),PROPERTIES_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),PROPERTIES_LABEL);
window->target = user_properties_command(name);
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -987,7 +987,7 @@ void on_system_services_status(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),SYSTEM_STATUS_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),SYSTEM_STATUS_LABEL);
window->target = system_services_status_command;
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -1001,7 +1001,7 @@ void on_user_services_status(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),USER_STATUS_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),USER_STATUS_LABEL);
window->target = user_services_status_command;
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -1015,7 +1015,7 @@ void on_units_status(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),INSTALLED_UNIT_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),INSTALLED_UNIT_LABEL);
window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?installed_units_states_command:user_installed_units_states_command;
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -1029,7 +1029,7 @@ void on_units_list_status(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),UNITS_LIST_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),UNITS_LIST_LABEL);
window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?list_of_units_states_command:user_list_of_units_states_command;
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -1043,7 +1043,7 @@ void on_sockets_list_status(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),SOCKETS_LIST_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),SOCKETS_LIST_LABEL);
window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?list_of_sockets_states_command:user_list_of_sockets_states_command;
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -1057,7 +1057,7 @@ void on_timers_list_status(GtkWidget *self, main_window *widgets){
gtk_label_set_text(GTK_LABEL(window->webHeaderNameLabel),TIMERS_LIST_LABEL);
gtk_window_set_title(GTK_WINDOW(window->Window),TIMERS_LIST_LABEL);
window->target = !gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook))?list_of_timers_states_command:user_list_of_timers_states_command;
yon_terminal_integrated_start(window->SystemTerminal,window->target);
yon_terminal_integrated_start_shell(window->SystemTerminal,window->target,NULL,NULL);
gtk_widget_show(window->Window);
}
@ -1455,6 +1455,89 @@ void on_tree_selection_changed(GtkWidget *self, main_window *widgets){
}
}
gboolean on_tooltip_show(GtkWidget* self, gint x, gint y, gboolean keyboard_mode, GtkTooltip* tooltip, main_window *widgets) {
if (self || x || y || keyboard_mode) {};
gtk_tooltip_set_custom(tooltip,widgets->TooltipBox);
GtkWidget *tree = NULL;
GtkTreeModel *model = NULL;
if (gtk_notebook_get_current_page(GTK_NOTEBOOK(widgets->MainNotebook)) == 0) {
tree = widgets->SystemUnitsTree;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->SystemUnitsTree));
} else {
tree = widgets->UserUnitsTree;
model = gtk_tree_view_get_model(GTK_TREE_VIEW(widgets->UserUnitsTree));
}
gint tree_x, tree_y;
gtk_tree_view_convert_widget_to_bin_window_coords(GTK_TREE_VIEW(tree), x, y, &tree_x, &tree_y);
GtkTreePath *path;
if (gtk_tree_view_get_path_at_pos(GTK_TREE_VIEW(tree), tree_x, tree_y, &path, NULL, NULL, NULL)) {
GtkTreeIter iter;
if (gtk_tree_model_get_iter(model, &iter, path)) {
gchar *name, *description, *state, *name_target;
gint64 activa, deactiva;
int size;
gtk_tree_model_get(model, &iter, 5, &name, 6, &description, 11, &state, -1);
name_target = yon_char_new(name);
if (name[0]=='-'){
name_target = yon_char_append("-- ",name_target);
}
config_str target = yon_config_load(get_activate_deactivate_times(name_target), &size);
free(name_target);
if (target){
free(yon_char_divide_search(target[0], "=", -1));
yon_char_remove_last_symbol(target[0], '\n');
free(yon_char_divide_search(target[1], "=", -1));
yon_char_remove_last_symbol(target[1], '\n');
free(yon_char_divide_search(target[2], "=", -1));
yon_char_remove_last_symbol(target[2], '\n');
activa = g_ascii_strtoll(target[1], NULL, 10);
deactiva = g_ascii_strtoll(target[1], NULL, 10);
gtk_label_set_text(GTK_LABEL(widgets->UnitLabel), target[0]);
}
gtk_label_set_text(GTK_LABEL(widgets->NameLabel), name);
gtk_label_set_text(GTK_LABEL(widgets->DescriptionLabel), description);
gtk_label_set_text(GTK_LABEL(widgets->StatusQueryLabel), state);
free(name);
free(description);
free(state);
if (target){
gchar *formatted_activa = NULL;
gchar *formatted_deactiva = NULL;
if (activa) {
GDateTime *datetime = g_date_time_new_from_unix_local(activa);
formatted_activa = g_date_time_format(datetime, "%d:%m:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_activa = g_strdup(NULL_LABEL);
}
if (deactiva) {
GDateTime *datetime = g_date_time_new_from_unix_local(deactiva);
formatted_deactiva = g_date_time_format(datetime, "%d:%m:%Y %T");
g_date_time_unref(datetime);
} else {
formatted_deactiva = g_strdup(NULL_LABEL);
}
gtk_label_set_text(GTK_LABEL(widgets->ActivateLabel), formatted_activa);
gtk_label_set_text(GTK_LABEL(widgets->DeactivateLabel), formatted_deactiva);
g_free(formatted_activa);
g_free(formatted_deactiva);
}
gtk_tree_path_free(path);
return TRUE;
}
gtk_tree_path_free(path);
}
return FALSE;
}
/**yon_main_window_complete(main_window *widgets)
* [EN]
*
@ -1478,6 +1561,14 @@ void yon_main_window_complete(main_window *widgets){
widgets->SystemUnitsTree=yon_gtk_builder_get_widget(builder,"SystemUnitsTree");
widgets->MainNotebook=yon_gtk_builder_get_widget(builder,"MainNotebook");
widgets->TooltipBox=yon_gtk_builder_get_widget(builder,"TooltipBox");
widgets->NameLabel=yon_gtk_builder_get_widget(builder,"NameLabel");
widgets->DescriptionLabel=yon_gtk_builder_get_widget(builder,"DescriptionLabel");
widgets->UnitLabel=yon_gtk_builder_get_widget(builder,"UnitLabel");
widgets->StatusQueryLabel=yon_gtk_builder_get_widget(builder,"StatusQueryLabel");
widgets->ActivateLabel=yon_gtk_builder_get_widget(builder,"ActivateLabel");
widgets->DeactivateLabel=yon_gtk_builder_get_widget(builder,"DeactivateLabel");
widgets->SystemServicesStatusMenuItem=yon_gtk_builder_get_widget(builder,"SystemServicesStatusMenuItem");
widgets->InstalledUnitsStatusMenuItem=yon_gtk_builder_get_widget(builder,"InstalledUnitsStatusMenuItem");
widgets->UnitsStatusListMenuItem=yon_gtk_builder_get_widget(builder,"UnitsStatusListMenuItem");
@ -1555,6 +1646,7 @@ void yon_main_window_complete(main_window *widgets){
widgets->ConfigEditButton=yon_gtk_builder_get_widget(builder,"ConfigEditButton");
widgets->ConfigMainTree=yon_gtk_builder_get_widget(builder,"ConfigMainTree");
widgets->SessionRestartButton=yon_gtk_builder_get_widget(builder,"SessionRestartButton");
widgets->SessionMainTree=yon_gtk_builder_get_widget(builder,"SessionMainTree");
widgets->SessionStartButton=yon_gtk_builder_get_widget(builder,"SessionStartButton");
widgets->SessionStopButton=yon_gtk_builder_get_widget(builder,"SessionStopButton");
@ -1583,6 +1675,9 @@ void yon_main_window_complete(main_window *widgets){
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));
g_signal_connect(G_OBJECT(widgets->UserUnitsTree),"query-tooltip",G_CALLBACK(on_tooltip_show),widgets);
g_signal_connect(G_OBJECT(widgets->SystemUnitsTree),"query-tooltip",G_CALLBACK(on_tooltip_show),widgets);
g_signal_connect(G_OBJECT(widgets->SystemPrevButton),"clicked",G_CALLBACK(on_system_update_hz_clicked),widgets);
g_signal_connect(G_OBJECT(widgets->SystemUpdateButton),"clicked",G_CALLBACK(on_interface_update),widgets);
g_signal_connect(G_OBJECT(widgets->SystemServiceUpdateButton),"clicked",G_CALLBACK(on_system_update_clicked),widgets);
@ -1611,6 +1706,7 @@ void yon_main_window_complete(main_window *widgets){
g_signal_connect(G_OBJECT(widgets->ConfigEditButton),"clicked",G_CALLBACK(on_config_edit_clicked),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->SessionStopButton),"clicked",G_CALLBACK(on_session_end),widgets);
g_signal_connect(G_OBJECT(widgets->SessionBlockButton),"clicked",G_CALLBACK(on_session_block),widgets);

@ -75,6 +75,7 @@
#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_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 -p ActiveEnterTimestampMonotonic -p InactiveEnterTimestampMonotonic -p Names ",target)
#define config_get_command(target) yon_char_append("cat ",target)
@ -191,6 +192,7 @@ typedef struct {
GtkWidget *ConfigEditButton;
GtkWidget *ConfigMainTree;
GtkWidget *SessionRestartButton;
GtkWidget *SessionMainTree;
GtkWidget *SessionStartButton;
GtkWidget *SessionStopButton;
@ -212,6 +214,14 @@ typedef struct {
GtkWidget *UserSocketsStatusListMenuItem;
GtkWidget *UserTimersStatusListMenuItem;
GtkWidget *TooltipBox;
GtkWidget *NameLabel;
GtkWidget *DescriptionLabel;
GtkWidget *UnitLabel;
GtkWidget *StatusQueryLabel;
GtkWidget *ActivateLabel;
GtkWidget *DeactivateLabel;
GtkTreeModelFilter *SystemFilter;
GtkTreeModelFilter *UserFilter;
@ -269,6 +279,8 @@ typedef struct {
char *target;
} log_window;
gboolean on_tooltip_show(GtkWidget* self, gint x, gint y, gboolean keyboard_mode, GtkTooltip* tooltip, main_window *widgets);
void on_config_local_load(GtkWidget *self,main_window *widgets);
void on_config_global_load(GtkWidget *self,main_window *widgets);

@ -95,6 +95,7 @@
#define RELAUNCH_SYSTEMCTL_LABEL _("Reload settings")
#define REEXEC_SYSTEMCTL_LABEL _("Reexec systemd")
#define SHOW_SERVICE_INFO_LABEL _("Show service information")
#define RELAUNCH_SERVICE_LABEL _("Relaunch with new configuration")
#define SHOW_SERVICE_LOG_LABEL _("Show service log")
#define SHOW_SERVICE_SOURCE_LABEL _("Show service source file")
#define SHOW_SERVICE_PROPERTIES_LABEL _("Show service properties")
@ -149,5 +150,10 @@
#define SERVICE_RELOAD_SUCCESS_LABEL _("Service has been successfully restarted")
#define SAVE_LABEL _("Save")
#define NULL_LABEL _("Null")
#define UNIT_FILE_LABEL _("Unit file:")
#define UNIT_STATE_LABEL _("Unit file state:")
#define ACTIVATED_LABEL _("Activated:")
#define DEACTIVATED_LABEL _("Deactivated:")
#define service_tooltip_template() yon_char_unite("<u>",target,"</u>\n",_("Description:"),description,"\n",_("Unit file:"),unit,"\n",_("Status:"),status,"\n",)
#define service_tooltip_template(target,description,unit,status,activated,deactivated) yon_char_unite("<u>",target,"</u>\n",_("Description:"),description,"\n",_("Unit file:"),unit,"\n",_("Status:"),status,"\n",_("Activated:"),activated,"\n",_("Deactivated:"),deactivated,NULL)

@ -53,6 +53,8 @@
<column type="gboolean"/>
<!-- column-name UnitState -->
<column type="gchararray"/>
<!-- column-name Tooltip -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkTreeModelFilter" id="SystemFilter">
@ -74,6 +76,254 @@
<column type="gchararray"/>
</columns>
</object>
<object class="GtkBox" id="TooltipBox">
<property name="visible">True</property>
<property name="can-focus">False</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="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Service:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="NameLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Service:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkSeparator">
<property name="visible">True</property>
<property name="can-focus">False</property>
<style>
<class name="separatorBottom"/>
</style>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="DescriptionLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Description:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">2</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="UnitLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">3</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file state:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="StatusQueryLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Unit file state:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">4</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Activated:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="ActivateLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Activated:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">5</property>
</packing>
</child>
<child>
<object class="GtkBox">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="spacing">5</property>
<child>
<object class="GtkLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Deactivated:</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">0</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="DeactivateLabel">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="label" translatable="yes">Deactivated:</property>
<property name="single-line-mode">True</property>
<property name="xalign">0</property>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">1</property>
</packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="position">6</property>
</packing>
</child>
</object>
<object class="GtkListStore" id="UserList">
<columns>
<!-- column-name ConfigAutostart -->
@ -100,6 +350,8 @@
<column type="gboolean"/>
<!-- column-name UnitState -->
<column type="gchararray"/>
<!-- column-name Tooltip -->
<column type="gchararray"/>
</columns>
</object>
<object class="GtkTreeModelFilter" id="UserFilter">
@ -168,12 +420,12 @@
<object class="GtkImage" id="image20">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.update-symbolic</property>
<property name="icon-name">com.ublinux.ubl-settings-services.arrow-round-symbolic</property>
</object>
<object class="GtkImage" id="image21">
<property name="visible">True</property>
<property name="can-focus">False</property>
<property name="icon-name">com.ublinux.ubl-settings-services.update-symbolic</property>
<property name="icon-name">com.ublinux.ubl-settings-services.arrow-round-symbolic</property>
</object>
<object class="GtkImage" id="image3">
<property name="visible">True</property>
@ -412,7 +664,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Reexec systemd</property>
<property name="tooltip-text" translatable="yes">Update</property>
<property name="image">image8</property>
<style>
<class name="thin"/>
@ -440,7 +692,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Relaunch with new configuration</property>
<property name="tooltip-text" translatable="yes">Reload settings</property>
<property name="image">image1</property>
<style>
<class name="thin"/>
@ -457,7 +709,7 @@
<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="tooltip-text" translatable="yes">Reexec systemd</property>
<property name="image">image6</property>
<style>
<class name="thin"/>
@ -486,7 +738,7 @@
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Reexec systemd</property>
<property name="tooltip-text" translatable="yes">Relaunch with new configuration</property>
<property name="image">image20</property>
<style>
<class name="thin"/>
@ -675,6 +927,7 @@
<property name="model">SystemList</property>
<property name="search-column">5</property>
<property name="enable-grid-lines">both</property>
<property name="tooltip-column">12</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
@ -1016,7 +1269,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Reexec systemd</property>
<property name="tooltip-text" translatable="yes">Update</property>
<property name="image">image14</property>
<style>
<class name="thin"/>
@ -1044,7 +1297,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Relaunch with new configuration</property>
<property name="tooltip-text" translatable="yes">Reload settings</property>
<property name="image">image13</property>
<style>
<class name="thin"/>
@ -1061,7 +1314,7 @@
<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="tooltip-text" translatable="yes">Reexec systemd</property>
<property name="image">image2</property>
<style>
<class name="thin"/>
@ -1090,7 +1343,7 @@
<property name="sensitive">False</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Reexec systemd</property>
<property name="tooltip-text" translatable="yes">Relaunch with new configuration</property>
<property name="image">image21</property>
<style>
<class name="thin"/>
@ -1275,6 +1528,7 @@
<property name="model">UserList</property>
<property name="search-column">5</property>
<property name="enable-grid-lines">both</property>
<property name="tooltip-column">12</property>
<child internal-child="selection">
<object class="GtkTreeSelection"/>
</child>
@ -1661,7 +1915,7 @@
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">True</property>
<property name="tooltip-text" translatable="yes">Restart session</property>
<property name="tooltip-text" translatable="yes">Update</property>
<property name="image">image19</property>
<style>
<class name="thin"/>

@ -137,7 +137,7 @@ msgstr ""
msgid "Service:"
msgstr ""
#: source/ubl-strings.h:37
#: source/ubl-strings.h:37 source/ubl-strings.h:159
msgid "Description:"
msgstr ""
@ -319,173 +319,201 @@ msgid "Show service information"
msgstr ""
#: source/ubl-strings.h:98
msgid "Show service log"
msgid "Relaunch with new configuration"
msgstr ""
#: source/ubl-strings.h:99
msgid "Show service source file"
msgid "Show service log"
msgstr ""
#: source/ubl-strings.h:100
msgid "Show service properties"
msgid "Show service source file"
msgstr ""
#: source/ubl-strings.h:101
msgid "Show service properties"
msgstr ""
#: source/ubl-strings.h:102
msgid "Show..."
msgstr ""
#: source/ubl-strings.h:103
#: source/ubl-strings.h:104
msgid "Edit configuration file"
msgstr ""
#: source/ubl-strings.h:105
#: source/ubl-strings.h:106
msgid "Show inactive"
msgstr ""
#: source/ubl-strings.h:106
#: source/ubl-strings.h:107
msgid "Show unloaded"
msgstr ""
#: source/ubl-strings.h:108
#: source/ubl-strings.h:109
msgid "File"
msgstr ""
#: source/ubl-strings.h:109
#: source/ubl-strings.h:110
msgid "Change date"
msgstr ""
#: source/ubl-strings.h:110
#: source/ubl-strings.h:111
msgid "Description"
msgstr ""
#: source/ubl-strings.h:111
#: source/ubl-strings.h:112
msgid "Edit"
msgstr ""
#: source/ubl-strings.h:113
#: source/ubl-strings.h:114
msgid "Session ID"
msgstr ""
#: source/ubl-strings.h:114
#: source/ubl-strings.h:115
msgid "User ID"
msgstr ""
#: source/ubl-strings.h:115
#: source/ubl-strings.h:116
msgid "User name"
msgstr ""
#: source/ubl-strings.h:116
#: source/ubl-strings.h:117
msgid "Seat ID"
msgstr ""
#: source/ubl-strings.h:118
#: source/ubl-strings.h:119
msgid "Start session"
msgstr ""
#: source/ubl-strings.h:119
#: source/ubl-strings.h:120
msgid "Stop session"
msgstr ""
#: source/ubl-strings.h:120
#: source/ubl-strings.h:121
msgid "Lock session"
msgstr ""
#: source/ubl-strings.h:122
#: source/ubl-strings.h:123
msgid "Timer"
msgstr ""
#: source/ubl-strings.h:123
#: source/ubl-strings.h:124
msgid "Next"
msgstr ""
#: source/ubl-strings.h:124
#: source/ubl-strings.h:125
msgid "Left"
msgstr ""
#: source/ubl-strings.h:125
#: source/ubl-strings.h:126
msgid "Last"
msgstr ""
#: source/ubl-strings.h:126
#: source/ubl-strings.h:127
msgid "Passed"
msgstr ""
#: source/ubl-strings.h:127
#: source/ubl-strings.h:128
msgid "Activates"
msgstr ""
#: source/ubl-strings.h:129
#: source/ubl-strings.h:130
msgid "active"
msgstr ""
#: source/ubl-strings.h:130
#: source/ubl-strings.h:131
msgid "dead"
msgstr ""
#: source/ubl-strings.h:131
#: source/ubl-strings.h:132
msgid "waiting"
msgstr ""
#: source/ubl-strings.h:132
#: source/ubl-strings.h:133
msgid "running"
msgstr ""
#: source/ubl-strings.h:133
#: source/ubl-strings.h:134
msgid "listening"
msgstr ""
#: source/ubl-strings.h:134
#: source/ubl-strings.h:135
msgid "exited"
msgstr ""
#: source/ubl-strings.h:135
#: source/ubl-strings.h:136
msgid "mounted"
msgstr ""
#: source/ubl-strings.h:136
#: source/ubl-strings.h:137
msgid "plugged"
msgstr ""
#: source/ubl-strings.h:137
#: source/ubl-strings.h:138
msgid "abandoned"
msgstr ""
#: source/ubl-strings.h:139
#: source/ubl-strings.h:140
msgid "State of "
msgstr ""
#: source/ubl-strings.h:140
#: source/ubl-strings.h:141
msgid "View"
msgstr ""
#: source/ubl-strings.h:140
#: source/ubl-strings.h:141
msgid "log"
msgstr ""
#: source/ubl-strings.h:141
#: source/ubl-strings.h:142
msgid "Edit unit file"
msgstr ""
#: source/ubl-strings.h:143
#: source/ubl-strings.h:144
msgid "Failed to re-execute systemd"
msgstr ""
#: source/ubl-strings.h:144
#: source/ubl-strings.h:145
msgid "failed to relaunch systemd"
msgstr ""
#: source/ubl-strings.h:146
#: source/ubl-strings.h:147
msgid "Systemd has been re-executed"
msgstr ""
#: source/ubl-strings.h:147
#: source/ubl-strings.h:148
msgid "Systemd has been relaunched"
msgstr ""
#: source/ubl-strings.h:149
#: source/ubl-strings.h:150
msgid "Service has been successfully restarted"
msgstr ""
#: source/ubl-strings.h:151
#: source/ubl-strings.h:152
msgid "Save"
msgstr ""
#: source/ubl-strings.h:153
msgid "Null"
msgstr ""
#: source/ubl-strings.h:154 source/ubl-strings.h:159
msgid "Unit file:"
msgstr ""
#: source/ubl-strings.h:155
msgid "Unit file state:"
msgstr ""
#: source/ubl-strings.h:156 source/ubl-strings.h:159
msgid "Activated:"
msgstr ""
#: source/ubl-strings.h:157 source/ubl-strings.h:159
msgid "Deactivated:"
msgstr ""
#: source/ubl-strings.h:159
msgid "Status:"
msgstr ""

@ -137,7 +137,7 @@ msgstr "Открыть лог сервиса"
msgid "Service:"
msgstr "Сервис:"
#: source/ubl-strings.h:37
#: source/ubl-strings.h:37 source/ubl-strings.h:159
msgid "Description:"
msgstr "Описание:"
@ -321,173 +321,202 @@ msgid "Show service information"
msgstr "Показать информацию о сервисе"
#: source/ubl-strings.h:98
#, fuzzy
msgid "Relaunch with new configuration"
msgstr "Перезапустить с новой конфигурацией"
#: source/ubl-strings.h:99
msgid "Show service log"
msgstr "Открыть лог сервиса"
#: source/ubl-strings.h:99
#: source/ubl-strings.h:100
msgid "Show service source file"
msgstr "Показать конфигурационный файл сервиса"
#: source/ubl-strings.h:100
#: source/ubl-strings.h:101
msgid "Show service properties"
msgstr "Открыть свойства сервиса"
#: source/ubl-strings.h:101
#: source/ubl-strings.h:102
msgid "Show..."
msgstr "Показать..."
#: source/ubl-strings.h:103
#: source/ubl-strings.h:104
msgid "Edit configuration file"
msgstr "Редактировать в конфигурации"
#: source/ubl-strings.h:105
#: source/ubl-strings.h:106
msgid "Show inactive"
msgstr "Показать неактивные"
#: source/ubl-strings.h:106
#: source/ubl-strings.h:107
msgid "Show unloaded"
msgstr "Показать незагруженные"
#: source/ubl-strings.h:108
#: source/ubl-strings.h:109
msgid "File"
msgstr "Файл"
#: source/ubl-strings.h:109
#: source/ubl-strings.h:110
msgid "Change date"
msgstr "Изменён"
#: source/ubl-strings.h:110
#: source/ubl-strings.h:111
msgid "Description"
msgstr "Описание"
#: source/ubl-strings.h:111
#: source/ubl-strings.h:112
msgid "Edit"
msgstr "Редактировать"
#: source/ubl-strings.h:113
#: source/ubl-strings.h:114
msgid "Session ID"
msgstr "ID сессии"
#: source/ubl-strings.h:114
#: source/ubl-strings.h:115
msgid "User ID"
msgstr "ID пользователя"
#: source/ubl-strings.h:115
#: source/ubl-strings.h:116
msgid "User name"
msgstr "Имя пользователя"
#: source/ubl-strings.h:116
#: source/ubl-strings.h:117
msgid "Seat ID"
msgstr "Seat ID"
#: source/ubl-strings.h:118
#: source/ubl-strings.h:119
msgid "Start session"
msgstr "Запустить сессию"
#: source/ubl-strings.h:119
#: source/ubl-strings.h:120
msgid "Stop session"
msgstr "Остановить сессию"
#: source/ubl-strings.h:120
#: source/ubl-strings.h:121
msgid "Lock session"
msgstr "Заблокировать сессию"
#: source/ubl-strings.h:122
#: source/ubl-strings.h:123
msgid "Timer"
msgstr "Таймер"
#: source/ubl-strings.h:123
#: source/ubl-strings.h:124
msgid "Next"
msgstr "Следующий"
#: source/ubl-strings.h:124
#: source/ubl-strings.h:125
msgid "Left"
msgstr "Осталось времени"
#: source/ubl-strings.h:125
#: source/ubl-strings.h:126
msgid "Last"
msgstr "Последний"
#: source/ubl-strings.h:126
#: source/ubl-strings.h:127
msgid "Passed"
msgstr "Пройденный"
#: source/ubl-strings.h:127
#: source/ubl-strings.h:128
msgid "Activates"
msgstr "Активируется"
#: source/ubl-strings.h:129
#: source/ubl-strings.h:130
msgid "active"
msgstr "активен"
#: source/ubl-strings.h:130
#: source/ubl-strings.h:131
msgid "dead"
msgstr "остановлен"
#: source/ubl-strings.h:131
#: source/ubl-strings.h:132
msgid "waiting"
msgstr "ожидание"
#: source/ubl-strings.h:132
#: source/ubl-strings.h:133
msgid "running"
msgstr "работает"
#: source/ubl-strings.h:133
#: source/ubl-strings.h:134
msgid "listening"
msgstr "прослушивание"
#: source/ubl-strings.h:134
#: source/ubl-strings.h:135
msgid "exited"
msgstr "завершён"
#: source/ubl-strings.h:135
#: source/ubl-strings.h:136
msgid "mounted"
msgstr "примонтирован"
#: source/ubl-strings.h:136
#: source/ubl-strings.h:137
msgid "plugged"
msgstr "подключен"
#: source/ubl-strings.h:137
#: source/ubl-strings.h:138
msgid "abandoned"
msgstr "заброшен"
#: source/ubl-strings.h:139
#: source/ubl-strings.h:140
msgid "State of "
msgstr "Состояние сервиса "
#: source/ubl-strings.h:140
#: source/ubl-strings.h:141
msgid "View"
msgstr "Просмотр"
#: source/ubl-strings.h:140
#: source/ubl-strings.h:141
msgid "log"
msgstr "лога"
#: source/ubl-strings.h:141
#: source/ubl-strings.h:142
msgid "Edit unit file"
msgstr "Редактировать юнит-файл"
#: source/ubl-strings.h:143
#: source/ubl-strings.h:144
msgid "Failed to re-execute systemd"
msgstr "Ошибка перезагрузки systemd"
#: source/ubl-strings.h:144
#: source/ubl-strings.h:145
msgid "failed to relaunch systemd"
msgstr "Ошибка перезапуска systemd"
#: source/ubl-strings.h:146
#: source/ubl-strings.h:147
msgid "Systemd has been re-executed"
msgstr "Systemd был успешно перезапущен"
#: source/ubl-strings.h:147
#: source/ubl-strings.h:148
msgid "Systemd has been relaunched"
msgstr "Systemd был успешно перезагружен"
#: source/ubl-strings.h:149
#: source/ubl-strings.h:150
msgid "Service has been successfully restarted"
msgstr "Сервис был успешно перезапущен"
#: source/ubl-strings.h:151
#: source/ubl-strings.h:152
msgid "Save"
msgstr "Сохранить"
#: source/ubl-strings.h:153
msgid "Null"
msgstr "Нет данных"
#: source/ubl-strings.h:154 source/ubl-strings.h:159
msgid "Unit file:"
msgstr "Юнит-файл:"
#: source/ubl-strings.h:155
msgid "Unit file state:"
msgstr "Статус юнит-файла:"
#: source/ubl-strings.h:156 source/ubl-strings.h:159
msgid "Activated:"
msgstr "Активирован:"
#: source/ubl-strings.h:157 source/ubl-strings.h:159
msgid "Deactivated:"
msgstr "Деактивирован:"
#: source/ubl-strings.h:159
msgid "Status:"
msgstr "Статус:"

Loading…
Cancel
Save