Giter Club home page Giter Club logo

daedalos's Introduction

๐ŸŒŒ daedalOS ๐ŸŒŒ

Desktop environment in the browser

Feature Overview

System ๐Ÿง 

  • File Explorer
    • Back, Forward, Recent locations, Up one level, Address bar, Search
  • Drag & Drop File Support (internal & external)
    • Loading progress dialog
  • ZIP (write support), ZIP/ISO read support, 7Z/GZ/RAR/TAR/etc. extract support
  • Writes to IndexedDb
  • Group selection/manipulation & drag to sort/arrange
  • Dynamic and auto cached icons for music, images, video & emulator states
  • Context Menus
    • Cut, Copy, Create shortcut, Delete, Rename
    • Add file(s), Map directory
    • Open with options/dialog, Open file/folder location, Open in new window, Open Terminal here
    • Download, Add to archive, Extract here, Set as wallpaper, Convert audio/video/photo/spreadsheets, Properties (w/Details)
    • Sort by, New Folder, New Text Document
    • Screen Capture
  • Keyboard Shortcuts
    • CTRL+C, CTRL+V, CTRL+X, CTRL+A, Delete
    • F2, F5, Backspace, Arrows, Enter
    • SHIFT+CTRL+R, SHIFT+F10, SHIFT+F12
    • In Fullscreen: Windows Key, Windows Key + R
  • File information tooltips
  • Allow sorting by name, size, type or date
    • Persists icon position/sort order

Windows

Start Menu

  • Expandable Sidebar
    • Apps list, Documents/Pictures/Videos shortcuts, Power (clears session)
  • Spotlight visual effect
  • Folder support
  • Keyboard shortcut opens with SHIFT+ESC
    • Or Windows Key when in fullscreen

Taskbar

  • Peek hover preview of windows
  • Focused window indicator
  • Search menu (w/Recent files)

Clock

Background

URL

  • Query parameter loading
    • Examples:
      • /?url=/CREDITS.md
      • /?app=Browser

Apps ๐Ÿงช

BoxedWine (.exe, .zip)

  • Runs 16/32-bit Windows applications

Browser (.htm, .html)

  • Loads websites (w/CORS support)
  • Bookmark bar
  • Favicon support
  • Back/Forward & Reload
  • Google search via Address bar
  • IPFS protocol support
  • chrome://dino game
  • Console, Elements, Network, Resources, Sources, DOM
  • Activate from Start Menu or SHIFT+F12

EmulatorJS (.32x, .a26, .a52, .a78, .gb, .gba, .gbc, .gen, .gg, .j64, .jag, .lnx, .n64, .nds, .nes, .ngc, .ngp, .pce, .sfc, .smc, .smd, .sms, .v64, .vb, .vboy, .ws, .wsc, .z64)

  • Plays console game roms
  • Internet Relay Chat Client
  • Connects over WebSockets

js-dos (.exe, .jsdos, .zip)

  • DOS emulator
  • Automatic save states on close
    • /Users/Public/Snapshots
  • Automatic window resize

Marked (.md)

  • Markdown Viewer

Messenger

  • Encrypted direct messaging client
  • Utilizes Nostr Protocol (NIP-04)
  • Automatic public/private key creation
  • Code/text editor
  • Supports all file types
  • Save files via CTRL+S
  • Line count, cursor position, language id
  • Prettier formatting
    • json, js/ts, css/sass/less, html, markdown

Paint (.bmp, .gif, .ico, .jpg, .png, .tiff, .webp,)

  • Create & edit images

PDF (.pdf)

  • Render/Print PDF's
  • Page current/count & Zoom

Photos

Ruffle (.swf, .spl)

  • Flash Player emulator
  • Creates 512x512 images using artificial intelligence
  • Runs locally using WebSD

TinyMCE (.rtf, .whtml)

  • Read & WYSIWYG modes
  • File save support

Virtual x86 (.img, .iso)

  • x86 emulator
  • Automatic save states on close
    • /Users/Public/Snapshots
  • Automatic window resize
  • Code/text editor
  • Supports all file types

Webamp (.mp3, .wsz)

Games ๐ŸŽฎ

  • Minecraft Classic compatible client
  • Block breaker arcade game like Arkanoid
  • Reverse engineering of 3D Pinball from Windows
  • Port of the classic first-person shooter

Try It ๐Ÿš€

Requirements
Development
yarn install
yarn build:prebuild
yarn dev
Production
yarn install
yarn build
yarn serve
Docker
docker build -t daedalos .
docker run -dp 3000:3000 --rm --name daedalos daedalos
Notes
  • If during yarn install you receive the error digital envelope routines::unsupported, you need to set NODE_OPTIONS to --openssl-legacy-provider (1, 2, 3)

daedalos's People

Contributors

dustinbrett 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

daedalos's Issues

Implement VS Code Web app here

VS code is already usable online (vscode.dev). It's good to see the modified version optimised for windowed mode in this OS.

[Feature Req] PWA version of daedalOS

This is not a bug, just a feature request. It would be cool if you could add the site to your home screen as a PWA app, so you could get rid of the browser bar, which especially helps if youโ€™re like me and using this on iOS. I donโ€™t know how hard this would be to implement, but if possible, it would be cool to have.

Icon grid shifts after long text is untruncated

If you select a truncated icon which makes it untruncate, if the text goes beyond a certain amount of lines where the grid cell height is increased, then it shifts the entire grid and moves the grid in a way that doesnt revert after the text truncates again

Widget Support

Hey Dustin, I was just wondering if you have considered adding widget support to your site. I think that would be an awesome addition!

Deleted index files aren't removed from sessions

If I decided to delete a blog post. People who had seen the file listed before would possibly see it again with the way I have things now. I need it so that if I delete a file and update the website, anyone revisiting would also no longer see the file, because it would indeed not work for anyone who sees it, unless they'd written to it and it was stored in their IndexedDb.

Clicking between "x" and "-" sometimes maximizes window

There is also dead space between the โŒ โž– and โž• icons. I know this is something you took from macOS that you liked, but the amount of precision required to get the desired outcome is not ideal.

Not that this is being distributed to millions of people or anything! ๐Ÿ˜›

Persist state on web3

This is a really cool project and it would be nice to be able to "login" to such a webtop from anywhere.

I imagine that on exit the IndexedDb contents could be synced to Sia SkyNet, StorJ, Filecoin or others (encrypted) and that one can retrieve their private state using a login screen.

runtime error about ./config.json

I keep getting this error from ArchLinux
[edwards@graphics daedalOS]$ uname -a
Linux graphics 5.16.2-arch1-1 #1 SMP PREEMPT Thu, 20 Jan 2022 16:18:29 +0000 x86_64 GNU/Linux
[edwards@graphics daedalOS]$

[edwards@graphics daedalOS]$ yarn dev
yarn run v1.22.17
$ next dev
ready - started server on 0.0.0.0:3000, url: http://localhost:3000
info - Disabled SWC as replacement for Babel because of custom Babel configuration ".babelrc" https://nextjs.org/docs/messages/swc-disabled
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './package.json' is not defined by "exports" in /home/edwards/git/daedalOS/node_modules/react/package.json
at new NodeError (node:internal/errors:371:5)
at throwExportsNotFound (node:internal/modules/esm/resolve:429:9)
at packageExportsResolve (node:internal/modules/esm/resolve:683:3)
at resolveExports (node:internal/modules/cjs/loader:482:36)
at Function.Module._findPath (node:internal/modules/cjs/loader:522:31)
at Function.Module._resolveFilename (node:internal/modules/cjs/loader:919:27)
at Function.mod._resolveFilename (/home/edwards/git/daedalOS/node_modules/next/dist/build/webpack/require-hook.js:179:28)
at Function.resolve (node:internal/modules/cjs/helpers:108:19)
at getPackagePath (/home/edwards/git/daedalOS/node_modules/next/dist/build/webpack-config.js:548:41)
at Object.getBaseWebpackConfig [as default] (/home/edwards/git/daedalOS/node_modules/next/dist/build/webpack-config.js:564:9) {
code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
[edwards@graphics daedalOS]$

JS-DOS does not detect mouse clicks

keyboard input gets detected, but it seems the mouse input does not seem to detect. When I am comparing code with Dos.Zone, it looks like the emulator-mouse overlay fills up the whole screen. Use any mouse input game and you can replicate the issue. I was actually working on a right click menu when you already did it lol.

This does not seem to be the case in your setup. Possibly styling the CSS will fix this.

There are multiple elements and it seems that the focusClosestFocusableElementFromRef might be not routing the click to the right reference element? which needs to be the mouse overlay.

Im thinking its related to how you setup dynamic stretching of the window.

Can only have one anonymous define call per script file

Hope it helps:

  1. Opened Monaco editor, fiddled around with a json file.
  2. Closed Editor.
  3. No program will launch
Uncaught (in promise) Error: Can only have one anonymous define call per script file
    at s.enqueueDefineAnonymousModule (/Program%20Files/MonacoEditor/vs/loader.js:8)
    at _ (/Program%20Files/MonacoEditor/vs/loader.js:9)
    at eval (eval at <anonymous> (/Program%20Files/js-dos/js-dos.js:1), <anonymous>:3:1)
    at eval (<anonymous>)
    at /Program%20Files/js-dos/js-dos.js:1
    at f (/Program%20Files/js-dos/js-dos.js:1)
    at Generator.c._invoke (/Program%20Files/js-dos/js-dos.js:1)
    at Generator.e.<computed> [as next] (/Program%20Files/js-dos/js-dos.js:1)
    at u (/Program%20Files/js-dos/js-dos.js:1)
    at o (/Program%20Files/js-dos/js-dos.js:1)

image

Screen reader accessibility

I'm totally blind and use NVDA.

  • Sometimes, I lose focus when opening things (just see the menus and an unlabelled image).
  • I can't read the terminal at all. For bonus points, mark it as an ARIA live region for automatic readout.
    • On that note, strategic ARIA usage could make the experience feel a lot more desktop-like.

Git cloning into a mapped directory fails

Seems like write and possibly large reads from mapped drives are having issues. If I open a mapped drive in terminal and run git, the folder is made but files are not written.

[Documentation / Overview] Please consider providing an overview in the README as table

Hello there Dustin,

If you have some spare time at some coming weekend, would it be possible to add a table overview
in the main README, that briefly mentions / points at available functionality?

Something where people can look at a HTML table and quickly see, "ok, two PDF readers are available,
let's see, word processor, games" etc... - something for people to quickly see what is available and
possible.

You currently provide a semi-overview with some details, but I think a short, succint table in addition
to that would be super-helpful, so that people can see what is possible on a first glance. Anyway, please
feel free to ignore / disregard this issue here at any moment in time!

what is the roadmap?

hello,

first of all great work!

i am just curious if this project will be maintained and grow in future?
if it will i had some plans where i could use this in my projects!

keep doing the great work!

Typing in console from mobile device is causing double characters

This does not seem to be the same issue as #4 but might be related because of the feature area. I opened the console in Edge on my Duo. This was using SwiftKey as my keyboard. Typing "ls" at the prompt resulted in "LLSS".

The initial capital "L" makes some sense as SwiftKey is just using its default casing for a new line of text. There might be a way to hint to the keyboard to not provide an uppercase. I pressed enter thinking that maybe it was an echo problem, but it complained about not finding "LLSS."

Starting again, I typed L. Then I had to press backspace twice to get it to delete the second one. I typed S, and the default casing was still capitalized. I pressed backspace twice again until the prompt read "LS". Then I pressed enter and it showed the directory listing.

Edit : These details aren't 100% correct. The capital "s" seemed to happen when I deleted the second of the preceding double "l", otherwise it produced "LLss".

Coding error

Module not found: Can't resolve 'components/system/Desktop/Wallpapers/vantaWaves'

1 | import vantaWaves from "components/system/Desktop/Wallpapers/vantaWaves";
2 |
3 | const wallpaper = vantaWaves({
4 | color: 0x192b34,

Simple fix, I just changed wallpaper from the git clone to Wallpaper. Case sensitive.

Terrible perfomance in DOOM on FF

Hi. I am author of js-dos project, I am very glad too see that your amazing site is using js-dos. However in my environment DOOM works very slow in Firefox (chrome is totally fine). Can you confirm?

This problem only exists on your site, because on dos.zone performances are good both in Chrome in FF.

Default 'Marked' page

When the user opens the Marked app from the start menu, they are greeted with a blank screen that can be confusing. I recommend having it open some document by default, like an explanation of what to use the app for, a guide on how to use the tool with a file selection button, or your credits.md document.

Jest testing is broken

Since moving to Next.js 12 it seems like my Jest unit tests are not working. I think I know why and it involved Web Workers. But on that note I am considering redoing testing in general, to refocus Jest on units and add Playwright to do the kinds of things that would involve testing Web Worker stuff.

Launch default URL on page load

Hi,

I just want to preface that this site is a masterpiece.

I was trying to go about launching a program (i.e. Doom.url) on page load.

I noticed that the IconEntry component has a onDoubleClick function that seems to trigger this, but I feel that manually triggering this function would be bad practice. Do you have any suggestions based on how you would approach this feature?

Thanks!

Drag image is "unknown" for YouTube icons

The YouTube icons use youtube url images and the way I make the drag image, this wont work as it needs to load it in an iframe which CORS prevents. I need to switch the drag images for YouTube shortcuts to just be a generic YouTube icon.

Icon cache is never invalidated

Once an icon is cached, based on path, it never changes. This needs to be fixed and I consider it a bug even though I just never coded it.

performance

items on the start menu and other interface elements are slow to load
I am using an old laptop but would expect it to be quicker as it handles most things fine

laptop is dell latitude e7440 with coer i7-4600U
using firefox as a web browser

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.