Amnix is a responsive and configurable Hugo theme.
Features:
- Configurable home, list and single layouts
- Featured image
- Configurable main page content sections [
mainSections
] - Widgets
- MathJax
First of all, you will need to install Hugo and create a new site. Also, you have git installed on your machine and you are familiar with basic git usage. After that, you ready to install Amnix.
There are three different ways you can install Amnix. Choose one of the installation methods listed below and follow the instructions.
For more information read the "Install and Use Themes".
In your Hugo site directory, run:
git clone https://github.com/vimux/amnix themes/amnix
Next, edit your config.toml
configuration file and add parameter:
theme = "amnix"
In your Hugo site directory, run:
git submodule add https://github.com/vimux/amnix themes/amnix
Next, edit your config.toml
configuration file and add parameter:
theme = "amnix"
You can read the GitHub documentation for submodules or those found on Git's website for more information
Download ZIP and extract to the themes/amnix
Next, edit your config.toml
configuration file and add parameter:
theme = "amnix"
You can run your site in Hugo server mode:
hugo server
Now you can go to localhost:1313 webpage and the Amnix theme should be visible.
After you make sure that Amnix works, you may start customizing the theme if it's needed.
baseurl = "/"
title = "Amnix"
languageCode = "en-us"
paginate = "10" # Number of posts per page
theme = "amnix"
disqusShortname = "" # DEPRECATED! Use .Services.Disqus.Shortname
googleAnalytics = "" # DEPRECATED! Use .Services.googleAnalytics.ID
[services.disqus]
shortname = "" # Enable Disqus by entering your Disqus shortname
[services.googleAnalytics]
ID = "" # Enable Google Analytics by entering your tracking ID
[Params]
logoText = "Amnix" # Logo text, otherwise will use .Site.Title
description = "Responsive and configurable Hugo theme" # Site description. Used in meta description
copyright = "Amnix" # Footer copyright holder, otherwise will use .Site.Title
copyrightStartYear = 2019 # Footer copyright start year
opengraph = true # Enable OpenGraph
schema = true # Enable Schema
twitterCards = true # Enable Twitter Cards
columns = 2 # Set the number of content cards columns. Possible values: 1, 2, 3
mainSections = ["post"] # Set main page sections
dateFormat = "January 02, 2006" # Change the format of dates
customCSS = ["css/custom.css"] # Include custom CSS files
customJS = ["js/custom.js"] # Include custom JS files
comments = true # Enable comments for all site pages
related = true # Enable Related Content (See https://gohugo.io/content-management/related/)
mathjax = true # Enable MathJax for all site pages
mathjaxPath = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js" # Specify MathJax path. Optional
mathjaxConfig = "TeX-AMS-MML_HTMLorMML" # Specify MathJax config. Optional
[Params.Entry]
meta = ["date"] # Enable meta fields in given order
share = ["facebook", "twitter", "reddit", "telegram", "linkedin", "vk", "pocket"] # Enable share buttons
[Params.Breadcrumb]
enable = true # Enable breadcrumb globally
homeText = "Amnix" # Home node text
[Params.Featured]
previewOnly = false # Show only preview featured image
[Params.Sidebar]
widgets = ["recent", "categories", "tags"] # Enable sidebar widgets in given order
position = "right" # Change sidebar position for all site pages: "right", "left" or false
positionHome = "right" # Change sidebar position for home page
positionList = "right" # Change sidebar position for list pages
positionSingle = "right" # Change sidebar position for single pages
[Params.Widgets]
recentNum = 5 # Set number of articles in the "Recent articles" widget
recentDate = true # Show datetime in the "Recent Posts" widget
tagsCounter = true # Enable counter for each tag in the "Tags" widget
[Params.Social] # Site Social block
email = "example@example.com"
facebook = "username"
twitter = "username"
telegram = "username"
instagram = "username"
pinterest = "username"
vk = "username"
linkedin = "username"
github = "username"
gitlab = "username"
stackoverflow = "numberid"
mastodon = "https://some.instance/@username"
medium = "username"
[Params.Manifest] # Web App Manifest config
name = "Amnix"
shortName = "Amnix"
display = "standalone"
startUrl = "/"
backgroundColor = "#33333a"
themeColor = "#5b5b67"
description = "Responsive and configurable Hugo theme"
orientation = "portrait"
scope = "/"
[outputFormats]
[outputFormats.MANIFEST] # Add custom MANIFEST output format
mediaType = "application/json"
baseName = "manifest"
isPlainText = true
notAlternative = true
[outputs]
home = ["HTML", "RSS", "MANIFEST"] # Include MANIFEST format to home page
For more information about all available configuration settings read Configure Hugo
# Common-Defined params
title: "Example article title"
date: 2017-08-21
description: "Example article description"
categories:
- "Category 1"
- "Category 2"
tags:
- "Test"
- "Another test"
# Theme-Defined params
breadcrumb: true # Enable/disable Breadcrumb navigation for specific page
comments: true # Enable/disable Disqus for specific page
mathjax: true # Enable/disable MathJax for specific page
related: true # Enable/disable Related content for specific page
featured:
url: image.jpg # relative path of the image
alt: A scale model of the Eiffel tower # alternate text for the image
caption: Eiffel tower model # image caption
credit: Unknown author # image credit
previewOnly: false # show only preview image (true/false)
meta:
- date
share:
- facebook
- twitter
sidebar:
position: left # Change sidebar position per page: "right", "left" or false
widgets:
- recent
- tags
For more information about front matter variables read Hugo Front Matter
Amnix ships with configurable column layout for home & list pages. To create multiple column layout change
Params.columns
key to preferable value (from 1 to 3):
[Params]
columns = 2
You can also change this option for specific list page in the front matter:
columns: 2
Please note that the layout will display multiple columns only if it's possible by screen size.
The sidebar is an area to the side of a page that acts as a "container" for widgets. Amnix comes with a configurable sidebar that can be customized using parameters.
To create a sidebar block with widgets, use the widgets
config key with a list of widget names as value under
[Params.sidebar]
section of the config file:
[Params.sidebar]
widgets = ["recent", "categories", "tags"]
Widgets can be also configured per page through front matter:
sidebar:
widgets:
- recent
- tags
Alternatively, you can use short notation in the front matter, if you don't need to change other properties of the sidebar:
sidebar:
- recent
- tags
Please note that the sidebar is only displayed if there is at least one widget added to the sidebar.
Sidebar position for all pages can be specified in the position
param under [Params.sidebar]
section of the config
file. By default, position
key equals "right"
value, which means that the default sidebar position is on the right
side, if this not specified in the site config. Position can be changed to display the sidebar on the left if required:
[Params.sidebar]
widgets = ["recent", "categories", "tags"]
position = "left"
Sidebar position can be specified for home, list and single pages individually. Use the keys positionHome
,
positionList
and positionSingle
with values "left"
, "right"
or false
under [Params.sidebar]
section of the
configuration file:
[Params.sidebar]
positionHome = false
positionList = "left"
positionSingle = "right"
Sidebar position can be configured per page, by setting the sidebar.position
parameter with one of the same values in
the page's front matter:
sidebar:
position: left
If you want to include custom CSS files, you need to assign an array of references in site config file (config.toml
by
default) like following:
[Params]
customCSS = ["css/custom.css"]
Of course, you can reference as many CSS files as you want. Their paths need to be relative to the static
folder of
your Hugo site:
[Params]
customCSS = ["css/custom.css", "css/another.css"]
All these CSS files will be added through the head.html
partial after the built-in CSS file.
You can add custom JavaScript files by assigning an array of references in site config file (config.toml
by default)
like following:
[Params]
customJS = ["js/custom.js"]
And of course, just like with custom CSS, you can reference as many JS files as you want. Their paths need to be
relative to the static
folder of your Hugo site:
[Params]
customJS = ["js/custom.js", "js/another.js"]
All custom JS files will be added before closing body tag of a baseof.html
file.
There are two main different ways to add a featured image for a page.
Option 1. Put featured.*
or thumbnail.*
image file in the
page bundle.
Option 2. Put any image in the page bundle & specify featured
param in the page's front matter.
You may put any image in the page bundle and specify featured
param in the page's front matter:
featured: image.jpg
Or you can add some additional params like alt
, caption
, credit
and previewOnly
:
featured:
url: image.jpg
alt: A scale model of the Eiffel tower standing on a map
caption: Eiffel tower model
credit: Unknown author
previewOnly: false
Note: caption
and credit
appear only on single pages, not summaries.
Breadcrumb navigation is a hierarchical navigation menu presented as a trail of links.
For enabling breadcrumb partial globally (for all single and list pages), use enable
param under the
[Params.Breadcrumb]
section of your config file:
[Params.Breadcrumb]
enable = true
The global .Site.Params.Breadcrumb.enable
param can be overridden for specific page with breadcrumb
front matter
param:
breadcrumb: false
Meta fields are page meta information such as publish date, last modification date, reading time, categories, and even more. Amnix comes with only one meta field to show entry date/time, but you can always create your custom meta field.
You can enable meta fields globally or per page.
To activate meta fields globally you should use the meta
config key with a list of meta field names as a value under
[Params.Entry]
section of the config file:
[Params.Entry]
meta = ["date"]
Or meta fields can be activated per page through front matter:
meta:
- date
Amnix supports main and side menus. The main
menu is fully responsive and displayed in the site header. The side
secondary menu is displayed in a sidebar widget. To add a page to a menu, add a menu: <menu>
parameter to the page's
front matter:
menu: main # Add page to a main menu
You can also add a page to multiple menus by providing a list:
menu: ["main", "side"] # Add page to main and side menus
Note: Don't forget to enable the sidemenu
widget in the widgets
configuration param if you want to use the
side
menu.
Note: Please keep in mind that Amnix menus don't support nested items i.e. submenus.
For more information, see Menus in the Hugo documentation.
With Amnix, you have the option to display links to your social media profiles in the footer. To display them, set
up [Params.Social]
parameters in your site config file.
Available social services: Email, Facebook, Twitter, Telegram, Instagram, Pinterest, VK, LinkedIn, GitHub, GitLab, Stack Overflow, Mastodon, Medium
Web App Manifest is a simple json file with basic site info like name, description, icons, etc. This file tells the browser about your web application and how it should behave when "installed" (as PWA) on the users mobile device or desktop.
To activate Web App Manifest, define MANIFEST
as custom output format and include this for home
Kind attribute in
your site config file. Here's how to make it.
First of all, you should define MANIFEST
custom output format [config.toml
]:
[outputFormats]
[outputFormats.MANIFEST]
mediaType = "application/json"
baseName = "manifest"
isPlainText = true
notAlternative = true
Then, include MANIFEST
output format for home
Kind attribute [config.toml
]:
[outputs]
home = ["HTML", "RSS", "MANIFEST"]
After that, Web App Manifest file will be generated. Still, it's better to specify [Params.Manifest]
params to make
sure that everything works as expected.
Web App Manifest Property | .Site.Params.Manifest Key |
Default Value | Type |
---|---|---|---|
name | name | .Site.Title |
required |
short_name | shortName | .Site.Title |
required |
display | display | standalone |
required |
start_url | startUrl | / |
required |
background_color | backgroundColor | #33333a |
recommended |
theme_color | themeColor | #5b5b67 |
recommended |
description | description | recommended | |
orientation | orientation | recommended | |
scope | scope | recommended | |
icons* | required |
* You can't customize manifest icons through config params, only by replacing icon files.
To verify that your manifest file is configured properly and works well, run Hugo server and open Chrome DevTools (Press F12 in Chrome) → Application → Manifest
See CONTRIBUTING.md
Amnix is licensed under the MIT License.
- Social media icons based on SuperTinyIcons (MIT License)
- CSS Reset based on Bootstrap Reboot (MIT License)