|
|
|
|
@ -72,10 +72,101 @@ 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);
|
|
|
|
|
// vte_terminal_reset(VTE_TERMINAL(terminal),0,1);
|
|
|
|
|
// gtk_widget_destroy(terminal);
|
|
|
|
|
// gtk_revealer_set_reveal_child(GTK_REVEALER(widgets->TerminalBox),0);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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");
|
|
|
|
|
// gtk_size_group_add_widget(GTK_SIZE_GROUP(gtk_builder_get_object(builder,"sgroup")),yon_gtk_builder_get_widget(builder,"TerminalFrame"));
|
|
|
|
|
// gtk_size_group_add_widget(GTK_SIZE_GROUP(gtk_builder_get_object(builder,"sgroup")),widgets->TerminalOverlay);
|
|
|
|
|
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(usr_command," ;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){
|
|
|
|
|
@ -85,6 +176,19 @@ 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);
|
|
|
|
|
yon_terminal_start(widgets,yon_char_get_augumented(install_proprietary_command,"virtualbox"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_driver_install(GtkWidget *self,widgets_dict *widgets){
|
|
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
char *name;
|
|
|
|
|
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
|
|
|
|
|
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;
|
|
|
|
|
char **command=new_arr(char*,2);
|
|
|
|
|
gchar **envp = g_get_environ();
|
|
|
|
|
@ -95,11 +199,11 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
|
|
|
|
|
env[1]=NULL;
|
|
|
|
|
|
|
|
|
|
GtkWidget *terminal = vte_terminal_new();
|
|
|
|
|
// vte_terminal_set_size(VTE_TERMINAL(terminal),50,100);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(widgets->TerminalBox),terminal,1,1,0);
|
|
|
|
|
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
|
// VtePty *pty = vte_terminal_pty_new_sync(VTE_TERMINAL(terminal),VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
|
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
|
|
|
|
|
char *install_command=yon_char_unite(install_proprietary_command,name,"\n",NULL);
|
|
|
|
|
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
|
|
|
|
|
VTE_PTY_DEFAULT,
|
|
|
|
|
NULL, /* working directory */
|
|
|
|
|
@ -111,7 +215,7 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
|
|
|
|
|
-1, /* timeout */
|
|
|
|
|
NULL, /* cancellable */
|
|
|
|
|
child_ready, /* callback */
|
|
|
|
|
NULL); /* user_data */
|
|
|
|
|
install_command); /* user_data */
|
|
|
|
|
vte_pty_spawn_async(pty,
|
|
|
|
|
NULL, /* working directory */
|
|
|
|
|
command, /* command */
|
|
|
|
|
@ -123,25 +227,10 @@ void on_driver_pack_install(GtkWidget *self,widgets_dict *widgets){
|
|
|
|
|
NULL, /* cancellable */
|
|
|
|
|
NULL, /* callback */
|
|
|
|
|
NULL); /* user_data */
|
|
|
|
|
char *install_command=yon_char_unite(install_proprietary_command,name,"\n",NULL);
|
|
|
|
|
vte_terminal_feed_child(VTE_TERMINAL(terminal),install_command,strlen(install_command));
|
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 0);
|
|
|
|
|
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), FALSE);
|
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
|
|
|
|
|
gtk_widget_show_all(widgets->TerminalWindow);
|
|
|
|
|
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void on_driver_install(GtkWidget *self,widgets_dict *widgets){
|
|
|
|
|
|
|
|
|
|
GtkTreeIter iter;
|
|
|
|
|
char *name;
|
|
|
|
|
GtkTreeModel *list_s=GTK_TREE_MODEL(videoconfig.list);
|
|
|
|
|
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;
|
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), FALSE);
|
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal),100);
|
|
|
|
|
gtk_widget_show_all(widgets->TerminalRevealer);
|
|
|
|
|
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(install_proprietary_command,name));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -155,6 +244,48 @@ void on_driver_pack_delete(GtkWidget *self,widgets_dict *widgets){
|
|
|
|
|
gtk_tree_selection_get_selected(selection,&list_s,&iter);
|
|
|
|
|
gtk_tree_model_get(list_s,&iter,1,&name,-1);
|
|
|
|
|
pthread_t tid;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
GtkWidget *terminal = vte_terminal_new();
|
|
|
|
|
// vte_terminal_set_size(VTE_TERMINAL(terminal),50,100);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(widgets->TerminalBox),terminal,1,1,0);
|
|
|
|
|
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
|
// VtePty *pty = vte_terminal_pty_new_sync(VTE_TERMINAL(terminal),VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
|
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
|
|
|
|
|
char *install_command=yon_char_unite(delete_proprietary_command,name,"\n",NULL);
|
|
|
|
|
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
|
|
|
|
|
VTE_PTY_DEFAULT,
|
|
|
|
|
NULL, /* working directory */
|
|
|
|
|
command, /* command */
|
|
|
|
|
NULL, /* environment */
|
|
|
|
|
0, /* spawn flags */
|
|
|
|
|
NULL, NULL, /* child setup */
|
|
|
|
|
NULL, /* child pid */
|
|
|
|
|
-1, /* timeout */
|
|
|
|
|
NULL, /* cancellable */
|
|
|
|
|
child_ready, /* callback */
|
|
|
|
|
install_command); /* user_data */
|
|
|
|
|
vte_pty_spawn_async(pty,
|
|
|
|
|
NULL, /* working directory */
|
|
|
|
|
command, /* command */
|
|
|
|
|
NULL, /* environment */
|
|
|
|
|
0, /* spawn flags */
|
|
|
|
|
NULL, NULL, /* child setup */
|
|
|
|
|
NULL, /* child pid */
|
|
|
|
|
-1, /* timeout */
|
|
|
|
|
NULL, /* cancellable */
|
|
|
|
|
NULL, /* callback */
|
|
|
|
|
NULL); /* user_data */
|
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 0);
|
|
|
|
|
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), FALSE);
|
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
|
|
|
|
|
gtk_widget_show_all(widgets->TerminalRevealer);
|
|
|
|
|
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -168,6 +299,48 @@ void on_driver_delete(GtkWidget *self,widgets_dict *widgets){
|
|
|
|
|
gtk_tree_selection_get_selected(selection,&list_s,&iter);
|
|
|
|
|
gtk_tree_model_get(list_s,&iter,1,&name,-1);
|
|
|
|
|
pthread_t tid;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
GtkWidget *terminal = vte_terminal_new();
|
|
|
|
|
// vte_terminal_set_size(VTE_TERMINAL(terminal),50,100);
|
|
|
|
|
gtk_box_pack_start(GTK_BOX(widgets->TerminalBox),terminal,1,1,0);
|
|
|
|
|
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
|
// VtePty *pty = vte_terminal_pty_new_sync(VTE_TERMINAL(terminal),VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
|
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
|
|
|
|
|
char *install_command=yon_char_unite(delete_proprietary_command,name,"\n",NULL);
|
|
|
|
|
vte_terminal_spawn_async(VTE_TERMINAL(terminal),
|
|
|
|
|
VTE_PTY_DEFAULT,
|
|
|
|
|
NULL, /* working directory */
|
|
|
|
|
command, /* command */
|
|
|
|
|
NULL, /* environment */
|
|
|
|
|
0, /* spawn flags */
|
|
|
|
|
NULL, NULL, /* child setup */
|
|
|
|
|
NULL, /* child pid */
|
|
|
|
|
-1, /* timeout */
|
|
|
|
|
NULL, /* cancellable */
|
|
|
|
|
child_ready, /* callback */
|
|
|
|
|
install_command); /* user_data */
|
|
|
|
|
vte_pty_spawn_async(pty,
|
|
|
|
|
NULL, /* working directory */
|
|
|
|
|
command, /* command */
|
|
|
|
|
NULL, /* environment */
|
|
|
|
|
0, /* spawn flags */
|
|
|
|
|
NULL, NULL, /* child setup */
|
|
|
|
|
NULL, /* child pid */
|
|
|
|
|
-1, /* timeout */
|
|
|
|
|
NULL, /* cancellable */
|
|
|
|
|
NULL, /* callback */
|
|
|
|
|
NULL); /* user_data */
|
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 0);
|
|
|
|
|
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), FALSE);
|
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
|
|
|
|
|
gtk_widget_show_all(widgets->TerminalRevealer);
|
|
|
|
|
// pthread_create(&tid,NULL,(void*)yon_launch_with_output,(void*)yon_char_get_augumented(delete_proprietary_command,name));
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
@ -349,7 +522,7 @@ void on_configuration_save_local(GtkWidget *self, widgets_dict *widgets)
|
|
|
|
|
yon_config_save(delstr);
|
|
|
|
|
}
|
|
|
|
|
if (str){
|
|
|
|
|
printf(str);
|
|
|
|
|
// printf(str);
|
|
|
|
|
yon_config_save(str);
|
|
|
|
|
|
|
|
|
|
videoconfig.status_render.text_to_render=LOCAL_SAVE_SUCCESS;
|
|
|
|
|
@ -384,7 +557,7 @@ void on_configuration_save_global(GtkWidget *self, widgets_dict *widgets)
|
|
|
|
|
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);
|
|
|
|
|
// printf(str);
|
|
|
|
|
yon_config_save(str);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@ -1277,9 +1450,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->TerminalWindow = yon_gtk_builder_get_widget(widgets->builder, "TerminalWindow");
|
|
|
|
|
widgets->TerminalBox = yon_gtk_builder_get_widget(widgets->builder, "TerminalBox");
|
|
|
|
|
widgets->TerminalHeaderTitleLabel = yon_gtk_builder_get_widget(widgets->builder, "TerminalHeaderTitleLabel");
|
|
|
|
|
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"));
|
|
|
|
|
|