Reworked to use Pure.css and Catppuccin

This commit is contained in:
2026-04-09 14:21:01 -04:00
parent 09487d9a1f
commit 0fbcb20a48
22 changed files with 922 additions and 2519 deletions

View File

@@ -111,7 +111,7 @@ LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
#LoadModule ext_filter_module modules/mod_ext_filter.so
#LoadModule request_module modules/mod_request.so
#LoadModule include_module modules/mod_include.so
LoadModule include_module modules/mod_include.so
LoadModule filter_module modules/mod_filter.so
#LoadModule reflector_module modules/mod_reflector.so
#LoadModule substitute_module modules/mod_substitute.so
@@ -277,6 +277,7 @@ DocumentRoot "/usr/local/apache2/htdocs"
# for more information.
#
Options Indexes FollowSymLinks
Options +Includes
#
# AllowOverride controls what directives may be placed in .htaccess files.
@@ -293,7 +294,10 @@ DocumentRoot "/usr/local/apache2/htdocs"
#
# Custom
#
Header add Link "</common/catppuccin.css>; rel=stylesheet; type=text/css"
Header add Link "</static/catppuccin.css>; rel=stylesheet; type=text/css"
Header add Link "</favicon.ico>; rel=icon; type=image/x-icon"
AddOutputFilter INCLUDES .html
</Directory>
<Location "/server-status">
@@ -542,8 +546,6 @@ LogLevel warn
# Various default settings
#Include conf/extra/httpd-default.conf
Include conf/extra/httpd-gitweb.conf
# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf

View File

@@ -1,35 +1,8 @@
services:
mailsync:
image: python:3
volumes:
- ./:/data
- ./mailsync.py:/usr/src/mailsync.py
command: python /usr/src/mailsync.py
environment:
- "USERNAME=changeme"
- "PASSWORD=changeme"
- "IMAP_SERVER=imap.example.com"
- "SAVE_DIR=/data/htdocs"
www:
image: ericomeehan/gitweb:latest
build:
dockerfile: gitweb.Dockerfile
depends_on:
- mailsync
image: httpd
volumes:
- ./htdocs:/usr/local/apache2/htdocs/
- ./conf/httpd.conf:/usr/local/apache2/conf/httpd.conf
- ./conf/httpd-gitweb.conf:/usr/local/apache2/conf/extra/httpd-gitweb.conf
- ./conf/gitweb.conf:/etc/gitweb.conf
ports:
- 8080:80
- 9117:9117
gitserver:
image: ericomeeha/gitserver:latest
build:
dockerfile: gitserver.Dockerfile
volumes:
- ./htdocs:/home/git/data
- ./authorized_keys:/auth/authorized_keys
ports:
- 2222:22

View File

@@ -1,11 +0,0 @@
<h1>eom.dev</h1>
<h2>Archive</h2>
<a href="/">Home
</a> | <a href="/archive">Archive
</a> | <a href="/archive/Repositories">Repositories
</a> | <a href="/stream">Live Stream
</a> | <a href="/archive/Mail">Mailbox
</a> | <a href="/chat">Chat
</a> | <a href="/donate">Donate
</a>
<h3>Browse the Archive</h3>

View File

@@ -1,9 +0,0 @@
function duckduckgo() {
const form = document.getElementById("ddg-site-search");
const input = document.getElementById("ddg-query");
form.addEventListener("submit", function () {
const domain = window.location.hostname;
input.value = "site:eom.dev/archive/Mail/raw/" + " " + input.value;
});
};

11
htdocs/common/footer.html Normal file
View File

@@ -0,0 +1,11 @@
<footer>
<div class="footer l-box is-center">
<div class="pure-g">
<div class="pure-u-1-2">
© Eric O'Neill Meehan 2026
</div>
<div class="pure-u-1-2">
Made with <a href="https://pure-css.github.io/">Pure.css</a> and <a href="https://catppuccin.com/">Catppuccin</a>.
</div>
</div>
</footer>

View File

@@ -1,20 +0,0 @@
<style>
div.page_header {
display: none;
}
</style>
<link rel="icon" type="image/x-icon" href="/common/favicon.ico"></link>
<h1>eom.dev</h1>
<h2>Repositories</h2>
<a href="/">Home
</a> | <a href="/archive">Archive
</a> | <a href="/archive/Repositories">Repositories
</a> | <a href="/stream">Live Stream
</a> | <a href="/archive/Mail">Mailbox
</a> | <a href="/chat">Chat
</a> | <a href="/donate">Donate
</a>
<h3>Browse Source Code</h3>
<p>
Powered by <a href="https://git-scm.com/docs/gitweb">GitWeb</a>.
</p>

View File

@@ -0,0 +1,8 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="/static/pure.css">
<link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@3.0.0/build/pure-min.css" integrity="sha384-X38yfunGUhNzHpBaEBsWLO+A0HDYOQi8ufWDkZ0k9e0eXz/tH3II7uKZ9msv++Ls" crossorigin="anonymous">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@3.0.0/build/grids-responsive-min.css">
</head>

View File

@@ -0,0 +1,6 @@
<div class="header">
<div class="home-menu pure-menu pure-menu-horizontal pure-menu-fixed">
<a class="pure-menu-heading" href="">eom.dev</a>
</div>
</div>

48
htdocs/contact/index.html Normal file
View File

@@ -0,0 +1,48 @@
<!DOCTYPE html>
<html lang="en">
<!--#include virtual="/common/header.html" -->
<body>
<title>eom.dev - Home</title>
<div class="pure-g">
<div class="pure-u-1-1">
<!--#include virtual="/common/topnav.html" -->
<h3>Contact</h3>
<p>Please consider using the public
<a href="https://mailman.eom.dev" target="_blank">mailing lists</a>
when possible.
<div class="pure-g">
<div class="pure-u-1-3" style="text-align: right;">
<p>email:</p>
</div>
<div class="pure-u-2-3" style="text-align: left;">
<a href="mailto:eric@eom.dev">eric@eom.dev</a>
</div>
</div>
<div class="pure-g">
<div class="pure-u-1-3" style="text-align: right;">
<p>pgp:</p>
</div>
<div class="pure-u-2-3" style="text-align: left;">
<pre>
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaYUAnBYJKwYBBAHaRw8BAQdARC4WbkR/2WnhBPJWicMghLVIQt1MLVMja5ev
lLjTQRa0IkVyaWMgTydOZWlsbCBNZWVoYW4gPGVyaWNAZW9tLmRldj6IkAQTFgoA
OBYhBAswMCgXM4edXctYOrfacp+7jKbpBQJphQCcAhsDBQsJCAcCBhUKCQgLAgQW
AgMBAh4BAheAAAoJELfacp+7jKbpp6EA/1RlL7MGIW3tFbhIqak63WHML8Cjpe/V
TMewAR7nOoL3AQDs54G26LUlQk+TAHSFoLWCw/3g+j3zCGDLiskZu/UwDbg4BGmF
AJwSCisGAQQBl1UBBQEBB0BMFfLKZt+q81mtVL2pr+PX1qDv0ejL02h6FvqZ0KCU
TwMBCAeIeAQYFgoAIBYhBAswMCgXM4edXctYOrfacp+7jKbpBQJphQCcAhsMAAoJ
ELfacp+7jKbpZdsA/iOYAJZKicHjeKpEWR8osd4wjyc3HxUfDV99VnrMXBWrAQCX
QyC3y1UFoQr86QKUK7PonIEzclFJaB5laev6e6dYBQ==
-----END PGP PUBLIC KEY BLOCK-----
</pre>
</div>
</div>
<h4>Chat</h4>
<iframe src="https://kiwiirc.com/client/eom.dev/?&nick=webuser-?&theme=cli#general" style="border:0; width:100%; height:600px;"></iframe>
</div>
</div>
</body>
<!--#include virtual="/common/footer.html" -->
</html>

View File

@@ -1,36 +1,23 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>eom.dev - Donate</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/common/catppuccin.css">
<link rel="icon" type="image/x-icon" href="/common/favicon.ico">
<!--#include virtual="/common/header.html" -->
<body>
<h1>eom.dev</h1>
<h2>Donate</h2>
<a href="/">Home
</a> | <a href="/archive">Archive
</a> | <a href="/archive/Repositories">Repositories
</a> | <a href="/stream">Live Stream
</a> | <a href="/archive/Mail">Mailbox
</a> | <a href="/chat">Chat
</a> | <a href="/donate">Donate
</a>
<h3>Support the Platform</h3>
<title>eom.dev - Donate</title>
<div class="center">
<div class="content">
<!--#include virtual="/common/topnav.html" -->
<h3>Donate</h3>
<p>
Make a donation to support Eric's online services, engineering projects, and educational content.
</p>
<table width=100% style="border-spacing: 20px;">
<tr>
<th>USD</th><th>XMR</th><th>BTC</th>
</tr>
<tr>
<td style="vertical-align: top;">
<center>
<h4>USD</h4>
<div class="box">
<div class="left">
<p>
Make a donation through <a href="https://stripe.com/">Stripe</a>.
</p>
<br>
</div>
<div class="right">
<script async
src="https://js.stripe.com/v3/buy-button.js">
</script>
@@ -40,23 +27,31 @@
publishable-key="pk_live_51RXqTsC5KPXqTvVLWl5bzCxoaZivWceeLGMNURUmxzQMwaM5pUUl4VabywrjCQvgKopGFvUBqPLxRMF3eALsiDst00tR59vRhN"
>
</stripe-buy-button>
</center>
</td>
<td style="vertical-align: top;">
<center>
<p>
Monero donations can be sent to <code>48mFvxYDSCzMy5a3Zaj7ewApbX4GwXVXX9T1JC8mqBC19s9UcrNq8eaKkQ6GKdhHGQGmhdpvMd3mcbjf4eQbP8Yv7KdAREw</code>
</p>
</div>
</div>
<br>
<br>
<h4>XMR</h4>
<div class="box">
<div class="left">
<div class="box">
<div class="left">
<p>Monero donations can be sent to </p>
</div>
<div class="right">
<code>48mFvxYDSCzMy5a3Zaj7ewApbX4GwXVXX9T1JC8mqBC19s9UcrNq8eaKkQ6GKdhHGQGmhdpvMd3mcbjf4eQbP8Yv7KdAREw</code>
</div>
</div>
<div class="box">
<div class="left">
<h5>P2Pool</h5>
<p>
Contribute compute power to the eom.dev mining pool with <a href="https://xmrig.com/">XMRig</a>.
<br>
Update the <i>user</i> field in the <code>~/.xmrig.json</code> configuration below to your wallet address.
<br>
You may use the Monero donation address above if you would like to donate your payouts to eom.dev.
<br>
</center>
<pre style="padding-left: 40%">
</div>
<div class="right">
<pre>
{
"autosave": true,
"donate-level": 5,
@@ -76,14 +71,12 @@
}
]
}</pre>
</td>
<td style="vertical-align: top;">
<center>
<p>
Bitcoin donations can be sent to <code>aaaabbbbccccddddeeee</code>
</p>
</center>
</td>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
<!--#include virtual="/common/footer.html" -->
</html>

View File

Before

Width:  |  Height:  |  Size: 134 KiB

After

Width:  |  Height:  |  Size: 134 KiB

View File

@@ -1,53 +1,16 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>eom.dev - Home</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/common/catppuccin.css">
<link rel="icon" type="image/x-icon" href="/common/favicon.ico">
<!--#include virtual="/common/header.html" -->
<body>
<h1>eom.dev</h1>
<h2>Eric O'Neill Meehan</h2>
<a href="/">Home
</a> | <a href="/archive">Archive
</a> | <a href="/archive/Repositories">Repositories
</a> | <a href="/stream">Live Stream
</a> | <a href="/archive/Mail">Mailbox
</a> | <a href="/chat">Chat
</a> | <a href="/donate">Donate
</a>
<h3>Contact</h3>
<img src="/common/profile_2026.jpg">
<table style='text-align: center;'>
<tr>
<td style="text-align: left;">email</td><td style="text-align: left;">eric@eom.dev</td>
</tr>
<tr>
<td style="text-align: left;">irc</td><td style="text-align: left;">eric@eom.dev</td>
</tr>
<tr>
<td style="text-align: left;">pgp</td>
<td style="text-align: left;">
<pre>
-----BEGIN PGP PUBLIC KEY BLOCK-----
mDMEaYUAnBYJKwYBBAHaRw8BAQdARC4WbkR/2WnhBPJWicMghLVIQt1MLVMja5ev
lLjTQRa0IkVyaWMgTydOZWlsbCBNZWVoYW4gPGVyaWNAZW9tLmRldj6IkAQTFgoA
OBYhBAswMCgXM4edXctYOrfacp+7jKbpBQJphQCcAhsDBQsJCAcCBhUKCQgLAgQW
AgMBAh4BAheAAAoJELfacp+7jKbpp6EA/1RlL7MGIW3tFbhIqak63WHML8Cjpe/V
TMewAR7nOoL3AQDs54G26LUlQk+TAHSFoLWCw/3g+j3zCGDLiskZu/UwDbg4BGmF
AJwSCisGAQQBl1UBBQEBB0BMFfLKZt+q81mtVL2pr+PX1qDv0ejL02h6FvqZ0KCU
TwMBCAeIeAQYFgoAIBYhBAswMCgXM4edXctYOrfacp+7jKbpBQJphQCcAhsMAAoJ
ELfacp+7jKbpZdsA/iOYAJZKicHjeKpEWR8osd4wjyc3HxUfDV99VnrMXBWrAQCX
QyC3y1UFoQr86QKUK7PonIEzclFJaB5laev6e6dYBQ==
=+OQI
-----END PGP PUBLIC KEY BLOCK-----
</pre>
</td>
</tr>
</table>
<title>eom.dev - Home</title>
<div class="pure-g">
<div class="pure-u-1-1">
<!--#include virtual="/common/topnav.html" -->
<h3>Home</h3>
<img src="/static/profile_2026.jpg">
<p>Welcome to Eric's homepage.</p>
</div>
</div>
</body>
<footer>
<p>© Eric O'Neill Meehan 2026</p>
</footer>
<!--#include virtual="/common/footer.html" -->
</html>

286
htdocs/landing-page.css Normal file
View File

@@ -0,0 +1,286 @@
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/*
* -- BASE STYLES --
* Most of these are inherited from Base, but I want to change a few.
*/
body {
line-height: 1.7em;
color: #7f8c8d;
font-size: 13px;
}
h1,
h2,
h3,
h4,
h5,
h6,
label {
color: #34495e;
}
.pure-img-responsive {
max-width: 100%;
height: auto;
}
/*
* -- LAYOUT STYLES --
* These are some useful classes which I will need
*/
.l-box {
padding: 1em;
}
.l-box-lrg {
padding: 2em;
border-bottom: 1px solid rgba(0,0,0,0.1);
}
.is-center {
text-align: center;
}
/*
* -- PURE FORM STYLES --
* Style the form inputs and labels
*/
.pure-form label {
margin: 1em 0 0;
font-weight: bold;
font-size: 100%;
}
.pure-form input[type] {
border: 2px solid #ddd;
box-shadow: none;
font-size: 100%;
width: 100%;
margin-bottom: 1em;
}
/*
* -- PURE BUTTON STYLES --
* I want my pure-button elements to look a little different
*/
.pure-button {
background-color: #1f8dd6;
color: white;
padding: 0.5em 2em;
border-radius: 5px;
}
a.pure-button-primary {
background: white;
color: #1f8dd6;
border-radius: 5px;
font-size: 120%;
}
/*
* -- MENU STYLES --
* I want to customize how my .pure-menu looks at the top of the page
*/
.home-menu {
padding: 0.5em;
text-align: center;
box-shadow: 0 1px 1px rgba(0,0,0, 0.10);
}
.home-menu {
background: #2d3e50;
}
.pure-menu.pure-menu-fixed {
/* Fixed menus normally have a border at the bottom. */
border-bottom: none;
/* I need a higher z-index here because of the scroll-over effect. */
z-index: 4;
}
.home-menu .pure-menu-heading {
color: white;
font-weight: 400;
font-size: 120%;
}
.home-menu .pure-menu-selected a {
color: white;
}
.home-menu a {
color: #6FBEF3;
}
.home-menu li a:hover,
.home-menu li a:focus {
background: none;
border: none;
color: #AECFE5;
}
/*
* -- SPLASH STYLES --
* This is the blue top section that appears on the page.
*/
.splash-container {
background: #1f8dd6;
z-index: 1;
overflow: hidden;
/* The following styles are required for the "scroll-over" effect */
width: 100%;
height: 88%;
top: 0;
left: 0;
position: fixed !important;
}
.splash {
/* absolute center .splash within .splash-container */
width: 80%;
height: 50%;
margin: auto;
position: absolute;
top: 100px; left: 0; bottom: 0; right: 0;
text-align: center;
text-transform: uppercase;
}
/* This is the main heading that appears on the blue section */
.splash-head {
font-size: 20px;
font-weight: bold;
color: white;
border: 3px solid white;
padding: 1em 1.6em;
font-weight: 100;
border-radius: 5px;
line-height: 1em;
}
/* This is the subheading that appears on the blue section */
.splash-subhead {
color: white;
letter-spacing: 0.05em;
opacity: 0.8;
}
/*
* -- CONTENT STYLES --
* This represents the content area (everything below the blue section)
*/
.content-wrapper {
/* These styles are required for the "scroll-over" effect */
position: absolute;
top: 87%;
width: 100%;
min-height: 12%;
z-index: 2;
background: white;
}
/* We want to give the content area some more padding */
.content {
padding: 1em 1em 3em;
}
/* This is the class used for the main content headers (<h2>) */
.content-head {
font-weight: 400;
text-transform: uppercase;
letter-spacing: 0.1em;
margin: 2em 0 1em;
}
/* This is a modifier class used when the content-head is inside a ribbon */
.content-head-ribbon {
color: white;
}
/* This is the class used for the content sub-headers (<h3>) */
.content-subhead {
color: #1f8dd6;
}
.content-subhead i {
margin-right: 7px;
}
/* This is the class used for the dark-background areas. */
.ribbon {
background: #2d3e50;
color: #aaa;
}
/* This is the class used for the footer */
.footer {
background: #111;
position: fixed;
bottom: 0;
width: 100%;
}
/*
* -- TABLET (AND UP) MEDIA QUERIES --
* On tablets and other medium-sized devices, we want to customize some
* of the mobile styles.
*/
@media (min-width: 48em) {
/* We increase the body font size */
body {
font-size: 16px;
}
/* We can align the menu header to the left, but float the
menu items to the right. */
.home-menu {
text-align: left;
}
.home-menu ul {
float: right;
}
/* We increase the height of the splash-container */
/* .splash-container {
height: 500px;
}*/
/* We decrease the width of the .splash, since we have more width
to work with */
.splash {
width: 50%;
height: 50%;
}
.splash-head {
font-size: 250%;
}
/* We remove the border-separator assigned to .l-box-lrg */
.l-box-lrg {
border: none;
}
}
/*
* -- DESKTOP (AND UP) MEDIA QUERIES --
* On desktops and other large devices, we want to over-ride some
* of the mobile and tablet styles.
*/
@media (min-width: 78em) {
/* We increase the header font size even more */
.splash-head {
font-size: 300%;
}
}

122
htdocs/landing-page.html Normal file
View File

@@ -0,0 +1,122 @@
<!doctype html>
<html lang="en">
<!--#include virtual="/common/header.html" -->
<body>
<title>eom.dev - Home</title>
<!--#include virtual="/common/topnav.html" -->
<div class="splash-container">
<div class="splash">
<h1 class="splash-head">Eric O'Neill Meehan</h1>
<p class="splash-subhead">
Welcome to Eric's homepage.
</p>
</div>
</div>
<div class="content-wrapper">
<div class="content">
<h2 class="content-head is-center">Links</h2>
<div class="pure-g">
<div class="l-box pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
<h3 class="content-subhead">
<i class="fa fa-rocket"></i>
<a href="https://gitea.eom.dev/">Repositories</a>
</h3>
<p>
Open-source engineering projects hosted on <a href="https://gitea.eom.dev/explore/">Gitea</a>.
</p>
</div>
<div class="l-box pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
<h3 class="content-subhead">
<i class="fa fa-film"></i>
<a href="https://owncast.eom.dev/">Live Streams</a>
</h3>
<p>
Broadcasting engineering, music, travel, and games on <a href="https://owncast.eom.dev">Owncast</a> and <a href="https://youtube.com/c/EricOMeehan">YouTube</a>.
</p>
</div>
<div class="l-box pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
<h3 class="content-subhead">
<i class="fa fa-mobile"></i>
<a href="mailto:eric@eom.dev">Contact</a>
</h3>
<p>
Get in touch by joining the <a href="https://mailman.eom.dev/">mailing list</a>, visiting the <a href="https://discourse.eom.dev">forum</a>, or through <a href="https://matrix.to/#general:eom.dev">Matrix</a>.
</p>
</div>
<div class="l-box pure-u-1 pure-u-md-1-2 pure-u-lg-1-4">
<h3 class="content-subhead">
<i class="fa fa-check-square-o"></i>
<a href="https://minio.eom.dev/public">Media</a>
</h3>
<p>
Explore the archive of videos, music, and more from eom.dev.
</p>
</div>
</div>
</div>
<div class="ribbon l-box-lrg pure-g">
<div class="l-box-lrg is-center pure-u-1 pure-u-md-1-2 pure-u-lg-2-5">
<img width="300" alt="File Icons" class="pure-img-responsive" src="/static/profile_2026.jpg">
</div>
<div class="pure-u-1 pure-u-md-1-2 pure-u-lg-3-5">
<h2 class="content-head content-head-ribbon">About</h2>
<p>
Eric Meehan is a 31-year-old software engineer and musician living in Raleigh, North Carolina.
This website is the homepage for Eric's private computer network, eom.dev. Eric uses this network
to self-host and self-publish his engineering and artistic projects. This content is often documenting
further developments of the network itself, and is usually delivered in an educational tone. There is not
a set schedule for projects, events, or live streams, and Eric tends to pick up many projects. The best
way to stay up-to-date is to join the <a href="https://mailman.eom.dev/">mailing list</a>, and the best
way to reach Eric directly is by <a href="mailto:eric@eom.dev">email</a>.
</p>
<a href="/eric@eom.dev.pub">Eric's GPG Key</a>
</div>
</div>
<div class="content">
<h2 class="content-head is-center">Donate</h2>
<center>
<p>
Make a donation to support Eric's online services, engineering projects, and educational content.
</p>
</center>
<div class="pure-g">
<div class="l-box-lrg pure-u-1 pure-u-md-1-2">
<h4>USD</h4>
<p>
Donate USD through Stripe.
</p>
<script async
src="https://js.stripe.com/v3/buy-button.js">
</script>
<stripe-buy-button
buy-button-id="buy_btn_1T2GbAC5KPXqTvVLpcz9TMQU"
publishable-key="pk_live_51RXqTsC5KPXqTvVLWl5bzCxoaZivWceeLGMNURUmxzQMwaM5pUUl4VabywrjCQvgKopGFvUBqPLxRMF3eALsiDst00tR59vRhN"
>
</stripe-buy-button>
</div>
<div class="l-box-lrg pure-u-1 pure-u-md-1-2">
<h4>XMR</h4>
<p>Monero donations can be sent to </p>
<code style="word-wrap: break-word">48mFvxYDSCzMy5a3Zaj7ewApbX4GwXVXX9T1JC8mqBC19s9UcrNq8eaKkQ6GKdhHGQGmhdpvMd3mcbjf4eQbP8Yv7KdAREw</code>
<h5>P2Pool</h5>
<p>
Contribute compute power to the eom.dev mining pool with <a href="https://xmrig.com/">XMRig</a>.
Update the <i>user</i> field in the <a href="/xmrig.json">~/.xmrig.json</a> configuration below to your wallet address.
You may use the Monero donation address above if you would like to donate your payouts to eom.dev.
</div>
</div>
</div>
<!--#include virtual="/common/footer.html" -->
</div>
</body>
</html>

View File

@@ -1,16 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="5;url=/archive/Mail">
<title>eom.dev - Redirecting</title>
<link rel="stylesheet" href="/common/catppuccin.css">
<link rel="icon" type="image/x-icon" href="/common/favicon.ico">
</head>
<body>
<h1>eom.dev</h1>
<h2>Redirecting...</h2>
<p>If you are not redirected automatically, follow this <a href="../archive/Mail">this link</a>.</p>
</body>
</html>

View File

@@ -1,16 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="refresh" content="5;url=/archive/Repositories">
<title>eom.dev - Redirecting</title>
<link rel="stylesheet" href="/common/catppuccin.css">
<link rel="icon" type="image/x-icon" href="/common/favicon.ico">
</head>
<body>
<h1>eom.dev</h1>
<h2>Redirecting...</h2>
<p>If you are not redirected automatically, follow this <a href="../archive/Repositories">this link</a>.</p>
</body>
</html>

View File

@@ -55,12 +55,6 @@
--Dark-Crust: #11111b;
}
body {
margin: 0;
font-family: 'Arial', sans-serif;
transition: background-color 0.3s, color 0.3s;
}
/* Light mode styles */
@media (prefers-color-scheme: light) {
body {
@@ -72,6 +66,10 @@ body {
color: var(--Light-Blue);
}
a:hover {
color: var(--Light-Saphire);
}
strong {
color: var(--Light-Red);
}
@@ -80,6 +78,19 @@ body {
color: var(--Light-Subtext-1);
background-color: var(--Light-Mantle);
}
.topnav {
background-color: var(--Light-Overlay-0);
}
.topnav a {
color: var(--Light-Blue);
}
.topnav a:hover {
color: var(--Light-Saphire);
background-color: var(--Light-Overlay-2);
}
}
/* Dark mode styles */
@@ -93,6 +104,10 @@ body {
color: var(--Dark-Blue);
}
a:hover {
color: var(--Dark-Saphire);
}
strong {
color: var(--Dark-Red);
}
@@ -101,6 +116,19 @@ body {
color: var(--Dark-Subtext-1);
background-color: var(--Dark-Mantle);
}
.topnav {
background-color: var(--Dark-Overlay-0);
}
.topnav a {
color: var(--Dark-Blue);
}
.topnav a:hover {
color: var(--Dark-Saphire);
background-color: var(--Dark-Overlay-2);
}
}
/* Additional common styles */

View File

@@ -1,686 +0,0 @@
body {
font-family: sans-serif;
font-size: small;
border: solid #d9d8d1;
border-width: 1px;
margin: 10px;
background-color: #ffffff;
color: #000000;
}
a {
color: #0000cc;
}
a:hover, a:visited, a:active {
color: #880000;
}
span.cntrl {
border: dashed #aaaaaa;
border-width: 1px;
padding: 0px 2px 0px 2px;
margin: 0px 2px 0px 2px;
}
img.logo {
float: right;
border-width: 0px;
}
img.avatar {
vertical-align: middle;
}
img.blob {
max-height: 100%;
max-width: 100%;
}
a.list img.avatar {
border-style: none;
}
div.page_header {
height: 25px;
padding: 8px;
font-size: 150%;
font-weight: bold;
background-color: #d9d8d1;
}
div.page_header a:visited, a.header {
color: #0000cc;
}
div.page_header a:hover {
color: #880000;
}
div.page_nav {
padding: 8px;
}
div.page_nav a:visited {
color: #0000cc;
}
div.page_path {
padding: 8px;
font-weight: bold;
border: solid #d9d8d1;
border-width: 0px 0px 1px;
}
div.page_footer {
height: 22px;
padding: 4px 8px;
background-color: #d9d8d1;
}
div.page_footer_text {
line-height: 22px;
float: left;
color: #555555;
font-style: italic;
}
div#generating_info {
margin: 4px;
font-size: smaller;
text-align: center;
color: #505050;
}
div.page_body {
padding: 8px;
font-family: monospace;
}
div.title, a.title {
display: block;
padding: 6px 8px;
font-weight: bold;
background-color: #edece6;
text-decoration: none;
color: #000000;
}
div.readme {
padding: 8px;
}
a.title:hover {
background-color: #d9d8d1;
}
div.title_text {
padding: 6px 0px;
border: solid #d9d8d1;
border-width: 0px 0px 1px;
font-family: monospace;
}
div.log_body {
padding: 8px 8px 8px 150px;
}
span.age {
position: relative;
float: left;
width: 142px;
font-style: italic;
}
span.signoff {
color: #888888;
}
div.log_link {
padding: 0px 8px;
font-size: 70%;
font-family: sans-serif;
font-style: normal;
position: relative;
float: left;
width: 136px;
}
div.list_head {
padding: 6px 8px 4px;
border: solid #d9d8d1;
border-width: 1px 0px 0px;
font-style: italic;
}
.author_date, .author {
font-style: italic;
}
div.author_date {
padding: 8px;
border: solid #d9d8d1;
border-width: 0px 0px 1px 0px;
}
a.list {
text-decoration: none;
color: #000000;
}
a.subject, a.name {
font-weight: bold;
}
table.tags a.subject {
font-weight: normal;
}
a.list:hover {
text-decoration: underline;
color: #880000;
}
a.text {
text-decoration: none;
color: #0000cc;
}
a.text:visited {
text-decoration: none;
color: #880000;
}
a.text:hover {
text-decoration: underline;
color: #880000;
}
table {
padding: 8px 4px;
border-spacing: 0;
}
table.diff_tree {
font-family: monospace;
}
table.combined.diff_tree th {
text-align: center;
}
table.combined.diff_tree td {
padding-right: 24px;
}
table.combined.diff_tree th.link,
table.combined.diff_tree td.link {
padding: 0px 2px;
}
table.combined.diff_tree td.nochange a {
color: #6666ff;
}
table.combined.diff_tree td.nochange a:hover,
table.combined.diff_tree td.nochange a:visited {
color: #d06666;
}
table.blame {
border-collapse: collapse;
}
table.blame td {
padding: 0px 5px;
font-size: 100%;
vertical-align: top;
}
th {
padding: 2px 5px;
font-size: 100%;
text-align: left;
}
/* do not change row style on hover for 'blame' view */
tr.light,
table.blame .light:hover {
background-color: #ffffff;
}
tr.dark,
table.blame .dark:hover {
background-color: #f6f6f0;
}
/* currently both use the same, but it can change */
tr.light:hover,
tr.dark:hover {
background-color: #edece6;
}
/* boundary commits in 'blame' view */
/* and commits without "previous" */
tr.boundary td.sha1,
tr.no-previous td.linenr {
font-weight: bold;
}
/* for 'blame_incremental', during processing */
tr.color1 { background-color: #f6fff6; }
tr.color2 { background-color: #f6f6ff; }
tr.color3 { background-color: #fff6f6; }
td {
padding: 2px 5px;
font-size: 100%;
vertical-align: top;
}
td.link, td.selflink {
padding: 2px 5px;
font-family: sans-serif;
font-size: 70%;
}
td.selflink {
padding-right: 0px;
}
td.sha1 {
font-family: monospace;
}
.error {
color: red;
background-color: yellow;
}
td.current_head {
text-decoration: underline;
}
td.category {
background-color: #d9d8d1;
border-top: 1px solid #000000;
border-left: 1px solid #000000;
font-weight: bold;
}
table.diff_tree span.file_status.new {
color: #008000;
}
table.diff_tree span.file_status.deleted {
color: #c00000;
}
table.diff_tree span.file_status.moved,
table.diff_tree span.file_status.mode_chnge {
color: #777777;
}
table.diff_tree span.file_status.copied {
color: #70a070;
}
/* noage: "No commits" */
table.project_list td.noage {
color: #808080;
font-style: italic;
}
/* age2: 60*60*24*2 <= age */
table.project_list td.age2, table.blame td.age2 {
font-style: italic;
}
/* age1: 60*60*2 <= age < 60*60*24*2 */
table.project_list td.age1 {
color: #009900;
font-style: italic;
}
table.blame td.age1 {
color: #009900;
background: transparent;
}
/* age0: age < 60*60*2 */
table.project_list td.age0 {
color: #009900;
font-style: italic;
font-weight: bold;
}
table.blame td.age0 {
color: #009900;
background: transparent;
font-weight: bold;
}
td.pre, div.pre, div.diff {
font-family: monospace;
font-size: 12px;
white-space: pre;
}
td.mode {
font-family: monospace;
}
/* progress of blame_interactive */
div#progress_bar {
height: 2px;
margin-bottom: -2px;
background-color: #d8d9d0;
}
div#progress_info {
float: right;
text-align: right;
}
/* format of (optional) objects size in 'tree' view */
td.size {
font-family: monospace;
text-align: right;
}
/* styling of diffs (patchsets): commitdiff and blobdiff views */
div.diff.header,
div.diff.extended_header {
white-space: normal;
}
div.diff.header {
font-weight: bold;
background-color: #edece6;
margin-top: 4px;
padding: 4px 0px 2px 0px;
border: solid #d9d8d1;
border-width: 1px 0px 1px 0px;
}
div.diff.header a.path {
text-decoration: underline;
}
div.diff.extended_header,
div.diff.extended_header a.path,
div.diff.extended_header a.hash {
color: #777777;
}
div.diff.extended_header .info {
color: #b0b0b0;
}
div.diff.extended_header {
background-color: #f6f5ee;
padding: 2px 0px 2px 0px;
}
div.diff a.list,
div.diff a.path,
div.diff a.hash {
text-decoration: none;
}
div.diff a.list:hover,
div.diff a.path:hover,
div.diff a.hash:hover {
text-decoration: underline;
}
div.diff.to_file a.path,
div.diff.to_file {
color: #007000;
}
div.diff.add {
color: #008800;
}
div.diff.add span.marked {
background-color: #aaffaa;
}
div.diff.from_file a.path,
div.diff.from_file {
color: #aa0000;
}
div.diff.rem {
color: #cc0000;
}
div.diff.rem span.marked {
background-color: #ffaaaa;
}
div.diff.chunk_header a,
div.diff.chunk_header {
color: #990099;
}
div.diff.chunk_header {
border: dotted #ffe0ff;
border-width: 1px 0px 0px 0px;
margin-top: 2px;
}
div.diff.chunk_header span.chunk_info {
background-color: #ffeeff;
}
div.diff.chunk_header span.section {
color: #aa22aa;
}
div.diff.incomplete {
color: #cccccc;
}
div.diff.nodifferences {
font-weight: bold;
color: #600000;
}
/* side-by-side diff */
div.chunk_block {
overflow: hidden;
}
div.chunk_block div.old {
float: left;
width: 50%;
overflow: hidden;
}
div.chunk_block div.new {
margin-left: 50%;
width: 50%;
}
div.chunk_block.rem div.old div.diff.rem {
background-color: #fff5f5;
}
div.chunk_block.add div.new div.diff.add {
background-color: #f8fff8;
}
div.chunk_block.chg div div.diff {
background-color: #fffff0;
}
div.chunk_block.ctx div div.diff.ctx {
color: #404040;
}
div.index_include {
border: solid #d9d8d1;
border-width: 0px 0px 1px;
padding: 12px 8px;
}
div.search {
font-size: 100%;
font-weight: normal;
margin: 4px 8px;
float: right;
top: 56px;
right: 12px
}
div.projsearch {
text-align: center;
margin: 20px 0px;
}
div.projsearch form {
margin-bottom: 2px;
}
td.linenr {
text-align: right;
}
a.linenr {
color: #999999;
text-decoration: none
}
a.rss_logo {
float: right;
padding: 3px 5px;
line-height: 10px;
border: 1px solid;
border-color: #fcc7a5 #7d3302 #3e1a01 #ff954e;
color: #ffffff;
background-color: #ff6600;
font-weight: bold;
font-family: sans-serif;
font-size: 70%;
text-align: center;
text-decoration: none;
}
a.rss_logo:hover {
background-color: #ee5500;
}
a.rss_logo.generic {
background-color: #ff8800;
}
a.rss_logo.generic:hover {
background-color: #ee7700;
}
span.refs span {
padding: 0px 4px;
font-size: 70%;
font-weight: normal;
border: 1px solid;
background-color: #ffaaff;
border-color: #ffccff #ff00ee #ff00ee #ffccff;
}
span.refs span a {
text-decoration: none;
color: inherit;
}
span.refs span a:hover {
text-decoration: underline;
}
span.refs span.indirect {
font-style: italic;
}
span.refs span.ref {
background-color: #aaaaff;
border-color: #ccccff #0033cc #0033cc #ccccff;
}
span.refs span.tag {
background-color: #ffffaa;
border-color: #ffffcc #ffee00 #ffee00 #ffffcc;
}
span.refs span.head {
background-color: #aaffaa;
border-color: #ccffcc #00cc33 #00cc33 #ccffcc;
}
span.atnight {
color: #cc0000;
}
span.match {
color: #e00000;
}
div.binary {
font-style: italic;
}
div.remote {
margin: .5em;
border: 1px solid #d9d8d1;
display: inline-block;
}
/* JavaScript-based timezone manipulation */
.popup { /* timezone selection UI */
position: absolute;
/* "top: 0; right: 0;" would be better, if not for bugs in browsers */
top: 0; left: 0;
border: 1px solid;
padding: 2px;
background-color: #f0f0f0;
font-style: normal;
color: #000000;
cursor: auto;
}
.close-button { /* close timezone selection UI without selecting */
/* float doesn't work within absolutely positioned container,
* if width of container is not set explicitly */
/* float: right; */
position: absolute;
top: 0px; right: 0px;
border: 1px solid green;
margin: 1px 1px 1px 1px;
padding-bottom: 2px;
width: 12px;
height: 10px;
font-size: 9px;
font-weight: bold;
text-align: center;
background-color: #fff0f0;
cursor: pointer;
}
/* Style definition generated by highlight 2.4.5, http://andre-simon.de/doku/highlight/en/highlight.php */
/* Highlighting theme definition: */
.num { color:#2928ff; }
.esc { color:#ff00ff; }
.str { color:#ff0000; }
.dstr { color:#818100; }
.slc { color:#838183; font-style:italic; }
.com { color:#838183; font-style:italic; }
.dir { color:#008200; }
.sym { color:#000000; }
.line { color:#555555; }
.kwa { color:#000000; font-weight:bold; }
.kwb { color:#830000; }
.kwc { color:#000000; font-weight:bold; }
.kwd { color:#010181; }

File diff suppressed because it is too large Load Diff

View File

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 79 KiB

343
htdocs/static/pure.css Normal file
View File

@@ -0,0 +1,343 @@
:root {
--Light-Rosewater: #dc8a78;
--Light-Flamingo: #dd7878;
--Light-Pink: #ea76cb;
--Light-Mauve: #8839ef;
--Light-Red: #d20f39;
--Light-Maroon: #e64553;
--Light-Peach: #fe640b;
--Light-Yellow: #df8e1d;
--Light-Green: #40a02b;
--Light-Teal: #179299;
--Light-Sky: #04a5e5;
--Light-Sapphire: #209fb5;
--Light-Blue: #1e66f5;
--Light-Lavender: #7287fd;
--Light-Text: #4c4f69;
--Light-Subtext-1: #5c5f77;
--Light-Subtext-0: #6c6f85;
--Light-Overlay-2: #7c7f93;
--Light-Overlay-1: #8c8fa1;
--Light-Overlay-0: #9ca0b0;
--Light-Surface-2: #acb0be;
--Light-Surface-1: #bcc0cc;
--Light-Surface-0: #ccd0da;
--Light-Base: #eff1f5;
--Light-Mantle: #e6e9ef;
--Light-Crust: #dce0e8;
--Dark-Rosewater: #f5e0dc;
--Dark-Flamingo: #f2cdcd;
--Dark-Pink: #f5c2e7;
--Dark-Mauve: #cba6f7;
--Dark-Red: #f38ba8;
--Dark-Maroon: #eba0ac;
--Dark-Peach: #fab387;
--Dark-Yellow: #f9e2af;
--Dark-Green: #a6e3a1;
--Dark-Teal: #94e2d5;
--Dark-Sky: #89dceb;
--Dark-Sapphire: #74c7ec;
--Dark-Blue: #89b4fa;
--Dark-Lavender: #b4befe;
--Dark-Text: #cdd6f4;
--Dark-Subtext-1: #bac2de;
--Dark-Subtext-0: #a6adc8;
--Dark-Overlay-2: #9399b2;
--Dark-Overlay-1: #7f849c;
--Dark-Overlay-0: #6c7086;
--Dark-Surface-2: #585b70;
--Dark-Surface-1: #45475a;
--Dark-Surface-0: #313244;
--Dark-Base: #1e1e2e;
--Dark-Mantle: #181825;
--Dark-Crust: #11111b;
}
@media (prefers-color-scheme: dark) {
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
/*
* -- BASE STYLES --
* Most of these are inherited from Base, but I want to change a few.
*/
body {
line-height: 1.7em;
color: var(--Dark-Text);
font-size: 13px;
}
h1,
h2,
h3,
h4,
h5,
h6,
label {
color: var(--Dark-Subtext-0);
}
.pure-img-responsive {
max-width: 100%;
height: auto;
}
/*
* -- LAYOUT STYLES --
* These are some useful classes which I will need
*/
.l-box {
padding: 1em;
}
.l-box-lrg {
padding: 2em;
border-bottom: 1px solid rgba(0,0,0,0.1);
}
.is-center {
text-align: center;
}
/*
* -- PURE FORM STYLES --
* Style the form inputs and labels
*/
.pure-form label {
margin: 1em 0 0;
font-weight: bold;
font-size: 100%;
}
.pure-form input[type] {
border: 2px solid #ddd;
box-shadow: none;
font-size: 100%;
width: 100%;
margin-bottom: 1em;
}
/*
* -- PURE BUTTON STYLES --
* I want my pure-button elements to look a little different
*/
.pure-button {
background-color: var(--Dark-Blue);
color: var(--Dark-Overlay-0);
padding: 0.5em 2em;
border-radius: 5px;
}
a.pure-button-primary {
background: var(--Dark-Overlay-0);
color: var(--Dark-Saphire);
border-radius: 5px;
font-size: 120%;
}
/*
* -- MENU STYLES --
* I want to customize how my .pure-menu looks at the top of the page
*/
.home-menu {
padding: 0.5em;
text-align: center;
box-shadow: 0 1px 1px rgba(0,0,0, 0.10);
}
.home-menu {
background: var(--Dark-Crust);
}
.pure-menu.pure-menu-fixed {
/* Fixed menus normally have a border at the bottom. */
border-bottom: none;
/* I need a higher z-index here because of the scroll-over effect. */
z-index: 4;
}
.home-menu .pure-menu-heading {
color: var(--Dark-Text);
font-weight: 400;
font-size: 120%;
}
.home-menu .pure-menu-selected a {
color: var(--Dark-Overlay-1);
}
.home-menu a {
color: var(--Dark-Blue);
}
.home-menu li a:hover,
.home-menu li a:focus {
background: none;
border: none;
color: var(--Dark-Saphire);
}
/*
* -- SPLASH STYLES --
* This is the blue top section that appears on the page.
*/
.splash-container {
background: var(--Dark-Base);
z-index: 1;
overflow: hidden;
/* The following styles are required for the "scroll-over" effect */
width: 100%;
height: 88%;
top: 0;
left: 0;
position: fixed !important;
}
.splash {
/* absolute center .splash within .splash-container */
width: 80%;
height: 50%;
margin: auto;
position: absolute;
top: 100px; left: 0; bottom: 0; right: 0;
text-align: center;
text-transform: uppercase;
}
/* This is the main heading that appears on the blue section */
.splash-head {
font-size: 20px;
font-weight: bold;
color: var(--Dark-Text);
border: 3px solid var(--Dark-Text);
padding: 1em 1.6em;
font-weight: 100;
border-radius: 5px;
line-height: 1em;
}
/* This is the subheading that appears on the blue section */
.splash-subhead {
color: var(--Dark-Subtext-0);
letter-spacing: 0.05em;
opacity: 0.8;
}
/*
* -- CONTENT STYLES --
* This represents the content area (everything below the blue section)
*/
.content-wrapper {
/* These styles are required for the "scroll-over" effect */
position: absolute;
top: 87%;
width: 100%;
min-height: 12%;
z-index: 2;
background: var(--Dark-Surface-1);
}
/* We want to give the content area some more padding */
.content {
padding: 1em 1em 3em;
}
/* This is the class used for the main content headers (<h2>) */
.content-head {
font-weight: 400;
text-transform: uppercase;
letter-spacing: 0.1em;
margin: 2em 0 1em;
}
/* This is a modifier class used when the content-head is inside a ribbon */
.content-head-ribbon {
color: var(--Dark-Subtext-0);
}
/* This is the class used for the content sub-headers (<h3>) */
.content-subhead {
color: var(--Dark-Subtext-1);
}
.content-subhead i {
margin-right: 7px;
}
/* This is the class used for the dark-background areas. */
.ribbon {
background: var(--Dark-Surface-0);
color: var(--Dark-Text);
}
/* This is the class used for the footer */
.footer {
background: var(--Dark-Mantle);
position: fixed;
bottom: 0;
width: 100%;
}
/*
* -- TABLET (AND UP) MEDIA QUERIES --
* On tablets and other medium-sized devices, we want to customize some
* of the mobile styles.
*/
@media (min-width: 48em) {
/* We increase the body font size */
body {
font-size: 16px;
}
/* We can align the menu header to the left, but float the
menu items to the right. */
.home-menu {
text-align: left;
}
.home-menu ul {
float: right;
}
/* We increase the height of the splash-container */
/* .splash-container {
height: 500px;
}*/
/* We decrease the width of the .splash, since we have more width
to work with */
.splash {
width: 50%;
height: 50%;
}
.splash-head {
font-size: 250%;
}
/* We remove the border-separator assigned to .l-box-lrg */
.l-box-lrg {
border: none;
}
}
/*
* -- DESKTOP (AND UP) MEDIA QUERIES --
* On desktops and other large devices, we want to over-ride some
* of the mobile and tablet styles.
*/
@media (min-width: 78em) {
/* We increase the header font size even more */
.splash-head {
font-size: 300%;
}
}
}

View File

@@ -1,43 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>eom.dev - Live Stream</title>
<meta name="viewport" content="width=device-width,initial-scale=1">
<link rel="stylesheet" href="/common/catppuccin.css">
<link rel="icon" type="image/x-icon" href="/common/favicon.ico">
<body>
<h1>eom.dev</h1>
<h2>Live Stream</h2>
<a href="/">Home
</a> | <a href="/archive">Archive
</a> | <a href="/archive/Repositories">Repositories
</a> | <a href="/stream">Live Stream
</a> | <a href="/archive/Mail">Mailbox
</a> | <a href="/chat">Chat
</a> | <a href="/donate">Donate
</a>
<h3>Watch Eric Live</h3>
<p>
Powered by <a href="https://owncast.online/">Owncast</a>.
<br>
Recordings of previous streams are available in the <a href="/archive/Videos">archive</a>.
<br>
Post-stream discussions and comments should be submitted to the <a href="/archive/Mail">mailbox
</a>
or <a href="/chat">chat</a>
</p>
<iframe
src="https://owncast.eom.dev/embed/video"
title="Owncast"
height="600px" width="75%"
referrerpolicy="origin"
allowfullscreen></iframe>
<iframe
src="https://owncast.eom.dev/embed/chat/readwrite"
title="Owncast Chat"
height="600px" width="20%"></iframe>
</body>
<footer>
<p>© Eric O'Neill Meehan 2026</p>
</footer>
</html>