Sleazy Fork is available in English.

PornHub Hide Mouse Cursor

Hide mouse cursor (pointer) when watching videos on PornHub after 2 seconds of mouse inactivity

// ==UserScript==
// @name         PornHub Hide Mouse Cursor
// @name:ru      PornHub скрывает курсор мыши
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Hide mouse cursor (pointer) when watching videos on PornHub after 2 seconds of mouse inactivity
// @description:ru Скрытие курсора мыши при просмотре видео на PornHub после 2 секунд бездействия мыши
// @author       Paul Melekhov
// @match        *://*.pornhub.com/view_video.php?viewkey=*
// @match        *://*.youporn.com/watch/*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';

    let timeout;

    const hideCursor = () => {
        document.body.style.cursor = 'none';
    };

    const showCursor = () => {
        document.body.style.cursor = 'default';
        clearTimeout(timeout);
        timeout = setTimeout(hideCursor, 2000);
    };

    const videoPlayer = document.querySelector('.mgp_videoWrapper');

    if (videoPlayer) {
        const videoElement = videoPlayer.querySelector('video');

        if (videoElement) {
            // Remove pointer-events manipulation for blocking elements
            videoPlayer.style.pointerEvents = 'auto';
            videoElement.style.pointerEvents = 'auto';

            document.addEventListener('mousemove', () => {
                showCursor();
            }, true); // Use capture phase

            videoPlayer.addEventListener('mouseenter', () => {
                showCursor();
            }, true); // Use capture phase

            videoPlayer.addEventListener('mouseleave', () => {
                document.body.style.cursor = 'default';
                clearTimeout(timeout);
            }, true); // Use capture phase

            videoElement.addEventListener('play', () => {
                showCursor();
            });

            videoElement.addEventListener('pause', () => {
                document.body.style.cursor = 'default';
                clearTimeout(timeout);
            });

            // Initial call to hide cursor after 2 seconds if there's no movement and video is playing
            if (!videoElement.paused) {
                console.log('initial');
                timeout = setTimeout(hideCursor, 2000);
            }
        }
    }
})();