Giter Site home page Giter Site logo

osjs-client's People

Contributors

ajmeese7 avatar andersevenrud avatar bthaase avatar dorosty avatar filips123 avatar fishinghacks avatar frju365 avatar khoaakt avatar lijunay avatar mahdi00021 avatar mahsashadi avatar malte0621 avatar matheusfelipeog avatar msjavan avatar piterden avatar rutorai avatar saiv46 avatar tansiret avatar thisisostad 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

osjs-client's Issues

Some menu fixes

There should be some menu fixes in v3.

Menu should be using a little different color to be separated with top panel. They are currently both black so it it not possible to separate them. This is also problem in other (context) menus. You could also enable color changes in settings app.

menu

You should also reorganize categories in menu, by alphabet or functionally. This could also be changed in settings.

Also, some apps (Welcome, Settings) still don't have icon.

[Bug] Singleton applications won't force relaunch

maybe it's just for autostart. But, the application does not reload when the user clicks on "reload" in the menu option.

Also, when npm run build:dist is completed, the apps that are set to autostart, disappear and fail to reload. Likely similar issue.

Provide a way to select packages for individual users via configuration

Currently, the only way to select what packages a user can use is:

  1. Via metadata.json in a package. Which does not really solve this problem. This is usually only applicable to things that requires admin access.
  2. Via blacklist in the authentication adapters. Which is kind of the opposite of what is suggested here.

So, my thought is just to add a configuration option for this, ex.:

{
  packages: {
    users: {
      username: {
        allow: ['A'],
        deny: ['B']
      }
    }
  }
}

This will allow for doing whitelisting and blacklisting.

Shade/unshade windows

A bunch of windows manager has shading and unshading so it'd be cool so have that too.

Automatic focus of newly created windows

@SpaceboyRoss01 pointed out in os-js/OS.js#671 that windows does not focus automatically and perceived this as a bug.

It's actually by design, though if this is the right choice -- is up for discussion.

So I'm thinking there's three possibilities here... or fourth which is to have it focus by default, but maybe add some kind of focus stealing prevention (or honor ICCCM).

Right now you have to do, ex:

.createWindow()
  .render()
  .focus()

1. Add an option as local to application

Ex:

proc = core.make('osjs/application', {
  options: Object.assign({
    autofocusWindow: Boolean
  }, options)
});

https://github.com/os-js/osjs-client/blob/master/src/application.js#L53

2: Add as an option local to the window

Ex:

createWindow({
  focused: true
})

https://github.com/os-js/osjs-client/blob/master/src/window.js#L47

3: Add as a configuration option globally

Ex:

{
  desktop: {
    autofocusWindow: Boolean
  }
}

https://github.com/os-js/osjs-client/blob/master/src/config.js#L102

[Request] Place login and desktop in separate modules

I'd like to suggest some feature request because I need to customize desktop and login views without modifying client (core) sources.

I see you use hyperapp at https://github.com/os-js/osjs-client/blob/master/src/login.js#L1
my guess it's not a good approach because core files should be separated from applications.

As well as login the desktop solution could be provided as a separate application.

@andersevenrud Hope you can implement the necessary feature or provide motivated rejection.
I could also spend some time to make this changes for you if you don't have a time for it.

Install package support

core.make("osjs/package").install(url) should be a function, it should install the application/package and restart the server and refresh the page.

Desktop icons

Add back the desktop iconview.

  • Add configuration option
  • Create GUI component
  • Implement into Desktop
  • Set up DnD
  • VFS Integration
  • Add configuration option to https://github.com/os-js/osjs-settings-application
  • Figure out DnD bug in File Manager app (possibly GUI component)
  • Shortcut support (including virtual paths)
  • Root contextmenu
  • Gost droppable (see #74)
  • Add support for moving instead of copy from contextmenu
  • Add back color invertion from v2 (where backgrounud color would set the mask of selected entry)
  • Enable desktop iconview by default
  • Add VFS watch event trigger (client only at this moment due to no default enable in server)
  • Grid support

Ref:

[Request] Hide window headers and make un-resizable

In my clocks app, the application is a static window on the screen. The user cannot resize it, move it, hide it, nor close it.

In v3 (in v2 I did a similar thing) I added to my clocks css:

.Window_WorldClocks > .osjs-window-inner > .osjs-window-header {
  display: none !important;
}

I think there ought to be a better way to do this. Give developers the ability to turn off window resizing, and also remove the header if they wish (removing the header can be separate from resizing, so it looks like a splash screen in a sense but the window is movable).

Perhaps in metadata.json file something like:

"resizable" : true/false,
"show-header" : true/false

Multihead Support

From os-js/OS.js#423

Add support to use several browser windows to mimic/implement a multi-head system with several screen monitors. In a first step would be just enough to use window.open() function and postMessage() to comunicate between main and auxiliar windows (or better, move core functionality to a SharedWorker and windows doing requests to it), and in the long term allow to use windows on several independent devices (smartphone, tablet...) to extend the desktop area or show notifications or for an auxiliar tools panel.

[Request] get package from gitlab not just github

currently, I have to manually git clone the git repo and run the npm i command.

Would be nice if the same npm run install:package -- https://github.com/os-js/osjs-example-application.git would work on a gitlab repo as well.

Personalizing notifications

Being able to change the position where the notifications appear as well as possibly the color would be a nice touch.

Application permissions

Applications should have a list of permissions to access specific things, this could be useful for security reasons so the user could stop a specific application from doing malicious things.

Lock screen

I feel like it is better to have a proper lock screen rather than saving the session and logging out.

Add support for client-side VFS watch events

When a filesystem cannot be watched by the server, the client should emit these events.

The server already emits the following event when a filesystem is set to watch (and the adapter can support this):

osjs/vfs:watch:change
{
  source: 'server',
  path: 'mount:/path/to/directory',
  action: 'unlinkDir',
  type: 'remove'
}

This is the event action/type map:

Action Type
add add
addDir add
unlink remove
unlinkDir remove
  • Implement into file dialog
  • Implement into basic application abstraction (pid)
  • Add file watcher
  • Add directory watcher
  • Implement into filemanager

Alpha is not working properly on Windows

Found some bug while debugging alpha version under Windows:

GET / 304 - - 15.697 ms
GET /vendors~osjs.js 304 - - 6.258 ms
GET /osjs.css 304 - - 9.628 ms
Error: EPERM: operation not permitted, rename 'USER\PATH\TO\OS.js\sessions\DFD8yoOxvCNf8KsFBuy4s4gPwPvqAVhk.json.284074389' -> 'USER\PATH\TO\OS.js\sessions\DFD8yoOxvCNf8KsFBuy4s4gPwPvqAVhk.json'
GET /osjs.js 304 - - 12.345 ms
Error: EPERM: operation not permitted, rename 'USER\PATH\TO\OS.js\sessions\DFD8yoOxvCNf8KsFBuy4s4gPwPvqAVhk.json.1103784534' -> 'USER\PATH\TO\OS.js\sessions\DFD8yoOxvCNf8KsFBuy4s4gPwPvqAVhk.json'
POST /login 200 52 - 18.567 ms
GET /f4cfc6708cf6bfc17d4b1e775f594ae2.png 304 - - 11.639 ms
GET /metadata.json 304 - - 4.328 ms
GET /themes/Standard/index.css 304 - - 10.519 ms
GET /favicon.png 200 7625 - 6.907 ms

OS: Windows 10 64bit

The result is the empty screen (without panels and desktop) after login.
@andersevenrud I'll debug it today but it would be nice if you put your assumptions what cause this issue.

Note: I installed OS.js v3 strictly according the manual: https://manual.os-js.org/v3/install/#setup

Add RTL styles

I had this in v2 and should be back-ported. Basically add an attribute to the root element that sets all text CSS styles to RTL.

Multiple workspaces

I think that it'd be cool to have workspaces like what many operating systems and desktop environments have.

Add versioning and migration support for settings

Currently when you change the settings in src/client/index.js of the distro, these will not be transitioned because users might have local settings stored.

By adding support for a revision number these settings could be reset automatically easily (simply load core settings on login instead of the user ones).

Also, adding support for custom migration scripts would be pretty neat so no custom settings would be lost.

  • Add revision config option
  • Implement revision override
  • Add migration script API

Ref: #76

Need the ability to dynamically set the maximum dimensions

Per discussion with Anders:

So if the desktop resizes, they will overflow if viewport becomes smaller.
This is what "maximized" is for. Maybe adding a "maximum maximized size" is an option, but that kind of defeats "maximisation".

Need to be able to set percentages for the dimensions, ex: width: 100% or something to that effect

Add loading screen

Since service providers hooks into the bootstrapping, they can delay the UI and application launching.

Add some sort of loading screen with progress bar.

[Request] Different Window Managers

It would be cool if the window manager was a package that would be installed so if someone wanted a different window manager, they just change some settings and the new window manager is the applied.

Window 'media' is wrong on init and maximize/restore

This might have something to do with restoration, but the data-media state is not correct whenever a window is restored or inited late.

The media attribute is also not updated whenever a window is maximized or restored to previous state.

[Request] Singular applications

In metadata.json I have:

"singular": true,
"autostart": true,

The package/app is not starting up when launching the server. I think there was a setting for turning of resizing of the window, can't seem to find that either, I did see win.setSize() functions though - maybe I looked in the wrong part of the new docs?

Improve core.url() to return proper ws/http/https result

Stumbled on a problem with core.url() trying to create a websocket connection. core.url does not return a valid websocket uri to use with the core.make("osjs/websocket") call. Sample code:

    const uri = this.core.url("/socket");
    const ws = this.core.make("osjs/websocket", 'mySocket', uri);

    ws.on("message", event => {
      console.log("websocket message received... yay!\n", event.data);
    });
    ws.on("open", event => {
      console.log("websocket opened... yay!\n", event);
    });
    ws.on("close", event => {
      console.log("websocket closed... oh no!\n", event);
      entry.destroy();
    });
    ws.on("error", event => {
      console.log("websocket error: ", event);
    });

Search window shows disabled scrollbar

Search window shows disabled scrollbar in Firefox. It is not displayed in Chrome.

search

Also, after search window is closed, previous app will not be returned to focus. Is this normal?

packages.running is undefined

when I use let packages = this.core.make('osjs/packages'); and I try to access packages.running, it returns undefined and this should be fixed.

WebBrowser for OS.js

If OS.js will be opened in NW.js, is there any restrictions of using "webview" tag instead of iframe for implementing browser for third-party web pages?

Window positioning

Recently on the OS.js gitter, I said:

I think that if you set a window's position to a string instead of an object, like position: "center" it would center the window on the screen.

So, this should be implemented. The different position strings should be "center", "top-left", "top-right","top-center", etc.

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.