A modern, interactive desktop environment simulator built with React and Vite. Mimics a Linux desktop UI with draggable windows, customizable themes, and a dock-based application launcher.
Live-Link: https://linux-os-iota.vercel.app/
-
Draggable Windows - Move windows around the screen freely with smooth drag-and-drop functionality
-
Resizable Windows - Resize windows to fit your needs using the react-rnd library
-
Multiple Applications - Pre-built applications including:
- ๐ Projects - Showcase your work and portfolio
- ๐ Text Editor - Write and edit text with syntax highlighting
- ๐ Resume - Display your professional resume (PDF)
- ๐ป Terminal - Interactive command emulator
- โ๏ธ Settings - Customize theme and wallpaper
-
Customizable Themes - Multiple color themes to personalize your experience
-
Dynamic Wallpapers - Change background images on the fly
-
Responsive Dock - Quick-access application launcher with smooth icons
-
External Links - Quick access to calendar, email, GitHub, and LinkedIn
-
Modern UI - Clean, polished interface with smooth animations
| Technology | Purpose |
|---|---|
| React 19.2.4 | UI framework |
| Vite 8.0.14 | Build tool & dev server |
| TypeScript | Type safety |
| Tailwind CSS 4.3.0 | Utility-first styling |
| SCSS | Component-level styles |
| react-rnd 10.5.3 | Draggable & resizable components |
| react-console-emulator | Terminal emulator |
| react-markdown | Markdown rendering |
| react-syntax-highlighter | Code syntax highlighting |
- Node.js 18.x or higher
- npm 9.x or higher
- Git
git clone https://github.com/D162005/linux-os.git
cd linux-osnpm installnpm run devThe application will be available at https://linux-os-iota.vercel.app/
# Start development server with hot reload
npm run dev
# Build for production
npm run build
# Preview production build locally
npm run preview
# Run ESLint to check code quality
npm run lintlinux-os/
โโโ src/
โ โโโ App.jsx # Main application component
โ โโโ App.scss # Global styles
โ โโโ index.css # Base CSS
โ โโโ main.jsx # Entry point
โ โโโ assets/ # Static assets
โ โโโ componant/
โ โ โโโ Dock.jsx # Application launcher dock
โ โ โโโ Nav.jsx # Navigation bar
โ โ โโโ Window.jsx # Window wrapper component
โ โ โโโ windows/
โ โ โโโ Projects.jsx # Projects showcase
โ โ โโโ TextEditor.jsx # Text editor app
โ โ โโโ Resume.jsx # Resume display
โ โ โโโ TerminalCmd.jsx # Terminal emulator
โ โ โโโ Setting.jsx # Settings panel
โ โ โโโ [component].scss # Component styles
โ โโโ Data/
โ โโโ project_data.js # Project information
โ โโโ theme.js # Theme & wallpaper data
โ โโโ note.txt # Notes file
โโโ public/ # Static files
โโโ index.html # HTML entry point
โโโ package.json # Dependencies & scripts
โโโ vite.config.js # Vite configuration
โโโ vercel.json # Vercel deployment config
โโโ eslint.config.js # ESLint configuration
โโโ README.md # This file
- Click any icon in the dock at the bottom of the screen
- Applications will open as draggable windows
- Use the red dot in the top-left to close windows
- Click and drag windows anywhere on the screen
- Windows can be dragged outside the viewport without causing scrollbars
- Position persists until you close the window
- Click the Settings icon (โ๏ธ) to access settings
- Choose your preferred theme color
- Select a different wallpaper background
- Calendar (๐ ) - Opens Google Calendar
- Mail (โ๏ธ) - Opens your default email client
- GitHub (๐) - Links to the GitHub repository
- LinkedIn (๐ผ) - Links to LinkedIn profile
-
Connect GitHub Repository
- Go to render.com
- Sign up with GitHub
- Create a new Web Service
-
Configure Build Settings
- Framework: Vite
- Build Command:
npm install && npm run build - Start Command:
npm run preview - Output Directory:
dist
-
Deploy
- Click "Create Web Service"
- Wait 2-3 minutes for build
- Your site will be live!
-
Push to GitHub
git add . git commit -m "Deploy to Vercel" git push
-
Connect to Vercel
- Go to vercel.com
- Click "New Project"
- Select your GitHub repository
- Import and deploy!
-
Build Settings
- Framework: Vite
- Build Command:
npm run build - Output Directory:
dist
Edit src/Data/theme.js:
export const themes = {
orange: '#FF6B35',
blue: '#0066FF',
// Add your custom colors
};Add images to public/ folder and update src/Data/theme.js:
export const wallpapers = {
wallpaper1: '/wallpaper1.jpg',
wallpaper2: '/wallpaper2.jpg',
// Add more wallpapers
};- Create a new component in
src/componant/windows/ - Import it in
App.jsx - Add to the window state in
useWindowOpen - Add icon to the Dock in
Dock.jsx
- Large bundle size (1.1MB) - Consider code splitting for optimization
- Some chunks exceed 500KB - Monitor performance in production
# Use a different port
npm run dev -- --port 3000# Clear node_modules and reinstall
rm -rf node_modules package-lock.json
npm install
npm run build- Ensure no other event handlers interfere with drag
- Check
Window.jsxhasstopPropagation()on close button
- Lazy Load Windows - Load window content on demand
- Code Splitting - Use dynamic imports for large components
- Image Optimization - Compress wallpapers and assets
- Cache Strategies - Implement service workers for offline support
Darshan Patil
- GitHub: @D162005
- Email: darshanmpatil16012005@gmail.com
- LinkedIn: Darshan Patil
Contributions are welcome! To contribute:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
For issues, questions, or suggestions:
- Open an Issue
- Check Discussions
- Contact via email or LinkedIn
- Persistent window positions using localStorage
- File upload functionality
- Dark/Light theme toggle
- Keyboard shortcuts
- Window minimize/maximize buttons
- Sound effects
- Multi-monitor support simulation
- Taskbar window list
Made with โค๏ธ by Darshan Patil
Give it a โญ if you like this project!