├── exampleSite ├── themes │ └── alageek └── config.toml ├── .github └── FUNDING.yml ├── .gitignore ├── layouts ├── robots.txt ├── partials │ ├── style_progressively.html │ ├── list.html │ ├── script_bootstrap.html │ ├── style_bootstrap.html │ ├── head_extra.html │ ├── script_progressively.html │ ├── footer_extra.html │ ├── icon_prev.html │ ├── script_latex.html │ ├── icon_next.html │ ├── style_highlight.html │ ├── content.html │ ├── style_main.html │ ├── script_highlight.html │ ├── footer_email.html │ ├── footer_gitlab.html │ ├── footer_rss.html │ ├── footer_facebook.html │ ├── footer_telegram.html │ ├── footer_linkedin.html │ ├── footer_twitter.html │ ├── footer_github.html │ ├── head.html │ ├── footer_500px.html │ ├── footer_mastodon.html │ ├── footer.html │ └── header.html ├── _default │ ├── baseof.html │ ├── single.html │ ├── taxonomy.html │ └── section.html ├── 404.html ├── blog │ ├── section.html │ └── single.html └── index.html ├── images ├── tn.png └── screenshot.png ├── static ├── img │ └── favicon.ico └── css │ └── main.css ├── .prettierrc ├── i18n ├── en.yaml ├── es.yaml ├── tr.yaml ├── ro.yaml ├── ru.yaml └── oc.yaml ├── .pre-commit-config.yaml ├── theme.toml ├── LICENSE └── README.md /exampleSite/themes/alageek: -------------------------------------------------------------------------------- 1 | ../ -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: gkmngrgn 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .hugo_build.lock 3 | -------------------------------------------------------------------------------- /layouts/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Allow: / 3 | -------------------------------------------------------------------------------- /images/tn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gkmngrgn/hugo-alageek-theme/HEAD/images/tn.png -------------------------------------------------------------------------------- /images/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gkmngrgn/hugo-alageek-theme/HEAD/images/screenshot.png -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gkmngrgn/hugo-alageek-theme/HEAD/static/img/favicon.ico -------------------------------------------------------------------------------- /layouts/partials/style_progressively.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "overrides": [ 3 | { 4 | "files": ["*.html"], 5 | "options": { 6 | "parser": "go-template" 7 | } 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /layouts/partials/list.html: -------------------------------------------------------------------------------- 1 |
  • 2 | {{ .Date.Format "Jan 02, 2006" }} 3 | {{ .Title }} 4 |
  • 5 | -------------------------------------------------------------------------------- /layouts/partials/script_bootstrap.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /layouts/partials/style_bootstrap.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /layouts/partials/head_extra.html: -------------------------------------------------------------------------------- 1 | {{ partial "style_bootstrap" . }} 2 | 3 | {{ partial "style_main" . }} 4 | 5 | {{ if .Site.Params.highlightjs }} 6 | {{ partial "style_highlight" . }} 7 | {{ end }} 8 | 9 | {{ if .Site.Params.progressively }} 10 | {{ partial "style_progressively" . }} 11 | {{ end }} 12 | -------------------------------------------------------------------------------- /layouts/partials/script_progressively.html: -------------------------------------------------------------------------------- 1 | 2 | 11 | -------------------------------------------------------------------------------- /layouts/partials/footer_extra.html: -------------------------------------------------------------------------------- 1 | {{ partial "script_bootstrap" . }} 2 | 3 | {{ if .Site.Params.highlightjs }} 4 | {{ partial "script_highlight" . }} 5 | {{ end }} 6 | 7 | {{ if .Site.Params.progressively }} 8 | {{ partial "script_progressively" . }} 9 | {{ end }} 10 | 11 | {{ if .Site.Params.uselatex }} 12 | {{ partial "script_latex" . }} 13 | {{ end }} 14 | -------------------------------------------------------------------------------- /layouts/partials/icon_prev.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /layouts/partials/script_latex.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | 10 | -------------------------------------------------------------------------------- /layouts/partials/icon_next.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /layouts/partials/style_highlight.html: -------------------------------------------------------------------------------- 1 | 5 | 9 | 10 | 13 | -------------------------------------------------------------------------------- /layouts/partials/content.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.progressively }} 2 | {{ $newImage := (print "
    $3
    ") }} 3 | {{ .Content | replaceRE "(.*)" $newImage | safeHTML }} 4 | {{ else }} 5 | {{ .Content }} 6 | {{ end }} 7 | -------------------------------------------------------------------------------- /layouts/_default/baseof.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ partial "head" . }} 4 | 5 | 6 | 7 | {{ partial "header" . }} 8 | 9 | 10 |
    11 | {{ block "main" . }}{{ end }} 12 |
    13 | 14 | {{ partial "footer" . }} 15 | {{ partial "footer_extra" . }} 16 | 17 | {{ template "_internal/google_analytics_async.html" . }} 18 | 19 | 20 | -------------------------------------------------------------------------------- /layouts/partials/style_main.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | 14 | -------------------------------------------------------------------------------- /layouts/404.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 | {{ if isset .Site.Params "logofile" }} 5 | logo 6 | {{ end }} 7 |

    404

    8 |

    {{ i18n "page_not_found_description" }}

    9 | {{ i18n "page_not_found_link" }} 10 |
    11 |
    12 | {{ end }} 13 | -------------------------------------------------------------------------------- /layouts/partials/script_highlight.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ range .Site.Params.highlightjslanguages }} 4 | 5 | {{ end }} 6 | 7 | 12 | -------------------------------------------------------------------------------- /layouts/_default/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 |
    5 |
    6 |

    7 | {{ .Title }} 8 |

    9 |
    10 | {{ partial "content" . }} 11 |
    12 |
    13 |
    14 |
    15 |
    16 | {{ end }} 17 | -------------------------------------------------------------------------------- /layouts/partials/footer_email.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.email }} 2 | 7 | 8 | 11 | 12 | 13 | {{ end }} 14 | -------------------------------------------------------------------------------- /i18n/en.yaml: -------------------------------------------------------------------------------- 1 | blog_posts: 2 | other: "Blog posts" 3 | latest_posts: 4 | other: "Latest posts" 5 | page_not_found_description: 6 | other: "The page you were looking for does not exist." 7 | page_not_found_link: 8 | other: "Visit the home page" 9 | pinned: 10 | other: "Pinned" 11 | posts_about: 12 | other: "Posts about {{ .Title }}" 13 | reading_time: 14 | one: "{{ .Count }} minute" 15 | other: "{{ .Count }} minutes" 16 | sections: 17 | other: "Sections" 18 | see_more: 19 | other: "See more..." 20 | title_tags: 21 | other: "Tags" 22 | -------------------------------------------------------------------------------- /i18n/es.yaml: -------------------------------------------------------------------------------- 1 | blog_posts: 2 | other: "Blog posts" 3 | latest_posts: 4 | other: "Últimos posts" 5 | page_not_found_description: 6 | other: "La pagina que busca no existe." 7 | page_not_found_link: 8 | other: "Volver a la página principal." 9 | pinned: 10 | other: "Destacado" 11 | posts_about: 12 | other: "Posts about {{ .Title }}" 13 | reading_time: 14 | one: "{{ .Count }} minuto" 15 | other: "{{ .Count }} minutos" 16 | sections: 17 | other: "Sections" 18 | see_more: 19 | other: "Ver más..." 20 | title_tags: 21 | other: "Tags" 22 | -------------------------------------------------------------------------------- /i18n/tr.yaml: -------------------------------------------------------------------------------- 1 | blog_posts: 2 | other: "Blog yazıları" 3 | latest_posts: 4 | other: "Son yazılar" 5 | page_not_found_description: 6 | other: "Aradığınız sayfa bulunmuyor." 7 | page_not_found_link: 8 | other: "Ana sayfaya git" 9 | pinned: 10 | other: "Sabitlenmiş" 11 | posts_about: 12 | other: "{{.Title}} ile ilgili yazılar" 13 | reading_time: 14 | one: "{{ .Count }} dakika" 15 | other: "{{ .Count }} dakika" 16 | sections: 17 | other: "Bölümler" 18 | see_more: 19 | other: "Daha fazlası..." 20 | title_tags: 21 | other: "Etiketler" 22 | -------------------------------------------------------------------------------- /i18n/ro.yaml: -------------------------------------------------------------------------------- 1 | blog_posts: 2 | other: "Postări" 3 | latest_posts: 4 | other: "Cele mai recente" 5 | page_not_found_description: 6 | other: "Pagina pe care o cauți nu există" 7 | page_not_found_link: 8 | other: "Vizitează pagina principală" 9 | pinned: 10 | other: "Importante" 11 | posts_about: 12 | other: "Articole despre {{ .Title }}" 13 | reading_time: 14 | one: "{{ .Count }} minut" 15 | other: "{{ .Count }} minute" 16 | sections: 17 | other: "Secțiuni" 18 | see_more: 19 | other: "Detalii..." 20 | title_tags: 21 | other: "Tag-uri" 22 | -------------------------------------------------------------------------------- /i18n/ru.yaml: -------------------------------------------------------------------------------- 1 | blog_posts: 2 | other: "Записи" 3 | latest_posts: 4 | other: "Самые последние" 5 | page_not_found_description: 6 | other: "Страница, которую вы ищете, не существует" 7 | page_not_found_link: 8 | other: "Перейти на главную страницу" 9 | pinned: 10 | other: "Прикрепленные" 11 | posts_about: 12 | other: "Записи о {{ .Title }}" 13 | reading_time: 14 | one: "{{ .Count }} минута" 15 | other: "{{ .Count }} минуты" 16 | sections: 17 | other: "Разделы" 18 | see_more: 19 | other: "Больше..." 20 | title_tags: 21 | other: "Теги" 22 | -------------------------------------------------------------------------------- /i18n/oc.yaml: -------------------------------------------------------------------------------- 1 | blog_posts: 2 | other: "Publicacions Blòg" 3 | latest_posts: 4 | other: "Darrièras publicacions" 5 | page_not_found_description: 6 | other: "La pagina que cercatz existís pas." 7 | page_not_found_link: 8 | other: "Anar a l’acuèlh" 9 | pinned: 10 | other: "Penjat" 11 | posts_about: 12 | other: "Publicacions tocant {{ .Title }}" 13 | reading_time: 14 | one: "{{ .Count }} minuta" 15 | other: "{{ .Count }} minutas" 16 | sections: 17 | other: "Seccions" 18 | see_more: 19 | other: "Ne veire mai..." 20 | title_tags: 21 | other: "Tags" 22 | -------------------------------------------------------------------------------- /layouts/_default/taxonomy.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 |
    5 |
    6 |
    7 |

    {{ i18n "posts_about" . }}

    8 |
      9 | {{ range .Data.Pages.ByPublishDate }} 10 | {{ partial "list" . }} 11 | {{ end }} 12 |
    13 |
    14 |
    15 |
    16 |
    17 |
    18 | {{ end }} 19 | -------------------------------------------------------------------------------- /layouts/partials/footer_gitlab.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.gitlab }} 2 | 8 | 9 | 12 | 13 | 14 | {{ end }} 15 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | repos: 2 | - repo: https://github.com/pre-commit/pre-commit-hooks 3 | rev: v4.4.0 4 | hooks: 5 | - id: trailing-whitespace 6 | - id: end-of-file-fixer 7 | - id: check-yaml 8 | - id: check-toml 9 | - id: check-added-large-files 10 | 11 | - repo: https://github.com/Lucas-C/pre-commit-hooks 12 | rev: v1.5.1 13 | hooks: 14 | - id: forbid-crlf 15 | - id: remove-crlf 16 | 17 | - repo: https://github.com/pre-commit/mirrors-prettier 18 | rev: v3.0.0-alpha.6 19 | hooks: 20 | - id: prettier 21 | additional_dependencies: 22 | - prettier@2.5.1 23 | - prettier-plugin-go-template@0.0.11 24 | -------------------------------------------------------------------------------- /layouts/partials/footer_rss.html: -------------------------------------------------------------------------------- 1 | 6 | 14 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /layouts/_default/section.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 |
    5 |
    6 |
    7 | {{ partial "content" . }} 8 |
    9 | 10 |
    11 |

    {{ i18n "sections" }}

    12 | 13 |
      14 | {{ range sort .Pages "Title" "asc" }} 15 |
    • 16 | {{ .Title }} 17 |
    • 18 | {{ end }} 19 |
    20 |
    21 |
    22 |
    23 |
    24 |
    25 | {{ end }} 26 | -------------------------------------------------------------------------------- /theme.toml: -------------------------------------------------------------------------------- 1 | name = "alaGeek" 2 | license = "MIT" 3 | licenselink = "https://github.com/gkmngrgn/hugo-alageek-theme/blob/main/LICENSE.md" 4 | description = "A Cocoa Enhanced based theme. It's rewritten with Bootstrap 5." 5 | homepage = "https://github.com/gkmngrgn/hugo-alageek-theme" 6 | tags = ["clean", "fast", "responsive", "typography", "disqus", "light", "dark", "syntax-highlighting"] 7 | features = ["clean", "fast", "responsive", "typography", "disqus", "light", "dark", "syntax-highlighting"] 8 | min_version = "0.41.0" 9 | 10 | [author] 11 | name = "Gökmen Görgen" 12 | homepage = "https://gokmengorgen.net" 13 | 14 | [original] 15 | name = "Alexis Tacnet" 16 | homepage = "https://fuegowolf.me/" 17 | repo = "https://github.com/fuegowolf/cocoa-eh-hugo-theme" 18 | -------------------------------------------------------------------------------- /layouts/partials/footer_facebook.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.facebook }} 2 | 8 | 9 | 13 | 16 | 17 | 18 | {{ end }} 19 | -------------------------------------------------------------------------------- /layouts/blog/section.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 |
    5 |
    6 |
    7 | {{ partial "content" . }} 8 |
    9 | 10 |
    11 |

    {{ i18n "blog_posts" }}

    12 | 13 |
      14 | {{ range (.Paginate (.Pages.GroupByDate "Jan, 2006" "desc")).PageGroups }} 15 |
    • {{ .Key }}
    • 16 | {{ range sort .Pages "Date" "desc" }} 17 | {{ partial "list" . }} 18 | {{ end }} 19 | {{ end }} 20 |
    21 | 22 | {{ template "_internal/pagination.html" . }} 23 |
    24 |
    25 |
    26 |
    27 |
    28 | {{ end }} 29 | -------------------------------------------------------------------------------- /layouts/partials/footer_telegram.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.telegram }} 2 | 8 | 9 | 10 | 14 | 18 | 22 | 23 | 24 | {{ end }} 25 | -------------------------------------------------------------------------------- /layouts/partials/footer_linkedin.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.linkedin }} 2 | 8 | 16 | 20 | 21 | 22 | {{ end }} 23 | -------------------------------------------------------------------------------- /layouts/partials/footer_twitter.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.twitter }} 2 | 8 | 16 | 20 | 21 | 22 | {{ end }} 23 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2018 Gökmen Görgen 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /layouts/partials/footer_github.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.github }} 2 | 8 | 16 | 19 | 20 | 21 | {{ end }} 22 | -------------------------------------------------------------------------------- /layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | {{ block "title" . }}{{ .Title }} - {{ .Site.Title }}{{ end }} 8 | 9 | 10 | 11 | 12 | 16 | 17 | {{ template "_internal/opengraph.html" . }} 18 | {{ template "_internal/twitter_cards.html" . }} 19 | 20 | {{ hugo.Generator }} 21 | 22 | {{ if .Site.Params.flattr }} 23 | 24 | {{ end }} 25 | 26 | 27 | 28 | 29 | {{ if .Site.Params.faviconfile }} 30 | 31 | {{ else }} 32 | 33 | {{ end }} 34 | 35 | 36 | 42 | 43 | {{ partial "head_extra" . }} 44 | 45 | -------------------------------------------------------------------------------- /layouts/partials/footer_500px.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params._500px }} 2 | 8 | 9 | 12 | 13 | 14 | {{ end }} 15 | -------------------------------------------------------------------------------- /layouts/partials/footer_mastodon.html: -------------------------------------------------------------------------------- 1 | {{ if .Site.Params.mastodon_url }} 2 | 9 | 10 | 13 | 17 | 18 | 19 | {{ end }} 20 | -------------------------------------------------------------------------------- /layouts/index.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 |
    3 |
    4 |
    5 |
    6 |
    7 | {{ partial "content" . }} 8 |
    9 | 10 | {{ if isset .Site.Params "best_posts" }} 11 |
    12 |
    📌 {{ i18n "pinned" }}
    13 |
      14 | {{ range .Site.Params.best_posts }} 15 |
    • 16 | {{ .title }} 17 |
    • 18 | {{ end }} 19 |
    20 |
    21 | {{ end }} 22 | 23 | {{ if isset .Site.Params "latestpostcount" }} 24 |
    25 | {{ $nbPosts := len (where .Site.RegularPages "Section" "blog") }} 26 | 27 | {{ if gt $nbPosts 0 }} 28 |
    {{ i18n "latest_posts" }}
    29 |
      30 | {{ range (first .Site.Params.latestpostcount (where .Site.RegularPages "Section" "blog")).GroupByDate "Jan, 2006" "desc" }} 31 |
    • {{ .Key }}
    • 32 | {{ range sort .Pages "Date" "desc" }} 33 | {{ partial "list" . }} 34 | {{ end }} 35 | {{ end }} 36 |
    37 | 38 | {{ if gt $nbPosts .Site.Params.latestpostcount }} 39 | 40 | {{ i18n "see_more" }} 41 | 42 | {{ end }} 43 | {{ end }} 44 |
    45 | {{ end }} 46 |
    47 |
    48 |
    49 |
    50 | {{ end }} 51 | -------------------------------------------------------------------------------- /layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 61 | -------------------------------------------------------------------------------- /exampleSite/config.toml: -------------------------------------------------------------------------------- 1 | author = "Developer" 2 | baseUrl = "http://localhost/" 3 | builddrafts = false 4 | canonifyurls = true 5 | defaultContentLanguage = "en" 6 | languageCode = "en" 7 | layoutdir = "layouts" 8 | pluralizelisttitles = false 9 | publishdir = "public" 10 | theme = "alageek" 11 | title = "Demo Site" 12 | paginate = 20 13 | 14 | [permalinks] 15 | blog = "/blog/:year/:month/:slug/" 16 | 17 | [markup] 18 | defaultMarkdownHandler = "goldmark" 19 | 20 | [markup.goldmark.renderer] 21 | unsafe = true 22 | xhtml = true 23 | 24 | [params] 25 | description = "Developer Blog" 26 | faviconfile = "" 27 | logofile = "" 28 | latestpostcount = 10 29 | highlightjs = true 30 | highlightjslanguages = [ 31 | "bash", 32 | "csharp", 33 | "css", 34 | "diff", 35 | "django", 36 | "dockerfile", 37 | "golang", 38 | "javascript", 39 | "lisp", 40 | "nginx", 41 | "powershell", 42 | "python", 43 | "rust", 44 | "yaml" 45 | ] 46 | posts_navigation = true 47 | progressively = true 48 | linkedin = "" # just username 49 | twitter = "" # just username 50 | mastodon_url = "" # full url for your profile 51 | email = "" # email address 52 | 53 | # TRANSLATABLE SETTINGS 54 | 55 | ## ENGLISH 56 | 57 | [languages.en] 58 | languageName = "English" 59 | contentDir = "content-en" 60 | weight = 10 61 | 62 | [languages.en.params] 63 | copyright = "© 2018 by Theme Developer." 64 | copyrightUrl = "/license/" 65 | 66 | [[languages.en.menu.primary]] 67 | identifier = "theme" 68 | name = "THEME" 69 | url = "https://github.com/gkmngrgn/hugo-alageek-theme" 70 | weight = 10 71 | 72 | [[languages.en.menu.primary]] 73 | identifier = "author" 74 | name = "AUTHOR" 75 | url = "https://gokmengorgen.net" 76 | weight = 20 77 | 78 | [[languages.en.menu.secondary]] 79 | identifier = "dosh-core" 80 | name = "DOSH-CORE" 81 | url = "https://github.com/gkmngrgn/dosh-core#readme" 82 | weight = 100 83 | 84 | [[languages.en.menu.secondary]] 85 | identifier = "dosh-cli" 86 | name = "DOSH-CLI" 87 | url = "https://github.com/gkmngrgn/dosh-cli#readme" 88 | weight = 110 89 | 90 | [[languages.en.menu.secondary]] 91 | identifier = "tile" 92 | name = "TILE" 93 | url = "https://goedev.itch.io/tile" 94 | weight = 120 95 | 96 | [[languages.en.menu.footer]] 97 | identifier = "tags" 98 | name = "Tags" 99 | url = "/tags/" 100 | weight = 50 101 | -------------------------------------------------------------------------------- /layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | {{ $isTocEnabled := .Scratch.Get "isTocEnabled" }} 2 | 3 | 4 |
    5 |
    6 |
    7 |
    12 | {{ if .Site.Params.logofile }} 13 | 14 | 19 | 20 | {{ end }} 21 |
    22 |
    23 | 24 |

    {{ .Site.Title }}

    25 |
    26 | 27 | 66 | 67 | 83 |
    84 |
    85 |
    86 |
    87 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # HUGO ALAGEEK THEME 2 | 3 | alaGeek is an enhanced version of the 4 | [Cocoa](https://github.com/mtn/cocoa-eh-hugo-theme) theme featuring a customizable 5 | homepage with different sections including the latest posts, syntax highlighting and 6 | MathJax support and much more. It's rewritten with **Bootstrap 5**. 7 | 8 | ![](/images/screenshot.png) 9 | 10 | Websites that are using Hugo with alaGeek theme: 11 | 12 | - https://alageek.com 13 | - https://gokmengorgen.net 14 | 15 | ~Feel free to open a pull-request to add your website here, I'll check this list every new version. You don't need to use the latest version of the theme.~ 16 | 17 | **NEW UPDATE:** I don't use Hugo anymore. Please fork and develop if you still need this theme. 18 | 19 | ## FEATURES 20 | 21 | - Social media links on the footer: 22 | - 500px 23 | - Facebook 24 | - Flattr 25 | - GitHub 26 | - GitLab 27 | - Linkedin 28 | - Mastodon 29 | - Twitter 30 | - Homepage with latest and best posts. 31 | - Single pages, sections with a header and a list of articles 32 | - Syntax highlighting with `highlightjs` 33 | - Progressive images 34 | - Twitter cards support 35 | - LaTeX support with MathJax 36 | - Possibility to add extra scripts with `footer_extra.html` 37 | - Disqus support 38 | - Dark-mode support 39 | - High accessibility score 40 | - Pagination support in blog posts 41 | - General and post-specific Table of Contents support. 42 | 43 | ## DEPENDENCY VERSIONS 44 | 45 | - bootstrap: 5.2.1 46 | - highlightjs: 11.6.0 47 | - mathjax: ^3.0.0 48 | - progressively: latest stable version 49 | 50 | ## TYPOGRAPHY 51 | 52 | You can customize the fonts copying and editing `style_main.html` file. The defaults 53 | are: 54 | 55 | - Title: Merriweather Sans 56 | - Content: Merriweather 57 | - Code: Fira Code 58 | 59 | ## SUPPORTED LANGUAGES 60 | 61 | - Catalan 62 | - English (Default) 63 | - Romanian 64 | - Russian 65 | - Spanish 66 | - Turkish 67 | 68 | ## BACKWARD-INCOMPATIBLE CHANGES 69 | 70 | ### V3.0.0: REGENERATE PROJECT FROM SCRATCH 71 | 72 | - `icon_back.html` has been renamed `icon_prev.html`. 73 | - `header_extra.html` has been renamed `head_extra.html`. 74 | - HEAD tags have been moved to `head.html`. 75 | - All script lines have been moved to `footer_extra.html`. 76 | - `highlight.css` has been removed and a new partial template `style_highlight.html` has 77 | been created. 78 | 79 | ### V2.0.0: NEW MARKDOWN PARSERS 80 | 81 | If you prefer to use Goldmark instead of Blackfriday for Markdown parser, you need to 82 | set `xhtml: true` for activating `progressively` extension. Also, you need to set 83 | `unsafe: true` if you use Bootstrap HTML components in Markdown files. Please take a 84 | look at [this document](https://gohugo.io/getting-started/configuration-markup/) for 85 | more information. 86 | 87 | ### V2.0.0: BOOTSTRAP V5 MIGRATION 88 | 89 | If you have a Bootstrap v4 specific customization on your theme, please take a look at 90 | [this document](https://getbootstrap.com/docs/5.0/migration/) or keep your theme in the 91 | old version v1.5.0. 92 | 93 | ## HOW DARK MODE WORKS 94 | 95 | It automatically reads your system or browser color scheme and activates the dark or 96 | light mode. If you want to use dark mode in all cases, copy and move the `main.css` into 97 | your static folder keeping the path, remove light-mode specific colors. 98 | 99 | ## LICENSE 100 | 101 | Licensed under the MIT License. See the LICENSE.md file for more details. 102 | -------------------------------------------------------------------------------- /layouts/blog/single.html: -------------------------------------------------------------------------------- 1 | {{ define "main" }} 2 | {{ $isTocEnabled := or (.Params.toc) (and (.Site.Params.toc) (or (not (isset .Params "toc")) (.Params.toc))) }} 3 | 4 | {{ .Scratch.Set "isTocEnabled" $isTocEnabled }} 5 | 6 | 7 |
    8 |
    9 |
    10 |
    17 |

    18 | {{ .Title }} 19 |

    20 | 21 |
    22 | 26 | {{ .Date.Format "January 02, 2006" }} 27 | 28 | 29 | {{ if not .Params.noauthor }} 30 | {{ if .Params.author }} 31 | 32 | {{ .Params.author }} 33 | 34 | {{ end }} 35 | {{ end }} 36 | 37 | 38 | 39 | {{ i18n "reading_time" .ReadingTime }} 40 | 41 | 42 |
    43 | 52 |
    53 | 54 |
    55 |
      56 | {{ if isset .Params "hacker_news_id" }} 57 | {{ if ne .Params.hacker_news_id "" }} 58 |
    • 59 | 62 | Hacker News 63 | 64 |
    • 65 | {{ end }} 66 | {{ end }} 67 | {{ if isset .Params "lobsters_id" }} 68 | {{ if ne .Params.lobsters_id "" }} 69 |
    • 70 | 71 | Lobsters 72 | 73 |
    • 74 | {{ end }} 75 | {{ end }} 76 |
    77 |
    78 |
    79 | 80 |
    81 | {{ partial "content" . }} 82 |
    83 |
    84 | 85 | {{ if $isTocEnabled }} 86 |
    87 | {{ replace .TableOfContents "id=\"TableOfContents\"" "id=\"TableOfContents\" class=\"sticky-top\"" | safeHTML }} 88 |
    89 | {{ end }} 90 |
    91 | 92 |
    95 |
    102 | {{ if .Site.Params.posts_navigation }} 103 | 127 | {{ end }} 128 | 129 | {{ if .Site.DisqusShortname }} 130 |
    131 | {{ template "_internal/disqus.html" . }} 132 |
    133 | {{ end }} 134 |
    135 |
    136 |
    137 |
    138 | {{ end }} 139 | -------------------------------------------------------------------------------- /static/css/main.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --main-bg-color: #fff; 3 | --main-font-color: #313537; 4 | --main-link-color: #0011ff; 5 | --header-font-color: #333333; 6 | --header-link-color: #666666; 7 | --footer-link-color: #313537; 8 | --pagination-border-color: #dee2e6; 9 | 10 | --color-patreon: #dc3545; 11 | --color-ko-fi: #dc3545; 12 | --color-bmc: #dc3545; 13 | } 14 | 15 | .badge-info { 16 | background-color: #20c997; 17 | color: #000; 18 | } 19 | 20 | @media (prefers-color-scheme: dark) { 21 | :root { 22 | --main-bg-color: #1a1a1a; 23 | --main-font-color: #f8f9fa; 24 | --main-link-color: #ffc107; 25 | --header-font-color: #efefef; 26 | --header-link-color: #eaeaea; 27 | --footer-link-color: #aaa; 28 | --pagination-border-color: #222222; 29 | 30 | --color-patreon: #f96854; 31 | --color-ko-fi: #df5000; 32 | --color-bmc: #ff813f; 33 | } 34 | } 35 | 36 | /* Global styles */ 37 | body { 38 | background-color: var(--main-bg-color); 39 | color: var(--main-font-color); 40 | font-family: var(--font-content); 41 | } 42 | 43 | a, 44 | a:hover { 45 | color: var(--main-link-color); 46 | } 47 | 48 | h1, 49 | h2, 50 | h3, 51 | h4, 52 | h5, 53 | h6 { 54 | font-family: var(--font-title); 55 | } 56 | 57 | /* Partial: Colors */ 58 | .text-patreon { 59 | color: var(--color-patreon) !important; 60 | } 61 | 62 | .text-ko-fi { 63 | color: var(--color-ko-fi) !important; 64 | } 65 | 66 | .text-bmc { 67 | color: var(--color-bmc) !important; 68 | } 69 | 70 | .pagination .page-item .page-link { 71 | background-color: var(--main-bg-color); 72 | border-color: var(--pagination-border-color); 73 | color: var(--main-link-color); 74 | } 75 | 76 | .pagination .page-item .page-link:focus { 77 | box-shadow: 0 0 0 0.2rem var(--pagination-border-color); 78 | } 79 | 80 | .pagination .page-item.active .page-link { 81 | background-color: var(--main-link-color); 82 | border-color: var(--main-link-color); 83 | color: var(--main-bg-color); 84 | } 85 | 86 | .pagination .page-item.disabled .page-link { 87 | color: var(--main-font-color); 88 | } 89 | 90 | #TableOfContents ul { 91 | margin: 0; 92 | padding: 0; 93 | list-style-type: none; 94 | } 95 | 96 | #TableOfContents ul li { 97 | margin-top: 1rem; 98 | padding-left: 1.5rem; 99 | } 100 | 101 | #TableOfContents ul:first-child > li { 102 | padding-left: 0; 103 | } 104 | 105 | #TableOfContents ul:first-child > li:first-child { 106 | margin-top: 0; 107 | } 108 | 109 | #TableOfContents ul li a { 110 | padding: 1rem 0; 111 | font-size: 0.9rem; 112 | } 113 | 114 | /* Partial: Header */ 115 | .header a:hover { 116 | text-decoration: none; 117 | } 118 | 119 | .header .logo { 120 | margin-left: 1.5rem; 121 | max-height: 120px; 122 | } 123 | 124 | .header h1.name { 125 | color: var(--header-font-color); 126 | font-size: 2.3rem; 127 | letter-spacing: 0.1rem; 128 | } 129 | 130 | .header ul.nav li a { 131 | color: var(--header-link-color); 132 | font-family: var(--font-title); 133 | font-size: 14px; 134 | padding: 0 10px 0 0; 135 | display: inline; 136 | } 137 | 138 | .header ul.nav li a:hover { 139 | text-decoration: underline; 140 | } 141 | 142 | .header ul.nav li.nav-item::before { 143 | content: "·"; 144 | } 145 | 146 | .header ul.nav li.nav-item:first-child::before { 147 | content: none; 148 | } 149 | 150 | /* Partial: Content */ 151 | .content .page-heading { 152 | font-size: 1.5rem; 153 | font-weight: 700; 154 | font-family: var(--font-title); 155 | letter-spacing: -0.005rem; 156 | text-transform: "capitalize"; 157 | -moz-osx-font-smoothing: grayscale; 158 | -webkit-font-smoothing: antialiased; 159 | color: var(--header-font-color); 160 | margin-bottom: 16px; 161 | } 162 | 163 | .content .meta { 164 | font-size: 14px; 165 | color: var(--header-link-color); 166 | font-family: var(--font-title); 167 | } 168 | 169 | .content .meta a { 170 | text-decoration: none; 171 | } 172 | 173 | .content .middot:before { 174 | font-size: 6px; 175 | margin: 0 6px; 176 | vertical-align: middle; 177 | content: "•"; 178 | } 179 | 180 | .content .tags ul li:hover { 181 | opacity: 0.8; 182 | } 183 | 184 | .content .markdown { 185 | position: relative; 186 | font-size: 1.1em; 187 | line-height: 1.75em; 188 | } 189 | 190 | .content twitterwidget { 191 | margin: auto; 192 | } 193 | 194 | .content .markdown > h1, 195 | .content .markdown > h2, 196 | .content .markdown > h3, 197 | .content .markdown > h4, 198 | .content .markdown > h5, 199 | .content .markdown > h6 { 200 | margin-top: 3rem; 201 | margin-bottom: 0.75rem; 202 | } 203 | 204 | .content .meta, 205 | .content .markdown > h1, 206 | .content .markdown > h2, 207 | .content .markdown > h3, 208 | .content .markdown > h4, 209 | .content .markdown > h5, 210 | .content .markdown > h6, 211 | .content .markdown > p, 212 | .content .markdown > ul, 213 | .content .markdown > ol, 214 | .content .markdown > dl, 215 | .content .markdown > blockquote { 216 | margin-left: 1.5rem; /* equal to mx-md-4 in bootstrap */ 217 | margin-right: 1.5rem; 218 | } 219 | 220 | .content .markdown figure { 221 | background: var(--main-bg-color); 222 | } 223 | 224 | .content .markdown code, 225 | .content .markdown pre { 226 | font-family: var(--font-code); 227 | font-size: 0.98rem; 228 | } 229 | 230 | .content .markdown pre .hljs { 231 | /* enclosed by single backtick (`) */ 232 | padding: 1rem; 233 | border-radius: 2px; 234 | } 235 | 236 | .content .markdown pre { 237 | /* Hugo specific: consider using the 'highlight' shortcode */ 238 | display: block; 239 | margin-top: 1rem; 240 | margin-bottom: 2rem; 241 | line-height: 1.5em; 242 | white-space: pre; 243 | word-break: break-all; 244 | word-wrap: break-word; 245 | } 246 | 247 | .content .markdown pre code { 248 | padding: 0; 249 | } 250 | 251 | .content .markdown blockquote { 252 | padding: 0.5rem 1rem; 253 | margin-top: 0.8rem; 254 | margin-bottom: 0.8rem; 255 | font-size: 1.4rem; 256 | line-height: 2rem; 257 | border-left: 0.25rem solid var(--main-font-color); 258 | } 259 | 260 | .content .markdown blockquote p:last-child { 261 | margin-bottom: 0; 262 | } 263 | 264 | .content .see-more { 265 | font-size: 0.9em; 266 | color: var(--footer-link-color); 267 | } 268 | 269 | .content .groupby { 270 | list-style: none; 271 | margin-top: 1em; 272 | } 273 | 274 | .content .post-item { 275 | display: -webkit-flex; 276 | display: -moz-flex; 277 | display: -ms-flexbox; 278 | display: -ms-flex; 279 | display: flex; 280 | } 281 | 282 | .content .post-item .meta { 283 | opacity: 0.9; 284 | display: block; 285 | font-size: 14px; 286 | min-width: 100px; 287 | } 288 | 289 | .content .navigation .icon, 290 | .content .navigation .text { 291 | height: 24px; 292 | } 293 | 294 | .content .navigation .icon { 295 | display: inline-block; 296 | fill: currentColor; 297 | width: 16px; 298 | } 299 | 300 | .content .navigation .text { 301 | vertical-align: middle; 302 | } 303 | 304 | /* Partial: Footer */ 305 | .footer a { 306 | font-size: 14px; 307 | display: inline-block; 308 | text-decoration: none; 309 | } 310 | 311 | .footer a:first-child { 312 | margin-left: 0; 313 | } 314 | 315 | .footer a:last-child { 316 | margin-right: 0; 317 | } 318 | 319 | .footer a:hover { 320 | opacity: 0.8; 321 | } 322 | 323 | .footer a.icon { 324 | fill: currentColor; 325 | width: 16px; 326 | height: 16px; 327 | } 328 | 329 | .footer span.title { 330 | font-size: 14px; 331 | } 332 | 333 | /* Small devices (landscape phones, less than 768px) */ 334 | @media (max-width: 767.98px) { 335 | html { 336 | font-size: 0.8rem; 337 | } 338 | 339 | .content .meta, 340 | .content .markdown > h1, 341 | .content .markdown > h2, 342 | .content .markdown > h3, 343 | .content .markdown > h4, 344 | .content .markdown > h5, 345 | .content .markdown > h6, 346 | .content .markdown > p, 347 | .content .markdown > ul, 348 | .content .markdown > ol, 349 | .content .markdown > dl, 350 | .content .markdown > blockquote { 351 | margin-left: 0; 352 | margin-right: 0; 353 | } 354 | } 355 | --------------------------------------------------------------------------------