OpCore-Simplify icon indicating copy to clipboard operation
OpCore-Simplify copied to clipboard

Implement GUI

Open rubentalstra opened this issue 3 weeks ago • 16 comments

This pull request introduces a new GUI mode for OpCore Simplify, providing a modern, cross-platform graphical interface alongside the existing CLI. The changes include a platform-adaptive icon system, modular GUI page structure, and macOS-inspired UI components and styling. The most important changes are grouped below:

1. GUI Mode Integration and Entry Point:

  • Added logic to OpCore-Simplify.py to launch a new GUI mode by default, with an option to fall back to CLI using the --cli argument. Handles import errors gracefully and switches to CLI if GUI is unavailable.

2. Modular GUI Architecture:

  • Created a Scripts/gui package with an __init__.py that exposes the main GUI class (OpCoreGUI) and the icon system (Icons).
  • Introduced a Scripts/gui/pages package with an __init__.py that organizes and exposes all GUI page classes for easy import and modularity.

3. Platform-Adaptive Icon System:

  • Implemented Scripts/gui/icons.py, which provides a robust icon system using Unicode and system fonts, ensuring consistent appearance across Windows, macOS, and Linux. Includes utility methods for icon retrieval and formatting.

4. New GUI Pages with macOS-Inspired Styling:

  • Added Scripts/gui/pages/configuration_page.py, implementing a configuration page for hardware report selection and macOS version setup, featuring styled action cards and instructional content.
  • Added Scripts/gui/pages/console_page.py, implementing a console log page with styled log area, clear/export actions, and helpful tips for users.

rubentalstra avatar Dec 02 '25 12:12 rubentalstra

@lzhoang2801 do you maybe have an JSON hardware report that i can use for development. because i don't have an windows machine. so i can't really test the UI so good 😅

rubentalstra avatar Dec 02 '25 12:12 rubentalstra

Here some screenshots
Screenshot 2025-12-02 at 13 38 01 Screenshot 2025-12-02 at 13 38 07 Screenshot 2025-12-02 at 13 38 13 Screenshot 2025-12-02 at 13 38 18 Screenshot 2025-12-02 at 13 38 24 Screenshot 2025-12-02 at 13 38 29

rubentalstra avatar Dec 02 '25 12:12 rubentalstra

@lzhoang2801 do you maybe have an JSON hardware report that i can use for development. because i don't have an windows machine. so i can't really test the UI so good 😅

Here https://github.com/lzhoang2801/OpCore-Simplify/discussions/23#discussioncomment-15054538

lzhoang2801 avatar Dec 02 '25 12:12 lzhoang2801

@lzhoang2801 can you maybe have a look at what i have currently?

Here some screenshots Screenshot 2025-12-02 at 16 30 14 Screenshot 2025-12-02 at 16 30 26 Screenshot 2025-12-02 at 16 30 34 Screenshot 2025-12-02 at 16 30 57

rubentalstra avatar Dec 02 '25 15:12 rubentalstra

Can you use qfluentwidgets? I like this style

lzhoang2801 avatar Dec 02 '25 16:12 lzhoang2801

I will update the code to use this style: https://qfluentwidgets.com

rubentalstra avatar Dec 02 '25 16:12 rubentalstra

And remove CLI version, we only need console log

lzhoang2801 avatar Dec 03 '25 07:12 lzhoang2801

okay i will then also remove the CLI version. 👍

rubentalstra avatar Dec 03 '25 07:12 rubentalstra

@lzhoang2801 this is what i currently have. it's not yet finished. but i just wanted to show you some results in between:

Here some screenshots Screenshot 2025-12-04 at 09 13 20 Screenshot 2025-12-04 at 09 13 41 Screenshot 2025-12-04 at 09 13 53 Screenshot 2025-12-04 at 09 14 06 Screenshot 2025-12-04 at 09 14 22 Screenshot 2025-12-04 at 09 14 34 Screenshot 2025-12-04 at 09 14 45 Screenshot 2025-12-04 at 09 14 53 Screenshot 2025-12-04 at 09 15 02 Screenshot 2025-12-04 at 09 15 09 Screenshot 2025-12-04 at 09 15 18 Screenshot 2025-12-04 at 09 15 27 Screenshot 2025-12-04 at 09 23 08

rubentalstra avatar Dec 04 '25 08:12 rubentalstra

Woaaa

lzhoang2801 avatar Dec 04 '25 08:12 lzhoang2801

Woaaa

i think that's a good response? 😉

i try not to make any changes currently to the CLI working because i first want to have minimal chnages between the working of the CLI tool and the GUI. and after i have added all the functionallty in the GUI i will create a new PR to refactor and remove the CLI.

otherwise this PR will be getting to large? do you agree?

or what do you prefer?

rubentalstra avatar Dec 04 '25 08:12 rubentalstra

Okay, but make sure you have clean code for the GUI version. I will help you ensure the script's operational flow is correct.

lzhoang2801 avatar Dec 04 '25 08:12 lzhoang2801

Okay, but make sure you have clean code for the GUI version. I will help you ensure the script's operational flow is correct.

off course. currently it's still a rough draft. i want to have the design and the workflow of the GUI first implement before refactoring the GUI and cleaning up the code.

but can you maybe explain the build fase a little more? because there we have as well the Wifi exstractor.

should this be a seperate fase by it self? or do you want that when you click the build EFI. it will show a dialog to do the wifi extraction? or? i'm just trying to figure out what is really going on with the build fase because i have seen a lot of things are happing there.

PS. i have send a message on telegram to you? maybe it's a little easier to communicate there.

rubentalstra avatar Dec 04 '25 08:12 rubentalstra

Okay, contact me via @lzhoang2601

lzhoang2801 avatar Dec 04 '25 08:12 lzhoang2801

@lzhoang2801 😉 Screenshot 2025-12-04 at 16 27 57

rubentalstra avatar Dec 04 '25 15:12 rubentalstra

Added now a Settings Page :)

Here some screenshots Screenshot 2025-12-05 at 15 48 26 Screenshot 2025-12-05 at 15 48 34 Screenshot 2025-12-05 at 15 48 41 Screenshot 2025-12-05 at 15 48 44

rubentalstra avatar Dec 05 '25 14:12 rubentalstra