1 /*
2  * DO NOT EDIT THIS FILE - it is generated by Glade.
3  */
4 
5 #ifdef HAVE_CONFIG_H
6 #  include <config.h>
7 #endif
8 
9 #include <sys/types.h>
10 #include <sys/stat.h>
11 #include <unistd.h>
12 #include <string.h>
13 #include <stdio.h>
14 #include <pwd.h>
15 
16 #include <gdk/gdkkeysyms.h>
17 #include <gtk/gtk.h>
18 #include <vte/vte.h>
19 
20 #include "prefs.h"
21 #include "callbacks.h"
22 #include "interface.h"
23 #include "support.h"
24 
25 #define GLADE_HOOKUP_OBJECT(component,widget,name) \
26   g_object_set_data_full (G_OBJECT (component), name, \
27     gtk_widget_ref (widget), (GDestroyNotify) gtk_widget_unref)
28 
29 #define GLADE_HOOKUP_OBJECT_NO_REF(component,widget,name) \
30   g_object_set_data (G_OBJECT (component), name, widget)
31 
32 GtkWidget*
create_window(gtkTermPref * pref)33 create_window (gtkTermPref* pref)
34 {
35   GtkWidget *window;
36   GdkPixbuf *window_icon_pixbuf;
37   GtkWidget *vbox;
38   GtkWidget *menubar;
39   GtkWidget *menuitem1;
40   GtkWidget *menuitem1_menu;
41   GtkWidget *new_tab;
42   GtkWidget *image12;
43   GtkWidget *separatormenuitem1;
44   GtkWidget *close_tab;
45   GtkWidget *image13;
46   GtkWidget *close_window;
47   GtkWidget *image14;
48   //GtkWidget *menuitem2;
49   //GtkWidget *menuitem2_menu;
50   //GtkWidget *copy;
51   //GtkWidget *paste;
52   GtkWidget *menuitem3;
53   GtkWidget *menuitem3_menu;
54   GtkWidget *full_screen;
55   GtkWidget *image15;
56   //GtkWidget *hide_menu;
57   GtkWidget *menuitem4;
58   GtkWidget *menuitem4_menu;
59   GtkWidget *info;
60   GtkWidget *image16;
61   GtkWidget *notebook;
62   //GtkWidget *empty_notebook_page;
63   //GtkWidget *label;
64   GtkAccelGroup *accel_group;
65 
66   accel_group = gtk_accel_group_new ();
67 
68   window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
69   gtk_widget_set_name (window, "window");
70   gtk_window_set_title (GTK_WINDOW (window), _("GTKTerm2"));
71   window_icon_pixbuf = create_pixbuf ("gtkterm2.png");
72   if (window_icon_pixbuf)
73     {
74       gtk_window_set_icon (GTK_WINDOW (window), window_icon_pixbuf);
75       gdk_pixbuf_unref (window_icon_pixbuf);
76     }
77 
78   vbox = gtk_vbox_new (FALSE, 0);
79   gtk_widget_set_name (vbox, "vbox");
80   gtk_widget_show (vbox);
81   gtk_container_add (GTK_CONTAINER (window), vbox);
82 
83   if(pref->winPosX>0 || pref->winPosY>0)
84   {
85 	  gtk_window_move(GTK_WINDOW (window), pref->winPosX, pref->winPosY);
86   }
87   if(pref->stealth==TRUE)
88   {
89 	  gtk_window_set_decorated(GTK_WINDOW (window), FALSE);
90 	  gtk_window_set_has_frame(GTK_WINDOW(window), FALSE);
91 	  gtk_window_set_skip_taskbar_hint(GTK_WINDOW(window), TRUE);
92   }
93 
94   menubar = gtk_menu_bar_new ();
95   gtk_widget_set_name (menubar, "menubar");
96   gtk_widget_show (menubar);
97   gtk_box_pack_start (GTK_BOX (vbox), menubar, FALSE, FALSE, 0);
98 
99   menuitem1 = gtk_menu_item_new_with_mnemonic (_("File"));
100   gtk_widget_set_name (menuitem1, "menuitem1");
101   gtk_widget_show (menuitem1);
102   gtk_container_add (GTK_CONTAINER (menubar), menuitem1);
103 
104   menuitem1_menu = gtk_menu_new ();
105   gtk_widget_set_name (menuitem1_menu, "menuitem1_menu");
106   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem1), menuitem1_menu);
107 
108   new_tab = gtk_image_menu_item_new_with_mnemonic (_("New Tab"));
109   gtk_widget_set_name (new_tab, "new_tab");
110   gtk_widget_show (new_tab);
111   gtk_container_add (GTK_CONTAINER (menuitem1_menu), new_tab);
112 
113   image12 = gtk_image_new_from_stock ("gtk-new", GTK_ICON_SIZE_MENU);
114   gtk_widget_set_name (image12, "image12");
115   gtk_widget_show (image12);
116   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (new_tab), image12);
117 
118   separatormenuitem1 = gtk_menu_item_new ();
119   gtk_widget_set_name (separatormenuitem1, "separatormenuitem1");
120   gtk_widget_show (separatormenuitem1);
121   gtk_container_add (GTK_CONTAINER (menuitem1_menu), separatormenuitem1);
122   gtk_widget_set_sensitive (separatormenuitem1, FALSE);
123 
124   close_tab = gtk_image_menu_item_new_with_mnemonic (_("Close Tab"));
125   gtk_widget_set_name (close_tab, "close_tab");
126   gtk_widget_show (close_tab);
127   gtk_container_add (GTK_CONTAINER (menuitem1_menu), close_tab);
128 
129   image13 = gtk_image_new_from_stock ("gtk-close", GTK_ICON_SIZE_MENU);
130   gtk_widget_set_name (image13, "image13");
131   gtk_widget_show (image13);
132   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (close_tab), image13);
133 
134   close_window = gtk_image_menu_item_new_with_mnemonic (_("Close Window"));
135   gtk_widget_set_name (close_window, "close_window");
136   gtk_widget_show (close_window);
137   gtk_container_add (GTK_CONTAINER (menuitem1_menu), close_window);
138 
139   image14 = gtk_image_new_from_stock ("gtk-quit", GTK_ICON_SIZE_MENU);
140   gtk_widget_set_name (image14, "image14");
141   gtk_widget_show (image14);
142   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (close_window), image14);
143 
144   menuitem3 = gtk_menu_item_new_with_mnemonic (_("View"));
145   gtk_widget_set_name (menuitem3, "menuitem3");
146   gtk_widget_show (menuitem3);
147   gtk_container_add (GTK_CONTAINER (menubar), menuitem3);
148 
149   menuitem3_menu = gtk_menu_new ();
150   gtk_widget_set_name (menuitem3_menu, "menuitem3_menu");
151   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem3), menuitem3_menu);
152 
153   full_screen = gtk_image_menu_item_new_with_mnemonic (_("Full Screen"));
154   gtk_widget_set_name (full_screen, "full_screen");
155   gtk_widget_show (full_screen);
156   gtk_container_add (GTK_CONTAINER (menuitem3_menu), full_screen);
157 
158   image15 = gtk_image_new_from_stock ("gtk-zoom-fit", GTK_ICON_SIZE_MENU);
159   gtk_widget_set_name (image15, "image15");
160   gtk_widget_show (image15);
161   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (full_screen), image15);
162 
163   /*hide_menu = gtk_menu_item_new_with_mnemonic (_("Hide menu"));
164   gtk_widget_set_name (hide_menu, "hide_menu");
165   gtk_widget_show (hide_menu);
166   gtk_container_add (GTK_CONTAINER (menuitem3_menu), hide_menu);*/
167 
168   menuitem4 = gtk_menu_item_new_with_mnemonic (_("Help"));
169   gtk_widget_set_name (menuitem4, "menuitem4");
170   gtk_widget_show (menuitem4);
171   gtk_container_add (GTK_CONTAINER (menubar), menuitem4);
172 
173   menuitem4_menu = gtk_menu_new ();
174   gtk_widget_set_name (menuitem4_menu, "menuitem4_menu");
175   gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem4), menuitem4_menu);
176 
177   info = gtk_image_menu_item_new_with_mnemonic (_("Info"));
178   gtk_widget_set_name (info, "info");
179   gtk_widget_show (info);
180   gtk_container_add (GTK_CONTAINER (menuitem4_menu), info);
181   gtk_widget_add_accelerator (info, "activate", accel_group,
182                               GDK_F1, 0,
183                               GTK_ACCEL_VISIBLE);
184 
185   image16 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_MENU);
186   gtk_widget_set_name (image16, "image16");
187   gtk_widget_show (image16);
188   gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (info), image16);
189 
190   g_signal_connect ((gpointer) menubar, "destroy",
191                     G_CALLBACK (gtk_main_quit),
192                     NULL);
193   g_signal_connect ((gpointer) new_tab, "activate",
194                     G_CALLBACK (on_new_tab_activate),
195                     pref);
196   g_signal_connect ((gpointer) close_tab, "activate",
197                     G_CALLBACK (on_close_tab_activate),
198                     pref);
199   g_signal_connect ((gpointer) close_window, "activate",
200                     G_CALLBACK (gtk_main_quit),
201                     NULL);
202   g_signal_connect ((gpointer) full_screen, "activate",
203                     G_CALLBACK (on_full_screen_activate),
204                     pref);
205   /*g_signal_connect ((gpointer) hide_menu, "activate",
206                     G_CALLBACK (on_hide_menu_activate),
207                     NULL);*/
208   g_signal_connect ((gpointer) info, "activate",
209                     G_CALLBACK (on_info_activate),
210                     NULL);
211   g_signal_connect ((gpointer) window, "key-press-event",
212                     G_CALLBACK (nb_handle_key),
213                     pref);
214 	/* Connect to the "status-line-changed" signal. */
215 	/*g_signal_connect(G_OBJECT(widget), "status-line-changed",
216 			 G_CALLBACK(status_line_changed), widget);*/
217 
218   /* Store pointers to all widgets, for use by lookup_widget(). */
219   GLADE_HOOKUP_OBJECT_NO_REF (window, window, "window");
220   GLADE_HOOKUP_OBJECT (window, vbox, "vbox");
221   GLADE_HOOKUP_OBJECT (window, menubar, "menubar");
222   GLADE_HOOKUP_OBJECT (window, menuitem1, "menuitem1");
223   GLADE_HOOKUP_OBJECT (window, menuitem1_menu, "menuitem1_menu");
224   GLADE_HOOKUP_OBJECT (window, new_tab, "new_tab");
225   GLADE_HOOKUP_OBJECT (window, image12, "image12");
226   GLADE_HOOKUP_OBJECT (window, separatormenuitem1, "separatormenuitem1");
227   GLADE_HOOKUP_OBJECT (window, close_tab, "close_tab");
228   GLADE_HOOKUP_OBJECT (window, image13, "image13");
229   GLADE_HOOKUP_OBJECT (window, close_window, "close_window");
230   GLADE_HOOKUP_OBJECT (window, image14, "image14");
231   GLADE_HOOKUP_OBJECT (window, menuitem3, "menuitem3");
232   GLADE_HOOKUP_OBJECT (window, menuitem3_menu, "menuitem3_menu");
233   GLADE_HOOKUP_OBJECT (window, full_screen, "full_screen");
234   GLADE_HOOKUP_OBJECT (window, image15, "image15");
235 //  GLADE_HOOKUP_OBJECT (window, hide_menu, "hide_menu");
236   GLADE_HOOKUP_OBJECT (window, menuitem4, "menuitem4");
237   GLADE_HOOKUP_OBJECT (window, menuitem4_menu, "menuitem4_menu");
238   GLADE_HOOKUP_OBJECT (window, info, "info");
239   GLADE_HOOKUP_OBJECT (window, image16, "image16");
240 
241   notebook = gtk_notebook_new ();
242 
243   GLADE_HOOKUP_OBJECT (window, notebook, "notebook");
244 
245 	gtk_notebook_set_tab_pos (GTK_NOTEBOOK (notebook), pref->notebookPanel);
246 	if (pref->showTabsByOneTerminal == 0)
247     {
248       gtk_notebook_set_show_tabs (GTK_NOTEBOOK (notebook), FALSE);
249     }
250 	gtk_notebook_set_show_border(GTK_NOTEBOOK (notebook), FALSE);
251   gtk_notebook_set_scrollable(GTK_NOTEBOOK(notebook), TRUE);
252   gtk_widget_show (notebook);
253   gtk_box_pack_start (GTK_BOX (vbox), notebook, TRUE, TRUE, 0);
254   pref->notebook = notebook;
255   GTK_WIDGET_UNSET_FLAGS (notebook, GTK_CAN_FOCUS);
256   on_new_tab_activate((gpointer) new_tab, pref);
257 
258   gtk_window_add_accel_group (GTK_WINDOW (window), accel_group);
259 
260 
261 	if(pref->stealth==TRUE)
262 	{
263 		gtk_widget_hide(menubar);
264 	}
265 
266   return window;
267 }
268 
269 GtkWidget*
create_window_about(void)270 create_window_about (void)
271 {
272   GtkWidget *window_about;
273   GdkPixbuf *window_about_icon_pixbuf;
274   GtkWidget *vbox1;
275   GtkWidget *notebook1;
276   GtkWidget *label5;
277   GtkWidget *label3;
278   GtkWidget *label6;
279   GtkWidget *label4;
280   GtkWidget *window_about_close_button;
281 
282   window_about = gtk_window_new (GTK_WINDOW_TOPLEVEL);
283   gtk_widget_set_name (window_about, "window_about");
284   gtk_widget_set_size_request (window_about, 350, 250);
285   gtk_window_set_title (GTK_WINDOW (window_about), _("About GTKTerm2"));
286   gtk_window_set_resizable (GTK_WINDOW (window_about), FALSE);
287   window_about_icon_pixbuf = create_pixbuf ("gtkterm2.png");
288   if (window_about_icon_pixbuf)
289     {
290       gtk_window_set_icon (GTK_WINDOW (window_about), window_about_icon_pixbuf);
291       gdk_pixbuf_unref (window_about_icon_pixbuf);
292     }
293 
294   vbox1 = gtk_vbox_new (FALSE, 15);
295   gtk_widget_set_name (vbox1, "vbox1");
296   gtk_widget_show (vbox1);
297   gtk_container_add (GTK_CONTAINER (window_about), vbox1);
298   gtk_container_set_border_width (GTK_CONTAINER (vbox1), 15);
299 
300   notebook1 = gtk_notebook_new ();
301   gtk_widget_set_name (notebook1, "notebook1");
302   gtk_widget_show (notebook1);
303   gtk_box_pack_start (GTK_BOX (vbox1), notebook1, TRUE, TRUE, 0);
304 
305   label5 = gtk_label_new (_("GTKTerm2 (v " VERSION ")\nCopyright (c) 2004 Oliver Feige"));
306   gtk_widget_set_name (label5, "label5");
307   gtk_widget_show (label5);
308   gtk_container_add (GTK_CONTAINER (notebook1), label5);
309   gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (notebook1), label5,
310                                       TRUE, TRUE, GTK_PACK_START);
311   gtk_widget_set_size_request (label5, 304, 48);
312   GTK_WIDGET_SET_FLAGS (label5, GTK_CAN_FOCUS);
313   gtk_label_set_selectable (GTK_LABEL (label5), TRUE);
314 
315   label3 = gtk_label_new (_("Information"));
316   gtk_widget_set_name (label3, "label3");
317   gtk_widget_show (label3);
318   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 0), label3);
319   gtk_label_set_justify (GTK_LABEL (label3), GTK_JUSTIFY_LEFT);
320 
321   //label6 = gtk_label_new (_("Programmiert:\nOliver Feige <ofeige@gmx.de>\n\nIdee:\nOliver Feige <ofeige@gmx.de>\nStefan Bambach <sbambach@gmx.de>"));
322   label6 = gtk_label_new (_("Programmer:\nOliver Feige <ofeige@gmx.de>\n\nIdea:\nOliver Feige <ofeige@gmx.de>\nStefan Bambach <sbambach@gmx.de>"));
323   gtk_widget_set_name (label6, "label6");
324   gtk_widget_show (label6);
325   gtk_container_add (GTK_CONTAINER (notebook1), label6);
326   gtk_notebook_set_tab_label_packing (GTK_NOTEBOOK (notebook1), label6,
327                                       TRUE, TRUE, GTK_PACK_START);
328   GTK_WIDGET_SET_FLAGS (label6, GTK_CAN_FOCUS);
329   gtk_label_set_selectable (GTK_LABEL (label6), TRUE);
330 
331   label4 = gtk_label_new (_("Program of"));
332   gtk_widget_set_name (label4, "label4");
333   gtk_widget_show (label4);
334   gtk_notebook_set_tab_label (GTK_NOTEBOOK (notebook1), gtk_notebook_get_nth_page (GTK_NOTEBOOK (notebook1), 1), label4);
335   gtk_label_set_justify (GTK_LABEL (label4), GTK_JUSTIFY_LEFT);
336 
337   window_about_close_button = gtk_button_new_from_stock ("gtk-close");
338   gtk_widget_set_name (window_about_close_button, "window_about_close_button");
339   gtk_widget_show (window_about_close_button);
340   gtk_box_pack_start (GTK_BOX (vbox1), window_about_close_button, FALSE, FALSE, 0);
341   GTK_WIDGET_SET_FLAGS (window_about_close_button, GTK_CAN_DEFAULT);
342 
343   g_signal_connect ((gpointer) window_about_close_button, "clicked",
344                     G_CALLBACK (on_window_about_close_button_activate),
345                     NULL);
346 
347   /* Store pointers to all widgets, for use by lookup_widget(). */
348   GLADE_HOOKUP_OBJECT_NO_REF (window_about, window_about, "window_about");
349   GLADE_HOOKUP_OBJECT (window_about, vbox1, "vbox1");
350   GLADE_HOOKUP_OBJECT (window_about, notebook1, "notebook1");
351   GLADE_HOOKUP_OBJECT (window_about, label5, "label5");
352   GLADE_HOOKUP_OBJECT (window_about, label3, "label3");
353   GLADE_HOOKUP_OBJECT (window_about, label6, "label6");
354   GLADE_HOOKUP_OBJECT (window_about, label4, "label4");
355   GLADE_HOOKUP_OBJECT (window_about, window_about_close_button, "window_about_close_button");
356 
357   return window_about;
358 }
359 
create_terminal(GtkWidget * notebook,GtkWidget * window,gtkTermPref * pref)360 GtkWidget* create_terminal (GtkWidget *notebook, GtkWidget *window, gtkTermPref *pref)
361 {
362 	GtkWidget *hbox, *scrollbar, *widget;
363 	const char *working_directory = NULL;
364 	char *args[] = {"--login", NULL};
365 	char *env_add[] = {"FOO=BAR", "BOO=BIZ", NULL};
366 	struct passwd *pw;
367 	GString *shell;
368 
369 	/* Get Window from Notebook */
370 	//window = lookup_widget(GTK_WIDGET(notebook), "window");
371 
372 	/* Create a box to hold everything. */
373 	hbox = gtk_hbox_new(0, 0);
374 	//gtk_container_add(GTK_CONTAINER(notebook), hbox);
375 	gtk_notebook_append_page(GTK_NOTEBOOK (notebook), hbox, NULL);
376 
377 	/* Create the terminal widget and add it to the scrolling shell. */
378 	widget = vte_terminal_new();
379 	//gtk_widget_set_double_buffered(widget, dbuffer);
380 	//gtk_box_pack_start(GTK_BOX(hbox), widget, TRUE, TRUE, 0);
381 
382 	gtk_container_set_focus_child(GTK_CONTAINER(notebook), widget);
383 
384 	/* Connect to the "char_size_changed" signal to set geometry hints
385 	 * whenever the font used by the terminal is changed. */
386 	// OF if (geometry) {
387 		char_size_changed(widget, 0, 0, window);
388 		g_signal_connect(G_OBJECT(widget), "char-size-changed",
389 				 G_CALLBACK(char_size_changed), window);
390 	// OF }
391 
392 	/* Connect to the "window_title_changed" signal to set the main
393 	 * window's title. */
394 	g_signal_connect(G_OBJECT(widget), "window-title-changed",
395 			 G_CALLBACK(window_title_changed), pref);
396 
397 	//g_signal_connect(G_OBJECT(widget), "commit",
398 	//		 G_CALLBACK(commit), pref);
399 
400 	/* Connect to the "eof" signal to quit when the session ends. */
401 	g_signal_connect(G_OBJECT(widget), "eof",
402 			 G_CALLBACK(destroy_and_quit_eof), pref);
403 	g_signal_connect(G_OBJECT(widget), "child-exited",
404 			 G_CALLBACK(destroy_and_quit_exited), pref);
405 
406 	/* Connect to the "status-line-changed" signal. */
407 	g_signal_connect(G_OBJECT(widget), "status-line-changed",
408 			 G_CALLBACK(status_line_changed), widget);
409 
410 	/* Connect to the "button-press" event. */
411 	g_signal_connect(G_OBJECT(widget), "button-press-event",
412 			 G_CALLBACK(button_pressed), widget);
413 
414 	/* Connect to application request signals. */
415 	g_signal_connect(G_OBJECT(widget), "iconify-window",
416 			 G_CALLBACK(iconify_window), window);
417 	g_signal_connect(G_OBJECT(widget), "deiconify-window",
418 			 G_CALLBACK(deiconify_window), window);
419 	g_signal_connect(G_OBJECT(widget), "raise-window",
420 			 G_CALLBACK(raise_window), window);
421 	g_signal_connect(G_OBJECT(widget), "lower-window",
422 			 G_CALLBACK(lower_window), window);
423 	g_signal_connect(G_OBJECT(widget), "maximize-window",
424 			 G_CALLBACK(maximize_window), window);
425 	g_signal_connect(G_OBJECT(widget), "restore-window",
426 			 G_CALLBACK(restore_window), window);
427 	g_signal_connect(G_OBJECT(widget), "refresh-window",
428 			 G_CALLBACK(refresh_window), window);
429 	g_signal_connect(G_OBJECT(widget), "resize-window",
430 			 G_CALLBACK(resize_window), window);
431 	g_signal_connect(G_OBJECT(widget), "move-window",
432 			 G_CALLBACK(move_window), window);
433 /*	g_signal_connect(G_OBJECT(widget), "contents-changed",
434 			 G_CALLBACK(on_commit), pref);*/
435 
436 	/* Connect to font tweakage. */
437 	g_signal_connect(G_OBJECT(widget), "increase-font-size",
438 			 G_CALLBACK(increase_font_size), window);
439 	g_signal_connect(G_OBJECT(widget), "decrease-font-size",
440 			 G_CALLBACK(decrease_font_size), window);
441 
442 	if (pref->terminalScrollbar == 0 || pref->maxScrollbackBuffer == 0 || pref->stealth == TRUE)
443 	{
444 		gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
445 	}
446 	else
447 	{
448 		/* Create the scrollbar for the widget. */
449 		scrollbar = gtk_vscrollbar_new((VTE_TERMINAL(widget))->adjustment);
450 		if (pref->terminalScrollbar == 1)
451 		{
452 			gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, TRUE, 0);
453 			gtk_box_pack_start (GTK_BOX (hbox), GTK_WIDGET(widget), TRUE, TRUE, 0);
454 		}
455 		else
456 		{
457 			gtk_box_pack_start (GTK_BOX (hbox), widget, TRUE, TRUE, 0);
458 			gtk_box_pack_start (GTK_BOX (hbox), scrollbar, FALSE, TRUE, 0);
459 		}
460 		gtk_widget_show (scrollbar);
461 	}
462 
463 
464 	/* Set some defaults. */
465 	vte_terminal_set_audible_bell(VTE_TERMINAL(widget), pref->beep);
466 	vte_terminal_set_cursor_blinks(VTE_TERMINAL(widget), pref->blink);
467 	vte_terminal_set_scroll_on_output(VTE_TERMINAL(widget), pref->scrollOnOutput);
468 	vte_terminal_set_scroll_on_keystroke(VTE_TERMINAL(widget), pref->scrollOnKeyStroke);
469 	vte_terminal_set_scrollback_lines(VTE_TERMINAL(widget), pref->maxScrollbackBuffer);
470 	vte_terminal_set_mouse_autohide(VTE_TERMINAL(widget), TRUE);
471 	vte_terminal_set_word_chars (VTE_TERMINAL(widget), pref->worldClass);
472 	vte_terminal_set_size (VTE_TERMINAL(widget), pref->termX, pref->termY);
473 	// OF if (background != NULL) {
474 	// OF 	vte_terminal_set_background_image_file(VTE_TERMINAL(widget),
475 	// OF 					       background);
476 	// OF }
477 	if (pref->transparent)
478 	{
479 		vte_terminal_set_background_transparent(VTE_TERMINAL(widget), TRUE);
480 		vte_terminal_set_background_saturation(VTE_TERMINAL(widget), (double) pref->opacity);
481 	}
482 	// OF vte_terminal_set_background_tint_color(VTE_TERMINAL(widget), &tint);
483 	vte_terminal_set_colors(VTE_TERMINAL(widget), &pref->fore[0], &pref->back[0], pref->colors, 16);
484 	// OF if (terminal != NULL) {
485 	// OF 	vte_terminal_set_emulation(VTE_TERMINAL(widget), terminal);
486 	// OF }
487 
488 	/* Mess with our fontconfig setup. */
489 	mess_with_fontconfig();
490 
491 	/* Set the default font. */
492 	// OF if (font != NULL) {
493 	vte_terminal_set_font_from_string(VTE_TERMINAL(widget), pref->terminalFont);
494 	// OF }
495 
496 	/* Match "abcdefg". */
497 	//vte_terminal_match_add(VTE_TERMINAL(widget), "abcdefg");
498 	// OF if (dingus) {
499 	// OF if (FALSE) {
500 		// OF i = vte_terminal_match_add(VTE_TERMINAL(widget), DINGUS1);
501 		// OF gumby = gdk_cursor_new(GDK_GUMBY);
502 		// OF vte_terminal_match_set_cursor(VTE_TERMINAL(widget), i, gumby);
503 		// OF gdk_cursor_unref(gumby);
504 		// OF hand = gdk_cursor_new(GDK_HAND1);
505 		// OF i = vte_terminal_match_add(VTE_TERMINAL(widget), DINGUS2);
506 		// OF vte_terminal_match_set_cursor(VTE_TERMINAL(widget), i, hand);
507 		// OF gdk_cursor_unref(hand);
508 	// OF }
509 
510 	// OF if (console) {
511 // OF 	if (FALSE) {
512 		/* Open a "console" connection. */
513 // OF 		int consolefd = -1, yes = 1, watch;
514 // OF 		GIOChannel *channel;
515 // OF 		consolefd = open("/dev/console", O_RDONLY | O_NOCTTY);
516 // OF 		if (consolefd != -1) {
517 			/* Assume failure. */
518 // OF 			console = FALSE;
519 #ifdef TIOCCONS
520 			if (ioctl(consolefd, TIOCCONS, &yes) != -1) {
521 				/* Set up a listener. */
522 				channel = g_io_channel_unix_new(consolefd);
523 				watch = g_io_add_watch(channel,
524 						       G_IO_IN,
525 						       read_and_feed,
526 						       widget);
527 				g_signal_connect(G_OBJECT(widget),
528 						 "eof",
529 						 G_CALLBACK(disconnect_watch),
530 						 GINT_TO_POINTER(watch));
531 				g_signal_connect(G_OBJECT(widget),
532 						 "child-exited",
533 						 G_CALLBACK(disconnect_watch),
534 						 GINT_TO_POINTER(watch));
535 				g_signal_connect(G_OBJECT(widget),
536 						 "realize",
537 						 G_CALLBACK(take_xconsole_ownership),
538 						 NULL);
539 #ifdef VTE_DEBUG
540 				vte_terminal_feed(VTE_TERMINAL(widget),
541 						  "Console log for ...\r\n",
542 						  -1);
543 #endif
544 				/* Record success. */
545 				console = TRUE;
546 			}
547 #endif
548 // OF 		} else {
549 			/* Bail back to normal mode. */
550 // OF 			g_warning(_("Could not open console.\n"));
551 // OF 			close(consolefd);
552 // OF 			console = FALSE;
553 // OF 		}
554 // OF 	}
555 
556 
557 
558 	// OF if (!console) {
559 	if (!FALSE)
560 	{
561 		if(pref->login_shell == TRUE)
562 		{
563 			pw = getpwuid (getuid ());
564 			if (pw)
565 			{
566 				shell = g_string_new (pw->pw_shell);
567 			}
568 			else
569 			{
570 				shell = g_string_new ("/bin/sh");
571 			}
572 			vte_terminal_fork_command(VTE_TERMINAL(widget), shell->str, args, env_add, working_directory, TRUE, TRUE, TRUE);
573 		}
574 		else
575 		{
576 			vte_terminal_fork_command(VTE_TERMINAL(widget), NULL, NULL, env_add, working_directory, TRUE, TRUE, TRUE);
577 		}
578 	}
579 
580 	/* Go for it! */
581 	gtk_widget_show_all(window);
582 
583 	return widget;
584 }
585