diff --git a/Makefile.objs b/Makefile.objs
index fe78836..a637a4a 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -68,8 +68,7 @@ endif
 common-obj-y = $(block-obj-y) blockdev.o blockdev-nbd.o block/
 common-obj-y += net/
 common-obj-y += qom/
-common-obj-y += readline.o console.o cursor.o
-common-obj-y += qemu-pixman.o
+common-obj-y += readline.o
 common-obj-y += $(oslib-obj-y)
 common-obj-$(CONFIG_WIN32) += os-win32.o
 common-obj-$(CONFIG_POSIX) += os-posix.o
@@ -78,7 +77,6 @@ common-obj-$(CONFIG_LINUX) += fsdev/
 extra-obj-$(CONFIG_LINUX) += fsdev/
 
 common-obj-y += tcg-runtime.o host-utils.o main-loop.o
-common-obj-y += input.o
 common-obj-y += buffered_file.o migration.o migration-tcp.o
 common-obj-y += qemu-char.o #aio.o
 common-obj-y += block-migration.o iohandler.o
diff --git a/hmp.c b/hmp.c
index 9b31e9f..f235134 100644
--- a/hmp.c
+++ b/hmp.c
@@ -21,7 +21,7 @@
 #include "qmp-commands.h"
 #include "qemu_socket.h"
 #include "monitor.h"
-#include "console.h"
+#include "ui/console.h"
 
 static void hmp_handle_error(Monitor *mon, Error **errp)
 {
diff --git a/hw/adb.c b/hw/adb.c
index 3b547f0..cc8ad8e 100644
--- a/hw/adb.c
+++ b/hw/adb.c
@@ -23,7 +23,7 @@
  */
 #include "hw.h"
 #include "adb.h"
-#include "console.h"
+#include "ui/console.h"
 
 /* debug ADB */
 //#define DEBUG_ADB
diff --git a/hw/ads7846.c b/hw/ads7846.c
index 2ea9e55..fa137e6 100644
--- a/hw/ads7846.c
+++ b/hw/ads7846.c
@@ -11,7 +11,7 @@
  */
 
 #include "ssi.h"
-#include "console.h"
+#include "ui/console.h"
 
 typedef struct {
     SSISlave ssidev;
diff --git a/hw/applesmc.c b/hw/applesmc.c
index 8bedaad..91e7cb3 100644
--- a/hw/applesmc.c
+++ b/hw/applesmc.c
@@ -32,7 +32,7 @@
 
 #include "hw.h"
 #include "isa.h"
-#include "console.h"
+#include "ui/console.h"
 #include "qemu-timer.h"
 
 /* #define DEBUG_SMC */
diff --git a/hw/blizzard.c b/hw/blizzard.c
index 1b57eb5..24bde32 100644
--- a/hw/blizzard.c
+++ b/hw/blizzard.c
@@ -19,10 +19,10 @@
  */
 
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 #include "devices.h"
 #include "vga_int.h"
-#include "pixel_ops.h"
+#include "ui/pixel_ops.h"
 
 typedef void (*blizzard_fn_t)(uint8_t *, const uint8_t *, unsigned int);
 
diff --git a/hw/bt-hid.c b/hw/bt-hid.c
index 8d7a3da..0ec0c01 100644
--- a/hw/bt-hid.c
+++ b/hw/bt-hid.c
@@ -20,7 +20,7 @@
 
 #include "qemu-common.h"
 #include "qemu-timer.h"
-#include "console.h"
+#include "ui/console.h"
 #include "hid.h"
 #include "bt.h"
 
diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c
index 7d021f2..80510bc 100644
--- a/hw/cirrus_vga.c
+++ b/hw/cirrus_vga.c
@@ -28,7 +28,7 @@
  */
 #include "hw.h"
 #include "pci/pci.h"
-#include "console.h"
+#include "ui/console.h"
 #include "vga_int.h"
 #include "loader.h"
 
diff --git a/hw/escc.c b/hw/escc.c
index a356613..38e8164 100644
--- a/hw/escc.c
+++ b/hw/escc.c
@@ -26,7 +26,7 @@
 #include "sysbus.h"
 #include "escc.h"
 #include "qemu-char.h"
-#include "console.h"
+#include "ui/console.h"
 #include "trace.h"
 
 /*
diff --git a/hw/exynos4210_fimd.c b/hw/exynos4210_fimd.c
index f2443ca..3ef0847 100644
--- a/hw/exynos4210_fimd.c
+++ b/hw/exynos4210_fimd.c
@@ -25,8 +25,8 @@
 #include "qemu-common.h"
 #include "cpu-all.h"
 #include "sysbus.h"
-#include "console.h"
-#include "pixel_ops.h"
+#include "ui/console.h"
+#include "ui/pixel_ops.h"
 #include "bswap.h"
 
 /* Debug messages configuration */
diff --git a/hw/framebuffer.c b/hw/framebuffer.c
index fa0f786..2a87096 100644
--- a/hw/framebuffer.c
+++ b/hw/framebuffer.c
@@ -18,7 +18,7 @@
  */
 
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "framebuffer.h"
 
 /* Render an image from a shared memory framebuffer.  */
diff --git a/hw/g364fb.c b/hw/g364fb.c
index 8192baf..b46a044 100644
--- a/hw/g364fb.c
+++ b/hw/g364fb.c
@@ -18,8 +18,8 @@
  */
 
 #include "hw.h"
-#include "console.h"
-#include "pixel_ops.h"
+#include "ui/console.h"
+#include "ui/pixel_ops.h"
 #include "trace.h"
 #include "sysbus.h"
 
diff --git a/hw/hid.c b/hw/hid.c
index 03761ab..7935998 100644
--- a/hw/hid.c
+++ b/hw/hid.c
@@ -23,7 +23,7 @@
  * THE SOFTWARE.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "qemu-timer.h"
 #include "hid.h"
 
diff --git a/hw/hpet.c b/hw/hpet.c
index 50ac067..49e1b63 100644
--- a/hw/hpet.c
+++ b/hw/hpet.c
@@ -26,7 +26,7 @@
 
 #include "hw.h"
 #include "pc.h"
-#include "console.h"
+#include "ui/console.h"
 #include "qemu-timer.h"
 #include "hpet_emul.h"
 #include "sysbus.h"
diff --git a/hw/jazz_led.c b/hw/jazz_led.c
index 09c7742..f4a0406 100644
--- a/hw/jazz_led.c
+++ b/hw/jazz_led.c
@@ -23,8 +23,8 @@
  */
 
 #include "qemu-common.h"
-#include "console.h"
-#include "pixel_ops.h"
+#include "ui/console.h"
+#include "ui/pixel_ops.h"
 #include "trace.h"
 #include "sysbus.h"
 
diff --git a/hw/kvm/pci-assign.c b/hw/kvm/pci-assign.c
index 4229159..2629775 100644
--- a/hw/kvm/pci-assign.c
+++ b/hw/kvm/pci-assign.c
@@ -29,7 +29,7 @@
 #include "hw/hw.h"
 #include "hw/pc.h"
 #include "qemu-error.h"
-#include "console.h"
+#include "ui/console.h"
 #include "hw/loader.h"
 #include "monitor.h"
 #include "range.h"
diff --git a/hw/lm832x.c b/hw/lm832x.c
index 8e09f9b..b14a089 100644
--- a/hw/lm832x.c
+++ b/hw/lm832x.c
@@ -21,7 +21,7 @@
 #include "hw.h"
 #include "i2c.h"
 #include "qemu-timer.h"
-#include "console.h"
+#include "ui/console.h"
 
 typedef struct {
     I2CSlave i2c;
diff --git a/hw/milkymist-softusb.c b/hw/milkymist-softusb.c
index b162b88..0743668 100644
--- a/hw/milkymist-softusb.c
+++ b/hw/milkymist-softusb.c
@@ -24,7 +24,7 @@
 #include "hw.h"
 #include "sysbus.h"
 #include "trace.h"
-#include "console.h"
+#include "ui/console.h"
 #include "hid.h"
 #include "qemu-error.h"
 
diff --git a/hw/milkymist-vgafb.c b/hw/milkymist-vgafb.c
index 833881c..c347131 100644
--- a/hw/milkymist-vgafb.c
+++ b/hw/milkymist-vgafb.c
@@ -25,9 +25,9 @@
 #include "hw.h"
 #include "sysbus.h"
 #include "trace.h"
-#include "console.h"
+#include "ui/console.h"
 #include "framebuffer.h"
-#include "pixel_ops.h"
+#include "ui/pixel_ops.h"
 #include "qemu-error.h"
 
 #define BITS 8
diff --git a/hw/msmouse.c b/hw/msmouse.c
index 9c492a4..decb1a3 100644
--- a/hw/msmouse.c
+++ b/hw/msmouse.c
@@ -22,9 +22,9 @@
  * THE SOFTWARE.
  */
 #include <stdlib.h>
-#include "../qemu-common.h"
-#include "../qemu-char.h"
-#include "../console.h"
+#include "qemu-common.h"
+#include "qemu-char.h"
+#include "ui/console.h"
 #include "msmouse.h"
 
 #define MSMOUSE_LO6(n) ((n) & 0x3f)
diff --git a/hw/musicpal.c b/hw/musicpal.c
index 4e8399a..d16cd14 100644
--- a/hw/musicpal.c
+++ b/hw/musicpal.c
@@ -20,10 +20,11 @@
 #include "ptimer.h"
 #include "block.h"
 #include "flash.h"
-#include "console.h"
+#include "ui/console.h"
 #include "i2c.h"
 #include "blockdev.h"
 #include "exec-memory.h"
+#include "ui/pixel_ops.h"
 
 #define MP_MISC_BASE            0x80002000
 #define MP_MISC_SIZE            0x00001000
@@ -492,8 +493,6 @@ SET_LCD_PIXEL(8, uint8_t)
 SET_LCD_PIXEL(16, uint16_t)
 SET_LCD_PIXEL(32, uint32_t)
 
-#include "pixel_ops.h"
-
 static void lcd_refresh(void *opaque)
 {
     musicpal_lcd_state *s = opaque;
diff --git a/hw/nseries.c b/hw/nseries.c
index 2de8d21..dcd3dc9 100644
--- a/hw/nseries.c
+++ b/hw/nseries.c
@@ -23,7 +23,7 @@
 #include "omap.h"
 #include "arm-misc.h"
 #include "irq.h"
-#include "console.h"
+#include "ui/console.h"
 #include "boards.h"
 #include "i2c.h"
 #include "devices.h"
diff --git a/hw/omap_dss.c b/hw/omap_dss.c
index 1e83726..ae51bdf 100644
--- a/hw/omap_dss.c
+++ b/hw/omap_dss.c
@@ -18,7 +18,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "omap.h"
 
 struct omap_dss_s {
diff --git a/hw/omap_lcdc.c b/hw/omap_lcdc.c
index d7ae303..936850a 100644
--- a/hw/omap_lcdc.c
+++ b/hw/omap_lcdc.c
@@ -17,9 +17,10 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "omap.h"
 #include "framebuffer.h"
+#include "ui/pixel_ops.h"
 
 struct omap_lcd_panel_s {
     MemoryRegion *sysmem;
@@ -66,8 +67,6 @@ static void omap_lcd_interrupts(struct omap_lcd_panel_s *s)
     qemu_irq_lower(s->irq);
 }
 
-#include "pixel_ops.h"
-
 #define draw_line_func drawfn
 
 #define DEPTH 8
diff --git a/hw/omap_sx1.c b/hw/omap_sx1.c
index 21a5bbb..918a6f6 100644
--- a/hw/omap_sx1.c
+++ b/hw/omap_sx1.c
@@ -26,7 +26,7 @@
  * with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "omap.h"
 #include "boards.h"
 #include "arm-misc.h"
diff --git a/hw/palm.c b/hw/palm.c
index 6f6f414..5aaeb07 100644
--- a/hw/palm.c
+++ b/hw/palm.c
@@ -19,7 +19,7 @@
 #include "hw.h"
 #include "audio/audio.h"
 #include "sysemu.h"
-#include "console.h"
+#include "ui/console.h"
 #include "omap.h"
 #include "boards.h"
 #include "arm-misc.h"
diff --git a/hw/pl110.c b/hw/pl110.c
index f869ba6..098e335 100644
--- a/hw/pl110.c
+++ b/hw/pl110.c
@@ -8,8 +8,9 @@
  */
 
 #include "sysbus.h"
-#include "console.h"
+#include "ui/console.h"
 #include "framebuffer.h"
+#include "ui/pixel_ops.h"
 
 #define PL110_CR_EN   0x001
 #define PL110_CR_BGR  0x100
@@ -109,8 +110,6 @@ static const unsigned char *idregs[] = {
     pl111_id
 };
 
-#include "pixel_ops.h"
-
 #define BITS 8
 #include "pl110_template.h"
 #define BITS 15
diff --git a/hw/ps2.c b/hw/ps2.c
index f93cd24..ba80089 100644
--- a/hw/ps2.c
+++ b/hw/ps2.c
@@ -23,7 +23,7 @@
  */
 #include "hw.h"
 #include "ps2.h"
-#include "console.h"
+#include "ui/console.h"
 #include "sysemu.h"
 
 /* debug PC keyboard */
diff --git a/hw/puv3.c b/hw/puv3.c
index 6f89c44..9f8e294 100644
--- a/hw/puv3.c
+++ b/hw/puv3.c
@@ -10,7 +10,7 @@
  */
 
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 #include "elf.h"
 #include "exec-memory.h"
 #include "sysbus.h"
diff --git a/hw/pxa2xx_keypad.c b/hw/pxa2xx_keypad.c
index 257984c..4ff04ad 100644
--- a/hw/pxa2xx_keypad.c
+++ b/hw/pxa2xx_keypad.c
@@ -13,7 +13,7 @@
 
 #include "hw.h"
 #include "pxa.h"
-#include "console.h"
+#include "ui/console.h"
 
 /*
  * Keypad
diff --git a/hw/pxa2xx_lcd.c b/hw/pxa2xx_lcd.c
index b53dfaf..b5efd4d 100644
--- a/hw/pxa2xx_lcd.c
+++ b/hw/pxa2xx_lcd.c
@@ -11,9 +11,9 @@
  */
 
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "pxa.h"
-#include "pixel_ops.h"
+#include "ui/pixel_ops.h"
 /* FIXME: For graphic_rotate. Should probably be done in common code.  */
 #include "sysemu.h"
 #include "framebuffer.h"
diff --git a/hw/qxl.h b/hw/qxl.h
index 41246c7..8433d1a 100644
--- a/hw/qxl.h
+++ b/hw/qxl.h
@@ -1,6 +1,6 @@
 #include "qemu-common.h"
 
-#include "console.h"
+#include "ui/console.h"
 #include "hw.h"
 #include "pci/pci.h"
 #include "vga_int.h"
diff --git a/hw/sm501.c b/hw/sm501.c
index 50324cd..714aca0 100644
--- a/hw/sm501.c
+++ b/hw/sm501.c
@@ -25,11 +25,12 @@
 #include <stdio.h>
 #include "hw.h"
 #include "serial.h"
-#include "console.h"
+#include "ui/console.h"
 #include "devices.h"
 #include "sysbus.h"
 #include "qdev-addr.h"
 #include "range.h"
+#include "ui/pixel_ops.h"
 
 /*
  * Status: 2010/05/07
@@ -1163,8 +1164,6 @@ static const MemoryRegionOps sm501_2d_engine_ops = {
 
 /* draw line functions for all console modes */
 
-#include "pixel_ops.h"
-
 typedef void draw_line_func(uint8_t *d, const uint8_t *s,
 			    int width, const uint32_t *pal);
 
diff --git a/hw/spitz.c b/hw/spitz.c
index 12e2815..d4575d2 100644
--- a/hw/spitz.c
+++ b/hw/spitz.c
@@ -21,7 +21,7 @@
 #include "qemu-timer.h"
 #include "devices.h"
 #include "sharpsl.h"
-#include "console.h"
+#include "ui/console.h"
 #include "block.h"
 #include "audio/audio.h"
 #include "boards.h"
diff --git a/hw/ssd0303.c b/hw/ssd0303.c
index d7fd828..cbdf49a 100644
--- a/hw/ssd0303.c
+++ b/hw/ssd0303.c
@@ -11,7 +11,7 @@
    implement one.  Most of the commends relating to brightness and geometry
    setup are ignored. */
 #include "i2c.h"
-#include "console.h"
+#include "ui/console.h"
 
 //#define DEBUG_SSD0303 1
 
diff --git a/hw/ssd0323.c b/hw/ssd0323.c
index 4098830..fe6f801 100644
--- a/hw/ssd0323.c
+++ b/hw/ssd0323.c
@@ -11,7 +11,7 @@
    implement one.  Most of the commends relating to brightness and geometry
    setup are ignored. */
 #include "ssi.h"
-#include "console.h"
+#include "ui/console.h"
 
 //#define DEBUG_SSD0323 1
 
diff --git a/hw/stellaris_input.c b/hw/stellaris_input.c
index 68c600c..7a95c3f 100644
--- a/hw/stellaris_input.c
+++ b/hw/stellaris_input.c
@@ -8,7 +8,7 @@
  */
 #include "hw.h"
 #include "devices.h"
-#include "console.h"
+#include "ui/console.h"
 
 typedef struct {
     qemu_irq irq;
diff --git a/hw/tc6393xb.c b/hw/tc6393xb.c
index f032027..edf7681 100644
--- a/hw/tc6393xb.c
+++ b/hw/tc6393xb.c
@@ -13,8 +13,8 @@
 #include "hw.h"
 #include "devices.h"
 #include "flash.h"
-#include "console.h"
-#include "pixel_ops.h"
+#include "ui/console.h"
+#include "ui/pixel_ops.h"
 #include "blockdev.h"
 
 #define IRQ_TC6393_NAND		0
diff --git a/hw/tcx.c b/hw/tcx.c
index a66fbee..185588b 100644
--- a/hw/tcx.c
+++ b/hw/tcx.c
@@ -23,8 +23,8 @@
  */
 
 #include "qemu-common.h"
-#include "console.h"
-#include "pixel_ops.h"
+#include "ui/console.h"
+#include "ui/pixel_ops.h"
 #include "sysbus.h"
 #include "qdev-addr.h"
 
diff --git a/hw/tsc2005.c b/hw/tsc2005.c
index 9a500eb..e232628 100644
--- a/hw/tsc2005.c
+++ b/hw/tsc2005.c
@@ -20,7 +20,7 @@
 
 #include "hw.h"
 #include "qemu-timer.h"
-#include "console.h"
+#include "ui/console.h"
 #include "devices.h"
 
 #define TSC_CUT_RESOLUTION(value, p)	((value) >> (16 - (p ? 12 : 10)))
diff --git a/hw/tsc210x.c b/hw/tsc210x.c
index 3c448a6..2b3535d 100644
--- a/hw/tsc210x.c
+++ b/hw/tsc210x.c
@@ -22,7 +22,7 @@
 #include "hw.h"
 #include "audio/audio.h"
 #include "qemu-timer.h"
-#include "console.h"
+#include "ui/console.h"
 #include "omap.h"	/* For I2SCodec and uWireSlave */
 #include "devices.h"
 
diff --git a/hw/twl92230.c b/hw/twl92230.c
index 0d70d84..ce699bd 100644
--- a/hw/twl92230.c
+++ b/hw/twl92230.c
@@ -23,7 +23,7 @@
 #include "qemu-timer.h"
 #include "i2c.h"
 #include "sysemu.h"
-#include "console.h"
+#include "ui/console.h"
 
 #define VERBOSE 1
 
diff --git a/hw/usb/dev-hid.c b/hw/usb/dev-hid.c
index 8749128..6953f2e 100644
--- a/hw/usb/dev-hid.c
+++ b/hw/usb/dev-hid.c
@@ -23,7 +23,7 @@
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
 #include "qemu-timer.h"
diff --git a/hw/usb/dev-storage.c b/hw/usb/dev-storage.c
index 50af971..de56fea 100644
--- a/hw/usb/dev-storage.c
+++ b/hw/usb/dev-storage.c
@@ -13,7 +13,7 @@
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
 #include "hw/scsi.h"
-#include "console.h"
+#include "ui/console.h"
 #include "monitor.h"
 #include "sysemu.h"
 #include "blockdev.h"
diff --git a/hw/usb/dev-wacom.c b/hw/usb/dev-wacom.c
index f7342b0..9ab368a 100644
--- a/hw/usb/dev-wacom.c
+++ b/hw/usb/dev-wacom.c
@@ -26,7 +26,7 @@
  * THE SOFTWARE.
  */
 #include "hw/hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "hw/usb.h"
 #include "hw/usb/desc.h"
 
diff --git a/hw/usb/host-stub.c b/hw/usb/host-stub.c
index b4e10c1..e8da322 100644
--- a/hw/usb/host-stub.c
+++ b/hw/usb/host-stub.c
@@ -31,7 +31,7 @@
  */
 
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 #include "hw/usb.h"
 #include "monitor.h"
 
diff --git a/hw/vga-isa-mm.c b/hw/vga-isa-mm.c
index 8ef4320..008703f 100644
--- a/hw/vga-isa-mm.c
+++ b/hw/vga-isa-mm.c
@@ -22,10 +22,10 @@
  * THE SOFTWARE.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "pc.h"
 #include "vga_int.h"
-#include "pixel_ops.h"
+#include "ui/pixel_ops.h"
 #include "qemu-timer.h"
 
 #define VGA_RAM_SIZE (8192 * 1024)
diff --git a/hw/vga-isa.c b/hw/vga-isa.c
index 046602b..d1d5b11 100644
--- a/hw/vga-isa.c
+++ b/hw/vga-isa.c
@@ -24,10 +24,10 @@
  * THE SOFTWARE.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "pc.h"
 #include "vga_int.h"
-#include "pixel_ops.h"
+#include "ui/pixel_ops.h"
 #include "qemu-timer.h"
 #include "loader.h"
 
diff --git a/hw/vga-pci.c b/hw/vga-pci.c
index 0cb318e..fe3a3d4 100644
--- a/hw/vga-pci.c
+++ b/hw/vga-pci.c
@@ -24,10 +24,10 @@
  * THE SOFTWARE.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "pci/pci.h"
 #include "vga_int.h"
-#include "pixel_ops.h"
+#include "ui/pixel_ops.h"
 #include "qemu-timer.h"
 #include "loader.h"
 
diff --git a/hw/vga.c b/hw/vga.c
index ab40d73..4007116 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -23,11 +23,11 @@
  */
 #include "hw.h"
 #include "vga.h"
-#include "console.h"
+#include "ui/console.h"
 #include "pc.h"
 #include "pci/pci.h"
 #include "vga_int.h"
-#include "pixel_ops.h"
+#include "ui/pixel_ops.h"
 #include "qemu-timer.h"
 #include "xen.h"
 #include "trace.h"
diff --git a/hw/vmmouse.c b/hw/vmmouse.c
index 6338efa..d052f33 100644
--- a/hw/vmmouse.c
+++ b/hw/vmmouse.c
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "ps2.h"
 #include "pc.h"
 #include "qdev.h"
diff --git a/hw/vmware_vga.c b/hw/vmware_vga.c
index 333ec8c..b0e772f 100644
--- a/hw/vmware_vga.c
+++ b/hw/vmware_vga.c
@@ -23,7 +23,7 @@
  */
 #include "hw.h"
 #include "loader.h"
-#include "console.h"
+#include "ui/console.h"
 #include "pci/pci.h"
 
 #undef VERBOSE
diff --git a/hw/xenfb.c b/hw/xenfb.c
index 442a63a..b1122bd 100644
--- a/hw/xenfb.c
+++ b/hw/xenfb.c
@@ -36,7 +36,7 @@
 #include <time.h>
 
 #include "hw.h"
-#include "console.h"
+#include "ui/console.h"
 #include "qemu-char.h"
 #include "xen_backend.h"
 
diff --git a/hw/z2.c b/hw/z2.c
index f62b806..d461864 100644
--- a/hw/z2.c
+++ b/hw/z2.c
@@ -21,7 +21,7 @@
 #include "sysemu.h"
 #include "flash.h"
 #include "blockdev.h"
-#include "console.h"
+#include "ui/console.h"
 #include "audio/audio.h"
 #include "exec-memory.h"
 
diff --git a/console.h b/include/ui/console.h
similarity index 99%
rename from console.h
rename to include/ui/console.h
index 33354e4..777881d 100644
--- a/console.h
+++ b/include/ui/console.h
@@ -1,7 +1,7 @@
 #ifndef CONSOLE_H
 #define CONSOLE_H
 
-#include "qemu-pixman.h"
+#include "ui/qemu-pixman.h"
 #include "qdict.h"
 #include "notify.h"
 #include "monitor.h"
diff --git a/hw/pixel_ops.h b/include/ui/pixel_ops.h
similarity index 100%
rename from hw/pixel_ops.h
rename to include/ui/pixel_ops.h
diff --git a/qemu-pixman.h b/include/ui/qemu-pixman.h
similarity index 100%
rename from qemu-pixman.h
rename to include/ui/qemu-pixman.h
diff --git a/ui/qemu-spice.h b/include/ui/qemu-spice.h
similarity index 100%
rename from ui/qemu-spice.h
rename to include/ui/qemu-spice.h
diff --git a/ui/spice-display.h b/include/ui/spice-display.h
similarity index 99%
rename from ui/spice-display.h
rename to include/ui/spice-display.h
index 38b6ea9..928e0a1 100644
--- a/ui/spice-display.h
+++ b/include/ui/spice-display.h
@@ -20,7 +20,7 @@
 #include <spice/qxl_dev.h>
 
 #include "qemu-thread.h"
-#include "qemu-pixman.h"
+#include "ui/qemu-pixman.h"
 #include "sysemu.h"
 
 #define NUM_MEMSLOTS 8
diff --git a/monitor.c b/monitor.c
index 37b9d20..6546f8c 100644
--- a/monitor.c
+++ b/monitor.c
@@ -38,7 +38,7 @@
 #include "sysemu.h"
 #include "monitor.h"
 #include "readline.h"
-#include "console.h"
+#include "ui/console.h"
 #include "blockdev.h"
 #include "audio/audio.h"
 #include "disas/disas.h"
diff --git a/qemu-char.c b/qemu-char.c
index f066ad0..bc53d09 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -23,7 +23,7 @@
  */
 #include "qemu-common.h"
 #include "monitor.h"
-#include "console.h"
+#include "ui/console.h"
 #include "sysemu.h"
 #include "qemu-timer.h"
 #include "qemu-char.h"
diff --git a/qemu-timer.c b/qemu-timer.c
index 9b9585b..5a99403 100644
--- a/qemu-timer.c
+++ b/qemu-timer.c
@@ -24,7 +24,7 @@
 
 #include "sysemu.h"
 #include "monitor.h"
-#include "console.h"
+#include "ui/console.h"
 
 #include "hw/hw.h"
 
diff --git a/target-unicore32/helper.c b/target-unicore32/helper.c
index a9e226b..4b68561 100644
--- a/target-unicore32/helper.c
+++ b/target-unicore32/helper.c
@@ -13,7 +13,7 @@
 #include "gdbstub.h"
 #include "helper.h"
 #include "host-utils.h"
-#include "console.h"
+#include "ui/console.h"
 
 #undef DEBUG_UC32
 
diff --git a/ui/Makefile.objs b/ui/Makefile.objs
index fd339d2..dc8f0e4 100644
--- a/ui/Makefile.objs
+++ b/ui/Makefile.objs
@@ -6,7 +6,7 @@ vnc-obj-$(CONFIG_VNC_TLS) += vnc-tls.o vnc-auth-vencrypt.o
 vnc-obj-$(CONFIG_VNC_SASL) += vnc-auth-sasl.o
 vnc-obj-y += vnc-jobs.o
 
-common-obj-y += keymaps.o
+common-obj-y += keymaps.o console.o cursor.o input.o qemu-pixman.o
 common-obj-$(CONFIG_SPICE) += spice-core.o spice-input.o spice-display.o
 common-obj-$(CONFIG_SDL) += sdl.o sdl_zoom.o x_keymap.o
 common-obj-$(CONFIG_COCOA) += cocoa.o
diff --git a/ui/cocoa.m b/ui/cocoa.m
index 87d2e44..0afa6f8 100644
--- a/ui/cocoa.m
+++ b/ui/cocoa.m
@@ -26,7 +26,7 @@
 #include <crt_externs.h>
 
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 #include "sysemu.h"
 
 #ifndef MAC_OS_X_VERSION_10_4
diff --git a/console.c b/ui/console.c
similarity index 99%
rename from console.c
rename to ui/console.c
index 9ac7b28..60bfb72 100644
--- a/console.c
+++ b/ui/console.c
@@ -22,7 +22,7 @@
  * THE SOFTWARE.
  */
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 #include "qemu-timer.h"
 #include "qmp-commands.h"
 #include "qemu-char.h"
diff --git a/ui/curses.c b/ui/curses.c
index 5dc0b2c..5d15e9e 100644
--- a/ui/curses.c
+++ b/ui/curses.c
@@ -29,7 +29,7 @@
 #endif
 
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 #include "sysemu.h"
 
 #define FONT_HEIGHT 16
diff --git a/cursor.c b/ui/cursor.c
similarity index 99%
rename from cursor.c
rename to ui/cursor.c
index 76e262c..2b8dd3f 100644
--- a/cursor.c
+++ b/ui/cursor.c
@@ -1,5 +1,5 @@
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 
 #include "cursor_hidden.xpm"
 #include "cursor_left_ptr.xpm"
diff --git a/cursor_hidden.xpm b/ui/cursor_hidden.xpm
similarity index 100%
rename from cursor_hidden.xpm
rename to ui/cursor_hidden.xpm
diff --git a/cursor_left_ptr.xpm b/ui/cursor_left_ptr.xpm
similarity index 100%
rename from cursor_left_ptr.xpm
rename to ui/cursor_left_ptr.xpm
diff --git a/input.c b/ui/input.c
similarity index 99%
rename from input.c
rename to ui/input.c
index 123bb23..58d3b47 100644
--- a/input.c
+++ b/ui/input.c
@@ -24,7 +24,7 @@
 
 #include "sysemu.h"
 #include "monitor.h"
-#include "console.h"
+#include "ui/console.h"
 #include "error.h"
 #include "qmp-commands.h"
 #include "qapi-types.h"
diff --git a/qemu-pixman.c b/ui/qemu-pixman.c
similarity index 98%
rename from qemu-pixman.c
rename to ui/qemu-pixman.c
index e7263fb..609335a 100644
--- a/qemu-pixman.c
+++ b/ui/qemu-pixman.c
@@ -3,7 +3,7 @@
  * See the COPYING file in the top-level directory.
  */
 
-#include "qemu-pixman.h"
+#include "ui/qemu-pixman.h"
 
 int qemu_pixman_get_type(int rshift, int gshift, int bshift)
 {
diff --git a/qemu-x509.h b/ui/qemu-x509.h
similarity index 100%
rename from qemu-x509.h
rename to ui/qemu-x509.h
diff --git a/ui/sdl.c b/ui/sdl.c
index 37f01b2..bcbf89d 100644
--- a/ui/sdl.c
+++ b/ui/sdl.c
@@ -29,7 +29,7 @@
 #include <SDL_syswm.h>
 
 #include "qemu-common.h"
-#include "console.h"
+#include "ui/console.h"
 #include "sysemu.h"
 #include "x_keymap.h"
 #include "sdl_zoom.h"
diff --git a/ui/spice-core.c b/ui/spice-core.c
index 261c6f2..ec925ec 100644
--- a/ui/spice-core.c
+++ b/ui/spice-core.c
@@ -22,7 +22,7 @@
 #include "sysemu.h"
 
 #include "qemu-common.h"
-#include "qemu-spice.h"
+#include "ui/qemu-spice.h"
 #include "qemu-thread.h"
 #include "qemu-timer.h"
 #include "qemu-queue.h"
@@ -37,7 +37,7 @@
 #include "migration.h"
 #include "monitor.h"
 #include "hw/hw.h"
-#include "spice-display.h"
+#include "ui/spice-display.h"
 
 /* core bits */
 
diff --git a/ui/spice-display.c b/ui/spice-display.c
index 6aff336..681fe32 100644
--- a/ui/spice-display.c
+++ b/ui/spice-display.c
@@ -16,15 +16,15 @@
  */
 
 #include "qemu-common.h"
-#include "qemu-spice.h"
+#include "ui/qemu-spice.h"
 #include "qemu-timer.h"
 #include "qemu-queue.h"
 #include "monitor.h"
-#include "console.h"
+#include "ui/console.h"
 #include "sysemu.h"
 #include "trace.h"
 
-#include "spice-display.h"
+#include "ui/spice-display.h"
 
 static int debug = 0;
 
diff --git a/ui/spice-input.c b/ui/spice-input.c
index af4223d..3beb8de 100644
--- a/ui/spice-input.c
+++ b/ui/spice-input.c
@@ -24,8 +24,8 @@
 #include <spice/enums.h>
 
 #include "qemu-common.h"
-#include "qemu-spice.h"
-#include "console.h"
+#include "ui/qemu-spice.h"
+#include "ui/console.h"
 
 /* keyboard bits */
 
diff --git a/vgafont.h b/ui/vgafont.h
similarity index 100%
rename from vgafont.h
rename to ui/vgafont.h
diff --git a/ui/vnc.h b/ui/vnc.h
index 6141e88..7ec1833 100644
--- a/ui/vnc.h
+++ b/ui/vnc.h
@@ -30,7 +30,7 @@
 #include "qemu-common.h"
 #include "qemu-queue.h"
 #include "qemu-thread.h"
-#include "console.h"
+#include "ui/console.h"
 #include "monitor.h"
 #include "audio/audio.h"
 #include "bitmap.h"
diff --git a/vl.c b/vl.c
index a7eeafc..6713220 100644
--- a/vl.c
+++ b/vl.c
@@ -130,7 +130,7 @@ int main(int argc, char **argv)
 #include "net/net.h"
 #include "net/slirp.h"
 #include "monitor.h"
-#include "console.h"
+#include "ui/console.h"
 #include "sysemu.h"
 #include "gdbstub.h"
 #include "qemu-timer.h"
