rozniak / xfce-winxp-tc

Windows XP stuff for XFCE
Other
929 stars 30 forks source link

Automating WinXP-XFCE-TC Installation and Implementing OOBE #320

Open steven2024 opened 2 weeks ago

steven2024 commented 2 weeks ago

This issue aligns with the goals discussed in issue #81 regarding enhancing user accessibility to the complete "total conversion" experience offered by this repository.

I am currently working on developing a PyGTK-based GUI program to automate the installation process of the winxp-xfce-tc theme on Linux systems. This aims to simplify the installation steps involved, which currently require manual compilation and package installation.

Current Progress

The current UI of the PyGTK program is simple and user-friendly. It features a main window titled "Windows XP Theme Installer" with a straightforward layout. You can click a button to install the WinXP-XFCE-TC theme and optionally check a box to install the WelcomeXP theme. Below these controls, a status label provides real-time updates on the installation process, keeping you informed of progress and any issues that arise. Overall, the design focuses on ease of use, guiding you through the installation process with clear, concise interactions.

Currently, the user interface (UI) for the installation wizard doesn't resemble Windows XP at all. However, once I streamline the auto-installation process, I plan to overhaul the UI to be accurate to the Windows XP OOBE. This will include redesigning the overall layout to closely mirror the classic Windows XP installation experience.

The PyGTK program is designed to:

Install winxp-xfce-tc Theme: Automate the installation of the theme by handling dependencies, compiling necessary components, and installing required packages using package manager commands appropriate for the user's Linux distribution.
Option to Install WelcomeXP: Incorporate an option to install WelcomeXP (https://github.com/mshernandez5/WelcomeXP) alongside winxp-xfce-tc, which mimics the Windows XP login screen.

Future Plans

Once the auto-installation process for winxp-xfce-tc is streamlined:

Recreating WinXP OOBE: Recreation of the Windows XP Out-of-Box Experience (OOBE) within the winxp-xfce-tc environment. This includes developing an interface that mimics the setup process of Windows XP, providing users with a simplified installation experience. (as mentioned in Issue #81)
Enhancing User Interaction: Implement features such as graphical and text-mode setup options (as mentioned in Issue #81) based on the user's system configuration, ensuring compatibility and ease of use across different Linux distributions and setups.

Next Steps

Refine the PyGTK program to ensure smooth installation of winxp-xfce-tc and WelcomeXP themes.
Make the XP OOBE as accurate as possible.
Test and iterate on the installation process to handle edge cases and improve user experience.
Gather feedback and suggestions for further enhancements and features.
steven2024 commented 2 weeks ago

I'm glad to inform you that I've made the xfce-winxp-tc installer available on GitHub. You can find it here. I've tested it and everything is working as expected. If you encounter any issues or have further questions about its usage, please don't hesitate to reach out!

Here's an image showcasing how the script (python and shell) runs aswell as what the UI looks like. image

Best regards, steven2024 (Nash)

rozniak commented 2 weeks ago

I had a brief skim so far, will have to try it out properly later...

A few notes:

I'll have a proper play around this evening hopefully! It would be useful at least to get some form of basic install working to test out automating the steps, so your work on this should be a good start.

steven2024 commented 2 weeks ago

I still have some work to do on getting it working with other distros as I've only currently tested it and made it for/with Debian. I'll look into the FreeBSD and bash issue and the LightDM greeter that you've done. I just implemented WelcomeXP as thats what I've used with this before. I was just using a shell script to make it easier to launch and install python/pygtk automatically. I believe I still have work to do on that (getting the dependencies (python/pygtk) installed automatically) on different distros since the commands are different.

Also.. I'm currently in the process of installing Windows XP 32-bit to look at its interface design as well as the installer and OOBE. This will help me accurately replicate its look and feel for the project. I'll keep you updated if I make any progress on the UI. image

steven2024 commented 2 weeks ago

Note:

When I said everything is working as expected, that's not really the case. I haven't checked yet if everything functions correctly (I haven't tried applying it), but what I meant was that the installation of everything completed successfully. I still need to work on automatically applying nody-greeter, lightdm, and all the panels/themes/etc. instead of requiring the user to go through menus and commands to apply them after installation.

rozniak commented 2 weeks ago

No worries about the distro/shell stuff - I just thought I'd give you the heads up to save you the trouble of retreading the same paths I've been down in the past! :grin:

I'm currently in the process of installing Windows XP 32-bit to look at its interface design as well as the installer and OOBE. This will help me accurately replicate its look and feel for the project. I'll keep you updated if I make any progress on the UI.

You should be able to find the resources for setup on the XP install media:

steven2024 commented 2 weeks ago

Yeah, I looked into pulling resources from the install ISO earlier. Thanks for telling me how to go about doing that. I feel like I should focus on automating the install stuff first so that's why I mentioned I have some work to do for that. Before I work on that I'll look at implementing an XP-esque UI (Not working on the OOBE yet lol).

steven2024 commented 2 weeks ago

Silly me, I forgot to clear everything that gets copied from git in the python script 😛

rozniak commented 2 weeks ago

FYI as well, I tend to find it quicker to create the UIs using a GtkBuilder, so you can define the UI in XML.

steven2024 commented 2 weeks ago

Progress on the UI :) And music

https://github.com/rozniak/xfce-winxp-tc/assets/89735533/716f225f-a0e7-4b21-821d-7b06ff100290

I have made some progress on the Windows XP OOBE theme installer UI and music implementation. Below are the details of the updates: UI Updates:

Background Image:
    The UI now displays a background image that matches the Windows XP out-of-box experience (OOBE) theme.
    The image is loaded and displayed correctly within the fixed container of the GTK window.

Next Button:
    Added a "Next" button with a clickable image (continue.png).
    The button is accompanied by a label "Next" with an underlined 'N' positioned to the left of the button, using the Tahoma font with white text.
    The button is positioned at the bottom right corner of the window.

Label and Button Alignment:
    The label and button are aligned horizontally within an HBox, ensuring a clean and organized layout.
    Coordinates and placements have been carefully adjusted for accurate positioning within the window.

Event Handling:
    Clicking the "Next" button changes the background image to simulate the progression of steps in a setup wizard and the text is integrated into the background (I will change this later so I can update/edit/add more text).

Music Updates:

VLC Integration:
    A VLC media player instance has been created and initialized to play the music file (Isk3k3.mp3).
    The music starts playing automatically when the window is initialized, providing an auditory component to the experience.

Playback Control:
    The music file path is correctly specified, and playback is controlled to start automatically, enhancing the overall nostalgic experience.

Preview:

You can check the progress in this video: UI and Music Progress Next Steps:

Further refine the UI elements to match the exact Windows XP OOBE theme.
Implement additional functionality and navigation logic for subsequent steps.
Implement actual text labels instead of integrating them into the background for easier updating.
rozniak commented 2 weeks ago

That's pretty cool!

I think in future the project will use GStreamer for audio/video playback - wondering if you can use that rather than VLC?

rozniak commented 2 weeks ago

Some more info on pulling resources, I'm not sure what part might be giving you trouble so this just general coverage:

Obv you can either poke around an existing Windows XP install, or use the install media. Thing to bear in mind with the install media is the files like .DL_ are compressed, so you must either use expand (if you're on Windows) or cabextract (on Linux/BSD) to get the original file out.

On Windows there are a number of good resource editors/viewers, I use this one: http://melander.dk/reseditor/

Main reason is because it has better support for some 32bpp bitmaps in Windows resources and lets you save them out as PNGs without losing any data.

You can use 7zip to extract resources as well, tho some of it will just be the raw binary data structures so you'd need to parse those somehow. Bitmaps/icons should be easy enough, though 32bpp bitmaps can be a pain with modern image editors (GIMP doesn't support them properly for instance).

For the OOBE resources, it's HTML based - so no need to do any sort of resource extraction. All the HTML/images are separate, which also means it's probably easier to grab them from an actual Windows XP install rather than trying to find all the files in the CD. Most of what you'll want is in C:\Windows\System32\oobe\images

Hope this helps!

steven2024 commented 2 weeks ago

Yeah I figured that out yesterday from a video about title.wma after I sent that email as it mentioned where to find the OOBE music and it had all the other resources. My XP installer kept hanging so I'll try a different ISO. I'll look into using gstreamer as that shouldn't be too difficult. I'll let you know when I get the new UI implemented with the other code (I did it seperately which probably isn't a great idea but it made it easier to change it so I'll look into GtkBuilder)