Skip to content

D162005/linux-os

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

12 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Linux OS Desktop Environment

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/

โœจ Features

  • 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

๐Ÿ› ๏ธ Tech Stack

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

๐Ÿ“‹ Prerequisites

  • Node.js 18.x or higher
  • npm 9.x or higher
  • Git

๐Ÿš€ Installation

1. Clone the Repository

git clone https://github.com/D162005/linux-os.git
cd linux-os

2. Install Dependencies

npm install

3. Start Development Server

npm run dev

The application will be available at https://linux-os-iota.vercel.app/

๐Ÿ“ฆ Available Scripts

# 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 lint

๐Ÿ“‹ Project Structure

linux-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

๐ŸŽฎ Usage

Opening Applications

  1. Click any icon in the dock at the bottom of the screen
  2. Applications will open as draggable windows
  3. Use the red dot in the top-left to close windows

Dragging 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

Customizing Your Experience

  1. Click the Settings icon (โš™๏ธ) to access settings
  2. Choose your preferred theme color
  3. Select a different wallpaper background

Using External Links

  • Calendar (๐Ÿ“…) - Opens Google Calendar
  • Mail (โœ‰๏ธ) - Opens your default email client
  • GitHub (๐Ÿ”—) - Links to the GitHub repository
  • LinkedIn (๐Ÿ’ผ) - Links to LinkedIn profile

๐ŸŒ Deployment

Deploy on Render

  1. Connect GitHub Repository

    • Go to render.com
    • Sign up with GitHub
    • Create a new Web Service
  2. Configure Build Settings

    • Framework: Vite
    • Build Command: npm install && npm run build
    • Start Command: npm run preview
    • Output Directory: dist
  3. Deploy

    • Click "Create Web Service"
    • Wait 2-3 minutes for build
    • Your site will be live!

Deploy on Vercel

  1. Push to GitHub

    git add .
    git commit -m "Deploy to Vercel"
    git push
  2. Connect to Vercel

    • Go to vercel.com
    • Click "New Project"
    • Select your GitHub repository
    • Import and deploy!
  3. Build Settings

    • Framework: Vite
    • Build Command: npm run build
    • Output Directory: dist

๐ŸŽจ Customization

Adding New Themes

Edit src/Data/theme.js:

export const themes = {
  orange: '#FF6B35',
  blue: '#0066FF',
  // Add your custom colors
};

Adding New Wallpapers

Add images to public/ folder and update src/Data/theme.js:

export const wallpapers = {
  wallpaper1: '/wallpaper1.jpg',
  wallpaper2: '/wallpaper2.jpg',
  // Add more wallpapers
};

Creating New Applications

  1. Create a new component in src/componant/windows/
  2. Import it in App.jsx
  3. Add to the window state in useWindowOpen
  4. Add icon to the Dock in Dock.jsx

๐Ÿ› Known Issues

  • Large bundle size (1.1MB) - Consider code splitting for optimization
  • Some chunks exceed 500KB - Monitor performance in production

๐Ÿ”ง Troubleshooting

Port Already in Use

# Use a different port
npm run dev -- --port 3000

Build Failures

# Clear node_modules and reinstall
rm -rf node_modules package-lock.json
npm install
npm run build

Windows Not Dragging Properly

  • Ensure no other event handlers interfere with drag
  • Check Window.jsx has stopPropagation() on close button

๐Ÿ“ˆ Performance Tips

  1. Lazy Load Windows - Load window content on demand
  2. Code Splitting - Use dynamic imports for large components
  3. Image Optimization - Compress wallpapers and assets
  4. Cache Strategies - Implement service workers for offline support

๐Ÿ‘จโ€๐Ÿ’ป Author

Darshan Patil

๐Ÿ™Œ Contributing

Contributions are welcome! To contribute:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“ž Support

For issues, questions, or suggestions:

๐ŸŽฏ Future-Roadmap

  • 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!

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages