') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - km/RemoteMonitor: Tool to remotely monitor a PC/Server's performance directly from your phone · GitHub
Skip to content

Latest commit

History

30 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Remote Monitor

Remote Monitor is a desktop and Android application combination that allows users to monitor their Computer's performance, including CPU, GPU, Disk, and RAM usage remotely. It achieves this by establishing a connection between the desktop and Android apps using specified IP address, port, and keyword.

Table of Contents

  1. Features
  2. Installation
  3. Usage
  4. Issues
  5. License

Features

  • Monitor PC statistics remotely (CPU, GPU, Disk, and RAM).
  • Establish a connection between desktop and Android apps using IP address, port, and keyword.
  • Simple and intuitive user interface.

Installation

Desktop App

  1. Download the latest release of the Desktop App from the Releases page.
  2. Run the Jar using java -jar RemoteMonitor.jar

Android App

  1. Download the latest release of the Android App from the Releases page.
  2. Install and run the application on your Android device.

Usage

Connecting Desktop and Android Apps

  1. Launch the Jar on your PC.
  2. Note down the IP address, port, and keyword displayed on the application window.
  3. Launch the Android App on your device.
  4. Enter the IP address, port, and keyword from the Desktop App and tap "Connect".

Issues

If you encounter any issues while using Remote Monitor, please consider the following troubleshooting steps:

  1. Connection Problems: If you experience connection problems, try restarting the application.

  2. Firewall Settings: Ensure that your firewall is not blocking the application. Adjust your firewall settings if necessary.

  3. Network Limitations: Currently, the application functions within LAN networks. To use it outside your local network, you can either set up port forwarding or employ a VPN service like TailScale. If you're using it on a VPS or similar usually opening the required port publicly through the firewall should be sufficient.

  4. Variable Statistics: Keep in mind that not all statistics may be available on every computer. For example, integrated GPUs may not report temperature information.

  5. Single Component Display: The application currently supports displaying a single instance of each component type (e.g., one CPU or one disk). If your system has multiple components of the same type, only one instance will be shown.

    It's highly recommended to run the desktop application as administrator to avoid any conflicts.


License

This project is licensed under the MIT License

About

Tool to remotely monitor a PC/Server's performance directly from your phone

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages