2021-07-18 15:54:00 +00:00
---
2021-07-18 17:02:53 +00:00
title: "Configuration"
2021-12-27 02:13:21 +00:00
tags:
- setup
2022-06-30 00:03:41 +00:00
weight: 0
2021-07-18 15:54:00 +00:00
---
2021-07-18 19:19:58 +00:00
2021-07-18 20:40:53 +00:00
## Configuration
Quartz is designed to be extremely configurable. You can find the bulk of the configuration scattered throughout the repository depending on how in-depth you'd like to get.
2022-07-01 18:03:52 +00:00
The majority of configuration can be found under `data/config.yaml` . An annotated example configuration is shown below.
2021-07-18 20:40:53 +00:00
2022-07-01 18:03:52 +00:00
```yaml {title="data/config.yaml"}
2022-06-29 23:57:36 +00:00
# The name to display in the footer
name: Jacky Zhao
2021-07-18 20:40:53 +00:00
2022-06-29 23:57:36 +00:00
# whether to globally show the table of contents on each page
# this can be turned off on a per-page basis by adding this to the
# front-matter of that note
enableToc: true
# whether to by-default open or close the table of contents on each page
openToc: false
# whether to display on-hover link preview cards
enableLinkPreview: true
2022-07-01 18:03:52 +00:00
# whether to render titles for code blocks
enableCodeBlockTitle: true
2022-07-03 18:42:35 +00:00
# whether to render copy buttons for code blocks
enableCodeBlockCopy: true
2022-07-31 00:29:26 +00:00
# whether to render callouts
enableCallouts: true
2022-06-29 23:57:36 +00:00
# whether to try to process Latex
enableLatex: true
# whether to enable single-page-app style rendering
2022-07-03 18:42:35 +00:00
# this prevents flashes of unstyled content and improves
# smoothness of Quartz. More info in issue #109 on GitHub
2022-06-29 23:57:36 +00:00
enableSPA: true
# whether to render a footer
enableFooter: true
# whether backlinks of pages should show the context in which
# they were mentioned
enableContextualBacklinks: true
# whether to show a section of recent notes on the home page
enableRecentNotes: false
2022-08-01 01:02:06 +00:00
# whether to display an 'edit' button next to the last edited field
2022-07-05 22:42:57 +00:00
# that links to github
2022-07-31 19:16:36 +00:00
enableGitHubEdit: true
2022-07-05 22:42:57 +00:00
GitHubLink: https://github.com/jackyzha0/quartz/tree/hugo/content
2022-11-27 18:53:52 +00:00
# whether to render mermaid diagrams
enableMermaid: true
2022-07-31 19:16:36 +00:00
# whether to use Operand to power semantic search
2022-08-01 01:02:06 +00:00
# IMPORTANT: replace this API key with your own if you plan on using
# Operand search!
2022-11-20 23:09:58 +00:00
search:
enableSemanticSearch: false
operandApiKey: "REPLACE-WITH-YOUR-OPERAND-API-KEY"
operandIndexId: "REPLACE-WITH-YOUR-OPERAND-INDEX-ID"
2022-07-31 19:16:36 +00:00
2022-06-29 23:57:36 +00:00
# page description used for SEO
description:
Host your second brain and digital garden for free. Quartz features extremely fast full-text search,
Wikilink support, backlinks, local graph, tags, and link previews.
# title of the home page (also for SEO)
page_title:
2022-08-29 18:23:04 +00:00
"🪴 Quartz 3.3"
2022-06-29 23:57:36 +00:00
# links to show in the footer
links:
2021-07-18 20:40:53 +00:00
- link_name: Twitter
link: https://twitter.com/_jzhao
- link_name: Github
link: https://github.com/jackyzha0
```
2022-07-01 18:03:52 +00:00
### Code Block Titles
To add code block titles with Quartz:
1. Ensure that code block titles are enabled in Quartz's configuration:
```yaml {title="data/config.yaml", linenos=false}
enableCodeBlockTitle: true
```
2. Add the `title` attribute to the desired [code block
fence](https://gohugo.io/content-management/syntax-highlighting/#highlighting-in-code-fences):
```markdown {linenos=false}
```yaml {title="data/config.yaml"}
enableCodeBlockTitle: true # example from step 1
```
```
**Note** that if `{title=<my-title>}` is included, and code block titles are not
2022-07-03 18:42:35 +00:00
enabled, no errors will occur, and the title attribute will be ignored.
2022-07-01 18:03:52 +00:00
2022-06-27 20:05:35 +00:00
### HTML Favicons
2022-07-03 18:42:35 +00:00
If you would like to customize the favicons of your Quartz-based website, you
2022-06-27 23:15:33 +00:00
can add them to the `data/config.yaml` file. The **default** without any set
`favicon` key is:
2022-06-27 20:05:35 +00:00
2022-07-01 18:03:52 +00:00
```html {title="layouts/partials/head.html", linenostart=15}
2022-06-27 20:05:35 +00:00
< link rel = "shortcut icon" href = "icon.png" type = "image/png" >
```
2022-06-27 23:15:33 +00:00
The default can be overridden by defining a value to the `favicon` key in your
2022-07-03 18:42:35 +00:00
`data/config.yaml` file. For example, here is a `List[Dictionary]` example format, which is
2022-06-27 23:15:33 +00:00
equivalent to the default:
2022-06-27 20:05:35 +00:00
2022-07-01 18:03:52 +00:00
```yaml {title="data/config.yaml", linenos=false}
2022-06-27 20:05:35 +00:00
favicon:
- { rel: "shortcut icon", href: "icon.png", type: "image/png" }
2022-06-27 23:15:33 +00:00
# - { ... } # Repeat for each additional favicon you want to add
2022-06-27 20:05:35 +00:00
```
2022-06-29 23:57:36 +00:00
In this format, the keys are identical to their HTML representations.
2022-06-27 20:05:35 +00:00
2022-06-27 23:15:33 +00:00
If you plan to add multiple favicons generated by a website (see list below), it
may be easier to define it as HTML. Here is an example which appends the
2022-07-03 18:42:35 +00:00
**Apple touch icon** to Quartz's default favicon:
2022-06-27 20:05:35 +00:00
2022-07-01 18:03:52 +00:00
```yaml {title="data/config.yaml", linenos=false}
2022-06-27 20:05:35 +00:00
favicon: |
< link rel = "shortcut icon" href = "icon.png" type = "image/png" >
2022-06-27 23:15:33 +00:00
< link rel = "apple-touch-icon" sizes = "180x180" href = "/apple-touch-icon.png" >
2022-06-27 20:05:35 +00:00
```
2022-06-27 23:15:33 +00:00
This second favicon will now be used as a web page icon when someone adds your
webpage to the home screen of their Apple device. If you are interested in more
2022-07-03 18:42:35 +00:00
information about the current and past standards of favicons, you can read
2022-06-27 23:15:33 +00:00
[this article ](https://www.emergeinteractive.com/insights/detail/the-essentials-of-favicons/ ).
**Note** that all generated favicon paths, defined by the `href`
attribute, are relative to the `static/` directory.
2022-06-27 20:05:35 +00:00
2021-07-18 20:40:53 +00:00
### Graph View
To customize the Interactive Graph view, you can poke around `data/graphConfig.yaml` .
2022-07-01 18:03:52 +00:00
```yaml {title="data/graphConfig.yaml"}
2022-06-29 23:57:36 +00:00
# if true, a Global Graph will be shown on home page with full width, no backlink.
# A different set of Local Graphs will be shown on sub pages.
# if false, Local Graph will be default on every page as usual
enableGlobalGraph: false
### Local Graph ###
localGraph:
2022-07-03 18:42:35 +00:00
# whether automatically generate a legend
2022-06-29 23:57:36 +00:00
enableLegend: false
# whether to allow dragging nodes in the graph
enableDrag: true
# whether to allow zooming and panning the graph
enableZoom: true
# how many neighbours of the current node to show (-1 is all nodes)
depth: 1
# initial zoom factor of the graph
scale: 1.2
# how strongly nodes should repel each other
repelForce: 2
2022-07-01 18:03:52 +00:00
# how strongly should nodes be attracted to the center of gravity
2022-06-29 23:57:36 +00:00
centerForce: 1
2022-07-01 18:03:52 +00:00
# what the default link length should be
2022-06-29 23:57:36 +00:00
linkDistance: 1
# how big the node labels should be
fontSize: 0.6
# scale at which to start fading the labes on nodes
opacityScale: 3
### Global Graph ###
globalGraph:
# same settings as above
### For all graphs ###
# colour specific nodes path off of their path
paths:
2021-07-18 20:40:53 +00:00
- /moc: "#4388cc"
```
2021-07-18 19:19:58 +00:00
## Styling
2022-04-01 21:13:49 +00:00
Want to go even more in-depth? You can add custom CSS styling and change existing colours through editing `assets/styles/custom.scss` . If you'd like to target specific parts of the site, you can add ids and classes to the HTML partials in `/layouts/partials` .
2021-07-18 20:40:53 +00:00
### Partials
2022-07-03 18:42:35 +00:00
Partials are what dictate what gets rendered to the page. Want to change how pages are styled and structured? You can edit the appropriate layout in `/layouts` .
2021-07-18 20:40:53 +00:00
For example, the structure of the home page can be edited through `/layouts/index.html` . To customize the footer, you can edit `/layouts/partials/footer.html`
More info about partials on [Hugo's website. ](https://gohugo.io/templates/partials/ )
2022-02-17 15:49:41 +00:00
Still having problems? Checkout our [FAQ and Troubleshooting guide ](notes/troubleshooting.md ).
2022-06-29 23:57:36 +00:00
## Language Support
2022-04-03 00:38:39 +00:00
[CJK + Latex Support (测试) ](notes/CJK%20+%20Latex%20Support%20(测试 ).md) comes out of the box with Quartz.
2022-02-17 15:49:41 +00:00
Want to support languages that read from right-to-left (like Arabic)? Hugo (and by proxy, Quartz) supports this natively.
Follow the steps [Hugo provides here ](https://gohugo.io/content-management/multilingual/#configure-languages ) and modify your `config.toml`
For example:
```toml
defaultContentLanguage = 'ar'
[languages]
[languages.ar]
languagedirection = 'rtl'
title = 'مدونتي'
weight = 1
2022-07-01 18:03:52 +00:00
```