aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--content/notes/cachebusting-in-hugo.md2
-rw-r--r--content/notes/catv-weechat-config.md4
-rw-r--r--content/notes/convert-mkv.md2
-rw-r--r--content/notes/cronjobs-github-with-actions.md10
-rw-r--r--content/notes/download-youtube-videos.md2
-rw-r--r--content/notes/extend-lua-with-custom-c.md2
-rw-r--r--content/notes/fix-plan9-bootloader.md2
-rw-r--r--content/notes/install-plan9port-linux.md2
-rw-r--r--content/notes/mass-set-permission.md2
-rw-r--r--content/notes/mount-plan9-over-network.md2
-rw-r--r--content/notes/non-blocking-shell-exec-csharp.md2
-rw-r--r--content/notes/plan9-screenshot.md2
-rw-r--r--content/notes/preview-troff-man-pages.md2
-rw-r--r--content/notes/show-xterm-colors.md8
-rw-r--r--content/notes/write-iso-usb.md2
-rw-r--r--static/general/index.css2
-rw-r--r--themes/simple/layouts/_default/notes.html19
-rw-r--r--themes/simple/layouts/tags/list.html88
-rw-r--r--themes/simple/static/css/tailwind.css6
19 files changed, 136 insertions, 25 deletions
diff --git a/content/notes/cachebusting-in-hugo.md b/content/notes/cachebusting-in-hugo.md
index 63baf1a..05ec859 100644
--- a/content/notes/cachebusting-in-hugo.md
+++ b/content/notes/cachebusting-in-hugo.md
@@ -4,7 +4,7 @@ url: cachebusting-in-hugo.html
4date: 2023-05-01T12:00:00+02:00 4date: 2023-05-01T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [hugo, cachebusting] 7tags: [hugo]
8--- 8---
9 9
10```html 10```html
diff --git a/content/notes/catv-weechat-config.md b/content/notes/catv-weechat-config.md
index 98c33ce..ff02300 100644
--- a/content/notes/catv-weechat-config.md
+++ b/content/notes/catv-weechat-config.md
@@ -4,10 +4,10 @@ url: catv-weechat-config.html
4date: 2023-05-09T12:00:00+02:00 4date: 2023-05-09T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [irc, weechat, cat-v] 7tags: [irc]
8--- 8---
9 9
10Set up weechat to connect to #cat-v on oftc. This applies to 10Set up weechat to connect to #cat-v on oftc. This applies to
11[weechat](https://weechat.org/) but should be similar for other irc clients. 11[weechat](https://weechat.org/) but should be similar for other irc clients.
12 12
13```sh 13```sh
diff --git a/content/notes/convert-mkv.md b/content/notes/convert-mkv.md
index 85928d6..acd3a20 100644
--- a/content/notes/convert-mkv.md
+++ b/content/notes/convert-mkv.md
@@ -4,7 +4,7 @@ url: convert-mkv.html
4date: 2023-05-14T12:00:00+02:00 4date: 2023-05-14T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [ffmpeg, mkv, webm, mp4] 7tags: [ffmpeg]
8--- 8---
9 9
10You will need `ffmpeg` installed on your system. This will convert all MKV files 10You will need `ffmpeg` installed on your system. This will convert all MKV files
diff --git a/content/notes/cronjobs-github-with-actions.md b/content/notes/cronjobs-github-with-actions.md
index 08dea54..13e7618 100644
--- a/content/notes/cronjobs-github-with-actions.md
+++ b/content/notes/cronjobs-github-with-actions.md
@@ -4,17 +4,17 @@ url: cronjobs-github-with-actions.html
4date: 2023-05-27T00:35:36+02:00 4date: 2023-05-27T00:35:36+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [github, actions] 7tags: [github]
8--- 8---
9 9
10In the root of your repository create a folder `.github/workflows` and 10In the root of your repository create a folder `.github/workflows` and
11in that folder create a file a file `cron.yaml`. This file can be named 11in that folder create a file a file `cron.yaml`. This file can be named
12whatever you wish. But it has to be a `yaml` file. 12whatever you wish. But it has to be a `yaml` file.
13 13
14File below (`.github/workflows/cron.yaml`) describes an action that will 14File below (`.github/workflows/cron.yaml`) describes an action that will
15trigger every six hours and it will curl example.com. 15trigger every six hours and it will curl example.com.
16 16
17However. Be sure that you have enough credits. Free account is not that 17However. Be sure that you have enough credits. Free account is not that
18generous with the minutes they give you for free. Check more about 18generous with the minutes they give you for free. Check more about
19GitHub Actions usage on their website https://docs.github.com/en/actions. 19GitHub Actions usage on their website https://docs.github.com/en/actions.
20 20
diff --git a/content/notes/download-youtube-videos.md b/content/notes/download-youtube-videos.md
index f9f9481..84e0505 100644
--- a/content/notes/download-youtube-videos.md
+++ b/content/notes/download-youtube-videos.md
@@ -4,7 +4,7 @@ url: download-youtube-videos.html
4date: 2023-05-13T12:00:00+02:00 4date: 2023-05-13T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [youtube, yt-dlp, ffmpeg, webm, mp4] 7tags: [youtube]
8--- 8---
9 9
10If you need to download a list of YouTube videos and don't want to download the 10If you need to download a list of YouTube videos and don't want to download the
diff --git a/content/notes/extend-lua-with-custom-c.md b/content/notes/extend-lua-with-custom-c.md
index 708e6fd..44089e0 100644
--- a/content/notes/extend-lua-with-custom-c.md
+++ b/content/notes/extend-lua-with-custom-c.md
@@ -4,7 +4,7 @@ url: extend-lua-with-custom-c.html
4date: 2023-05-23T12:00:00+02:00 4date: 2023-05-23T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [lua, clang, c] 7tags: [lua, c]
8--- 8---
9 9
10Here is a boilerplate for extending Lua with custom C functions. This requires 10Here is a boilerplate for extending Lua with custom C functions. This requires
diff --git a/content/notes/fix-plan9-bootloader.md b/content/notes/fix-plan9-bootloader.md
index 3ab571f..457a831 100644
--- a/content/notes/fix-plan9-bootloader.md
+++ b/content/notes/fix-plan9-bootloader.md
@@ -4,7 +4,7 @@ url: fix-plan9-bootloader.html
4date: 2023-05-11T12:00:00+02:00 4date: 2023-05-11T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [plan9, bootloader] 7tags: [plan9]
8--- 8---
9 9
10If the bootloader is not being written to a disk when installing 9front on real 10If the bootloader is not being written to a disk when installing 9front on real
diff --git a/content/notes/install-plan9port-linux.md b/content/notes/install-plan9port-linux.md
index 4773161..0ad83cf 100644
--- a/content/notes/install-plan9port-linux.md
+++ b/content/notes/install-plan9port-linux.md
@@ -4,7 +4,7 @@ url: install-plan9port-linux.html
4date: 2023-05-12T12:00:00+02:00 4date: 2023-05-12T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [plan9, plan9port, linux] 7tags: [plan9]
8--- 8---
9 9
10Install Plan9port on Linux. This applies to [Plan9port](https://9fans.github.io/plan9port/). 10Install Plan9port on Linux. This applies to [Plan9port](https://9fans.github.io/plan9port/).
diff --git a/content/notes/mass-set-permission.md b/content/notes/mass-set-permission.md
index b1e1480..36cf87c 100644
--- a/content/notes/mass-set-permission.md
+++ b/content/notes/mass-set-permission.md
@@ -4,7 +4,7 @@ url: mass-set-permission.html
4date: 2023-05-16T12:00:00+02:00 4date: 2023-05-16T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [linux, find, chmod] 7tags: [linux]
8--- 8---
9 9
10Replace `*.xml` with your pattern. This will remove executable bit from all 10Replace `*.xml` with your pattern. This will remove executable bit from all
diff --git a/content/notes/mount-plan9-over-network.md b/content/notes/mount-plan9-over-network.md
index 2e17d7d..0f8e685 100644
--- a/content/notes/mount-plan9-over-network.md
+++ b/content/notes/mount-plan9-over-network.md
@@ -4,7 +4,7 @@ url: mount-plan9-over-network.html
4date: 2023-05-07T12:00:00+02:00 4date: 2023-05-07T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [plan9, linux, 9pfs] 7tags: [plan9]
8--- 8---
9 9
10- First install libfuse with sudo apt install libfuse-dev. 10- First install libfuse with sudo apt install libfuse-dev.
diff --git a/content/notes/non-blocking-shell-exec-csharp.md b/content/notes/non-blocking-shell-exec-csharp.md
index b5891e3..db40409 100644
--- a/content/notes/non-blocking-shell-exec-csharp.md
+++ b/content/notes/non-blocking-shell-exec-csharp.md
@@ -4,7 +4,7 @@ url: non-blocking-shell-exec-csharp.html
4date: 2023-05-22T12:00:00+02:00 4date: 2023-05-22T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [csharp, async, shell] 7tags: [csharp]
8--- 8---
9 9
10Execute a shell command in async in C# while not blocking the UI thread. 10Execute a shell command in async in C# while not blocking the UI thread.
diff --git a/content/notes/plan9-screenshot.md b/content/notes/plan9-screenshot.md
index c26a7a6..ad11358 100644
--- a/content/notes/plan9-screenshot.md
+++ b/content/notes/plan9-screenshot.md
@@ -4,7 +4,7 @@ url: plan9-screenshot.html
4date: 2023-05-10T12:00:00+02:00 4date: 2023-05-10T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [plan9, screenshot] 7tags: [plan9]
8--- 8---
9 9
10Take a screenshot in Plan9. This applies to [Plan9](https://9p.io/plan9/) and 10Take a screenshot in Plan9. This applies to [Plan9](https://9p.io/plan9/) and
diff --git a/content/notes/preview-troff-man-pages.md b/content/notes/preview-troff-man-pages.md
index 0af4c6c..06299b8 100644
--- a/content/notes/preview-troff-man-pages.md
+++ b/content/notes/preview-troff-man-pages.md
@@ -4,7 +4,7 @@ url: preview-troff-man-pages.html
4date: 2023-05-15T12:00:00+02:00 4date: 2023-05-15T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [troff, man] 7tags: [troff]
8--- 8---
9 9
10Troff is used to write man pages and it is difficult to read it so this will 10Troff is used to write man pages and it is difficult to read it so this will
diff --git a/content/notes/show-xterm-colors.md b/content/notes/show-xterm-colors.md
index a8802fd..88e9856 100644
--- a/content/notes/show-xterm-colors.md
+++ b/content/notes/show-xterm-colors.md
@@ -4,7 +4,7 @@ url: write-iso-usb.html
4date: 2023-05-25T12:00:00+02:00 4date: 2023-05-25T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [linux, xterm, palette] 7tags: [linux]
8--- 8---
9 9
10- `bash xterm-palette.sh` - will show you number of max colors available 10- `bash xterm-palette.sh` - will show you number of max colors available
@@ -27,7 +27,7 @@ function setbg () {
27} 27}
28 28
29function showcolors() { 29function showcolors() {
30 # Given an integer, display that many colors 30 # Given an integer, display that many colors
31 for ((i=0; i<$1; i++)) 31 for ((i=0; i<$1; i++))
32 do 32 do
33 printf '%4d ' $i 33 printf '%4d ' $i
@@ -44,10 +44,10 @@ printf '\e]4;%d;?\a' 0
44read -d $'\a' -s -t 0.1 </dev/tty 44read -d $'\a' -s -t 0.1 </dev/tty
45if [ -z "$REPLY" ] 45if [ -z "$REPLY" ]
46then 46then
47 # OSC 4 not supported, so we'll fall back to terminfo 47 # OSC 4 not supported, so we'll fall back to terminfo
48 max=$(tput colors) 48 max=$(tput colors)
49else 49else
50 # OSC 4 is supported, so use it for a binary search 50 # OSC 4 is supported, so use it for a binary search
51 min=0 51 min=0
52 max=256 52 max=256
53 while [[ $((min+1)) -lt $max ]] 53 while [[ $((min+1)) -lt $max ]]
diff --git a/content/notes/write-iso-usb.md b/content/notes/write-iso-usb.md
index 8dff651..ea1d429 100644
--- a/content/notes/write-iso-usb.md
+++ b/content/notes/write-iso-usb.md
@@ -4,7 +4,7 @@ url: write-iso-usb.html
4date: 2023-05-08T12:00:00+02:00 4date: 2023-05-08T12:00:00+02:00
5type: notes 5type: notes
6draft: false 6draft: false
7tags: [linux, iso, usb] 7tags: [linux]
8--- 8---
9 9
10Write ISO to USB key. Nothing fancy here. 10Write ISO to USB key. Nothing fancy here.
diff --git a/static/general/index.css b/static/general/index.css
index eea126c..9c274d6 100644
--- a/static/general/index.css
+++ b/static/general/index.css
@@ -1 +1 @@
/*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.mx-auto{margin-left:auto;margin-right:auto}.my-12{margin-top:3rem;margin-bottom:3rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-6{margin-left:1.5rem}.mt-4{margin-top:1rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.flex-grow{flex-grow:1}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.items-center{align-items:center}.gap-1{gap:.25rem}.rounded{border-radius:.25rem}.border-0{border-width:0}.border-2{border-width:2px}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-16{padding-bottom:4rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.container-blog{max-width:700px}::selection{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}::-moz-selection{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}a:hover{color:blue}article.single h2{margin-bottom:2rem}article.single h2,article.single.note h2{margin-top:2rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}article.single.note h2{margin-bottom:.25rem}article.single h3{font-size:1.25rem}article.single h3,article.single h4{margin-bottom:1rem;margin-top:2rem;line-height:1.75rem;font-weight:700;line-height:1.25}article.single h4{font-size:1.125rem}article.single p{margin-bottom:1.25rem}article.single a{text-decoration-line:underline;text-underline-offset:2px}article.single a:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}article.single .content blockquote{background-image:url(/general/alert-light.svg);background-size:30px 30px;background-repeat:no-repeat;background-position:0 5px;margin-top:2rem;margin-bottom:2rem;padding-left:3rem}article.single .content blockquote p{margin-bottom:.5rem}article.single img{margin-top:2rem;margin-bottom:2rem;image-rendering:crisp-edges;image-rendering:-webkit-optimize-contrast}article.single img,article.single video{width:100%;border-radius:.25rem;--tw-bg-opacity:1!important;background-color:rgb(249 250 251/var(--tw-bg-opacity))!important}article.single audio{margin-bottom:1.5rem;width:100%}article.single code{background-color:rgb(254 249 195/var(--tw-bg-opacity))}article.single code,article.single.note code{border-radius:.25rem;--tw-bg-opacity:1;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500}article.single.note code{background-color:rgb(243 244 246/var(--tw-bg-opacity))}article.single pre{margin-bottom:1.5rem;overflow-x:auto;border-radius:.25rem;--tw-bg-opacity:1!important;background-color:rgb(249 250 251/var(--tw-bg-opacity))!important;padding:1rem;font-size:.75rem;line-height:1rem}article.single pre code,article.single.note pre code{background:unset;padding:unset;line-height:1.625}article.single table{margin-bottom:1rem;width:100%;border-collapse:collapse;border-width:1px;--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity))}article.single table td,article.single table th,article.single table tr{border-width:1px;padding:.5rem 1rem;text-align:left}article.single .content ul{margin-bottom:1.5rem;list-style-type:disc;padding-left:1.5rem}@media (min-width:768px){article.single .content ul{padding-left:2.5rem}}article.single .content ol{margin-bottom:1.5rem;list-style-type:decimal;padding-left:2rem}@media (min-width:768px){article.single .content ol{padding-left:2.5rem}}article.single #TableOfContents{margin-bottom:2.5rem;margin-left:1rem;line-height:1.625}article.single #TableOfContents ul{list-style-type:decimal;padding-left:1rem}@media (min-width:768px){article.single #TableOfContents ul{padding-left:1.5rem}}article.single .content ul ul{margin-bottom:auto}article.single .katex-display{margin-top:2.5rem;margin-bottom:2.5rem}article.single .ll-iframe{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}article.single .ll-iframe:before{display:flex;height:100%}@keyframes pulse{50%{opacity:.5}}article.single .ll-iframe:before{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;cursor:pointer;align-items:center;justify-content:center;border-radius:.25rem;border-width:2px;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;content:"Click here to load resource…"}article.single .ll-iframe.empty:before{content:none}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:w-auto{width:auto}.md\:flex-row{flex-direction:row}.md\:p-0{padding:0}} \ No newline at end of file /*! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:initial}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button;background-color:initial;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:initial}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::backdrop,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.mx-auto{margin-left:auto;margin-right:auto}.my-12{margin-top:3rem;margin-bottom:3rem}.mb-1{margin-bottom:.25rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-6{margin-left:1.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.contents{display:contents}.hidden{display:none}.h-full{height:100%}.w-full{width:100%}.flex-grow{flex-grow:1}.list-disc{list-style-type:disc}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.gap-1{gap:.25rem}.gap-2{gap:.5rem}.rounded{border-radius:.25rem}.border-0{border-width:0}.border-2{border-width:2px}.border-gray-100{--tw-border-opacity:1;border-color:rgb(243 244 246/var(--tw-border-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}.bg-orange-600{--tw-bg-opacity:1;background-color:rgb(234 88 12/var(--tw-bg-opacity))}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.pb-16{padding-bottom:4rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-semibold{font-weight:600}.italic{font-style:italic}.leading-relaxed{line-height:1.625}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity))}.underline{text-decoration-line:underline}.no-underline{text-decoration-line:none}.underline-offset-2{text-underline-offset:2px}.container-blog{max-width:700px}::selection{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}::-moz-selection{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity));--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity))}.blue,a:hover{color:blue}article.single h2{margin-bottom:2rem}article.single h2,article.single.note h2{margin-top:2rem;font-size:1.5rem;line-height:2rem;font-weight:700;line-height:1.25}article.single.note h2{margin-bottom:.25rem}article.single h3{font-size:1.25rem}article.single h3,article.single h4{margin-bottom:1rem;margin-top:2rem;line-height:1.75rem;font-weight:700;line-height:1.25}article.single h4{font-size:1.125rem}article.single p{margin-bottom:1.25rem}article.single a{text-decoration-line:underline;text-underline-offset:2px}article.single a:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}article.single .content blockquote{background-image:url(/general/alert-light.svg);background-size:30px 30px;background-repeat:no-repeat;background-position:0 5px;margin-top:2rem;margin-bottom:2rem;padding-left:3rem}article.single .content blockquote p{margin-bottom:.5rem}article.single img{margin-top:2rem;margin-bottom:2rem;image-rendering:crisp-edges;image-rendering:-webkit-optimize-contrast}article.single img,article.single video{width:100%;border-radius:.25rem;--tw-bg-opacity:1!important;background-color:rgb(249 250 251/var(--tw-bg-opacity))!important}article.single audio{margin-bottom:1.5rem;width:100%}article.single code{background-color:rgb(254 249 195/var(--tw-bg-opacity))}article.single code,article.single.note code{border-radius:.25rem;--tw-bg-opacity:1;padding:.25rem .5rem;font-size:.75rem;line-height:1rem;font-weight:500}article.single.note code{background-color:rgb(243 244 246/var(--tw-bg-opacity))}article.single pre{margin-bottom:1.5rem;overflow-x:auto;border-radius:.25rem;--tw-bg-opacity:1!important;background-color:rgb(249 250 251/var(--tw-bg-opacity))!important;padding:1rem;font-size:.75rem;line-height:1rem}article.single pre code,article.single.note pre code{background:unset;padding:unset;line-height:1.625}article.single table{margin-bottom:1rem;width:100%;border-collapse:collapse;border-width:1px;--tw-border-opacity:1;border-color:rgb(0 0 0/var(--tw-border-opacity))}article.single table td,article.single table th,article.single table tr{border-width:1px;padding:.5rem 1rem;text-align:left}article.single .content ul{margin-bottom:1.5rem;list-style-type:disc;padding-left:1.5rem}@media (min-width:768px){article.single .content ul{padding-left:2.5rem}}article.single .content ol{margin-bottom:1.5rem;list-style-type:decimal;padding-left:2rem}@media (min-width:768px){article.single .content ol{padding-left:2.5rem}}article.single #TableOfContents{margin-bottom:2.5rem;margin-left:1rem;line-height:1.625}article.single #TableOfContents ul{list-style-type:decimal;padding-left:1rem}@media (min-width:768px){article.single #TableOfContents ul{padding-left:1.5rem}}article.single .content ul ul{margin-bottom:auto}article.single .katex-display{margin-top:2.5rem;margin-bottom:2.5rem}article.single .ll-iframe{border-radius:.25rem;--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity))}article.single .ll-iframe:before{display:flex;height:100%}@keyframes pulse{50%{opacity:.5}}article.single .ll-iframe:before{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;cursor:pointer;align-items:center;justify-content:center;border-radius:.25rem;border-width:2px;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;content:"Click here to load resource…"}article.single .ll-iframe.empty:before{content:none}.hover\:bg-yellow-100:hover{--tw-bg-opacity:1;background-color:rgb(254 249 195/var(--tw-bg-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgb(31 41 55/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}@media (min-width:768px){.md\:mb-0{margin-bottom:0}.md\:block{display:block}.md\:inline-block{display:inline-block}.md\:w-auto{width:auto}.md\:flex-row{flex-direction:row}.md\:p-0{padding:0}} \ No newline at end of file
diff --git a/themes/simple/layouts/_default/notes.html b/themes/simple/layouts/_default/notes.html
index e2672e4..3474be6 100644
--- a/themes/simple/layouts/_default/notes.html
+++ b/themes/simple/layouts/_default/notes.html
@@ -13,10 +13,27 @@
13 13
14 <hr class="border-2 border-gray-100 mb-8"> 14 <hr class="border-2 border-gray-100 mb-8">
15 15
16 <!-- Dropdown selector to jump to note -->
16 <select id="jump-to-note" class="px-3 py-2 rounded mb-2 bg-gray-100 w-full md:w-auto"> 17 <select id="jump-to-note" class="px-3 py-2 rounded mb-2 bg-gray-100 w-full md:w-auto">
17 <option>Jump to note</option> 18 <option>Jump to note</option>
18 </select> 19 </select>
19 20
21 <!-- List all unique tags -->
22 <nav itemscope itemtype="https://schema.org/SiteNavigationElement" class="mt-6 mb-10" role="feed">
23 <meta itemprop="name" content="Tag list">
24 <section>
25 <ul class="flex flex-wrap gap-2">
26 {{ range .Site.Taxonomies.tags }}
27 <li>
28 <a href="{{ .Page.Permalink }}" class="inline-block px-3 py-1 rounded bg-gray-100 hover:bg-yellow-100">
29 {{ .Page.Title }}
30 </a>
31 </li>
32 {{ end }}
33 </ul>
34 </section>
35 </nav>
36
20 <!-- List of all notes --> 37 <!-- List of all notes -->
21 <nav itemscope itemtype="https://schema.org/SiteNavigationElement" class="mb-12" role="feed"> 38 <nav itemscope itemtype="https://schema.org/SiteNavigationElement" class="mb-12" role="feed">
22 <meta itemprop="name" content="Article list"> 39 <meta itemprop="name" content="Article list">
@@ -38,7 +55,7 @@
38 <span class="inline-flex flex-row gap-1"> 55 <span class="inline-flex flex-row gap-1">
39 <span>(</span> 56 <span>(</span>
40 {{ range .Params.tags }} 57 {{ range .Params.tags }}
41 <span>{{ . }}</span> 58 <a href="/tags/{{ . | urlize }}.html">{{ . }}</a>
42 {{ end }} 59 {{ end }}
43 <span>)</span> 60 <span>)</span>
44 </span> 61 </span>
diff --git a/themes/simple/layouts/tags/list.html b/themes/simple/layouts/tags/list.html
new file mode 100644
index 0000000..3aa801b
--- /dev/null
+++ b/themes/simple/layouts/tags/list.html
@@ -0,0 +1,88 @@
1{{ define "main" }}
2<main role="main" class="container-blog mx-auto px-6 md:p-0">
3
4 <section class="mb-6">
5 <h1 class="text-2xl font-bold mb-2 italic">
6 <span class="blue">{{ .Title }}</span>
7 <span>//</span>
8 <span>notes</span>
9 <span>//</span>
10 <span class="text-sm">{{ len .Pages }} of them</span>
11 </h1>
12 <p class="text-gray-600 italic">
13 Notes about things I learn, things I do, things I want to remember,
14 but never do. You can subscribe to this
15 <a href="/notes.xml" class="underline hover:bg-yellow-100">RSS feed</a>
16 which contains only the notes without the blog posts.
17 </p>
18 </section>
19
20 <hr class="border-2 border-gray-100 mb-8">
21
22 <!-- Dropdown selector to jump to note -->
23 <select id="jump-to-note" class="px-3 py-2 rounded mb-2 bg-gray-100 w-full md:w-auto">
24 <option>Jump to note</option>
25 </select>
26
27 <!-- List of all notes -->
28 <nav itemscope itemtype="https://schema.org/SiteNavigationElement" class="mb-12" role="feed">
29 <meta itemprop="name" content="Article list">
30 <section>
31 {{ range .Pages }}
32 <div class="mb-10">
33 <article class="mb-5 single note" itemscope itemtype="http://schema.org/Article">
34 <a href="{{ .Params.url }}">
35 <h2 class="text-xl font-medium notes-heading">{{.Title}}</h2>
36 </a>
37 <p class="text-gray-600 _italic text-sm flex flex-col md:flex-row gap-1">
38 <time datetime="{{ .Date.Format "2006-01-02" }}" itemprop="datePublished">
39 {{ .Date.Format "Monday Jan 2, 2006" }}
40 </time>
41
42 {{ if .Params.tags }}
43 <span class="hidden md:inline-block">
44 <span>with tags</span>
45 <span class="inline-flex flex-row gap-1">
46 <span>(</span>
47 {{ range .Params.tags }}
48 <span>{{ . }}</span>
49 {{ end }}
50 <span>)</span>
51 </span>
52 </span>
53 {{ end }}
54 <div class="content">
55 {{ .Content | safeHTML }}
56 </div>
57 </article>
58 </div>
59 {{ end }}
60 </section>
61 </nav>
62
63 <script>
64 try {
65 const notes = document.querySelectorAll('h2');
66 const select = document.querySelector('#jump-to-note');
67
68 notes.forEach(note => {
69 const id = note.innerText.toLowerCase().replace(/ /g, '-').replace(/[^\w-]+/g, '');
70 note.id = id;
71 note.innerHTML = `<a href="#${id}"></a>${note.innerHTML}`;
72
73 const option = document.createElement('option');
74 option.value = id;
75 option.innerText = note.innerText;
76 select.appendChild(option);
77
78 select.addEventListener('change', () => {
79 window.location.hash = select.value;
80 });
81 });
82 } catch (error) {
83 console.error(error);
84 }
85 </script>
86
87</main>
88{{ end }}
diff --git a/themes/simple/static/css/tailwind.css b/themes/simple/static/css/tailwind.css
index db7294b..b99c7fc 100644
--- a/themes/simple/static/css/tailwind.css
+++ b/themes/simple/static/css/tailwind.css
@@ -18,10 +18,16 @@
18 @apply bg-yellow-100 text-black; 18 @apply bg-yellow-100 text-black;
19} 19}
20 20
21/* Helpers */
22
21a:hover { 23a:hover {
22 color: blue; 24 color: blue;
23} 25}
24 26
27.blue {
28 color: blue;
29}
30
25/* Headings */ 31/* Headings */
26article.single h2 { 32article.single h2 {
27 @apply text-2xl font-bold mb-8 mt-8 leading-tight; 33 @apply text-2xl font-bold mb-8 mt-8 leading-tight;