diff options
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | BUGS | 3 | ||||
-rw-r--r-- | GNUmakefile | 30 | ||||
-rw-r--r-- | README.md | 8 | ||||
-rw-r--r-- | TODO | 8 | ||||
-rw-r--r-- | archive/archive.md | 10 | ||||
-rw-r--r-- | archive/dmenu-farajli-5.3.tar.gz | bin | 15497 -> 0 bytes | |||
-rw-r--r-- | archive/dwm-farajli-6.5.tar.gz | bin | 25971 -> 0 bytes | |||
-rw-r--r-- | archive/liberation_mono.zip | bin | 306521 -> 0 bytes | |||
-rw-r--r-- | archive/slstatus-farajli-1.0.tar.gz | bin | 17329 -> 0 bytes | |||
-rw-r--r-- | archive/st-farajli-0.9.2.tar.gz | bin | 41259 -> 0 bytes | |||
-rwxr-xr-x | build-page | 44 | ||||
-rw-r--r-- | content/archive/index.md | 60 | ||||
-rw-r--r-- | content/home/index.md | 32 | ||||
-rw-r--r-- | content/keys/index.md | 24 | ||||
-rw-r--r-- | content/posts/coding_standards.md (renamed from posts/coding_standards.md) | 11 | ||||
-rw-r--r-- | content/posts/gentoo.md (renamed from posts/gentoo.md) | 9 | ||||
-rw-r--r-- | content/posts/index.md | 20 | ||||
-rw-r--r-- | content/posts/nophone.md (renamed from posts/nophone.md) | 10 | ||||
-rw-r--r-- | content/posts/selfhostmail.md (renamed from posts/selfhostmail.md) | 9 | ||||
-rw-r--r-- | content/posts/software.md (renamed from posts/software.md) | 10 | ||||
-rw-r--r-- | content/posts/website_created.md (renamed from posts/website_created.md) | 10 | ||||
-rw-r--r-- | home/index.md | 22 | ||||
-rw-r--r-- | home/pgp.md | 19 | ||||
-rw-r--r-- | index_pages.mk | 5 | ||||
-rw-r--r-- | posts/2024_new_year.md | 4 | ||||
-rw-r--r-- | posts/posts.md | 10 | ||||
-rw-r--r-- | public/archive/slcf.tar.gz (renamed from archive/slcf.tar.gz) | bin | 13719 -> 13719 bytes | |||
-rw-r--r-- | public/favicon.ico (renamed from favicon.ico) | bin | 700 -> 700 bytes | |||
-rw-r--r-- | public/keys/id_ed25519.pub (renamed from home/ssh.md) | 4 | ||||
-rw-r--r-- | public/keys/pubkey.asc | 86 | ||||
-rw-r--r-- | public/style.css (renamed from style.css) | 21 | ||||
-rw-r--r-- | scripts/__pycache__/boiler.cpython-313.pyc | bin | 0 -> 2286 bytes | |||
-rw-r--r-- | scripts/__pycache__/parse_frontmatter.cpython-313.pyc | bin | 0 -> 999 bytes | |||
-rw-r--r-- | scripts/boiler.py | 55 | ||||
-rwxr-xr-x | scripts/build_page | 45 | ||||
-rwxr-xr-x | scripts/filter_proper_md | 14 | ||||
-rwxr-xr-x | scripts/generate_post_index | 35 | ||||
-rw-r--r-- | scripts/parse_frontmatter.py | 19 | ||||
-rw-r--r-- | static/archive/JetBrainsMono.tar.gz | bin | 0 -> 118032066 bytes | |||
-rw-r--r-- | static/archive/LiberationMono.tar.gz | bin | 0 -> 306533 bytes | |||
-rw-r--r-- | static/archive/dmenu_farajli-5.3.0.tar.gz | bin | 0 -> 16811 bytes | |||
-rw-r--r-- | static/archive/dwm_farajli-6.5.0.tar.gz | bin | 0 -> 25480 bytes | |||
-rw-r--r-- | static/archive/slcf.tar.gz | bin | 0 -> 13719 bytes | |||
-rw-r--r-- | static/archive/slstatus_farajli-1.0.0.tar.gz | bin | 0 -> 17596 bytes | |||
-rw-r--r-- | static/archive/st_farajli-0.9.2.0.tar.gz | bin | 0 -> 43011 bytes | |||
-rw-r--r-- | static/favicon.ico | bin | 0 -> 700 bytes | |||
-rw-r--r-- | static/keys/id_ed25519.pub | 1 | ||||
-rw-r--r-- | static/keys/pubkey.asc | 86 | ||||
-rw-r--r-- | static/style.css | 88 |
50 files changed, 663 insertions, 153 deletions
@@ -1,3 +1,3 @@ -*.html +__pycache__ install.mk -output/ +public/ @@ -1,3 +0,0 @@ -- lists on mobile view has no margin -+ Makefile html:md dependency is broken with the introduction of out/ directory -+ Non-markdown files are not placed in the site (CV, Archive files, etc.) diff --git a/GNUmakefile b/GNUmakefile index 26ca3e9..0d49d96 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -1,17 +1,25 @@ -MARKDOWN = $(shell find . -name '*.md') -HTML = $(patsubst ./%.md, %.html, $(MARKDOWN)) +MD = $(shell find content/ -name '*.md') +PROPERMD = $(shell scripts/filter_proper_md $(MD)) +HTML = $(patsubst content/%.md, public/%.html, $(PROPERMD)) +STATICASSETS = $(shell find static -type f) +PUBLICASSETS = $(patsubst static/%, public/%, $(STATICASSETS)) -all: $(HTML) +# Calling make is used for making sure that index pages are build first +all: + $(MAKE) -f index_pages.mk + $(MAKE) pages -%.html: %.md build-page - sh build-page $< > $@ +pages: $(HTML) $(PUBLICASSETS) -output/: $(HTML) - echo $? | xargs -n 1 dirname | xargs -I _ mkdir -p $@_ - echo $? | xargs -n 1 | xargs -I _ cp _ $@_ - cp favicon.ico style.css $@ +public/%.html: content/%.md + mkdir -p $$(dirname $@) + scripts/build_page $< > $@ + +$(PUBLICASSETS): public/%: static/% + mkdir -p $$(dirname $@) + cp $< $@ clean: - rm -rf $(HTML) output/ + rm -rf public -.PHONY: all clean +.PHONY: all clean pages diff --git a/README.md b/README.md deleted file mode 100644 index 124c54e..0000000 --- a/README.md +++ /dev/null @@ -1,8 +0,0 @@ -# Simple website for personal usage - -## Building -Use [GNU make](https://www.gnu.org/software/make/). - -``` shell -make output/ -``` @@ -1,8 +0,0 @@ -+ build-page: move html output to a seperate directory -- store fonts on the website itself rather than using google fonts -- proper handling of posts -- add a post about coding styles -+ add pgp key -- add how to contact me (pgp signed mail) -- add copyright link -+ style.css: needs to be reorganised. diff --git a/archive/archive.md b/archive/archive.md deleted file mode 100644 index c27d9f2..0000000 --- a/archive/archive.md +++ /dev/null @@ -1,10 +0,0 @@ -<!-- Title: Archive --> - -<!-- means space --> - - [slcf.tar.gz](/archive/slcf.tar.gz) - [dwm-farajli-6.5.tar.gz](/archive/dwm-farajli-6.5.tar.gz) - [st-farajli-0.9.2.tar.gz](/archive/st-farajli-0.9.2.tar.gz) - [dmenu-farajli-5.3.tar.gz](/archive/dmenu-farajli-5.3.tar.gz) - [slstatus-farajli-1.0.tar.gz](/archive/slstatus-farajli-1.0.tar.gz) - [liberation_mono.zip](/archive/liberation_mono.zip) diff --git a/archive/dmenu-farajli-5.3.tar.gz b/archive/dmenu-farajli-5.3.tar.gz Binary files differdeleted file mode 100644 index 5748923..0000000 --- a/archive/dmenu-farajli-5.3.tar.gz +++ /dev/null diff --git a/archive/dwm-farajli-6.5.tar.gz b/archive/dwm-farajli-6.5.tar.gz Binary files differdeleted file mode 100644 index 29f4828..0000000 --- a/archive/dwm-farajli-6.5.tar.gz +++ /dev/null diff --git a/archive/liberation_mono.zip b/archive/liberation_mono.zip Binary files differdeleted file mode 100644 index 78d2afa..0000000 --- a/archive/liberation_mono.zip +++ /dev/null diff --git a/archive/slstatus-farajli-1.0.tar.gz b/archive/slstatus-farajli-1.0.tar.gz Binary files differdeleted file mode 100644 index f841992..0000000 --- a/archive/slstatus-farajli-1.0.tar.gz +++ /dev/null diff --git a/archive/st-farajli-0.9.2.tar.gz b/archive/st-farajli-0.9.2.tar.gz Binary files differdeleted file mode 100644 index 3ee5e2a..0000000 --- a/archive/st-farajli-0.9.2.tar.gz +++ /dev/null diff --git a/build-page b/build-page deleted file mode 100755 index 37763ae..0000000 --- a/build-page +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/sh - -filename="${1}" -title=$(< "${filename}" head -n1 | sed 's/<!-- Title: //; s/-->//') - -cat << EOF -<!DOCTYPE html> -<html lang="en"> -<head> -<meta charset="UTF-8"> - <meta name="viewport" content="width=1024"> - <link rel='stylesheet' type='text/css' href="/style.css"> - <link rel="icon" type="image/x-icon" href="/favicon.ico"> - <title>${title}</title> -</head> -<body> - <table id="bar"> - <tr> - <td id='header-name'>Suleyman Farajli</td> - <td id='quote'></td> - </tr> - </table> - <script> - let quotes = ["Uncensored", "Oh mamma mia!", "Memento Mori!", "Oh là là!", "C'est légal parce que je le veux", "Sweet Dreams Are Made of This"]; - let randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; - document.getElementById("quote").innerText = randomQuote; - </script> - - <hr class="separator"> - -<div class="menu"> - <a class="menu_item" href="/home/index.html">Home/</a> - <a class="menu_item" href="/posts/posts.html">Posts/</a> - <a class="menu_item" href="/archive/archive.html">Archive/</a> - <a class="menu_item right_menu_item" href="https://git.farajli.net">Git</a> -</div> -<div class="text"> - $(sed '1 s/<!--.*-->//' "${filename}" | smu) -</div> -<p id="copyleft"><br>copyleft (c) 2024-2025 Suleyman Farajli</p> - -</body> -</html> -EOF diff --git a/content/archive/index.md b/content/archive/index.md new file mode 100644 index 0000000..bc3c1e6 --- /dev/null +++ b/content/archive/index.md @@ -0,0 +1,60 @@ +--- +title: "Archive" +slug: "archive" +--- + +This archive includes both my own project and third-party software that I use. + +## My Projects + +## SLCF + +- Description: Suleyman's Linux Configuration Files. +- Source: https://git.farajli.net/slcf +- Downloads + - [slcf.tar.gz](/archive/slcf.tar.gz) + +### DWM + +- Description: My build of Dynamic Window Manager. +- Source: https://git.farajli.net/dwm +- Downloads + - [dwm_farajli-6.5.0.tar.gz](/archive/dwm_farajli-6.5.0.tar.gz) + +### ST + +- Description: My build of Simple Terminal. +- Source: https://git.farajli.net/st +- Downloads + - [st_farajli-0.9.2.0.tar.gz](/archive/st_farajli-0.9.2.0.tar.gz) + +### DMenu + +- Description: My build of Dynamic Menu. +- Source: https://git.farajli.net/dmenu +- Downloads + - [dmenu_farajli-5.3.0.tar.gz](/archive/dmenu_farajli-5.3.0.tar.gz) + + +### SLStatus + +- Description: My build of SLStatus. +- Source: https://git.farajli.net/slstatus +- Downloads + - [dmenu_farajli-5.3.0.tar.gz](/archive/dmenu_farajli-5.3.0.tar.gz) + + +## Third-Party Software + +### Liberation Mono +- Description: The font I use in my desktop environment. +- Homepage: https://www.dafont.com/liberation-mono.font +- Mirror: + - [LiberationMono.tar.gz](/archive/LiberationMono.tar.gz) + +### Jetbrains Mono Nerd Font +- Description: The font required by neo-tree nvim plugin. +- Homepage: https://www.nerdfonts.com/ +- Mirror: + - [JetBrainsMono.tar.gz](/archive/JetBrainsMono.tar.gz) + (2024-08-15) diff --git a/content/home/index.md b/content/home/index.md new file mode 100644 index 0000000..88ad694 --- /dev/null +++ b/content/home/index.md @@ -0,0 +1,32 @@ +--- +title: "Home" +slug: "home" +css: | + time { + font-size: 16px; + color: #bbbbbb; + padding-right: 0.5em; + } + #email { + font-size: 16px; + padding-right: 3.4em; + color: #bbbbbb; + } + #github { + font-size: 16px; + padding-right: 2.8em; + color: #bbbbbb; + } +--- + +### posts +<time>2025-01-24:</time> [Hosting an email server is not possible.](/posts/selfhostmail.html) +<time>2024-12-27:</time> [Software I use.](/posts/software.html) +<time>2024-09-25:</time> [I dislike modern smartphones.](/posts/nophone.html) +<time>2024-09-06:</time> [Why I like Gentoo.](/posts/gentoo.html) +<time>2024-06-09:</time> [New webiste.](/posts/website_created.html) + +### links and contact info + +<span id="email">email:</span> [suleyman@farajli.net](mailto:suleyman@farajli.net) +<span id="github">github:</span> [sfarajli](https://github.com/sfarajli) diff --git a/content/keys/index.md b/content/keys/index.md new file mode 100644 index 0000000..e728b61 --- /dev/null +++ b/content/keys/index.md @@ -0,0 +1,24 @@ +--- +title: "Public keys" +slug: "public-keys" +--- + +# GPG Key + +### suleyman@farajli.net + +- Created: 2025-05-27 +- Expires: 2027-01-01 +- Fingerprint: AE38 55F0 F5E9 F27C 5F4D CBC6 E340 C0B8 5F70 7B8C + +Import: +```curl https://farajli.net/keys/pubkey.asc | gpg --import``` + +Download: [pubkey.asc](https://farajli.net/keys/pubkey.asc) + +# SSH Key + +Add to authorized keys: +`curl https://farajli.net/keys/id_ed25519.pub >> ~/.ssh/authorized_keys` + +Download: [id_ed25519.pub](https://farajli.net/keys/id_ed25519.pub) diff --git a/posts/coding_standards.md b/content/posts/coding_standards.md index aa2e1fd..728b7dd 100644 --- a/posts/coding_standards.md +++ b/content/posts/coding_standards.md @@ -1,3 +1,14 @@ +--- +title: "Post Title" +slug: post-title +created: 2024-12-31 +updated: 2025-06-23 +description: "A brief summary of what this page is about." +tags: [linux, self-hosting, minimalism] +draft: true +--- + + Here are my **personal** coding standards for some languages. ## Interpreted languages diff --git a/posts/gentoo.md b/content/posts/gentoo.md index d38ddce..ee89d40 100644 --- a/posts/gentoo.md +++ b/content/posts/gentoo.md @@ -1,4 +1,11 @@ -<!-- Title: Why I prefer Gentoo --> +--- +title: "Why I like Gentoo." +slug: "gentoo" +created: 2024-09-06 +description: "Why I think source based distros are better." +tags: [Technology] +draft: false +--- ### Why I prefer Gentoo over Arch. A lot of people say very good things about gentoo linux, it is very well maintained, diff --git a/content/posts/index.md b/content/posts/index.md new file mode 100644 index 0000000..31ebb2b --- /dev/null +++ b/content/posts/index.md @@ -0,0 +1,20 @@ +--- +title: "Posts" +slug: "posts" +css: | + time { + font-size: 16px; + color: #bbbbbb; + padding-right: 0.5em; + } +--- +<time>2025-01-24:</time> [Hosting an email server is not possible.](/posts/selfhostmail.html) + +<time>2024-12-27:</time> [Software I use.](/posts/software.html) + +<time>2024-09-25:</time> [I dislike modern smartphones.](/posts/nophone.html) + +<time>2024-09-06:</time> [Why I like Gentoo.](/posts/gentoo.html) + +<time>2024-06-09:</time> [New webiste.](/posts/website_created.html) + diff --git a/posts/nophone.md b/content/posts/nophone.md index 423e3ca..9592805 100644 --- a/posts/nophone.md +++ b/content/posts/nophone.md @@ -1,4 +1,12 @@ -<!-- Title: No smartphone!--> +--- +title: "I dislike modern smartphones." +slug: "no-smart-phone" +created: 2024-09-25 +description: "Explaining why I prefer not to use a smartphone." +tags: [Technology] +draft: false +--- + ### Why I absolutely hate smartphones. diff --git a/posts/selfhostmail.md b/content/posts/selfhostmail.md index 98285a4..f0469ef 100644 --- a/posts/selfhostmail.md +++ b/content/posts/selfhostmail.md @@ -1,4 +1,11 @@ -<!-- Title: Reasons not to host an email server --> +--- +title: "Hosting an email server is not possible." +slug: "hosting-email-server" +created: 2025-01-24 +description: "Explaining why don't host an email server." +tags: [Technology] +draft: false +--- ### Reasons to not host your own email server. diff --git a/posts/software.md b/content/posts/software.md index 7f165ad..09f4f6c 100644 --- a/posts/software.md +++ b/content/posts/software.md @@ -1,4 +1,12 @@ -<!-- Title: Software --> +--- +title: "Software I use." +slug: "software" +created: 2024-12-27 +description: "Software I recommend, use and some I dislike." +tags: [Technology] +draft: false +--- + Here are some of the programs I use, recommend and some I dislike. You can get my configuration for most of these programs [here](https://git.farajli.net/slcf.git). diff --git a/posts/website_created.md b/content/posts/website_created.md index 14f4c3b..fa42637 100644 --- a/posts/website_created.md +++ b/content/posts/website_created.md @@ -1,4 +1,12 @@ -<!-- Title: I have a website! --> +--- +title: "New webiste." +slug: "new-website" +created: 2024-06-09 +description: "Announcing my new website." +tags: [Technology] +draft: false +--- + ### I have a website! diff --git a/home/index.md b/home/index.md deleted file mode 100644 index 7aa22db..0000000 --- a/home/index.md +++ /dev/null @@ -1,22 +0,0 @@ -<!-- Title: My personal Website --> - -An engineering student interested in languages and literally anything about computers. - -### top posts - -<table> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2025-01-24</time></td><td><a href="/posts/selfhostmail.html">Reasons not to host an email server.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-12-27</time></td><td><a href="/posts/software.html">Software I use.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-09-25</time></td><td><a href="/posts/nophone.html">Why I absolutely hate smartphones.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-09-06</time></td><td><a href="/posts/gentoo.html">Why I use gentoo.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-06-09</time></td><td><a href="/posts/website_created.html">Website Created!</a></td></tr> -</table> - -### links and contact info - -<table> - <tr><td style="color: #bbbbbb; font-size: 0.93em; padding-right: 5em">email</td><td><a href="mailto:suleyman@farajli.net">suleyman@farajli.net</a></td></tr> - <tr><td style="color: #bbbbbb; font-size: 0.93em; padding-right: 5em">ssh</td><td><a href="/home/ssh.html">SSH key</a></td></tr> - <tr><td style="color: #bbbbbb; font-size: 0.93em; padding-right: 5em">pgp</td><td><a href="/home/pgp.html">PGP key</a></td></tr> - <tr><td style="color: #bbbbbb; font-size: 0.93em; padding-right: 5em">github</td><td><a href="https://github.com/sfarajli">sfarajli</a></td></tr> -</table> diff --git a/home/pgp.md b/home/pgp.md deleted file mode 100644 index a1e1cdc..0000000 --- a/home/pgp.md +++ /dev/null @@ -1,19 +0,0 @@ -<!-- Title: PGP key --> - -### Public PGP key - ------BEGIN PGP PUBLIC KEY BLOCK----- - -mDMEZpOcQBYJKwYBBAHaRw8BAQdANOYO+BBsD5/cBecLZWT132Ekqsau -2/70Cn20L3N1bGV5bWFuIChkb2VzbnQgZXhwaXJlKSA8c3VsZXltYW5A -aS5uZXQ+iJMEExYKADsWIQSfcckR5au3BoMQHHCmjrGkrd+n3wUCZpOc -CQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRCmjrGkrd+n3xUiAQD8 -nVzoR1QgOtAN7HImJqB4qHmF+H2bzQ3sLwD+NvTapc6NUqFnLIfrB72w -FejuBdPZUicvVQ+4OARmk5xAEgorBgEEAZdVAQUBAQdAo/5SvzOSNeDP -ZWHQ0KNHClMKx8hDyoDERkkDAQgHiHgEGBYKACAWIQSfcckR5au3BoMQ -rd+n3wUCZpOcQAIbDAAKCRCmjrGkrd+n39NtAP40B28zkkjmqPVgn6lE -kvPg2XDGzDKS69RXIgD+LAJUmWskXG8S6mZbAbs4UVyfdqEmCYHRwGGK - -=aeqA - ------END PGP PUBLIC KEY BLOCK----- diff --git a/index_pages.mk b/index_pages.mk new file mode 100644 index 0000000..e8e0c54 --- /dev/null +++ b/index_pages.mk @@ -0,0 +1,5 @@ +POSTS = $(filter-out content/posts/index.md, $(wildcard content/posts/*.md)) +GENERATEDMD = content/posts/index.md + +content/posts/index.md: $(POSTS) + scripts/generate_post_index > $@ diff --git a/posts/2024_new_year.md b/posts/2024_new_year.md deleted file mode 100644 index 3f9c019..0000000 --- a/posts/2024_new_year.md +++ /dev/null @@ -1,4 +0,0 @@ -<!-- Title: Happy New Year! --> - -Happy new year, everyone! -Especially, the ones that I love. diff --git a/posts/posts.md b/posts/posts.md deleted file mode 100644 index 4c19873..0000000 --- a/posts/posts.md +++ /dev/null @@ -1,10 +0,0 @@ -<!-- Title: Posts --> - -<table> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2025-01-24</time></td><td><a href="/posts/selfhostmail.html">Reasons not to host an email server.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-12-31</time></td><td><a href="/posts/2024_new_year.html">Happy new year!</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-12-27</time></td><td><a href="/posts/software.html">Software I use.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-09-25</time></td><td><a href="/posts/nophone.html">Why I absolutely hate smartphones.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-09-06</time></td><td><a href="/posts/gentoo.html">Why I use gentoo.</a></td></tr> - <tr><td><time style="font-size: 16px; color: #bbbbbb; padding-right:3em">2024-06-09</time></td><td><a href="/posts/website_created.html">Website Created!</a></td></tr> -</table> diff --git a/archive/slcf.tar.gz b/public/archive/slcf.tar.gz Binary files differindex f41c026..f41c026 100644 --- a/archive/slcf.tar.gz +++ b/public/archive/slcf.tar.gz diff --git a/favicon.ico b/public/favicon.ico Binary files differindex 2720d38..2720d38 100644 --- a/favicon.ico +++ b/public/favicon.ico diff --git a/home/ssh.md b/public/keys/id_ed25519.pub index 0615776..923d50c 100644 --- a/home/ssh.md +++ b/public/keys/id_ed25519.pub @@ -1,5 +1 @@ -<!-- Title: SSH key --> - -### Public ssh key - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILPpdEyLRGs3GnlvL4aDR06dYCDv8Rag1d31oSDgkmC/ suleyman@farajli.net diff --git a/public/keys/pubkey.asc b/public/keys/pubkey.asc new file mode 100644 index 0000000..df2f9fb --- /dev/null +++ b/public/keys/pubkey.asc @@ -0,0 +1,86 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +58KbeUOtcSF5k/beMBAEFWpmN4NRZhg= +=z7yo +-----END PGP PUBLIC KEY BLOCK----- diff --git a/style.css b/public/style.css index 7ec141d..e23d743 100644 --- a/style.css +++ b/public/style.css @@ -1,5 +1,5 @@ -/* -* Stylesheet of farajli.net +/* +* Stylesheet of farajli.net */ /* FIXME: Don't use google fonts */ @@ -15,7 +15,7 @@ body { font-family: "JetBrains Mono"; font-size: 18px; - width: 60em; + width: 60em; display: block; background-color: #1c1c1c; /* Almost Black */ color: #ffffff; /* White */ @@ -32,6 +32,18 @@ a:hover { color: #B48EAD; /* Purple */ } +ul, ol { + margin: 0; + padding: 0; + list-style-position: inside; /* optional: keeps bullets/numbers inside */ +} + +li > ul, +li > ol { + margin-left: 1.2em; /* or adjust as needed */ + padding-left: 1em; +} + .menu_item { color: #BB6767; /* Red */ /* font-weight: bold; */ @@ -70,4 +82,7 @@ a:hover { #copyleft { color: #696969; /* Dark Gray */ + /* display: block; */ + margin-top: 2em; + margin-bottom: 1em; } diff --git a/scripts/__pycache__/boiler.cpython-313.pyc b/scripts/__pycache__/boiler.cpython-313.pyc Binary files differnew file mode 100644 index 0000000..28bdca1 --- /dev/null +++ b/scripts/__pycache__/boiler.cpython-313.pyc diff --git a/scripts/__pycache__/parse_frontmatter.cpython-313.pyc b/scripts/__pycache__/parse_frontmatter.cpython-313.pyc Binary files differnew file mode 100644 index 0000000..3d7cd2e --- /dev/null +++ b/scripts/__pycache__/parse_frontmatter.cpython-313.pyc diff --git a/scripts/boiler.py b/scripts/boiler.py new file mode 100644 index 0000000..b5d75f4 --- /dev/null +++ b/scripts/boiler.py @@ -0,0 +1,55 @@ +import textwrap + +def print_html_head(title, style=None): + print(textwrap.dedent(f"""\ + <!DOCTYPE html> + <html lang="en"> + <head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=1024"> + <link rel='stylesheet' type='text/css' href="/style.css"> + <link rel="icon" type="image/x-icon" href="/favicon.ico"> + <title>{title}</title>""")) + + if style: + print(textwrap.dedent(f"""\ + <style> + {style} + </style>""")) + + print(textwrap.dedent("""\ + </head> + <body> + <table id="bar"> + <tr> + <td id='header-name'>Suleyman Farajli</td> + <td id='quote'></td> + </tr> + </table> + <script> + let quotes = ["Uncensored", "Oh mamma mia!", "Memento Mori!", "Oh là là!", "C'est légal parce que je le veux", "Sweet Dreams Are Made of This"]; + let randomQuote = quotes[Math.floor(Math.random() * quotes.length)]; + document.getElementById("quote").innerText = randomQuote; + </script> + + <hr class="separator"> + + <div class="menu"> + <a class="menu_item" href="/home/index.html">Home/</a> + <a class="menu_item" href="/posts/index.html">Posts/</a> + <a class="menu_item" href="/archive/index.html">Archive/</a> + <a class="menu_item" href="/keys/index.html">Keys/</a> + <a class="menu_item right_menu_item" href="https://git.farajli.net">Git</a> + </div> + <div class="text">""")) + +def print_html_tail(): + print(textwrap.dedent("""\ + </div> + <p> + <a id="copyleft" href="https://creativecommons.org/licenses/by-sa/4.0/" target="_blank" rel="noopener noreferrer"> + copyleft (c) 2024-2025 Suleyman Farajli + </a> + </p> + </body> + </html>""")) diff --git a/scripts/build_page b/scripts/build_page new file mode 100755 index 0000000..51be92c --- /dev/null +++ b/scripts/build_page @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 + +import boiler +from parse_frontmatter import parse_frontmatter +from pathlib import Path +import subprocess +import sys + +script_dir = Path(__file__).resolve().parent +filepath = Path(sys.argv[1]).resolve() + +# Parse frontmatter and skip draft posts +frontmatter = parse_frontmatter(filepath) +if frontmatter.get("draft"): + print(f"{filepath}: is draft", file=sys.stderr) + sys.exit(1) + +if not frontmatter.get("title"): + print(f"{filepath}: title is missing", file=sys.stderr) + sys.exit(1) + +boiler.print_html_head(frontmatter["title"], frontmatter.get("css")) + +# Read file contents and strip frontmatter manually +inside_frontmatter = False +content = [] + +with open(filepath, encoding="utf-8") as f: + for line in f: + if line.strip() == "---": + inside_frontmatter = not inside_frontmatter + continue + if not inside_frontmatter: + content.append(line) + +# Convert Markdown to HTML using `smu` +html = subprocess.run( + ["smu"], + input="".join(content), + text=True, + capture_output=True +).stdout + +print(html, end="") +boiler.print_html_tail() diff --git a/scripts/filter_proper_md b/scripts/filter_proper_md new file mode 100755 index 0000000..ed1be7f --- /dev/null +++ b/scripts/filter_proper_md @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 + +import sys +from parse_frontmatter import parse_frontmatter +from pathlib import Path + +def isproper(file): + frontmatter = parse_frontmatter(file) + if not frontmatter.get("draft"): + print(file) + +script_dir = Path(__file__).resolve().parent +for arg in sys.argv[1:]: + isproper(arg) diff --git a/scripts/generate_post_index b/scripts/generate_post_index new file mode 100755 index 0000000..44aa756 --- /dev/null +++ b/scripts/generate_post_index @@ -0,0 +1,35 @@ +#!/usr/bin/env python3 + +from parse_frontmatter import parse_frontmatter +from pathlib import Path + +def generate_post_index(): + script_dir = Path(__file__).parent.resolve() + posts_directory = script_dir / "../content/posts" + posts = [] + for file in posts_directory.iterdir(): + if file.is_file() and file.name != "index.md": + frontmatter=parse_frontmatter(file.resolve()) + frontmatter["filename"] = file.name + if frontmatter["draft"]: + continue + posts.append(frontmatter) + + sorted_posts = sorted(posts, key=lambda x: x["created"], reverse=True) + + for i in sorted_posts: + html_file = i['filename'].replace(".md", ".html") + print(f"<time>{i['created']}:</time> [{i['title']}](/posts/{html_file})\n") + +print("""--- +title: "Posts" +slug: "posts" +css: | + time { + font-size: 16px; + color: #bbbbbb; + padding-right: 0.5em; + } +---""") + +generate_post_index() diff --git a/scripts/parse_frontmatter.py b/scripts/parse_frontmatter.py new file mode 100644 index 0000000..2d5c60e --- /dev/null +++ b/scripts/parse_frontmatter.py @@ -0,0 +1,19 @@ +import yaml + +def parse_frontmatter(filepath): + with open(filepath, 'r', encoding='utf-8') as f: + lines = f.readlines() + + if not lines or lines[0].strip() != '---': + return {} + + frontmatter_lines = [] + for line in lines[1:]: + if line.strip() == '---': + break + frontmatter_lines.append(line) + + frontmatter_str = ''.join(frontmatter_lines) + frontmatter = yaml.safe_load(frontmatter_str) or {} + + return frontmatter diff --git a/static/archive/JetBrainsMono.tar.gz b/static/archive/JetBrainsMono.tar.gz Binary files differnew file mode 100644 index 0000000..0847dc3 --- /dev/null +++ b/static/archive/JetBrainsMono.tar.gz diff --git a/static/archive/LiberationMono.tar.gz b/static/archive/LiberationMono.tar.gz Binary files differnew file mode 100644 index 0000000..8810a17 --- /dev/null +++ b/static/archive/LiberationMono.tar.gz diff --git a/static/archive/dmenu_farajli-5.3.0.tar.gz b/static/archive/dmenu_farajli-5.3.0.tar.gz Binary files differnew file mode 100644 index 0000000..28705a2 --- /dev/null +++ b/static/archive/dmenu_farajli-5.3.0.tar.gz diff --git a/static/archive/dwm_farajli-6.5.0.tar.gz b/static/archive/dwm_farajli-6.5.0.tar.gz Binary files differnew file mode 100644 index 0000000..14b8e8a --- /dev/null +++ b/static/archive/dwm_farajli-6.5.0.tar.gz diff --git a/static/archive/slcf.tar.gz b/static/archive/slcf.tar.gz Binary files differnew file mode 100644 index 0000000..f41c026 --- /dev/null +++ b/static/archive/slcf.tar.gz diff --git a/static/archive/slstatus_farajli-1.0.0.tar.gz b/static/archive/slstatus_farajli-1.0.0.tar.gz Binary files differnew file mode 100644 index 0000000..6e27da0 --- /dev/null +++ b/static/archive/slstatus_farajli-1.0.0.tar.gz diff --git a/static/archive/st_farajli-0.9.2.0.tar.gz b/static/archive/st_farajli-0.9.2.0.tar.gz Binary files differnew file mode 100644 index 0000000..a43a0f4 --- /dev/null +++ b/static/archive/st_farajli-0.9.2.0.tar.gz diff --git a/static/favicon.ico b/static/favicon.ico Binary files differnew file mode 100644 index 0000000..2720d38 --- /dev/null +++ b/static/favicon.ico diff --git a/static/keys/id_ed25519.pub b/static/keys/id_ed25519.pub new file mode 100644 index 0000000..923d50c --- /dev/null +++ b/static/keys/id_ed25519.pub @@ -0,0 +1 @@ +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILPpdEyLRGs3GnlvL4aDR06dYCDv8Rag1d31oSDgkmC/ suleyman@farajli.net diff --git a/static/keys/pubkey.asc b/static/keys/pubkey.asc new file mode 100644 index 0000000..df2f9fb --- /dev/null +++ b/static/keys/pubkey.asc @@ -0,0 +1,86 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- + +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 +58KbeUOtcSF5k/beMBAEFWpmN4NRZhg= +=z7yo +-----END PGP PUBLIC KEY BLOCK----- diff --git a/static/style.css b/static/style.css new file mode 100644 index 0000000..e23d743 --- /dev/null +++ b/static/style.css @@ -0,0 +1,88 @@ +/* +* Stylesheet of farajli.net +*/ + +/* FIXME: Don't use google fonts */ +@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@370&display=swap'); + +.jetbrains-mono { + font-family: "JetBrains Mono", serif; + font-optical-sizing: auto; + font-weight: 370; + font-style: normal; +} + +body { + font-family: "JetBrains Mono"; + font-size: 18px; + width: 60em; + display: block; + background-color: #1c1c1c; /* Almost Black */ + color: #ffffff; /* White */ + padding-left: 1em; + margin: auto; +} + +a { + text-decoration: none; + color: #5E81AC; /* Blue */ +} + +a:hover { + color: #B48EAD; /* Purple */ +} + +ul, ol { + margin: 0; + padding: 0; + list-style-position: inside; /* optional: keeps bullets/numbers inside */ +} + +li > ul, +li > ol { + margin-left: 1.2em; /* or adjust as needed */ + padding-left: 1em; +} + +.menu_item { + color: #BB6767; /* Red */ + /* font-weight: bold; */ + padding: 0.4em; + padding-right: 3em; + font-size: 20px; + margin-right: 0.2em; + margin-left: 0.2em; +} + +.right_menu_item { + float: right; + padding-right: 1em; +} + +#header-name { + text-align: left; + font-size: 25px; + padding-top: 20px; + color: #FFFFFF; /* White */ + font-weight: normal; +} + +#quote { + font-size: 20px; + text-align: right; + color: #C0C0C0; /* Darkish gray */ + padding-top: 20px; + font-weight: 430; +} + +#bar{ + width: 100%; + line-height: 35px; +} + +#copyleft { + color: #696969; /* Dark Gray */ + /* display: block; */ + margin-top: 2em; + margin-bottom: 1em; +} |