// ==UserScript== // @name Steam - Disable automatic 'Away' // @namespace steam // @description Suppresses function to automatically set user as Away in Steam browser chat // @include http://steamcommunity.com/* // @include https://steamcommunity.com/* // @version 1.0 // @grant unsafeWindow // @run-at document-start // ==/UserScript== function inject() { // Override method which calculates the idle time using `eval` // We've to use eval, since we cannot create new functions in the original window. This would // cause scripts to crash, since they have no access to functions from other windows. unsafeWindow.eval(`window.g_FriendsUIApp.m_IdleTracker.__proto__.GetUserIdleTime = () => 1;`); unsafeWindow.console.clear(); unsafeWindow.console.log('%c Code injected! ', 'background: green; color: white'); } // A normal event listener wouldn't do the job here, since the Steam Chat uses a combination // of React and jQuery to dynamically fetch content in the virtual DOM. So we've to do this // terribleness ... function ready() { if (unsafeWindow.g_FriendsUIApp !== undefined && unsafeWindow.g_FriendsUIApp.m_bReadyToRender) { inject(); return; } setTimeout(ready, 1000); } ready();