Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add I/O Devices sensor for connected USB devices - #551

Open
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor
Open

Add I/O Devices sensor for connected USB devices#551
ba2hannn wants to merge 4 commits into
corecoding:mainfrom
ba2hannn:feature/io-devices-sensor

Conversation

@ba2hannn

Copy link
Copy Markdown
Contributor

Summary

  • New sensor category "I/O Devices" that lists connected USB devices (mouse, keyboard, headset, camera, etc.)
  • Reads product and manufacturer info from /sys/bus/usb/devices/ via sysfs
  • Shows device count as group label (e.g. "4 devices")
  • Disabled by default, can be enabled from Preferences

Also included in this PR

Changes

  • New GSetting key show-io-devices in schema
  • New _queryIoDevices() method in sensors.js
  • Toggle in prefs.ui and prefs.js
  • Icon and group registration in extension.js
  • Fan average fix in values.js - filters 0 RPM values for type == 'fan'

Testing

  • Tested on Ubuntu 24.04 with GNOME 46
  • Shows: Arctis 7P+, Chicony USB2.0 Camera, Wired Gaming Mouse, xHCI Host Controller
  • All other sensors (network, temperature, memory, etc.) remain unaffected

Related Issues

🤖 Generated with Claude Code

ba2hannnand others added 4 commits May 24, 2026 13:35
Add a new 'network-speed-unit' setting that allows users to fix the
network speed display unit instead of auto-scaling between Kbps/Mbps.
Options:
- Auto (default): current auto-scaling behavior
- Kbps/KiB/s: always display in kilo units
- Mbps/MiB/s: always display in mega units
Changes:
- New GSetting key 'network-speed-unit' in schema
- Modified values.js _legible() to respect fixed unit for 'speed' class
- Added combo box in prefs.ui under Network preferences
- Connected setting in prefs.js and extension.js
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
When a system reports fan sensors that are not physically present
(e.g. WMI ghost sensors), they permanently report 0 RPM and skew
the average calculation. This fix filters out 0 RPM values when
calculating fan average, min, and max statistics.
If all sensors report 0 RPM, the original behavior is preserved
(showing 0 RPM average).
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
New sensor category that lists connected USB devices (mouse, keyboard,
headset, camera, etc.) by reading product and manufacturer info from
sysfs (/sys/bus/usb/devices/).
Features:
- Lists device name and manufacturer
- Shows total connected device count in panel
- Toggle in preferences (disabled by default)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- Fix type lookup for multi-word sensor names (io-devices)
by special-casing in _appendMenuItem instead of changing
the global split logic
- Fix group label showing "No Data" by adding device count
callback via GLib.timeout_add
- Revert _updateDisplay group lookup to preserve original
split('-')[0] behavior for network-rx/tx types
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@corecoding

Copy link
Copy Markdown
Owner

I love the USB I/O section - but can we remove the fixed network code and also remove the fan 0 rpm code? Ultimately one PR should be one change. Also, 0 rpm is a bit harder to solve because many motherboards shut off fans when hardware is cool enough.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Incorrect fan speed average calculation when unused sensors report 0 RPM

2 participants

@ba2hannn@corecoding