wip: montaukos.org web improvements
This commit is contained in:
+161
-14
@@ -80,46 +80,107 @@
|
||||
.app-item a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.slideshow {
|
||||
margin: 0 0 1em;
|
||||
}
|
||||
.slideshow-frame {
|
||||
position: relative;
|
||||
}
|
||||
.slideshow-frame img {
|
||||
display: block;
|
||||
width: 100%;
|
||||
aspect-ratio: 16 / 10;
|
||||
object-fit: contain;
|
||||
}
|
||||
.slideshow-button {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
border: 1px solid #999;
|
||||
background: rgba(255, 255, 255, 0.9);
|
||||
color: #222;
|
||||
padding: 0.35em 0.55em;
|
||||
cursor: pointer;
|
||||
font: inherit;
|
||||
}
|
||||
.slideshow-button:hover {
|
||||
background: #fff;
|
||||
}
|
||||
.slideshow-button.prev {
|
||||
left: 0.75em;
|
||||
}
|
||||
.slideshow-button.next {
|
||||
right: 0.75em;
|
||||
}
|
||||
.slideshow-meta {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: 1em;
|
||||
margin-top: 0.6em;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.slideshow-caption {
|
||||
margin: 0;
|
||||
}
|
||||
.slideshow-dots {
|
||||
display: flex;
|
||||
gap: 0.4em;
|
||||
}
|
||||
.slideshow-dot {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
border: 1px solid #999;
|
||||
background: #ddd;
|
||||
padding: 0;
|
||||
}
|
||||
.slideshow-dot.active {
|
||||
background: #0066CC;
|
||||
border-color: #004499;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="sidebar">
|
||||
<ul>
|
||||
<li><a href="#">About</a></li>
|
||||
<li><a href="#">Features</a></li>
|
||||
<li><a href="#">Applications</a></li>
|
||||
<li><a href="#">Downloads</a></li>
|
||||
<li><a href="#">Documentation</a></li>
|
||||
<li><a href="#">GitHub</a></li>
|
||||
<li><a href="#about">About</a></li>
|
||||
<li><a href="#features">Features</a></li>
|
||||
<li><a href="#applications">Applications</a></li>
|
||||
<li><a href="downloads.html">Downloads</a></li>
|
||||
<li><a href="docs/index.html">Documentation</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="main">
|
||||
<div class="center">
|
||||
<h1>MontaukOS</h1>
|
||||
<p>Modern and unique operating bare metal operating system</p>
|
||||
<p>Modern and unique bare metal operating system</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>About</h2>
|
||||
<h2 id="about">About</h2>
|
||||
<p>
|
||||
MontaukOS is a novel multi-user operating system that runs on bare metal.
|
||||
It features its own preemptive multitasking kernel and modern userspace with its own desktop environment,
|
||||
targeting both emulators and real hardware.
|
||||
</p>
|
||||
|
||||
<h2>Features</h2>
|
||||
<br>
|
||||
<p>
|
||||
MontaukOS is <strong>not</strong> Linux, nor is it Unix-like. Rather, it uses its own custom Montauk kernel with its own architecture and design.
|
||||
</p>
|
||||
<hr>
|
||||
<h2 id="features">Features</h2>
|
||||
<ul style="margin: 0 0 0.5em;">
|
||||
<li>Real hardware support: Intel GPU, e100e Ethernet, HDA audio, Bluetooth</li>
|
||||
<li>Storage: AHCI/NVMe SSDs, GPT partitions, ext2 and FAT32 filesystems</li>
|
||||
<li>ACPI support including S3 sleep and shutdown</li>
|
||||
<li>ACPI support including support for shutdown and partial support for S3 sleep</li>
|
||||
<li>USB and PS/2 input device support</li>
|
||||
<li>Desktop environment with 12+ applications</li>
|
||||
</ul>
|
||||
|
||||
<h2>Applications</h2>
|
||||
<h2 id="applications">Applications</h2>
|
||||
<br>
|
||||
<div class="app-grid">
|
||||
<div class="app-item">
|
||||
@@ -152,12 +213,98 @@ targeting both emulators and real hardware.
|
||||
</div>
|
||||
</div>
|
||||
<br><br>
|
||||
|
||||
<hr>
|
||||
<h2 id="screenshots">Screenshots</h2>
|
||||
<div class="slideshow">
|
||||
<div class="slideshow-frame">
|
||||
<img id="slideshow-image" src="images/mtk_doomgame.png" alt="MontaukOS screenshot showing DOOM running in the desktop environment">
|
||||
<button type="button" class="slideshow-button prev" id="slideshow-prev" aria-label="Show previous screenshot"><</button>
|
||||
<button type="button" class="slideshow-button next" id="slideshow-next" aria-label="Show next screenshot">></button>
|
||||
</div>
|
||||
<div class="slideshow-meta">
|
||||
<p class="slideshow-caption" id="slideshow-caption">DOOM running inside MontaukOS.</p>
|
||||
<div class="slideshow-dots" id="slideshow-dots" aria-label="Screenshot selector"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<div class="center">
|
||||
<a href="#">Releases</a></p>
|
||||
<a href="downloads.html">Releases</a>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
<br>
|
||||
<div class="center"><p>Copyright © 2025-2026 Montauk Operating System</p></div>
|
||||
|
||||
</div>
|
||||
<script>
|
||||
const slideshowItems = [
|
||||
{
|
||||
src: 'images/mtk_doomgame.png',
|
||||
alt: 'MontaukOS screenshot showing DOOM running in the desktop environment',
|
||||
caption: 'DOOM running inside MontaukOS.'
|
||||
},
|
||||
{
|
||||
src: 'images/mtk_procmgr_devexplorer.png',
|
||||
alt: 'MontaukOS screenshot showing Process Manager and Developer Explorer',
|
||||
caption: 'Process Manager and Developer Explorer open on the MontaukOS desktop.'
|
||||
}
|
||||
];
|
||||
|
||||
const slideshowImage = document.getElementById('slideshow-image');
|
||||
const slideshowCaption = document.getElementById('slideshow-caption');
|
||||
const slideshowDots = document.getElementById('slideshow-dots');
|
||||
const slideshowPrev = document.getElementById('slideshow-prev');
|
||||
const slideshowNext = document.getElementById('slideshow-next');
|
||||
let slideshowIndex = 0;
|
||||
|
||||
function renderSlideshow(index) {
|
||||
const item = slideshowItems[index];
|
||||
slideshowImage.src = item.src;
|
||||
slideshowImage.alt = item.alt;
|
||||
slideshowCaption.textContent = item.caption;
|
||||
|
||||
Array.from(slideshowDots.children).forEach(function(dot, dotIndex) {
|
||||
dot.classList.toggle('active', dotIndex === index);
|
||||
dot.setAttribute('aria-current', dotIndex === index ? 'true' : 'false');
|
||||
});
|
||||
}
|
||||
|
||||
function showSlide(index) {
|
||||
slideshowIndex = (index + slideshowItems.length) % slideshowItems.length;
|
||||
renderSlideshow(slideshowIndex);
|
||||
}
|
||||
|
||||
if (slideshowItems.length === 0) {
|
||||
slideshowImage.remove();
|
||||
slideshowCaption.textContent = 'Screenshots will appear here when they are added to the site.';
|
||||
slideshowPrev.hidden = true;
|
||||
slideshowNext.hidden = true;
|
||||
} else {
|
||||
slideshowItems.forEach(function(item, index) {
|
||||
const dot = document.createElement('span');
|
||||
dot.className = 'slideshow-dot';
|
||||
dot.setAttribute('aria-hidden', 'true');
|
||||
slideshowDots.appendChild(dot);
|
||||
});
|
||||
|
||||
slideshowPrev.addEventListener('click', function() {
|
||||
showSlide(slideshowIndex - 1);
|
||||
});
|
||||
|
||||
slideshowNext.addEventListener('click', function() {
|
||||
showSlide(slideshowIndex + 1);
|
||||
});
|
||||
|
||||
if (slideshowItems.length === 1) {
|
||||
slideshowPrev.hidden = true;
|
||||
slideshowNext.hidden = true;
|
||||
}
|
||||
|
||||
renderSlideshow(slideshowIndex);
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user