os-js / OS.js

OS.js - JavaScript Web Desktop Platform
https://www.os-js.org/
Other
6.88k stars 818 forks source link

[Misc] Questions, submissions, discussions and suggestions #49

Closed andersevenrud closed 8 years ago

andersevenrud commented 9 years ago

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

PewienTyp commented 9 years ago

Desktop needs draggable (this will be good http://gridster.net/) icons and menu to make folders and shortcut like normal desktop. Widows need snap to corner function.

andersevenrud commented 9 years ago

@PewienTyp You can enable desktop icon view in Settings. This supports dragging files etc. into it to create shortcuts. Come to think of it I should enable it by default (which I just did in latest commit).

You can snap windows to corners using keyboard shortcuts ALT + ARROW-KEYS, but I can add support for it with movment: issue #68

PewienTyp commented 9 years ago

I enable icon view, but icons not sortable .

andersevenrud commented 9 years ago

@PewienTyp At the moment they are not. I will add this on the TODO list for the future.

MrSchism commented 9 years ago

Could not reproduce the memory leak.

andersevenrud commented 9 years ago

@MrSchism

Could not reproduce the memory leak.

Yeah. This can either be a deep bug in webkit or simply a memory corruption. Fun fact: Cosmic radiation can actually cause bugs like these :P

PewienTyp commented 9 years ago

New Suggestion: workspaces

andersevenrud commented 9 years ago

@PewienTyp Sure. This could be implemented somewhat easily. I-ll add it to the list :)

MrSchism commented 9 years ago

From #100: We can use the slide deck 'dzslides' to create slides (Presentation). We just need a javascript text editor that produces HTML. A good example of this is the blackboard education platform. blackboard

It uses this UI to create HTML formatted written content in a WYSIWYG editor. TinyMCE is LGPL'd, so that could be used until we find a need to use something with a different license.

livep2000 commented 9 years ago

Some one ever made a config file for Nginx? So i don't have to re invent the wheel.

Imre

andersevenrud commented 9 years ago

@livep2000 I don't think anyone has run it on nginx yet, at least nobody has provided a config file for this.,

andersevenrud commented 9 years ago

@livep2000 Latest commit 54edb1488c88847f464b7fa33be40b99029b79c4 now has nginx configuration included.

https://github.com/andersevenrud/OS.js-v2/blob/master/INSTALL.md#php5-on-nginx

livep2000 commented 9 years ago

Wow, youre fast.

Thanks...

Imre

andersevenrud commented 9 years ago

Wow, youre fast.

That's what she said ;) (I have very bad taste in jokes... sorry!)

But yeah, I do a shitload of server/VMs and web stuff at work, so I know my way around :)

khoaakt commented 9 years ago

Add some features: Shortcut(link to program,file,...) in desktop, create Desktop Workspace, show date in bar, Touch Menu must have tab that categorized software :)

andersevenrud commented 9 years ago

@khoaakt

Shortcuts

This can be solved easily. Adding to the list

Desktop Workspace

I already have this in a branch, but not tested yet. Will look more into it (already on list)

show date in bar

It really should be configurable.

Touch Menu

Already there. Check the Settings application :)

andersevenrud commented 9 years ago

@livep2000

I have now moved user installed packages to home:///.packages. Pull the latest commit and do gunt config, then regenerate metadata in settings application.

I have also added a toggle to FileManager so you can show/hide them (by default FileManager will not show them), however File dialogs will! I will add this as a global setting soon :)

livep2000 commented 9 years ago

Super! so a file or folder, starting with a period, will be hidden by default?

Thats a nice solution to prevent the dumb from doing dumb.

Found a simple and logical solution for a custom 'market place'. A subfolder in public, with readonly for nxing.....

Imre

andersevenrud commented 9 years ago

@livep2000

You can read more about dotfiles here: http://en.wikipedia.org/wiki/Hidden_file_and_hidden_directory :)

Found a simple and logical solution for a custom 'market place'. A subfolder in public, with readonly for nxing.....

Not exactly sure what you mean by this.

livep2000 commented 9 years ago

Well, to provide packages publically. Of course in the folder public.

But, then a user can delete, alter or replace them. Beceause i use nginx it has read-write permissions for nginx. By setting that (sub) folder read only (in linux), the api.php cannot change files.

Imre

andersevenrud commented 9 years ago

Well, to provide packages publically.

Like, shared between all users ? I think adding some sort of $PATH global variable is a better way to do it. Just like every OS does... so you can define what paths have "executables".

Because of potential security issues I will not however be adding the public storage path there. Imagine someone installs a public package designed to hijack let's say an application you have to enter your password into. It can potentially steal this kind of information.

Beceause i use nginx it has read-write permissions for nginx.

Setting permissions in via the server configurations is not a good solution since you'd have to write the rules for all the setups. Also you have to rewrite them if you move something around.

By setting that (sub) folder read only (in linux), the api.php cannot change files.

But then again you cannot install applications into here. You'd have to turn on/off the read-only flag which defeats the purpose.

livep2000 commented 9 years ago

grinzz, where still don't understand eachother. The folder with read only rights is not the folder to install in, but the folder to install from.

Since i am placing the (selected) packages in there and it cannot be altered, i'm sure it's not malicious.

Of coarse, i'll have to use root acces. To do so.

Marking that subfolder as read only, will not prevent te api from accessing it. But it throws an error while linux won't let it.

imre

andersevenrud commented 9 years ago

Oh. You were thinking about actually hosting all the apps in a live OS.js environment ?

I have completely other plans for that. More specifically a separate web API running on another host. Hence the name "App Store" or "Marketplace" (think: service).

But nothing is stopping you from doing it this way.

andersevenrud commented 9 years ago

Oh. You were thinking about actually hosting all the apps in a live OS.js environment ?

packages, not apps. Sorry

livep2000 commented 9 years ago

More like a STORAGE for optional site specific apps. Or optional os.js apps

Let's compare it with the extra's that comes with windows. They come uninstalled, but can be if it fits your needs.

I got for example a lot administrative tools, only to be used by a few admins. (protected by user role)

ire

andersevenrud commented 9 years ago

This is why I started on the "App Store". See:

And also:

But, you could do it in the way you just described. Everything is in place for that. That is mostly why I do not understand you. Is there something you need ?!

andersevenrud commented 9 years ago

Commit 6cfb499fad338d234ba83cab34ea338ea89178f5 Introduced application launchers on desktop. Simply drag an application from the menu on to the desktop (with iconview enabled)

rubengc commented 9 years ago

I want suggest base the design of OSjs on Goggle's Material Design

Google's guidelines: https://www.google.com/design/spec/material-design/introduction.html

Some references: http://materializecss.com/ http://material-ui.com/ http://papyros.io/ http://www.jide.com/en/remixos

andersevenrud commented 9 years ago

@rubengc I actually thought of this back in the days, but never actually got any further than that. I really like the example of the window in http://papyros.io/ . Something like that would definately be possible with the current theme system.

I also want to implement some sort of unified desktop that behaves more like tablet/phone experience that Google and Apple has, but I [personally] feel this have to wait until all the core features have been completed (primarily the touch support and compability)

junland commented 9 years ago

@andersevenrud I would look at QNAP's QTS 4.1 and Synologys DSM interfaces, they have demos on there sites if want some good reference points for mobile implementation. Also might want to check out https://github.com/andy928/xpenology the open source version of Synologys DSM. It's the whole OS with the interface so might have to build it and run it on a VM to actually view the web pages or just dig around in the repo to find the web pages. Also one feature I don't see is a login page.

andersevenrud commented 9 years ago

@junland That looks interesting. Thanks for the tip!

Also one feature I don't see is a login page.

You mean for OS.js ?

junland commented 9 years ago

@andersevenrud No problem!

You mean OS.js ?

Yes. :)

andersevenrud commented 9 years ago

@junland There is one actually. One concept in OS.js is the implementation of handlers. The default handler is the "demo" handler which stores user settings in the browser and does not have a login screen. All sessions are basically one user for demonstration and general development purposes.

Another handler is supplied called "example" which does have a login screen and stores user settings in a database (server-side), but is not the default one. It is called "example" simply because I have not had any time to make something proper (I work on this alone), but I assure you this handler works fine.

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

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

andersevenrud commented 9 years ago

@rubengc I have started on a draft for the Materials implementation. It actually looks kinda good. WIll get back to you tomorrow when I have a screenshot ;)

rubengc commented 9 years ago

@andersevenrud haha ok I can do all the design so you can dedicate your time on OSjs core

andersevenrud commented 9 years ago

@rubengc That might be best :) At least I got to do some experimentation. I also got to do some work on the new theme implementation (FYI. Just making better lessc stylesheets, not any changes in DOM).

Screenshot

junland commented 9 years ago

@andersevenrud Ahhhh okay, I'll maybe try to get that started or something.

Also another thing that I was thinking was a terminal. One terminal for the actual desktop and another for the actual server that it's running on. It prolly won't be implement right now but I would like this to be a potential app down the road.

andersevenrud commented 9 years ago

@junland Doing something with https://github.com/chjj/tty.js would be interesting since it has full vt100 support.

junland commented 9 years ago

@andersevenrud That would be interesting. I'll look into that.

junland commented 9 years ago

@andersevenrud I was looking around Github (Again) and found this project: https://github.com/symbiose/symbiose They have a working terminal (Seems a bit buggy, but looks promising), dock, brackets, software center, and some other applications. Don't know if we want to fork some of the code (It's under MIT licenses so I think were okay.).

andersevenrud commented 9 years ago

@junland I am very familiar with that project and have actually done some contributions :) The problem Symbiose is that it's overy-complex and has way to many points of failure (if you look at the latest issues you can see there is some fundamental problems there). Other than that I really like it.

The patters, filetree, APIs, etc. are completely different... so that means doing some rewrites to the apps, to be able to use Dialogs, Filesystems, GUI and all that. It uses jQuery to actually build the DOM, but it also depends on lot of other stuff that would require separation from the core.

Maybe later I can do a compability layer or something for stuff exactly like this (just like with Firefox Marketplace stuff).

I would really love to be able to pull the apps from there, but I don't have the time (would save me massive amounts of time... and make beta come way faster). Maybe you have time to look at it ?

I have actually got a working Terminal here that I've been experimenting with. Maybe I should clean it up and add it?

junland commented 9 years ago

@andersevenrud Yea, I looked into it more and it's all over the place. But they have a pretty well featured product.

I would really love to be able to pull the apps from there, but I don't have the time (would save me massive amounts of time... and make beta come way faster). Maybe you have time to look at it ?

Yea I'm looking through it now to see if I can find that, at least we can pull that dock from there.

I have actually got a working Terminal here that I've been experimenting with. Maybe I should clean it up and add it?

If you want, I'm more concerned that if we add it, that may introduce more bugs that we would have to spend more time on. But that's up to you. :)

andersevenrud commented 9 years ago

Yea I'm looking through it now to see if I can find that, at least we can pull that dock from there.

It would be nice to separate one spesific application, then try to figure out the dependency tree of it (like, which namespaces and libraries are used). I would like to see that. One can immediately see what kind of job lies ahead.

If you want, I'm more concerned that if we add it, that may introduce more bugs that we would have to spend more time on. But that's up to you. :)

There would be no new additions to the core, so bugs will not happen. Applications are isolated entirely from the rest of OS.js... so it's considered "safe" to make adjustments and additions there :)

junland commented 9 years ago

It would be nice to separate one spesific application, then try to figure out the dependency tree of it (like, which namespaces and libraries are used). I would like to see that. One can immediately see what kind of job lies ahead.

Or some really good documentation lol

There would be no new additions to the core, so bugs will not happen. Applications are isolated entirely from the rest of OS.js... so it's considered "safe" to make adjustments and additions there :)

Ah, I see :)

andersevenrud commented 9 years ago

@junland

Or some really good documentation lol

There is no documentation, except for some of the basic setup and API usage AFAIK. I have not seen any fundamentals or stuff like that (github wiki). But if you find something, let me know.

junland commented 9 years ago

@andersevenrud Will do.... Speaking of API if I wanted to add more functions to the API what tools do you use to write that? Do you use a API framework?

andersevenrud commented 9 years ago

@junland You just write a module and add it to src/conf/200-compile.json (then rebuild). Example: https://gist.github.com/andersevenrud/c2e84548a3c0af8c7150

junland commented 9 years ago

@andersevenrud Nice!

junland commented 9 years ago

@andersevenrud You may be able to answer this but I've been going through some of the packages and I'm just trying to wrap my brain around building apps from the ground up. Is there another way to build / write apps? Also I can do the logic, but design wise it seems cumber sum when you don't have a preview of the Windows already available to you. I just would like develop apps faster and effectively.

On another note, since we can use Broadway do you know if the server uses the GPU to render GTK apps or is just rendered client side?

andersevenrud commented 9 years ago

@junland

Is there another way to build / write apps?

Yes, there is :) http://os.js.org/doc/tutorials/create-application.html

Also I can do the logic, but design wise it seems cumber sum when you don't have a preview of the Windows already available to you.

I have an Interface Designer in the works (almost ready) :)

I usually just open my app, quit and save session, then reload page (F5). Just make sure that sounds are disabled or I will go insane.

I realise this can be a bit hard at the moment... the thing is, I write code for an hour or two, and then test it in the browser........ so getting this IDE/Interface Designer going will be good for newcomers (and those not as extreme as me).

On another note, since we can use Broadway do you know if the server uses the GPU to render GTK apps or is just rendered client side?

Broadway is running completely separate from OS.js. It works almost like VNC (Remote Desktop). If the X server is running on a physical monitor it will also use a bit of GPU power. The nice thing about X is that you don't need to run it on a GPU or monitor :)