From 338366472116e1f7b1a9348d4312858ee8323efe Mon Sep 17 00:00:00 2001 From: Ivan Yarcev Date: Wed, 10 May 2023 15:16:36 +0600 Subject: [PATCH] Launch arguments, socket support, config loading fixes --- source/ubl-settings-video.c | 220 +++++++++++++++++++++++++++--------- source/ubl-settings-video.h | 22 +++- 2 files changed, 184 insertions(+), 58 deletions(-) diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 3108062..b979c50 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -53,7 +53,7 @@ void on_monitor_config_save(GtkWidget *self, monitor_edit_window *window){ } 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)); + config->resolution =yon_char_divide_search((char*)gtk_combo_box_text_get_active_text(GTK_COMBO_BOX_TEXT(window->templateMonitorConfigurationResolutionCombo)),";",-1); 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; @@ -403,21 +403,23 @@ void on_configuration_save_local_global(GtkWidget *self, widgets_dict *widgets) void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets) { - videoconfig.status_render.text_to_render=GLOBAL_SAVE_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); yon_update_config(widgets); - char *str = NULL; - if (videoconfig.failsafenVidia) - str = yon_char_get_augumented(save_drivers_global_command, yon_char_get_augumented(" ", videoconfig.failsafenVidia)); - if (videoconfig.failsafeATI) - str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.failsafeATI)); - if (videoconfig.optirun) - str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.optirun)); - if (videoconfig.primusrun) - str = yon_char_get_augumented(str, yon_char_get_augumented(" ", videoconfig.primusrun)); - // printf(str); - yon_config_save(str); + char *str=NULL; + char *delstr=NULL; + str=yon_configuration_get_save_command(save_drivers_global_command); + delstr=yon_configuration_get_remove_command(remove_drivers_global_command); + if (delstr){ + printf("%s\n\n",delstr); + yon_config_save(delstr); + } + if (str){ + printf("%s\n\n",str); + yon_config_save(str); + + videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS; + videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + yon_ubl_status_box_render(&videoconfig.status_render); + } } void yon_update_config(widgets_dict *widgets) @@ -430,38 +432,29 @@ void yon_update_config(widgets_dict *widgets) void on_configuration_load_local(GtkWidget *self, widgets_dict *widgets) { - videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); - char *command = load_drivers_local_command; - dictionary *dct; - for_dictionaries(dct, videoconfig.monitors) - { - command = yon_char_get_augumented(command, (yon_char_get_augumented(" XORG_MONITOR[", yon_char_get_augumented(((monitorconfig *)dct->data)->port, "]")))); - } - int size = 0; - char **rtn = yon_ubl_load_global_config(command, &size); - char *param = NULL; - // yon_config_init(rtn, size); + // videoconfig.status_render.text_to_render=LOCAL_LOAD_SUCCESS; + // videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; + // yon_ubl_status_box_render(&videoconfig.status_render); + // char *command = load_drivers_local_command; + // dictionary *dct; + // for(int i=0;imainMonitorVisualConfigurationBox); } void on_configuration_load_global(GtkWidget *self, widgets_dict *widgets) { - videoconfig.status_render.text_to_render=GLOBAL_LOAD_SUCCESS; - videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE; - yon_ubl_status_box_render(&videoconfig.status_render); - char *command = load_drivers_global_command; - dictionary *dct; - for_dictionaries(dct, videoconfig.monitors) - { - command = yon_char_get_augumented(command, (yon_char_get_augumented(" XORG_MONITOR[", yon_char_get_augumented(((monitorconfig *)dct->data)->port, "]")))); - } - int size = 0; - char **rtn = yon_ubl_load_global_config(command, &size); - char *param = NULL; - // yon_config_init(rtn, size); + + yon_setup_config(load_drivers_global_command); on_config_fill_interface(widgets); + yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox); } /**void on_monitor_delete(GtkWidget *self,monitor_view windowd) @@ -722,7 +715,7 @@ void yon_monitor_view_update(){ 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); + char *res=yon_char_divide_search(yon_char_new(yon_char_parsed_get_resolution(rtn,size))," ",-1); if (res&&strcmp(res,"")!=0) gtk_label_set_text(GTK_LABEL(monitor->templateMonitorInfoResolutionLabel),res); else @@ -913,7 +906,7 @@ void on_config_fill_interface(widgets_dict *widgets) str = videoconfig.failsafenVidia; 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) + if (str) { gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeNvidiaCombo), 1); } @@ -924,7 +917,7 @@ void on_config_fill_interface(widgets_dict *widgets) str = videoconfig.failsafeATI; 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) + if (str) { gtk_combo_box_set_active(GTK_COMBO_BOX(widgets->mainDriverFailsafeAMDCombo), 1); } @@ -933,6 +926,8 @@ void on_config_fill_interface(widgets_dict *widgets) if (videoconfig.autoChooseDrivers==1){ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->mainDriverAutomaticallyChooseCheck),1); } + else + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widgets->mainDriverAutomaticallyChooseCheck),0); dictionary *dict = NULL; } @@ -950,9 +945,9 @@ dictionary *yon_proprieary_get(){ for (int i=0;idata,&size,":"); + config_str str = yon_char_parse((char*)dict->data,&size,";"); gtk_list_store_append(list,&iter); gtk_list_store_set(list,&iter,1,str[0],2,str[1],3,str[2],4,str[3],-1); if (strstr(dict->key," installed")) @@ -989,13 +984,41 @@ char *yon_char_remove_brackets(char* source){ return NULL; } +void yon_monitor_view_dictionary_destroy(void *window){ + monitor_window *monitor=(monitor_window*)window; + gtk_widget_destroy(monitor->templateMonitorscreenOverlay); +} + /**void yon_setup_config(char *configcommand) * [EN] */ void yon_setup_config(char *configcommand) { + videoconfig.monitors=NULL; + if(videoconfig.monitor_visuals) + yon_dictionary_free_all(videoconfig.monitor_visuals,yon_monitor_view_dictionary_destroy); + videoconfig.monitor_visuals=NULL; + videoconfig.autoChooseDrivers=0; + videoconfig.configsize=0; + videoconfig.descreteOnly=0; + videoconfig.failsafeATI=NULL; + videoconfig.failsafenVidia=NULL; + videoconfig.gapfix=0; + videoconfig.loaded_config=NULL; + if(videoconfig.optirun) + free(videoconfig.optirun); + videoconfig.optirun=NULL; + if (videoconfig.primusrun) + free(videoconfig.primusrun); + videoconfig.primusrun=NULL; + if (videoconfig.ports) + for (int i=0;iInformationCompanyLogoImage); } } + /** void yon_setup_widgets(widgets_dict *widgets) * [EN] * Sets up every element on main window @@ -1345,6 +1369,10 @@ void yon_setup_widgets(widgets_dict *widgets) widgets->templateMonitorConfigurationDoNotSwitchOffLabel = yon_gtk_builder_get_widget(widgets->builder, "templateMonitorConfigurationDoNotSwitchOffLabel"); widgets->templateMonitorConfigurationDoNotSwitchOffCheck = yon_gtk_builder_get_widget(widgets->builder, "templateMonitorConfigurationDoNotSwitchOffCheck"); + widgets->PlugBox = yon_gtk_builder_get_widget(widgets->builder, "mainPlugBox"); + widgets->PlugSaveBox = yon_gtk_builder_get_widget(widgets->builder, "plugLoadButton"); + widgets->PlugLoadBox = yon_gtk_builder_get_widget(widgets->builder, "plugSaveButton"); + widgets->proprietaryTreeView = yon_gtk_builder_get_widget(widgets->builder, "proprietaryTreeView"); widgets->proprietaryInfoButton = yon_gtk_builder_get_widget(widgets->builder, "proprietaryInfoButton"); widgets->proprietaryDeleteButton = yon_gtk_builder_get_widget(widgets->builder, "proprietaryDeleteButton"); @@ -1466,13 +1494,94 @@ void yon_setup_widgets(widgets_dict *widgets) videoconfig.status_render.icon=widgets->mainStatusIcon; videoconfig.status_render.label=widgets->mainStatusLabel; videoconfig.status_render.box=widgets->mainStatusBox; + if (videoconfig.lock_load_global==1) + gtk_widget_set_sensitive(widgets->mainHeaderLoadGlobalMenuItem,0); + if (videoconfig.lock_save_global==1) + gtk_widget_set_sensitive(widgets->mainHeaderSaveGlobalMenuItem,0); + if (videoconfig.lock_save_local==1) + gtk_widget_set_sensitive(widgets->mainHeaderSaveLocalMenuItem,0); + if (videoconfig.lock_save_global==1||videoconfig.lock_save_local==1) + gtk_widget_set_sensitive(widgets->mainHeaderSaveGlobalLocalMenuItem,0); } int main(int argc, char *argv[]) { - - local = setlocale(LC_ALL, ""); - textdomain(LocaleName); + { + int show_help=0; + videoconfig.socket_id=-1; + videoconfig.save_socket_id=-1; + videoconfig.load_socket_id=-1; + videoconfig.lock_help=-1; + videoconfig.lock_load_global=-1; + videoconfig.lock_save_global=-1; + videoconfig.lock_save_local=-1; + local = setlocale(LC_ALL, ""); + for (int i=0;i #include #include +#include +#include #include "ubl-utils.h" #include "ubl-settings-video-strings.h" #ifndef UBL_SETINGS_VIDEO_H @@ -33,7 +35,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_info_command "cut -d: -f2- /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'" @@ -63,7 +65,7 @@ #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_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'" @@ -105,7 +107,6 @@ typedef struct proprietary_config proprietary; dictionary *supported_resolutions; GtkListStore *list; - GtkListStore *modulelist; char *failsafenVidia; char *failsafeATI; int descreteOnly; @@ -117,6 +118,14 @@ typedef struct config_str resolutions; int resolutionssize; render_data status_render; + + int socket_id; + int save_socket_id; + int load_socket_id; + int lock_save_local; + int lock_save_global; + int lock_load_global; + int lock_help; } config; typedef struct @@ -256,6 +265,11 @@ typedef struct GtkWidget *TerminalMoreButton; GtkWidget *TerminalScroll; GtkWidget *TerminalMoreRevieler; + + + GtkWidget *PlugBox; + GtkWidget *PlugSaveBox; + GtkWidget *PlugLoadBox; } widgets_dict; typedef struct @@ -342,4 +356,6 @@ 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); +void yon_setup_config(char *configcommand); +void yon_monitor_view_setup(GtkWidget *container); #endif \ No newline at end of file