GithubHelp home page GithubHelp logo

os-js / os.js Goto Github PK

View Code? Open in Web Editor NEW
6.8K 235.0 801.0 37.64 MB

OS.js - JavaScript Web Desktop Platform

Home Page: https://www.os-js.org/

License: Other

JavaScript 69.29% Dockerfile 8.74% Shell 9.15% SCSS 10.07% EJS 2.75%
javascript cloud-platform web-desktop desktop osjs

os.js's People

Contributors

andersevenrud avatar mathiscode avatar nerrixde 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  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  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  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

os.js's Issues

[VFS] Abort if file is to big upon upload in client

Currently the internal uploads are checked on the server if they are too big. This is mostly a PHP thing, but it would be nice to detect this before upload occurs to prevent long loading times and then just get an error in your face.

Should be np

Firefox launch problems

Firefox is having trouble starting up... seems like the onload event is not triggering. Stuck on the loading spinner -- no messages!

Refresh fixes it ?!

[Extensions] Broadway implementation

This is something I have been thinking about for a long time and should be pretty straight forward now that Wayland/Broadway project is in full swing.

  • Create a new Package of type extension called Broadway
  • Re-create the broadway.js script in my own style
  • Create a new Window class of type BroadwayWindow
  • Implement full keyboard event handling
  • Implement full mouse event handling
  • Implement closing of windows
  • Implement moving of windows
  • Implement overlays (like menus etc)
  • Implement Login/Logout
  • In backend, create a simple spawner
  • Make a simple launcher in frontend
  • Fix mousemove outside windows viewport
  • Add support for software window resizing

A new version of Broadway is under way and it seems the image transfer has changed to Zlib binary compress instaed of base-encoded data... which is a nice thing, but will require some small changes to the handlingUpdate 17 dec 2016: This has now been implemented :)

These features are currently missing from Broadway:

  • Resizing of windows (maximize works however)

https://os.js.org/manual/client/broadway/

Screenshot

https://www.youtube.com/watch?v=Hd73b-Twf4I

Docs:

Core Translations

OS.js is lacking in the Translation department. There is a separate issue for Applications: #18

Full instructions on Wiki

NEEDS UPDATE AFTER 1 JAN 2015

In progress

Awaiting

Looking for

  • Spanish (es_ES)
  • Danish (dn_DN)
  • Swedish (se_SE)
  • Finnish (fi_FI)

... and more

Advertisement Cannot be Clicked

I haven't investigated it thoroughly but it's being overlapped by something. Changing the z-index on #OSjsAds from 1 to 2 fixes the problem.

[Server] Node.js Server

Some features are still missing from the Node.js backend:

  • Add User/Sessions in Core API
  • Core Extension via config
  • Add missing "curl" API call support
  • Needs a cleanup
  • Add the same VFS security checks as in PHP server
  • Needs "example" handler
  • Buffered file downloads/reads

[Core] Move some functions out of Handler

These functions can be moved into API instead for convenience:

  • Handler::getIcon()
  • Handler::getThemeCSS()
  • Handler::getThemeResource()
  • Handler::getApplicationResource()

Find some testers

I have no testers to check for bugs and missing features :( Some people have said they wanted to do it, but have never actually got back to me after sending instructions etc.

This issue is for locating and maybe improving the way I try to find people willing to do this. Is it too scary, overwhelming or maybe something is unclear !?

No qualifications needed. Just someone who can test the online demo-version or set it up for themselves locally

The Wiki Article has instructions/testing list

[Dialogs] Unclear error messages in ErrorDialog

In some cases users are using the bugreport utility to report normal error messages. This is probably caused by confusion regarding the texts in the standard error dialog. Change this to be a lot clearer.

An example would be the Chat applications. If the user has not configured the app correctly an error will appear, but it says it "may be a bug"... which is not the case.

Possible causes:

  • The error dialog function is called with the exception attached
  • The message is not specified in this case
  • Default error handler is catching this and not an app-specific one

UTF encoding in file transfer

Ups. I messed up here somewhere and just found out Oo

The problem seems to be on the server-side since client always writes with correct encoding (that's a relief)

[Dialogs] FileDialog - Progress indicator for all VFS modules

Currently, upload progress is only for uploads on OS.js deployed servers. Ever since alpha46 VFS modules all support this, but is not implemented in any way.

NOTE When copying from different sources (internal module => external module) VFS will first copy the file into memory then upload to destination. In these cases we would have to split the progress in two parts

[VFS] Google Drive Implementation

The VFS Module is in place and is mostly complete, except for these missing features and/or bugs.
GoogleDrive does not have the traditional folder-file structure and instead uses Labels. This is an attempt to emulate the former.

  • Read
  • Write
  • Upload
  • Download
  • Scandir
  • Delete
  • Copy from/between OS.js
  • Copy from/between GoogleDrive
  • Some translations are missing

Future features in Issue #40

[Application] Word Processor (Poe)

I am not trying to advertise myself or my project, but I think OS.js would be a great home for my web based word processor. It may need reworked some to conform to the project however, you can view the demo. Any thoughts on the idea would be great.

Main Menu's Items Stay Selected

On

Chrome Version 35.0.1916.153 / MacOS 10.9.2

as soon as some Menu item has been selected and digging with new windows, coming back to the Menu, will show all menu items selected.
This will disappear when opening new windows.

OS.js Logo Suggestions

A collection of logos and suggestions from users. If you have any input or suggestions, add them here :D

[Dialogs] Dialog Refactoring

These dialogs needs some refactoring:

  • File

Also these features needs to be looked at again:

  • Buttons

This would require a few changes to the implementations of StandardDialog... which is quite a few

  • src/javascript/dialogs/alert.js
  • src/javascript/dialogs/applicationchooser.js
  • src/javascript/dialogs/color.js
  • src/javascript/dialogs/confirm.js
  • src/javascript/dialogs/errormessage.js
  • src/javascript/dialogs/file.js
  • src/javascript/dialogs/fileinfo.js
  • src/javascript/dialogs/fileprogress.js
  • src/javascript/dialogs/fileupload.js
  • src/javascript/dialogs/font.js
  • src/javascript/dialogs/input.js

[Core] WebSocket alternative to AJAX

I already know this works because I have experimented with it in the past, but decided to remove it because of the way it was implemented (codebase is much better to work on now :). This mode wil only be available in Node backend.

This needs to be re-done

  • Add connection to build.json
  • Create new abstraction in server.js
  • Split out to connections/http.js
  • Split out to connections/ws.js
  • In frontend call() function add new handling (this is the only function that needs update)
  • Uploads can also be handled through websockets, so change the internal VFS module to support this

https://github.com/andersevenrud/OS.js-v2/blob/master/src/javascript/handler.js

Application windows don't adjust position according to the desktop width/height

The app window doesn't go back into view when I drag it offscreen, then change the size of the browser window. It just stays hidden until i resize the browser window again. This could be a big problem if your logging back into a session with a different sized monitor, and one of your windows/applications is completely off the screen

Move some API functions

These functions need to be moved

  • OSjs.API.getWMInstance() => OSjs.Core.getWindowManager()
  • OSjs.API.getHandlerInstance() => OSjs.Core.getHandler()
  • OSjs.API.getAnimDuration() => WindowManager::getAnimDuration()
  • OSjs.API.getWindowSpace() => WindowManager::getWindowSpace()

[Themes] Default themes and implementation

Planned changes for themes:

  • Rewrite LESS variables. It's a bit messy right now and I don't like the names of the variables either. This can all be generalized quite a bit. Would also minimize the actual use of custom CSS in the theme files. Started on this March 1st #136

These are the included and planned themes:

  • Basic
  • Dark
  • Flat
  • Uncomplicated
  • Frosty Mint #82

[VFS] Dropbox

  • Read
  • Write
  • Upload
  • Download
  • Scandir
  • Delete
  • Fileinfo
  • Copy from/between OS.js
  • Copy from/between GoogleDrive
  • Translations for error messages etc
  • Notification Icon so user can revoke/sign out (Just like GoogleDrive has)
  • Authentication
  • Search/Find function
  • freeSpace() support

[VFS] Other Google Drive Implementation Features

These features needs to be added (See #9 for more):

  • Add support for trash
  • Add support to recover from trash
  • Add support for modifying permissions
  • Add support for modifying properties
  • Add support for comments
  • Add support for revisioning

Code Documentation

The old description was removed

The current goal is to rework the documentation into JSDoc.

When this is done; full ctags support is available. Which is pretty cool as it makes autocompletion of the entire OS.js API avaialable in most editors/IDEs :)

Branch: https://github.com/os-js/OS.js/tree/jsdoc

The entire codebase was already documented, this issue is just for the rewriting of syntax and enhancments

https://os.js.org/doc/client/

Misc

  • Custom Template
  • Configuration
  • Scripts

Client

  • Core
  • Helpers
  • Utils
  • GUI
  • Dialogs
  • GUI Elements
  • VFS
  • VFS Transports
  • VFS Modules (some sort of parsing problem)
  • Handlers
  • All class members (in progress)
  • Set all optional/defaults propertly (in progress)
  • Add more examples
  • Add more tutorial links
  • Go over everything and check for mistakes

Server

  • Server
  • HTTP
  • Handler
  • VFS
  • API

Translations

For anyone that wants to do translations, read this first:

https://manual.os-js.org/v3/guide/translate/

Then comment on this issue if you want to join the translation team ๐Ÿค“


This section will be updated as translations are added

Core translations are located in @osjs/client within the folder src/locales/.

All packages ending with -application has a metadata.json file which contains application title + description.

These packages have their own expanded sets of translations:

  • @osjs/filemanager-application - /locales.js
  • @osjs/panels - /src/locales.js
  • @osjs/draw-application - src/locales.js

Related issues:

[Core] Split up core.js file

Currently it contains all base classes and API functions. It would be nice to split these to:

  • api,js API methods
  • application.js class
  • service.js class
  • dialog.js class
  • Move current dialog.js to dialogs/_default.js class
  • Move init, signout, shutdown into API ?

This would involve getting rid of some 'global' variables (look at the top of core.js). These are shared between all functions currently.

[VFS] Google Drive

This was split out from #9

  • Basic VFS abstraction (like scandir, read write etc)
  • Add support for trash
  • Add support to recover from trash
  • Add support to empty trash
  • Implement Trash into FileView
  • Add support for modifying permissions
  • Add support for modifying properties
  • Add support for comments
  • Add support for revisioning
  • Support for multiple accounts
  • Look into error reports: #193
  • Sometimes getting "cannot do X" because of "missing file id"
  • Search/Find function
  • freeSpace() support

Subdivide OSjs.API namespace

MOVED TO #49

@RyanRiffle mentioned in #53

Also it would also be a good idea to divide the API into more namespaces. The process helpers like launch, kill, getProcess, getProcesses etc. could be in API.Process and so on and so forth.

I think this is a really good idea. This way we could have:

OSjs.API.Process.get() // API.getProcess()
OSjs.API.Process.list() // API.getProcesses()
OSjs.API.Process.kill() // API.killProcess()
OSjs.API.Process.launch() // API.launch()
OSja.API.Process.open() // API.open()

OSjs.Locales.get() // API.getLocale()
OSjs.Locales.set() // API.setLocale()

OSjs.API.Resource.icon() // API.getIcon()
OSjs.API.Resource.fileIcon() // API.getFileIcon()
OSjs.API.Resource.themeCSS() // API.getThemeCSS()
OSjs.API.Resource.themeResource() // API.getThemeResource()

OSjs.Audio.play() // API.playSound()

OSjs.GUI.createDraggale()
OSjs.GUI.createDroppable()
OSjs.GUI.getAnimduration() // API.getAnimDuration()

OSjs.Settings.get() // API.getDefaultSettings()
OSjs.Settings.path() // API.getDefaultPath()

...

Input ?

Refactor is easy:

find src/ -type f -name '*.js' -exec sed -i '' 's/API\.someFunction/API\.Namespace\.newFunction/g' {} +

Scroolbar

Example http://jsfiddle.net/7p9d9om8/

           html {
                overflow: auto; // Makes the default scrollbar dissappear 
            }

            ::-webkit-scrollbar {
                width: 7px; /* Width of the vertical scrollbar button */
                height: 7px; /* Height of the horizontal scrollbar button */
            }

            ::-webkit-scrollbar-button:start:decrement,
            ::-webkit-scrollbar-button:end:increment {
                display: block;
                height: 10px; /* Height of the entiry vertical scrollbar */
                width: 10px; /* Width of the entiry horizontal scrollbar */
            }

            ::-webkit-scrollbar-button:vertical:increment {
                background-color: none; /* Background of the Scrollbar */
            }

            ::-webkit-scrollbar-button:horizontal:increment {
                background-color: none; /* Background of the Scrollbar */
            }

            ::-webkit-scrollbar-track-piece {
                background-color: none; /* Background of the track */
            }

            ::-webkit-scrollbar-thumb:vertical {
                background-color: #999; /* Background of Thumb */
                -webkit-border-radius: 3px; /* Border Radius of the Scrollbar */
            }

            ::-webkit-scrollbar-thumb:horizontal {
                background-color: #999; /* Background of Thumb */
                -webkit-border-radius: 3px; /* Border Radius of the Scrollbar */
            }

Windows with iframes block certain events

Using an IFrame in a window blocks some events, like mousemove when moving a window -- it blocks and locks the movment.

A simple fix for this would be to simply create a transparent window overlay on top-zindex when unfocused. (needs DnD support)

Where it occurs:

  • Writer

[Helpers] Windows Live API

Add support for Windows Live API.

  • Add to build.json
  • Provide Helper Module
  • Login via Popup
  • Scope loading
  • Localization

[Misc] Questions, submissions, discussions and suggestions

This is an issue for general discussion and problem sovling. You can also post your submissions here if you're not into pull requests and such.

Join the official chat room on Gitter :)

FAQ

I'm wondering about [something]

First, look through the documentation and see if you can find anything that might help you :)

I have problems installing OS.js

Make sure you follow the installation documentation to the letter.

I am having problems building OS.js

Make sure dependencies are installed! If you are running on Windows, make sure to run the symlink script (as described in INSTALL).

I am having problems running OS.js client

If something fails, you will get console output of it (press F12 and go to Console). If some files fails to load, chances are building has failed (or you forgot).

I am having problems running OS.js server

If the server fails you will get an error printout (apache users, see error_log).

There does not seem to be any login page ?!

There actually is one, but kind of obscured by its name "example" and the fact I have not found any time to finish it 100% (but it works fine).

http://os.js.org/doc/tutorials/create-handler.html

I want to expand the Client API. How do I do this?

An example, here: https://gist.github.com/andersevenrud/c2e84548a3c0af8c7150

Core Features, Packages and Themes

Issue for core features and default packages

Related issues:

  • Questions, submissions, discussions and suggestions (#49)
  • Translations (#18)
  • Next-Generation UI (#136)
  • Node.js Server (#11)

Server

Client

CoreWM

  • Custom keyboard binding shortcuts
  • Rewrite panel configuration Kudos @RyanRiffle
  • Finish multiple panel implementation
  • Finish panel item settings (#150)

Default Packages

  • About
  • Calculator
  • Core Window Manager
  • Draw
  • File Manager
  • Music Player
  • Preview Media (Images, Videos)
  • Process Viewer
  • Settings
  • Textpad (Plaintext documents)
  • Writer (Richtext documents)

Extra Packages

  • Archiver awaiting rewrite
  • Chat (XMPP)
  • Editor (AceEditor)
  • Google Contacts
  • Google Mail
  • PDF Reader (PDFjs)

Default Themes

Looking for people to make some :)

  • Default
  • Dark
  • Glass (replaces #82)
  • Windows 8
  • Material Theme @rontav

[VFS] Microsoft OneDrive

With the implementation of Windows Live API (#42) support for OneDrive is possible

THIS IS EXPERIMENTAL BUT WORKING

Apparently SkyDrive does not support MIME, but we can get around this

Also, there seems to be no way of donwloading files as arraybuffer or similar atm. I would have to implement a CORS script :(

  • Add to build.json
  • Provide VFS Module
  • Emulate MIME support
  • Path resolving (path => id)
  • Correctly display "galleries" in file lists
  • Read
  • Write
  • Upload
  • Download
  • Scandir
  • Delete
  • Fileinfo
  • URL
  • Localization
  • Needs optimization
  • Needs caching
  • Figure out how to dynamically get the request URL for write()
  • Search/Find function
  • freeSpace() support

Move _Input, _DataView, and GUIElement into their own files

They are the basis of the gui, and I can see why they are in gui.js but having them in their own files reduces the clutter, and makes the code easier to parse. It also helps that all other constructor prototypes are in their own file so following suit makes it easier for someone just getting started finding what they are looking for. GUIElement maybe not so much.

[Backend] Python?

I know a lot of people, myself included, that would prefer to avoid PHP and Node anywhere in our deployments if at all possible. Would anyone other than me be interested in a Python server backend?

[Core] Detect default language for non-english speaking users

Some users might not know the English language very well. Maybe add language detection (very easily done by checking navigator object) for users outside English-speaking areas ?

  • Add this detection function to Utils namespace
  • Run detection pre-init and set a global in Locales namepace

Icons missing

It seems the icons are missing in the repository. The folder themes/default/icons/16x16 is empty but php-webserver.php relies on it.

An awesome effort!

Nice project, I must say. Is this project using any specific java script framework as such? I mean, like for example DoJo Framework?

Also, as much as I could find out, the previous version was MIT licensed, which is really awesome! Is the 2.0 version also MIT??

Thanks & Keep it up!!

Anime.sh

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.