track src/, fonts/ as project source, replace Hugo with static website

- commit keylayouts, icons, lproj, Iosevka fonts
- remove Hugo, build static site (HTML + CSS + vanilla JS)
- CI workflow generates layout PDFs, deploys to GitHub Pages
This commit is contained in:
2026-03-05 14:10:18 +01:00
parent 019075c12c
commit 3e2fc8f0d9
47 changed files with 7843 additions and 336 deletions

View File

@@ -1,82 +0,0 @@
# Sample workflow for building and deploying a Hugo site to GitHub Pages
name: Deploy Hugo site to GitHub Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
# Default to bash
defaults:
run:
shell: bash
jobs:
# Build job
build:
runs-on: ubuntu-latest
env:
HUGO_VERSION: 0.120.4
steps:
- name: Install Hugo CLI
run: |
wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
&& sudo dpkg -i ${{ runner.temp }}/hugo.deb
- name: Install Dart Sass
run: sudo snap install dart-sass
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
- name: Setup Pages
id: pages
uses: actions/configure-pages@v4
- name: Install Node.js dependencies
run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
- name: Build with Hugo
env:
# For maximum backward compatibility with Hugo modules
HUGO_ENVIRONMENT: production
HUGO_ENV: production
run: |
hugo \
--source /home/runner/work/EurKEY-macOS/EurKEY-macOS/eurkey-macos.eu/ \
--minify \
--baseURL "${{ steps.pages.outputs.base_url }}" # Adjust baseURL according to your directory structure
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: eurkey-macos.eu/public
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

42
.github/workflows/website.yml vendored Normal file
View File

@@ -0,0 +1,42 @@
name: Deploy website
on:
push:
branches: [main]
paths:
- 'eurkey-macos.eu/**'
- 'src/keylayouts/**'
- 'fonts/**'
- 'scripts/generate_layout_pdf.py'
- 'scripts/parse_keylayout.py'
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: pages
cancel-in-progress: false
jobs:
deploy:
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Generate layout PDFs
run: |
pip install fpdf2
python3 scripts/generate_layout_pdf.py -o eurkey-macos.eu/pdf/
- uses: actions/configure-pages@v5
- uses: actions/upload-pages-artifact@v3
with:
path: eurkey-macos.eu
- id: deployment
uses: actions/deploy-pages@v4

1
eurkey-macos.eu/CNAME Normal file
View File

@@ -0,0 +1 @@
eurkey-macos.eu

View File

@@ -1,5 +0,0 @@
+++
title = '{{ replace .File.ContentBaseName "-" " " | title }}'
date = {{ .Date }}
draft = true
+++

View File

@@ -1,58 +0,0 @@
# EurKEY-macOS
The Keyboard Layout for Europeans, Coders and Translators. This repo is a fork and contains a **modified verison** of the EurKEY base layout.
I start versioning my customized edition from 2, since the layout is based on my modified EurKEY v1.4 that I have been using the last few years. The version with slight fixes is now available is called v1.5.
EurKEY-macOS is a rework targeted at MacBooks with the with pyhiscal English International keyboard (ISO). Since it is an ISO layout, it has one additional key (`) and the big Enter key.
The keyboard layout should be compatible with the other ISO layouts typically available in Europe (e.g. German ISO). I tested the layout on the current tenkeyless MacBook keyboard (MacBook Air 2024). Working numpad keys are therefore not guaranteed.
## Installation
- Download the `EurKEY.bundle` file.
- Copy the `EurKEY.bundle` file to `/Library/Keyboard Layouts/` (for global installation) or `~/Library/Keyboard Layouts/` (for user installation).
- Open System Settings > Keyboard > Input Sources <br><img src="eurkey-macos.eu/static/img/1-input-sources.png" width="300">
- Click the `+` button <br><img src="eurkey-macos.eu/static/img/2-add-layout.png" width="300">
- Add `EurKEY` from the list of available input sources <br><img src="eurkey-macos.eu/static/img/3-select-eurkey.png" width="300">
- Select `EurKEY` as the input method <br><img src="eurkey-macos.eu/static/img/4-select-input-method.png" width="300">
## Changelog
### v2.0 (WIP)
| Key Combinations | Dead Key Symbol |
| ---------------- | --------------- |
| ⌥` | ` |
| ⌥⇧` | ~ |
| ⌥' | ´ |
| ⌥⇧' | ¨ |
| ⌥6 | ^ |
| ⌥⇧6 | ˇ |
| ⌥7 | ˚ |
| ⌥⇧7 | ¯ |
| ⌥m | Ω |
| ⌥⇧m | √ |
| ⌥\ | ¬ |
### v1.5
- Configures every key exactly as it is printed on the keyboard (English - International).
- Fixes §-Key.
- Fixes German ẞ-Character ("Großes scharfes S"). Now correctly available via ⌥⇧s.
- Removes distiction between left/right modifier keys.
- Uses the `*.bundle` format to group the layout versions.
- Adds new nicer flag icon from upstream.
### v1.4
- Switches behaviour of superscript and subscript numbers: The subscript numbers are the default; the superscript numbers are available via `⌥⇧<number>`.
## Attribution
You can find the original EurKEY layout on [Steffen Brüntjens Website](https://eurkey.steffen.bruentjen.eu/start.html). My modified versions are originally based on the work of [Leonardo Brondani Schenkel](https://github.com/lbschenkel/EurKEY-Mac).
## License
- The EurKEY Layout is licensed under [GPLv3](http://www.gnu.org/licenses/gpl-3.0.html). See: [https://eurkey.steffen.bruentjen.eu/license.html](https://eurkey.steffen.bruentjen.eu/license.html).
- The EU flag icon is taken from [Iconspedia](http://www.iconspedia.com/pack/european-flags-1631/), created by [Alpak](http://alpak.deviantart.com/) and licensed under [CC](http://creativecommons.org/licenses/by-nc-nd/3.0).

View File

@@ -1,4 +0,0 @@
baseURL = 'https://eurkey-macos.eu'
languageCode = 'en'
title = 'EurKEY-macOS'
theme = 'blank'

View File

Before

Width:  |  Height:  |  Size: 356 KiB

After

Width:  |  Height:  |  Size: 356 KiB

View File

Before

Width:  |  Height:  |  Size: 111 KiB

After

Width:  |  Height:  |  Size: 111 KiB

View File

Before

Width:  |  Height:  |  Size: 192 KiB

After

Width:  |  Height:  |  Size: 192 KiB

View File

Before

Width:  |  Height:  |  Size: 54 KiB

After

Width:  |  Height:  |  Size: 54 KiB

View File

@@ -0,0 +1,28 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 128 128" fill="none">
<rect width="128" height="128" rx="28" fill="#003399"/>
<g fill="#FFCC00">
<circle cx="64" cy="34" r="3"/>
<circle cx="71.5" cy="35.5" r="3"/>
<circle cx="77.5" cy="40" r="3"/>
<circle cx="80" cy="47" r="3"/>
<circle cx="77.5" cy="54" r="3"/>
<circle cx="71.5" cy="58.5" r="3"/>
<circle cx="64" cy="60" r="3"/>
<circle cx="56.5" cy="58.5" r="3"/>
<circle cx="50.5" cy="54" r="3"/>
<circle cx="48" cy="47" r="3"/>
<circle cx="50.5" cy="40" r="3"/>
<circle cx="56.5" cy="35.5" r="3"/>
</g>
<g fill="#fff" opacity=".9">
<rect x="22" y="74" width="14" height="12" rx="3"/>
<rect x="39" y="74" width="14" height="12" rx="3"/>
<rect x="56" y="74" width="14" height="12" rx="3"/>
<rect x="73" y="74" width="14" height="12" rx="3"/>
<rect x="90" y="74" width="14" height="12" rx="3"/>
<rect x="30" y="90" width="14" height="12" rx="3"/>
<rect x="47" y="90" width="14" height="12" rx="3"/>
<rect x="64" y="90" width="14" height="12" rx="3"/>
<rect x="81" y="90" width="14" height="12" rx="3"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

147
eurkey-macos.eu/index.html Normal file
View File

@@ -0,0 +1,147 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EurKEY — The European Keyboard Layout for macOS</title>
<meta name="description" content="The keyboard layout for Europeans, coders, and translators. Dead keys for diacritics, ISO international layout, easy DMG install.">
<link rel="icon" type="image/svg+xml" href="img/icon.svg">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- NAV -->
<nav class="nav">
<div class="nav-inner">
<a href="#" class="nav-logo">
<img src="img/icon.svg" alt="" width="32" height="32">
<span>EurKEY</span>
</a>
<div class="nav-links">
<a href="#features">Features</a>
<a href="#layout">Layout</a>
<a href="#install">Install</a>
<a href="https://github.com/felixfoertsch/EurKEY-macOS" class="nav-github" aria-label="GitHub">
<svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor">
<path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"/>
</svg>
</a>
</div>
</div>
</nav>
<!-- HERO -->
<section class="hero">
<img src="img/icon.svg" alt="EurKEY icon" class="hero-icon" width="96" height="96">
<h1>The European Keyboard Layout for macOS</h1>
<p class="hero-sub">Dead keys for diacritics. ISO international layout. Designed for MacBook keyboards.</p>
<a href="https://github.com/felixfoertsch/EurKEY-macOS/releases" class="btn">Download on GitHub</a>
</section>
<!-- FEATURES -->
<section id="features" class="features">
<div class="container">
<h2>Features</h2>
<div class="feature-grid">
<div class="feature-card">
<div class="feature-icon"></div>
<h3>Dead Keys for Diacritics</h3>
<p>Type accented characters (ä, é, ñ, č, …) using intuitive Option-key combinations. No character palette needed.</p>
</div>
<div class="feature-card">
<div class="feature-icon"></div>
<h3>ISO International Layout</h3>
<p>Built for the physical English International keyboard found on European MacBooks — with the extra § key and big Enter.</p>
</div>
<div class="feature-card">
<div class="feature-icon"></div>
<h3>Multiple Versions</h3>
<p>Ships v1.2, v1.3, v1.4, and v2.0 in a single bundle. Pick the one that fits your workflow.</p>
</div>
<div class="feature-card">
<div class="feature-icon"></div>
<h3>Easy Install</h3>
<p>Download the DMG, drag the bundle to Keyboard Layouts, log out. Done in under a minute.</p>
</div>
</div>
</div>
</section>
<!-- LAYOUT PREVIEW -->
<section id="layout" class="layout-preview">
<div class="container">
<h2>Layout Preview</h2>
<p class="section-sub">The complete key map for each version, showing all modifier layers and dead key compositions.</p>
<div class="layout-tabs">
<button class="tab active" data-version="v1.3">v1.3</button>
<button class="tab" data-version="v1.2">v1.2</button>
<button class="tab" data-version="v1.4">v1.4</button>
<button class="tab" data-version="v2.0">v2.0</button>
</div>
<div class="layout-viewer">
<iframe id="pdf-viewer" src="pdf/eurkey-v1.3-layout.pdf" title="EurKEY layout PDF"></iframe>
<p class="layout-fallback">
<a id="pdf-download" href="pdf/eurkey-v1.3-layout.pdf">Download layout PDF</a>
</p>
</div>
</div>
</section>
<!-- INSTALLATION -->
<section id="install" class="install">
<div class="container">
<h2>Installation</h2>
<div class="install-steps">
<div class="step">
<div class="step-number">1</div>
<div class="step-content">
<h3>Download</h3>
<p>Get the latest <code>.dmg</code> from <a href="https://github.com/felixfoertsch/EurKEY-macOS/releases">GitHub Releases</a>. Open it and drag <code>EurKey-macOS.bundle</code> to the <em>Keyboard Layouts</em> folder.</p>
</div>
</div>
<div class="step">
<div class="step-number">2</div>
<div class="step-content">
<h3>Log out</h3>
<p>Log out and back in (or restart) so macOS picks up the new layout.</p>
</div>
</div>
<div class="step">
<div class="step-number">3</div>
<div class="step-content">
<h3>Add the layout</h3>
<p>Open <strong>System Settings → Keyboard → Input Sources</strong>. Click <strong>Edit…</strong>, then <strong>+</strong> to add a new input source. Search for "EurKEY" and select the version you want.</p>
<div class="install-screenshots">
<img src="img/1-input-sources.png" alt="System Settings showing the Edit button for input sources" loading="lazy">
<img src="img/2-add-layout.png" alt="Dialog to add a new input source" loading="lazy">
<img src="img/3-select-eurkey.png" alt="EurKEY in the input sources list" loading="lazy">
</div>
</div>
</div>
<div class="step">
<div class="step-number">4</div>
<div class="step-content">
<h3>Select it</h3>
<p>Click the input source icon in the menu bar and switch to EurKEY.</p>
<div class="install-screenshots">
<img src="img/4-select-input-method.png" alt="Selecting EurKEY from the menu bar dropdown" loading="lazy">
</div>
</div>
</div>
</div>
</div>
</section>
<!-- FOOTER -->
<footer class="footer">
<div class="container">
<p>
Based on <a href="https://eurkey.steffen.bruentjen.eu/start.html">EurKEY</a> by Steffen Brüntjen
· macOS port originally by <a href="https://github.com/lbschenkel/EurKEY-Mac">Leonardo Brondani Schenkel</a>
</p>
<p>Licensed under <a href="https://www.gnu.org/licenses/gpl-3.0.html">GPLv3</a></p>
</div>
</footer>
<script src="main.js"></script>
</body>
</html>

16
eurkey-macos.eu/main.js Normal file
View File

@@ -0,0 +1,16 @@
document.addEventListener("DOMContentLoaded", () => {
const tabs = document.querySelectorAll(".tab");
const viewer = document.getElementById("pdf-viewer");
const download = document.getElementById("pdf-download");
tabs.forEach(tab => {
tab.addEventListener("click", () => {
tabs.forEach(t => t.classList.remove("active"));
tab.classList.add("active");
const version = tab.dataset.version;
const url = `pdf/eurkey-${version}-layout.pdf`;
viewer.src = url;
download.href = url;
});
});
});

404
eurkey-macos.eu/style.css Normal file
View File

@@ -0,0 +1,404 @@
/* Reset & base */
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
html {
scroll-behavior: smooth;
scroll-padding-top: 5rem;
}
body {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
color: #1a1a2e;
line-height: 1.6;
-webkit-font-smoothing: antialiased;
}
a {
color: #003399;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
img {
max-width: 100%;
height: auto;
}
.container {
max-width: 960px;
margin: 0 auto;
padding: 0 1.5rem;
}
/* Nav */
.nav {
position: sticky;
top: 0;
z-index: 100;
background: rgba(255, 255, 255, 0.85);
backdrop-filter: blur(12px);
-webkit-backdrop-filter: blur(12px);
border-bottom: 1px solid rgba(0, 0, 0, 0.08);
}
.nav-inner {
max-width: 960px;
margin: 0 auto;
padding: 0 1.5rem;
display: flex;
align-items: center;
justify-content: space-between;
height: 3.5rem;
}
.nav-logo {
display: flex;
align-items: center;
gap: 0.5rem;
font-weight: 700;
font-size: 1.125rem;
color: #1a1a2e;
text-decoration: none;
}
.nav-logo img {
border-radius: 6px;
}
.nav-links {
display: flex;
align-items: center;
gap: 1.5rem;
}
.nav-links a {
color: #5a6178;
font-size: 0.9rem;
font-weight: 500;
text-decoration: none;
transition: color 0.15s;
}
.nav-links a:hover {
color: #003399;
text-decoration: none;
}
.nav-github {
display: flex;
align-items: center;
}
/* Hero */
.hero {
text-align: center;
padding: 5rem 1.5rem 4rem;
background: linear-gradient(180deg, #f0f4ff 0%, #fff 100%);
}
.hero-icon {
border-radius: 20px;
margin-bottom: 1.5rem;
}
.hero h1 {
font-size: 2.5rem;
font-weight: 800;
letter-spacing: -0.02em;
line-height: 1.15;
margin-bottom: 1rem;
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
.hero-sub {
font-size: 1.15rem;
color: #5a6178;
max-width: 480px;
margin: 0 auto 2rem;
}
.btn {
display: inline-block;
background: #003399;
color: #fff;
padding: 0.75rem 2rem;
border-radius: 8px;
font-size: 1rem;
font-weight: 600;
text-decoration: none;
transition: background 0.15s;
}
.btn:hover {
background: #002266;
text-decoration: none;
}
/* Features */
.features {
padding: 4rem 0;
}
.features h2 {
text-align: center;
font-size: 1.75rem;
font-weight: 700;
margin-bottom: 2.5rem;
}
.feature-grid {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1.5rem;
}
.feature-card {
background: #f5f7fa;
border: 1px solid rgba(0, 0, 0, 0.06);
border-radius: 12px;
padding: 1.5rem;
text-align: center;
}
.feature-icon {
font-size: 2rem;
margin-bottom: 0.75rem;
}
.feature-card h3 {
font-size: 1rem;
font-weight: 600;
margin-bottom: 0.5rem;
}
.feature-card p {
font-size: 0.875rem;
color: #5a6178;
line-height: 1.5;
}
/* Layout preview */
.layout-preview {
padding: 4rem 0;
background: #f5f7fa;
}
.layout-preview h2 {
text-align: center;
font-size: 1.75rem;
font-weight: 700;
margin-bottom: 0.5rem;
}
.section-sub {
text-align: center;
color: #5a6178;
margin-bottom: 2rem;
}
.layout-tabs {
display: flex;
justify-content: center;
gap: 0.5rem;
margin-bottom: 1.5rem;
}
.tab {
background: #fff;
border: 1px solid rgba(0, 0, 0, 0.1);
border-radius: 8px;
padding: 0.5rem 1.25rem;
font-size: 0.9rem;
font-weight: 500;
cursor: pointer;
transition: all 0.15s;
color: #5a6178;
}
.tab:hover {
border-color: #003399;
color: #003399;
}
.tab.active {
background: #003399;
border-color: #003399;
color: #fff;
}
.layout-viewer {
background: #fff;
border: 1px solid rgba(0, 0, 0, 0.08);
border-radius: 12px;
overflow: hidden;
}
.layout-viewer iframe {
width: 100%;
height: 600px;
border: none;
}
.layout-fallback {
text-align: center;
padding: 0.75rem;
font-size: 0.875rem;
color: #5a6178;
border-top: 1px solid rgba(0, 0, 0, 0.06);
}
/* Installation */
.install {
padding: 4rem 0;
}
.install h2 {
text-align: center;
font-size: 1.75rem;
font-weight: 700;
margin-bottom: 2.5rem;
}
.install-steps {
max-width: 640px;
margin: 0 auto;
}
.step {
display: flex;
gap: 1.25rem;
margin-bottom: 2.5rem;
position: relative;
}
.step:not(:last-child)::after {
content: "";
position: absolute;
left: 1.25rem;
top: 3rem;
bottom: -1.25rem;
width: 2px;
background: #e0e4ed;
}
.step-number {
flex-shrink: 0;
width: 2.5rem;
height: 2.5rem;
background: #003399;
color: #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
font-weight: 700;
font-size: 1rem;
}
.step-content h3 {
font-size: 1.125rem;
font-weight: 600;
margin-bottom: 0.375rem;
}
.step-content p {
color: #5a6178;
font-size: 0.95rem;
}
.step-content code {
background: #f0f4ff;
padding: 0.125rem 0.375rem;
border-radius: 4px;
font-size: 0.85rem;
}
.install-screenshots {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 0.75rem;
margin-top: 1rem;
}
.install-screenshots img {
border-radius: 8px;
border: 1px solid rgba(0, 0, 0, 0.08);
}
/* Footer */
.footer {
border-top: 1px solid rgba(0, 0, 0, 0.08);
padding: 2rem 0;
text-align: center;
}
.footer p {
font-size: 0.85rem;
color: #5a6178;
margin-bottom: 0.25rem;
}
.footer a {
color: #5a6178;
text-decoration: underline;
}
.footer a:hover {
color: #003399;
}
/* Responsive */
@media (max-width: 768px) {
.hero h1 {
font-size: 1.75rem;
}
.hero-sub {
font-size: 1rem;
}
.feature-grid {
grid-template-columns: repeat(2, 1fr);
}
.layout-viewer iframe {
height: 400px;
}
}
@media (max-width: 480px) {
.nav-links a:not(.nav-github) {
display: none;
}
.hero {
padding: 3rem 1.5rem 2.5rem;
}
.hero h1 {
font-size: 1.5rem;
}
.feature-grid {
grid-template-columns: 1fr;
}
.layout-viewer iframe {
height: 300px;
}
.install-screenshots {
grid-template-columns: 1fr;
}
}

View File

@@ -1,20 +0,0 @@
The MIT License (MIT)
Copyright (c) 2016 Vimux
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@@ -1,31 +0,0 @@
# Blank
Blank — starter [Hugo](https://gohugo.io/) theme for developers. Use it to make your own theme.
**[Demo](https://blank-demo.netlify.app/)**
![Blank theme screenshot](https://github.com/Vimux/blank/blob/master/images/splash.png)
## Installation
In your Hugo site `themes` directory, run:
```
git clone https://github.com/vimux/blank
```
Next, open `config.toml` in the base of the Hugo site and ensure the theme option is set to `blank`.
```
theme = "blank"
```
For more information read the official [quick start guide](https://gohugo.io/getting-started/quick-start/) of Hugo.
## Contributing
Have you found a bug or got an idea for a new feature? Feel free to use the [issue tracker](https://github.com/Vimux/blank/issues) to let me know. Or make directly a [pull request](https://github.com/Vimux/blank/pulls).
## License
This theme is released under the [MIT license](https://github.com/Vimux/blank/blob/master/LICENSE).

View File

@@ -1,4 +0,0 @@
+++
title = "{{ replace .Name "-" " " | title }}"
date = {{ .Date }}
+++

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 136 KiB

View File

@@ -1,19 +0,0 @@
<!DOCTYPE html>
<html lang="{{ .Site.LanguageCode | default "en-us" }}">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ .Title }}</title>
{{ with .Site.Params.description }}<meta name="description" content="{{ . }}">{{ end }}
{{ with .Site.Params.author }}<meta name="author" content="{{ . }}">{{ end }}
<link rel="stylesheet" href="{{ "css/style.css" | relURL }}">
{{ with .OutputFormats.Get "RSS" -}}
{{ printf `<link rel="%s" type="%s" href="%s" title="%s">` .Rel .MediaType.Type .RelPermalink $.Site.Title | safeHTML }}
{{- end }}
</head>
<body>
{{ partial "header" . }}
{{ block "main" . }}{{ end }}
{{ partial "footer" . }}
</body>
</html>

View File

@@ -1,16 +0,0 @@
{{ define "main" }}
<main>
{{ if or .Title .Content }}
<div>
{{ with .Title }}<h1>{{ . }}</h1>{{ end }}
{{ with .Content }}<div>{{ . }}</div>{{ end }}
</div>
{{ end }}
{{ range .Paginator.Pages }}
{{ .Render "summary" }}
{{ end }}
{{ partial "pagination.html" . }}
</main>
{{ partial "sidebar.html" . }}
{{ end }}

View File

@@ -1,26 +0,0 @@
{{ define "main" }}
<main>
<article>
<h1>{{ .Title }}</h1>
<time datetime="{{ .Date.Format "2006-01-02T15:04:05" }}">{{ .Date.Format "02.01.2006 15:04" }}</time>
<div>
{{ .Content }}
</div>
{{ with .Params.tags }}
<div>
<ul id="tags">
{{ range . }}
<li><a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a></li>
{{ end }}
</ul>
</div>
{{ end }}
{{ with .Site.DisqusShortname }}
<div>
{{ template "_internal/disqus.html" . }}
</div>
{{ end }}
</article>
</main>
{{ partial "sidebar.html" . }}
{{ end }}

View File

@@ -1,13 +0,0 @@
<article>
<h1><a href="{{ .Permalink }}">{{ .Title }}</a></h1>
<time datetime="{{ .Date.Format "2006-01-02T15:04:05" }}">{{ .Date.Format "02.01.2006 15:04" }}</time>
{{ range .Params.tags }}
<a href="{{ "/tags/" | relLangURL }}{{ . | urlize }}">{{ . }}</a>
{{ end }}
<div>
{{ .Summary }}
{{ if .Truncated }}
<a href="{{ .Permalink }}">Read more...</a>
{{ end }}
</div>
</article>

View File

@@ -1,7 +0,0 @@
{{ define "main" }} {{ readFile "content/README.md" | markdownify }}
<main>
{{ $paginator := .Paginate (where .Site.RegularPages "Type" "in"
.Site.Params.mainSections) }} {{ range $paginator.Pages }} {{ .Render
"summary" }} {{ end }} {{ partial "pagination.html" . }}
</main>
{{ partial "sidebar.html" . }} {{ end }}

View File

@@ -1,3 +0,0 @@
<footer>
<p>Last Update: {{ now.Format "2006-01-02" }}</p>
</footer>

View File

@@ -1,12 +0,0 @@
<header>
<h1><a href="{{ .Site.BaseURL }}">{{ .Site.Title }}</a></h1>
{{ with .Site.Menus.main }}
<nav>
<ul>
{{ range . }}
<li><a href="{{ .URL | relURL }}">{{ .Name }}</a></li>
{{ end }}
</ul>
</nav>
{{ end }}
</header>

View File

@@ -1,9 +0,0 @@
<div>
{{ if .Paginator.HasPrev }}
<a href="{{ .Paginator.Prev.URL }}">Previous Page</a>
{{ end }}
{{ .Paginator.PageNumber }} of {{ .Paginator.TotalPages }}
{{ if .Paginator.HasNext }}
<a href="{{ .Paginator.Next.URL }}">Next Page</a>
{{ end }}
</div>

View File

@@ -1,14 +0,0 @@
<aside>
<div>
<div>
<h3>LATEST POSTS</h3>
</div>
<div>
<ul>
{{ range first 5 (where .Site.RegularPages "Type" "in" .Site.Params.mainSections) }}
<li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
{{ end }}
</ul>
</div>
</div>
</aside>

View File

@@ -1,13 +0,0 @@
name = "Blank"
license = "MIT"
licenselink = "https://github.com/vimux/blank/blob/master/LICENSE"
description = "Starter Hugo theme for developers."
homepage = "https://github.com/vimux/blank/"
demosite = "https://blank-demo.netlify.app/"
tags = ["blog", "plain", "blank", "starter", "development"]
features = ["blog"]
min_version = "0.20"
[author]
name = "Vimux"
homepage = "https://github.com/vimux"

12
fonts/README.md Normal file
View File

@@ -0,0 +1,12 @@
# Fonts
Bundled fonts used for PDF generation and the project website.
## Iosevka Fixed
- **Version:** 34.2.1
- **Variant:** Iosevka Fixed (monospace, no ligatures)
- **Weights:** Regular, Bold
- **License:** SIL Open Font License 1.1 (see `iosevka/LICENSE.md`)
- **Source:** <https://github.com/be5invis/Iosevka/releases/tag/v34.2.1>
- **Glyphs:** 7500+ — covers all EurKEY characters including Greek, Latin Extended, math symbols, and combining diacriticals

Binary file not shown.

Binary file not shown.

99
fonts/iosevka/LICENSE.md Normal file
View File

@@ -0,0 +1,99 @@
# SIL Open Font License 1.1
Copyright 2015-2024 Renzhi Li (aka. Belleve Invis, belleve@typeof.net)
This Font Software is licensed under the SIL Open Font License, Version 1.1.
This license is copied below, and is also available with a FAQ at:
<https://openfontlicense.org>
---
## SIL OPEN FONT LICENSE Version 1.1 — 26 February 2007
### PREAMBLE
The goals of the Open Font License (OFL) are to stimulate worldwide
development of collaborative font projects, to support the font creation
efforts of academic and linguistic communities, and to provide a free and
open framework in which fonts may be shared and improved in partnership
with others.
The OFL allows the licensed fonts to be used, studied, modified and
redistributed freely as long as they are not sold by themselves. The
fonts, including any derivative works, can be bundled, embedded,
redistributed and/or sold with any software provided that any reserved
names are not used by derivative works. The fonts and derivatives,
however, cannot be released under any other type of license. The
requirement for fonts to remain under this license does not apply
to any document created using the fonts or their derivatives.
### DEFINITIONS
"Font Software" refers to the set of files released by the Copyright
Holder(s) under this license and clearly marked as such. This may
include source files, build scripts and documentation.
"Reserved Font Name" refers to any names specified as such after the
copyright statement(s).
"Original Version" refers to the collection of Font Software components as
distributed by the Copyright Holder(s).
"Modified Version" refers to any derivative made by adding to, deleting,
or substituting — in part or in whole — any of the components of the
Original Version, by changing formats or by porting the Font Software to a
new environment.
"Author" refers to any designer, engineer, programmer, technical
writer or other person who contributed to the Font Software.
### PERMISSION & CONDITIONS
Permission is hereby granted, free of charge, to any person obtaining
a copy of the Font Software, to use, study, copy, merge, embed, modify,
redistribute, and sell modified and unmodified copies of the Font
Software, subject to the following conditions:
1. Neither the Font Software nor any of its individual components,
in Original or Modified Versions, may be sold by itself.
2. Original or Modified Versions of the Font Software may be bundled,
redistributed and/or sold with any software, provided that each copy
contains the above copyright notice and this license. These can be
included either as stand-alone text files, human-readable headers or
in the appropriate machine-readable metadata fields within text or
binary files as long as those fields can be easily viewed by the user.
3. No Modified Version of the Font Software may use the Reserved Font
Name(s) unless explicit written permission is granted by the corresponding
Copyright Holder. This restriction only applies to the primary font name as
presented to the users.
4. The name(s) of the Copyright Holder(s) or the Author(s) of the Font
Software shall not be used to promote, endorse or advertise any
Modified Version, except to acknowledge the contribution(s) of the
Copyright Holder(s) and the Author(s) or with their explicit written
permission.
5. The Font Software, modified or unmodified, in part or in whole,
must be distributed entirely under this license, and must not be
distributed under any other license. The requirement for fonts to
remain under this license does not apply to any document created
using the Font Software.
### TERMINATION
This license becomes null and void if any of the above conditions are
not met.
### DISCLAIMER
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
OTHER DEALINGS IN THE FONT SOFTWARE.

BIN
src/icons/EurKEY v1.2.icns Normal file

Binary file not shown.

BIN
src/icons/EurKEY v1.3.icns Normal file

Binary file not shown.

BIN
src/icons/EurKEY v1.4.icns Normal file

Binary file not shown.

BIN
src/icons/EurKEY v2.0.icns Normal file

Binary file not shown.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.