You are browsing as a guest. Sign up (or log in) to start making projects!

JishOS

  • 6 Devlogs
  • 28 Total hours

This is my very own OS that can be run in the web!

Ship #1

After a lot of late nights, I finally finished **JishOS v1**!

JishOS is a browser-based desktop environment built with React. It has draggable and resizable windows, desktop widgets, a browser, notes app, and a Python IDE powered by Pyodide, so you can write and run Python entirely in your browser—no backend required.

Some highlights:

* Custom window manager with dragging, resizing and focus management
* Monaco Editor for the Python IDE
* Interactive terminal
* `pip install` support for Pyodide packages
* Persistent package installation using LocalStorage
* Built-in Matplotlib support with a Plot Viewer
* Welcome app with a quick start guide
* Clock and calendar widgets

The most challenging part was definitely integrating Matplotlib. I wanted plots to behave like a desktop application instead of just appearing at the bottom of the page, so I ended up embedding the WebAgg plot viewer inside its own JishOS window.

There are still lots of ideas for future versions (a virtual filesystem, multiple Python files, a file explorer, projects, and more), but I wanted to ship a solid v1 instead of endlessly adding features.

I'd love to hear any feedback or ideas for future versions!

Try project → See source code →
Open comments for this post

12h 37m 3s logged

JishOS Python IDE Becomes a Real IDE

This was one of the biggest development sessions for JishOS so far. The Python IDE went from a basic code runner to something that feels much closer to a real desktop IDE.

✨ New Features

🧩 Desktop Widgets

Introduced desktop widgets to enhance the operating system experience.

Features:

  • 🕒 Live digital clock
  • 📅 Interactive calendar
  • Seamlessly integrated with the desktop UI

🐍 Pyodide Integration

  • Embedded a full Python runtime using Pyodide.
  • Python now runs completely inside the browser.
  • No backend server required.

📝 Monaco Editor

  • Integrated Monaco Editor.
  • Python syntax highlighting.
  • Larger font and cleaner editing experience.
  • Code is automatically saved using local storage.

💻 Interactive Terminal

  • Terminal displays Python output.

  • Color-coded messages:

    • 🟢 Python output
    • 🔴 Errors
    • 🟡 User commands
    • 🔵 JishOS responses
  • Auto-scroll implemented.

  • Fixed several scrolling and layout bugs.

📦 Package Manager

Implemented a lightweight package manager.

Supported command:

pip install <package>

Features:

  • Downloads packages using pyodide.loadPackage()
  • Remembers installed packages with LocalStorage
  • Prevents duplicate installations
  • Clean success/error messages

Successfully tested with:

  • numpy
  • pandas
  • matplotlib

📊 Plot Viewer

Added the first version of the Plot Viewer.

Current implementation:

  • Detects when Matplotlib creates figures.
  • Automatically opens a Plot Viewer window.
  • Embeds Matplotlib’s native WebAgg viewer inside JishOS.
  • Toolbar (zoom, pan, save) works.

This is considered a temporary v1 solution before moving to a custom renderer in a future version.

🖥 Window System Improvements

Improved the desktop window manager:

  • Better focus handling
  • More reliable resizing
  • Fixed several overflow issues
  • Better scrolling behavior for embedded applications

🐛 Major Bugs Fixed

  • Fixed terminal scrollbar appearing too late.
  • Fixed Monaco editor overflowing its window.
  • Fixed terminal auto-scroll.
  • Fixed rounded Monaco container.
  • Fixed Pyodide loading issues.
  • Fixed duplicate package installation.
  • Fixed Plot Viewer DOM integration.

📚 Things Learned

Today involved learning about:

  • Pyodide package loading
  • Browser virtual file systems
  • React refs
  • DOM manipulation
  • WebAgg backend
  • LocalStorage persistence
  • Component communication in React
  • Handling asynchronous Python execution

🔜 Planned for Version 2

Instead of delaying the first release, these features have been postponed to v2:

  • 📁 Virtual filesystem
  • 📄 Multiple files (main.py, main2.py, data.csv, notes.txt)
  • 🗂 File Explorer
  • 📂 Folder support
  • 💾 Projects
  • 🖼 Custom Plot Viewer (PNG-based rendering)
  • 🖥 Multiple Python projects

0
0
2
Open comments for this post

6h 3m 39s logged

Window Management Improvements

This update focused on making the JishOS desktop feel much closer to a real operating system.

What’s new:

  • 🖱️ Added window resizing from all four edges with minimum size limits.
  • 📏 Fixed windows resizing beyond the desktop boundaries.
  • 🪟 Fixed newly opened windows occasionally appearing partially off-screen due to CSS positioning issues.
  • 📐 Implemented cascading window offsets so each new window opens slightly offset from the previous one.
  • 🎯 Added window focus, allowing a clicked window to move to the front of the stack.

This update significantly improves the overall desktop experience and lays the groundwork for future features like minimizing, maximizing, and window snapping.

0
0
1
Open comments for this post

6h 32m 41s logged

Progress Update (Past 2 Days) 🚀
Over the past two days, I built the core desktop environment for JishOS, including:

🖥️ Desktop layout

📌 Top bar

🪟 Reusable window component

📂 Desktop icons

📝 Notes app

🖱️ Custom window dragging system built from scratch using React (no drag library)

Next, I’ll add localStorage support for notes, multiple named notes, improved window management, and more desktop applications.

0
0
2

Delete project?

Are you sure you want to permanently delete this project? This action cannot be undone.

All devlogs, followers, and associated data will be removed.

Followers

Loading…