-
Notifications
You must be signed in to change notification settings - Fork 14
Description
As the base of this application continues to expand, and as it gets more and more complex overtime, I think opening up a “tracker” of sorts so that both users and potential contributors are very well aware of what is to (hopefully) be implemented over the years to come.
First off, let's get basic features, refactoring and further implementations necessary (or well, more-so “preferred”):
-
(1.) Building an efficient and responsive TUI to toggle displaying particular data (GPUs, Device IDs, Connector types for input devices, etc.)
-
This would also include toggling data of particular groups/categories (CPU, GPU, Memory, ...)
-
Ideally, the TUI should be written in Rust, and it can then communicate with the Python codebase (using an event emitter, or something of the sorts) to tell the application what data to toggle on/off, and the device manager's methods would be called accordingly when needed.
- However, if we, for whatever reason, decide to write the TUI in Python, there is an interop1 already written in Rust for capturing key presses (and key combos, such as
Ctrl+C), which should alleviate the concern as far as that subject is concerned. Otherwise, we would likely need to refactor the entire application to implement some adaption ofcurses.
- Say the user toggles off the entire
GPUcategory - the TUI would emit an event—which we'll arbitrarily namedata_off—which the application would listen for, and remove the entire category from the device manager instance'sinfoattribute. If the user toggles it back on, it should call the DM's (from hereon out, this is what I'll use to refer to the device manager instance)gpu_info()method.
-
-
(2.) To quickly mention, the development team has been working on another project, whose purpose is to “pack” the core of this application (for hardware discovery) into a single, versatile library called
PySysInfo2. With this library, we could focus more on maintaining the core of OCSysInfo without bothering about retaining stability and hardware discovery. Here are some of the benefits of this approach:-
More attention to pay to UI/UX design;
-
Makes the codebase a lot cleaner, more easy to preview, shorter, etc.;
-
We could eventually consider adapting a GUI version, which may or may not be detrimental, but this is still in discussion.
-
-
(3.) Add detection for Display devices (resolution, which parent GPU it's attached to, refresh rate, model, etc.) — this would be rather convenient for our end-users, as I've seen a lot of individuals struggle to find the exact model of their monitor on the occasion.
-
(4.) Implement codename detection for Apple ARM64 chips (M1, M1 Pro, M1 Max, etc.); this would be a hard-coded list, which we can gradually update as each new model comes around.
-
(5.) Refactor CPU codename managers (for Intel and AMD) to pull from a hardcoded list instead of fetching them online (so that offline compatibility remains)
-
(6.) Add detection for chipsets; this would be rather challenging, because I'm not entirely certain if Windows and Linux expose this information anywhere, but it is still worth looking into.
That is pretty much it for now, it is going to be a long journey, but I'm hoping they'll come around eventually.
I will be continuously updating this as features are implemented, or if there are any other features that may be useful which require implementations.