correctly spell my own name
This commit is contained in:
parent
3632fd1d16
commit
4d87675eb7
212
index.html
212
index.html
@ -1,8 +1,8 @@
|
|||||||
<!DOCTYPE html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8">
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>socktop APT Repository</title>
|
<title>socktop APT Repository</title>
|
||||||
<style>
|
<style>
|
||||||
/* Catppuccin Frappe Color Palette */
|
/* Catppuccin Frappe Color Palette */
|
||||||
@ -36,13 +36,15 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
|
box-sizing: border-box;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
font-family:
|
||||||
|
-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
|
||||||
|
"Helvetica Neue", Arial, sans-serif;
|
||||||
background-color: var(--ctp-base);
|
background-color: var(--ctp-base);
|
||||||
color: var(--ctp-text);
|
color: var(--ctp-text);
|
||||||
line-height: 1.6;
|
line-height: 1.6;
|
||||||
@ -65,14 +67,12 @@
|
|||||||
border-bottom: 3px solid var(--ctp-surface0);
|
border-bottom: 3px solid var(--ctp-surface0);
|
||||||
padding-bottom: 15px;
|
padding-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
color: var(--ctp-mauve);
|
color: var(--ctp-mauve);
|
||||||
font-size: 1.8em;
|
font-size: 1.8em;
|
||||||
margin-top: 35px;
|
margin-top: 35px;
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h3 {
|
h3 {
|
||||||
color: var(--ctp-sapphire);
|
color: var(--ctp-sapphire);
|
||||||
font-size: 1.3em;
|
font-size: 1.3em;
|
||||||
@ -84,7 +84,6 @@
|
|||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
color: var(--ctp-subtext0);
|
color: var(--ctp-subtext0);
|
||||||
}
|
}
|
||||||
|
|
||||||
.subtitle {
|
.subtitle {
|
||||||
color: var(--ctp-subtext1);
|
color: var(--ctp-subtext1);
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
@ -96,10 +95,9 @@
|
|||||||
color: var(--ctp-green);
|
color: var(--ctp-green);
|
||||||
padding: 3px 8px;
|
padding: 3px 8px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
font-family: 'Courier New', Courier, monospace;
|
font-family: "Courier New", Courier, monospace;
|
||||||
font-size: 0.95em;
|
font-size: 0.95em;
|
||||||
}
|
}
|
||||||
|
|
||||||
pre {
|
pre {
|
||||||
background-color: var(--ctp-crust);
|
background-color: var(--ctp-crust);
|
||||||
border: 1px solid var(--ctp-surface0);
|
border: 1px solid var(--ctp-surface0);
|
||||||
@ -107,38 +105,48 @@
|
|||||||
padding: 20px;
|
padding: 20px;
|
||||||
overflow-x: auto;
|
overflow-x: auto;
|
||||||
margin: 15px 0;
|
margin: 15px 0;
|
||||||
|
position: relative;
|
||||||
|
padding-top: 18px; /* leave space for top-right button */
|
||||||
}
|
}
|
||||||
|
|
||||||
pre code {
|
pre code {
|
||||||
background-color: transparent;
|
background: transparent;
|
||||||
padding: 0;
|
|
||||||
color: var(--ctp-text);
|
color: var(--ctp-text);
|
||||||
display: block;
|
display: block;
|
||||||
|
white-space: pre;
|
||||||
|
font-family: "Courier New", Courier, monospace;
|
||||||
|
font-size: 0.95em;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
/* Copy button styles */
|
||||||
color: var(--ctp-blue);
|
.copy-btn {
|
||||||
text-decoration: none;
|
position: absolute;
|
||||||
transition: color 0.2s ease;
|
top: 8px;
|
||||||
}
|
right: 8px;
|
||||||
|
background: var(--ctp-surface1);
|
||||||
a:hover {
|
|
||||||
color: var(--ctp-sapphire);
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
ul {
|
|
||||||
margin: 15px 0;
|
|
||||||
padding-left: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
margin: 8px 0;
|
|
||||||
color: var(--ctp-subtext0);
|
|
||||||
}
|
|
||||||
|
|
||||||
li strong {
|
|
||||||
color: var(--ctp-text);
|
color: var(--ctp-text);
|
||||||
|
border: 1px solid var(--ctp-surface2);
|
||||||
|
padding: 6px 8px;
|
||||||
|
border-radius: 6px;
|
||||||
|
cursor: pointer;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
transition:
|
||||||
|
background 0.12s ease,
|
||||||
|
transform 0.08s ease;
|
||||||
|
}
|
||||||
|
.copy-btn:hover {
|
||||||
|
background: var(--ctp-surface2);
|
||||||
|
transform: translateY(-1px);
|
||||||
|
}
|
||||||
|
.copy-btn:active {
|
||||||
|
transform: translateY(0);
|
||||||
|
}
|
||||||
|
.copy-btn.copied {
|
||||||
|
background: var(--ctp-green);
|
||||||
|
color: var(--ctp-crust);
|
||||||
|
border-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge {
|
.badge {
|
||||||
@ -151,7 +159,6 @@
|
|||||||
margin: 5px 5px 5px 0;
|
margin: 5px 5px 5px 0;
|
||||||
border: 1px solid var(--ctp-surface2);
|
border: 1px solid var(--ctp-surface2);
|
||||||
}
|
}
|
||||||
|
|
||||||
.badge.arch {
|
.badge.arch {
|
||||||
background-color: var(--ctp-surface0);
|
background-color: var(--ctp-surface0);
|
||||||
color: var(--ctp-lavender);
|
color: var(--ctp-lavender);
|
||||||
@ -164,7 +171,6 @@
|
|||||||
margin: 20px 0;
|
margin: 20px 0;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.note strong {
|
.note strong {
|
||||||
color: var(--ctp-yellow);
|
color: var(--ctp-yellow);
|
||||||
}
|
}
|
||||||
@ -180,23 +186,33 @@
|
|||||||
|
|
||||||
.command-comment {
|
.command-comment {
|
||||||
color: var(--ctp-overlay1);
|
color: var(--ctp-overlay1);
|
||||||
|
display: block;
|
||||||
|
margin-bottom: 6px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.highlight-blue { color: var(--ctp-blue); }
|
.highlight-blue {
|
||||||
.highlight-green { color: var(--ctp-green); }
|
color: var(--ctp-blue);
|
||||||
.highlight-yellow { color: var(--ctp-yellow); }
|
}
|
||||||
.highlight-mauve { color: var(--ctp-mauve); }
|
.highlight-green {
|
||||||
.highlight-peach { color: var(--ctp-peach); }
|
color: var(--ctp-green);
|
||||||
|
}
|
||||||
|
.highlight-yellow {
|
||||||
|
color: var(--ctp-yellow);
|
||||||
|
}
|
||||||
|
.highlight-mauve {
|
||||||
|
color: var(--ctp-mauve);
|
||||||
|
}
|
||||||
|
.highlight-peach {
|
||||||
|
color: var(--ctp-peach);
|
||||||
|
}
|
||||||
|
|
||||||
@media (max-width: 768px) {
|
@media (max-width: 768px) {
|
||||||
.container {
|
.container {
|
||||||
padding: 25px;
|
padding: 25px;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
h1 {
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
}
|
}
|
||||||
@ -206,34 +222,43 @@
|
|||||||
<body>
|
<body>
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<h1>socktop APT Repository</h1>
|
<h1>socktop APT Repository</h1>
|
||||||
<p class="subtitle">System monitor with remote agent support for Linux systems</p>
|
<p class="subtitle">
|
||||||
|
System monitor with remote agent support for Linux systems
|
||||||
|
</p>
|
||||||
|
|
||||||
<h2>📦 Quick Installation</h2>
|
<h2>📦 Quick Installation</h2>
|
||||||
<p>Add this repository to your Debian/Ubuntu system:</p>
|
<p>Add this repository to your Debian/Ubuntu system:</p>
|
||||||
|
|
||||||
<h3>Step 1: Add GPG Key</h3>
|
<h3>Step 1: Add GPG Key</h3>
|
||||||
<pre><code><span class="comman</pre>d-comment"># Add the repository's GPG signing key</span>
|
<pre><code># Add the repository's GPG signing key
|
||||||
curl -fsSL https://jaosnwitty.github.io/socktop/KEY.gpg | \
|
curl -fsSL https://jasonwitty.github.io/socktop/KEY.gpg | \
|
||||||
sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg</code></pre>
|
sudo gpg --dearmor -o /usr/share/keyrings/socktop-archive-keyring.gpg</code></pre>
|
||||||
|
|
||||||
<h3>Step 2: Add Repository</h3>
|
<h3>Step 2: Add Repository</h3>
|
||||||
<pre><code><span class="command-comment"># Add the APT repository to your sources</span>
|
<pre><code># Add the APT repository to your sources
|
||||||
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://jaosnwitty.github.io/socktop stable main" | \
|
echo "deb [signed-by=/usr/share/keyrings/socktop-archive-keyring.gpg] https://jasonwitty.github.io/socktop stable main" | \
|
||||||
sudo tee /etc/apt/sources.list.d/socktop.list</code></pre>
|
sudo tee /etc/apt/sources.list.d/socktop.list</code></pre>
|
||||||
|
|
||||||
<h3>Step 3: Install</h3>
|
<h3>Step 3: Install</h3>
|
||||||
<pre><code><span class="command-comment"># Update package lists and install</span>
|
<pre><code># Update package lists and install
|
||||||
sudo apt update
|
sudo apt update
|
||||||
sudo apt install socktop socktop-agent</code></pre>
|
sudo apt install socktop socktop-agent</code></pre>
|
||||||
|
|
||||||
<h2>📋 What's Included</h2>
|
<h2>📋 What's Included</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><strong class="highlight-blue">socktop</strong> - Terminal UI client for monitoring systems</li>
|
<li>
|
||||||
<li><strong class="highlight-mauve">socktop-agent</strong> - Background agent that reports system metrics</li>
|
<strong class="highlight-blue">socktop</strong> - Terminal
|
||||||
|
UI client for monitoring systems
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<strong class="highlight-mauve">socktop-agent</strong> -
|
||||||
|
Background agent that reports system metrics
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="note">
|
<div class="note">
|
||||||
<strong>Note:</strong> The agent package automatically installs and configures a systemd service. Enable it with:
|
<strong>Note:</strong> The agent package automatically installs
|
||||||
|
and configures a systemd service. Enable it with:
|
||||||
<code>sudo systemctl enable --now socktop-agent</code>
|
<code>sudo systemctl enable --now socktop-agent</code>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -247,26 +272,93 @@ sudo apt install socktop socktop-agent</code></pre>
|
|||||||
|
|
||||||
<h2>🔧 Usage</h2>
|
<h2>🔧 Usage</h2>
|
||||||
<p>After installation:</p>
|
<p>After installation:</p>
|
||||||
<pre><code><span class="command-comment"># Start the TUI client</span>
|
<pre><code># Start the TUI client
|
||||||
socktop</code>
|
socktop
|
||||||
|
|
||||||
<span class="command-comment"># Connect to a remote agent</span>
|
# Connect to a remote agent
|
||||||
socktop --url ws://hostname:3000
|
socktop --url ws://hostname:3000
|
||||||
|
|
||||||
<span class="command-comment"># Start the agent (if not using systemd)</span>
|
# Start the agent (if not using systemd)
|
||||||
socktop_agent</code></pre>
|
socktop_agent</code></pre>
|
||||||
|
|
||||||
<h2>🔗 Links</h2>
|
<h2>🔗 Links</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://github.com/jasonwitty/socktop">Source Code on GitHub</a></li>
|
<li>
|
||||||
<li><a href="https://github.com/jasonwitty/socktop/issues">Report Issues</a></li>
|
<a href="https://github.com/jasonwitty/socktop"
|
||||||
|
>Source Code on GitHub</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="https://github.com/jasonwitty/socktop/issues"
|
||||||
|
>Report Issues</a
|
||||||
|
>
|
||||||
|
</li>
|
||||||
<li><a href="README.md">Repository Documentation</a></li>
|
<li><a href="README.md">Repository Documentation</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="footer">
|
<div class="footer">
|
||||||
<p>Hosted on GitHub Pages | Packages signed with GPG</p>
|
<p>Hosted on GitHub Pages | Packages signed with GPG</p>
|
||||||
<p>Theme: <a href="https://github.com/catppuccin/catppuccin">Catppuccin Frappe</a></p>
|
<p>
|
||||||
|
Theme:
|
||||||
|
<a href="https://github.com/catppuccin/catppuccin"
|
||||||
|
>Catppuccin Frappe</a
|
||||||
|
>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
// Attach copy buttons to all <pre> blocks and enable copy-to-clipboard.
|
||||||
|
document.addEventListener("DOMContentLoaded", function () {
|
||||||
|
const pres = document.querySelectorAll("pre");
|
||||||
|
pres.forEach((pre) => {
|
||||||
|
// Create button
|
||||||
|
const btn = document.createElement("button");
|
||||||
|
btn.type = "button";
|
||||||
|
btn.className = "copy-btn";
|
||||||
|
btn.setAttribute("aria-label", "Copy code to clipboard");
|
||||||
|
// Use emoji for simplicity; you can replace with SVG if desired
|
||||||
|
btn.innerText = "📋";
|
||||||
|
|
||||||
|
// Append to pre
|
||||||
|
pre.appendChild(btn);
|
||||||
|
|
||||||
|
// Click handler
|
||||||
|
btn.addEventListener("click", async (e) => {
|
||||||
|
e.stopPropagation();
|
||||||
|
const code = pre.querySelector("code");
|
||||||
|
const text = code ? code.innerText : pre.innerText;
|
||||||
|
try {
|
||||||
|
if (!navigator.clipboard) {
|
||||||
|
// Fallback method
|
||||||
|
const textarea =
|
||||||
|
document.createElement("textarea");
|
||||||
|
textarea.value = text;
|
||||||
|
textarea.style.position = "fixed";
|
||||||
|
textarea.style.left = "-9999px";
|
||||||
|
document.body.appendChild(textarea);
|
||||||
|
textarea.select();
|
||||||
|
document.execCommand("copy");
|
||||||
|
document.body.removeChild(textarea);
|
||||||
|
} else {
|
||||||
|
await navigator.clipboard.writeText(text);
|
||||||
|
}
|
||||||
|
// feedback
|
||||||
|
btn.classList.add("copied");
|
||||||
|
const prior = btn.innerText;
|
||||||
|
btn.innerText = "✓ Copied";
|
||||||
|
setTimeout(() => {
|
||||||
|
btn.classList.remove("copied");
|
||||||
|
btn.innerText = "📋";
|
||||||
|
}, 1800);
|
||||||
|
} catch (err) {
|
||||||
|
btn.innerText = "✖";
|
||||||
|
setTimeout(() => (btn.innerText = "📋"), 1500);
|
||||||
|
console.error("Copy failed", err);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user