mirror of
https://github.com/felixrieseberg/windows95.git
synced 2026-05-14 10:31:58 +00:00
Compare commits
26 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b794954da4 | ||
|
|
18a73c45a0 | ||
|
|
b83914060f | ||
|
|
93955564d9 | ||
|
|
d31920aaf4 | ||
|
|
cdfe47d92b | ||
|
|
b8259784e7 | ||
|
|
b70b9fabd5 | ||
|
|
f2c1fc4142 | ||
|
|
aeba364a7a | ||
|
|
a34ce54b56 | ||
|
|
e1477bfc05 | ||
|
|
71d6f16318 | ||
|
|
4bdbff6a4b | ||
|
|
e062548c81 | ||
|
|
609668c581 | ||
|
|
bec9577409 | ||
|
|
dd9ff5a319 | ||
|
|
f5125219fd | ||
|
|
b4fd81b364 | ||
|
|
e62a8cbed6 | ||
|
|
2038ce9c31 | ||
|
|
6c12063353 | ||
|
|
91783e7d26 | ||
|
|
9f8040bb22 | ||
|
|
10d2e37e9d |
59
CREDITS.md
Normal file
59
CREDITS.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# windows95 Credits
|
||||
|
||||
This app was made possible by three major engineering efforts:
|
||||
|
||||
* [v86 by Fabian Hemmer](https://github.com/copy/v86)
|
||||
* [Electron by the Electron Maintainers](https://electronjs.org)
|
||||
* Windows 95 by Microsoft
|
||||
|
||||
# v86 License and Copyright Notice
|
||||
|
||||
Copyright (c) 2012-2018, Fabian Hemmer
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are those
|
||||
of the authors and should not be interpreted as representing official policies,
|
||||
either expressed or implied, of the FreeBSD Project.
|
||||
|
||||
# Electron License and Copyright Notice
|
||||
|
||||
Copyright (c) 2013-2018 GitHub Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
45
Dockerfile
Normal file
45
Dockerfile
Normal file
@@ -0,0 +1,45 @@
|
||||
# DESCRIPTION: Run Windows 95 in a container
|
||||
# AUTHOR: Paul DeCarlo <toolboc@gmail.com>
|
||||
#
|
||||
# Made possible through prior art by:
|
||||
# copy (v86 - x86 virtualization in JavaScript)
|
||||
# felixrieseberg (Windows95 running in electron)
|
||||
# Microsoft (Windows 95)
|
||||
#
|
||||
# ***Docker Run Command***
|
||||
#
|
||||
# docker run -it \
|
||||
# -v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket
|
||||
# -e DISPLAY=unix$DISPLAY \ # pass the display
|
||||
# --device /dev/snd \ # sound
|
||||
# --name windows95 \
|
||||
# toolboc/windows95
|
||||
#
|
||||
# ***TroubleShooting***
|
||||
# If you receive Gtk-WARNING **: cannot open display: unix:0
|
||||
# Run:
|
||||
# xhost +
|
||||
#
|
||||
|
||||
FROM node:10.9-stretch
|
||||
|
||||
LABEL maintainer "Paul DeCarlo <toolboc@gmail.com>"
|
||||
|
||||
RUN apt update && apt install -y \
|
||||
libgtk-3-0 \
|
||||
libcanberra-gtk3-module \
|
||||
libx11-xcb-dev \
|
||||
libgconf2-dev \
|
||||
libnss3 \
|
||||
libasound2 \
|
||||
libxtst-dev \
|
||||
libxss1 \
|
||||
git \
|
||||
--no-install-recommends && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
COPY . .
|
||||
|
||||
RUN npm install
|
||||
|
||||
ENTRYPOINT [ "npm", "start"]
|
||||
24
HELP.md
Normal file
24
HELP.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Help & Commonly Asked Questions
|
||||
|
||||
## MS-DOS seems to brick the screen
|
||||
Hit `Alt + Enter` to make the command screen "full screen" (as far as Windows 95 is
|
||||
concerned). This should restore the display from the garbled mess you see and allow
|
||||
you to access the command prompt. Press Alt-Enter again to leave full screen and go
|
||||
back to a window mode. (Thanks to @DisplacedGamer for that wisdom)
|
||||
|
||||
## Windows 95 is stuck in a bad state
|
||||
|
||||
Restart the application and click on the "Reset machine & delete state" button.
|
||||
You can find it in the lower left of the screen. Then, hit the "Start Windows 95"
|
||||
button to start your virtual machine again.
|
||||
|
||||
## I want to install additional apps or games
|
||||
|
||||
If you are running Windows 10, macOS, or Linux, you can probably "mount" the
|
||||
virtual hard drive used by `windows95` to add files. Hit the "Show Disk Image"
|
||||
button in the lower right of the app, which will take you to the disk image.
|
||||
On both Windows 10 and macOS, double-click the disk image to open it.
|
||||
|
||||
On Linux, search the Internet for instructions on how to mount an `img` disk
|
||||
image on your distribution.
|
||||
|
||||
33
LICENSE.md
33
LICENSE.md
@@ -4,4 +4,35 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
____
|
||||
|
||||
v86 Source Code
|
||||
|
||||
Copyright (c) 2012-2018, Fabian Hemmer
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are those
|
||||
of the authors and should not be interpreted as representing official policies,
|
||||
either expressed or implied, of the FreeBSD Project.
|
||||
|
||||
26
README.md
26
README.md
@@ -1,13 +1,19 @@
|
||||
# windows95
|
||||
|
||||
This is Windows 95, running in an Electron app. Yes, it's the full thing. I'm sorry.
|
||||
This is Windows 95, running in an [Electron](https://electronjs.org/) app. Yes, it's the full thing. I'm sorry.
|
||||
|
||||
## 💿⏬ [Download it here](https://github.com/felixrieseberg/windows95/releases).
|
||||
Interested in Electron? Join as at [CovalenceConf](http://covalenceconf.com) in San Francisco!
|
||||
|
||||
## Downloads
|
||||
| | Windows | macOS | Linux |
|
||||
|---------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| Standalone Download | 📦[Standalone, 32-bit](https://github.com/felixrieseberg/windows95/releases/download/v1.3.0/windows95-win32-1.3.0-standalone-ia32.zip) <br /> 📦[Standalone, 64-bit](https://github.com/felixrieseberg/windows95/releases/download/v1.3.0/windows95-win32-1.3.0-standalone-x64.zip) | 📦[Standalone](https://github.com/felixrieseberg/windows95/releases/download/v1.3.0/windows95-macos-1.3.0.zip) | |
|
||||
| Installer | 💽[Setup, 64-bit](https://github.com/felixrieseberg/windows95/releases/download/v1.3.0/windows95-win32-1.3.0-setup-x64.exe) <br /> 💽[Setup, 32-bit](https://github.com/felixrieseberg/windows95/releases/download/v1.3.0/windows95-win32-1.3.0-setup-ia32.exe) | | 💽[deb, 64-bit](https://github.com/felixrieseberg/windows95/releases/download/v1.3.0/windows95-linux_1.3.0_amd64.deb) <br /> 💽[rpm, 64-bit](https://github.com/felixrieseberg/windows95/releases/download/v1.3.0/windows95-linux-1.3.0.x86_64.rpm) |
|
||||
|
||||

|
||||
|
||||
## Does it work?
|
||||
Yes! Quite well, actually.
|
||||
Yes! Quite well, actually - on macOS, Windows, and Linux.
|
||||
|
||||
## Should this have been a native app?
|
||||
Absolutely.
|
||||
@@ -18,7 +24,7 @@ You'll likely be better off with an actual virtualization app, but the short ans
|
||||
640x480 @ 256 colors before starting DOS games - just like in the good ol' days.
|
||||
|
||||
## How's the code?
|
||||
This only works well by accident and was mostly a joke. The code quality is accordingly.
|
||||
This only works well by accident and was mostly a joke. The code quality is accordingly. Thus it should not be used for anything other than personal amusement.
|
||||
|
||||
## Credits
|
||||
|
||||
@@ -26,18 +32,22 @@ This only works well by accident and was mostly a joke. The code quality is acco
|
||||
|
||||
## Contributing
|
||||
|
||||
Before you can run this from source, you'll need the disk and state images. They're not part of the repo,
|
||||
but [you can download them here](https://mega.nz/#!euxygQBT!i03vtE4kYTgrZ1rjZa1gT2F8hvhcwIAgGBsY4ECjs0w).
|
||||
Before you can run this from source, you'll need the disk image. It's not part of the
|
||||
repository, but you can grab it using the `Show Disk Image` button from the packaged
|
||||
release, which does include the disk image.
|
||||
|
||||
Unpack the `images` folder into the `src/renderer` folder, creating this layout:
|
||||
Unpack the `images` folder into the `src` folder, creating this layout:
|
||||
|
||||
```
|
||||
./src/images/default-state.bin
|
||||
./src/images/windows95.img
|
||||
```
|
||||
|
||||
Once you've done so, run `npm install` and `npm start` to run your local build.
|
||||
|
||||
## Other Questions
|
||||
|
||||
* [Running in Docker](./docs/docker-instructions.md)
|
||||
|
||||
## License
|
||||
|
||||
This project is provided for educational purposes only. It is not affiliated with and has
|
||||
|
||||
33
docs/docker-instructions.md
Normal file
33
docs/docker-instructions.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Running windows95 in Docker
|
||||
|
||||
## Display using a volume mount of the host X11 Unix Socket (Linux Only):
|
||||
|
||||
**Requirements:**
|
||||
* Linux OS with a running X-Server Display
|
||||
* [Docker](http://docker.io)
|
||||
|
||||
docker run -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY --device /dev/snd --name windows95 toolboc/windows95
|
||||
|
||||
|
||||
Note: You may need to run `xhost +` on your system to allow connections to the X server running on the host.
|
||||
|
||||
## Display using Xming X11 Server over tcp Socket (Windows and beyond):
|
||||
|
||||
**Requirements:**
|
||||
* [Xming](https://sourceforge.net/projects/xming/)
|
||||
* [Docker](http://docker.io)
|
||||
|
||||
1. Start the Xming X11 Server
|
||||
2. Run the command below:
|
||||
|
||||
docker run -e DISPLAY=host.docker.internal:0 --name windows95 toolboc/windows95
|
||||
|
||||
## Display using the host XQuartz Server (MacOS Only):
|
||||
**Requirements:**
|
||||
* [XQuartz](https://www.xquartz.org/)
|
||||
* [Docker](http://docker.io)
|
||||
|
||||
1. Start XQuartz ,go to "Preferences -> Security " ,and check the box "allow connections from network clients"
|
||||
2. restart XQuartz
|
||||
3. In the terminal ,run "xhost +"
|
||||
4. run "docker run -it -e DISPLAY=host.docker.internal:1 toolboc/windows95"
|
||||
@@ -44,6 +44,10 @@ module.exports = {
|
||||
{
|
||||
name: '@electron-forge/maker-rpm',
|
||||
platforms: ['linux']
|
||||
},
|
||||
{
|
||||
name: '@electron-forge/maker-flatpak',
|
||||
platforms: ['linux']
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
1448
package-lock.json
generated
1448
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
15
package.json
15
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "windows95",
|
||||
"productName": "windows95",
|
||||
"version": "1.2.0",
|
||||
"version": "1.4.0",
|
||||
"description": "Windows 95, in an app. I'm sorry.",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
@@ -34,12 +34,13 @@
|
||||
"update-electron-app": "^1.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@electron-forge/cli": "^6.0.0-beta.22",
|
||||
"@electron-forge/maker-deb": "^6.0.0-beta.22",
|
||||
"@electron-forge/maker-rpm": "^6.0.0-beta.22",
|
||||
"@electron-forge/maker-squirrel": "^6.0.0-beta.22",
|
||||
"@electron-forge/maker-zip": "^6.0.0-beta.22",
|
||||
"electron": "3.0.0-beta.6",
|
||||
"@electron-forge/cli": "^6.0.0-beta.30",
|
||||
"@electron-forge/maker-deb": "^6.0.0-beta.30",
|
||||
"@electron-forge/maker-flatpak": "^6.0.0-beta.30",
|
||||
"@electron-forge/maker-rpm": "^6.0.0-beta.30",
|
||||
"@electron-forge/maker-squirrel": "^6.0.0-beta.30",
|
||||
"@electron-forge/maker-zip": "^6.0.0-beta.30",
|
||||
"electron": "3.0.13",
|
||||
"standard": "^11.0.1"
|
||||
}
|
||||
}
|
||||
|
||||
39
src/menu.js
39
src/menu.js
@@ -1,6 +1,13 @@
|
||||
const { app, shell, Menu, BrowserWindow } = require('electron')
|
||||
const defaultMenu = require('electron-default-menu')
|
||||
|
||||
const LINKS = {
|
||||
homepage: 'https://www.felixrieseberg.com',
|
||||
repo: 'https://github.com/felixrieseberg/windows95',
|
||||
credits: 'https://github.com/felixrieseberg/windows95/blob/master/CREDITS.md',
|
||||
help: 'https://github.com/felixrieseberg/windows95/blob/master/HELP.md'
|
||||
}
|
||||
|
||||
function send (cmd) {
|
||||
const windows = BrowserWindow.getAllWindows()
|
||||
|
||||
@@ -18,6 +25,38 @@ async function createMenu () {
|
||||
})
|
||||
}
|
||||
|
||||
if (item.label === 'Help') {
|
||||
item.submenu = [
|
||||
{
|
||||
label: 'Author',
|
||||
click() {
|
||||
shell.openExternal(LINKS.homepage)
|
||||
},
|
||||
},
|
||||
{
|
||||
label: 'Learn More',
|
||||
click() {
|
||||
shell.openExternal(LINKS.repo)
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'separator'
|
||||
},
|
||||
{
|
||||
label: 'Help',
|
||||
click() {
|
||||
shell.openExternal(LINKS.help)
|
||||
}
|
||||
},
|
||||
{
|
||||
label: 'Credits',
|
||||
click() {
|
||||
shell.openExternal(LINKS.credits)
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
return item
|
||||
})
|
||||
.filter((item) => {
|
||||
|
||||
26
src/renderer/lib/LICENSE.md
Normal file
26
src/renderer/lib/LICENSE.md
Normal file
@@ -0,0 +1,26 @@
|
||||
Copyright (c) 2012-2018, Fabian Hemmer
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
The views and conclusions contained in the software and documentation are those
|
||||
of the authors and should not be interpreted as representing official policies,
|
||||
either expressed or implied, of the FreeBSD Project.
|
||||
Reference in New Issue
Block a user