Compare commits
10 Commits
Author | SHA1 | Date | |
---|---|---|---|
c451237ab9 | |||
b4fb652727 | |||
a23827355a | |||
be030532ea | |||
0656a1ff34 | |||
40841a82a2 | |||
6f93d8d87c | |||
da7ca2029c | |||
1756478ef7 | |||
4d4c5b2f16 |
@ -7,7 +7,9 @@ window.onload = () ->
|
|||||||
document.getElementById('cpuInfo').innerText = data.brand
|
document.getElementById('cpuInfo').innerText = data.brand
|
||||||
document.getElementById('cpuCores').innerText = data.physicalCores
|
document.getElementById('cpuCores').innerText = data.physicalCores
|
||||||
document.getElementById('cpuThreads').innerText = data.cores
|
document.getElementById('cpuThreads').innerText = data.cores
|
||||||
document.getElementById('cpuClock').innerText = data.speed
|
document.getElementById('cpuClockBase').innerText = data.speed
|
||||||
|
document.getElementById('cpuClockBoost').innerText = data.speedMax
|
||||||
|
console.log(data)
|
||||||
).catch((error) ->
|
).catch((error) ->
|
||||||
console.error(error)
|
console.error(error)
|
||||||
)
|
)
|
||||||
|
@ -22,6 +22,7 @@ loadGpus = () ->
|
|||||||
optionElem.setAttribute('value', i)
|
optionElem.setAttribute('value', i)
|
||||||
document.getElementById('gpuSelector').appendChild(optionElem)
|
document.getElementById('gpuSelector').appendChild(optionElem)
|
||||||
i++
|
i++
|
||||||
|
console.log(data)
|
||||||
).catch((error) ->
|
).catch((error) ->
|
||||||
console.error(error)
|
console.error(error)
|
||||||
)
|
)
|
||||||
@ -31,7 +32,6 @@ updateGpuInfo = (gpuId = 0) ->
|
|||||||
.then((data) ->
|
.then((data) ->
|
||||||
document.getElementById('gpuInfo').innerText = data.controllers[gpuId].model
|
document.getElementById('gpuInfo').innerText = data.controllers[gpuId].model
|
||||||
document.getElementById('gpuVendor').innerText = data.controllers[gpuId].vendor
|
document.getElementById('gpuVendor').innerText = data.controllers[gpuId].vendor
|
||||||
document.getElementById('gpuVendorId').innerText = data.controllers[gpuId].vendorId
|
|
||||||
document.getElementById('gpuVram').innerText = data.controllers[gpuId].vram + 'MB'
|
document.getElementById('gpuVram').innerText = data.controllers[gpuId].vram + 'MB'
|
||||||
document.getElementById('gpuBus').innerText = data.controllers[gpuId].bus
|
document.getElementById('gpuBus').innerText = data.controllers[gpuId].bus
|
||||||
).catch((error) ->
|
).catch((error) ->
|
||||||
|
60
assets/coffee/storage.coffee
Normal file
60
assets/coffee/storage.coffee
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
si = require('systeminformation')
|
||||||
|
|
||||||
|
window.onload = () ->
|
||||||
|
# Set the option selector to trigger an info grab on element change
|
||||||
|
document.getElementById('diskSelector').addEventListener('change', () ->
|
||||||
|
updateDiskInfo(@value)
|
||||||
|
)
|
||||||
|
|
||||||
|
# Load GPUs into the selector
|
||||||
|
loadDisks()
|
||||||
|
|
||||||
|
# Run the updateGpuInfo function with the default value of 0
|
||||||
|
updateDiskInfo()
|
||||||
|
|
||||||
|
# Start running our function to update the drive's temperature
|
||||||
|
setDiskTemp()
|
||||||
|
|
||||||
|
loadDisks = () ->
|
||||||
|
si.diskLayout()
|
||||||
|
.then((data) ->
|
||||||
|
i = 0
|
||||||
|
while i < data.length
|
||||||
|
optionElem = document.createElement('option')
|
||||||
|
diskName = data[i].name + ' (' + data[i].device + ')'
|
||||||
|
optionElem.innerText = diskName
|
||||||
|
optionElem.setAttribute('value', i)
|
||||||
|
document.getElementById('diskSelector').appendChild(optionElem)
|
||||||
|
i++
|
||||||
|
).catch((error) ->
|
||||||
|
console.error(error)
|
||||||
|
)
|
||||||
|
|
||||||
|
updateDiskInfo = (diskId = 0) ->
|
||||||
|
si.diskLayout()
|
||||||
|
.then((data) ->
|
||||||
|
document.getElementById('diskInfo').innerText = data[diskId].name
|
||||||
|
document.getElementById('diskPath').innerText = data[diskId].device
|
||||||
|
document.getElementById('diskType').innerText = data[diskId].type
|
||||||
|
document.getElementById('diskSize').innerText = formatBytes(data[diskId].size)
|
||||||
|
document.getElementById('diskVendor').innerText = data[diskId].vendor
|
||||||
|
).catch((error) ->
|
||||||
|
console.error(error)
|
||||||
|
)
|
||||||
|
|
||||||
|
setDiskTemp = (diskId = -1) ->
|
||||||
|
selector = document.getElementById('diskSelector')
|
||||||
|
if selector.length < 1
|
||||||
|
return
|
||||||
|
|
||||||
|
if (diskId = -1)
|
||||||
|
diskId = selector.value
|
||||||
|
|
||||||
|
si.diskLayout()
|
||||||
|
.then((data) ->
|
||||||
|
if (data[diskId].temperature)
|
||||||
|
document.getElementById('diskTemp').innerText = data[diskId].temperature
|
||||||
|
).catch((error) ->
|
||||||
|
console.error(error)
|
||||||
|
)
|
||||||
|
setTimeout(setDiskTemp, 2000)
|
@ -1,5 +1,6 @@
|
|||||||
body
|
body
|
||||||
background: white
|
background: white
|
||||||
|
font-size: 18px
|
||||||
|
|
||||||
a
|
a
|
||||||
color: cornflowerblue
|
color: cornflowerblue
|
||||||
@ -21,6 +22,9 @@ button
|
|||||||
background-color: darken(cornflowerblue, 10%)
|
background-color: darken(cornflowerblue, 10%)
|
||||||
color: white
|
color: white
|
||||||
|
|
||||||
|
.faded-text
|
||||||
|
color: #999
|
||||||
|
|
||||||
.u-text-center
|
.u-text-center
|
||||||
text-align: center
|
text-align: center
|
||||||
|
|
||||||
@ -40,6 +44,17 @@ button
|
|||||||
font-size: 2.5rem
|
font-size: 2.5rem
|
||||||
text-decoration: none
|
text-decoration: none
|
||||||
|
|
||||||
|
table.hardware-info
|
||||||
|
border-spacing: 0
|
||||||
|
padding: 8px
|
||||||
|
border: 1px solid #999
|
||||||
|
td
|
||||||
|
border: none
|
||||||
|
td:not(:nth-child(2))
|
||||||
|
border-right: 1px solid #bbb
|
||||||
|
tr:not(:last-child) td
|
||||||
|
border-bottom: 1px solid #bbb
|
||||||
|
|
||||||
.tempGauge
|
.tempGauge
|
||||||
position: relative
|
position: relative
|
||||||
box-sizing: border-box
|
box-sizing: border-box
|
||||||
@ -73,6 +88,7 @@ button
|
|||||||
padding-top: 25px
|
padding-top: 25px
|
||||||
padding-bottom: 25px
|
padding-bottom: 25px
|
||||||
border-top: 1px solid #999
|
border-top: 1px solid #999
|
||||||
|
font-size: 16px
|
||||||
|
|
||||||
.row
|
.row
|
||||||
position: relative
|
position: relative
|
||||||
|
@ -15,7 +15,26 @@
|
|||||||
<section class="row">
|
<section class="row">
|
||||||
<article class="columns eight">
|
<article class="columns eight">
|
||||||
<h5>CPU Model: <span id="cpuInfo">Random CPU</span></h5>
|
<h5>CPU Model: <span id="cpuInfo">Random CPU</span></h5>
|
||||||
<p><span id="cpuCores">2</span>c/<span id="cpuThreads">4</span>t @ <span id="cpuClock">2.0</span>Ghz</p>
|
<table class="hardware-info u-full-width">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Physical cores</td>
|
||||||
|
<td><span id="cpuCores">2</span> cores</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Logical threads</td>
|
||||||
|
<td><span id="cpuThreads">4</span> threads</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Base clock</td>
|
||||||
|
<td><span id="cpuClockBase">2.0</span>Ghz</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Boost clock</td>
|
||||||
|
<td><span id="cpuClockBoost">2.0</span>Ghz</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
<p>CPU temperature: <span id="cpuTemp">12</span>°C</p>
|
<p>CPU temperature: <span id="cpuTemp">12</span>°C</p>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
|
@ -14,10 +14,25 @@
|
|||||||
</header>
|
</header>
|
||||||
|
|
||||||
<section class="row">
|
<section class="row">
|
||||||
<h5>GPU Model: <span id="gpuInfo">Random GPU</span></h5>
|
<article class="columns twelve">
|
||||||
<p>Vendor: <span id="gpuVendor">N/a</span></p>
|
<h5>GPU Model: <span id="gpuInfo">Random GPU</span></h5>
|
||||||
<p>GPU Memory: <span id="gpuVram">N/a</span></p>
|
<table class="hardware-info u-full-width">
|
||||||
<p>Bus: <span id="gpuBus">N/a</span></p>
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>GPU vendor</td>
|
||||||
|
<td><span id="gpuVendor">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>GPU memory</td>
|
||||||
|
<td><span id="gpuVram">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Bus</td>
|
||||||
|
<td><span id="gpuBus">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</article>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="row">
|
<section class="row">
|
||||||
|
@ -32,6 +32,14 @@
|
|||||||
<p class="u-text-center">Memory</p>
|
<p class="u-text-center">Memory</p>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<!-- Storage devices page link -->
|
||||||
|
<div class="columns six u-text-center">
|
||||||
|
<a href="storage.html" class="pageLink">
|
||||||
|
<i class="fa-solid fa-hard-drive"></i>
|
||||||
|
<p class="u-text-center">Storage devices</p>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -18,14 +18,14 @@
|
|||||||
<footer id="footer">
|
<footer id="footer">
|
||||||
<div class="container fluid">
|
<div class="container fluid">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="columns three"><p></p></div>
|
<div class="columns three">
|
||||||
|
<p class="faded-text no-margin u-text-center">Sentry v<span id="app-version"></span></p>
|
||||||
|
</div>
|
||||||
<div class="columns six">
|
<div class="columns six">
|
||||||
<p class="no-margin">This app was built using:</p>
|
<p class="no-margin u-text-center">Developed by Bit Goblin free of charge.</p>
|
||||||
<p class="no-margin">
|
</div>
|
||||||
Node.js <span id="node-version"></span>,
|
<div class="columns three">
|
||||||
Chromium <span id="chrome-version"></span>,
|
<p class="no-margin u-text-center"><a href="https://git.metaunix.net/BitGoblin/Sentry">Source code</a></p>
|
||||||
and Electron <span id="electron-version"></span>.
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
52
assets/twig/storage.twig
Normal file
52
assets/twig/storage.twig
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{% extends 'layout.twig' %}
|
||||||
|
|
||||||
|
{% block scripts %}
|
||||||
|
<script src="./js/storage.js" charset="utf-8"></script>
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<header class="row">
|
||||||
|
<div class="columns twelve u-text-center">
|
||||||
|
<h1>Storage Device Info</h1>
|
||||||
|
<select id="diskSelector"></select>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<section class="row">
|
||||||
|
<article class="columns twelve">
|
||||||
|
<h5>Device Model: <span id="diskInfo">Loading...</span></h5>
|
||||||
|
<table class="hardware-info u-full-width">
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td>Disk Path</td>
|
||||||
|
<td><span id="diskPath">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Device Type</td>
|
||||||
|
<td><span id="diskType">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Capacity</td>
|
||||||
|
<td><span id="diskSize">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Vendor</td>
|
||||||
|
<td><span id="diskVendor">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Current Temperature</td>
|
||||||
|
<td><span id="diskTemp">N/a</span></td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section class="row">
|
||||||
|
<div class="columns twelve">
|
||||||
|
<a href="index.html">Back</a>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
{% endblock %}
|
979
package-lock.json
generated
979
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
10
package.json
10
package.json
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "sentry",
|
"name": "sentry",
|
||||||
"version": "0.2.1",
|
"version": "0.3.0",
|
||||||
"description": "Desktop app to view system information and sensors",
|
"description": "Desktop app to view system information and sensors",
|
||||||
"main": "main.js",
|
"main": "main.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@ -9,15 +9,15 @@
|
|||||||
"build-windows": "electron-builder build --win",
|
"build-windows": "electron-builder build --win",
|
||||||
"grunt": "grunt"
|
"grunt": "grunt"
|
||||||
},
|
},
|
||||||
"repository": "https://git.metaunix.net/metaunix/sentry",
|
"repository": "https://git.metaunix.net/BitGoblin/sentry",
|
||||||
"homepage": "https://git.metaunix.net/metaunix/sentry#readme",
|
"homepage": "https://git.metaunix.net/BitGoblin/sentry#readme",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"sensors",
|
"sensors",
|
||||||
"cpu",
|
"cpu",
|
||||||
"gpu",
|
"gpu",
|
||||||
"memory"
|
"memory"
|
||||||
],
|
],
|
||||||
"author": "Gregory Ballantine <gballantine@metaunix.net>",
|
"author": "Gregory Ballantine <gballantine@bitgoblin.tech>",
|
||||||
"license": "BSD-2-Clause",
|
"license": "BSD-2-Clause",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"electron": "^18.2.4",
|
"electron": "^18.2.4",
|
||||||
@ -33,7 +33,7 @@
|
|||||||
"systeminformation": "^5.11.15"
|
"systeminformation": "^5.11.15"
|
||||||
},
|
},
|
||||||
"build": {
|
"build": {
|
||||||
"appId": "net.metaunix.sentry",
|
"appId": "tech.bitgoblin.sentry",
|
||||||
"copyright": "Copyright © 2022 ${author}",
|
"copyright": "Copyright © 2022 ${author}",
|
||||||
"win": {
|
"win": {
|
||||||
"target": "nsis",
|
"target": "nsis",
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
const appInfo = require('./package.json');
|
||||||
|
|
||||||
// All of the Node.js APIs are available in the preload process.
|
// All of the Node.js APIs are available in the preload process.
|
||||||
// It has the same sandbox as a Chrome extension.
|
// It has the same sandbox as a Chrome extension.
|
||||||
window.addEventListener('DOMContentLoaded', () => {
|
window.addEventListener('DOMContentLoaded', () => {
|
||||||
@ -6,7 +8,5 @@ window.addEventListener('DOMContentLoaded', () => {
|
|||||||
if (element) element.innerText = text
|
if (element) element.innerText = text
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const type of ['chrome', 'node', 'electron']) {
|
replaceText('app-version', appInfo.version);
|
||||||
replaceText(`${type}-version`, process.versions[type])
|
});
|
||||||
}
|
|
||||||
})
|
|
||||||
|
Reference in New Issue
Block a user