diff --git a/com.ublinux.ubl-settings-video.amd-logo.svg b/com.ublinux.ubl-settings-video.amd-logo.svg
new file mode 100644
index 0000000..c75c6d2
--- /dev/null
+++ b/com.ublinux.ubl-settings-video.amd-logo.svg
@@ -0,0 +1,56 @@
+
+
+
+
diff --git a/com.ublinux.ubl-settings-video.intel-logo.svg b/com.ublinux.ubl-settings-video.intel-logo.svg
new file mode 100644
index 0000000..fa4fcb2
--- /dev/null
+++ b/com.ublinux.ubl-settings-video.intel-logo.svg
@@ -0,0 +1,43 @@
+
+
+
+
diff --git a/com.ublinux.ubl-settings-video.nvidia-logo.svg b/com.ublinux.ubl-settings-video.nvidia-logo.svg
new file mode 100644
index 0000000..d4f2d8b
--- /dev/null
+++ b/com.ublinux.ubl-settings-video.nvidia-logo.svg
@@ -0,0 +1,65 @@
+
+
+
+
diff --git a/com.ublinux.ubl-settings-video.video-card.svg b/com.ublinux.ubl-settings-video.video-card.svg
new file mode 100644
index 0000000..7c30d8b
--- /dev/null
+++ b/com.ublinux.ubl-settings-video.video-card.svg
@@ -0,0 +1,194 @@
+
+
+
+
diff --git a/source/CMakeLists.txt b/source/CMakeLists.txt
index dc25088..b0fba42 100644
--- a/source/CMakeLists.txt
+++ b/source/CMakeLists.txt
@@ -24,7 +24,7 @@ set(SOURCE_FILES
set(LIBRARIES
${GTK_LIBRARIES}
pthread
- vte)
+ vte-2.91)
add_executable(ubl-settings-video ${SOURCE_FILES})
diff --git a/source/ubl-settings-video-strings.h b/source/ubl-settings-video-strings.h
index cf942d2..a1bef55 100644
--- a/source/ubl-settings-video-strings.h
+++ b/source/ubl-settings-video-strings.h
@@ -25,19 +25,58 @@
#define MONITOR_SAVE_LABEL _("Save")
#define MONITOR_CANCEL_LABEL _("Cancel")
#define MONITOR_CHOOSE_PORT_LABEL _("Choose port to configure")
+#define GAP_FIX_1_LABEL _("1st variant. May cause perfomance drops in video games")
+#define GAP_FIX_2_LABEL _("2nd variant. May not work on specific video cards")
+#define HEADER_LABEL _("Video output configuration")
+#define FAILSAFE_NVIDIA_LABEL _("Failsafe driver nVidia: ")
+#define FAILSAFE_ATI_LABEL _("Failsafe driver AMD/ATI: ")
+#define DRIVER_LABEL _("Driver")
+#define MONITOR_CONFIGURATION_LABEL _("Monitor configuration")
+#define HYBRID_GRAPHICS_LABEL _("Hybrid graphics")
+#define FIX_GAP_LABEL _("Fix frame gap (nVidia)")
+#define EXTRA_LABEL _("Extra")
+#define TITLE_LABEL _("UBlinux Video Configuration")
+#define LOAD_LABEL _("Load")
+#define SAVE_LABEL _("Save")
+#define ON_LABEL _("On")
+#define OFF_LABEL _("Off")
+#define FBDEV_LABEL _("fbdev")
+#define AUTO_CHOOSE_DRIVERS_LABEL _("Automatically choose and use driver")
+#define LAUNCH_OPTIRUN_LABEL _("Launch programms through optirun (nVidia): ")
+#define LAUNCH_PRIMUSRUN_LABEL _("Launch programs through primusrun (nVidia): ")
+#define DISCRETE_ONLY_LABEL _("discrete video only (AMD/ATI)")
+#define LOAD_GLOBAL_LABEL _("Load from global configuration")
+#define LOAD_LOCAL_LABEL _("Load from local configuration")
+#define SAVE_GLOBAL_LOCAL_LABEL _("Save to global an local configuration")
+#define SAVE_GLOBAL_LABEL _("Save to global configuration")
+#define SAVE_LOCAL_LABEL _("Save to local configuration")
+#define DOCUMENTATION_LABEL _("Documentation")
+#define ABOUT_LABEL _("About")
+#define INSTALLED_LABEL _("Installed")
+#define PACKAGE_LABEL _("Package")
+#define SUPPORTED_LABEL _("Supported Devices")
+#define CANCEL_LABEL _("Cancel")
+#define ACCEPT_LABEL _("Accept")
+#define DONT_USE_LABEL _("Don't use")
+#define INFORMATION_LABEL _("Information")
+#define DRIVERS_LABEL _("Drivers")
+#define MAIN_SETTINGS_LABEL _("Main settings")
+#define DEVICES_DRIVERS_LABEL _("Devices and drivers")
+#define DRIVER_MODULES_LABEL _("Driver modules")
-#define MONITOR_POSITION_LEFT_PARAMETER _("lo:")
-#define MONITOR_POSITION_RIGHT_PARAMETER _("ro:")
-#define MONITOR_POSITION_ABOVE_PARAMETER _("ab:")
-#define MONITOR_POSITION_BELOW_PARAMETER _("be:")
+#define MONITOR_POSITION_LEFT_PARAMETER "lo:"
+#define MONITOR_POSITION_RIGHT_PARAMETER "ro:"
+#define MONITOR_POSITION_ABOVE_PARAMETER "ab:"
+#define MONITOR_POSITION_BELOW_PARAMETER "be:"
-#define MONITOR_ROTATE_PARAMETER _("rotate:")
-#define MONITOR_ROTATE_NORMAL_PARAMETER _("normal")
-#define MONITOR_ROTATE_LEFT_PARAMETER _("left")
-#define MONITOR_ROTATE_RIGHT_PARAMETER _("right")
-#define MONITOR_ROTATE_INVERTED_PARAMETER _("invert")
+
+#define MONITOR_ROTATE_PARAMETER "rotate:"
+#define MONITOR_ROTATE_NORMAL_PARAMETER "normal"
+#define MONITOR_ROTATE_LEFT_PARAMETER "left"
+#define MONITOR_ROTATE_RIGHT_PARAMETER "right"
+#define MONITOR_ROTATE_INVERTED_PARAMETER "invert"
#define MONITOR_PORT_ERROR_LABEL _("Error: Port must be chosen to save")
#define MONITOR_PORT_SUCCESS_LABEL _("Monitor configuration succeedeed")
@@ -47,4 +86,13 @@
#define GLOBAL_LOCAL_SAVE_SUCCESS _("Local and global configuration saving succseeded.")
#define GLOBAL_SAVE_SUCCESS _("Global configuration saving succseeded.")
-#define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.")
\ No newline at end of file
+#define LOCAL_SAVE_SUCCESS _("Local configuration saving succseeded.")
+
+#define YES_LABEL _("Yes")
+#define NO_LABEL _("No")
+
+#define DESCRIPTION_LABEL _("Description")
+#define VENDOR_LABEL _("Vendor")
+#define MODEL_LABEL _("Model")
+#define USED_KERNEL_DRIVER_LABEL _("Kernel driver in use")
+#define AVALIABLE_KERNEL_DRIVERS_LABEL _("Kernel modules")
\ No newline at end of file
diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c
index 944aff4..3108062 100644
--- a/source/ubl-settings-video.c
+++ b/source/ubl-settings-video.c
@@ -52,14 +52,13 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
config->position_port = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationPositionPortCombo));
}
- config->resolution=yon_char_divide_search(gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo))," ",-1);
+ if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) {
+ config->resolution = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo));
int rotation = gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationRotationCombo));
if (rotation==1) config->rotation=rotation;
else if (rotation==2) config->rotation=rotation;
else if (rotation==3) config->rotation=rotation;
else config->rotation=0;
- if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) {
- char *resolution = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo));
}
if (gtk_combo_box_get_active(GTK_COMBO_BOX(window->templateMonitorConfigurationResolutionCombo))!=0) {
char *frequency = (char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationFrequencyCombo));
@@ -72,6 +71,99 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){
on_subwindow_close(self);
}
+void on_terminal_done(GtkWidget *terminal, int size, widgets_dict *widgets){
+ char *text=vte_terminal_get_text_range(VTE_TERMINAL(terminal),0,0,0,10,NULL,NULL,NULL);
+ printf("\"%s\"\n",text);
+ gtk_widget_destroy(terminal);
+}
+
+void on_terminal_more(GtkWidget *self, widgets_dict *widgets){
+ int active = gtk_revealer_get_child_revealed(GTK_REVEALER(widgets->TerminalMoreRevieler));
+ if (active ==1) active = 0;
+ else active=1;
+gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalMoreRevieler),active);
+}
+
+void on_terminal_destroy(GtkWidget *self, widgets_dict *widgets){
+ gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),0);
+ gtk_widget_destroy(widgets->TerminalRevealer);
+ yon_proprieary_get();
+ yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
+}
+
+static void child_ready(VteTerminal *terminal, GPid pid, GError *error, gpointer user_data)
+{
+ if (!terminal) return;
+ if (pid == -1) printf("Error\n\n\n");
+ else vte_terminal_feed_child(VTE_TERMINAL(terminal),(char*)user_data,strlen((char*)user_data));
+}
+
+void on_terminal_check_progress(VteTerminal *terminal, widgets_dict *widgets){
+ char *text = vte_terminal_get_text(terminal,NULL,NULL,NULL);
+ // printf("%d - %s\n",rows, text);
+ gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(widgets->TerminalInfoLabel),(double)yon_char_find_count(text,"::")/4);
+}
+
+void yon_terminal_start(widgets_dict *widgets, char *usr_command){
+ char **command=new_arr(char*,2);
+ gchar **envp = g_get_environ();
+ command[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
+ command[1]=NULL;
+ char **env=new_arr(char*,2);
+ env[0]="";
+ env[1]=NULL;
+
+ GtkBuilder *builder=gtk_builder_new_from_file(glade_path);
+ widgets->TerminalBox = yon_gtk_builder_get_widget(builder, "TerminalBox");
+ widgets->TerminalRevealer = yon_gtk_builder_get_widget(builder, "TerminalRevealer");
+ widgets->TerminalMoreRevieler = yon_gtk_builder_get_widget(builder, "TerminalMoreRevieler");
+ widgets->TerminalMoreButton = yon_gtk_builder_get_widget(builder, "TerminalMoreButton");
+ widgets->TerminalScroll = yon_gtk_builder_get_widget(builder, "TerminalScroll");
+ widgets->TerminalInfoLabel = yon_gtk_builder_get_widget(builder, "TerminalInfoLabel");
+
+ GtkWidget *terminal = yon_gtk_builder_get_widget(builder, "TerminalTerminal");
+ vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
+ gtk_widget_set_app_paintable(terminal,1);
+ gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"opacited");
+ gtk_style_context_add_class(gtk_widget_get_style_context(terminal),"workingbg");
+ gtk_overlay_add_overlay(GTK_OVERLAY(widgets->TerminalOverlay),widgets->TerminalRevealer);
+ g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(on_terminal_done), widgets);
+ g_signal_connect(G_OBJECT(terminal), "contents-changed", G_CALLBACK(on_terminal_check_progress), widgets);
+ g_signal_connect(G_OBJECT(widgets->TerminalMoreButton), "clicked", G_CALLBACK(on_terminal_more), widgets);
+ g_signal_connect(G_OBJECT(terminal), "destroy", G_CALLBACK(on_terminal_destroy), widgets);
+ gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalRevealer),1);
+ VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
+ vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
+ char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",usr_command," ; sleep 5;exit 0","\n",NULL);
+ vte_terminal_spawn_async(VTE_TERMINAL(terminal),
+ VTE_PTY_DEFAULT,
+ NULL,
+ command,
+ NULL,
+ 0,
+ NULL, NULL,
+ NULL,
+ -1,
+ NULL,
+ child_ready,
+ install_command);
+ vte_pty_spawn_async(pty,
+ NULL,
+ command,
+ NULL,
+ 0,
+ NULL, NULL,
+ NULL,
+ -1,
+ NULL,
+ NULL,
+ NULL);
+ vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 100);
+ vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE);
+ vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
+ gtk_widget_show_all(widgets->TerminalRevealer);
+}
+
void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeIter iter;
char *name;
@@ -79,8 +171,8 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
- pthread_t tid;
- pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name));
+ yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
+
}
@@ -92,9 +184,7 @@ void on_driver_install(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
- pthread_t tid;
- pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name));
-
+ yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,name));
}
void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
@@ -105,9 +195,7 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->proprietaryTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
- pthread_t tid;
- pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
-
+ yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
}
void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
@@ -118,9 +206,7 @@ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->driversTreeView));
gtk_tree_selection_get_selected(selection,&list_s,&iter);
gtk_tree_model_get(list_s,&iter,1,&name,-1);
- pthread_t tid;
- pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
-
+ yon_terminal_start(widgets,yon_char_get_augumented(delete_proprietary_command,name));
}
void on_driver_pack_info(GtkWidget *self, widgets_dict *widgets){
@@ -185,20 +271,6 @@ void on_port_chosen_changed(GtkWidget *self, monitor_edit_window *window){
}
}
-void on_save_driver_configuration(GtkWidget *self,combo_tree *widgets){
- GtkTreeIter iter;
- char *name;
- GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
- GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(widgets->tree));
- gtk_tree_selection_get_selected(selection,&list_s,&iter);
- gtk_tree_model_get(list_s,&iter,0,&name,-1);
- int ret = yon_gtk_combo_box_text_find(widgets->combo,name);
- if (ret!=-1)
- gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->combo),ret);
-
- on_subwindow_close(self);
-}
-
void on_sensitive_change(GtkWidget *self, GtkWidget *toggle)
{
int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
@@ -216,18 +288,13 @@ void on_sensitive_change_reversed(GtkWidget *self, GtkWidget *toggle)
void on_auto_choose_drivers(GtkWidget *self, widgets_dict *widgets)
{
int state = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self));
-
+ videoconfig.autoChooseDrivers=state;
gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaLabel, !state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDCombo, !state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeAMDLabel, !state);
gtk_widget_set_sensitive(widgets->mainDriverFailsafeNvidiaCombo, !state);
}
-// void on_closed_configuration(GtkWidget *self, MonitorSettings *monitors)
-// {
-// gtk_widget_destroy(monitors->templateMonitorConfigurationWindow);
-// }
-
char *yon_configuration_get_save_command(char *command){
char *str = NULL;
char *dntus = NULL;
@@ -236,21 +303,34 @@ char *yon_configuration_get_save_command(char *command){
if (videoconfig.autoChooseDrivers==0){
if (strcmp(videoconfig.failsafenVidia, dntus)!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFENVIDIA=", videoconfig.failsafenVidia));
+ else
+ str = yon_char_get_augumented(str," FAILSAFENVIDIA=\"\"");
if (strcmp(videoconfig.failsafeATI, dntus)!=0)
str = yon_char_get_augumented(str, yon_char_get_augumented(" FAILSAFEATI=", videoconfig.failsafeATI));
+ else
+ str = yon_char_get_augumented(str," FAILSAFEATI=\"\"");
+ str=yon_char_get_augumented(str," VGADRV_AUTO=NO");
+ } else {
+ str = yon_char_unite(str, " FAILSAFENVIDIA=\"\" FAILSAFEATI=\"\" VGADRV_AUTO=YES", NULL);
+
}
if (strcmp(videoconfig.optirun, dntus)!=0&&strcmp(videoconfig.optirun, "")!=0)
- str = yon_char_get_augumented(str, yon_char_get_augumented(" OPTIRUN=", videoconfig.optirun));
+ str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=","\"",videoconfig.optirun,"\"",NULL));
+ else
+ str = yon_char_get_augumented(str, yon_char_unite(" OPTIRUN=\"\"",NULL));
if (strcmp(videoconfig.primusrun, dntus)!=0&&strcmp(videoconfig.primusrun, "")!=0)
- str = yon_char_get_augumented(str, yon_char_get_augumented(" PRIMUSRUN=", videoconfig.primusrun));
+ str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=","\"", videoconfig.primusrun,"\"",NULL));
+ else
+ str = yon_char_get_augumented(str, yon_char_unite(" PRIMUSRUN=\"\"",NULL));
dictionary *dict=NULL;
+ for (int i=0;istringparameters){
-
- str=yon_char_get_augumented(str, yon_config_make_save_parameter_with_multiple_arguments(yon_dictionary_get_data(dict,monitorconfig*)->stringparameters,XORG_MONITOR(dict->key),","));
-
- }
+ str=yon_char_unite(str," XORG_MONITOR[",dict->key,"]=\"",yon_dictionary_get_data(dict,monitorconfig*)->stringparameters,"\"", NULL);
+ }
}
if (strcmp(str,command)!=0)
@@ -281,8 +361,8 @@ char *yon_configuration_get_remove_command(char *command){
str = yon_char_get_augumented(str, " OPTIRUN");
str = yon_char_get_augumented(str, " PRIMUSRUN");
dictionary *dict=NULL;
- for_dictionaries(dict,videoconfig.monitors){
- str = yon_char_get_augumented(str, yon_char_get_augumented(" XORG_MONITOR[", yon_char_get_augumented(dict->key, "]")));
+ for(int i=0;iconfig){
gtk_container_remove(GTK_CONTAINER(gtk_widget_get_parent(window->templateMonitorscreenOverlay)),window->templateMonitorscreenOverlay);
- yon_dictionary_rip(windowd);
+ videoconfig.monitor_visuals = yon_dictionary_rip(windowd);
gtk_widget_destroy(window->templateMonitorscreenOverlay);
- yon_dictionary_rip(window->config);
+ videoconfig.monitors = yon_dictionary_rip(window->config);
free(window);
}
}
@@ -419,6 +500,22 @@ void on_monitor_add(GtkWidget *self,monitor_window *window){
}
}
+// void on_monitor_string_edit(GtkWidget *self,monitor_edit_window *monitor){
+// int size=0;
+// config_str rtn = yon_char_parse((char*)gtk_entry_get_text(GTK_ENTRY(monitor->templateMonitorConfigurationParameterLineEntry)),&size,",");
+// if (yon_char_parsed_check_exist(rtn,size,"enable")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationEnableCheck));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationResolutionCombo));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationFrequencyCombo));
+// if (yon_char_parsed_check_exist(rtn,size,"rotate")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationRotationCombo));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationPositionPosCombo));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_COMBO_BOX_TEXT(monitor->templateMonitorConfigurationPositionPortCombo));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationDoNotSwitchOffCheck));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationModelineCVTCheck));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationUseCVTReducedCheck));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationModelineGTFCheck));
+// if (yon_char_parsed_check_exist(rtn,size,"")!=-1) GTK_CHECK_BUTTON(monitor->templateMonitorConfigurationMainCheck));
+// }
+
void on_monitor_configure(GtkWidget *self,monitor_window *window){
if(window&&window->config){
monitor_edit_window *monitors = new(monitor_edit_window);
@@ -436,7 +533,6 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
monitors->templateMonitorConfigurationFrequencyLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationFrequencyLabel"));
monitors->templateMonitorConfigurationFrequencyCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationFrequencyCombo"));
monitors->templateMonitorConfigurationRotationLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationRotationLabel"));
- // monitors->templateMonitorConfigurationDoNotSwitchOffLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationDoNotSwitchOffLabel"));
monitors->templateMonitorConfigurationRotationCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationRotationCombo"));
monitors->templateMonitorConfigurationPositionLabel = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationPositionLabel"));
monitors->templateMonitorConfigurationPositionPosCombo = GTK_WIDGET(gtk_builder_get_object(builder, "templateMonitorConfigurationPositionPosCombo"));
@@ -484,7 +580,7 @@ void on_monitor_configure(GtkWidget *self,monitor_window *window){
dictionary *dict=NULL;
for (int i=0;istringparameters)
+ if (!check_if_exists||!yon_dictionary_get_data(check_if_exists,monitorconfig*)->stringparameters||check_if_exists==monitors->config)
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(monitors->templateMonitorConfigurationPortCombo),videoconfig.ports[i]);
}
@@ -558,33 +654,6 @@ void yon_monitor_window_update(monitor_edit_window *window){
}
-void yon_popen(thread_input *input){
- *(FILE**)input->data=popen(input->command,"r");
-}
-
-void yon_launch_with_output(char *command){
- pthread_t tid;
- FILE *output =NULL;
- FILE **output_file=&output;
- thread_input input;
- input.command=command;
- input.data=output_file;
- pthread_create(&tid,NULL,(void*)yon_popen,&input);
- // char **output_strings = NULL;
- // output_strings = malloc(sizeof(char));
- // int i = 0;
- // char str[1000];
- // memset(str, 0, 1000);
- // while (1){
- // if (output){
- // if (fgets(str, 1000, output)){
- // videoconfig.status_render.text_to_render=str;
- // videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
- // _yon_ubl_status_box_render(&videoconfig.status_render);
- // }
- // }
- // }
-}
/**void yon_monitor_view_draw_all(GtkWidget *cnt)
* [EN]
@@ -606,7 +675,9 @@ void yon_monitor_view_draw_all(GtkWidget *cnt){
for_dictionaries(dict,videoconfig.monitor_visuals){
monitor_window *window = yon_dictionary_get_data(dict,monitor_window*);
if(dict->first==dict) {}
- else gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0);
+ else {
+ gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0);
+ }
}
monitor_window *window = yon_dictionary_get_data(videoconfig.monitor_visuals->first,monitor_window*);
gtk_box_pack_start(GTK_BOX(container),window->templateMonitorscreenOverlay,0,0,0);
@@ -644,8 +715,20 @@ void yon_monitor_view_update(){
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,monitor->config->key));
else
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoNameLabel),yon_char_get_augumented(MONITOR_LABEL,""));
+ monitorconfig *params=yon_dictionary_get_data(yon_dictionary_get_data(dict,monitor_window*)->config,monitorconfig*);
+ gtk_widget_set_sensitive(yon_dictionary_get_data(dict,monitor_window*)->templateMonitorImage,params->enable);
if (config->resolution)
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),config->resolution);
+ else if (params->stringparameters){
+ int size=0;
+ config_str rtn=yon_char_parse(params->stringparameters,&size,",");
+ char *res=yon_char_parsed_get_resolution(rtn,size);
+ if (res&&strcmp(res,"")!=0)
+ gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),res);
+ else
+ gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),PARAMETER_DEFAULT_LABEL);
+
+ }
else
gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),PARAMETER_DEFAULT_LABEL);
}
@@ -828,9 +911,9 @@ void on_config_fill_interface(widgets_dict *widgets)
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo));
str = videoconfig.failsafenVidia;
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("Don't use"));
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("fbdev"));
- if (str)
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), DONT_USE_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), FBDEV_LABEL);
+ if (str&&videoconfig.autoChooseDrivers==0)
{
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeNvidiaCombo), 1);
}
@@ -839,14 +922,17 @@ void on_config_fill_interface(widgets_dict *widgets)
gtk_combo_box_text_remove_all(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo));
str = videoconfig.failsafeATI;
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("Don't use"));
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("fbdev"));
- if (str)
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), DONT_USE_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), FBDEV_LABEL);
+ if (str&&videoconfig.autoChooseDrivers==0)
{
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo), 1);
}
else
gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo), 0);
+ if (videoconfig.autoChooseDrivers==1){
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->mainDriverAutomaticallyChooseCheck),1);
+ }
dictionary *dict = NULL;
}
@@ -854,34 +940,55 @@ void on_config_fill_interface(widgets_dict *widgets)
* [EN]
*/
dictionary *yon_proprieary_get(){
+ videoconfig.proprietary=NULL;
+ int drivers_size=0;
+ config_str drivers=yon_config_load(get_proprietary_drivers_command,&drivers_size);
int size=0;
- char **rtn = yon_config_load(get_proprietary_drivers_command,&size);
-
- for (int i=0;idata,&size,":");
gtk_list_store_append(list,&iter);
- gtk_list_store_set(list,&iter,1,str[1],2,str[2],3,str[3],4,str[4],-1);
+ gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],-1);
+ if (strstr(dict->key," installed"))
+ gtk_list_store_set(list,&iter,0,1,-1);
}
}
+char *yon_char_remove_brackets(char* source){
+ if (source){
+ char *src=yon_char_new(source);
+ if (src[0]=='\"') yon_char_divide_search(src,"\"",-1);
+ if (src[strlen(src)-1]=='\"') src=yon_char_divide_search(src,"\"",-1);
+ return src;
+ }
+ return NULL;
+}
+
/**void yon_setup_config(char *configcommand)
* [EN]
*/
@@ -901,35 +1008,48 @@ void yon_setup_config(char *configcommand)
videoconfig.configsize=0;
videoconfig.loaded_config = yon_ubl_load_global_config(command, &videoconfig.configsize);
char *param = NULL;
+ param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"VGADRV_AUTO");
+ if (param){
+ yon_char_divide_search(param,"=",-1);
+ if (strcmp(param,"")!=0)
+ videoconfig.autoChooseDrivers=1;
+
+ }
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"FAILSAFENVIDIA");
if (param){
yon_char_divide_search(param,"=",-1);
+ if (strcmp(param,"")!=0)
videoconfig.failsafenVidia=yon_char_new(param);
}
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"FAILSAFEATI");
if (param){
yon_char_divide_search(param,"=",-1);
+ if (strcmp(param,"")!=0)
videoconfig.failsafeATI=yon_char_new(param);
}
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"OPTIRUN");
if (param){
yon_char_divide_search(param,"=",-1);
- videoconfig.optirun=yon_char_new(param);
+ videoconfig.optirun=yon_char_remove_brackets(yon_char_new(param));
+ if (strcmp(videoconfig.optirun,"")==0) videoconfig.optirun=NULL;
}
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"PRIMUSRUN");
if (param){
yon_char_divide_search(param,"=",-1);
- videoconfig.primusrun=yon_char_new(param);
+ videoconfig.primusrun=yon_char_remove_brackets(yon_char_new(param));
+ if (strcmp(videoconfig.primusrun,"")==0) videoconfig.primusrun=NULL;
}
for (int i=0;iwindow = yon_gtk_builder_get_widget(builder, "ProprietaryDriverChooseWindow");
-
- widgets->propriearyTreeView = yon_gtk_builder_get_widget(builder, "propriearyTreeView");
- widgets->ProprietaryDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietaryDriverColumn"));
- widgets->ProprietaryDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(builder, "ProprietaryDescriptionColumn"));
-
- widgets->ProprietaryCloseButton = yon_gtk_builder_get_widget(builder, "ProprietaryCloseButton");
- widgets->ProprietaryAcceptButton = yon_gtk_builder_get_widget(builder, "ProprietaryAcceptButton");
- if(!videoconfig.list)
- videoconfig.list = GTK_LIST_STORE(gtk_builder_get_object(builder, "liststore6"));
- gtk_list_store_clear(videoconfig.list);
- yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
- gtk_button_set_label(GTK_BUTTON(widgets->ProprietaryCloseButton), _("Cancel"));
- gtk_button_set_label(GTK_BUTTON(widgets->ProprietaryAcceptButton), _("Accept"));
- gtk_tree_view_set_model(GTK_TREE_VIEW(widgets->propriearyTreeView),GTK_TREE_MODEL(videoconfig.list));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Installed"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Package"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Supported Devices"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Driver"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDescriptionColumn), _("Description"));
- gtk_widget_show(widgets->window);
- g_signal_connect(G_OBJECT(widgets->ProprietaryCloseButton), "clicked", G_CALLBACK(on_subwindow_close), NULL);
- combo_tree *trcm=NULL;
- trcm=malloc(sizeof(combo_tree));
- trcm->combo=comboe;
- trcm->tree=widgets->propriearyTreeView;
- g_signal_connect(G_OBJECT(widgets->ProprietaryAcceptButton), "clicked", G_CALLBACK(on_save_driver_configuration), trcm);
-}
-
/** monitor_config yon_monitor_config_new(char *port)
* [EN]
*/
@@ -1037,8 +1123,12 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_
monitor->position=3;
if (yon_char_parsed_check_exist(cnf,size,"ab:")!=-1)
monitor->position=3;
- if (yon_char_parsed_check_exist(cnf,size,"rotate:")!=-1)
- monitor->rotation=0;
+ if (yon_char_parsed_check_exist(cnf,size,"rotate:left")!=-1)
+ monitor->rotation=1;
+ if (yon_char_parsed_check_exist(cnf,size,"rotate:right")!=-1)
+ monitor->rotation=2;
+ if (yon_char_parsed_check_exist(cnf,size,"rotate:invert")!=-1)
+ monitor->rotation=3;
if (yon_char_parsed_check_exist(cnf,size,"dpms")!=-1)
monitor->dpms=1;
if (yon_char_parsed_check_exist(cnf,size,"nodpms")!=-1)
@@ -1047,21 +1137,25 @@ void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_
monitor->cvt=1;
if (yon_char_parsed_check_exist(cnf,size,"reduced")!=-1)
monitor->reduced=1;
- if (yon_char_parsed_check_exist(cnf,size,"r")!=-1)
+ if (yon_char_parsed_check_exist(cnf,size,"r,")!=-1)
monitor->reduced=1;
if (yon_char_parsed_check_exist(cnf,size,"gtf")!=-1)
monitor->gtf=1;
}
}
-int yon_char_get_if_resolution(char *parsed_string){
- char *left=NULL, *right=NULL;
- right=yon_char_new(parsed_string);
- left=yon_char_divide_search(right,"x",1);
- if (left&&right)
- if (atoi(left)&&atoi(right))
- return 1;
- return 0;
+char *yon_char_parsed_get_resolution(config_str parsed_string, int size){
+ char *left=NULL, *right=NULL, *freq=NULL;
+ for (int i=0;iInformationOverlay),widgets->InformationCompanyLogoImage);
+ config_str rtn=yon_config_load(get_adapter_info,&size);
+ char *desc = yon_config_get_parameter(rtn,size,"description");
+ yon_char_divide_search(desc,"=",-1);
+ char *product = yon_config_get_parameter(rtn,size,"product");
+ yon_char_divide_search(product,"=",-1);
+ char *vendor = yon_config_get_parameter(rtn,size,"vendor");
+ yon_char_divide_search(vendor,"=",-1);
+ char *driver_use = yon_config_get_parameter(rtn,size,"Kernel_driver_in_use");
+ yon_char_divide_search(driver_use,"=",-1);
+ char *driver_all = yon_config_get_parameter(rtn,size,"Kernel_modules");
+ yon_char_divide_search(driver_all,"=",-1);
+ char *final_text = yon_char_unite("",DESCRIPTION_LABEL,": ",_(desc),
+ "\n",VENDOR_LABEL,": ",vendor,
+ "\n",MODEL_LABEL,": ",product,
+ "\n",USED_KERNEL_DRIVER_LABEL,": ",driver_use,
+ "\n",AVALIABLE_KERNEL_DRIVERS_LABEL,": ",driver_all,"",NULL);
+ gtk_label_set_markup(GTK_LABEL(gtk_builder_get_object(widgets->builder,"InformationLabel")),final_text);
+ if (strcmp(vendor,"Intel Corporation")==0){
+ GtkIconTheme *icthm=gtk_icon_theme_get_default();
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.intel-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
+ }
+ else if (strcmp(vendor,"NVidia Corporation")==0){
+ GtkIconTheme *icthm=gtk_icon_theme_get_default();
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.nvidia-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
+ }
+ else if (strcmp(vendor,"AMD Corporation")==0){
+ GtkIconTheme *icthm=gtk_icon_theme_get_default();
+ gtk_image_set_from_pixbuf(GTK_IMAGE(widgets->InformationCompanyLogoImage),gtk_icon_info_load_icon(gtk_icon_theme_lookup_icon_for_scale(icthm, "com.ublinux.ubl-settings-video.amd-logo",64,1,GTK_ICON_LOOKUP_FORCE_SVG),NULL));
+ }
+ else {
+ gtk_widget_destroy(widgets->InformationCompanyLogoImage);
+ }
+}
/** void yon_setup_widgets(widgets_dict *widgets)
* [EN]
* Sets up every element on main window
@@ -1224,6 +1354,7 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->driversInfoButton = yon_gtk_builder_get_widget(widgets->builder, "driversInfoButton");
widgets->driversDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "driversDeleteButton");
widgets->driversInstallButton = yon_gtk_builder_get_widget(widgets->builder, "driversInstallButton");
+ widgets->TerminalOverlay = yon_gtk_builder_get_widget(widgets->builder, "TerminalOverlay");
widgets->driversTreeSelection = GTK_TREE_SELECTION(gtk_builder_get_object(widgets->builder, "driversTreeSelection"));
widgets->proprietartInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "proprietartInstalledColumn"));
@@ -1232,6 +1363,15 @@ void yon_setup_widgets(widgets_dict *widgets)
widgets->ProprietaryDescriptionColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietaryDescriptionColumn"));
widgets->ProprietarySupportedColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "ProprietarySupportedColumn"));
+ widgets->DriverModulesTab = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "DriverModulesTab"));
+ widgets->DriversTab = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "DriversTab"));
+ widgets->MainTabLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "MainTabLabel"));
+ widgets->DriversTabLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "DriversTabLabel"));
+ widgets->InformationTabLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationTabLabel"));
+ widgets->InformationFrameLabel = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationFrameLabel"));
+ widgets->InformationOverlay = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationOverlay"));
+ widgets->InformationCompanyLogoImage = GTK_WIDGET(gtk_builder_get_object(widgets->builder, "InformationCompanyLogoImage"));
+
widgets->driverInstalledColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverInstalledColumn"));
widgets->driverPackageColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverPackageColumn"));
widgets->driverDriverColumn = GTK_TREE_VIEW_COLUMN(gtk_builder_get_object(widgets->builder, "driverDriverColumn"));
@@ -1273,60 +1413,59 @@ void yon_setup_widgets(widgets_dict *widgets)
g_signal_connect(G_OBJECT(widgets->mainHeaderSaveGlobalMenuItem), "activate", G_CALLBACK(on_configuration_save_global), widgets);
g_signal_connect(G_OBJECT(widgets->mainHeaderSaveLocalMenuItem), "activate", G_CALLBACK(on_configuration_save_local), widgets);
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("Off"));
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), _("fbdev"));
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("Off"));
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), _("fbdev"));
-
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), _("1st variant. May cause perfomance drops in video games"));
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), _("2nd variant. May not work on specific video cards"));
- gtk_label_set_text(GTK_LABEL(widgets->headInfoLabel), _("Video output configuration"));
- gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeNvidiaLabel), _("Failsafe driver nVidia: "));
- gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeAMDLabel), _("Failsafe driver AMD/ATI: "));
- gtk_label_set_text(GTK_LABEL(widgets->mainDriverFrameLabel), _("Driver"));
- // gtk_label_set_text(GTK_LABEL(widgets->monitorConfigurationMethodLabel),_("Configuration method"));
- gtk_label_set_text(GTK_LABEL(widgets->mainMonitorConfigurationFrameLabel), _("Monitor configuration"));
- gtk_label_set_text(GTK_LABEL(widgets->mainHybridGraphicsFrameLabel), _("Hybrid graphics"));
- gtk_label_set_text(GTK_LABEL(widgets->mainExtraFixGapLabel), _("Fix frame gap (nVidia)"));
- gtk_label_set_text(GTK_LABEL(widgets->mainExtraFrameLabel), _("Extra"));
- gtk_label_set_text(GTK_LABEL(widgets->mainHeaderTitleLabel), _("UBlinux Video Configuration"));
- gtk_label_set_text(GTK_LABEL(widgets->mainHeaderConfigLoadLabel), _("Load"));
- gtk_label_set_text(GTK_LABEL(widgets->mainHeaderSaveConfigurationLabel), _("Save"));
-
- gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), _("On"));
- gtk_button_set_label(GTK_BUTTON(widgets->mainDriverAutomaticallyChooseCheck), _("Automatically choose and use driver"));
- gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchOptirunCheck), _("Launch programms through optirun (nVidia): "));
- gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchPrismusunCheck), _("Launch programs through primusun (nVidia): "));
- gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), _("discrete video only (AMD/ATI)"));
-
- gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadGlobalMenuItem), _("Load from global configuration"));
- gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadLocalMenuItem), _("Load from local configuration"));
- gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalLocalMenuItem), _("Save to global an local configuration"));
- gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalMenuItem), _("Save to global configuration"));
- gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveLocalMenuItem), _("Save to local configuration"));
- gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsDocumentationMenuItem), _("Documentation"));
- gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsAboutMenuItem), _("About"));
-
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Installed"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Package"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Supported Devices"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), _("Driver"));
- gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDescriptionColumn), _("Description"));
- // gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchThroughButton),_("Change"));
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), OFF_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeNvidiaCombo), FBDEV_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), OFF_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainDriverFailsafeAMDCombo), FBDEV_LABEL);
+
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_1_LABEL);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(widgets->mainExtraFixGapCombo), GAP_FIX_2_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->headInfoLabel), HEADER_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeNvidiaLabel), FAILSAFE_NVIDIA_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainDriverFailsafeAMDLabel), FAILSAFE_ATI_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainDriverFrameLabel), DRIVER_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainMonitorConfigurationFrameLabel), MONITOR_CONFIGURATION_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainHybridGraphicsFrameLabel), HYBRID_GRAPHICS_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainExtraFixGapLabel), FIX_GAP_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainExtraFrameLabel), EXTRA_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainHeaderTitleLabel), TITLE_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainHeaderConfigLoadLabel), LOAD_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->mainHeaderSaveConfigurationLabel), SAVE_LABEL);
+
+ gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), ON_LABEL);
+ gtk_button_set_label(GTK_BUTTON(widgets->mainDriverAutomaticallyChooseCheck), AUTO_CHOOSE_DRIVERS_LABEL);
+ gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchOptirunCheck), LAUNCH_OPTIRUN_LABEL);
+ gtk_button_set_label(GTK_BUTTON(widgets->mainExtraLaunchPrismusunCheck), LAUNCH_PRIMUSRUN_LABEL);
+ gtk_button_set_label(GTK_BUTTON(widgets->mainHybridGraphicsDiscreteCheck), DISCRETE_ONLY_LABEL);
+
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadGlobalMenuItem), LOAD_GLOBAL_LABEL);
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderLoadLocalMenuItem), LOAD_LOCAL_LABEL);
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalLocalMenuItem), SAVE_GLOBAL_LOCAL_LABEL);
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveGlobalMenuItem), SAVE_GLOBAL_LABEL);
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSaveLocalMenuItem), SAVE_LOCAL_LABEL);
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsDocumentationMenuItem), DOCUMENTATION_LABEL);
+ gtk_menu_item_set_label(GTK_MENU_ITEM(widgets->mainHeaderSettingsAboutMenuItem), ABOUT_LABEL);
+
+
+ gtk_label_set_text(GTK_LABEL(widgets->DriverModulesTab), DRIVER_MODULES_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->DriversTab), DRIVERS_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->MainTabLabel), MAIN_SETTINGS_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->DriversTabLabel), DRIVERS_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->InformationTabLabel), INFORMATION_LABEL);
+ gtk_label_set_text(GTK_LABEL(widgets->InformationFrameLabel), DEVICES_DRIVERS_LABEL);
+
+ gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), INSTALLED_LABEL);
+ gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), PACKAGE_LABEL);
+ gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), SUPPORTED_LABEL);
+ gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDriverColumn), DRIVER_LABEL);
+ gtk_tree_view_column_set_title(GTK_TREE_VIEW_COLUMN(widgets->ProprietaryDescriptionColumn), DESCRIPTION_LABEL);
+
yon_ubl_header_setup(widgets->mainHeadOverlay, widgets->headBox, widgets->mainHeadBackgroundImage, banner_path);
- // gtk_overlay_add_overlay(GTK_OVERLAY(widgets->mainHeadOverlay),widgets->headBox);
yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
- yon_monitor_view_update();
videoconfig.status_render.icon=widgets->mainStatusIcon;
videoconfig.status_render.label=widgets->mainStatusLabel;
videoconfig.status_render.box=widgets->mainStatusBox;
- // gtk_image_set_from_file(GTK_IMAGE(widgets->mainHeadBackgroundImage),banner_path);
- // MonitorSettings *monitors = yon_setup_monitor_settings();
- // videoconfig.monitors=yon_dictionary_pack_monitors(monitors,yon_check_for_monitors());
- // widgets->overlays = yon_dictionary_pack_overlays(monitors);
- // yon_dictionary_gtk_pack_start_multiple_widgets(widgets->overlays, widgets->mainMonitorVisualConfigurationBox, 0, 0, 0);
- // yon_dictionary_gtk_pack_start_multiple_widgets(widgets->monitors,widgets->mainMonitorConfigurationBox,0,0,0);
}
int main(int argc, char *argv[])
@@ -1341,6 +1480,7 @@ int main(int argc, char *argv[])
widgets_dict widgets;
yon_setup_widgets(&widgets);
yon_gtk_list_store_fill_with_proprietaries(videoconfig.list);
+ yon_gtk_list_store_fill_with_proprietaries(videoconfig.modulelist);
gtk_widget_show(widgets.MainWindow);
// yon_fill_ui(&widgets);
videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS;
@@ -1348,11 +1488,13 @@ int main(int argc, char *argv[])
yon_ubl_status_box_render(&videoconfig.status_render);
on_config_fill_interface(&widgets);
yon_monitor_set_resolutions();
+ yon_adapter_window_setup(&widgets);
GtkCssProvider *css = gtk_css_provider_new();
gtk_css_provider_load_from_path(css, CssPath, NULL);
gtk_style_context_add_provider_for_screen(gdk_screen_get_default(),
GTK_STYLE_PROVIDER(css),
-1);
+ yon_monitor_view_update();
gtk_main();
return 0;
}
\ No newline at end of file
diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h
index 4708913..5bd5184 100644
--- a/source/ubl-settings-video.h
+++ b/source/ubl-settings-video.h
@@ -1,7 +1,9 @@
#include
#include
+#include
#include
#include
+#include
#include
#include
#include
@@ -31,7 +33,7 @@
#define get_resolutions_command "xrandr |grep -noP \"\\d+x+\\d+\""
#define get_resolution_ports_command "xrandr |grep -nwP \"connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} connected\" |grep -oE \"[0-9a-zA-Z:]{1,10} \""
-#define get_proprietary_drivers_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\""
+#define get_proprietary_drivers_info_command "cut -d: -f2- /usr/share/ubl-settings-video/csv/video-drivers.csv | grep -E \"-\""
#define get_resolutions_supportable_command "cut -d, -f1- /usr/share/ubl-settings-video/csv/resolutions.csv |sed 's/,/ /g'"
@@ -39,19 +41,19 @@
#define load_drivers_command "/usr/bin/ubconfig --default --source "
-#define load_drivers_global_command "/usr/bin/ubconfig --default --source global get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN "
+#define load_drivers_global_command "/usr/bin/ubconfig --default --source global get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN VGADRV_AUTO "
#define save_drivers_global_command "/usr/bin/ubconfig --target global set video "
-#define load_drivers_local_command "/usr/bin/ubconfig --default --source system get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN "
+#define load_drivers_local_command "/usr/bin/ubconfig --default --source system get video FAILSAFENVIDIA FAILSAFEATI OPTIRUN PRIMUSRUN VGADRV_AUTO "
#define save_drivers_local_command "pkexec /usr/bin/ubconfig --target system set video "
#define remove_drivers_global_command "/usr/bin/ubconfig --target system remove video "
-#define remove_drivers_local_command "/usr/bin/ubconfig --target global remove video "
+#define remove_drivers_local_command "/usr/bin/ubconfig --target system remove video "
-#define install_proprietary_command "pkexec pacman -Sy --noconfirm "
+#define install_proprietary_command "pkexec pacman --quiet --needed --noconfirm -Sy "
#define delete_proprietary_command "pkexec pacman -R --noconfirm "
@@ -59,6 +61,12 @@
#define get_version_proprietary_command "grep \"VERSION_ID=\" /etc/os-release | cut -d= -f2"
+#define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}-nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'"
+
+#define get_proprietary_drivers_command "LC_ALL=C pacman -Ss ubm-nvidia-.* |grep -oE \"[a-zA-Z-]{1,}nvidia-[a-zA-Z0-9-]{1,}|installed\"|sed ':a;N;$!ba;s/\\ninstalled/ installed/g'"
+
+#define get_adapter_info "lshw -c display -quiet |grep -oE \"vendor:[0-9a-zA-Z ]{1,}|description:[0-9a-zA-Z ]{1,}|product:[]0-9a-zA-Z [-]{1,}\"|sed 's/: /=/g';lspci | grep -E ' VGA | Display ' | cut -d\" \" -f 1 | xargs -i lspci -v -s {} |grep -oE \"Kernel[:a-zA-Z0-9: ]{1,}\"|sed 's/: /=/g'|sed 's/ /_/g'"
+
#define XORG_MONITOR(port) yon_char_get_augumented(" XORG_MONITOR[",yon_char_get_augumented(port,"] "))
@@ -97,6 +105,7 @@ typedef struct
proprietary_config proprietary;
dictionary *supported_resolutions;
GtkListStore *list;
+ GtkListStore *modulelist;
char *failsafenVidia;
char *failsafeATI;
int descreteOnly;
@@ -230,6 +239,23 @@ typedef struct
GtkTreeViewColumn *driverDriverColumn;
GtkTreeViewColumn *driverDescriptionColumn;
GtkTreeViewColumn *driverSupportedColumn;
+
+ GtkWidget *DriverModulesTab;
+ GtkWidget *DriversTab;
+ GtkWidget *MainTabLabel;
+ GtkWidget *DriversTabLabel;
+ GtkWidget *InformationTabLabel;
+ GtkWidget *InformationFrameLabel;
+ GtkWidget *InformationOverlay;
+ GtkWidget *InformationCompanyLogoImage;
+
+ GtkWidget *TerminalOverlay;
+ GtkWidget *TerminalBox;
+ GtkWidget *TerminalRevealer;
+ GtkWidget *TerminalInfoLabel;
+ GtkWidget *TerminalMoreButton;
+ GtkWidget *TerminalScroll;
+ GtkWidget *TerminalMoreRevieler;
} widgets_dict;
typedef struct
@@ -299,7 +325,7 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets);
void on_configuration_save__local_global(GtkWidget *self, widgets_dict *widgets);
void on_configuration_save__local(GtkWidget *self, widgets_dict *widgets);
void yon_config_monitor_string_parse(char *parameters, int *size);
-int yon_char_get_if_resolution(char *parsed_string);
+char *yon_char_parsed_get_resolution(config_str parsed_string, int size);
void yon_monitor_set_resolutions();
monitor_config yon_monitor_config_new(char *port);
void yon_monitor_config_update(monitorconfig* monitor, char *port, char *config_string);
@@ -314,4 +340,6 @@ void yon_monitor_view_update();
void yon_monitor_window_update(monitor_edit_window *window);
char *yon_monitor_make_string(monitorconfig* config);
void yon_launch_with_output(char *command);
+dictionary *yon_proprieary_get();
+void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list);
#endif
\ No newline at end of file
diff --git a/source/ubl-utils.c b/source/ubl-utils.c
index fb74917..5784a10 100644
--- a/source/ubl-utils.c
+++ b/source/ubl-utils.c
@@ -266,7 +266,8 @@ dictionary *yon_dictionary_find(dictionary **dict, char *key)
dictionary *yon_dictionary_rip(dictionary *dict)
{
- if (!dict->next)
+ if (!dict->next&&!dict->prev) return NULL;
+ else if (!dict->next)
{
dictionary *prev = dict->prev;
if (prev)
@@ -401,6 +402,20 @@ char *yon_char_divide(char *source, int dividepos)
return cut;
}
+int yon_char_find_count(char *source, char *find){
+ char *working_string=yon_char_new(source);
+ int i=0;
+ int size=0;
+ int pos=0;
+ config_str rtn = yon_char_parse(working_string,&size,"\n");
+ for (int j=0;j
+
+
+
False
О Программе
@@ -113,7 +174,7 @@
1.2
Copyright © 2023 - UBSoft Software LLC
Settings for video output
- https://ublinux.ru/
+ https://wiki.ublinux.ru/ru/Программное_обеспечение/Программы_и_утилиты/Все/ubl-settings-video
Project Home Page
Это приложение распространяется без каких-либо гарантий.
Подробнее в <a href="https://www.gnu.org/licenses/old-licenses/gpl-2.0.html">GNU General Public License, версии 2 или позднее</a>.
@@ -146,6 +207,166 @@
+
+ 300
+ 0.7299999937415127
+ 1
+ 10
+
+
+ True
+ True
+ False
+ end
+ True
+
+
+ True
+ False
+ 0
+ in
+
+
+ True
+ False
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ vertical
+
+
+ True
+ False
+ 5
+ 5
+ 5
+ 5
+ 5
+ 5
+
+
+ True
+ True
+ False
+ center
+
+
+ True
+ True
+ 0
+
+
+
+
+ More
+ True
+ True
+ True
+ True
+
+
+ False
+ True
+ 1
+
+
+
+
+ False
+ True
+ 0
+
+
+
+
+ True
+ False
+
+
+ True
+ False
+
+
+ True
+ False
+ vertical
+
+
+ True
+ False
+ True
+ natural
+ adjustment1
+ natural
+ UTF-8
+ True
+ False
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ True
+ 0
+
+
+
+
+ True
+ False
+ vertical
+ adjustment1
+ True
+ False
+ 1
+ 2
+
+
+ False
+ True
+ 1
+
+
+
+
+
+
+ False
+ True
+ 1
+
+
+
+
+
+
+
+
+ True
+ False
+
+
+
+
+
+
+
True
False
@@ -296,7 +517,7 @@
True
False
- True
+ True
@@ -316,6 +537,7 @@
False
5
5
+ True
@@ -989,20 +1211,38 @@
-
+
True
- False
- start
- 5
- 5
- 5
- 5
- 6
- 6
-
-
-
-
+ True
+
+
+ True
+ False
+
+
+ True
+ False
+ start
+ 5
+ 5
+ 5
+ 5
+ 6
+ 6
+
+
+
+
+
+
+
+
+
+
True
@@ -1055,7 +1295,6 @@
True
True
- 5
165
@@ -1065,6 +1304,7 @@
5
5
5
+ 5
external
@@ -1292,7 +1532,7 @@
False
5
5
- 12
+ 5
5
@@ -1305,7 +1545,6 @@
True
False
5
- 5
True
@@ -1346,7 +1585,7 @@
False
5
5
- 12
+ 5
5
@@ -1446,7 +1685,6 @@
5
-
+
True
False
Main Settings
@@ -1558,354 +1795,382 @@
-
+
True
- True
- 5
- 5
- 5
- 5
- 5
- 5
+ False
-
+
True
- False
+ True
5
5
5
5
+ 5
5
- vertical
- 5
-
+
True
- True
+ False
+ 5
+ 5
+ 5
+ 5
+ 5
+ vertical
+ 5
-
+
True
True
- 5
- liststore6
- 1
- True
-
-
-
+ external
-
- Installed
+
+ True
+ True
+ 5
+ liststore6
+ 1
+ vertical
+ True
+
+
+
-
-
- 0
-
+
+ Installed
+
+
+
+ 0
+
+
+
-
-
-
-
- Package
-
-
- 1
-
+
+ Package
+
+
+
+ 1
+
+
+
-
-
-
-
- Driver
-
-
- 2
-
+
+ Driver
+
+
+
+ 2
+
+
+
-
-
-
-
- Description
-
-
- 3
-
+
+ autosize
+ Description
+
+
+ word
+ 150
+
+
+ 3
+
+
+
-
-
-
-
- Supported Devices
-
-
- 4
-
+
+ autosize
+ Supported Devices
+
+
+ word
+ 220
+
+
+ 4
+
+
+
-
-
-
- True
- True
- 0
-
-
-
-
- True
- False
- center
- 5
-
-
- Установить
- True
- True
- True
- image9
-
- False
+ True
True
- end
0
-
- Удалить
+
True
- True
- True
- image11
+ False
+ center
+ 5
+
+
+ Установить
+ True
+ True
+ True
+ image9
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ Удалить
+ True
+ True
+ True
+ image11
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ Подробнее
+ True
+ True
+ True
+ image10
+
+
+ False
+ True
+ end
+ 2
+
+
False
True
- end
1
-
-
- Подробнее
- True
- True
- True
- image10
-
-
- False
- True
- end
- 2
-
-
+
+
+
+
+ True
+ False
+ Driver Modules
- False
- True
- 1
+ False
-
-
-
-
- True
- False
- Driver Modules
-
-
- False
-
-
-
-
- True
- False
- 5
- 5
- 5
- 5
- 5
- vertical
- 5
-
+
True
- True
+ False
+ 5
+ 5
+ 5
+ 5
+ 5
+ vertical
+ 5
-
+
True
True
- 5
- liststore6
- 0
- vertical
- True
- 2
-
-
-
+ external
-
- Installed
+
+ True
+ True
+ 5
+ liststore6
+ 0
+ vertical
+ True
+ 2
+
+
+
-
-
- 0
-
+
+ Installed
+
+
+
+ 0
+
+
+
-
-
-
-
- Package
-
-
- 1
-
+
+ Package
+
+
+
+ 1
+
+
+
-
-
-
-
- Driver
-
-
- 2
-
+
+ Driver
+
+
+
+ 2
+
+
+
-
-
-
-
- Description
-
-
- 3
-
+
+ autosize
+ Description
+
+
+ word
+ 150
+
+
+ 3
+
+
+
-
-
-
-
- Supported Devices
-
-
- 4
-
+
+ autosize
+ Supported Devices
+
+
+ word
+ 220
+
+
+ 4
+
+
+
-
-
-
- True
- True
- 0
-
-
-
-
- True
- False
- center
- 5
-
-
- Установить
- True
- True
- True
- image6
-
- False
+ True
True
- end
0
-
- Удалить
+
True
- True
- True
- image7
+ False
+ center
+ 5
+
+
+ Установить
+ True
+ True
+ True
+ image6
+
+
+ False
+ True
+ end
+ 0
+
+
+
+
+ Удалить
+ True
+ True
+ True
+ image7
+
+
+ False
+ True
+ end
+ 1
+
+
+
+
+ Подробнее
+ True
+ True
+ True
+ image12
+
+
+ False
+ True
+ end
+ 2
+
+
False
True
- end
1
-
-
- Подробнее
- True
- True
- True
- image12
-
-
- False
- True
- end
- 2
-
-
- False
- True
1
+
+
+ True
+ False
+ Drivers
+
+
+ 1
+ False
+
+
+
+
+
+
+
+
- 1
-
-
-
-
- True
- False
- Drivers
-
-
- 1
- False
+ -1
-
-
-
-
-
-
1
-
+
True
False
Drivers
@@ -1936,18 +2201,59 @@
True
False
+ 15
+ 15
+ 20
-
+
+ 177
+ 159
+ True
+ False
+ start
+ start
+
+
+ True
+ False
+ start
+ end
+ 128
+ com.ublinux.ubl-settings-video.video-card
+
+
+ -1
+
+
+
+
+ False
+ True
+ 0
+
-
+
+ True
+ False
+ start
+ <span size='15pt'><span color='#1a5fb4'>sdrtjhsrtjh:</span> dfuykdftytdykkdfty</span>
+ True
+ 0
+ 0
+
+
+ False
+ True
+ 1
+
-
+
True
False
5
@@ -1961,7 +2267,7 @@
-
+
True
False
Information
@@ -2185,6 +2491,9 @@
+
+ both
+
True
False
diff --git a/ubl-settings-video.pot b/ubl-settings-video.pot
index 3bc82af..292b5f6 100644
--- a/ubl-settings-video.pot
+++ b/ubl-settings-video.pot
@@ -11,194 +11,348 @@ msgstr ""
"POT-Creation-Date: 2023-04-21 12:33+0000\n"
"PO-Revision-Date: 2023-01-01 00:00+0600\n"
"Last-Translator: UBLinux Team \n"
-"Language-Team: Russian - UBLinux Team \n"
-"Language: Russian\n"
+"Language-Team: UBLinux Team \n"
+"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: source/ubl-settings-video.c:26 source/ubl-settings-video.c:223
-msgid "Cancel"
+#: source/ubl-settings-video.c:323 source/ubl-settings-video.c:366
+#: source/ubl-settings-video.c:923 source/ubl-settings-video.c:934
+msgid "Don't use"
msgstr ""
-#: source/ubl-settings-video.c:27
-msgid "Accept"
+#: source/ubl-settings-video.c:615 source/ubl-settings-video-strings.h:38
+msgid "UBlinux Video Configuration"
msgstr ""
-#: source/ubl-settings-video.c:28 source/ubl-settings-video.c:386
-msgid "Driver"
+#: source/ubl-settings-video.c:617
+msgid "Progect Home Page"
msgstr ""
-#: source/ubl-settings-video.c:29
-msgid "Description"
+#: source/ubl-settings-video.c:618
+msgid "Videocard and monitor configuration manager"
msgstr ""
-#: source/ubl-settings-video.c:87 source/ubl-settings-video.c:392
-msgid "UBlinux Video Configuration"
+#: source/ubl-settings-video.c:924 source/ubl-settings-video.c:935
+#: source/ubl-settings-video-strings.h:43
+msgid "fbdev"
msgstr ""
-#: source/ubl-settings-video.c:89
-msgid "Progect Home Page"
+#: source/ubl-settings-video-strings.h:1
+msgid "Default settings"
msgstr ""
-#: source/ubl-settings-video.c:90
-msgid "Videocard and monitor configuration manager"
+#: source/ubl-settings-video-strings.h:2
+msgid "Monitor "
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:3
+msgid "Video adapter and display settings"
msgstr ""
-#: source/ubl-settings-video.c:215
-msgid "Monitor: "
+#: source/ubl-settings-video-strings.h:4
+msgid "Port: "
msgstr ""
-#: source/ubl-settings-video.c:216
+#: source/ubl-settings-video-strings.h:5
msgid "Resolution (px): "
msgstr ""
-#: source/ubl-settings-video.c:217
+#: source/ubl-settings-video-strings.h:6
msgid "Frequency (Hz): "
msgstr ""
-#: source/ubl-settings-video.c:218
+#: source/ubl-settings-video-strings.h:7
msgid "Rotation: "
msgstr ""
-#: source/ubl-settings-video.c:220
-msgid "Main monitor"
+#: source/ubl-settings-video-strings.h:8
+msgid "Position: "
msgstr ""
-#: source/ubl-settings-video.c:221
-msgid "through parameter line:"
+#: source/ubl-settings-video-strings.h:9
+msgid "Do not switch off display"
msgstr ""
-#: source/ubl-settings-video.c:226 source/ubl-settings-video.c:231
-#: source/ubl-settings-video.c:233 source/ubl-settings-video.c:236
-#: source/ubl-settings-video.c:238 source/ubl-settings-video.c:258
-msgid "Default settings"
+#: source/ubl-settings-video-strings.h:10
+msgid "Create modeline for current resolution with CVT"
msgstr ""
-#: source/ubl-settings-video.c:374
-msgid "Don't use"
+#: source/ubl-settings-video-strings.h:11
+msgid "Use \"CVT Reduced Blanking\""
msgstr ""
-#: source/ubl-settings-video.c:375 source/ubl-settings-video.c:377
-msgid "Off"
+#: source/ubl-settings-video-strings.h:12
+msgid "Create modeline for current resolution with GTF"
msgstr ""
-#: source/ubl-settings-video.c:376 source/ubl-settings-video.c:378
-msgid "fbdev"
+#: source/ubl-settings-video-strings.h:13
+msgid "Configure manually through parameter line: "
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:14
+msgid "Main display"
msgstr ""
-#: source/ubl-settings-video.c:380
+#: source/ubl-settings-video-strings.h:15
+msgid "Show unsupported"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:16
+msgid "Enabled"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:17
+msgid "Left"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:18
+msgid "Right"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:19
+msgid "Inverted"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:20
+msgid "Left of"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:21
+msgid "Right of"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:22
+msgid "Above"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:23
+msgid "Below "
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:24
+msgid "No rotation"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:25
+#: source/ubl-settings-video-strings.h:40
+msgid "Save"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:26
+#: source/ubl-settings-video-strings.h:58
+msgid "Cancel"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:27
+msgid "Choose port to configure"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:28
msgid "1st variant. May cause perfomance drops in video games"
msgstr ""
-#: source/ubl-settings-video.c:381
+#: source/ubl-settings-video-strings.h:29
msgid "2nd variant. May not work on specific video cards"
msgstr ""
-#: source/ubl-settings-video.c:382
+#: source/ubl-settings-video-strings.h:30
msgid "Video output configuration"
msgstr ""
-#: source/ubl-settings-video.c:383
-msgid "Proprietary driver: "
-msgstr ""
-
-#: source/ubl-settings-video.c:384
+#: source/ubl-settings-video-strings.h:31
msgid "Failsafe driver nVidia: "
msgstr ""
-#: source/ubl-settings-video.c:385
+#: source/ubl-settings-video-strings.h:32
msgid "Failsafe driver AMD/ATI: "
msgstr ""
-#: source/ubl-settings-video.c:388
+#: source/ubl-settings-video-strings.h:33
+msgid "Driver"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:34
msgid "Monitor configuration"
msgstr ""
-#: source/ubl-settings-video.c:389
+#: source/ubl-settings-video-strings.h:35
msgid "Hybrid graphics"
msgstr ""
-#: source/ubl-settings-video.c:390
+#: source/ubl-settings-video-strings.h:36
msgid "Fix frame gap (nVidia)"
msgstr ""
-#: source/ubl-settings-video.c:391
+#: source/ubl-settings-video-strings.h:37
msgid "Extra"
msgstr ""
-#: source/ubl-settings-video.c:393
+#: source/ubl-settings-video-strings.h:39
msgid "Load"
msgstr ""
-#: source/ubl-settings-video.c:394
-msgid "Save"
+#: source/ubl-settings-video-strings.h:41
+msgid "On"
msgstr ""
-#: source/ubl-settings-video.c:396
-msgid "On"
+#: source/ubl-settings-video-strings.h:42
+msgid "Off"
msgstr ""
-#: source/ubl-settings-video.c:397
+#: source/ubl-settings-video-strings.h:44
msgid "Automatically choose and use driver"
msgstr ""
-#: source/ubl-settings-video.c:398
+#: source/ubl-settings-video-strings.h:45
msgid "Launch programms through optirun (nVidia): "
msgstr ""
-#: source/ubl-settings-video.c:399
-msgid "Launch programs through primusun (nVidia): "
+#: source/ubl-settings-video-strings.h:46
+msgid "Launch programs through primusrun (nVidia): "
msgstr ""
-#: source/ubl-settings-video.c:400
+#: source/ubl-settings-video-strings.h:47
msgid "discrete video only (AMD/ATI)"
msgstr ""
-#: source/ubl-settings-video.c:402
+#: source/ubl-settings-video-strings.h:48
msgid "Load from global configuration"
msgstr ""
-#: source/ubl-settings-video.c:403
+#: source/ubl-settings-video-strings.h:49
msgid "Load from local configuration"
msgstr ""
-#: source/ubl-settings-video.c:404
+#: source/ubl-settings-video-strings.h:50
msgid "Save to global an local configuration"
msgstr ""
-#: source/ubl-settings-video.c:405
+#: source/ubl-settings-video-strings.h:51
msgid "Save to global configuration"
msgstr ""
-#: source/ubl-settings-video.c:406
+#: source/ubl-settings-video-strings.h:52
msgid "Save to local configuration"
msgstr ""
-#: source/ubl-settings-video.c:407
+#: source/ubl-settings-video-strings.h:53
msgid "Documentation"
msgstr ""
-#: source/ubl-settings-video.c:408
+#: source/ubl-settings-video-strings.h:54
msgid "About"
msgstr ""
-#: source/ubl-settings-video.c:438
-msgid "Configuration has been loaded"
+#: source/ubl-settings-video-strings.h:55
+msgid "Installed"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:56
+msgid "Package"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:57
+msgid "Supported Devices"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:59
+msgid "Accept"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:61
+msgid "Information"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:62
+msgid "Drivers"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:63
+msgid "Main settings"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:64
+msgid "Devices and drivers"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:65
+msgid "Driver modules"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:80
+msgid "Error: Port must be chosen to save"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:81
+msgid "Monitor configuration succeedeed"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:83
+msgid "Global configuration loading succseeded."
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:84
+msgid "Local configuration loading succseeded."
msgstr ""
-#: source/ubl-settings-video.h:22
+#: source/ubl-settings-video-strings.h:86
+msgid "Local and global configuration saving succseeded."
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:87
+msgid "Global configuration saving succseeded."
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:88
+msgid "Local configuration saving succseeded."
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:90
+msgid "Yes"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:91
+msgid "No"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:93
+msgid "Description"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:94
+msgid "Vendor"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:95
+msgid "Model"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:96
+msgid "Kernel driver in use"
+msgstr ""
+
+#: source/ubl-settings-video-strings.h:97
+msgid "Kernel modules"
+msgstr ""
+
+#: source/ubl-settings-video.h:25
msgid "Failed to load global configuration"
msgstr ""
-#: source/ubl-settings-video.h:23
+#: source/ubl-settings-video.h:26
msgid "Failed to load local configuration"
msgstr ""
-#: source/ubl-settings-video.h:25
+#: source/ubl-settings-video.h:28
msgid "Saving to global configuration Succeeded"
msgstr ""
-#: source/ubl-settings-video.h:26
+#: source/ubl-settings-video.h:29
msgid "Saving to local configuration Succeeded"
msgstr ""
+
+
+msgid "VGA compitable controller"
+msgstr ""
\ No newline at end of file
diff --git a/ubl-settings-video_ru.po b/ubl-settings-video_ru.po
index c4ea148..685a775 100644
--- a/ubl-settings-video_ru.po
+++ b/ubl-settings-video_ru.po
@@ -17,208 +17,357 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-#: source/ubl-settings-video.c:26 source/ubl-settings-video.c:223
-msgid "Cancel"
-msgstr "Отмена"
-
-#: source/ubl-settings-video.c:27
-msgid "Accept"
-msgstr "Принять"
-
-#: source/ubl-settings-video.c:28 source/ubl-settings-video.c:386
-msgid "Driver"
-msgstr "Драйвер"
-
-#: source/ubl-settings-video.c:29
-msgid "Description"
-msgstr "Описание"
+#: source/ubl-settings-video.c:323 source/ubl-settings-video.c:366
+#: source/ubl-settings-video.c:923 source/ubl-settings-video.c:934
+msgid "Don't use"
+msgstr "Не использовать"
-#: source/ubl-settings-video.c:87 source/ubl-settings-video.c:392
+#: source/ubl-settings-video.c:615 source/ubl-settings-video-strings.h:38
msgid "UBlinux Video Configuration"
msgstr "Видеокарта/Экран"
-#: source/ubl-settings-video.c:89
+#: source/ubl-settings-video.c:617
msgid "Progect Home Page"
msgstr "Домашняя страница проекта"
-#: source/ubl-settings-video.c:90
-#, fuzzy
+#: source/ubl-settings-video.c:618
msgid "Videocard and monitor configuration manager"
msgstr "Настройка вывода изображения"
-#: source/ubl-settings-video.c:215
-msgid "Monitor: "
+#: source/ubl-settings-video.c:924 source/ubl-settings-video.c:935
+#: source/ubl-settings-video-strings.h:43
+msgid "fbdev"
+msgstr "fbdev"
+
+#: source/ubl-settings-video-strings.h:1
+msgid "Default settings"
+msgstr "По умолчанию"
+
+#: source/ubl-settings-video-strings.h:2
+msgid "Monitor "
msgstr "Монитор: "
-#: source/ubl-settings-video.c:216
+#: source/ubl-settings-video-strings.h:3
+msgid "Video adapter and display settings"
+msgstr "Настройка вывода изображения и установка драйвера видеокарты"
+
+#: source/ubl-settings-video-strings.h:4
+msgid "Port: "
+msgstr "Порт: "
+
+#: source/ubl-settings-video-strings.h:5
msgid "Resolution (px): "
msgstr "Разрешение (px): "
-#: source/ubl-settings-video.c:217
+#: source/ubl-settings-video-strings.h:6
msgid "Frequency (Hz): "
msgstr "Обновления (Hz): "
-#: source/ubl-settings-video.c:218
+#: source/ubl-settings-video-strings.h:7
msgid "Rotation: "
msgstr "Вращение: "
-#: source/ubl-settings-video.c:220
-#, fuzzy
-msgid "Main monitor"
-msgstr "Основной"
+#: source/ubl-settings-video-strings.h:8
+msgid "Position: "
+msgstr "Положение: "
-#: source/ubl-settings-video.c:221
-msgid "through parameter line:"
-msgstr "Через строку параметра: "
+#: source/ubl-settings-video-strings.h:9
+msgid "Do not switch off display"
+msgstr "Не выключать дисплей"
-#: source/ubl-settings-video.c:226 source/ubl-settings-video.c:231
-#: source/ubl-settings-video.c:233 source/ubl-settings-video.c:236
-#: source/ubl-settings-video.c:238 source/ubl-settings-video.c:258
-msgid "Default settings"
-msgstr "По умолчанию"
+#: source/ubl-settings-video-strings.h:10
+msgid "Create modeline for current resolution with CVT"
+msgstr "Создать modeline для укащанного разрешения с помощью CVT"
-#: source/ubl-settings-video.c:374
-msgid "Don't use"
-msgstr "Не использовать"
+#: source/ubl-settings-video-strings.h:11
+msgid "Use \"CVT Reduced Blanking\""
+msgstr ""
+"Использовать \"CVT Reduced Blanking\" уменьшения пропускной способности\n"
+"для дисплеев с высоким разрешением"
-#: source/ubl-settings-video.c:375 source/ubl-settings-video.c:377
-msgid "Off"
-msgstr "Выключить"
+#: source/ubl-settings-video-strings.h:12
+msgid "Create modeline for current resolution with GTF"
+msgstr "Создать modeline для указанного разрешения с помощью GTF"
-#: source/ubl-settings-video.c:376 source/ubl-settings-video.c:378
-msgid "fbdev"
-msgstr "fbdev"
+#: source/ubl-settings-video-strings.h:13
+msgid "Configure manually through parameter line: "
+msgstr "Настроить вручную через строку параметра: "
+
+#: source/ubl-settings-video-strings.h:14
+msgid "Main display"
+msgstr "Основной дисплей"
+
+#: source/ubl-settings-video-strings.h:15
+msgid "Show unsupported"
+msgstr "Все видеорежимы"
+
+#: source/ubl-settings-video-strings.h:16
+msgid "Enabled"
+msgstr "Включён"
+
+#: source/ubl-settings-video-strings.h:17
+msgid "Left"
+msgstr "Влево"
+
+#: source/ubl-settings-video-strings.h:18
+msgid "Right"
+msgstr "Вправо"
+
+#: source/ubl-settings-video-strings.h:19
+msgid "Inverted"
+msgstr "Инвертирован"
+
+#: source/ubl-settings-video-strings.h:20
+msgid "Left of"
+msgstr "Слева от"
+
+#: source/ubl-settings-video-strings.h:21
+msgid "Right of"
+msgstr "Справа от"
+
+#: source/ubl-settings-video-strings.h:22
+msgid "Above"
+msgstr "Над"
+
+#: source/ubl-settings-video-strings.h:23
+msgid "Below "
+msgstr "Под "
-#: source/ubl-settings-video.c:380
+#: source/ubl-settings-video-strings.h:24
+msgid "No rotation"
+msgstr "Не поворачивать"
+
+#: source/ubl-settings-video-strings.h:25
+#: source/ubl-settings-video-strings.h:40
+msgid "Save"
+msgstr "Сохранить"
+
+#: source/ubl-settings-video-strings.h:26
+#: source/ubl-settings-video-strings.h:58
+msgid "Cancel"
+msgstr "Отмена"
+
+#: source/ubl-settings-video-strings.h:27
+msgid "Choose port to configure"
+msgstr "Выбрать порт для настройки"
+
+#: source/ubl-settings-video-strings.h:28
msgid "1st variant. May cause perfomance drops in video games"
msgstr "1 вариант. Может снизить производительность в играх"
-#: source/ubl-settings-video.c:381
+#: source/ubl-settings-video-strings.h:29
msgid "2nd variant. May not work on specific video cards"
msgstr "2 вариант. Не на каждой карте может сработать"
-#: source/ubl-settings-video.c:382
+#: source/ubl-settings-video-strings.h:30
msgid "Video output configuration"
msgstr "Настройка вывода изображения"
-#: source/ubl-settings-video.c:383
-#, fuzzy
-msgid "Proprietary driver: "
-msgstr "Проприетарный драйвер: "
-
-#: source/ubl-settings-video.c:384
-#, fuzzy
+#: source/ubl-settings-video-strings.h:31
msgid "Failsafe driver nVidia: "
msgstr "Отказоучтойчивый драйвер nVidia: "
-#: source/ubl-settings-video.c:385
-#, fuzzy
+#: source/ubl-settings-video-strings.h:32
msgid "Failsafe driver AMD/ATI: "
msgstr "Отказоустойчивый драйвер AMD/ATI: "
-#: source/ubl-settings-video.c:388
+#: source/ubl-settings-video-strings.h:33
+msgid "Driver"
+msgstr "Драйвер"
+
+#: source/ubl-settings-video-strings.h:34
msgid "Monitor configuration"
msgstr "Настройка экрана"
-#: source/ubl-settings-video.c:389
+#: source/ubl-settings-video-strings.h:35
msgid "Hybrid graphics"
msgstr "Гибридная графика"
-#: source/ubl-settings-video.c:390
+#: source/ubl-settings-video-strings.h:36
msgid "Fix frame gap (nVidia)"
msgstr "Исправить разрыв кадров (nVidia)"
-#: source/ubl-settings-video.c:391
+#: source/ubl-settings-video-strings.h:37
msgid "Extra"
msgstr "Дополнительно"
-#: source/ubl-settings-video.c:393
+#: source/ubl-settings-video-strings.h:39
msgid "Load"
msgstr "Загрузить"
-#: source/ubl-settings-video.c:394
-msgid "Save"
-msgstr "Сохранить"
-
-#: source/ubl-settings-video.c:396
+#: source/ubl-settings-video-strings.h:41
msgid "On"
msgstr "Включить"
-#: source/ubl-settings-video.c:397
+#: source/ubl-settings-video-strings.h:42
+msgid "Off"
+msgstr "Выключить"
+
+#: source/ubl-settings-video-strings.h:44
msgid "Automatically choose and use driver"
msgstr "Автоматический выбор и использование драйвера"
-#: source/ubl-settings-video.c:398
-#, fuzzy
+#: source/ubl-settings-video-strings.h:45
msgid "Launch programms through optirun (nVidia): "
-msgstr "Запуск программ через (nVidia)"
+msgstr "Запуск программ через optirun (nVidia)"
-#: source/ubl-settings-video.c:399
-#, fuzzy
-msgid "Launch programs through primusun (nVidia): "
-msgstr "Запуск программ через (nVidia)"
+#: source/ubl-settings-video-strings.h:46
+msgid "Launch programs through primusrun (nVidia): "
+msgstr "Запуск программ через primusrun (nVidia)"
-#: source/ubl-settings-video.c:400
+#: source/ubl-settings-video-strings.h:47
msgid "discrete video only (AMD/ATI)"
msgstr "Только дискретное видео (AMD/ATI)"
-#: source/ubl-settings-video.c:402
-#, fuzzy
+#: source/ubl-settings-video-strings.h:48
msgid "Load from global configuration"
msgstr "Загрузить глобальную конфигурацию"
-#: source/ubl-settings-video.c:403
-#, fuzzy
+#: source/ubl-settings-video-strings.h:49
msgid "Load from local configuration"
msgstr "Загрузить локальную конфигуруцию"
-#: source/ubl-settings-video.c:404
-#, fuzzy
+#: source/ubl-settings-video-strings.h:50
msgid "Save to global an local configuration"
msgstr "Сохранить в глобальную и локальную конфигурацию"
-#: source/ubl-settings-video.c:405
-#, fuzzy
+#: source/ubl-settings-video-strings.h:51
msgid "Save to global configuration"
msgstr "Сохранить в глобальную конфигурацию"
-#: source/ubl-settings-video.c:406
-#, fuzzy
+#: source/ubl-settings-video-strings.h:52
msgid "Save to local configuration"
msgstr "Схоранить в локальную конфигурацию"
-#: source/ubl-settings-video.c:407
-#, fuzzy
+#: source/ubl-settings-video-strings.h:53
msgid "Documentation"
msgstr "Справка"
-#: source/ubl-settings-video.c:408
+#: source/ubl-settings-video-strings.h:54
msgid "About"
msgstr "О программе"
-#: source/ubl-settings-video.c:438
-msgid "Configuration has been loaded"
-msgstr "Конфигурация была загружена"
+#: source/ubl-settings-video-strings.h:55
+msgid "Installed"
+msgstr "Установлено"
-#: source/ubl-settings-video.h:22
-#, fuzzy
+#: source/ubl-settings-video-strings.h:56
+msgid "Package"
+msgstr "Пакет"
+
+#: source/ubl-settings-video-strings.h:57
+msgid "Supported Devices"
+msgstr "Устройства"
+
+#: source/ubl-settings-video-strings.h:59
+msgid "Accept"
+msgstr "Принять"
+
+#: source/ubl-settings-video-strings.h:61
+msgid "Information"
+msgstr "Информация"
+
+#: source/ubl-settings-video-strings.h:62
+msgid "Drivers"
+msgstr "Драйвера"
+
+#: source/ubl-settings-video-strings.h:63
+msgid "Main settings"
+msgstr "Основные настройки"
+
+#: source/ubl-settings-video-strings.h:64
+msgid "Devices and drivers"
+msgstr "Устройства и драйвера"
+
+#: source/ubl-settings-video-strings.h:65
+msgid "Driver modules"
+msgstr "Модули ядра"
+
+#: source/ubl-settings-video-strings.h:80
+msgid "Error: Port must be chosen to save"
+msgstr "Ошибка: Выберите порт для сохранения"
+
+#: source/ubl-settings-video-strings.h:81
+msgid "Monitor configuration succeedeed"
+msgstr "Настройки экрана сохранены"
+
+#: source/ubl-settings-video-strings.h:83
+msgid "Global configuration loading succseeded."
+msgstr "Успешная загрузка глобальной конфигурации"
+
+#: source/ubl-settings-video-strings.h:84
+msgid "Local configuration loading succseeded."
+msgstr "Успешная загрузка локальной конфигурации"
+
+#: source/ubl-settings-video-strings.h:86
+msgid "Local and global configuration saving succseeded."
+msgstr "Успешное сохранение глобальной и локальной конфигурации"
+
+#: source/ubl-settings-video-strings.h:87
+msgid "Global configuration saving succseeded."
+msgstr "Успешное сохранение глобальной конфигурации"
+
+#: source/ubl-settings-video-strings.h:88
+msgid "Local configuration saving succseeded."
+msgstr "Успешная загрузка локальной конфигурации"
+
+#: source/ubl-settings-video-strings.h:90
+msgid "Yes"
+msgstr "Да"
+
+#: source/ubl-settings-video-strings.h:91
+msgid "No"
+msgstr "Нет"
+
+#: source/ubl-settings-video-strings.h:93
+msgid "Description"
+msgstr "Описание"
+
+#: source/ubl-settings-video-strings.h:94
+msgid "Vendor"
+msgstr "Производитель"
+
+#: source/ubl-settings-video-strings.h:95
+msgid "Model"
+msgstr "Модель"
+
+#: source/ubl-settings-video-strings.h:96
+msgid "Kernel driver in use"
+msgstr "Используемый драйвер ядра"
+
+#: source/ubl-settings-video-strings.h:97
+msgid "Kernel modules"
+msgstr "Модули ядра"
+
+#: source/ubl-settings-video.h:25
msgid "Failed to load global configuration"
msgstr "Ошибка загрузки глобальной конфигурации"
-#: source/ubl-settings-video.h:23
-#, fuzzy
+#: source/ubl-settings-video.h:26
msgid "Failed to load local configuration"
msgstr "Ошибка загрузки локальной конфигурации"
-#: source/ubl-settings-video.h:25
-#, fuzzy
+#: source/ubl-settings-video.h:28
msgid "Saving to global configuration Succeeded"
msgstr "Успешное сохранение глобальной конфигурации"
-#: source/ubl-settings-video.h:26
-#, fuzzy
+#: source/ubl-settings-video.h:29
msgid "Saving to local configuration Succeeded"
msgstr "Успешное сохранение локальной конфигурации"
+
+msgid "VGA compitable controller"
+msgstr "VGA-совместимый адаптер"
+#~ msgid "Configuration has been loaded"
+#~ msgstr "Конфигурация была загружена"
+
+#, fuzzy
+#~ msgid "Main monitor"
+#~ msgstr "Основной"
+
+#, fuzzy
+#~ msgid "Proprietary driver: "
+#~ msgstr "Проприетарный драйвер: "
+
#~ msgid "DPMS off"
#~ msgstr "DMPS выключен"
diff --git a/video-drivers.csv b/video-drivers.csv
index e79c785..9fa002b 100644
--- a/video-drivers.csv
+++ b/video-drivers.csv
@@ -1,8 +1,8 @@
VERSION_ID:DRV_PAСKAGE:DRV_NAME:DRV_DESCRIPTION:DRV_SUPPORT
-:ubm-nvidia-340:nvidia-340:Пакет с модулем драйвера и утилиты NVIDIA 340xx:Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
-:ubm-nvidia-390:nvidia-390:Пакет с модулем драйвера и утилиты NVIDIA 390xx:Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX
-:ubm-nvidia-430:nvidia-430:Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты:Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
-:ubm-nvidia-470:nvidia-470:Пакет с модулем драйвера и утилиты NVIDIA 470xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
-:ubm-nvidia-510:nvidia-510:Пакет с модулем драйвера и утилиты NVIDIA 510xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
-:ubm-nvidia-515:nvidia-515:Пакет с модулем драйвера и утилиты NVIDIA 515xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
-:ubm-nvidia-optimus:nvidia-optimus:Пакет с модулем включает в себя NVIDIA Optimus:
+2204:ubm-nvidia-340:nvidia-340:Пакет с модулем драйвера и утилиты NVIDIA 340xx:Драйвер видеокарт nVidia серий 8XXX, 9XXX, 1XX, 2XX, 3XX, 4XX, 5XX, 6XX, 7XX
+2204:ubm-nvidia-390:nvidia-390:Пакет с модулем драйвера и утилиты NVIDIA 390xx:Драйвер видеокарт nVidia серий 4XX, 5XX, 6XX, 7XX, 9XX, 10XX
+2204:ubm-nvidia-430:nvidia-430:Пакет с модулем включает в себя драйвер NVIDIA 430xx и утилиты:Драйвер видеокарт nVidia серий 6XX, 7XX, 9XX, 10XX, 16XX
+2204:ubm-nvidia-470:nvidia-470:Пакет с модулем драйвера и утилиты NVIDIA 470xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
+2204:ubm-nvidia-510:nvidia-510:Пакет с модулем драйвера и утилиты NVIDIA 510xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
+2204:ubm-nvidia-515:nvidia-515:Пакет с модулем драйвера и утилиты NVIDIA 515xx:Драйвер видеокарт nVidia серий NVS, Quadro Sync, Quadro NVS, Quadro Blade/Embedded, Quadro, Quadro RTX, NVIDIA RTX
+2204:ubm-nvidia-optimus:nvidia-optimus:Пакет с модулем включает в себя NVIDIA Optimus: