From 41733a5b54bcd73122d5ed3e35620ebc69ab1611 Mon Sep 17 00:00:00 2001 From: kraxel Date: Wed, 18 Mar 2009 15:46:50 +0000 Subject: cursor blink option --- VERSION | 2 +- monitor.c | 1 - qemu-gtk.c | 37 +++++++++++++++++++++++++++++++++++++ qemu-gtk.h | 1 + qemu-run | 19 +++++++++++++------ 5 files changed, 52 insertions(+), 8 deletions(-) diff --git a/VERSION b/VERSION index 68c123c..78bc1ab 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.10 +0.10.0 diff --git a/monitor.c b/monitor.c index cc640ac..fc5faa0 100644 --- a/monitor.c +++ b/monitor.c @@ -272,7 +272,6 @@ close: int monitor_connect(struct qemu_window *win, char *dest) { - char buf[256]; int fd; fd = conn_init(&win->monitor, "monitor", dest); diff --git a/qemu-gtk.c b/qemu-gtk.c index a092c3c..ae2a1ae 100644 --- a/qemu-gtk.c +++ b/qemu-gtk.c @@ -95,10 +95,26 @@ static void vtes_set_colors(struct qemu_window *win) } } +static void vtes_set_blink(struct qemu_window *win) +{ + struct qemu_conn *term; + VteTerminalCursorBlinkMode bl = + win->tty_blink ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF; + + if (win->monitor.vte) + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(win->monitor.vte), bl); + if (win->gdb_vte) + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(win->gdb_vte), bl); + for (term = win->terms; term != NULL; term = term->next) + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(term->vte), bl); +} + static void vte_configure(struct qemu_window *win, GtkWidget *vte) { GdkColor fg = {0,0,0,0}; GdkColor bg = {0,0,0,0}; + VteTerminalCursorBlinkMode bl = + win->tty_blink ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF; vte_terminal_set_scrollback_lines(VTE_TERMINAL(vte), 4096); vte_terminal_set_backspace_binding(VTE_TERMINAL(vte), @@ -109,6 +125,7 @@ static void vte_configure(struct qemu_window *win, GtkWidget *vte) vte_terminal_set_color_foreground(VTE_TERMINAL(vte), &fg); vte_terminal_set_color_background(VTE_TERMINAL(vte), &bg); vte_terminal_set_font_from_string(VTE_TERMINAL(vte), win->tty_font); + vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(vte), bl); } static void tabs_configure(struct qemu_window *win) @@ -193,6 +210,16 @@ static void menu_cb_scale_display(GtkToggleAction *action, gpointer userdata) config_dirty++; } +static void menu_cb_blink_cursor(GtkToggleAction *action, gpointer userdata) +{ + struct qemu_window *win = userdata; + + win->tty_blink = gtk_toggle_action_get_active(action); + vtes_set_blink(win); + g_key_file_set_boolean(config, "tty", "blink", win->tty_blink); + config_dirty++; +} + static void menu_cb_grab_mouse(GtkToggleAction *action, gpointer userdata) { struct qemu_window *win = userdata; @@ -742,6 +769,10 @@ static const GtkToggleActionEntry tentries[] = { .name = "GrabKbd", .label = "Enable _keyboard grab", .callback = G_CALLBACK(menu_cb_grab_kbd), + },{ + .name = "TerminalBlink", + .label = "Blinking cursor", + .callback = G_CALLBACK(menu_cb_blink_cursor), } }; @@ -758,6 +789,7 @@ static char ui_xml[] = " " " " " " +" " " " " " " " @@ -875,6 +907,8 @@ static struct qemu_window *qemu_create_window(void) win->tty_fg = g_key_file_get_string(config, "tty", "foreground", &err); err = NULL; win->tty_bg = g_key_file_get_string(config, "tty", "background", &err); + err = NULL; + win->tty_blink = g_key_file_get_boolean(config, "tty", "blink", &err); /* config defaults */ if (!win->tty_font) @@ -888,6 +922,9 @@ static struct qemu_window *qemu_create_window(void) item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/ViewMenu/ScaleDisplay"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->vnc_scale); + item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/ViewMenu/TerminalBlink"); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->tty_blink); + item = gtk_ui_manager_get_widget(win->ui, "/MainMenu/InputMenu/GrabMouse"); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), win->vnc_grab_mouse); diff --git a/qemu-gtk.h b/qemu-gtk.h index 7af4f80..4b24449 100644 --- a/qemu-gtk.h +++ b/qemu-gtk.h @@ -79,6 +79,7 @@ struct qemu_window { gboolean vnc_scale; gboolean vnc_grab_mouse; gboolean vnc_grab_kbd; + gboolean tty_blink; char *tty_font; char *tty_fg; char *tty_bg; diff --git a/qemu-run b/qemu-run index c3212f5..a90c4e7 100755 --- a/qemu-run +++ b/qemu-run @@ -3,6 +3,7 @@ use warnings; use strict; use XML::Parser; use Getopt::Std; +use POSIX; # args my %opts; @@ -169,11 +170,11 @@ close HELP; # build cmdline -- basic setup print "-- \n" if $debug; push @cmdline, $xml_elems{'emulator'}; -if (defined($xml_elems{'name'}) && $help =~ m/-name/) { +if (defined($xml_elems{'name'}) and $help =~ m/-name/) { push @cmdline, "-name"; push @cmdline, $xml_elems{'name'}; } -if (defined($xml_elems{'uuid'}) && $help =~ m/-uuid/) { +if (defined($xml_elems{'uuid'}) and $help =~ m/-uuid/) { push @cmdline, "-uuid"; push @cmdline, $xml_elems{'uuid'}; } @@ -197,6 +198,11 @@ if (defined($soundhw)) { push @cmdline, $soundhw; } +# build cmdline -- kvm +if (POSIX::access("/dev/kvm", &POSIX::W_OK) and $help =~ m/-enable-kvm/) { + push @cmdline, "-enable-kvm"; +} + # build cmdline -- disks foreach my $disk (@disks) { print "disk: " . join (", ", map { @@ -272,6 +278,7 @@ if (-S $monitor and !system("fuser", "-s", $monitor)) { # still running printf "VM %s still running, reconnecting\n", $name; } else { + unlink $monitor; $pid = fork(); die "fork: $!" unless defined($pid); if (0 == $pid) { @@ -281,6 +288,10 @@ if (-S $monitor and !system("fuser", "-s", $monitor)) { exec(@cmdline); exit(1); } + foreach my $i (0 ... 100) { + last if -S $monitor; + sleep(0.1); + } } # run qemu-gtk @@ -288,10 +299,6 @@ if (-S $monitor and !system("fuser", "-s", $monitor)) { push @cmdline, "qemu-gtk"; push @cmdline, "-m" if $showmon; push @cmdline, "unix:" . $monitor . ",server,nowait"; -foreach my $i (0 ... 100) { - last if -S $monitor; - sleep(0.1); -} print join(", ", map { "\"$_\"" } @cmdline) . "\n" if $debug; exec(@cmdline); -- cgit