diff --git a/source/ubl-settings-video-driver.c b/source/ubl-settings-video-driver.c index 392a93b..54d2a4a 100644 --- a/source/ubl-settings-video-driver.c +++ b/source/ubl-settings-video-driver.c @@ -71,7 +71,16 @@ void on_pacman_db_unlock(void){ } void on_terminal_done(GtkWidget *, int , main_window *widgets){ - vte_terminal_feed_child(VTE_TERMINAL(widgets->InstallTerminal),"^C",2); + // GPid pid = (GPid)g_object_get_data(G_OBJECT(widgets->InstallTerminal),"pid"); + // if (!pid) return; + const char cancel_signal = 3; + char *command = yon_char_new(" "); + command[0]=cancel_signal; + char *tmp = yon_char_unite(command,"tput reset; tput cup 0 0; tput ed; exit 0\n",NULL); + free(command); + vte_terminal_feed_child(VTE_TERMINAL(widgets->InstallTerminal),tmp,strlen(tmp)); + free(tmp); + // vte_terminal_feed(VTE_TERMINAL(widgets->InstallTerminal),"tput reset; tput cup 0 0; tput ed; exit 0",1); } void on_terminal_more(GtkWidget *, main_window *widgets){ diff --git a/source/ubl-settings-video-install.c b/source/ubl-settings-video-install.c index 27198e6..4913169 100644 --- a/source/ubl-settings-video-install.c +++ b/source/ubl-settings-video-install.c @@ -102,4 +102,12 @@ void on_install_check(GtkWidget *self,gint ,driver_struct *driver){ yon_driver_struct_update(widgets,driver); g_signal_handlers_disconnect_by_func(G_OBJECT(self),G_CALLBACK(on_install_check),driver); +} + + +void on_driver_child_ready(VteTerminal *terminal, GPid pid, GError *, gpointer ){ + + if (!terminal) return; + if (pid == -1) printf("Error\n\n\n"); + // else g_object_set_data(G_OBJECT(terminal),"pid",(void*)pid); } \ No newline at end of file diff --git a/source/ubl-settings-video.c b/source/ubl-settings-video.c index 38a8fd4..322eb0e 100644 --- a/source/ubl-settings-video.c +++ b/source/ubl-settings-video.c @@ -830,6 +830,7 @@ template_main_window *yon_main_window_complete(main_window *widgets){ g_signal_connect(G_OBJECT(widgets->MoreButton),"clicked",G_CALLBACK(on_terminal_revealer_open),widgets); g_signal_connect(G_OBJECT(widgets->TerminalCancelButton),"clicked",G_CALLBACK(on_command_cancel),widgets); g_signal_connect(G_OBJECT(widgets->UnlockPacmanButton),"clicked",G_CALLBACK(on_pacman_db_unlock),NULL); + // g_signal_connect(G_OBJECT(widgets->InstallTerminal),"child-ready",G_CALLBACK(on_driver_child_ready),NULL); char *path = yon_char_unite(yon_ubl_user_get_home_directory(),"/.config/",LocaleName,"/",LocaleName,".conf",NULL); yon_window_config_load(path); gtk_overlay_add_overlay(GTK_OVERLAY(widgets->MainOverlay),widgets->MainSpinner); diff --git a/source/ubl-settings-video.h b/source/ubl-settings-video.h index 249531c..2bc3b4f 100644 --- a/source/ubl-settings-video.h +++ b/source/ubl-settings-video.h @@ -14,6 +14,7 @@ #include #include #include +#include #include "ubl-strings.h" #define VTE_INCLUDE #include @@ -473,5 +474,6 @@ void yon_all_resolutions_update(); void yon_monitor_port_manual(GtkToggleButton *self,monitor_edit_window *monitors); int yon_string_compare(char **a, char **b); char *yon_char_extend(char *target, char symbol, size_t length); +void on_driver_child_ready(VteTerminal *terminal, GPid pid, GError *, gpointer ); #endif \ No newline at end of file