aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--VERSION2
-rw-r--r--monitor.c1
-rw-r--r--qemu-gtk.c37
-rw-r--r--qemu-gtk.h1
-rwxr-xr-xqemu-run19
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[] =
" <menuitem action='TerminalFont'/>"
" <menuitem action='TerminalForeground'/>"
" <menuitem action='TerminalBackground'/>"
+" <menuitem action='TerminalBlink'/>"
" </menu>"
" <menu action='InputMenu'>"
" <menuitem action='GrabMouse'/>"
@@ -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);