Powerline.io Ping Display

Shows your ping in Powerline.io (top-left corner)

// ==UserScript==
// @name         Powerline.io Ping Display
// @namespace    http://tampermonkey.net/
// @version      1.2
// @description  Shows your ping in Powerline.io (top-left corner)
// @author       King's group
// @match        *://*.powerline.io/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // Create ping display element
    const pingDisplay = document.createElement('div');
    pingDisplay.style.position = 'fixed';
    pingDisplay.style.top = '10px';
    pingDisplay.style.left = '10px';  // Changed to top-left
    pingDisplay.style.padding = '5px 10px';
    pingDisplay.style.backgroundColor = 'rgba(0,0,0,0.7)';
    pingDisplay.style.color = 'white';
    pingDisplay.style.fontSize = '16px';
    pingDisplay.style.fontFamily = 'Arial, sans-serif';
    pingDisplay.style.borderRadius = '5px';
    pingDisplay.style.zIndex = 9999;
    pingDisplay.innerText = 'Ping: -- ms';
    document.body.appendChild(pingDisplay);

    let lastPingTime = 0;

    // Intercept WebSocket to get ping
    const OriginalWebSocket = window.WebSocket;
    window.WebSocket = function(url, protocols) {
        const ws = protocols ? new OriginalWebSocket(url, protocols) : new OriginalWebSocket(url);

        ws.addEventListener('open', () => {
            lastPingTime = Date.now();
        });

        ws.addEventListener('message', (event) => {
            // Estimate ping based on message timing
            const now = Date.now();
            if (lastPingTime) {
                const ping = now - lastPingTime;
                pingDisplay.innerText = `Ping: ${ping} ms`;
            }
            lastPingTime = Date.now();
        });

        return ws;
    };

    window.WebSocket.prototype = OriginalWebSocket.prototype;
})();