* Add initial support for MKB
* Refactor icons
* Enable native MKB support for some games
* Move Stream settings & stats buttons to Stream HUD bar
* Split stream settings into tabs
* Use bx-gone class to show/hide Settings sidebar
* Update translations
* Update Toast class
* Press F9 to toggle MKB feature
* Disable Gamepad Disconnected screen
* Change from F9 key to F8 key
* Reverse back to F9 key + disable "disableGamepadDisconnectedScreen" patch
* Fix "disableGamepadDisconnectedScreen" patch
* Add fade in/out animations for Toast
* Fix Settings tabs not showing
* Fix touch controller not showing sometimes
* Add basic remapping screen
* Update MKB layout
* Add edit/save states
* Add borders to highlight Quick Settings tabs
* Get key name from key code
* Move the Dots button to the beginning
* Disable non-working native MKB games
* Optimize Patcher class: only apply "playing" patches when needed
* Refactor renderMkbSettings() to MkbRemapper class
* Refactor the rendering process of MkbRemapper
* Implement new method to control analog stick using mouse
Heavily inspired by Yuzu's "Mouse panning" feature
* Update README.md
* Refactor setting elements
* Reduce button prompt's font size
* Render mouse settings
* Add a warning in MKB remapper
* Update preset's structure
* Disable "contextmenu" event of dialog & its overlay
* Fix bug in MkbPreset.convert()
* Detect scrolling events while binding
* Convert wheel events to button press
* Fix minor bugs in Stream settings
* Fix RT mapping
* Add setValue() method to SettingElement
* Update preset after binding new key
* Update preset after changing mouse's settings
* Update UI of mouse's settings
* Update style
* Fixed action buttons at the bottom
* Add support for "exactTicks" param to Number Stepper element
* Don't render first & last markers
* Add basic LocalDb class
* Allow switching between presets
* Enable/disable elements when editing preset
* Update translations
* Refactor code
* Define "CE = createElement" globally
* Add createButton()
* Add icons to buttons
* Implement the "Cancel" button
* Implement the "Rename" button
* Add styling for disabled buttons
* Implement "New" & "Copy" buttons
* Implement "Delete" button
* Refactor code
* Fix exception when creating Default preset
* Set default name when copying preset
* Implement "Save" button
* Implement "Activate" button
* Implement switching preset data
* Pre-calculate mouse's sensitivities + fix not converting preset before using
* Fix mouse buttons not working
* Remove "not working" line
* Show "right-click-to-unbind" text
* Bug fixes
* Add ENABLE_NATIVE_MKB_BETA flag
* Update styling
* Add mention to Yuzu emu
* Pre-calculate mouse's sensitivities in MkbPreset.convert()
* Update translations
* Add donation link
* Update translations
* Add "Map mouse to" setting
* Fix styling
* Bug fixes
* Implement requestPointerLock()
* Hide pointerLock message when StreamMenu is being shown
* Fix bugs in Chrome
* Fix a bug causing Remote Play not working
* Remove "Disable bandwidth checking" feature as it's useless
* Update README.md
* Update styling
* Add URL to document
* Temporary disable the "Controller shortcuts" feature as it conflicts with the MKB feature
* Update translations
* Update README.md
* Try to fix remote play not working when not using local network
* Fix Server badge reporting incorrect info
* Refactor remote play requests in window.fetch
* Fix exceptions
* Stop overriding WebSocket class
* Fix not connecting to IPv6 server as expected
* Redesign Quick Settings bar
* Move stream stats settings to quick settings bar
* Add "for" attributes to labels
* Minor optimization
* Stop rendering Toast
* Don't render UI elements when not playing
* Test remote play
* Add a link to dev-tools page
* Add Remote Play dialog
* Bug fixes
* Fix URL
* Fix header
* Path xHome domain
* Remote Remote Play config from window.location while playing
* Update style of the Remote Play button
* Add dialog overlay
* Hide Settings when opening the Remote Play dialog
* Update styles
* Path /direct-connect link
* Fix bind() monkey-patching
* Stop patching when it's done
* Fix exception with GAME_TITLE_ID
* Add resolution setting
* Add Patcher class
* Stop storing Remote Play config in location.hash
* Apply resolution
* Display state's label
* Fix IPv6
* Update translations
* Move Patcher class to the top
* Add "disableTelemetry" and "disableTrackEvent" patches
* Add Layout setting
* Add setting to adjust controller polling rate
* Add Mouse & Keyboard support
* Add Italian translations
* Basic code for GamepadHandler
* Take screenshot using Home + RB
* Enable shortcuts using setting
* Only poll gamepad when playing
* Toogle stats using Home + Select
* Add basic Toast class
* Update translations
* Define CSS variables
* Shorten CSS prefix "better-xcloud-" to "bx-"
* Move Safari's workaround code to the end of the script
* Add setting to change Better xCloud's language
* Support Vietnamese language
* Use the same language as browser
* Minor fixes
* Add Portuguese (Brazilian)
* Update BR translation
* Adjust CSS of Settings' reload button
* Reload the page after changing language
* Fix setting locale on first run
* Replace "Force high-quality codec" option with "Visual quality"
* Add Italian translation
* Update texts
* Deprecate "Prefer high-quality codec" setting
* Show stat's abbr. in slection box
* Reduce border size in stats bar from 2px to 1px
* Remove unused texts
* Remove Italian translation (because it's unfinised) + update Brazillian + Vietnamese translations
* Move Video settings box from bottom to the right side
* Rename "Video Settings" to "Stream Settings"
* Volume booster
* Fix volume booster not working
* Typo
* Fix not working in Kiwi
* Show input range
* Update monkey patching method for AudioContext
* Refactor Preferences
* Add tick markers
* Add Audio & Video headers
* Reduce stats bar size
* Show warning when Clarity Boost mode is ON
* Increase max volume to 600
* Try to fix audio problem on iOS/iPadOS
* Pause <audio>
* Fix crashing when enabling touch controller
* Fix touch controller not working
* Fix volume booster not working on iOS/iPadOS
* Make Game Pass' app version easier to read
* Replace numberPicker with NumberStepper
* Replace "Stretch Video" setting with "Video Ratio"
* Make number stepper's buttons a little bit bigger
* Rename "RTT" to "PNG"
* Show select box to select stats items
* Toggle stats
* Prevent select box from jumping around
* Put Ping before FPS & remove "ms" suffix from Ping
* Show game's art in the loading screen
* Fade in/out game's art
* Enable UI_GAME_ART_LOADING_SCREEN by default
* Check PREF_UI_GAME_ART_LOADING_SCREEN
* Fix touch controller setting
* Show estimated time
* Show countdown time on web title
* Rename PREF_UI_GAME_ART_LOADING_SCREEN to UI_LOADING_SCREEN_GAME_ART
* Add setting to show/hide the wait time
* Add time zone offset to end time
* Store APP_CONTEXT
* Add setting to hide the rocket animation
* Add Video clarity setting
* Disable Clarity feature in Safari
* Make the Video settings bar smaller
* Stop loading the page when running into the "We are sorry..." error message
* Fix problems with named parameters
* Add "Enable microphone on game launch" setting
* Stream menu: clone the second last button instead of the first one (usually the mic button)
* Close the HUD when clicking clicking on the Video Settings button
* Use a different CSS for the Stream Stats button when it's ON
* Reload the page until the script is loaded first
* Trying to fix the issue with error page
* Show a message when reloading the page
* Minor refactoring in overrides.inputConfiguration
* Automatically reload the page when running into the "We are sorry..." error message
* Double-tap anywhere at the bottom of the screen to show/hide touch controller
* Update CSS
* Update the size of the screenshot button
* Update screenshot button's CSS
* Update screenshot button's opacity
* Update README.md
* Fix sometimes the touch controller layout doesn't show at the beginning
* Restore GAME_TITLE_ID
* Update README.md
* Bump version to 1.10
* Bump version to 1.10
* Add "Enable touch controller for all games" feature
* Minor fixes
* Disable STREAM_ENABLE_TOUCH_CONTROLLER when STREAM_ENABLE_TOUCH_CONTROLLER is enabled
* Combine STREAM_ENABLE_TOUCH_CONTROLLER & STREAM_HIDE_TOUCH_CONTROLLER into STREAM_TOUCH_CONTROLLER
* Add "Simplify Stream's menu" setting
* Fix Smart TV layout
* Fix not able to hide Video bar if the "Disable touch controller" is on
* Combine Region + Server badges into one
* Reduce badge's font-size from 16 to 14px
* Fix battery level showing .99999
* Don't show battery badge when it's 100%
* Fix showing incorrect Audio codec in Safari
* Add "Safari on macOS" User-Agent profile
* Fix showing incorrect Video codec in Safari
* Use "-webkit-user-select" for Safari
* Update Video badge's color
* Refactor class names
* Move Quick settings bar's CSS to addCss()
* Adjust Stream menu button's size
* Add shadow to Video settings bar
* Put "Stream Stats" button before "Video Settings" button
* Get video and audio info from RTCPeerConnection.getStats()
* Show stream's stats bar
* Make Stream menu icon's size smaller
* Add shadow to stream badges
* Show bitrate
* Add button to toggle Stream Stats
* Rename StreamStatus to StreamBadges
* Show '???' then currentRoundTripTime is undefined
* Remove work-around for browsers with no setCodecPreferences() support as it's not working
* Remove updateVideoPlayerPreview()
* Disable USE_DESKTOP_CODEC setting on unsupported browsers
* Add a button to test screenshot feature
* Update CSS of the screenshot button
* Prevent screenshot button from blocking UI
* Add setting to change screenshot button's position
Improve [Xbox Cloud Gaming (xCloud)](https://www.xbox.com/play/) experience on web browser.
The main target of this script is Android users, but it should work great on desktop too.
Improve Xbox Cloud Gaming (xCloud) experience on [xbox.com/play](https://www.xbox.com/play). It also allows you to use Remote Play on the xCloud website.
## Features:
**Supported platforms:**
- Windows
- macOS
- Linux, SteamOS (including Steam Deck)
- Android, Android TV (including Meta Quest VR Headsets)
This script makes me spend more time with xCloud, and I hope the same thing happens to you.
If you like this project please give it a 🌟. Thank you 🙏.
- Switch region of streaming server.
- Prefer IPv6 streaming server (might improve latency).
- Force HD stream by disabling bandwidth checking -> xCloud always tries to use the best possible quality.
- Skip Xbox splash video.
- Make the top-left dots icon invisible while playing. You can still click on it, but it doesn't block the screen anymore.
- Stretch video to full sctreen. Useful when you don't have a 16:9 screen.
- Adjust video filters (brightness/contrast/saturation).
- Hide footer and other UI elements.
- Reduce UI animations (the smooth scrolling cannot be disabled).
- Disable social features (friends, chat...).
- Disable xCloud analytics. The analytics contains statistics of your streaming session, so I'd recommend to allow analytics to help Xbox improve xCloud's experence in the future.
1. Install [Tampermonkey extension](https://www.tampermonkey.net/) on suppported browsers. It's also available for Firefox on Android.
2. Install **Better xCloud**:
- [Directly on Github](https://github.com/redphx/better-xcloud/releases/latest/download/better-xcloud.user.js)
4. Refresh [xCloud web page](https://www.xbox.com/play/).
5. Click on the new "SERVER NAME" button next to your profile picture to adjust settings.
6. Optional but recommended: change your browser's User-Agent. Check the [User-Agent section](#user-agent) below for more info.
7. Don't forget to reload the page after changing settings.
## Full documentations
For the full details please visit: https://better-xcloud.github.io
## User-Agent
Optional, as changing User-Agent won't guarantee a better streaming experience, but it's worth a try. You might need toinstall an external extension to do that.
## Table of Contents
- [**How to install**](#how-to-install)
- [**Features**](#features)
- [**Donation**](#donation)
- [**Acknowledgements**](#acknowledgements)
- [**Disclaimers**](#disclaimers)
It's recommended to change User-Agent to:
```
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36 Edg/114.0.1823.67
```
This will trick xCloud into thinking you're using Edge browser on desktop.
## How to install
Visit [this page](https://better-xcloud.github.io/browsers) to know how to install Better xCloud on your device.
Other options (only do one of these):
- Add ` smarttv` to switch to Smart TV layout.
- Add ` Xbox;` to become an Xbox console.
- Add ` 36102dd3-6953-45f6-8b48-031fb95e0e0d` to become a Logitech G Cloud device.
- Add ` 0ed22b6f-b61d-41eb-810a-a1ed586a550b` to become a Razer Edge device.
## Features
## Tested on:
- Chrome on macOS.
- Firefox for Android with Tampermonkey add-on.
- *(NOT RECOMMENDED at the moment since its Userscript implementation is not working properly)* [Hermit Browser](https://hermit.chimbori.com) on Android. It supports custom User-Agent and has built-in Userscript support (premium features, only $7.99) so you don't have to install anything else. I built **Better xCloud** just so I could use it with Hermit.
If you think this project is useful and want to support future developments, please consider making a donate via [my Ko-fi page](https://ko-fi.com/redphx).
Or you can give this project a star, that's also helpful.
Thank you.
4.**Will you able to enable "Clarity Boost" feature on non-Edge browsers?**
No. "Clarity Boost" feature uses an exclusive API (`Video.msVideoProcessing`) that's only available on Edge browser for desktop at the moment.
## Translation
Help translating **Better xCloud** to another languagues using [Crowdin](https://crowdin.com/project/better-xcloud).
Use [this post](https://github.com/redphx/better-xcloud/discussions/131) for discussion.
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.