diff --git a/flaskr/__init__.py b/flaskr/__init__.py index f1d7568..76971ae 100644 --- a/flaskr/__init__.py +++ b/flaskr/__init__.py @@ -39,9 +39,7 @@ data = { "next_theme": { "system": "dark", "dark": "light", - "light": "contrast", - "contrast": "contrast-dark", - "contrast-dark": "system", + "light": "system", } } diff --git a/flaskr/static/f/Merriweather-Bold.woff2 b/flaskr/static/f/Merriweather-Bold.woff2 new file mode 100644 index 0000000..8a1fa70 Binary files /dev/null and b/flaskr/static/f/Merriweather-Bold.woff2 differ diff --git a/flaskr/static/f/Merriweather-BoldItalic.woff2 b/flaskr/static/f/Merriweather-BoldItalic.woff2 new file mode 100644 index 0000000..0b6aa93 Binary files /dev/null and b/flaskr/static/f/Merriweather-BoldItalic.woff2 differ diff --git a/flaskr/static/f/Merriweather-Italic.woff2 b/flaskr/static/f/Merriweather-Italic.woff2 new file mode 100644 index 0000000..9c1cb76 Binary files /dev/null and b/flaskr/static/f/Merriweather-Italic.woff2 differ diff --git a/flaskr/static/f/Merriweather-Light.woff2 b/flaskr/static/f/Merriweather-Light.woff2 new file mode 100644 index 0000000..d937827 Binary files /dev/null and b/flaskr/static/f/Merriweather-Light.woff2 differ diff --git a/flaskr/static/f/Merriweather-LightItalic.woff2 b/flaskr/static/f/Merriweather-LightItalic.woff2 new file mode 100644 index 0000000..a45d711 Binary files /dev/null and b/flaskr/static/f/Merriweather-LightItalic.woff2 differ diff --git a/flaskr/static/f/Merriweather-Regular.woff2 b/flaskr/static/f/Merriweather-Regular.woff2 new file mode 100644 index 0000000..a77afac Binary files /dev/null and b/flaskr/static/f/Merriweather-Regular.woff2 differ diff --git a/flaskr/static/f/RobotoSlab-Medium.woff2 b/flaskr/static/f/RobotoSlab-Medium.woff2 new file mode 100644 index 0000000..230d181 Binary files /dev/null and b/flaskr/static/f/RobotoSlab-Medium.woff2 differ diff --git a/flaskr/static/style.css b/flaskr/static/style.css index d4d8839..c4570c6 100644 --- a/flaskr/static/style.css +++ b/flaskr/static/style.css @@ -1,16 +1,44 @@ -@import url('https://fonts.googleapis.com/css2?family=Fira+Mono:wght@400;700&family=Lato:ital,wght@0,400;0,700;1,400;1,700&family=Roboto+Slab:wght@500&display=swap'); +@font-face { + font-family: Merriweather; + src: url(/static/f/Merriweather-Light.woff2); + font-weight: 400; +} + +@font-face { + font-family: Merriweather; + src: url(/static/f/Merriweather-LightItalic.woff2); + font-weight: 400; + font-style: italic; +} + +@font-face { + font-family: Merriweather; + src: url(/static/f/Merriweather-Bold.woff2); + font-weight: 700; +} + +@font-face { + font-family: Merriweather; + src: url(/static/f/Merriweather-BoldItalic.woff2); + font-weight: 700; + font-style: italic; +} + +@font-face { + font-family: "Roboto Slab"; + src: url(/static/f/RobotoSlab-Medium.woff2); + font-weight: 500; +} @media (prefers-color-scheme: dark) { :root.theme-system { - --bg: #242328; - --bg-intense: #141316; - --bg-faded: #373338; - --fg: #e0dedc; - --fg-faded: #9b9497; - --accent-1: #96bf59; - --accent-1-dark: #759438; - --accent-2: #789ebf; - --accent-2-dark: #52729d; + --bg: #131720; + --bg-intense: #000000; + --bg-faded: #293441; + --fg: #e6ded6; + --fg-faded: #908a81; + --accent-1: #2aca98; + --accent-1-dark: #268d78; --error: #ee6d7d; } .only-theme-light { @@ -37,15 +65,13 @@ } :root.theme-dark { - --bg: #242328; - --bg-intense: #141316; - --bg-faded: #373338; - --fg: #e0dedc; - --fg-faded: #9b9497; - --accent-1: #96bf59; - --accent-1-dark: #759438; - --accent-2: #789ebf; - --accent-2-dark: #52729d; + --bg: #131720; + --bg-intense: #000000; + --bg-faded: #293441; + --fg: #e6ded6; + --fg-faded: #908a81; + --accent-1: #2aca98; + --accent-1-dark: #268d78; --error: #ee6d7d; } @@ -57,37 +83,9 @@ --fg-faded: #989097; --accent-1: #0642c3; --accent-1-dark: #07136d; - --accent-2: #0d8101; - --accent-2-dark: #045901; --error: #a50518; } -:root.theme-contrast { - --bg: white; - --bg-intense: white; - --bg-faded: #d0d0d0; - --fg: black; - --fg-faded: #444444; - --accent-1: blue; - --accent-1-dark: darkblue; - --accent-2: blue; - --accent-2-dark: darkblue; - --error: #880000; -} - -:root.theme-contrast-dark { - --bg: black; - --bg-intense: black; - --bg-faded: #333333; - --fg: white; - --fg-faded: #cccccc; - --accent-1: #44c0ff; - --accent-1-dark: #2280bb; - --accent-2: #44c0ff; - --accent-2-dark: #2280bb; - --error: #ff8888; -} - :root.theme-special { --bg: #ffff00; --bg-intense: #ffffff; @@ -96,31 +94,29 @@ --fg-faded: #ff0000; --accent-1: #00ffff; --accent-1-dark: #0000ff; - --accent-2: #000000; - --accent-2-dark: #00ffff; - --error: #00ff88; + --error: #000000; font-family: "Comic Sans MS", cursive; } :root { color: var(--fg); - font-family: "Lato", sans-serif; - font-size: 20px; + --text-fonts: "Merriweather", "DejaVu Serif", serif; + font-family: var(--text-fonts); + font-size: 19px; font-weight: 400; - line-height: 1.5; + line-height: 1.6; --link: var(--accent-1); --link-hover: var(--accent-1-dark); --link-active: var(--accent-1-dark); --button: var(--bg-intense); --button-hover: var(--bg-faded); - --button-active: var(--accent-2-dark); + --button-active: var(--accent-1-dark); overflow-wrap: break-word; } h1, h2, h3, nav { font-family: "Roboto Slab", serif; font-weight: 500; - margin-left: 20px; margin-top: 16px; margin-bottom: 16px; } @@ -129,6 +125,8 @@ h1 { width: fit-content; margin-left: auto; margin-right: auto; + margin-top: 4px; + margin-bottom: 0px; } body { @@ -144,6 +142,15 @@ main { flex-grow: 1; } +hr { + width: 100%; +} + +section { + padding-left: 10px; + background-color: var(--bg-intense); +} + footer { text-align: center; color: var(--fg-faded); @@ -226,7 +233,7 @@ pre { padding-top: 3px; padding-bottom: 3px; padding-left: 12px; - border-left: 5px solid var(--accent-2-dark); + border-left: 5px solid var(--accent-1-dark); } button, input, select, textarea { @@ -234,7 +241,7 @@ button, input, select, textarea { background-color: var(--bg-faded); border: 2px solid var(--fg-faded); border-radius: 3px; - font-family: "Lato", sans-serif; + font-family: var(--text-fonts); font-size: 16px; } diff --git a/flaskr/templates/_base.html b/flaskr/templates/_base.html index 10ae2cf..331cbc5 100644 --- a/flaskr/templates/_base.html +++ b/flaskr/templates/_base.html @@ -23,7 +23,7 @@ {% if meta.fullscreen == True %} width: 100%; {% else %} - width: min({{ meta.pagewidth or "900px"}}, 90vw); + width: min({{ meta.pagewidth or "800px"}}, 80vw); {% endif %} } @@ -39,7 +39,7 @@ Home · Projects · Blog™ · - + {% if theme == "dark" %} @@ -48,12 +48,6 @@ {% elif theme == "light" %} Light theme - {% elif theme == "contrast" %} - - High-contrast theme - {% elif theme == "contrast-dark" %} - - Dark high-contrast theme {% elif theme == "special" %} transform="translate(0 1)" /> @@ -65,15 +59,18 @@ -
- {% block title %} +

{{ meta.title }}

- {% endblock %} + +
+ {% endif %}
{% block content %}{% endblock %}
{% if meta.fullscreen != True %} +
+ {% block footer_content %}{% endblock %} diff --git a/flaskr/templates/index.html b/flaskr/templates/index.html index 089ccab..bbdbf6e 100644 --- a/flaskr/templates/index.html +++ b/flaskr/templates/index.html @@ -2,29 +2,40 @@ {% extends "/_base.html" %} {% block content %} -

-Welcome! On this website you may view a multitude of content, including numerous -projects, a Blog™, and various other information contained on -this page. Enjoy. -

-

About

-I am a person (proof of this fact is left to the reader) who has been granted an internet connection and uses -it extensively for assorted purposes. I enjoy many things, most of which involve manipulating some state -according to various sets of rules. + I am a person (proof of this fact is left to the reader) who has been granted an internet connection and uses + it extensively for assorted purposes. I enjoy many things, most of which involve manipulating some state + according to various sets of rules.

-

GEORGE

+ +

Projects

+

-GEORGE is a webring of which I am a member. Use the standard-issue GEORGEbox -below to view the GEORGE homepage or access the previous and next members in the ring. + See more on the projects page and on my Forgejo instance.

+ +

Contact

+

+ Email: trimill012 ("at" sign) gmail (full stop) com
+ Discord: trimill#6898
+ Forgejo: trimill
+ GitHub: trimill
+ Youtube: trimill
+

+ +{% endblock %} + +{% block footer_content %} + {% if theme == "light" %} -{% elif theme == "contrast" %} - -{% elif theme == "contrast-dark" %} - {% elif theme == "special" %} {% elif theme == "system" %} @@ -34,27 +45,6 @@ below to view the GEORGE homepage or access the previous and next members in the {% endif %} -

Other places I exist

-

-Email: trimill012 ("at" sign) gmail (full stop) com
-Discord: trimill#6898
-Forgejo: trimill
-GitHub: trimill
-Youtube: trimill
-

- -

Source code & attribution

-

-The source code for this website is available on my Forgejo instance and is -released under the GNU GPLv3 free and open-source license. -It is built using the Flask web framework and incorporates -icons from Open Iconic. The memetic apioform page -was not involved at all in this site's creation, yet for some reason I feel compelled to link it here. -

- -
- -
johnvertisement

diff --git a/flaskr/templates/projects.html b/flaskr/templates/projects.html index 16ed51a..f4df888 100644 --- a/flaskr/templates/projects.html +++ b/flaskr/templates/projects.html @@ -2,19 +2,82 @@ {% extends "/_base.html" %} {% block content %} -

Here are some projects I have made over the past few years.

+

complexpr

+

+ Complexpr is a toy programming language with an interpreter written in Rust. It is dynamically typed, with + native support for rational and complex numbers, lists and maps, and first-class functions. It features + pipeline operators (similar to Elixir's |>) to express nested function calls more cleanly. +

- +

Quectocraft

+

+ Quectocraft is an extensible, ultra-minimalist implementation of a Minecraft server. By doing away with most + features of the vanilla server (such as world generation and interaction) it can run without consuming many system + resources. It is written primarily in Rust, but can load simple plugins written in Lua to add chat features and commands. +

-{% endblock %} \ No newline at end of file +

RSS Bundler

+

+ RSS Bundler is a tool that bundles multiple RSS feeds into one. At a fixed interval it fetches content from the configured + feeds, merges them together, and stores and serves the result. RSS Bundler is written in Rust. +

+ +

Complex grapher

+

+ Complex grapher allows you to functions using domain coloring. + Functions are written in a custom expression language and compiled to GLSL. WebGL is then used to generate a color for each pixel. + Complex grapher also has support for iterating functions, allowing you to generate fractals such as the Mandelbrot and Julia sets. +

+ +

zzcxz visualizer

+

+ zzcxz visualizer displays a force-directed graph of zzcxz, a collaborative interactive + fiction project. It is written in JavaScript and uses D3.js. +

+ +

sysh

+

+ sysh is a shell that allows users to run Linux syscalls directly. It supports the entire set of x86_64 syscalls, as well as + several other commands to manage memory, manipulate data, and perform arithmetic. sysh is written in C, using Python to + automatically generate some code. +

+ +

Musidl

+

+ Musidl is a Bash script that downloads music using yt-dlp and + automatically add ID3v2 tags based on Youtube Music metadata. +

+ +

Maze maker

+

+ Generate random mazes based on a variety of parameters. Written in JavaScript using p5.js. +

+ +

Unit converter

+

+ Convert between various different units, including commonly-used ones as well as unusual or archaic ones. +

+ + +

Fraction base converter

+

+ Convert a fraction to its positional notation in an arbitrary base. +

+ +

number

+

+ Make number go up. +

+ +

Pixel circle

+

+ Create pixelated circles with a specified radius. +

+ +

Stars

+

+ Generate stars. +

+ + +{% endblock %}