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
Comments 0
No comments yet. Be the first!
Sign in to join the conversation.