Python OS 6 - 1.0-beta3
Python OS 6 is a complete user interface and application management system written entirely in Python using Pygame.
It is designed to run on a Raspberry Pi with a 320x240 touchscreen attached. It includes a complete GUI toolkit including events, callbacks, and threads. Python OS also comes with several applications as well as the ability to install more using the Software app.
On the Pi, it works with python-wifi to connect to the Internet.
Support the development of this platform by making a donation in any amount. You may choose to enter your name (or username) on the donation screen and it will be added to the About app. Thank you!
Pygame.org account Comments
Jorge A. Gomes 2016-03-02 23:54
Awesome work! Congrats! There's a lot to change in your code to make it look like a solid python project, regarding stuff like PEP8, but I have no doubts you'll soon reach the Zen of Python. By the way, if you are new in Python as it seems, welcome to the Python community!
canine828 2016-03-03 14:57
good, but I think some things could be improved:
1: make it fullscreen (what if somebody is running it on something other than a Pi's touchscreen?)
2: the icon should be different (it's too rectangley, and it looks like a ripoff of the Windows logo)
3: add app switcher (make PyOS apps, use "import <app_code_name>" and then blit <app_code_name>.draw((0,0,width_of_surface,height_of_surface)) onto the display surface, and put icon in app tray)
Adam F 2016-03-04 22:17
Thanks for your input! I agree, I'll have to redesign the icon (what was I thinking!). I am working on an app switcher now, I think I'll trigger it via clicking on the current app's title. I'll use the already-made launcher containers to save time :)
The fullscreen thing may be more of a problem. The OS is made for the Pi, but it does *work* at a higher resolution (but doesn't look good). I think that I may make a second version (such as PyOS-PC) that shares the same codebase but scales up resources.
canine828 2016-03-04 22:23
A quick fix for resource scaling: Make 4 upscaled versions of the images you need to upscale. Use pygame.VIDEORESIZE (you will need to use the pygame.RESIZABLE flag) to detect new resolution, and get the code to decide which version of the image should be used. Or make an infinite-resolution version of the icon (something similar to SVG) that your Python code parses and uses to scale and draw each image.
Example (each number that is not stated otherwise is a percentage, the 6-digit code at the end is the hexadecimal colour, and True[outline width in pixels@width value used to upscale outline width, in pixels;height value used for the exact same purpose as the width value, in pixels]/False is whether it is an outline or not):
ellipse 0 0 100 100 DD4814 False
rect 0 0 100 50 772953 True[4px@64;64]
would make an orange circle, and (at a size of 64px by 64px) a 4px outline of a rectangle spanning the entire top half of the image in purple
Adam F 2016-03-04 22:27
Yep. I think the best option may be to simply create hires icons, and load those if they exist (if they are 120x120 or 160x160 that should be enough for a large screen). Apps could also provide a "scaleup" flag that would simply double all given values, like running iPhone apps on an iPad.
Bruno L. Carli 2016-12-19 22:38
Can i run this PyOS in a UDOO board? right that UDOO is a raspberry+arduino based board?