A modern web-based desktop environment that recreates the Arch Linux desktop experience in your browser. Built with SvelteKit and featuring a complete window management system, applications, and desktop utilities.
- Complete Window Management: Draggable, resizable windows with proper z-index handling
- Modern Dock: macOS-style dock with application launcher and running application indicators
- Top Bar: System status, time, and quick access to applications
- Theme System: Light/Dark/Auto themes with system preference detection
- Wallpaper Support: Multiple wallpaper options including custom backgrounds
- ๐ค AI Assistant: Integrated AI assistant to control desktop functions using natural language
- ๐ File Explorer: Browse and manage files and folders
- ๐ Text Editor: Create and edit documents with syntax highlighting
- ๐ป Terminal: Command-line interface simulation
- ๐งฎ Calculator: Full-featured calculator application
- ๐ผ๏ธ Image Viewer: View and manage images and photos
- ๐ System Monitor: Monitor system performance and resources
- โ๏ธ Settings: Configure desktop preferences and system options
- ๐ Web Browser: Browse the web with a built-in browser
- ๐ต Music Player: Play and manage your music collection
- Intelligent App Search: Fuzzy search with scoring algorithm
- Keyword Matching: Search by app name, category, or description
- Real-time Results: Debounced search with performance metrics
- Search Suggestions: Quick access to popular applications
- Keyboard Shortcuts: Full keyboard navigation support
- Multiple Themes: Light, Dark, and Auto (system preference)
- Wallpaper Gallery: Various wallpaper options including gradients
- Responsive Design: Works on desktop, tablet, and mobile devices
- Smooth Animations: Fluid transitions and hover effects
- Glassmorphism UI: Modern backdrop blur effects
- Node.js 18+
- npm or yarn or pnpm
-
Clone the repository
git clone https://github.com/ifsvivek/Arch-Web.git cd Arch-Web
-
Install dependencies
npm install # or yarn install # or pnpm install
-
Start the development server
npm run dev # or yarn dev # or pnpm dev
-
Open your browser Navigate to
http://localhost:5173
to see the desktop environment.
npm run build
The built application will be in the build/
directory, ready for deployment.
src/
โโโ components/ # Reusable UI components
โ โโโ Dock.svelte # Application dock with search
โ โโโ TopBar.svelte # System top bar
โ โโโ Window.svelte # Window management component
โโโ lib/
โ โโโ stores/ # Application state management
โ โโโ desktop.svelte.js # Desktop state store
โโโ routes/
โ โโโ +page.svelte # Main desktop page
โโโ apps/ # Built-in applications
โโโ FileExplorer/
โโโ TextEditor/
โโโ Terminal/
โโโ Calculator/
โโโ ImageViewer/
โโโ SystemMonitor/
โโโ Settings/
โโโ WebBrowser/
โโโ MusicPlayer/
- Frontend Framework: SvelteKit (Svelte 5 with Runes)
- Styling: TailwindCSS
- State Management: Svelte 5 Runes (
$state
,$derived
) - Build Tool: Vite
- Language: JavaScript
- Draggable Windows: Click and drag title bars to move windows
- Resizable: Drag window edges and corners to resize
- Z-Index Management: Click to bring windows to front
- Minimum Size Constraints: Prevents windows from becoming too small
- Application Launcher: Click dock icons to launch applications
- Running App Indicators: Visual indicators for open applications
- Search Integration: Comprehensive search with fuzzy matching
- Tooltips: Hover information for all dock items
- Smooth Animations: Scale and translate effects on hover
- Multi-term Search: Search with multiple keywords
- Scoring Algorithm: Intelligent relevance scoring
- Fuzzy Matching: Handles typos and partial matches
- Performance Optimized: Debounced input with timing metrics
- Keyboard Navigation: Arrow keys and Enter support
- Auto Theme: Respects system dark/light preference
- Manual Override: Choose specific light or dark themes
- Persistent Settings: Saves preferences to localStorage
- Smooth Transitions: Animated theme switching
- Create a new component in
src/apps/
- Add the application to the
apps
array inDock.svelte
- Include appropriate icons and metadata
- Add wallpaper files to the
static/
directory - Update the
wallpapers
object indesktop.svelte.js
- Add wallpaper options to the Settings app
The project uses TailwindCSS for styling. Key design patterns:
- Glassmorphism:
backdrop-blur-xl bg-white/20
- Smooth Transitions:
transition-all duration-300
- Theme-aware Classes: Dynamic classes based on theme state
The AI Assistant uses the Google Gemini API to provide natural language control of desktop functions.
- Get a Google Gemini API key from Google AI Studio
- Create a
.env.local
file in the project root - Add your API key to the file:
GEMINI_API_KEY=your_api_key_here
- Restart the development server
The AI Assistant can:
- Open and close applications ("Open Calculator", "Close Terminal")
- Change wallpapers ("Change wallpaper to forest")
- Switch themes ("Set theme to dark")
- Answer general questions
- โ Chrome 90+
- โ Firefox 88+
- โ Safari 14+
- โ Edge 90+
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Inspired by the Arch Linux desktop environment
- Built with the amazing SvelteKit framework
- Icons and design inspired by modern desktop environments
- Community feedback and contributions
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check the documentation
- Review existing issues for solutions