RigdonOS is an in-browser desktop environment made using React and Node.js. It started as a portfolio site, but my goal is to turn it into something usable that you could run on a server so get a web-based GUI with a small footprint.
This repo contains a docker build script that you can use to spin up a local instance and play around with the different features. There is a working terminal emulator that interacts with the server that it is being hosted on as well as a file manager that you can use to explore the filesystem of the host. There is no support for doing anything besides viewing the file structure through the file manager, but those features are in the works. Besides that, there are a few demo apps to play around with the window management system.
The desktop environment is available to play around with at https://billyrigdon.dev. You can also build locally using the build scripts contained in this repo. I recommend running it in a docker container using the docker build file until this app is production ready.
At a minimum, you will need to have npm and node.js installed on your machine. It is recommended install Docker as well and run the app in a container.
The following will install all 3 on Manjaro and configure docker, but you can use the package manager and distro of your choice to do the same.
sudo pacman -S npm nodejs docker
sudo systemctl enable --now docker.service
sudo usermod -aG docker $USER
git clone https://github.com/billyrigdon/RigdonOS.git
cd RigdonOS
mv ./backend/example.env ./backend/.env
Once the application is built and running, you can open a web browser and navigate to the web GUI using your server address and port number specified in the previous step.
If building locally with the default port, the address would be http://127.0.0.1:1313
cd scripts
./docker_build.sh
cd scripts
./local_install.sh
cd ./backend
npm install
cd ../client
npm install
Note: When installing the client dependencies, you will likely get some vulnerability warnings. The vulnerabilites are with the React build scripts and can be safely ignored as they aren't contained in the final build.
In the client directory, run the React build tool to create the minified production build of the frontend.
npm run build
mv ./build ../backend/build
cd ..
sudo mkdir /opt/RigdonOS
sudo cp -r backend /opt/RigdonOS
sudo cp scripts/RigdonOS.service /etc/systemd/system/RigdonOS.servce
sudo systemctl enable --now RigdonOS.service
Note: The service file uses port 1313. If you're using a different port, edit the file before moving.
cd scripts
./local_uninstall.sh
If you really want to do the typing yourself, disable the systemd service, remove the service file, and remove the project from /opt
sudo systemctl disable --now RigdonOS.service
sudo rm /etc/systemd/system/RigdonOS.service
sudo rm -r /opt/RigdonOS