I’m pleased to say the first development version of the new WxFixBoot has been released! Since my last post, I’ve done a lot to improve this program. I’ve also come up with a list of new features I will add before the stable release. Without further ado, here’s what I’ve been doing.
The splash screen
As with last time, not much has been done with this, but I have however changed the progress bar so each start-up task is weighted which gives you a better idea of how long start-up will take (not too long, hopefully!).
Umm… None really! In future there’ll be some extra information gathered on start-up, rather than while doing operations, but this will probably remain the same from this point forwards. Note that on some platforms, it isn’t centred on the screen, I’ll fix that too.
The Main Window
Nothing has changed here, but I have some plans to change it a lot very soon. In case you’re wondering, this isn’t being run on a Mac, I just Mac-themed Mint 17.3 because I like it. It at least sort of looks like a Mac XD
The “Reinstall/Fix Bootloader” and “Update Bootloader Config” check-boxes will be moved to the Bootloader Options window. Also, the filesystem checker check-boxes will be combined into one button that allows the user to pick which filesystems to check, and what options to use (if they want to). These changes will be made fairly late in the release schedule. I’m probably going to have to reorganise this window because of that, But I don’t know what it will look like yet.
The Settings Window
Yes, some of that text is still misaligned 😉 One thing that has changed is that the user isn’t shown lots of unnecessary information (OS architecture, which partition it’s one and so on) in the Default OS choice box any more, but really that’s it.
I plan to move everything under the “Basic Settings” heading to the bootloader options dialog, and the restore windows will be integrated there as well, because it seems silly to have them in separate windows at this point. Some of the stuff from the Main Window might be moved here, but I haven’t decided on that yet.
The Bootloader Options Window
Umm… yeah. I’m the first person to admit that this is a mess at the moment, and it doesn’t really have many options on it. However, I’ve designed its replacement, which is looking a lot better. This is how it currently looks:
The new window hasn’t yet replaced the old one, and doesn’t do anything at the moment. However, you can see what it looks like by clicking “New Bootloader Options Window” from the View menu on the main window. Here are some pictures for you 🙂
As you can see, a lot of the other options have been moved from other windows to this one; it pulls most of the stuff out of the setting window, and has the stuff from the restore windows, meaning I can finally do away with them!
As I mentioned in my last post, the new window will allow selection of everything bootloader related for each operating system, rather than a “one bootloader to control them all” way of doing things (though you’ll still be able to do that if you want to). I can start implementing this soon, after I’ve done some of the infrastructure.
The Disk Info Window
This has changed so it now has tabs, and it has been renamed the “System Info” window, because it also shows information about OSs, and more detailed info about disks in separate tabs. here’s a picture of the old one:
And here are some pictures of the new one!
This window will show bootloader info soon as well, but the infrastructure for that is not yet implemented, as it will require rewriting some of the startup scripts. This is likely to happen when I switch to using the new bootloader options window. The buttons will also work soon, because the refresh button currently causes the GUI to stop working, and the okay button does absolutely nothing at all XD
At this point you may be wondering what I’ve actually been doing all this time 😀 Mostly it’s stuff that doesn’t affect the GUI, but is nevertheless very important.
Since my last post, I have:
- Removed the dependencies on lsblk and parted, so now the disk info is just collected with the GetDevInfo module
- Written an emergency exit function that handles important stuff like saving the log file if the program has to exit during start-up (or when performing operations).
- Designed the new bootloader options window (but it isn’t yet in the program)
- Enabled using the output box with CoreTools.StartProcess(), removing the need for CoreBackendTools.StartThreadProcess(), which has since been removed
- Made most of the start-up scripts use dictionaries to store information, and removed a lot of the global variables used for that
- Moved a lot of core functions so they collect data on start-up instead of while doing operations, which helps me prepare to add the new bootloader options dialog.
- Automatically detect live disks (Parted Magic, Ubuntu-based ones, and Fedora-based ones), to avoid asking on start-up where possible
- Stopped using a lot of the global variables
- Refactored and improve a lot of the code, and add more safety checks, and improve performance in most places (performance in 2.0~pre1 is a bit down because I needed to slow it down to temporarily fix a bug, but it will be a lot faster in 2.0~pre2).
- Done some basic testing to make sure the important bits of the code still work, which they do.
- Rewritten the GetDevInfo module to parse lshw’s (hardware lister’s) output in XML because it’s faster and more reliable.
LILO and ELILO
For a while, I wasn’t sure if I would continue supporting these, but I have since decided that I will, because it will allow me to support more distributions more easily in the future, and on that note:
Support For Fedora and derivatives!
I’m happy to say I’ve decided that this release will support Fedora and its derivatives! I said I’d support them in the future, and what better time than now given I’m already introducing major new features and doing major work? After that, I might add support for other distributions too, but not in this release, and I’m not sure which ones yet.
Upcoming features and improvements
- Switch the remaining parts of the code to using dictionaries, and remove the rest of the abstraction code.
- Gather much more bootloader info on startup, enabling me to:
- Show Bootloader Info in the System Info Window, and
- Switch to using the new Bootloader Options Window!
- In a few places, I’ve switched to using dictionaries, but not better info access methods, so that will happen soon too.
- Allow checking individual filesystems, and allow specifying custom options if wanted
- Add a check for update feature, like the one in Wine Autostart
- NOTE: My attitude to privacy and data protection has not changed. Neither has WxFixBoot’s approach to it. I respect your privacy, so I try to make my programs gather as little information as possible, and ensure that no personally identifiable information is gathered. I also ensure as much as possible that no sensitive information is displayed in the log file. My definition of “personally identifiable” or “sensitive” information is anything related to IP addresses, or serial numbers.
- Build more logging messages and error checking into the code.
- Reduce code duplication, and improve performance.
As you can see, I’ve made a lot of changes to WxFixBoot since the last post. Apologies for the delay in me writing this post, I’ve been really busy lately, but I will write a review for Ubuntu 16.04 LTS soon (including Snappy Core), and I will update this blog more often from now on 🙂
I will also write a post on my upcoming new project soon, which should be fun!