A customized Wii Menu-inspired browser start page for self-hosted services and personal hub. Built on top of the original Wii.JS project with enhanced mobile DS-style interface and responsive design.
- 🎮 Wii Menu Aesthetic - Familiar, nostalgic interface inspired by the Nintendo Wii dashboard
- 📱 DS-Style Mobile Interface - Dual-screen inspired carousel on mobile devices for app selection
- 🔊 Audio Feedback - Classic Wii sound effects for hover, select, and navigation
- ⚙️ Customizable Channels - Easily add or remove service tiles/channels
- 🎨 Themeable - Settings panel with theme customization and weather effects
- 🌐 Social Integration - Built-in social links hub
- 📦 Docker Ready - Includes docker-compose configuration for easy deployment
- Open
index.htmldirectly in your browser, or - Serve locally with your preferred HTTP server:
# Using Python
python -m http.server 8080
# Using Node.js
npx http-server -p 8080
# Using PHP
php -S localhost:8080Then visit http://localhost:8080 in your browser.
docker-compose up -dThis will start an Nginx container on port 8080. Visit http://localhost:8080.
index.html # Main entry point
index-old.html # Legacy entry point (reference)
docker-compose.yml # Docker deployment configuration
assets/
audio/ # SFX and background music
bgmusic.html
button-hover.mp3
button-select.mp3
startup.mp3
zip.mp3
back.mp3
css/
universal.css # Base styles and global reset
menu.css # Menu, splash, carousel, and responsive styles
settings.css # Settings view styles
style.css # Legacy stylesheet
fonts/
contb.ttf # Wii Contoured Font
images/
channels/ # Channel preview and splash assets
social/ # Social platform logos
(UI sprites, backgrounds, cursor, etc.)
js/
config.js # Configuration constants
audio.js # Audio controller
splash.js # Splash screen state and rendering
views.js # View transitions and loading
main.js # Event handling and app initialization
imagesloaded.pkgd.min.js
jquery.waitforimages.min.js
views/
menu.html # Main menu with channel carousel
social.html # Social links view
settings-main.html # Settings/customization view
settings-credits.html # Credits view
licenses-temp.html # License information
nginx/
default.conf # Nginx configuration for deployment
Edit views/menu.html and add a channel card:
<a
href="#"
class="ds-channel-card viewchange js-hover-sound"
data-view="your-view"
data-transition="fade"
data-preview="assets/images/channels/your-preview.png"
data-preview-bg="#2e78b7"
data-card-bg="#2e78b7"
>
<span class="ds-card-kicker">Category</span>
<div class="ds-card-preview" aria-hidden="true">
<img src="assets/images/channels/your-preview.png" alt="" />
</div>
<strong>Channel Title</strong>
<span class="ds-card-desc">Channel description</span>
</a>Or for direct links:
<a
href="#"
class="ds-channel-card direct-link js-hover-sound"
data-url="https://example.com"
data-preview="assets/images/channels/example.png"
data-preview-bg="#ffffff"
>
<!-- card content -->
</a>Edit views/social.html to add new social links and logos.
- Global Styles: Edit
assets/css/universal.css - Menu Styles: Edit
assets/css/menu.css - Settings Panel: Edit
assets/css/settings.css - JavaScript Configuration: Edit
assets/js/config.js
Replace audio files in assets/audio/ with your own:
startup.mp3- Startup soundbg-music.mp3- Background musicbutton-hover.mp3- Hover sound effectbutton-select.mp3- Selection sound effectzip.mp3- Zip transition soundback.mp3- Back button sound
- Chrome/Chromium (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
Mobile optimized for touch devices with pointer coarse support.
- Avoid inline event handlers in HTML (
onclick,onmouseover); use delegated events in JS - Keep paths rooted from project root in views
- Keep shared constants in
assets/js/config.js - Use
assets/css/menu.cssfor most visual customizations
| What to Change | Where to Edit |
|---|---|
| Channel tiles/content | views/menu.html |
| Social links | views/social.html |
| Splash behavior | assets/js/splash.js |
| Audio behavior | assets/js/audio.js |
| View transitions | assets/js/views.js |
| Global events | assets/js/main.js |
| Menu visuals | assets/css/menu.css |
| Settings visuals | assets/css/settings.css |
| Global styles | assets/css/universal.css |
Original Project: Wii.JS by LucaCraft89
This project is based on the excellent Wii.JS start page framework and has been customized with:
- Enhanced mobile DS-style dual-screen carousel interface
- Additional responsive design improvements
- Custom channel configurations for dallh2o services
- Bug fixes and feature enhancements
See views/licenses-temp.html for license information.
Contributions welcome! Feel free to:
- Report issues
- Suggest improvements
- Submit pull requests
- Add new features or customizations
docker-compose up -dCopy all files to your web server's document root and ensure:
- Files are served over HTTP(S)
- MIME types are correct (especially for fonts)
- No URL rewriting interferes with asset paths
For issues, questions, or suggestions, please open an issue or contact the maintainer.
Made with ❤️ for self-hosted enthusiasts
- Keep DOM behavior split by responsibility:
audio.jsfor soundsplash.jsfor splash stateviews.jsfor navigation and transitionsmain.jsfor event wiring
- Browser autoplay restrictions can block music until a user interaction happens.
index-old.htmlandassets/css/style.cssare intentionally preserved as legacy references.