Deskapp 0.0.8
An Open Source Terminal basesd Program Manager. Write and manage your own apps in this framework.

# | A very Ruckusist Production |
## A console program manager for python apps.

## Install
 `pip install deskapp`

 TODO: find out how to add on the additional modules so that the raspberry pi
 built in stuff can be installed. wifi scanner, bluetooth scanner, deauther.
 yeah, and the android stuff. I havent started in on the level access we have
 on android, but this app works real good in termux.

## Run
`deskapp` from the console will invoke the app. (why? what else should it do here?)
    What kinds of run commands would you want to provide here? Maybe if i had
    a single file app, and i wanted to create an .exe, i could call 
    deskapp build filename.py ... maybe.

    nearly this shouldnt be a thing. questioning the wisdom of a run command
    at all.

## IDEAS FOR GAMES
 - Desklike
 - DeskHunter
 - Desk2042
 - DeskType
 - DeskShip
 - DeskSnake (in progress)

## IDEA FOR APPS
- Linux builder. This seems like a fun challenge. It should have all the
    features of the standing linux config building system, but should offer
    the clickability, and UX of a proper deskapp. You could click this onto
    the deskapp.server and use it for cross-compiling remotely. so a piNano
    deskserver weather station, that is solar powered, could still stay up to
    date because the main system build handles it. good idea.
- Bitcoin Trader (obviously)
- MP3 player / organizer
- RoboDog

## TODO
    [ ] Unify the printing mechinism. There are like 3 different printing 
        schemes going on in here, and that needs to be fixed. like formost.

    [ ] Freshen up the examples folder; do a new example based on the login
        page where clicking somewhere spawns further pages, and destroys 
        spawned pages.

    [ ] Add in the Web sub-module. see what the viability is of printing
        what we see as deskapp in the terminal to the screen space of a 
        webpage.

    [ ] Use the Pop Up warnings in a demo and see what their viability is.

    [ ] So much... 
        - Shortcuts. Everything in the module needs a functional shortcut. we
            should not be making calls directly to curses, from 3 libraries
            up, that is silly. there has to be a better way to wrap those.

        - Further Mouse support. Mouse handling is now passed to the module, 
            and it is useable. but it is far from clean/good.

        - further draw support. the logic class has draw functions in there. 
            those functions to redraw the screen should either be in the
            frontend class, as an extention, or in a intermediate class that
            can redraw any prebuilt setup of screen.

        - remove all the parts from the screen by toggle.
         - !! Also i want to be able to start with the visibility of everything
            turned off. so the module is full screen.
            [ ] Toggle Menu.
            [ ] Toggle Header.
            [ ] Toggle Meta.
            [ ] Toggle Footer.
            [ ] Toggle Messages.
        
        - Fullsceen messages, full screen module page.

    [ ] Reproduce all this work in other programming languages. I have heard a 
        legend of a javascript module that if you write the code out in their
        style, then it can just output many different languages from one template.
        this would be a cool exercise. its fun to think that this might be a 
        cooler idea outside the python community than within it.

    [ ] Stream all this work on twitch. Then clip that into coherient tutorials
        for youtube. your gonna do the work anyway, record it.

## SUB MODULES

Sub Projects have been moved into this namespace. This might be a bad idea in the
long run. But for the short term, having all the moving parts in one project 
directory is a boon.

    - THE SERVER.
        The Server is a python socket server. With a login database, Messaging
            protocol for arbitary file sizes, Compression/Encryption, a message passing
            protocol for multiplayer apps, like a chat server.

    - WEB SERVER.
        The Web Server should come with a javascript library that can connect
            to 'The Server'. and a login page, start with some ping-pong after that.


## ChangeLog
11.11.22-Ruckusist v.0.0.8: Added in the Server. The server has a long todo list
    please check this out if you want to help.

11.11.22-Ruckusist v.0.0.7: Added in mouse support. Refactored some parts in 
    previous 4-6 updates. No changes to the working API

7.26.22-Ruckusist v.0.0.4: release of version 4. This version come with new, and
    significant bugs, But with new functionality. This is just a transition point
    from one stable/working version, to the next.

4.20.22-Ruckusist v0.0.4: started working version 4.

4.6.22-Ruckusist v0.0.3: added the demo_mode flag to the App Object to turn off
    the About and Fire functionality. This gives me the idea to put more demo 
    stuff there. I want to copy cmatrix, dropping snowflakes, video player, other 
    stuff.