Arch Web Desktop
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.

⨠Features
š„ļø Desktop Environment
- 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
š± Built-in Applications
- š 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
š Advanced Search
- 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
šØ Customization
- 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
š Getting Started
Prerequisites
- Node.js 18+
- npm or yarn or pnpm
Installation
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.
Building for Production
npm run build
The built application will be in the build/
directory, ready for deployment.
šļø Project Structure
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/
š ļø Technology Stack
- Frontend Framework: SvelteKit (Svelte 5 with Runes)
- Styling: TailwindCSS
- State Management: Svelte 5 Runes (
$state
, $derived
)
- Build Tool: Vite
- Language: JavaScript
šÆ Key Features Explained
Window Management
- 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
Dock Features
- 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
Search System
- 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
Theme System
- 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
šØ Customization
Adding New Applications
- Create a new component in
src/apps/
- Add the application to the
apps
array in Dock.svelte
- Include appropriate icons and metadata
Custom Wallpapers
- Add wallpaper files to the
static/
directory
- Update the
wallpapers
object in desktop.svelte.js
- Add wallpaper options to the Settings app
Styling
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
š± Browser Compatibility
- ā
Chrome 90+
- ā
Firefox 88+
- ā
Safari 14+
- ā
Edge 90+
š¤ Contributing
- 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
š License
This project is licensed under the MIT License - see the LICENSE file for details.
š Acknowledgments
- 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
š Support
If you encounter any issues or have questions:
- Open an issue on GitHub
- Check the documentation
- Review existing issues for solutions