From f613d6805234f95e6d9fe11226e29746f3a75420 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 14 Apr 2025 17:03:59 +0600 Subject: [PATCH 01/12] Changed TTY placeholder text --- ubl-settings-logging-journald.glade | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ubl-settings-logging-journald.glade b/ubl-settings-logging-journald.glade index af38e32..1010be1 100644 --- a/ubl-settings-logging-journald.glade +++ b/ubl-settings-logging-journald.glade @@ -1,5 +1,5 @@ - + @@ -666,7 +666,7 @@ True False True - 0 + /dev/console False -- 2.35.1 From 9e0fc33e40b6e4f3888db4e218535d5214f8aef5 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 14 Apr 2025 17:32:24 +0600 Subject: [PATCH 02/12] Localisation update --- source/ubl-settings-logging.c | 4 +- source/ubl-settings-logging.h | 1 + source/ubl-strings.h | 2 +- ubl-settings-logging.pot | 319 ++++++++++++++++---------------- ubl-settings-logging_ru.po | 330 ++++++++++++++++++---------------- 5 files changed, 332 insertions(+), 324 deletions(-) diff --git a/source/ubl-settings-logging.c b/source/ubl-settings-logging.c index 57cd416..5d03680 100644 --- a/source/ubl-settings-logging.c +++ b/source/ubl-settings-logging.c @@ -440,6 +440,7 @@ void on_inspector_open(GtkWidget *, main_window *widgets){ inspector_window *window = malloc(sizeof(inspector_window)); GtkBuilder *builder = gtk_builder_new_from_resource(glade_inspector_path); window->MainWindow=yon_gtk_builder_get_widget(builder,"MainWindow"); + window->TitleLabel=yon_gtk_builder_get_widget(builder,"headerTopic"); window->ShowSinceBootButton=yon_gtk_builder_get_widget(builder,"ShowSinceBootButton"); window->NewMessagesButton=yon_gtk_builder_get_widget(builder,"NewMessagesButton"); window->ShowKernelButton=yon_gtk_builder_get_widget(builder,"ShowKernelButton"); @@ -453,7 +454,6 @@ void on_inspector_open(GtkWidget *, main_window *widgets){ window->JournaldTree=yon_gtk_builder_get_widget(builder,"JournaldTree"); window->list=GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); yon_window_config_custom_window_setup(GTK_WINDOW(window->MainWindow),"InspectorWindow"); - gtk_window_set_title(GTK_WINDOW(window->MainWindow),INSPECTOR_TITLE_LABEL); gtk_window_set_transient_for(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window)); GtkTreeModel *model = GTK_TREE_MODEL(widgets->list); GList *list = gtk_tree_view_get_columns(GTK_TREE_VIEW(window->JournaldTree)); @@ -481,6 +481,8 @@ void on_inspector_open(GtkWidget *, main_window *widgets){ gtk_tree_model_get(model,&iter,0,&name,1,&paths,-1); window->journal_name=name; window->journal_paths=yon_char_parse(paths,&window->journal_size,"\n"); + yon_gtk_window_setup(GTK_WINDOW(window->MainWindow),NULL,INSPECTOR_TITLE_LABEL(name),icon_path,"inspector_window"); + gtk_label_set_text(GTK_LABEL(window->TitleLabel),INSPECTOR_TITLE_LABEL(name)); config_str final=NULL; int final_size=0; for (int i=0;ijournal_size;i++){ diff --git a/source/ubl-settings-logging.h b/source/ubl-settings-logging.h index d9fc736..93cff37 100644 --- a/source/ubl-settings-logging.h +++ b/source/ubl-settings-logging.h @@ -194,6 +194,7 @@ typedef struct { typedef struct { GtkWidget *MainWindow; + GtkWidget *TitleLabel; GtkWidget *plugBox; GtkWidget *ShowSinceBootButton; GtkWidget *NewMessagesButton; diff --git a/source/ubl-strings.h b/source/ubl-strings.h index e7687a4..9f9d0f6 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -46,7 +46,7 @@ #define SAVE_LABEL _("Save") //ubl-settings-logging-inspector.glade -#define INSPECTOR_TITLE_LABEL _("Logs and events - log inspector") +#define INSPECTOR_TITLE_LABEL(target) yon_char_unite(_("Inspect")," ",target,NULL) #define TOOLTIP_BOOT_LABEL _("Show messages since the current system boot") #define TOOLTIP_FOLLOW_LABEL _("Follow for new messages") #define TOOLTIP_KERNEL_LABEL _("Show kernel ring buffer") diff --git a/ubl-settings-logging.pot b/ubl-settings-logging.pot index 495bb4e..3852c94 100644 --- a/ubl-settings-logging.pot +++ b/ubl-settings-logging.pot @@ -73,7 +73,7 @@ msgstr "" msgid "Inspect log" msgstr "" -#: source/ubl-strings.h:22 source/ubl-strings.h:186 +#: source/ubl-strings.h:22 source/ubl-strings.h:187 msgid "Configure log" msgstr "" @@ -169,619 +169,612 @@ msgstr "" msgid "Graphics X session log" msgstr "" -#: source/ubl-strings.h:48 -msgid "Logs and events - log inspector" +#: source/ubl-strings.h:46 +msgid "Save" msgstr "" #: source/ubl-strings.h:49 -msgid "Show messages since the current system boot" +msgid "Inspect" msgstr "" #: source/ubl-strings.h:50 -msgid "Follow for new messages" +msgid "Show messages since the current system boot" msgstr "" #: source/ubl-strings.h:51 -msgid "Show kernel ring buffer" +msgid "Follow for new messages" msgstr "" #: source/ubl-strings.h:52 -msgid "Show only priority error messages, critical messages and warnings" +msgid "Show kernel ring buffer" msgstr "" #: source/ubl-strings.h:53 -msgid "Show all boots" +msgid "Show only priority error messages, critical messages and warnings" msgstr "" #: source/ubl-strings.h:54 -msgid "Show a list of all units, ordered by the time of their initialisation" +msgid "Show all boots" msgstr "" #: source/ubl-strings.h:55 -msgid "Show tree of time-critical initialization unit chain" +msgid "Show a list of all units, ordered by the time of their initialisation" msgstr "" #: source/ubl-strings.h:56 -msgid "Update" +msgid "Show tree of time-critical initialization unit chain" msgstr "" #: source/ubl-strings.h:57 -msgid "Date" +msgid "Update" msgstr "" #: source/ubl-strings.h:58 -msgid "Hostname" +msgid "Date" msgstr "" #: source/ubl-strings.h:59 -msgid "Process" +msgid "Hostname" msgstr "" #: source/ubl-strings.h:60 +msgid "Process" +msgstr "" + +#: source/ubl-strings.h:61 msgid "Log" msgstr "" -#: source/ubl-strings.h:63 +#: source/ubl-strings.h:64 msgid "Logs and events - journald configuration" msgstr "" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:65 msgid "Description:" msgstr "" -#: source/ubl-strings.h:65 +#: source/ubl-strings.h:66 msgid "Journal storage place:" msgstr "" -#: source/ubl-strings.h:66 source/ubl-strings.h:67 +#: source/ubl-strings.h:67 source/ubl-strings.h:68 msgid "Use compression:" msgstr "" -#: source/ubl-strings.h:68 +#: source/ubl-strings.h:69 msgid "Split journal files:" msgstr "" -#: source/ubl-strings.h:69 +#: source/ubl-strings.h:70 msgid "Log recording journal interval:" msgstr "" -#: source/ubl-strings.h:70 +#: source/ubl-strings.h:71 msgid "Records amount:" msgstr "" -#: source/ubl-strings.h:71 +#: source/ubl-strings.h:72 msgid "Maximum size of all logs:" msgstr "" -#: source/ubl-strings.h:72 +#: source/ubl-strings.h:73 msgid "Maximum size of rotation journal:" msgstr "" -#: source/ubl-strings.h:73 +#: source/ubl-strings.h:74 msgid "Leave free space at storage:" msgstr "" -#: source/ubl-strings.h:74 +#: source/ubl-strings.h:75 msgid "Redirect to console:" msgstr "" -#: source/ubl-strings.h:75 +#: source/ubl-strings.h:76 msgid "TTY:" msgstr "" -#: source/ubl-strings.h:76 +#: source/ubl-strings.h:77 msgid "Type of forwarded messages:" msgstr "" -#: source/ubl-strings.h:77 +#: source/ubl-strings.h:78 msgid "Journal configuration" msgstr "" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:79 msgid "Total log size:" msgstr "" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:80 msgid "Lower size to:" msgstr "" -#: source/ubl-strings.h:80 +#: source/ubl-strings.h:81 msgid "Apply" msgstr "" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:82 msgid "Statistics" msgstr "" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:83 msgid "Default" msgstr "" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:84 msgid "RAM" msgstr "" -#: source/ubl-strings.h:84 +#: source/ubl-strings.h:85 msgid "Drive" msgstr "" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:86 msgid "Auto" msgstr "" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:87 msgid "None" msgstr "" -#: source/ubl-strings.h:87 +#: source/ubl-strings.h:88 msgid "Yes" msgstr "" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:89 msgid "No" msgstr "" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:90 msgid "After" msgstr "" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:91 msgid "Kb" msgstr "" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:92 msgid "Mb" msgstr "" -#: source/ubl-strings.h:92 +#: source/ubl-strings.h:93 msgid "Gb" msgstr "" -#: source/ubl-strings.h:93 +#: source/ubl-strings.h:94 msgid "Minutes" msgstr "" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:95 msgid "Hours" msgstr "" -#: source/ubl-strings.h:95 +#: source/ubl-strings.h:96 msgid "Days" msgstr "" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:97 msgid "Weeks" msgstr "" -#: source/ubl-strings.h:97 +#: source/ubl-strings.h:98 msgid "Years" msgstr "" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:99 msgid "Reset" msgstr "" -#: source/ubl-strings.h:101 +#: source/ubl-strings.h:102 msgid "Logs and events - logrotate configuration" msgstr "" -#: source/ubl-strings.h:102 +#: source/ubl-strings.h:103 msgid "Log/Journal:" msgstr "" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:104 msgid "Paths to log and journals files" msgstr "" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:105 msgid "On" msgstr "" -#: source/ubl-strings.h:105 +#: source/ubl-strings.h:106 msgid "Off" msgstr "" -#: source/ubl-strings.h:106 source/ubl-strings.h:160 +#: source/ubl-strings.h:107 source/ubl-strings.h:161 msgid "Scenarios" msgstr "" -#: source/ubl-strings.h:107 source/ubl-strings.h:159 +#: source/ubl-strings.h:108 source/ubl-strings.h:160 msgid "Scenarios are running for each rotated journal" msgstr "" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:109 msgid "Command before rotation (one time):" msgstr "" -#: source/ubl-strings.h:109 +#: source/ubl-strings.h:110 msgid "Command after rotation (one time):" msgstr "" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:111 msgid "Command before rotation:" msgstr "" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:112 msgid "Command after rotation:" msgstr "" -#: source/ubl-strings.h:112 +#: source/ubl-strings.h:113 msgid "Rotation period:" msgstr "" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:114 msgid "Maximum size of file:" msgstr "" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:115 msgid "Checking frequency configuration" msgstr "" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:116 msgid "File amount:" msgstr "" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:117 msgid "Store at:" msgstr "" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:118 msgid "Rotation as user:" msgstr "" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:119 msgid "Rotation as group:" msgstr "" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:120 msgid "Rotation configuration" msgstr "" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:121 msgid "Error processing:" msgstr "" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:122 msgid "Rotation of jurnal even when it is empty:" msgstr "" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:123 msgid "Do not rotate journal younger than" msgstr "" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:124 msgid "days" msgstr "" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:125 msgid "Delete rotated journals older than" msgstr "" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:126 msgid "Rotate journals if size more than" msgstr "" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:127 msgid "but not earlier than the specified time interval" msgstr "" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:128 msgid "before specified time interval" msgstr "" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:129 msgid "File choosing configuration" msgstr "" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:130 msgid "Create log" msgstr "" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:131 msgid "as user:" msgstr "" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:132 msgid "as group:" msgstr "" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:133 msgid "rules:" msgstr "" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:134 msgid "" "Cut source journal fileafter copy creating instead of moving old journal " "file and creating new one" msgstr "" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:135 msgid "Files and directories configuration" msgstr "" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:136 msgid "Delay compression by one journal in queue:" msgstr "" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:137 msgid "Compression configuration" msgstr "" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:138 msgid "Save original log file after rotation if it has specified extension:" msgstr "" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:139 msgid "Add date of rotation before log header" msgstr "" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:140 msgid "Number from which numbering of old logs will begin" msgstr "" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:141 msgid "Filename configuration" msgstr "" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:142 msgid "Email after rotation:" msgstr "" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:143 msgid "adress:" msgstr "" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:144 msgid "contents:" msgstr "" -#: source/ubl-strings.h:144 source/ubl-strings.h:157 +#: source/ubl-strings.h:145 source/ubl-strings.h:158 msgid "Message configuration" msgstr "" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:146 msgid "Manual input:" msgstr "" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:147 msgid "Log (-s) size:" msgstr "" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:148 msgid "Same directory" msgstr "" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:149 msgid "Separate directory" msgstr "" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:150 msgid "Output errors if log file does not exist*" msgstr "" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:151 msgid "Do not output errors if log file does not exist" msgstr "" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:152 msgid "Do not output" msgstr "" -#: source/ubl-strings.h:152 +#: source/ubl-strings.h:153 msgid "Output errors" msgstr "" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:154 msgid "Send Email" msgstr "" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:155 msgid "Don't send Email" msgstr "" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:156 msgid "First rotated copy" msgstr "" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:157 msgid "Last rotated copy" msgstr "" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:159 msgid "Endwork command:" msgstr "" -#: source/ubl-strings.h:161 +#: source/ubl-strings.h:162 msgid "Hourly" msgstr "" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:163 msgid "Daily" msgstr "" -#: source/ubl-strings.h:163 +#: source/ubl-strings.h:164 msgid "Weekly*" msgstr "" -#: source/ubl-strings.h:164 +#: source/ubl-strings.h:165 msgid "Monthly" msgstr "" -#: source/ubl-strings.h:165 +#: source/ubl-strings.h:166 msgid "Yearly" msgstr "" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:167 msgid "Monday" msgstr "" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:168 msgid "Tuesday" msgstr "" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:169 msgid "Wednesday" msgstr "" -#: source/ubl-strings.h:169 +#: source/ubl-strings.h:170 msgid "Thursday" msgstr "" -#: source/ubl-strings.h:170 +#: source/ubl-strings.h:171 msgid "Friday" msgstr "" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:172 msgid "Saturday" msgstr "" -#: source/ubl-strings.h:172 +#: source/ubl-strings.h:173 msgid "Sunday*" msgstr "" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:174 msgid "Same record already exists" msgstr "" -#: source/ubl-strings.h:174 +#: source/ubl-strings.h:175 msgid "Empty important field" msgstr "" -#: source/ubl-strings.h:175 +#: source/ubl-strings.h:176 msgid "Repeating paths" msgstr "" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:177 msgid "Write down all important fields" msgstr "" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:178 msgid "Command is invalid" msgstr "" -#: source/ubl-strings.h:180 +#: source/ubl-strings.h:181 msgid "Logs and events - logrotate table" msgstr "" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:182 msgid "System configuration" msgstr "" -#: source/ubl-strings.h:182 +#: source/ubl-strings.h:183 msgid "Applications configuration" msgstr "" -#: source/ubl-strings.h:183 +#: source/ubl-strings.h:184 msgid "Import log configuration" msgstr "" -#: source/ubl-strings.h:184 +#: source/ubl-strings.h:185 msgid "Add log configuration" msgstr "" -#: source/ubl-strings.h:185 +#: source/ubl-strings.h:186 msgid "Remove log configuration" msgstr "" -#: source/ubl-strings.h:189 +#: source/ubl-strings.h:190 msgid "Logs and events - journal configuration" msgstr "" -#: source/ubl-strings.h:190 +#: source/ubl-strings.h:191 msgid "Path (-s):" msgstr "" -#: source/ubl-strings.h:191 +#: source/ubl-strings.h:192 msgid "Control:" msgstr "" -#: source/ubl-strings.h:192 +#: source/ubl-strings.h:193 msgid "Log file" msgstr "" -#: source/ubl-strings.h:193 +#: source/ubl-strings.h:194 msgid "Name:" msgstr "" -#: source/ubl-strings.h:194 +#: source/ubl-strings.h:195 msgid "Log size:" msgstr "" -#: source/ubl-strings.h:195 +#: source/ubl-strings.h:196 msgid "Journal/log files were not found" msgstr "" -#: source/ubl-strings.h:198 +#: source/ubl-strings.h:199 msgid "Logs and events - rules" msgstr "" -#: source/ubl-strings.h:199 +#: source/ubl-strings.h:200 msgid "Owner rules" msgstr "" -#: source/ubl-strings.h:200 +#: source/ubl-strings.h:201 msgid "Group rules" msgstr "" -#: source/ubl-strings.h:201 +#: source/ubl-strings.h:202 msgid "Public rules" msgstr "" -#: source/ubl-strings.h:202 +#: source/ubl-strings.h:203 msgid "Read" msgstr "" -#: source/ubl-strings.h:203 +#: source/ubl-strings.h:204 msgid "Write" msgstr "" -#: source/ubl-strings.h:204 +#: source/ubl-strings.h:205 msgid "Execute" msgstr "" -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:206 msgid "Value:" msgstr "" -#: source/ubl-strings.h:208 +#: source/ubl-strings.h:209 msgid ": no such file(s)" msgstr "" -#: source/ubl-strings.h:209 +#: source/ubl-strings.h:210 msgid "Parameter" msgstr "" -#: source/ubl-strings.h:210 +#: source/ubl-strings.h:211 msgid "Old value" msgstr "" -#: source/ubl-strings.h:211 +#: source/ubl-strings.h:212 msgid "New value" msgstr "" -#: source/ubl-strings.h:213 +#: source/ubl-strings.h:214 msgid "Logs and events - choose a path" msgstr "" -#: source/ubl-strings.h:214 +#: source/ubl-strings.h:215 msgid "Logs and events - saving" msgstr "" -#: source/ubl-strings.h:216 +#: source/ubl-strings.h:217 msgid "Authorization has been elevated" msgstr "" -#: source/ubl-strings.h:217 +#: source/ubl-strings.h:218 msgid "Authorization has been unelevated" msgstr "" - -msgid "System event log rotation service" -msgstr "" - -msgid "" -"Service for collecting messages from system events of active network " -"devices" -msgstr "" - -msgid "Save" -msgstr "" \ No newline at end of file diff --git a/ubl-settings-logging_ru.po b/ubl-settings-logging_ru.po index 2f2f5ee..6a1f703 100644 --- a/ubl-settings-logging_ru.po +++ b/ubl-settings-logging_ru.po @@ -74,7 +74,7 @@ msgstr "Описание" msgid "Inspect log" msgstr "Просмотреть лог" -#: source/ubl-strings.h:22 source/ubl-strings.h:186 +#: source/ubl-strings.h:22 source/ubl-strings.h:187 msgid "Configure log" msgstr "Настроить лог" @@ -170,331 +170,335 @@ msgstr "Журнал работы дисплейного сервера X.org" msgid "Graphics X session log" msgstr "Журнал сеансов графической системы X" -#: source/ubl-strings.h:48 -msgid "Logs and events - log inspector" -msgstr "Логи и журналы событий - просмотр журнала" +#: source/ubl-strings.h:46 +msgid "Save" +msgstr "Сохранить" #: source/ubl-strings.h:49 +msgid "Inspect" +msgstr "Просмотр" + +#: source/ubl-strings.h:50 msgid "Show messages since the current system boot" msgstr "Показать сообщения с момента загрузки системы" -#: source/ubl-strings.h:50 +#: source/ubl-strings.h:51 msgid "Follow for new messages" msgstr "Следить за появлением новых сообщений" -#: source/ubl-strings.h:51 +#: source/ubl-strings.h:52 msgid "Show kernel ring buffer" msgstr "Показать кольцевой буфер ядра" -#: source/ubl-strings.h:52 +#: source/ubl-strings.h:53 msgid "Show only priority error messages, critical messages and warnings" msgstr "" "Показать только приоритетные сообщения об ошибках, критических сообщениях и " "предупреждениях" -#: source/ubl-strings.h:53 +#: source/ubl-strings.h:54 msgid "Show all boots" msgstr "Показать все загрузки в журнале" -#: source/ubl-strings.h:54 +#: source/ubl-strings.h:55 msgid "Show a list of all units, ordered by the time of their initialisation" msgstr "" "Показать список всех работающих юнитов, упорядоченных по времени их " "инициализации" -#: source/ubl-strings.h:55 +#: source/ubl-strings.h:56 msgid "Show tree of time-critical initialization unit chain" msgstr "Показать дерево критической по времени цепочки юнитов инициализации" -#: source/ubl-strings.h:56 +#: source/ubl-strings.h:57 msgid "Update" msgstr "Обновить" -#: source/ubl-strings.h:57 +#: source/ubl-strings.h:58 msgid "Date" msgstr "Дата" -#: source/ubl-strings.h:58 +#: source/ubl-strings.h:59 msgid "Hostname" msgstr "Имя хоста" -#: source/ubl-strings.h:59 +#: source/ubl-strings.h:60 msgid "Process" msgstr "Процесс" -#: source/ubl-strings.h:60 +#: source/ubl-strings.h:61 msgid "Log" msgstr "Запись лога" -#: source/ubl-strings.h:63 +#: source/ubl-strings.h:64 msgid "Logs and events - journald configuration" msgstr "Логи и журналы событий - конфигурация сервиса journald" -#: source/ubl-strings.h:64 +#: source/ubl-strings.h:65 msgid "Description:" msgstr "Описание:" -#: source/ubl-strings.h:65 +#: source/ubl-strings.h:66 msgid "Journal storage place:" msgstr "Место хранения журнала:" -#: source/ubl-strings.h:66 source/ubl-strings.h:67 +#: source/ubl-strings.h:67 source/ubl-strings.h:68 msgid "Use compression:" msgstr "Использовать сжатие:" -#: source/ubl-strings.h:68 +#: source/ubl-strings.h:69 msgid "Split journal files:" msgstr "Разделять файлы журнала:" -#: source/ubl-strings.h:69 +#: source/ubl-strings.h:70 msgid "Log recording journal interval:" msgstr "Интервал записи журнала:" -#: source/ubl-strings.h:70 +#: source/ubl-strings.h:71 msgid "Records amount:" msgstr "Количество записей:" -#: source/ubl-strings.h:71 +#: source/ubl-strings.h:72 msgid "Maximum size of all logs:" msgstr "Максимальный размер всех журналов:" -#: source/ubl-strings.h:72 +#: source/ubl-strings.h:73 msgid "Maximum size of rotation journal:" msgstr "Максимальный размер журнала для ротации:" -#: source/ubl-strings.h:73 +#: source/ubl-strings.h:74 msgid "Leave free space at storage:" msgstr "Оставлять в хранилище свободным:" -#: source/ubl-strings.h:74 +#: source/ubl-strings.h:75 msgid "Redirect to console:" msgstr "Перенаправление в консоль:" -#: source/ubl-strings.h:75 +#: source/ubl-strings.h:76 msgid "TTY:" msgstr "TTY:" -#: source/ubl-strings.h:76 +#: source/ubl-strings.h:77 msgid "Type of forwarded messages:" msgstr "Тип перенаправляемых сообщений:" -#: source/ubl-strings.h:77 +#: source/ubl-strings.h:78 msgid "Journal configuration" msgstr "Настройка файла журнала" -#: source/ubl-strings.h:78 +#: source/ubl-strings.h:79 msgid "Total log size:" msgstr "Общий размер журналов:" -#: source/ubl-strings.h:79 +#: source/ubl-strings.h:80 msgid "Lower size to:" msgstr "Уменьшить размер до:" -#: source/ubl-strings.h:80 +#: source/ubl-strings.h:81 msgid "Apply" msgstr "Применить" -#: source/ubl-strings.h:81 +#: source/ubl-strings.h:82 msgid "Statistics" msgstr "Статистика" -#: source/ubl-strings.h:82 +#: source/ubl-strings.h:83 msgid "Default" msgstr "По умолчанию" -#: source/ubl-strings.h:83 +#: source/ubl-strings.h:84 msgid "RAM" msgstr "Оперативная память" -#: source/ubl-strings.h:84 +#: source/ubl-strings.h:85 msgid "Drive" msgstr "Диск" -#: source/ubl-strings.h:85 +#: source/ubl-strings.h:86 msgid "Auto" msgstr "Автоматически" -#: source/ubl-strings.h:86 +#: source/ubl-strings.h:87 msgid "None" msgstr "Нет" -#: source/ubl-strings.h:87 +#: source/ubl-strings.h:88 msgid "Yes" msgstr "Да" -#: source/ubl-strings.h:88 +#: source/ubl-strings.h:89 msgid "No" msgstr "Нет" -#: source/ubl-strings.h:89 +#: source/ubl-strings.h:90 msgid "After" msgstr "После" -#: source/ubl-strings.h:90 +#: source/ubl-strings.h:91 msgid "Kb" msgstr "Кб" -#: source/ubl-strings.h:91 +#: source/ubl-strings.h:92 msgid "Mb" msgstr "Мб" -#: source/ubl-strings.h:92 +#: source/ubl-strings.h:93 msgid "Gb" msgstr "Гб" -#: source/ubl-strings.h:93 +#: source/ubl-strings.h:94 msgid "Minutes" msgstr "Минут" -#: source/ubl-strings.h:94 +#: source/ubl-strings.h:95 msgid "Hours" msgstr "Часов" -#: source/ubl-strings.h:95 +#: source/ubl-strings.h:96 msgid "Days" msgstr "Дней" -#: source/ubl-strings.h:96 +#: source/ubl-strings.h:97 msgid "Weeks" msgstr "Недель" -#: source/ubl-strings.h:97 +#: source/ubl-strings.h:98 msgid "Years" msgstr "Лет" -#: source/ubl-strings.h:98 +#: source/ubl-strings.h:99 msgid "Reset" msgstr "По умолчанию" -#: source/ubl-strings.h:101 +#: source/ubl-strings.h:102 msgid "Logs and events - logrotate configuration" msgstr "Логи и журналы событий - конфигурация сервиса logrotate" -#: source/ubl-strings.h:102 +#: source/ubl-strings.h:103 msgid "Log/Journal:" msgstr "Лог/Журнал:" -#: source/ubl-strings.h:103 +#: source/ubl-strings.h:104 msgid "Paths to log and journals files" msgstr "Пути к файлам лога/журнала" -#: source/ubl-strings.h:104 +#: source/ubl-strings.h:105 msgid "On" msgstr "Включено" -#: source/ubl-strings.h:105 +#: source/ubl-strings.h:106 msgid "Off" msgstr "Выключено" -#: source/ubl-strings.h:106 source/ubl-strings.h:160 +#: source/ubl-strings.h:107 source/ubl-strings.h:161 msgid "Scenarios" msgstr "Сценарии" -#: source/ubl-strings.h:107 source/ubl-strings.h:159 +#: source/ubl-strings.h:108 source/ubl-strings.h:160 msgid "Scenarios are running for each rotated journal" msgstr "Сценарии запускаются для каждого ротируемого журнала" -#: source/ubl-strings.h:108 +#: source/ubl-strings.h:109 msgid "Command before rotation (one time):" msgstr "Команда перед ротацией (один раз):" -#: source/ubl-strings.h:109 +#: source/ubl-strings.h:110 msgid "Command after rotation (one time):" msgstr "Команда после ротации (один раз):" -#: source/ubl-strings.h:110 +#: source/ubl-strings.h:111 msgid "Command before rotation:" msgstr "Команда перед ротацией:" -#: source/ubl-strings.h:111 +#: source/ubl-strings.h:112 msgid "Command after rotation:" msgstr "Команда после ротации:" -#: source/ubl-strings.h:112 +#: source/ubl-strings.h:113 msgid "Rotation period:" msgstr "Период ротации:" -#: source/ubl-strings.h:113 +#: source/ubl-strings.h:114 msgid "Maximum size of file:" msgstr "Максимальный размер файла:" -#: source/ubl-strings.h:114 +#: source/ubl-strings.h:115 msgid "Checking frequency configuration" msgstr "Настройки частоты проверки" -#: source/ubl-strings.h:115 +#: source/ubl-strings.h:116 msgid "File amount:" msgstr "Количество файлов:" -#: source/ubl-strings.h:116 +#: source/ubl-strings.h:117 msgid "Store at:" msgstr "Хранить в:" -#: source/ubl-strings.h:117 +#: source/ubl-strings.h:118 msgid "Rotation as user:" msgstr "Ротация от пользователя:" -#: source/ubl-strings.h:118 +#: source/ubl-strings.h:119 msgid "Rotation as group:" msgstr "Ротация от группы:" -#: source/ubl-strings.h:119 +#: source/ubl-strings.h:120 msgid "Rotation configuration" msgstr "Настройки ротации" -#: source/ubl-strings.h:120 +#: source/ubl-strings.h:121 msgid "Error processing:" msgstr "Обработка ошибок:" -#: source/ubl-strings.h:121 +#: source/ubl-strings.h:122 msgid "Rotation of jurnal even when it is empty:" msgstr "Ротация файла журнала даже если он пуст:" -#: source/ubl-strings.h:122 +#: source/ubl-strings.h:123 msgid "Do not rotate journal younger than" msgstr "Не ротировать журналы, возраст которых меньше" -#: source/ubl-strings.h:123 +#: source/ubl-strings.h:124 msgid "days" msgstr "дней" -#: source/ubl-strings.h:124 +#: source/ubl-strings.h:125 msgid "Delete rotated journals older than" msgstr "Удалить ротированные журналы старше" -#: source/ubl-strings.h:125 +#: source/ubl-strings.h:126 msgid "Rotate journals if size more than" msgstr "Ротация журналов, если размер превышает" -#: source/ubl-strings.h:126 +#: source/ubl-strings.h:127 msgid "but not earlier than the specified time interval" msgstr "но не раньше указанного интервала времени" -#: source/ubl-strings.h:127 +#: source/ubl-strings.h:128 msgid "before specified time interval" msgstr "до истечения указанного интервала времени" -#: source/ubl-strings.h:128 +#: source/ubl-strings.h:129 msgid "File choosing configuration" msgstr "Настройки выбора файла" -#: source/ubl-strings.h:129 +#: source/ubl-strings.h:130 msgid "Create log" msgstr "Создавать лог" -#: source/ubl-strings.h:130 +#: source/ubl-strings.h:131 msgid "as user:" msgstr "от пользователя:" -#: source/ubl-strings.h:131 +#: source/ubl-strings.h:132 msgid "as group:" msgstr "от группы:" -#: source/ubl-strings.h:132 +#: source/ubl-strings.h:133 msgid "rules:" msgstr "права:" -#: source/ubl-strings.h:133 +#: source/ubl-strings.h:134 msgid "" "Cut source journal fileafter copy creating instead of moving old journal " "file and creating new one" @@ -502,286 +506,294 @@ msgstr "" "После создания копии, обрезать исходный файл журнала взамен перемещения " "старого файла журнала и создания нового" -#: source/ubl-strings.h:134 +#: source/ubl-strings.h:135 msgid "Files and directories configuration" msgstr "Настройки файлов и папок" -#: source/ubl-strings.h:135 +#: source/ubl-strings.h:136 msgid "Delay compression by one journal in queue:" msgstr "Отложить сжание на один журнал в очереди:" -#: source/ubl-strings.h:136 +#: source/ubl-strings.h:137 msgid "Compression configuration" msgstr "Настройка сжатия" -#: source/ubl-strings.h:137 +#: source/ubl-strings.h:138 msgid "Save original log file after rotation if it has specified extension:" msgstr "" "Сохранять оригинальный лог после ротации, если у него указано расширение:" -#: source/ubl-strings.h:138 +#: source/ubl-strings.h:139 msgid "Add date of rotation before log header" msgstr "Добавлять дату ротации перед заголовком старого лога:" -#: source/ubl-strings.h:139 +#: source/ubl-strings.h:140 msgid "Number from which numbering of old logs will begin" msgstr "Номер, с которого будет начата нумерация старых логов:" -#: source/ubl-strings.h:140 +#: source/ubl-strings.h:141 msgid "Filename configuration" msgstr "Настройка имени файлов" -#: source/ubl-strings.h:141 +#: source/ubl-strings.h:142 msgid "Email after rotation:" msgstr "Отправка Email после ротации:" -#: source/ubl-strings.h:142 +#: source/ubl-strings.h:143 msgid "adress:" msgstr "на адрес:" -#: source/ubl-strings.h:143 +#: source/ubl-strings.h:144 msgid "contents:" msgstr "содержимое:" -#: source/ubl-strings.h:144 source/ubl-strings.h:157 +#: source/ubl-strings.h:145 source/ubl-strings.h:158 msgid "Message configuration" msgstr "Настройка сообщения" -#: source/ubl-strings.h:145 +#: source/ubl-strings.h:146 msgid "Manual input:" msgstr "Команды настройки" -#: source/ubl-strings.h:146 +#: source/ubl-strings.h:147 msgid "Log (-s) size:" msgstr "Общий размер лога (-ов):" -#: source/ubl-strings.h:147 +#: source/ubl-strings.h:148 msgid "Same directory" msgstr "Той же папке" -#: source/ubl-strings.h:148 +#: source/ubl-strings.h:149 msgid "Separate directory" msgstr "Другой папке" -#: source/ubl-strings.h:149 +#: source/ubl-strings.h:150 msgid "Output errors if log file does not exist*" msgstr "Выводить ошибки, если лог файла не существует*" -#: source/ubl-strings.h:150 +#: source/ubl-strings.h:151 msgid "Do not output errors if log file does not exist" msgstr "Не выводить ошибки, если лог файла не существует" -#: source/ubl-strings.h:151 +#: source/ubl-strings.h:152 msgid "Do not output" msgstr "Не выводить" -#: source/ubl-strings.h:152 +#: source/ubl-strings.h:153 msgid "Output errors" msgstr "Выводить ошибки" -#: source/ubl-strings.h:153 +#: source/ubl-strings.h:154 msgid "Send Email" msgstr "Отправлять Email" -#: source/ubl-strings.h:154 +#: source/ubl-strings.h:155 msgid "Don't send Email" msgstr "Не отправлять Email" -#: source/ubl-strings.h:155 +#: source/ubl-strings.h:156 msgid "First rotated copy" msgstr "Первая ротированная копия" -#: source/ubl-strings.h:156 +#: source/ubl-strings.h:157 msgid "Last rotated copy" msgstr "Последняя ротированная копия" -#: source/ubl-strings.h:158 +#: source/ubl-strings.h:159 msgid "Endwork command:" msgstr "Команда перед удалением файла журнала:" -#: source/ubl-strings.h:161 +#: source/ubl-strings.h:162 msgid "Hourly" msgstr "Час" -#: source/ubl-strings.h:162 +#: source/ubl-strings.h:163 msgid "Daily" msgstr "День" -#: source/ubl-strings.h:163 +#: source/ubl-strings.h:164 msgid "Weekly*" msgstr "Неделя*" -#: source/ubl-strings.h:164 +#: source/ubl-strings.h:165 msgid "Monthly" msgstr "Месяц" -#: source/ubl-strings.h:165 +#: source/ubl-strings.h:166 msgid "Yearly" msgstr "Год" -#: source/ubl-strings.h:166 +#: source/ubl-strings.h:167 msgid "Monday" msgstr "Понедельник" -#: source/ubl-strings.h:167 +#: source/ubl-strings.h:168 msgid "Tuesday" msgstr "Вторник" -#: source/ubl-strings.h:168 +#: source/ubl-strings.h:169 msgid "Wednesday" msgstr "Среда" -#: source/ubl-strings.h:169 +#: source/ubl-strings.h:170 msgid "Thursday" msgstr "Четверг" -#: source/ubl-strings.h:170 +#: source/ubl-strings.h:171 msgid "Friday" msgstr "Пятница" -#: source/ubl-strings.h:171 +#: source/ubl-strings.h:172 msgid "Saturday" msgstr "Суббота" -#: source/ubl-strings.h:172 +#: source/ubl-strings.h:173 msgid "Sunday*" msgstr "Воскресенье*" -#: source/ubl-strings.h:173 +#: source/ubl-strings.h:174 msgid "Same record already exists" msgstr "Такая запись уже существует" -#: source/ubl-strings.h:174 +#: source/ubl-strings.h:175 msgid "Empty important field" msgstr "Важное поле не заполнено" -#: source/ubl-strings.h:175 +#: source/ubl-strings.h:176 msgid "Repeating paths" msgstr "Повторяющиеся пути" -#: source/ubl-strings.h:176 +#: source/ubl-strings.h:177 msgid "Write down all important fields" msgstr "Введите все необходимые поля" -#: source/ubl-strings.h:177 +#: source/ubl-strings.h:178 msgid "Command is invalid" msgstr "Неверная команда" -#: source/ubl-strings.h:180 +#: source/ubl-strings.h:181 msgid "Logs and events - logrotate table" msgstr "Логи и журналы событий - таблица журналов logrotate" -#: source/ubl-strings.h:181 +#: source/ubl-strings.h:182 msgid "System configuration" msgstr "Настройки системы" -#: source/ubl-strings.h:182 +#: source/ubl-strings.h:183 msgid "Applications configuration" msgstr "Настройки приложений" -#: source/ubl-strings.h:183 +#: source/ubl-strings.h:184 msgid "Import log configuration" msgstr "Импортировать конфигурацию лога" -#: source/ubl-strings.h:184 +#: source/ubl-strings.h:185 msgid "Add log configuration" msgstr "Добавить конфигурацию лога" -#: source/ubl-strings.h:185 +#: source/ubl-strings.h:186 msgid "Remove log configuration" msgstr "Удалить конфигурацию лога" -#: source/ubl-strings.h:189 +#: source/ubl-strings.h:190 msgid "Logs and events - journal configuration" msgstr "Логи и журналы событий - конфигурация журнала" -#: source/ubl-strings.h:190 +#: source/ubl-strings.h:191 msgid "Path (-s):" msgstr "Путь (-и):" -#: source/ubl-strings.h:191 +#: source/ubl-strings.h:192 msgid "Control:" msgstr "Управление:" -#: source/ubl-strings.h:192 +#: source/ubl-strings.h:193 msgid "Log file" msgstr "Файл лога" -#: source/ubl-strings.h:193 +#: source/ubl-strings.h:194 msgid "Name:" msgstr "Имя:" -#: source/ubl-strings.h:194 +#: source/ubl-strings.h:195 msgid "Log size:" msgstr "Размер лога:" -#: source/ubl-strings.h:195 +#: source/ubl-strings.h:196 msgid "Journal/log files were not found" msgstr "Файлы журналов/логов не были найдены" -#: source/ubl-strings.h:198 +#: source/ubl-strings.h:199 msgid "Logs and events - rules" msgstr "Логи и журналы событий - правила" -#: source/ubl-strings.h:199 +#: source/ubl-strings.h:200 msgid "Owner rules" msgstr "Правила владельца" -#: source/ubl-strings.h:200 +#: source/ubl-strings.h:201 msgid "Group rules" msgstr "Правила группы" -#: source/ubl-strings.h:201 +#: source/ubl-strings.h:202 msgid "Public rules" msgstr "Правила остальных" -#: source/ubl-strings.h:202 +#: source/ubl-strings.h:203 msgid "Read" msgstr "Чтение" -#: source/ubl-strings.h:203 +#: source/ubl-strings.h:204 msgid "Write" msgstr "Запись" -#: source/ubl-strings.h:204 +#: source/ubl-strings.h:205 msgid "Execute" msgstr "Исполнение" -#: source/ubl-strings.h:205 +#: source/ubl-strings.h:206 msgid "Value:" msgstr "Значение:" -#: source/ubl-strings.h:208 +#: source/ubl-strings.h:209 msgid ": no such file(s)" msgstr ": файл(ы) не найден(ы)" -#: source/ubl-strings.h:209 +#: source/ubl-strings.h:210 msgid "Parameter" msgstr "Параметр" -#: source/ubl-strings.h:210 +#: source/ubl-strings.h:211 msgid "Old value" msgstr "Старое значение" -#: source/ubl-strings.h:211 +#: source/ubl-strings.h:212 msgid "New value" msgstr "Новое значение" -#: source/ubl-strings.h:213 +#: source/ubl-strings.h:214 msgid "Logs and events - choose a path" msgstr "Логи и журналы событий - Выбор пути" -#: source/ubl-strings.h:214 +#: source/ubl-strings.h:215 msgid "Logs and events - saving" msgstr "Логи и журналы событий - сохранение" -msgid "System event log rotation service" -msgstr "Служба ротации системных журналов событий" +#: source/ubl-strings.h:217 +msgid "Authorization has been elevated" +msgstr "" -msgid "" -"Service for collecting messages from system events of active network " -"devices" -msgstr "Сервис сбора сообщений системных событий активных сетевых устройств" +#: source/ubl-strings.h:218 +msgid "Authorization has been unelevated" +msgstr "" -msgid "Save" -msgstr "Сохранить" \ No newline at end of file +#~ msgid "System event log rotation service" +#~ msgstr "Служба ротации системных журналов событий" + +#~ msgid "" +#~ "Service for collecting messages from system events of active network " +#~ "devices" +#~ msgstr "Сервис сбора сообщений системных событий активных сетевых устройств" + +#~ msgid "Logs and events - log inspector" +#~ msgstr "Логи и журналы событий - просмотр журнала" -- 2.35.1 From 325971260148a04c707c2a1bf804090cf6fa3e77 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Mon, 14 Apr 2025 17:37:54 +0600 Subject: [PATCH 03/12] Margin change for log inspector buttons --- source/ubl-settings-logging.c | 1 + 1 file changed, 1 insertion(+) diff --git a/source/ubl-settings-logging.c b/source/ubl-settings-logging.c index 5d03680..f599429 100644 --- a/source/ubl-settings-logging.c +++ b/source/ubl-settings-logging.c @@ -508,6 +508,7 @@ void on_inspector_open(GtkWidget *, main_window *widgets){ window->journal_size=final_size; window->terminals = NULL; if (strcmp(name,"journald")){ + gtk_widget_set_margin_top(gtk_widget_get_parent(window->UpdateButton),25); window->last_mode=-1; if (window->journal_size==0){ GtkWidget *terminal = yon_inspector_add_terminal(window,window->journal_name,0); -- 2.35.1 From 2875b20e954040a976e7f2512d4a01df47ce2f47 Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Tue, 15 Apr 2025 16:11:11 +0600 Subject: [PATCH 04/12] Service management rework --- logging_services.csv | 10 +- source/ubl-settings-logging.c | 123 ++++++------- source/ubl-settings-logging.h | 4 +- source/ubl-strings.h | 1 + ubl-settings-logging.glade | 45 ++--- ubl-settings-logging.pot | 308 ++++++++++++++++---------------- ubl-settings-logging_ru.po | 324 +++++++++++++++++----------------- 7 files changed, 409 insertions(+), 406 deletions(-) diff --git a/logging_services.csv b/logging_services.csv index 7d85533..23bf5a3 100644 --- a/logging_services.csv +++ b/logging_services.csv @@ -1,5 +1,5 @@ -Service_Name;Service_Description;Сommand_Start;Сommand_Stop;Сommand_Enable;Сommand_Disable;Сommand_Status -journald;System event log;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set [system] SERVICES_DISABLE--=systemd-journald.service SERVICES_ENABLE++=systemd-journald.service;ubconfig set [system] SERVICES_ENABLE--=systemd-journald.service SERVICES_DISABLE++=systemd-journald.service;systemctl status systemd-journald.service -logrotate;System event log rotation service;systemctl start logrotate.timer;systemctl stop logrotate.timer logrotate.service;ubconfig set [system] SERVICES_DISABLE--=logrotate.timer SERVICES_ENABLE++=logrotate.timer;ubconfig set [system] SERVICES_ENABLE--=logrotate.timer SERVICES_DISABLE++=logrotate.timer;systemctl status logrotate.service -#metalog;System event log;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set [system] SERVICES_DISABLE--=metalog.service SERVICES_ENABLE++=metalog.service;ubconfig set [system] SERVICES_ENABLE--=metalog.service SERVICES_DISABLE++=metalog.service;systemctl status metalog.service -#syslog-ng;Service for collecting messages from system events of active network devices;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set [system] SERVICES_DISABLE--=syslog-ng.service SERVICES_ENABLE++=syslog-ng.service;ubconfig set [system] SERVICES_ENABLE--=syslog-ng.service SERVICES_DISABLE++=syslog-ng.service;systemctl status syslog-ng.service \ No newline at end of file +Service_Name;Service_Description;Сommand_Start;Сommand_Stop;Сommand_Enable;Сommand_Disable;Сommand_Status;Сommand_Status_Active;Сommand_Status_Enabled +journald;System event log;systemctl start systemd-journald.service;systemctl stop systemd-journald.service;ubconfig set [system] SERVICES_DISABLE--=systemd-journald.service SERVICES_ENABLE++=systemd-journald.service;ubconfig set [system] SERVICES_ENABLE--=systemd-journald.service SERVICES_DISABLE++=systemd-journald.service;systemctl status systemd-journald.service --no-pager;systemctl --quiet is-active systemd-journald.service;systemctl --quiet is-enabled systemd-journald.service +logrotate;System event log rotation service;systemctl start logrotate.timer;systemctl stop logrotate.timer logrotate.service;ubconfig set [system] SERVICES_DISABLE--=logrotate.timer SERVICES_ENABLE++=logrotate.timer;ubconfig set [system] SERVICES_ENABLE--=logrotate.timer SERVICES_DISABLE++=logrotate.timer;systemctl status logrotate.service --no-pager;systemctl --quiet is-active logrotate.service;systemctl --quiet is-enabled logrotate.service +#metalog;System event log;systemctl start metalog.service;systemctl stop metalog.service;ubconfig set [system] SERVICES_DISABLE--=metalog.service SERVICES_ENABLE++=metalog.service;ubconfig set [system] SERVICES_ENABLE--=metalog.service SERVICES_DISABLE++=metalog.service;systemctl status metalog.service --no-pager;systemctl --quiet is-active metalog.service;systemctl --quiet is-enabled metalog.service +#syslog-ng;Service for collecting messages from system events of active network devices;systemctl start syslog-ng.service;systemctl stop syslog-ng.service;ubconfig set [system] SERVICES_DISABLE--=syslog-ng.service SERVICES_ENABLE++=syslog-ng.service;ubconfig set [system] SERVICES_ENABLE--=syslog-ng.service SERVICES_DISABLE++=syslog-ng.service;systemctl status syslog-ng.service --no-pager;systemctl --quiet is-active syslog-ng.service;systemctl --quiet is-enabled syslog-ng.service \ No newline at end of file diff --git a/source/ubl-settings-logging.c b/source/ubl-settings-logging.c index f599429..f593a6a 100644 --- a/source/ubl-settings-logging.c +++ b/source/ubl-settings-logging.c @@ -2764,6 +2764,7 @@ void on_main_window_services_tree_selection_changed(GtkWidget *,main_window *wid GtkTreeIter iter; if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ServicesTree)),&model,&iter)){ + gtk_widget_set_sensitive(widgets->ServicesControlButton,1); gboolean is_active; gboolean is_enabled; char *name; @@ -2771,67 +2772,53 @@ void on_main_window_services_tree_selection_changed(GtkWidget *,main_window *wid gtk_tree_model_get(model,&iter,0,&is_active,1,&is_enabled,2,&name,-1); if (is_active){ gtk_widget_set_sensitive(widgets->ServicesEditButton,1); - gtk_widget_set_sensitive(widgets->ServicesEnableDisableButton,1); - gtk_widget_set_sensitive(widgets->ServicesStartStopButton,1); - gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,0)),1); + // gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,0)),1); gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,1)),1); - gtk_widget_set_tooltip_text(widgets->ServicesEnableDisableButton,AUTOSTART_OFF_LABEL); - gtk_widget_set_tooltip_text(widgets->ServicesStartStopButton,STOP_SERVICE_LABEL); - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesStartStopButton))),stop_icon_name,GTK_ICON_SIZE_BUTTON); + gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesControlButton))),stop_icon_name,GTK_ICON_SIZE_BUTTON); GList *item = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,0))); GList *items = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(item,0))); gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(items,0)),stop_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_label_set_text(GTK_LABEL(g_list_nth_data(items,1)),STOP_SERVICE_LABEL); g_list_free(item); g_list_free(items); } else { gtk_widget_set_sensitive(widgets->ServicesEditButton,0); - gtk_widget_set_sensitive(widgets->ServicesEnableDisableButton,1); - gtk_widget_set_sensitive(widgets->ServicesStartStopButton,1); - gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,0)),1); - gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,1)),1); - gtk_widget_set_tooltip_text(widgets->ServicesEnableDisableButton,AUTOSTART_ON_LABEL); - gtk_widget_set_tooltip_text(widgets->ServicesStartStopButton,START_SERVICE_LABEL); - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesStartStopButton))),start_icon_name,GTK_ICON_SIZE_BUTTON); + // gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,0)),1); + gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,1)),0); + gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesControlButton))),start_icon_name,GTK_ICON_SIZE_BUTTON); GList *item = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,0))); GList *items = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(item,0))); gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(items,0)),start_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_label_set_text(GTK_LABEL(g_list_nth_data(items,1)),START_SERVICE_LABEL); - g_list_free(item); - g_list_free(items); - } - if (is_enabled){ - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesEnableDisableButton))),disable_icon_name,GTK_ICON_SIZE_BUTTON); - GList *item = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,1))); - GList *items = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(item,0))); - gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(items,0)),disable_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_label_set_text(GTK_LABEL(g_list_nth_data(items,1)),AUTOSTART_OFF_LABEL); - g_list_free(item); - g_list_free(items); - } else { - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesEnableDisableButton))),enable_icon_name,GTK_ICON_SIZE_BUTTON); - GList *item = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,1))); - GList *items = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(item,0))); - gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(items,0)),enable_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_label_set_text(GTK_LABEL(g_list_nth_data(items,1)),AUTOSTART_ON_LABEL); g_list_free(item); g_list_free(items); } + // if (is_enabled){ + // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesControlButton))),disable_icon_name,GTK_ICON_SIZE_BUTTON); + // GList *item = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,1))); + // GList *items = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(item,0))); + // gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(items,0)),disable_icon_name,GTK_ICON_SIZE_BUTTON); + // gtk_label_set_text(GTK_LABEL(g_list_nth_data(items,1)),AUTOSTART_OFF_LABEL); + // g_list_free(item); + // g_list_free(items); + // } else { + // gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesControlButton))),enable_icon_name,GTK_ICON_SIZE_BUTTON); + // GList *item = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(list,1))); + // GList *items = gtk_container_get_children(GTK_CONTAINER(g_list_nth_data(item,0))); + // gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(items,0)),enable_icon_name,GTK_ICON_SIZE_BUTTON); + // gtk_label_set_text(GTK_LABEL(g_list_nth_data(items,1)),AUTOSTART_ON_LABEL); + // g_list_free(item); + // g_list_free(items); + // } if (!strcmp(name,"journald")){ - gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,0)),0); - gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,1)),0); - gtk_widget_set_sensitive(widgets->ServicesEnableDisableButton,0); - gtk_widget_set_sensitive(widgets->ServicesStartStopButton,0); - gtk_widget_set_tooltip_text(widgets->ServicesEnableDisableButton,AUTOSTART_OFF_LABEL); - gtk_widget_set_tooltip_text(widgets->ServicesStartStopButton,STOP_SERVICE_LABEL); + // gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,0)),0); + // gtk_widget_set_sensitive(GTK_WIDGET(g_list_nth_data(list,1)),0); + // gtk_widget_set_sensitive(widgets->ServicesControlButton,0); + // gtk_widget_set_tooltip_text(widgets->ServicesControlButton,AUTOSTART_OFF_LABEL); } g_list_free(list); } else { gtk_widget_set_sensitive(widgets->ServicesEditButton,0); - gtk_widget_set_sensitive(widgets->ServicesEnableDisableButton,0); - gtk_widget_set_sensitive(widgets->ServicesStartStopButton,0); - gtk_widget_set_tooltip_text(widgets->ServicesEnableDisableButton,AUTOSTART_ON_LABEL); - gtk_widget_set_tooltip_text(widgets->ServicesStartStopButton,START_SERVICE_LABEL); + gtk_widget_set_sensitive(widgets->ServicesControlButton,0); + // gtk_widget_set_tooltip_text(widgets->ServicesControlButton,AUTOSTART_ON_LABEL); } } @@ -2848,15 +2835,11 @@ void on_start_stop_clicked(GtkButton *, main_window *widgets){ if (is_started){ g_spawn_command_line_sync(yon_debug_output("%s\n",stop_command),NULL,NULL,NULL,NULL); gtk_list_store_set(widgets->ServicesList,&iter,0,0,-1); - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesStartStopButton))),start_icon_name,GTK_ICON_SIZE_BUTTON); gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(box,0)),start_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_widget_set_tooltip_text(widgets->ServicesStartStopButton,START_SERVICE_LABEL); } else { g_spawn_command_line_sync(yon_debug_output("%s\n",start_command),NULL,NULL,NULL,NULL); gtk_list_store_set(widgets->ServicesList,&iter,0,1,-1); - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesStartStopButton))),stop_icon_name,GTK_ICON_SIZE_BUTTON); gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(box,0)),stop_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_widget_set_tooltip_text(widgets->ServicesStartStopButton,STOP_SERVICE_LABEL); } } } @@ -2882,9 +2865,9 @@ void on_enable_disable_clicked(GtkButton *, main_window *widgets){ if (is_started){ yon_launch(stop_command); gtk_list_store_set(widgets->ServicesList,&iter,1,0,-1); - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesEnableDisableButton))),enable_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(box,0)),enable_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_widget_set_tooltip_text(widgets->ServicesEnableDisableButton,AUTOSTART_ON_LABEL); + gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesControlButton))),start_icon_name,GTK_ICON_SIZE_BUTTON); + gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(box,0)),start_icon_name,GTK_ICON_SIZE_BUTTON); + // gtk_widget_set_tooltip_text(widgets->ServicesControlButton,AUTOSTART_ON_LABEL); } else { /* g_mutex_lock(&main_config.authorized_mutex); @@ -2894,9 +2877,9 @@ void on_enable_disable_clicked(GtkButton *, main_window *widgets){ g_mutex_unlock(&main_config.authorized_mutex);*/ yon_launch(start_command); gtk_list_store_set(widgets->ServicesList,&iter,1,1,-1); - gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesEnableDisableButton))),disable_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(box,0)),disable_icon_name,GTK_ICON_SIZE_BUTTON); - gtk_widget_set_tooltip_text(widgets->ServicesEnableDisableButton,AUTOSTART_OFF_LABEL); + gtk_image_set_from_icon_name(GTK_IMAGE(gtk_button_get_image(GTK_BUTTON(widgets->ServicesControlButton))),stop_icon_name,GTK_ICON_SIZE_BUTTON); + gtk_image_set_from_icon_name(GTK_IMAGE(g_list_nth_data(box,0)),stop_icon_name,GTK_ICON_SIZE_BUTTON); + // gtk_widget_set_tooltip_text(widgets->ServicesControlButton,AUTOSTART_OFF_LABEL); } } } @@ -2994,6 +2977,27 @@ void config_init(){ } } +void on_service_manage(GtkWidget *,main_window *widgets){ + GtkTreeIter iter; + GtkTreeModel *model = GTK_TREE_MODEL(widgets->ServicesList); + if (gtk_tree_selection_get_selected(gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->ServicesTree)),&model,&iter)){ + char *name,*start_command,*stop_command,*enable_command,*disable_command,*status_command,*check_active_command,*check_enable_command; + gtk_tree_model_get(model,&iter, + 2,&name,5,&start_command, + 6,&stop_command,7,&enable_command, + 8,&disable_command,9,&status_command, + 10,&check_active_command,11,&check_enable_command, + -1); + service_window *window = yon_service_window_new(name,start_command,stop_command, + enable_command,disable_command, + status_command,check_active_command, + check_enable_command); + gtk_window_set_transient_for(GTK_WINDOW(window->MainWindow),GTK_WINDOW(widgets->Window)); + yon_service_window_run(window); + + } +} + void yon_main_window_complete(template_main_window **window){ /* Widgets getting | Получение виджетов */ main_window *widgets = realloc(*window,sizeof(main_window)); @@ -3008,8 +3012,7 @@ void yon_main_window_complete(template_main_window **window){ widgets->RemoveButton = yon_gtk_builder_get_widget(builder,"MainRemoveButton"); widgets->Notebook = yon_gtk_builder_get_widget(builder,"MainNotebook"); widgets->ServicesEditButton = yon_gtk_builder_get_widget(builder,"ServicesEditButton"); - widgets->ServicesStartStopButton = yon_gtk_builder_get_widget(builder,"ServicesStartStopButton"); - widgets->ServicesEnableDisableButton = yon_gtk_builder_get_widget(builder,"ServicesEnableDisableButton"); + widgets->ServicesControlButton = yon_gtk_builder_get_widget(builder,"ServicesControlButton"); widgets->ServicesTree = yon_gtk_builder_get_widget(builder,"ServicesTree"); widgets->list = GTK_LIST_STORE(gtk_builder_get_object(builder,"liststore1")); widgets->ServicesList = GTK_LIST_STORE(gtk_builder_get_object(builder,"ServicesList")); @@ -3059,8 +3062,11 @@ void yon_main_window_complete(template_main_window **window){ int log_size; services[i]=yon_char_divide_search(services[i],"\n",-1); config_str log = yon_char_parse(services[i],&log_size,";"); + int is_active, is_enabled; + is_active = !system(log[7]); + is_enabled = !system(log[8]); gtk_list_store_append(widgets->ServicesList,&iter); - gtk_list_store_set(widgets->ServicesList,&iter,0,1,1,1,2,log[0],3,_(log[1]),4,log[2],5,log[3],6,log[4],7,log[5],8,log[6],-1); + gtk_list_store_set(widgets->ServicesList,&iter,0,is_active,1,is_enabled,2,log[0],3,_(log[1]),4,log[2],5,log[2],6,log[3],7,log[4],8,log[5],9,log[6],10,log[7],11,log[8],-1); } } config_str dirs = yon_config_load(logrotate_config_command,&dirs_size); @@ -3176,17 +3182,16 @@ void yon_main_window_complete(template_main_window **window){ g_signal_connect(G_OBJECT(widgets->MainTree),"cursor-changed",G_CALLBACK(on_main_window_tree_selection_changed),widgets); g_signal_connect(G_OBJECT(widgets->ServicesTree),"cursor-changed",G_CALLBACK(on_main_window_services_tree_selection_changed),widgets); - g_signal_connect(G_OBJECT(widgets->ServicesStartStopButton),"clicked",G_CALLBACK(on_start_stop_clicked),widgets); - g_signal_connect(G_OBJECT(widgets->ServicesEnableDisableButton),"clicked",G_CALLBACK(on_enable_disable_clicked),widgets); + g_signal_connect(G_OBJECT(widgets->ServicesControlButton),"clicked",G_CALLBACK(on_service_manage),widgets); widgets->LogsRMBMenu = yon_rmb_menu_setup(widgets->MainTree,(RmbCheck)gtk_widget_get_sensitive,widgets->MainTree, CONFIGURE_LOG_LABEL,settings_icon_name,G_CALLBACK(on_log_edit),widgets, + CONFIGURE_LOG_LABEL,settings_icon_name,G_CALLBACK(on_log_edit),widgets, ADD_LOG_LABEL,add_icon_name,G_CALLBACK(on_log_add),widgets, REMOVE_LOG_LABEL,remove_icon_name,G_CALLBACK(on_log_remove),widgets, NULL); widgets->ServicesRMBMenu = yon_rmb_menu_setup(widgets->ServicesTree,(RmbCheck)gtk_widget_get_sensitive,widgets->ServicesTree, - START_SERVICE_LABEL,start_icon_name,G_CALLBACK(on_start_stop_clicked),widgets, - AUTOSTART_ON_LABEL,enable_icon_name,G_CALLBACK(on_enable_disable_clicked),widgets, + SERVICE_MANAGEMENT_TOOLTIP,start_icon_name,G_CALLBACK(on_service_manage),widgets, CONFIGURE_SERVICE_LABEL,settings_icon_name,G_CALLBACK(on_service_edit),widgets, NULL); // yon_rmb_menu_setup(widgets->ServicesTree,(RmbCheck)gtk_widget_get_sensitive,widgets->MainTree,CONFIGURE_LOG_LABEL,edit_icon_name,G_CALLBACK(on_log_edit),widgets,ADD_LOG_LABEL,add_icon_name,G_CALLBACK(on_log_add),widgets,REMOVE_LOG_LABEL,remove_icon_name,G_CALLBACK(on_log_remove),widgets,NULL); diff --git a/source/ubl-settings-logging.h b/source/ubl-settings-logging.h index 93cff37..5c78c65 100644 --- a/source/ubl-settings-logging.h +++ b/source/ubl-settings-logging.h @@ -144,8 +144,7 @@ typedef struct { GtkWidget *Notebook; GtkWidget *ServicesTree; GtkWidget *ServicesEditButton; - GtkWidget *ServicesStartStopButton; - GtkWidget *ServicesEnableDisableButton; + GtkWidget *ServicesControlButton; GtkListStore *list; GtkListStore *ServicesList; GtkWidget *UpgradePermissionsMenuItem; @@ -460,4 +459,5 @@ void on_logrotate_apps_configure_activate(GtkWidget *, GtkTreePath*, GtkTreeView void on_logrotate_edit_activate(GtkWidget*,GtkTreePath*,GtkTreeViewColumn*, logrotate_window *window); void on_logrotate_closed(GtkWidget *,logrotate_window *window); void on_rules_changed(GtkEditable *editable, const gchar *text, gint length, gint *position); +void on_service_manage(GtkWidget *,main_window *widgets); int main(int argc, char *argv[]); \ No newline at end of file diff --git a/source/ubl-strings.h b/source/ubl-strings.h index 9f9d0f6..ce56d73 100644 --- a/source/ubl-strings.h +++ b/source/ubl-strings.h @@ -44,6 +44,7 @@ #define XORG_DESCRIPTION_LABEL _("X.org display server log") #define XSESSION_DESCRIPTION_LABEL _("Graphics X session log") #define SAVE_LABEL _("Save") +#define SERVICE_MANAGEMENT_TOOLTIP _("Manage service") //ubl-settings-logging-inspector.glade #define INSPECTOR_TITLE_LABEL(target) yon_char_unite(_("Inspect")," ",target,NULL) diff --git a/ubl-settings-logging.glade b/ubl-settings-logging.glade index 4a6353a..b719f30 100644 --- a/ubl-settings-logging.glade +++ b/ubl-settings-logging.glade @@ -47,9 +47,15 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - + - + + + + + + + @@ -77,15 +83,10 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. False com.ublinux.ubl-settings-logging.trash-symbolic - - True - False - com.ublinux.ubl-settings-logging.play-symbolic - True False - com.ublinux.ubl-settings-logging.check-symbolic + com.ublinux.libublsettingsui-gtk3.play-symbolic True @@ -229,6 +230,9 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. True liststore1 2 + + + True @@ -320,30 +324,12 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. vertical 5 - + True False True True - Start service - image5 - - - - False - True - 0 - - - - - True - False - True - True - Switch autostart on + Manage service image6