|
|
@ -807,6 +807,13 @@ static render_data render;
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef VTE_TERMINAL
|
|
|
|
#ifdef VTE_TERMINAL
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 yon_terminal_integrated_launch(GtkWidget *place_to_show, void *endwork_function, void* endwork_function_argument)
|
|
|
|
* void yon_terminal_integrated_launch(GtkWidget *place_to_show, void *endwork_function, void* endwork_function_argument)
|
|
|
|
* [EN]
|
|
|
|
* [EN]
|
|
|
@ -818,7 +825,7 @@ static render_data render;
|
|
|
|
* терминал добавляется в контейнер [place_to_show] виджета,
|
|
|
|
* терминал добавляется в контейнер [place_to_show] виджета,
|
|
|
|
* после завершения работы терминала вызывается функция [endwork_function] с аргументом [endwork_function_argument].
|
|
|
|
* после завершения работы терминала вызывается функция [endwork_function] с аргументом [endwork_function_argument].
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, void *endwork_function, void* endwork_function_argument){
|
|
|
|
void yon_terminal_integrated_launch(GtkWidget *terminal, char* command, void *endwork_function, void* endwork_function_argument){
|
|
|
|
char **commands=new_arr(char*,2);
|
|
|
|
char **commands=new_arr(char*,2);
|
|
|
|
gchar **envp = g_get_environ();
|
|
|
|
gchar **envp = g_get_environ();
|
|
|
|
commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
|
|
|
|
commands[0]=(gchar *)g_strdup(g_environ_getenv(envp, "SHELL"));
|
|
|
@ -826,11 +833,9 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi
|
|
|
|
char **env=new_arr(char*,2);
|
|
|
|
char **env=new_arr(char*,2);
|
|
|
|
env[0]="";
|
|
|
|
env[0]="";
|
|
|
|
env[1]=NULL;
|
|
|
|
env[1]=NULL;
|
|
|
|
GtkWidget *terminal = vte_terminal_new();
|
|
|
|
|
|
|
|
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
|
|
|
|
vte_terminal_set_size(VTE_TERMINAL(terminal),10,15);
|
|
|
|
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
VtePty *pty = vte_pty_new_sync(VTE_PTY_DEFAULT,NULL,NULL);
|
|
|
|
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
|
|
|
|
vte_terminal_set_pty(VTE_TERMINAL(terminal),pty);
|
|
|
|
gtk_container_add(GTK_CONTAINER(place_to_show),terminal);
|
|
|
|
|
|
|
|
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL);
|
|
|
|
char *install_command=yon_char_unite("tput cup 0 0 && tput ed; ",command," ; sleep 5;exit 0","\n",NULL);
|
|
|
|
if(endwork_function)
|
|
|
|
if(endwork_function)
|
|
|
|
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument);
|
|
|
|
g_signal_connect(G_OBJECT(terminal), "child-exited", G_CALLBACK(endwork_function), endwork_function_argument);
|
|
|
@ -844,7 +849,7 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
-1,
|
|
|
|
-1,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
child_ready,
|
|
|
|
install_command);
|
|
|
|
install_command);
|
|
|
|
vte_pty_spawn_async(pty,
|
|
|
|
vte_pty_spawn_async(pty,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
@ -856,7 +861,7 @@ void yon_terminal_integrated_launch(GtkWidget *place_to_show, char* command, voi
|
|
|
|
-1,
|
|
|
|
-1,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
NULL,
|
|
|
|
install_command);
|
|
|
|
NULL);
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 100);
|
|
|
|
vte_terminal_set_scrollback_lines(VTE_TERMINAL(terminal), 100);
|
|
|
|
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE);
|
|
|
|
vte_terminal_set_scroll_on_output(VTE_TERMINAL(terminal), TRUE);
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
|
|
|
|
vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(terminal), TRUE);
|
|
|
|