This is the prototype Bochs GUI that I’m working on. Many Windows users judge the quality of a program by the “Windows-ness” of its interface. Bochs is a powerful tool, but as the current Bochs interface looks archaic (despite it’s full-featuredness), it may potentially turn off a number of users. My goal is to create a UI that feels rich and native to a Win32 user, without needing major modifications to Bochs.


(UPDATE) Newer screenshots:

Here is a summary of my project goals:

  • Hosting multiple (simultaneous) simulators
  • Allow simulator window to auto-fit virtual machine’s current resolution or to operate in full-screen, matching resultion mode
  • Easier (wizard?) configuration of devices by “adding hardware”, rather than configuring all possible devices
  • Single-click launch of a virtual machine (.bochs file?) from Explorer
  • Explicit input capture mode with keyboard-shortcut capture escape (Ctrl+Alt)
  • Support for sending “Windows” key, Alt+Tab and Ctrl+Alt+Del (via Ctrl+Alt+Ins) to virtual machine

The changes required to support this are in win32.cpp only. I’ve added an environment variable to specify the parent window of the simulation window, as well as a number of custom messages that the simulation window sends its parent. If the environment variable is set, bochs assumes that it is being hosted within a different control and it hides the main win32 GUI window.

The patches are far too ugly to send right now (though they are small). I’m hoping that someone can help me integrate this cleanly into Bochs without disrupting the use of the standard Bochs Win32 interface.

I decided not to enhance the wxWindows port of Bochs because I thought I could make use of a number of .NET toolkits to create a rich UI. Since I’ve been using C# exclusively lately, this was a natural fit for me. It does limit the users of the system to those with the .NET framework installed, but as this was included in one of the recent batches of critical updates, it should be installed on a number of systems.

Read full post