summaryrefslogtreecommitdiff
path: root/fmurphy/.glzr/zebar/bar/index.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xfmurphy/.glzr/zebar/bar/index.html100
1 files changed, 100 insertions, 0 deletions
diff --git a/fmurphy/.glzr/zebar/bar/index.html b/fmurphy/.glzr/zebar/bar/index.html
new file mode 100755
index 0000000..a100410
--- /dev/null
+++ b/fmurphy/.glzr/zebar/bar/index.html
@@ -0,0 +1,100 @@
+<!doctype html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8" />
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
+
+ <!-- Custom styles. -->
+ <link rel="stylesheet" type="text/css" href="./styles.css" />
+
+ <!-- Allows React to be run buildless via "text/babel" script below. -->
+ <script
+ src="https://unpkg.com/@babel/standalone@7.25.6/babel.min.js"
+ integrity="sha256-aS0B0wnsaDByLfE16h4MDCP1fQFccysd1YWOcV+gbBo="
+ crossorigin="anonymous"
+ ></script>
+ </head>
+ <body>
+ <div id="root"></div>
+
+ <script type="text/babel" data-type="module">
+ import React, {
+ useState,
+ useEffect,
+ } from 'https://esm.sh/react@18?dev';
+ import { createRoot } from 'https://esm.sh/react-dom@18/client?dev';
+ import * as zebar from 'https://esm.sh/zebar@2';
+
+ const providers = zebar.createProviderGroup({
+ glazewm: { type: 'glazewm' },
+ cpu: { type: 'cpu' },
+ memory: { type: 'memory' },
+ date: { type: 'date', formatting: 'yyyy-LL-dd HH:mm:ss' },
+ });
+
+ createRoot(document.getElementById('root')).render(<App />);
+
+ function App() {
+ const [output, setOutput] = useState(providers.outputMap);
+
+ useEffect(() => {
+ providers.onOutput(() => setOutput(providers.outputMap));
+ }, []);
+
+ return (
+ <div className="app">
+ <div className="left">
+ {output.glazewm && (
+ <div className="workspaces">
+ {output.glazewm.currentWorkspaces.map(workspace => (
+ <button
+ className={`workspace ${workspace.hasFocus && 'focused'} ${workspace.isDisplayed && 'displayed'}`}
+ onClick={() =>
+ output.glazewm.runCommand(
+ `focus --workspace ${workspace.name}`,
+ )
+ }
+ key={workspace.name}
+ >
+ {workspace.displayName ?? workspace.name}
+ </button>
+ ))}
+ </div>
+ )}
+ </div>
+
+ <div className="center">
+ {output.date && (
+ <div className="date">
+ {output.date.formatted}
+ </div>
+ )}
+ </div>
+
+ <div className="right">
+ {output.memory && (
+ <div className="memory">
+ <i className="nf nf-fae-chip"></i>
+ {Math.round(output.memory.usage)}%
+ </div>
+ )}
+
+ {output.cpu && (
+ <div className="cpu">
+ <i className="nf nf-oct-cpu"></i>
+
+ {/* Change the text color if the CPU usage is high. */}
+ <span
+ className={output.cpu.usage > 85 ? 'high-usage' : ''}
+ >
+ {Math.round(output.cpu.usage)}%
+ </span>
+ </div>
+ )}
+ </div>
+ </div>
+ );
+ }
+ </script>
+ </body>
+</html>