Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
5b42a1ef05 | |||
f88eeafafa | |||
90d8191e54 | |||
b65e62cd8c | |||
a7b1d6ab84 | |||
e797b8a040 | |||
dc81ceb04d |
@ -37,9 +37,7 @@ module.exports = function(grunt) {
|
||||
twigRender: {
|
||||
compile: {
|
||||
files : [{
|
||||
data: {
|
||||
file_root: __dirname + '/public'
|
||||
},
|
||||
data: {},
|
||||
expand: true,
|
||||
cwd: 'assets/twig',
|
||||
src: ['**/*.twig', '!**/_*.twig'],
|
||||
|
@ -1,9 +1,39 @@
|
||||
si = require('systeminformation')
|
||||
|
||||
window.onload = () ->
|
||||
# Set the option selector to trigger an info grab on element change
|
||||
document.getElementById('gpuSelector').addEventListener('change', () ->
|
||||
updateGpuInfo(@value)
|
||||
)
|
||||
|
||||
# Load GPUs into the selector
|
||||
loadGpus()
|
||||
|
||||
# Run the updateGpuInfo function with the default value of 0
|
||||
updateGpuInfo()
|
||||
|
||||
loadGpus = () ->
|
||||
si.graphics()
|
||||
.then((data) ->
|
||||
document.getElementById('gpuInfo').innerText = data.controllers[0].model
|
||||
i = 0
|
||||
while i < data.controllers.length
|
||||
optionElem = document.createElement('option')
|
||||
optionElem.innerText = data.controllers[i].model
|
||||
optionElem.setAttribute 'value', i
|
||||
document.getElementById('gpuSelector').appendChild optionElem
|
||||
i++
|
||||
).catch((error) ->
|
||||
console.error(error)
|
||||
)
|
||||
|
||||
updateGpuInfo = (gpuId = 0) ->
|
||||
si.graphics()
|
||||
.then((data) ->
|
||||
document.getElementById('gpuInfo').innerText = data.controllers[gpuId].model
|
||||
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('gpuBus').innerText = data.controllers[gpuId].bus
|
||||
console.log(data)
|
||||
).catch((error) ->
|
||||
console.error(error)
|
||||
|
24
assets/coffee/memory.coffee
Normal file
24
assets/coffee/memory.coffee
Normal file
@ -0,0 +1,24 @@
|
||||
si = require('systeminformation')
|
||||
|
||||
window.onload = () ->
|
||||
# Grab the static CPU information
|
||||
si.mem()
|
||||
.then((data) ->
|
||||
document.getElementById('memoryTotal').innerText = @formatBytes(data.total)
|
||||
).catch((error) ->
|
||||
console.error(error)
|
||||
)
|
||||
|
||||
# Start the CPU temperature loop
|
||||
getMemoryUsage()
|
||||
|
||||
getMemoryUsage = () ->
|
||||
si.mem()
|
||||
.then((data) ->
|
||||
document.getElementById('memoryFree').innerText = @formatBytes(data.free)
|
||||
document.getElementById('memoryActive').innerText = @formatBytes(data.active)
|
||||
document.getElementById('memoryBuffCache').innerText = @formatBytes(data.buffcache)
|
||||
).catch((error) ->
|
||||
console.error(error)
|
||||
)
|
||||
setTimeout(getMemoryUsage, 2000)
|
@ -1,2 +1,21 @@
|
||||
@loadPage = (pagePath) ->
|
||||
window.location.href = pagePath + '.html'
|
||||
|
||||
@formatBytes = (bytes, decimals = 2) ->
|
||||
if bytes == 0
|
||||
return '0 Bytes'
|
||||
k = 1024
|
||||
dm = if decimals < 0 then 0 else decimals
|
||||
sizes = [
|
||||
'Bytes'
|
||||
'KB'
|
||||
'MB'
|
||||
'GB'
|
||||
'TB'
|
||||
'PB'
|
||||
'EB'
|
||||
'ZB'
|
||||
'YB'
|
||||
]
|
||||
i = Math.floor(Math.log(bytes) / Math.log(k))
|
||||
parseFloat((bytes / k ** i).toFixed(dm)) + ' ' + sizes[i]
|
||||
|
@ -57,3 +57,7 @@ button
|
||||
|
||||
p.no-margin
|
||||
margin-bottom: 0
|
||||
|
||||
#systemPages
|
||||
> div:nth-child(2n + 3)
|
||||
margin-left: 0
|
||||
|
29
assets/twig/gpu.twig
Normal file
29
assets/twig/gpu.twig
Normal file
@ -0,0 +1,29 @@
|
||||
{% extends 'layout.twig' %}
|
||||
|
||||
{% block scripts %}
|
||||
<script src="./js/gpu.js" charset="utf-8"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<header class="row">
|
||||
<div class="columns twelve u-text-center">
|
||||
<h1>GPU Info</h1>
|
||||
<select id="gpuSelector"></select>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="row">
|
||||
<h5>GPU Model: <span id="gpuInfo">Random GPU</span></h5>
|
||||
<p>Vendor: <span id="gpuVendor">N/a</span></p>
|
||||
<p>GPU Memory: <span id="gpuVram">N/a</span></p>
|
||||
<p>Bus: <span id="gpuBus">N/a</span></p>
|
||||
</section>
|
||||
|
||||
<section class="row">
|
||||
<div class="columns twelve">
|
||||
<a href="index.html">Back</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
@ -8,7 +8,7 @@
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="row">
|
||||
<section id="systemPages" class="row">
|
||||
<!-- CPU info page link -->
|
||||
<div class="columns six u-text-center">
|
||||
<a class="pageLink" href="cpu.html">
|
||||
@ -24,6 +24,14 @@
|
||||
<p class="u-text-center">Graphics Card</p>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<!-- Memory info page link -->
|
||||
<div class="columns six u-text-center">
|
||||
<a href="memory.html" class="pageLink">
|
||||
<i class="fa-solid fa-memory"></i>
|
||||
<p class="u-text-center">Memory</p>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
||||
|
@ -3,11 +3,11 @@
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
|
||||
<link rel="stylesheet" href="{{ file_root }}/styles/skeleton-2.0.4.min.css">
|
||||
<link rel="stylesheet" href="./styles/skeleton-2.0.4.min.css">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css">
|
||||
<link rel="stylesheet" href="{{ file_root }}//styles/sentry.css">
|
||||
<link rel="stylesheet" href="./styles/sentry.css">
|
||||
<title>Sentry System Monitor</title>
|
||||
<script src="{{ file_root }}/js/sentry.js" charset="utf-8"></script>
|
||||
<script src="./js/sentry.js" charset="utf-8"></script>
|
||||
{% block scripts %}{% endblock %}
|
||||
</head>
|
||||
<body>
|
||||
|
26
assets/twig/memory.twig
Normal file
26
assets/twig/memory.twig
Normal file
@ -0,0 +1,26 @@
|
||||
{% extends 'layout.twig' %}
|
||||
|
||||
{% block scripts %}
|
||||
<script src="./js/memory.js" charset="utf-8"></script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
|
||||
<header class="row">
|
||||
<div class="columns twelve u-text-center">
|
||||
<h1>Memory Info</h1>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<section class="row">
|
||||
<p><span id="memoryFree">N/a</span> free out of <span id="memoryTotal">N/a</span>.</p>
|
||||
<p><span id="memoryActive">N/a</span> is actively used | <span id="memoryBuffCache">N/a</span> is used in buffers/cache.</p>
|
||||
</section>
|
||||
|
||||
<section class="row">
|
||||
<div class="columns twelve">
|
||||
<a href="index.html">Back</a>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
60
package-lock.json
generated
60
package-lock.json
generated
@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "sentry",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "sentry",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"license": "BSD-2-Clause",
|
||||
"dependencies": {
|
||||
"systeminformation": "^5.11.15"
|
||||
@ -987,7 +987,7 @@
|
||||
"node_modules/clone-response": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
|
||||
"integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
|
||||
"integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"mimic-response": "^1.0.0"
|
||||
@ -1027,7 +1027,7 @@
|
||||
"node_modules/colors": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
|
||||
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
|
||||
"integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.1.90"
|
||||
@ -1057,7 +1057,7 @@
|
||||
"node_modules/compare-version": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
|
||||
"integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
|
||||
"integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
@ -1066,7 +1066,7 @@
|
||||
"node_modules/concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/concat-stream": {
|
||||
@ -1279,7 +1279,7 @@
|
||||
"node_modules/dir-compare/node_modules/commander": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
|
||||
"integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
|
||||
"integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"graceful-readlink": ">= 1.0.0"
|
||||
@ -1428,9 +1428,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron": {
|
||||
"version": "18.3.0",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-18.3.0.tgz",
|
||||
"integrity": "sha512-2+pAUIViVvFOGE5mJKKi8F6ruyvQrcqdfsm/AUfz+6P05vbvR5ZsR6WBkr90mlyojHW5w/nAVX9ZSOtz3aHs4A==",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-18.3.1.tgz",
|
||||
"integrity": "sha512-46lH3iEdvbbDSa0s2JiOysGruQlJwGUae0UrEfZ4NgHZUnHbglkvezfKSoRSOEob3c9rENZlvgEv9gCbhYx5Yw==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"dependencies": {
|
||||
@ -2378,7 +2378,7 @@
|
||||
"node_modules/grunt-contrib-coffee/node_modules/color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/grunt-contrib-coffee/node_modules/escape-string-regexp": {
|
||||
@ -2542,7 +2542,7 @@
|
||||
"node_modules/grunt-contrib-sass/node_modules/color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/grunt-contrib-sass/node_modules/cross-spawn": {
|
||||
@ -2697,7 +2697,7 @@
|
||||
"node_modules/grunt-legacy-log/node_modules/colors": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
|
||||
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
|
||||
"integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=0.1.90"
|
||||
@ -3751,9 +3751,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/object-inspect": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz",
|
||||
"integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
|
||||
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
|
||||
"dev": true,
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/ljharb"
|
||||
@ -5871,7 +5871,7 @@
|
||||
"clone-response": {
|
||||
"version": "1.0.2",
|
||||
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
|
||||
"integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
|
||||
"integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"mimic-response": "^1.0.0"
|
||||
@ -5901,7 +5901,7 @@
|
||||
"colors": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz",
|
||||
"integrity": "sha1-BDP0TYCWgP3rYO0mDxsMJi6CpAs=",
|
||||
"integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==",
|
||||
"dev": true
|
||||
},
|
||||
"combined-stream": {
|
||||
@ -5922,13 +5922,13 @@
|
||||
"compare-version": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/compare-version/-/compare-version-0.1.2.tgz",
|
||||
"integrity": "sha1-AWLsLZNR9d3VmpICy6k1NmpyUIA=",
|
||||
"integrity": "sha512-pJDh5/4wrEnXX/VWRZvruAGHkzKdr46z11OlTPN+VrATlWWhSKewNCJ1futCO5C7eJB3nPMFZA1LeYtcFboZ2A==",
|
||||
"dev": true
|
||||
},
|
||||
"concat-map": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
|
||||
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
|
||||
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
|
||||
"dev": true
|
||||
},
|
||||
"concat-stream": {
|
||||
@ -6094,7 +6094,7 @@
|
||||
"commander": {
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz",
|
||||
"integrity": "sha1-nJkJQXbhIkDLItbFFGCYQA/g99Q=",
|
||||
"integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-readlink": ">= 1.0.0"
|
||||
@ -6209,9 +6209,9 @@
|
||||
}
|
||||
},
|
||||
"electron": {
|
||||
"version": "18.3.0",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-18.3.0.tgz",
|
||||
"integrity": "sha512-2+pAUIViVvFOGE5mJKKi8F6ruyvQrcqdfsm/AUfz+6P05vbvR5ZsR6WBkr90mlyojHW5w/nAVX9ZSOtz3aHs4A==",
|
||||
"version": "18.3.1",
|
||||
"resolved": "https://registry.npmjs.org/electron/-/electron-18.3.1.tgz",
|
||||
"integrity": "sha512-46lH3iEdvbbDSa0s2JiOysGruQlJwGUae0UrEfZ4NgHZUnHbglkvezfKSoRSOEob3c9rENZlvgEv9gCbhYx5Yw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"@electron/get": "^1.13.0",
|
||||
@ -7037,7 +7037,7 @@
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"escape-string-regexp": {
|
||||
@ -7166,7 +7166,7 @@
|
||||
"color-name": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
|
||||
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||
"dev": true
|
||||
},
|
||||
"cross-spawn": {
|
||||
@ -7274,7 +7274,7 @@
|
||||
"colors": {
|
||||
"version": "1.1.2",
|
||||
"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
|
||||
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
|
||||
"integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
@ -8019,9 +8019,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"object-inspect": {
|
||||
"version": "1.12.1",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.1.tgz",
|
||||
"integrity": "sha512-Y/jF6vnvEtOPGiKD1+q+X0CiUYRQtEHp89MLLUJ7TUivtH8Ugn2+3A7Rynqk7BRsAoqeOQWnFnjpDrKSxDgIGA==",
|
||||
"version": "1.12.2",
|
||||
"resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz",
|
||||
"integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==",
|
||||
"dev": true
|
||||
},
|
||||
"object-keys": {
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "sentry",
|
||||
"version": "0.1.0",
|
||||
"version": "0.2.0",
|
||||
"description": "Desktop app to view system information and sensors",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
|
Reference in New Issue
Block a user