Jump to content

GSoC/2019/StatusReports/FaridBoudedja

From KDE Community Wiki

KDE ISO Image Writer

KDE ISO Image Writer, which is part of the KDE neon project, is a tool to write ISO images into USB drives. It was forked from ROSA Image Writer and extended using the KDE Frameworks. Currently, the KDE neon website advises to use Rosa Image Writer because KDE ISO Image Writer is still under development.


The aim of this project is to revamp the user interface of the KDE ISO Image Writer following the designs made by the KDE community. I am also planning of packaging the application for various Linux distribution using their respective packaging system as well as Snap and Flatpak, for Windows and eventually for macOS. In addition, I would like to write documentation explaining how to use the application with the aim of including a tutorial showing how to write the KDE neon ISO images on a USB drive using KDE ISO Image Writer which could then be added to the KDE neon download page.


Mentors: Jonathan Riddell and Harald Sitter

Work report

User Interface

Building a new user interface for KDE ISO Image Writer was one of the main goals I set for this GSoC project. The new user interface is based on a design made by the KDE community. Most of the design was implemented by the end of the first coding period and the new user interface can be seen in the following screenshot:

Windows Build

In addition to revamping the user interface, an important goal of the this GSoC project was to make KDE ISO Image Writer run on Windows. I used Craft, which is a cross-platform build system and package manager, to compile the code on Windows. In order for Craft to fetch the necessary packages needed by the application, I wrote a Craft blueprint which is a Python file that describes an application (or library) and list its dependencies.


You can see the Windows build of KDE ISO Image Writer in action in the screenshot below:



N.B. The Windows build currently crashes when ISO images of certain distributions are used because of a segmentation fault caused by QGpgME on Windows.

ISO Verification

Before writing an ISO image, you have the possibility to verify the ISO image using various means such as a GPG signature or a checksum. Distributions use different means to certify their ISO images and the user generally has to go through a complicated process to verify the validity of ISO images.

KDE ISO Image Writer features ISO verification within the graphical user interface which facilitates the process of verifying ISO images before writing them to USB flash drives. It will identify the Linux distribution based on the ISO image file name and perform the verification accordingly.

During this GSoC, I refactored the ISO verification code to ease the addition of new verification means as well as new distributions.

To Do

  • Investigate the cause of the QGpgME segmentation fault on Windows
  • Improve and extend ISO verification
  • Improve Windows builds
  • Make macOS builds of KDE ISO Image Writer

Commits

KDE ISO Image Writer

 - Hide writing progress when KAuth job finishes with error
 - Fix success message not showing at the end of writing
 - Merge master branch from cgit
 - Update project version
 - Clean usb drive combobox code
 - Remove test application
 - Add missing copyright headers
 - Show placeholder text if no USB drive is plugged in
 - Hide writing progress when writing is cancelled by the user
 - Add back and close button to success widget
 - Remove old ISO verification code
 - Fix finished signal not emitted by IsoVerifier
 - Verify Netrunner ISO using SHA256 checksum input by the user
 - Emit finished signal from the verification method
 - Search for sum in SHA256SUMS file before calculating it
 - Verify Ubuntu ISO image using SHA256SUMS file
 - Fix IsoVerifier not emitting finished signal in some cases
 - Show warning message on ISO verification failure
 - Verify ISO image using SHA256SUMS file (Kubuntu)
 - Verify ISO image using .sig file (Arch Linux & Neon)
 - Set writing flag to false when writing is complete
 - Include missing library
 - Do not compile KAuth specific methods on Windows
 - Add manifest to require administrator previleges on Windows
 - Remove main dialog
 - Reimplement close event of the main window
 - Implement drag & drop in MainWindow
 - Clean KAuth helper
 - Enable external progress bar on supported platforms
 - Use new signals and slots syntax
 - Use KAuth to write ISO image on Linux
 - Revert "Use a preprocessor definition to enable KAuth"
 - Use a preprocessor definition to enable KAuth
 - Add missing Windows specific cpp file to CMakeLists
 - Use correct variable name
 - Implement ISO image writing in the new UI
 - Add missing Q_OBJECT macro
 - Disable KAuth if not writing ISO image on Linux
 - Use KAuth on Linux only
 - Add confirmation screen
 - Use human-readable format for USB device size
 - Enable the create button if an ISO and a USB device are selected
 - Update usb devices list by monitoring usb devices
 - Populate the usb devices list after the main window is shown
 - Use ISO image supplied as a command line argument
 - Put the logo above the central QStackedWidget
 - Avoid empty spaces when resizing the window
 - Add button to select ISO image file
 - Use a QStackedWidget as the central widget for the main window
 - Add main window with ISO & USB selection screen

Other Commits

 - Add blueprint for KDE ISO Image Writer
 - Add ISO Image Writer to the list of enabled projects

Links to Blogs and other writing

 - KDE ISO Image Writer – Revamping the UI
 - KDE ISO Image Writer – Windows Build
 - KDE ISO Image Writer – GSoC Phase 2
 - KDE ISO Image Writer – Release Announcement