This file contains the steps to optimize and install the necessary software for a living room PC with a target of running Steam Big Picture Mode. The goal is to make it as close to a console experience as possible. Requiring minimal input from a user that requires more than a game controller.

1. Install apps using Winget for script simplicity. Use chocolatey as a fall back.
a. Make sure Winget is working and up to date.
b. Setup chocolatey

1. Optimize Windows

    Debloat Windows https://github.com/Raphire/Win11Debloat
Debloat Windows
1. Microsoft Apps
   a. Candy Crush (and all King games)
   b. Solitaire Collection
   c. Minesweeper
   d. Paint (keep Paint.NET or similar alternative)
   e. Voice Recorder
   f. Clipchamp
   g. 3D Builder/Viewer
   h. Mixed Reality Portal
   i. News
   j. Feedback Hub
   k. Maps
   l. Microsoft Family
   m. Microsoft Teams (personal)
   n. Tips
   o. Weather
   p. Get Help
   q. Microsoft To Do
   r. Sticky Notes
   s. Power Automate
   t. Phone Link
   u. Quick Assist
   v. Microsoft People
   w. Office Hub
   x. OneNote
   y. Skype
   z. Windows Web Experience Pack

2. Third Party Apps
   a. Adobe Express/Photoshop Express
   b. Amazon/Prime Video
   c. Booking.com
   d. Disney+
   e. Facebook
   f. Instagram
   g. Netflix
   h. Spotify
   i. TikTok
   j. Twitter/X
   k. WhatsApp
   l. Kindle
   m. LinkedIn
   n. Cortana
   o. Hidden City
   p. Asphalt Racing games
   q. Candy Crush series
   r. Farmville games
   s. Royal Match
   t. Township
   u. McAfee
   v. ExpressVPN
   w. Dropbox Promotion

Keep (Required for Gaming/Functionality):
1. Xbox Identity Provider
2. Xbox Game Bar (optional but useful)
3. Xbox Gaming Services
4. Windows Store (required for some game installations)
5. Calculator (useful utility)
6. Notepad (useful utility)
7. Windows Terminal
8. Microsoft.NET
9. Windows Media Player (for video playback)

    Set Services to Manual/Disabled:
    a. Manual Services:
        - Connected User Experiences and Telemetry (DiagTrack)
        - Device Management Wireless Application Protocol (dmwappushservice)
        - Downloaded Maps Manager (MapsBroker)
        - Function Discovery Provider Host (fdPHost)
        - Function Discovery Resource Publication (FDResPub)
        - Geolocation Service (lfsvc)
        - Microsoft Account Sign-in Assistant (wlidsvc)
        - Offline Files (CscService)
        - Phone Service (PhoneSvc)
        - Print Spooler (Spooler) - unless printing needed
        - Program Compatibility Assistant Service (PcaSvc)
        - Radio Management Service (RmSvc)
        - Remote Registry (RemoteRegistry)
        - Retail Demo Service (RetailDemo)
        - Secondary Logon (seclogon)
        - Sensor Data Service (SensorDataService)
        - Sensor Service (SensorService)
        - Shell Hardware Detection (ShellHWDetection)
        - Smart Card (SCardSvr)
        - Smart Card Device Enumeration Service (ScDeviceEnum)
        - SSDP Discovery (SSDPSRV)
        - Touch Keyboard and Handwriting Panel Service (TabletInputService)
        - Windows Biometric Service (WbioSrvc)
        - Windows Image Acquisition (WIA)
        - Windows Media Player Network Sharing Service (WMPNetworkSvc)
        - Windows Mobile Hotspot Service (icssvc)
        - Windows Search (WSearch)
        - Xbox Accessory Management Service (XboxGipSvc)
        - Xbox Live Auth Manager (XblAuthManager)
        - Xbox Live Game Save (XblGameSave)
        - Xbox Live Networking Service (XboxNetApiSvc)

    b. Disabled Services
        - Windows Connect Now (wcncsvc)
        - Windows Event Collector (Wecsvc)
        - Windows Remote Management (WinRM) ( We will use OpenSSH for this )

Info for these steps can be found here https://christitustech.github.io/winutil/devdocs/
    Tweaks
        a. Create Restore Point
        b. Delete temporary files
        c. Disable Consumer Features
        d. Disable Telemetry
        e. Disable Activity History
        f. Disable GameDVR
        g. Disable Hibernation (Im not sure if this is wanted, maybe discuss this)
        h. Disable Home Groups
        i. Disable Location Tracking
        k. Disable Storage Sense
        j. Disable Wifi Sense
        l. Enable End Task with right click
        m. Run Disk Cleanup
        n. change Windows Terminal default profile to Powershell 7
        o. Disable Powershell 7 Telemetry
        p. Disable recall
        q. Set unwanted background apps "manual" startup
        r. Debloat Edge
        s. Disable Microsoft Copilot
        t. Disable Notifications
        u. Remove Home and Gallery from File Explorer
        v. Block Razer software install (optional)
        w. Remove OneDrive
        x. Set DNS to DHCP
        y. Set Display to Performance
        z. Run OOSU.ps1

    Preferences
        a. Set Dark Theme
        b. Remove Bing Search from Start Menu
        c. Remove Recommendations from Start Menu
        d. Disable Snap Windows, Assist Flyout, and Snap Assist Suggestion
        e. Disable Sticky Keys
        f. Disable Search Button in Taskbar
        g. Disable Task View Button in Taskbar
        h. Disable Center Taskbar Items
        i. Disable Show Task View Button
        j. Disable Widgets in Taskbar
    Set Power Plan
        I want high performance, but when the controller is disconnected, put the PC to sleep or hibernate (whichever is better for the system).
    Enable Automatic Login (Ask for current user, if not scan for users and ask which one to use)
    Check if Winget is updated, reinstall if not (https://christitustech.github.io/winutil/dev/features/Fixes/Winget/)
    Set Windows Updates to Security (Recommended) Settings ( https://christitustech.github.io/winutil/userguide/ )
    
2. Update GPU Drivers for the GPU on the system. If using an NVIDIA GPU, install the latest NVIDIA drivers. If using an AMD GPU, install the latest AMD drivers. If using an Intel GPU, install the latest Intel drivers. If two GPUs and one is an igpu or apu, install the latest drivers for the discrete GPU.

3. Install Steam
    a. Install Steam
    c. Enable Autostart &  Big Picture Mode
3. Install all VCRedist (games will need them any way)
4. Configure Controller
    a. Enable controller to wake PC, put PC to sleep when controller is disconnected.
        using 'powercfg /devicequery wake_programmable' to find the program name controller, preferabbly a "Wireless Adapter Compatible with Xbox One Controller"
    b. Choose between Gopher360 (https://github.com/gophergala/gopher360) or Antimicro (https://github.com/AntiMicro/antimicro) for controller support.
    c. Figure out a way to open on screen keyboard with controller


4. Extras (Optional)
    a. If using optional Pulse-Eight HDMI-CEC Adapter, setup CEC scripts
    b. Enable OpenSSH Server (allow remote tui connection to run winget or btop4win)
    c. Install btop4win (with dependencies)
    d. Install BGInfo with my settings
    e. Install nano or vim for text editing
