Launch arguments, socket support, config loading fixes

pull/11/head
parent 8c3bd52d7e
commit 3383664721

@ -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;i<videoconfig.portssize;i++)
// {
// command = yon_char_unite(command," ",XORG_MONITOR(videoconfig.ports[i]),NULL);
// }
// int size = 0;
// char **rtn = yon_ubl_load_global_config(command, &size);
// char *param = NULL;
yon_setup_config(load_drivers_local_command);
on_config_fill_interface(widgets);
yon_monitor_view_setup(widgets->mainMonitorVisualConfigurationBox);
}
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;i<size;i++){
rtn[i] = yon_char_divide_search(rtn[i],"\n",-1);
char *key=yon_char_new(rtn[i]);
if (key[0]==':')
yon_char_divide_search(key,":",-1);
key = yon_char_divide_search(key,":",-1);
if (key[0]==';')
yon_char_divide_search(key,";",-1);
key = yon_char_divide_search(key,";",-1);
char *driver_name=yon_char_divide_search(yon_char_new(drivers[drivers_found])," ",-1);
if (strcmp(key,driver_name)==0)
if (i==0) videoconfig.proprietary=yon_dictionary_create_with_data(drivers[drivers_found],rtn[i]);
@ -971,7 +966,7 @@ void yon_gtk_list_store_fill_with_proprietaries(GtkListStore *list){
for_dictionaries(dict,videoconfig.proprietary){
GtkTreeIter iter;
int size=0;
config_str str = yon_char_parse((char*)dict->data,&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,14 +984,42 @@ 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;i<videoconfig.portssize;i++)
free(videoconfig.ports[i]);
videoconfig.ports=NULL;
videoconfig.portssize=0;
videoconfig.ports=yon_config_load(get_ports_command,&videoconfig.portssize);
int size = 0;
char *command = configcommand;
@ -1011,7 +1034,7 @@ void yon_setup_config(char *configcommand)
param=yon_config_get_parameter(videoconfig.loaded_config,videoconfig.configsize,"VGADRV_AUTO");
if (param){
yon_char_divide_search(param,"=",-1);
if (strcmp(param,"")!=0)
if (strcmp(param,"NO")!=0)
videoconfig.autoChooseDrivers=1;
}
@ -1272,6 +1295,7 @@ void yon_adapter_window_setup(widgets_dict *widgets){
gtk_widget_destroy(widgets->InformationCompanyLogoImage);
}
}
/** 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<argc;i++)
printf("%s\n",argv[i]);
textdomain(LocaleName);
int option_index=0;
struct option long_options[] = {
{"help", 0, 0, 'h'},
{"version", 0, 0, 'V'},
{"lock-help", 0,0, 1},
// {"lock-settings", 0,0, -16},
{"lock-save", 0,0, 2},
{"lock-save-local", 0,0, 3},
{"lock-save-global", 0,0, 4},
{"lock-load-global", 0,0, 5},
{"socket-id", 1, 0, 's'},
{"socket-ext-id", 1,0, 'e'},
{"socket-trd-id", 1,0, 't'},
{ NULL, 0, NULL, 0 }
};
for (int i=0;i<argc;i++){
int argument=getopt_long(argc,argv,"hVvs:e:t:",long_options,&option_index);
switch(argument){
case 'h':
show_help=1;
break;
case 'v':
case 'V':
printf("%s\n",VERSION_LABEL);
exit(0);
break;
case 's':
if(optarg)
videoconfig.socket_id=atoi(optarg);
break;
case 'e':
if(optarg)
videoconfig.load_socket_id=atoi(optarg);
break;
case 't':
if(optarg)
videoconfig.save_socket_id=atoi(optarg);
break;
case 1:
videoconfig.lock_help=1;
break;
// case -16:
// break;
case 2:
videoconfig.lock_save_local=1;
videoconfig.lock_save_global=1;
break;
case 3:
videoconfig.lock_save_local=1;
break;
case 4:
videoconfig.lock_save_global=1;
break;
case 5:
videoconfig.lock_load_global=1;
break;
}
}
if (show_help==1&&videoconfig.lock_help==-1){
printf("%s\n",HELP_LABEL);
exit(0);
}
}
gtk_init(&argc, &argv);
GError error;
@ -1480,11 +1589,11 @@ 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);
// 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;
videoconfig.status_render.type=BACKGROUND_IMAGE_SUCCESS_TYPE;
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);
on_config_fill_interface(&widgets);
yon_monitor_set_resolutions();
@ -1495,6 +1604,7 @@ int main(int argc, char *argv[])
GTK_STYLE_PROVIDER(css),
-1);
yon_monitor_view_update();
yon_ubl_setup_sockets(widgets.PlugBox,widgets.PlugLoadBox,widgets.PlugSaveBox,videoconfig.socket_id,videoconfig.load_socket_id,videoconfig.save_socket_id);
gtk_main();
return 0;
}

@ -9,6 +9,8 @@
#include <libintl.h>
#include <sys/types.h>
#include <fcntl.h>
#include <getopt.h>
#include <libintl.h>
#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
Loading…
Cancel
Save