Disgruntled gamer builds booby-trapped Steam Deck with 3D-printed spikes and a built-in taser — Raspberry Pi powers speaker, camera, and alarm to stop family members draining his battery | Tom's Hardware Skip to main content Join Tom’s Hardware today Upgrade to Tom’s Hardware Premium Explore GO PREMIUM Choose how you want to join Tom’s Hardware MEMBER Get started with free access to reviews, badges and discussions. Become a member Premium member Unlock exclusive tools and insights for enthusiasts who want more. Bench Database Exclusive Features Roadmaps Deep Analysis Become a premium member Go beyond the headlines with Tom’s Hardware Premium Access Bench, Roadmaps, deep analysis and other exclusive tools. Explore PREMIUM Bench Performance Database Dive into our proprietary testing data and compare hardware with detailed benchmarks. Deep-Dive Analysis Go beyond the headlines with expert reporting on the hardware industry. Hardware Roadmaps Track upcoming CPUs, GPUs and tech releases before they arrive. Exclusive Long-Form Features In-depth features, interviews and insider stories from the world of hardware. Uptime Premium Newsletter Expert insights and analysis delivered to your inbox. of Bench Performance Database Dive into our proprietary testing data and compare hardware with detailed benchmarks. 1 of 5 Deep-Dive Analysis Go beyond the headlines with expert reporting on the hardware industry. 2 of 5 Hardware Roadmaps Track upcoming CPUs, GPUs and tech releases before they arrive. 3 of 5 Exclusive Long-Form Features In-depth features, interviews and insider stories from the world of hardware. 4 of 5 Uptime Premium Newsletter Expert insights and analysis delivered to your inbox. 5 of 5 Explore PREMIUM const sliderPremiumEnabled = true; function sendMembershipSlideOutEvent(action, label) { if (typeof window.dispatchOrQueueAction === 'function') { window.dispatchOrQueueAction('freyr.sendEventToFreyr', { name: 'membershipEvent', eventObject: { membership: { action: action, label: label, type: 'slide-out', }, }, }); } } function handleClickMyAccount() { sendMembershipSlideOutEvent('my-account-clicked', 'slider-button'); } function handleClickCard(index) { sendMembershipSlideOutEvent('card-clicked', 'card-' + index); } function handleClickMembership() { sendMembershipSlideOutEvent('membership-clicked', 'membership-card'); } function handleClickAdvertisement() { sendMembershipSlideOutEvent('advertisement-clicked', 'advertisement-card'); } function handleClickNavigation() { sendMembershipSlideOutEvent('navigation-clicked', 'card-navigation'); } document.addEventListener('alpine:init', () => { const messagesWelcomeSlider = { en: { hello: 'Hello', welcomeBack: 'Welcome', hi: 'Hi' }, fr: { hello: 'Bonjour', welcomeBack: 'Bon retour', hi: 'Bonjour' } }; Alpine.data('custom_widgets_1774442034_userDashboard', () => ({ isExpanded: false, displayName: '', email: '', isLoading: false, updateStatus: null, updateMessage: '', userFirstLog: false, userHasBadge: false, isUserAuthenticated: false, isUserPremium: false, displayPremiumSliderContent: false, isMobile: window.innerWidth { this.refreshUserData(); if (this.isUserAuthenticated) { this.openSlideOut(); } }); window.addEventListener('resize', () => { this.isMobile = window.innerWidth 0; }, getWelcomeMessageSlideOut(key) { const lang = navigator.language.split('-')[0] || 'en'; return messagesWelcomeSlider[lang]?.[key] || messagesWelcomeSlider.en[key]; }, extractDisplayName(email) { if (!email) return ''; let name = email.split('@')[0].split('+')[0].replace(/[._]/g, ' '); return name.split(' ').map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).filter(Boolean).join(' ').trim(); }, truncatedNameSlideOut() { const name = this.displayName || this.extractDisplayName(this.email); if (!name || name.toLowerCase() === 'there') return ''; const firstName = name.split(' ')[0]; return firstName.length > 10 ? firstName.substring(0, 10) + '...' : firstName; }, showUserNameSlideOut() { const firstNameTruncated = this.truncatedNameSlideOut(); return firstNameTruncated !== 'there'; }, isLoadingEmail: false, buttonText: 'RESEND VERIFICATION EMAIL', emailMessage: '', })); }); document.addEventListener('DOMContentLoaded', () => { const carousel = document.getElementById('quiz-carousel'); const dropShadowRight= document.getElementById('drop-shadow-right-carousel'); const scrollRightBtn = document.getElementById('scroll-right-btn'); const scrollLeftBtn = document.getElementById('scroll-left-btn'); const scrollDistance = 300; const closeBtns = document.querySelectorAll('.close-btn, #close-bnt'); const slideOutPageCover = document.getElementById('slide_out-page_cover'); const logoutBtns= document.querySelectorAll('.logoutBtn, #logoutBtn'); const slideOutContent = document.getElementById('slide-out-content'); var slideOutTrigger = document.getElementById('auth-in-nav-header'); var navHeaderDropDown = document.getElementById('auth-in-nav-header-menu'); if (slideOutContent && navHeaderDropDown) { navHeaderDropDown.classList.remove('show'); navHeaderDropDown.style.setProperty('display', 'none', 'important'); } if (slideOutTrigger) { slideOutTrigger.addEventListener('click', function(e) { e.preventDefault(); sessionStorage.setItem('membership_slide_out_open_triggered', 'false'); if(navHeaderDropDown) navHeaderDropDown.classList.remove('show'); window.dispatchEvent(new CustomEvent('membership_slide_out_open_triggered')); if(slideOutContent && window.FUTR?.Kiosq?.User?.is_authenticated) { slideOutContent.classList.add('show'); } console.log('slide out trigger'); }); } logoutBtns.forEach(btn => { btn.addEventListener('click', (event) => { event.preventDefault(); console.log('logout clicked'); if (window?.FUTR?.Connect?.Auth?.logout) { window.FUTR.Connect.Auth.logout(); } }); }); closeBt <
Read the discussion on Reddit: https://www.reddit.com/r/SteamDeck/comments/1v6osor






Comments (0)
Loading comments…