Giter VIP home page Giter VIP logo

pythonos's Introduction

Python OS 6

Notice

This project is no longer being actively developed. Its successor project is Polaron, a more dynamic UI package useful for a wider array of applications.


GitHub Stars GitHub pull requests GitHub Wiki MIT licensed Github All Releases Build Status

Python OS 6 is the ultimate interface for touch-enabled microcomputers such as the Raspberry Pi. It offers a complete interface replacement, an application management and distribution system, and a UI toolkit for creating event-driven apps in Python.

The stable version OS currently supports a 240x320 display, while the development version supports any screen size.

Key features include:

  • Application stack with support for threading, suspend, and app switch.
  • UI components that include scrolling and dialogs.
  • Event-driven callback programming that mixes the best of Python and Javascript.
  • Color themes and icons that help you make beautiful, polished apps.
  • Easy persistent storage.

##Donate to Python OS 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!

##Get Started ###As a User

Simply download Python OS either on your computer (with Python and Pygame installed), or flash the disk image for your Pi (coming soon).

###As a Developer

Download and try out Python OS first.

Now, let's write a simple "Hello World" app.

Start by creating a folder titled "helloworld" under apps/.

In that folder, make two files, an __init__.py and an app.json.

The app.json file will contain:

{
	"name": "helloworld",
	"title": "Hello World",
	"author": "Your_Name",
	"version": 1.0,
	"more": {
		"onStart": "hello"
	}
}

The __init__.py file will contain:

import pyos

def hello(state, app):
	app.ui.addChild(pyos.GUI.Text((5, 5), "Hello World!"))
  • Now, enter the About app and long press the "Start State Shell" button to launch the Debug App Bind feature.
  • Open your app's folder, then press the green dot button to select it and associate the app with the system.

pythonos's People

Contributors

furmada avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pythonos's Issues

not running on Raspberry pi with tft display.

The default PythonOS does not run on RaspberryPi 3 with 3.5 inch display.
I solved this by adding to pyos.py in the GUI object before
pygame.init()

if( _platform == "linux" or _platform == "linux2"):
            print "is Linux"
            os.putenv ("SDL_FBDEV" , "/dev/fb1")
            os.putenv("SDL_VIDEODRIVER", "fbcon")
            os.putenv("SDL_MOUSEDRV", "TSLIB") 
            os.putenv("SDL_MOUSEDEV", "/dev/input/touchscreen")
            print "init pygame"
            pygame.display.init()
            print "get screen size"
            size = (pygame.display.Info().current_w, pygame.display.Info().current_h)
            print "set screen mode"
            self.screen = pygame.display.set_mode(size, pygame.FULLSCREEN)
            print "Framebuffer size: %d x %d" % (size[0], size[1])

And you need the platform package

from sys import platform as _platform

More modular PythonOS

Hi,
first thing to say I like the idea of PythonOS very much.
I thought about adding some apps for my radio project. Then I had the idea to add a gui component for it and was a bit frighten of that monolithic 2k loc block. So I started to break it down in a more modular way.
a first draft can be found here: https://github.com/NeoBelerophon/PythonOS/tree/WIP_refactoring
I would like to here what you think about it. IMHO this also could make portion to Python 3 easier and lower the entry barrier for other developers.

BR
Neo

User-specific path in gallery.ds

Sorry for opening so much issues, but I just found, that in the file res/gallery.ds you have this:

{"dsApp": "gallery", "path": "C:/Users/Adam/Documents/eclipsepy/pyos6/res/icons"}

Is this just fine or will it break things?

PMan won't update

doesn't work on any of the following systems I tried (Python OS latest):

  • Windows XP Dell Dimension 3100c
  • Linux Mint 18 Cinnamon
  • Windows 8.1
  • Windows 10

good job on the project btw.

Make PythonOS ready for Python 3

I really like this project, however, it's still Python 2 only. It would be nice to see it run under e.g. Python 2.7 - 3.x (or even 2.6 to the newest Python).

To be honest, I don't know how hard this would be, I guess simply replacing all the prints is not enough.

I guess this is important to have a stable codebase in the future, and would possibly bring some (small) speed improvements too.

Maximum recursion depth exeption

First of all: great job. I've not seen such an awesome project. I did not walked trough the full sources, but this has been a lot of work I think.

While looking over the apps and all the functionality, I got the following traceback. Sorry, don't know which app I had open :(

Some infinite recursion which is stopped when the default recursion depth is reached... Hopefully I can contribute something to resolve this issue.

EDIT: I ran the code under Ubuntu 16.04 LTS with Python 2.7.12 and Pygame 1.9.1release.

Python OS 6 Error Report
TIME: 2016-09-25 14:58:55.693280

Open Applications: ['image-viewer', 'task-manager', 'about', 'home']
Message: Event execution error
Additional Data:
Click event: <__main__.IntermediateUpdateEvent object at 0x7f132a8816d0>

Traceback:
Traceback (most recent call last):
  File "pyos.py", line 2648, in main
    clickedChild.onIntermediateUpdate()
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 553, in onIntermediateUpdate
    self.internalClickOverrides["onIntermediateUpdate"][0](*self.internalClickOverrides["onIntermediateUpdate"][1])
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1368, in dragScroll
    self.scrollContainer.scroll(ydist)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1396, in scroll
    self.scrollTo(-self.maxOffset + self.height)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1408, in scrollTo
    self.scroll(-self.offset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1400, in scroll
    self.scrollTo(self.minOffset)


...

Several thousand lines of the above...
...

  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1400, in scroll
    self.scrollTo(self.minOffset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1408, in scrollTo
    self.scroll(-self.offset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1400, in scroll
    self.scrollTo(self.minOffset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1408, in scrollTo
    self.scroll(-self.offset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1400, in scroll
    self.scrollTo(self.minOffset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1408, in scrollTo
    self.scroll(-self.offset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1400, in scroll
    self.scrollTo(self.minOffset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1408, in scrollTo
    self.scroll(-self.offset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1400, in scroll
    self.scrollTo(self.minOffset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1408, in scrollTo
    self.scroll(-self.offset)
  File "/home/linus/Schreibtisch/PyOS 6/pyos.py", line 1400, in scroll
    self.scrollTo(self.minOffset)
RuntimeError: maximum recursion depth exceeded

Review icons

The Android-like app launcher is very nice, however, the icons don't look as beautiful as they could (sorry @furmada , but are they drawn with MS Paint?). I think of the following:

  • Consistent shape is already present and very good, currently rectangular. We should keep that.
  • Very important: remove the pixelized borders of objects in the icons.
  • Maybe be inspired by Material Design?
  • Complete redesign of About, Quit and Sleep
  • Clock is fine, however, Stopwatch and Timer are not unique enough
  • As already said, creating a new, smooth version of each icon would be cool, maybe even as svg and then exported to png.

I would really love to make UI more beautiful. If this is currently not very important on your TODO list, we could keep this for the future.

TEST

TEST ONLY, to fix badge issue.

SDL 1.2.15

I'm trying to get PythonOS to install on a Nanopi with a buydisplay lcd. The screen starts up and I get cursor movement but the cursor is stuck in the top right corner.

I did some reading around and it seems pygame has an issue with SDL > 1.2.15-5. I wanted to find out if anyone else has run into this issue and if so was a downgrade what fixed it or a jump to a version of SDL 2?

THanks! Great application here!

Project license

Which license this project will be based on? GPL? BSD? MIT? etc?

TODO?

Hey, is this project have any TODO's? Maybe that will be great to make a roadmap overtime.

Integrated testing

Is it functional with Travis? Since the code doesn't include any tests at all.

Automated unit test for python os on github

Hey @furmada , did you ever tried travis.ci for automatic test for this repo? It seems gonna save a lot of time finding Python specific bugs with the testings. You also can customize the testing to suit this project, and maybe set a test rules for any other contributors in the future for this project.

Thanks.

Quick start problem

Hi, I tried the following quick start tutorial in the README.md. After creating the app.json and init.py with its content, I don't know where to go from there.

Now, enter the About app and long press the "Start State Shell" button to launch the Debug App Bind feature. Open your app's folder, then press the green dot button to select it and associate the app with the system.

I don't know how to go to the 'Start State Shell' and even install 'pyos' properly on my system. Mine is not raspberry. I'm running Ubuntu 16.04. (32 bit)

I tried running pyos.py in the root of directory, and run fine, but it's just print on the window screen, and nothing else. This is what I see -
tsjtr5p

How to actually use this program? Going to wiki only shows you the API documentation.

Thanks for your advance.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.