501 lines
19 KiB
HTML
501 lines
19 KiB
HTML
|
<!DOCTYPE html>
|
||
|
<html lang="en" dir="auto">
|
||
|
|
||
|
<head><script src="/livereload.js?mindelay=10&v=2&port=1313&path=livereload" data-no-instant defer></script><meta charset="utf-8">
|
||
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||
|
<meta name="robots" content="noindex, nofollow">
|
||
|
<title>Introducing Hibbian Linux | </title>
|
||
|
<meta name="keywords" content="">
|
||
|
<meta name="description" content="Introduction Finally, I’ve managed to pull together enough disparate components for the project to come together!
|
||
|
Please welcome:
|
||
|
Hibbian Linux, a distribution aimed at ham radio operators.
|
||
|
Another one? I know - there’s plenty of options for radio operators to choose from. What makes this one different?
|
||
|
Strong Foundations & Long Term Support The system is built from the ground up on Debian Linux’s Stable release. This provides a strong foundation backed with years of security and support.">
|
||
|
<meta name="author" content="Hibby">
|
||
|
<link rel="canonical" href="http://localhost:1313/posts/first-post/">
|
||
|
<link crossorigin="anonymous" href="/assets/css/stylesheet.min.7da7716a1f2d0725f74c6ae7f8d6adafc43aabe2b366b65bfbf433448e2a2001.css" integrity="sha256-fadxah8tByX3TGrn+Natr8Q6q+KzZrZb+/QzRI4qIAE=" rel="preload stylesheet" as="style">
|
||
|
<link rel="icon" href="http://localhost:1313/favicon.ico">
|
||
|
<link rel="apple-touch-icon" href="http://localhost:1313/apple-touch-icon.png">
|
||
|
<link rel="alternate" hreflang="en" href="http://localhost:1313/posts/first-post/">
|
||
|
|
||
|
<meta name="twitter:title" content="Introducing Hibbian Linux | " />
|
||
|
<meta name="twitter:description" content="Introduction Finally, I’ve managed to pull together enough disparate components for the project to come together!
|
||
|
Please welcome:
|
||
|
Hibbian Linux, a distribution aimed at ham radio operators.
|
||
|
Another one? I know - there’s plenty of options for radio operators to choose from. What makes this one different?
|
||
|
Strong Foundations & Long Term Support The system is built from the ground up on Debian Linux’s Stable release. This provides a strong foundation backed with years of security and support." />
|
||
|
<meta property="og:title" content="Introducing Hibbian Linux | " />
|
||
|
<meta property="og:description" content="Introduction Finally, I’ve managed to pull together enough disparate components for the project to come together!
|
||
|
Please welcome:
|
||
|
Hibbian Linux, a distribution aimed at ham radio operators.
|
||
|
Another one? I know - there’s plenty of options for radio operators to choose from. What makes this one different?
|
||
|
Strong Foundations & Long Term Support The system is built from the ground up on Debian Linux’s Stable release. This provides a strong foundation backed with years of security and support." />
|
||
|
<meta property="og:type" content="article" />
|
||
|
<meta property="og:url" content="http://localhost:1313/posts/first-post/" />
|
||
|
<meta property="article:section" content="posts" />
|
||
|
<meta property="article:published_time" content="2024-08-26T23:34:26+01:00" />
|
||
|
<meta property="article:modified_time" content="2024-08-26T23:34:26+01:00" /><meta property="og:site_name" content="Hibbian Linux" />
|
||
|
|
||
|
|
||
|
<script type="application/ld+json">
|
||
|
{
|
||
|
"@context": "https://schema.org",
|
||
|
"@type": "BreadcrumbList",
|
||
|
"itemListElement": [
|
||
|
{
|
||
|
"@type": "ListItem",
|
||
|
"position": 1 ,
|
||
|
"name": "Posts",
|
||
|
"item": "http://localhost:1313/posts/"
|
||
|
},
|
||
|
{
|
||
|
"@type": "ListItem",
|
||
|
"position": 2 ,
|
||
|
"name": "Introducing Hibbian Linux",
|
||
|
"item": "http://localhost:1313/posts/first-post/"
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
</script>
|
||
|
<script type="application/ld+json">
|
||
|
{
|
||
|
"@context": "https://schema.org",
|
||
|
"@type": "BlogPosting",
|
||
|
"headline": "Introducing Hibbian Linux | ",
|
||
|
"name": "Introducing Hibbian Linux",
|
||
|
"description": "Introduction Finally, I\u0026rsquo;ve managed to pull together enough disparate components for the project to come together!\nPlease welcome:\nHibbian Linux, a distribution aimed at ham radio operators.\nAnother one? I know - there\u0026rsquo;s plenty of options for radio operators to choose from. What makes this one different?\nStrong Foundations \u0026amp; Long Term Support The system is built from the ground up on Debian Linux\u0026rsquo;s Stable release. This provides a strong foundation backed with years of security and support.",
|
||
|
"keywords": [
|
||
|
|
||
|
],
|
||
|
"wordCount" : "464",
|
||
|
"inLanguage": "en",
|
||
|
"datePublished": "2024-08-26T23:34:26+01:00",
|
||
|
"dateModified": "2024-08-26T23:34:26+01:00",
|
||
|
"author":{
|
||
|
"@type": "Person",
|
||
|
"name": "Hibby"
|
||
|
},
|
||
|
"mainEntityOfPage": {
|
||
|
"@type": "WebPage",
|
||
|
"@id": "http://localhost:1313/posts/first-post/"
|
||
|
},
|
||
|
"publisher": {
|
||
|
"@type": "Organization",
|
||
|
"name": "",
|
||
|
"logo": {
|
||
|
"@type": "ImageObject",
|
||
|
"url": "http://localhost:1313/favicon.ico"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
</script>
|
||
|
<noscript>
|
||
|
<style>
|
||
|
#theme-toggle,
|
||
|
.top-link {
|
||
|
display: none;
|
||
|
}
|
||
|
|
||
|
</style>
|
||
|
<style>
|
||
|
@media (prefers-color-scheme: dark) {
|
||
|
:root {
|
||
|
--theme: rgb(29, 30, 32);
|
||
|
--entry: rgb(46, 46, 51);
|
||
|
--primary: rgb(218, 218, 219);
|
||
|
--secondary: rgb(155, 156, 157);
|
||
|
--tertiary-bg: rgb(65, 66, 68);
|
||
|
--content: rgb(196, 196, 197);
|
||
|
--code-bg: rgb(55, 56, 62);
|
||
|
--border: rgb(51, 51, 51);
|
||
|
}
|
||
|
|
||
|
.list-page {
|
||
|
background: var(--theme);
|
||
|
}
|
||
|
|
||
|
.list-page:not(.dark)::-webkit-scrollbar-track {
|
||
|
background: 0 0;
|
||
|
}
|
||
|
|
||
|
.list-page:not(.dark)::-webkit-scrollbar-thumb {
|
||
|
border-color: var(--theme);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
</style>
|
||
|
</noscript>
|
||
|
|
||
|
</head>
|
||
|
|
||
|
<body class=" type-posts kind-page layout-" id="top"><script data-no-instant>
|
||
|
function switchTheme(theme) {
|
||
|
switch (theme) {
|
||
|
case 'light':
|
||
|
document.body.classList.remove('dark');
|
||
|
break;
|
||
|
case 'dark':
|
||
|
document.body.classList.add('dark');
|
||
|
break;
|
||
|
|
||
|
default:
|
||
|
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||
|
document.body.classList.add('dark');
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function isDarkTheme() {
|
||
|
return document.body.className.includes("dark");
|
||
|
}
|
||
|
|
||
|
function getPrefTheme() {
|
||
|
return localStorage.getItem("pref-theme");
|
||
|
}
|
||
|
|
||
|
function setPrefTheme(theme) {
|
||
|
switchTheme(theme)
|
||
|
localStorage.setItem("pref-theme", theme);
|
||
|
}
|
||
|
|
||
|
const toggleThemeCallbacks = {}
|
||
|
toggleThemeCallbacks['main'] = (isDark) => {
|
||
|
|
||
|
if (isDark) {
|
||
|
setPrefTheme('light');
|
||
|
} else {
|
||
|
setPrefTheme('dark');
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
window.addEventListener('toggle-theme', function() {
|
||
|
|
||
|
const isDark = isDarkTheme()
|
||
|
for (const key in toggleThemeCallbacks) {
|
||
|
toggleThemeCallbacks[key](isDark)
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
function toggleThemeListener() {
|
||
|
|
||
|
window.dispatchEvent(new CustomEvent('toggle-theme'));
|
||
|
}
|
||
|
|
||
|
</script>
|
||
|
<script>
|
||
|
|
||
|
(function() {
|
||
|
const defaultTheme = 'auto';
|
||
|
const prefTheme = getPrefTheme();
|
||
|
const theme = prefTheme ? prefTheme : defaultTheme;
|
||
|
|
||
|
switchTheme(theme);
|
||
|
})();
|
||
|
</script>
|
||
|
|
||
|
<header class="header">
|
||
|
<nav class="nav">
|
||
|
<div class="logo">
|
||
|
<span class="logo-switches">
|
||
|
<button id="theme-toggle" accesskey="t" title="(Alt + T)">
|
||
|
<svg id="moon" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
|
stroke-linejoin="round">
|
||
|
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"></path>
|
||
|
</svg>
|
||
|
<svg id="sun" xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"
|
||
|
fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
|
||
|
stroke-linejoin="round">
|
||
|
<circle cx="12" cy="12" r="5"></circle>
|
||
|
<line x1="12" y1="1" x2="12" y2="3"></line>
|
||
|
<line x1="12" y1="21" x2="12" y2="23"></line>
|
||
|
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
|
||
|
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
|
||
|
<line x1="1" y1="12" x2="3" y2="12"></line>
|
||
|
<line x1="21" y1="12" x2="23" y2="12"></line>
|
||
|
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
|
||
|
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
|
||
|
</svg>
|
||
|
</button>
|
||
|
</span>
|
||
|
</div>
|
||
|
<ul id="menu">
|
||
|
<li>
|
||
|
<a href="http://localhost:1313/" title="Home" class="active"
|
||
|
>Home
|
||
|
</a>
|
||
|
</li>
|
||
|
<li>
|
||
|
<a href="https://guide.hibbian.org/" title="Guide"
|
||
|
>Guide
|
||
|
</a>
|
||
|
</li>
|
||
|
<li>
|
||
|
<a href="https://git.hibbian.org/" title="Git"
|
||
|
>Git
|
||
|
</a>
|
||
|
</li>
|
||
|
<li>
|
||
|
<a href="http://localhost:1313/posts/" title="Posts" class="active"
|
||
|
>Posts
|
||
|
</a>
|
||
|
</li>
|
||
|
</ul>
|
||
|
</nav>
|
||
|
</header>
|
||
|
<main class="main post">
|
||
|
|
||
|
<article class="post-single">
|
||
|
<header class="post-header">
|
||
|
<h1 class="post-title">Introducing Hibbian Linux</h1>
|
||
|
<div class="post-meta"><span class="meta-item">
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-calendar" style="user-select: text;"><rect x="3" y="4" width="18" height="18" rx="2" ry="2" style="user-select: text;"></rect><line x1="16" y1="2" x2="16" y2="6" style="user-select: text;"></line><line x1="8" y1="2" x2="8" y2="6" style="user-select: text;"></line><line x1="3" y1="10" x2="21" y2="10" style="user-select: text;"></line></svg>
|
||
|
<span>August 26, 2024</span></span>
|
||
|
|
||
|
|
||
|
|
||
|
</div>
|
||
|
</header>
|
||
|
<div class="post-content"><h1 id="introduction">Introduction<a hidden class="anchor" aria-hidden="true" href="#introduction">¶</a></h1>
|
||
|
<p>Finally, I’ve managed to pull together enough disparate components for the
|
||
|
project to come together!</p>
|
||
|
<p>Please welcome:</p>
|
||
|
<p><strong>Hibbian Linux</strong>, a distribution aimed at ham radio operators.</p>
|
||
|
<h1 id="another-one">Another one?<a hidden class="anchor" aria-hidden="true" href="#another-one">¶</a></h1>
|
||
|
<p>I know - there’s plenty of options for radio operators to choose from.
|
||
|
What makes this one different?</p>
|
||
|
<h2 id="strong-foundations--long-term-support">Strong Foundations & Long Term Support<a hidden class="anchor" aria-hidden="true" href="#strong-foundations--long-term-support">¶</a></h2>
|
||
|
<p>The system is built from the ground up on Debian Linux’s Stable release. This
|
||
|
provides a strong foundation backed with years of security and support.</p>
|
||
|
<h2 id="modern-software--fast-updates">Modern Software & Fast Updates<a hidden class="anchor" aria-hidden="true" href="#modern-software--fast-updates">¶</a></h2>
|
||
|
<p>Debian’s strength is in its stability, but for some of the software we want to
|
||
|
use, being up to date is more important. wjstx moves quickly, bpq moves quickly.
|
||
|
Hibbian offers the latest packages from our community to keep on top of shifting
|
||
|
standards and best practises.</p>
|
||
|
<p>Some packages I maintain aren’t in Debian, but still deserve to be distributed
|
||
|
easily to users. You’ll find them here!</p>
|
||
|
<h2 id="deep-experience--active-operation">Deep Experience & Active Operation<a hidden class="anchor" aria-hidden="true" href="#deep-experience--active-operation">¶</a></h2>
|
||
|
<p>Hibbian is the work of me - <a href="https://foxk.it">hibby</a>. I’m a core member of the
|
||
|
<a href="https://debian.org">Debian Hamradio</a> team, maintaining software to be
|
||
|
distributed to Debian, Ubuntu, Raspberry Pi, Mint and more for a decade. I’ve
|
||
|
been running a repository of software for the <a href="https://ukpacketradio.network/">UK packet radio
|
||
|
network</a>, and the lessons, sore points and work
|
||
|
from this has naturally expanded into Hibbian.</p>
|
||
|
<p>I run the software I maintain, I run software maintained by others and I try to
|
||
|
make computers do interesting things over radio. In other words, I eat my own
|
||
|
dog food.</p>
|
||
|
<p>Where possible, contributions and modifications will go back to Debian and
|
||
|
software authors.</p>
|
||
|
<h2 id="stand-alone-principles">Stand-Alone Principles<a hidden class="anchor" aria-hidden="true" href="#stand-alone-principles">¶</a></h2>
|
||
|
<p>I don’t believe in trusting other companies to host the code, data or the packages on
|
||
|
my behalf - everything is owned and run as ‘Hibbian’.</p>
|
||
|
<ul>
|
||
|
<li>You will find the code on our own <a href="https://git.hibbian.org/Hibbian/">git
|
||
|
forge</a>, where bug reports and issues are
|
||
|
welcomed.</li>
|
||
|
<li>You’ll find email communication hosted on Hibbian infrastructure</li>
|
||
|
<li>You won’t find Hibbian on Discord - try JS8 or Packet.</li>
|
||
|
</ul>
|
||
|
<p>When all else fails, somehow I’ll still be able to continue and communicate.</p>
|
||
|
<h1 id="two-ways-to-install">Two Ways to Install<a hidden class="anchor" aria-hidden="true" href="#two-ways-to-install">¶</a></h1>
|
||
|
<p>There are two ways to run the Hibbian collection of software - as a repository
|
||
|
for your existing OS, or as a complete OS itself.</p>
|
||
|
<h2 id="repo">Repo<a hidden class="anchor" aria-hidden="true" href="#repo">¶</a></h2>
|
||
|
<p>Can’t run the whole thing or don’t want to commit? Don’t worry - I ship software
|
||
|
in the ‘repo’ for Debian & Raspberry Pi. You can pick and choose the latest
|
||
|
packages to be delivered straight to your computer and not have to reinstall
|
||
|
anything.</p>
|
||
|
<ul>
|
||
|
<li>Bullseye - 11 - Oldstable</li>
|
||
|
<li>Bookworm - 12 - Stable</li>
|
||
|
<li>Trixie - 13 Testing</li>
|
||
|
</ul>
|
||
|
<p>To learn more, see the installation pages on the
|
||
|
<a href="https://guide.hibbian.org/repo/">guide</a>.</p>
|
||
|
<h2 id="full-distro">Full Distro<a hidden class="anchor" aria-hidden="true" href="#full-distro">¶</a></h2>
|
||
|
<p>For those who want a more convenient option, the full Hibbian distribution based
|
||
|
on Debian Bookworm for x86_64 and Raspberry Pi will arrive later this year.</p>
|
||
|
|
||
|
|
||
|
</div>
|
||
|
|
||
|
<footer class="post-footer">
|
||
|
</footer>
|
||
|
<div class="comments-separator"></div>
|
||
|
</article>
|
||
|
</main>
|
||
|
|
||
|
<footer class="footer">
|
||
|
<span>© 2024 <a href="http://localhost:1313/"></a></span><span style="display: inline-block; margin-left: 1em;">
|
||
|
<a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA</a>
|
||
|
</span>
|
||
|
<span style="display: inline-block; margin-left: 1em;">
|
||
|
Powered by
|
||
|
<a href="https://gohugo.io/" rel="noopener noreferrer" target="_blank">Hugo</a> &
|
||
|
<a href="https://github.com/reorx/hugo-PaperModX/" rel="noopener" target="_blank">PaperModX</a>
|
||
|
</span>
|
||
|
</footer>
|
||
|
<a href="#top" aria-label="go to top" title="Go to Top (Alt + G)" class="top-link" id="top-link" accesskey="g">
|
||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 6" fill="currentColor">
|
||
|
<path d="M12 6H0l6-6z" />
|
||
|
</svg>
|
||
|
</a>
|
||
|
|
||
|
<script>
|
||
|
(function() {
|
||
|
|
||
|
const disableThemeToggle = '' == '1';
|
||
|
if (disableThemeToggle) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
let button = document.getElementById("theme-toggle")
|
||
|
|
||
|
button.removeEventListener('click', toggleThemeListener)
|
||
|
|
||
|
button.addEventListener('click', toggleThemeListener)
|
||
|
})();
|
||
|
</script>
|
||
|
|
||
|
<script>
|
||
|
(function () {
|
||
|
let menu = document.getElementById('menu')
|
||
|
if (menu) {
|
||
|
menu.scrollLeft = localStorage.getItem("menu-scroll-position");
|
||
|
menu.onscroll = function () {
|
||
|
localStorage.setItem("menu-scroll-position", menu.scrollLeft);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
const disableSmoothScroll = '' == '1';
|
||
|
const enableInstantClick = '' == '1';
|
||
|
|
||
|
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches || disableSmoothScroll || enableInstantClick) {
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||
|
anchor.addEventListener("click", function (e) {
|
||
|
e.preventDefault();
|
||
|
var id = this.getAttribute("href").substr(1);
|
||
|
document.querySelector(`[id='${decodeURIComponent(id)}']`).scrollIntoView({
|
||
|
behavior: "smooth"
|
||
|
});
|
||
|
if (id === "top") {
|
||
|
history.replaceState(null, null, " ");
|
||
|
} else {
|
||
|
history.pushState(null, null, `#${id}`);
|
||
|
}
|
||
|
});
|
||
|
});
|
||
|
})();
|
||
|
</script>
|
||
|
<script>
|
||
|
var mybutton = document.getElementById("top-link");
|
||
|
window.onscroll = function () {
|
||
|
if (document.body.scrollTop > 800 || document.documentElement.scrollTop > 800) {
|
||
|
mybutton.style.visibility = "visible";
|
||
|
mybutton.style.opacity = "1";
|
||
|
} else {
|
||
|
mybutton.style.visibility = "hidden";
|
||
|
mybutton.style.opacity = "0";
|
||
|
}
|
||
|
};
|
||
|
</script>
|
||
|
<script>
|
||
|
if (window.scrollListeners) {
|
||
|
|
||
|
for (const listener of scrollListeners) {
|
||
|
window.removeEventListener('scroll', listener)
|
||
|
}
|
||
|
}
|
||
|
window.scrollListeners = []
|
||
|
</script>
|
||
|
|
||
|
|
||
|
|
||
|
<script src="/js/medium-zoom.min.js" data-no-instant
|
||
|
></script>
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
<script>
|
||
|
|
||
|
|
||
|
(function() {
|
||
|
const enableTocScroll = '' == '1'
|
||
|
if (!enableTocScroll) {
|
||
|
return
|
||
|
}
|
||
|
if (!document.querySelector('.toc')) {
|
||
|
console.log('no toc found, ignore toc scroll')
|
||
|
return
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
const scrollListeners = window.scrollListeners
|
||
|
const headings = document.querySelectorAll('h1[id],h2[id],h3[id],h4[id],h5[id]');
|
||
|
const activeClass = 'active';
|
||
|
|
||
|
|
||
|
let activeHeading = headings[0];
|
||
|
getLinkByHeading(activeHeading).classList.add(activeClass);
|
||
|
|
||
|
const onScroll = () => {
|
||
|
const passedHeadings = [];
|
||
|
for (const h of headings) {
|
||
|
|
||
|
if (getOffsetTop(h) < 5) {
|
||
|
passedHeadings.push(h)
|
||
|
} else {
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
if (passedHeadings.length > 0) {
|
||
|
newActiveHeading = passedHeadings[passedHeadings.length - 1];
|
||
|
} else {
|
||
|
newActiveHeading = headings[0];
|
||
|
}
|
||
|
if (activeHeading != newActiveHeading) {
|
||
|
getLinkByHeading(activeHeading).classList.remove(activeClass);
|
||
|
activeHeading = newActiveHeading;
|
||
|
getLinkByHeading(activeHeading).classList.add(activeClass);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
let timer = null;
|
||
|
const scrollListener = () => {
|
||
|
if (timer !== null) {
|
||
|
clearTimeout(timer)
|
||
|
}
|
||
|
timer = setTimeout(onScroll, 50)
|
||
|
}
|
||
|
window.addEventListener('scroll', scrollListener, false);
|
||
|
scrollListeners.push(scrollListener)
|
||
|
|
||
|
function getLinkByHeading(heading) {
|
||
|
const id = encodeURI(heading.getAttribute('id')).toLowerCase();
|
||
|
return document.querySelector(`.toc ul li a[href="#${id}"]`);
|
||
|
}
|
||
|
|
||
|
function getOffsetTop(heading) {
|
||
|
if (!heading.getClientRects().length) {
|
||
|
return 0;
|
||
|
}
|
||
|
let rect = heading.getBoundingClientRect();
|
||
|
return rect.top
|
||
|
}
|
||
|
})();
|
||
|
</script>
|
||
|
|
||
|
</body>
|
||
|
|
||
|
</html>
|