| document.addEventListener('DOMContentLoaded', function() { |
| |
| function updateSystemStats() { |
| const stats = [ |
| { selector: '.cpu-usage', min: 5, max: 40 }, |
| { selector: '.memory-usage', min: 2, max: 7 }, |
| { selector: '.network-speed', min: 5, max: 25 } |
| ]; |
| |
| stats.forEach(stat => { |
| const element = document.querySelector(stat.selector); |
| if (element) { |
| const value = Math.floor(Math.random() * (stat.max - stat.min + 1)) + stat.min; |
| element.textContent = `${value}${stat.selector === '.network-speed' ? 'Mbps' : '%'}`; |
| } |
| }); |
| } |
| |
| |
| setInterval(updateSystemStats, 3000); |
| updateSystemStats(); |
| |
| |
| const terminalElement = document.querySelector('.terminal'); |
| if (terminalElement) { |
| const commands = [ |
| { cmd: 'ls -la', output: 'total 48\ndrwxr-xr-x 5 user user 4096 Dec 10 14:30 .\ndrwxr-xr-x 3 root root 4096 Nov 28 09:15 ..\n-rw------- 1 user user 1352 Dec 9 16:42 .bash_history\n-rw-r--r-- 1 user user 220 Nov 28 09:15 .bash_logout\n-rw-r--r-- 1 user user 3771 Nov 28 09:15 .bashrc\ndrwx------ 3 user user 4096 Dec 1 11:20 .cache\ndrwx------ 3 user user 4096 Dec 1 11:20 .config\n-rw-r--r-- 1 user user 807 Nov 28 09:15 .profile\n-rw-r--r-- 1 user user 0 Dec 3 17:55 .sudo_as_admin_successful' }, |
| { cmd: 'uname -a', output: 'Linux penguinOS 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux' }, |
| { cmd: 'free -h', output: ' total used free shared buff/cache available\nMem: 7.7Gi 3.2Gi 2.1Gi 345Mi 2.4Gi 4.0Gi\nSwap: 2.0Gi 0.0Ki 2.0Gi' } |
| ]; |
| |
| let currentCommand = 0; |
| |
| function typeWriter(text, element, speed, callback) { |
| let i = 0; |
| function typing() { |
| if (i < text.length) { |
| element.innerHTML += text.charAt(i); |
| i++; |
| setTimeout(typing, speed); |
| } else if (callback) { |
| callback(); |
| } |
| } |
| typing(); |
| } |
| |
| function runNextCommand() { |
| if (currentCommand < commands.length) { |
| const command = commands[currentCommand]; |
| const commandLine = document.createElement('div'); |
| commandLine.className = 'command-line'; |
| commandLine.innerHTML = `<span class="prompt">user@penguinos:~$</span> <span class="command">${command.cmd}</span>`; |
| terminalElement.appendChild(commandLine); |
| |
| setTimeout(() => { |
| const output = document.createElement('div'); |
| output.className = 'command-output'; |
| terminalElement.appendChild(output); |
| typeWriter(command.output, output, 10, () => { |
| currentCommand++; |
| setTimeout(runNextCommand, 1000); |
| }); |
| }, 500); |
| } |
| } |
| |
| runNextCommand(); |
| } |
| |
| const menuButton = document.querySelector('[data-feather="menu"]'); |
| if (menuButton) { |
| menuButton.addEventListener('click', function() { |
| const sidebar = document.querySelector('.w-64'); |
| sidebar.classList.toggle('hidden'); |
| sidebar.classList.toggle('block'); |
| }); |
| } |
|
|
| |
| const notificationsBtn = document.getElementById('notifications-btn'); |
| if (notificationsBtn) { |
| notificationsBtn.addEventListener('click', function() { |
| alert('No new notifications'); |
| }); |
| } |
|
|
| |
| const messagesBtn = document.getElementById('messages-btn'); |
| if (messagesBtn) { |
| messagesBtn.addEventListener('click', function() { |
| alert('Message system coming soon!'); |
| }); |
| } |
|
|
| |
| const powerBtn = document.getElementById('power-btn'); |
| if (powerBtn) { |
| powerBtn.addEventListener('click', function() { |
| if (confirm('Are you sure you want to shut down PenguinOS?')) { |
| alert('System shutting down...'); |
| |
| document.body.innerHTML = '<div class="flex items-center justify-center h-screen bg-black text-white text-2xl">PenguinOS is now shutting down...</div>'; |
| } |
| }); |
| } |
|
|
| |
| const sidebarLinks = document.querySelectorAll('.w-64 nav a'); |
| sidebarLinks.forEach(link => { |
| link.addEventListener('click', function(e) { |
| e.preventDefault(); |
| const icon = this.querySelector('i'); |
| const appName = this.textContent.trim(); |
| alert(`Launching ${appName}...`); |
| }); |
| }); |
|
|
| |
| const quickAccessLinks = document.querySelectorAll('.quick-access a'); |
| quickAccessLinks.forEach(link => { |
| link.addEventListener('click', function(e) { |
| e.preventDefault(); |
| const appName = this.querySelector('span').textContent; |
| alert(`Opening ${appName}...`); |
| }); |
| }); |
| }); |