Change themes
This commit is contained in:
parent
265ef7e8f8
commit
33d37382e4
|
@ -1,3 +1,6 @@
|
|||
[submodule "themes/academic"]
|
||||
path = themes/academic
|
||||
url = https://github.com/gcushen/hugo-academic.git
|
||||
[submodule "themes/mainroad"]
|
||||
path = themes/mainroad
|
||||
url = https://github.com/vimux/mainroad
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
baseurl = "/"
|
||||
title = "Rocket Nine Labs"
|
||||
languageCode = "en-us"
|
||||
paginate = "10" # Number of posts per page
|
||||
theme = "mainroad"
|
||||
disqusShortname = "" # Enable Disqus comments by entering your Disqus shortname
|
||||
googleAnalytics = "" # Enable Google Analytics by entering your tracking id
|
||||
|
||||
[Author] # Used in authorbox
|
||||
name = "Trevor Slocum"
|
||||
bio = "Trevor is a software developer and system administrator."
|
||||
avatar = "http://www.gravatar.com/avatar/5e7cc07a69488c7110d8a4f6df94c1b7?s=200"
|
||||
|
||||
[Params]
|
||||
subtitle = "" # Subtitle of your site. Used in site header
|
||||
description = "Personal blog of Trevor Slocum, open source developer." # Site description. Used in meta description
|
||||
copyright = "Trevor Slocum" # Footer copyright holder, otherwise will use site title
|
||||
opengraph = true # Enable OpenGraph if true
|
||||
twitter_cards = false # Enable Twitter Cards if true
|
||||
readmore = false # Show "Read more" button in list if true
|
||||
authorbox = true # Show authorbox at bottom of pages if true
|
||||
toc = true # Enable Table of Contents
|
||||
post_navigation = true # Show post navigation at bottom of pages if true
|
||||
post_meta = ["date", "categories", "translations"] # Order of post meta information
|
||||
mainSections = ["post", "blog", "news"] # Specify section pages to show on home page and the "Recent articles" widget
|
||||
dateformat = "2006-01-02" # Change the format of dates
|
||||
mathjax = false # Enable MathJax
|
||||
mathjaxPath = "https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.6/MathJax.js" # Specify MathJax path
|
||||
mathjaxConfig = "TeX-AMS-MML_HTMLorMML" # Specify MathJax config
|
||||
highlightColor = "#e22d30" # Override highlight color
|
||||
customCSS = ["css/custom.css"] # Include custom CSS files
|
||||
customJS = ["js/custom.js"] # Include custom JS files
|
||||
|
||||
[Params.sidebar]
|
||||
home = "right" # Configure layout for home page
|
||||
list = "left" # Configure layout for list pages
|
||||
single = false # Configure layout for single pages
|
||||
# Enable widgets in given order
|
||||
widgets = ["social", "recent"]
|
||||
|
||||
[Params.widgets]
|
||||
recent_num = 5 # Set the number of articles in the "Recent articles" widget
|
||||
tags_counter = false # Enable counter for each tag in "Tags" widget
|
||||
|
||||
[Params.widgets.social]
|
||||
# # Enable parts of social widget
|
||||
# facebook = "username"
|
||||
# twitter = "username"
|
||||
# instagram = "username"
|
||||
# linkedin = "username"
|
||||
# telegram = "username"
|
||||
# github = "tslocum"
|
||||
# gitlab = "tslocum"
|
||||
# bitbucket = "username"
|
||||
email = "trevor@rocketnine.space"
|
||||
|
||||
# Custom social links
|
||||
[[Params.widgets.social.custom]]
|
||||
title = "Public inbox"
|
||||
url = "https://lists.sr.ht/~tslocum/public-inbox"
|
||||
|
||||
[[Params.widgets.social.custom]]
|
||||
title = "Sourcehut"
|
||||
url = "https://git.sr.ht/~tslocum"
|
||||
|
||||
[[Params.widgets.social.custom]]
|
||||
title = "GitLab"
|
||||
url = "https://gitlab.com/tslocum"
|
||||
|
||||
[[Params.widgets.social.custom]]
|
||||
title = "GitHub"
|
||||
url = "https://github.com/tslocum"
|
||||
|
||||
[[menu.main]]
|
||||
name = "Home"
|
||||
weight = -110
|
||||
identifier = "Home"
|
||||
url = "/"
|
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
title: Donate
|
||||
authorbox: false
|
||||
sidebar: true
|
||||
menu: main
|
||||
toc: false
|
||||
weight: 20
|
||||
paginate: 0
|
||||
---
|
||||
|
||||
Please consider donating via [LiberaPay](https://liberapay.com/rocketnine.space).
|
|
@ -1,14 +0,0 @@
|
|||
+++
|
||||
# About widget.
|
||||
widget = "about" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = true # Activate this widget? true/false
|
||||
weight = 20 # Order that this section will appear in.
|
||||
|
||||
title = "Biography"
|
||||
|
||||
# Choose the user profile to display
|
||||
# This should be the username of a profile in your `content/authors/` folder.
|
||||
# See https://sourcethemes.com/academic/docs/get-started/#introduce-yourself
|
||||
author = "admin"
|
||||
+++
|
|
@ -1,51 +0,0 @@
|
|||
+++
|
||||
# Accomplishments widget.
|
||||
widget = "accomplishments" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 50 # Order that this section will appear.
|
||||
|
||||
title = "Accomplish­ments"
|
||||
subtitle = ""
|
||||
|
||||
# Date format
|
||||
# Refer to https://sourcethemes.com/academic/docs/customization/#date-format
|
||||
date_format = "Jan 2006"
|
||||
|
||||
# Accomplishments.
|
||||
# Add/remove as many `[[item]]` blocks below as you like.
|
||||
# `title`, `organization` and `date_start` are the required parameters.
|
||||
# Leave other parameters empty if not required.
|
||||
# Begin/end multi-line descriptions with 3 quotes `"""`.
|
||||
|
||||
[[item]]
|
||||
organization = "Coursera"
|
||||
organization_url = "https://www.coursera.org"
|
||||
title = "Neural Networks and Deep Learning"
|
||||
url = ""
|
||||
certificate_url = "https://www.coursera.org"
|
||||
date_start = "2018-10-01"
|
||||
date_end = ""
|
||||
description = ""
|
||||
|
||||
[[item]]
|
||||
organization = "edX"
|
||||
organization_url = "https://www.edx.org"
|
||||
title = "Blockchain Fundamentals"
|
||||
url = "https://www.edx.org/professional-certificate/uc-berkeleyx-blockchain-fundamentals"
|
||||
certificate_url = "https://www.edx.org"
|
||||
date_start = "2018-03-01"
|
||||
date_end = ""
|
||||
description = "Formulated informed blockchain models, hypotheses, and use cases."
|
||||
|
||||
[[item]]
|
||||
organization = "DataCamp"
|
||||
organization_url = "https://www.datacamp.com"
|
||||
title = "Object-Oriented Programming in R: S3 and R6 Course"
|
||||
url = ""
|
||||
certificate_url = "https://www.datacamp.com"
|
||||
date_start = "2017-07-01"
|
||||
date_end = "2017-12-21"
|
||||
description = ""
|
||||
|
||||
+++
|
|
@ -1,20 +0,0 @@
|
|||
+++
|
||||
# Contact widget.
|
||||
widget = "contact" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = true # Activate this widget? true/false
|
||||
weight = 130 # Order that this section will appear.
|
||||
|
||||
title = "Contact"
|
||||
subtitle = ""
|
||||
|
||||
# Automatically link email and phone?
|
||||
autolink = true
|
||||
|
||||
# Email form provider
|
||||
# 0: Disable email form
|
||||
# 1: Netlify (requires that the site is hosted by Netlify)
|
||||
# 2: formspree.io
|
||||
email_form = 2
|
||||
+++
|
||||
|
|
@ -1,44 +0,0 @@
|
|||
+++
|
||||
# Experience widget.
|
||||
widget = "experience" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 40 # Order that this section will appear.
|
||||
|
||||
title = "Experience"
|
||||
subtitle = ""
|
||||
|
||||
# Date format for experience
|
||||
# Refer to https://sourcethemes.com/academic/docs/customization/#date-format
|
||||
date_format = "Jan 2006"
|
||||
|
||||
# Experiences.
|
||||
# Add/remove as many `[[experience]]` blocks below as you like.
|
||||
# Required fields are `title`, `company`, and `date_start`.
|
||||
# Leave `date_end` empty if it's your current employer.
|
||||
# Begin/end multi-line descriptions with 3 quotes `"""`.
|
||||
[[experience]]
|
||||
title = "CEO"
|
||||
company = "GenCoin"
|
||||
company_url = ""
|
||||
location = "California"
|
||||
date_start = "2017-01-01"
|
||||
date_end = ""
|
||||
description = """
|
||||
Responsibilities include:
|
||||
|
||||
* Analysing
|
||||
* Modelling
|
||||
* Deploying
|
||||
"""
|
||||
|
||||
[[experience]]
|
||||
title = "Professor"
|
||||
company = "University X"
|
||||
company_url = ""
|
||||
location = "California"
|
||||
date_start = "2016-01-01"
|
||||
date_end = "2016-12-31"
|
||||
description = """Taught electronic engineering and researched semiconductor physics."""
|
||||
|
||||
+++
|
|
@ -1,64 +0,0 @@
|
|||
+++
|
||||
# A Featured Publications section created with the Featured Content widget.
|
||||
# This section displays publications from `content/publication/` which have
|
||||
# `featured = true` in their front matter.
|
||||
|
||||
widget = "featured" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 80 # Order that this section will appear.
|
||||
|
||||
title = "Featured Publications"
|
||||
subtitle = ""
|
||||
|
||||
[content]
|
||||
# Page type to display. E.g. post, talk, or publication.
|
||||
page_type = "publication"
|
||||
|
||||
# Choose how much pages you would like to display (0 = all pages)
|
||||
count = 0
|
||||
|
||||
# Page order. Descending (desc) or ascending (asc) date.
|
||||
order = "desc"
|
||||
|
||||
# Filter posts by a taxonomy term.
|
||||
[content.filters]
|
||||
tag = ""
|
||||
category = ""
|
||||
publication_type = ""
|
||||
|
||||
[design]
|
||||
# Toggle between the various page layout types.
|
||||
# 1 = List
|
||||
# 2 = Compact
|
||||
# 3 = Card
|
||||
# 4 = Citation (publication only)
|
||||
view = 3
|
||||
|
||||
[design.background]
|
||||
# Apply a background color, gradient, or image.
|
||||
# Uncomment (by removing `#`) an option to apply it.
|
||||
# Choose a light or dark text color by setting `text_color_light`.
|
||||
# Any HTML color name or Hex value is valid.
|
||||
|
||||
# Background color.
|
||||
# color = "navy"
|
||||
|
||||
# Background gradient.
|
||||
# gradient_start = "DeepSkyBlue"
|
||||
# gradient_end = "SkyBlue"
|
||||
|
||||
# Background image.
|
||||
# image = "background.jpg" # Name of image in `static/img/`.
|
||||
# image_darken = 0.6 # Darken the image? Range 0-1 where 0 is transparent and 1 is opaque.
|
||||
|
||||
# Text color (true=light or false=dark).
|
||||
# text_color_light = true
|
||||
|
||||
[advanced]
|
||||
# Custom CSS.
|
||||
css_style = ""
|
||||
|
||||
# CSS class.
|
||||
css_class = ""
|
||||
+++
|
|
@ -1,55 +0,0 @@
|
|||
+++
|
||||
# Hero widget.
|
||||
widget = "hero" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = false # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 10 # Order that this section will appear.
|
||||
|
||||
title = "Academic"
|
||||
|
||||
# Hero image (optional). Enter filename of an image in the `static/img/` folder.
|
||||
hero_media = "hero-academic.png"
|
||||
|
||||
[design.background]
|
||||
# Apply a background color, gradient, or image.
|
||||
# Uncomment (by removing `#`) an option to apply it.
|
||||
# Choose a light or dark text color by setting `text_color_light`.
|
||||
# Any HTML color name or Hex value is valid.
|
||||
|
||||
# Background color.
|
||||
# color = "navy"
|
||||
|
||||
# Background gradient.
|
||||
gradient_start = "#4bb4e3"
|
||||
gradient_end = "#2b94c3"
|
||||
|
||||
# Background image.
|
||||
# image = "" # Name of image in `static/img/`.
|
||||
# image_darken = 0.6 # Darken the image? Range 0-1 where 0 is transparent and 1 is opaque.
|
||||
|
||||
# Text color (true=light or false=dark).
|
||||
text_color_light = true
|
||||
|
||||
# Call to action links (optional).
|
||||
# Display link(s) by specifying a URL and label below. Icon is optional for `[cta]`.
|
||||
# Remove a link/note by deleting a cta/note block.
|
||||
[cta]
|
||||
url = "https://sourcethemes.com/academic/docs/install/"
|
||||
label = "Get Started"
|
||||
icon_pack = "fas"
|
||||
icon = "download"
|
||||
|
||||
[cta_alt]
|
||||
url = "https://sourcethemes.com/academic/"
|
||||
label = "View Documentation"
|
||||
|
||||
# Note. An optional note to show underneath the links.
|
||||
[cta_note]
|
||||
label = '<a class="js-github-release" href="https://sourcethemes.com/academic/updates" data-repo="gcushen/hugo-academic">Latest release<!-- V --></a>'
|
||||
+++
|
||||
|
||||
**The Best Way to Create the Website You Want from Markdown (or Jupyter/RStudio)**
|
||||
|
||||
Build **Anything** with Widgets
|
||||
|
||||
<span style="text-shadow: none;"><a class="github-button" href="https://github.com/gcushen/hugo-academic" data-icon="octicon-star" data-size="large" data-show-count="true" aria-label="Star this on GitHub">Star</a><script async defer src="https://buttons.github.io/buttons.js"></script></span>
|
|
@ -1,5 +0,0 @@
|
|||
+++
|
||||
# Homepage
|
||||
type = "widget_page"
|
||||
headless = true # Homepage is headless, other widget pages are not.
|
||||
+++
|
|
@ -1,19 +0,0 @@
|
|||
+++
|
||||
# People widget.
|
||||
widget = "people" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 68 # Order that this section will appear.
|
||||
|
||||
title = "People"
|
||||
subtitle = ""
|
||||
|
||||
# List user groups to display.
|
||||
# Edit each user's `user_groups` to add them to one or more of these groups.
|
||||
user_groups = ["Principal Investigators",
|
||||
"Researchers",
|
||||
"Grad Students",
|
||||
"Administration",
|
||||
"Visitors",
|
||||
"Alumni"]
|
||||
+++
|
|
@ -1,67 +0,0 @@
|
|||
+++
|
||||
# A Recent Blog Posts section created with the Pages widget.
|
||||
# This section displays recent blog posts from `content/post/`.
|
||||
|
||||
widget = "pages" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = true # Activate this widget? true/false
|
||||
weight = 60 # Order that this section will appear.
|
||||
|
||||
title = "Recent Posts"
|
||||
subtitle = ""
|
||||
|
||||
[content]
|
||||
# Page type to display. E.g. post, talk, or publication.
|
||||
page_type = "post"
|
||||
|
||||
# Choose how much pages you would like to display (0 = all pages)
|
||||
count = 5
|
||||
|
||||
# Choose how many pages you would like to offset by
|
||||
offset = 0
|
||||
|
||||
# Page order. Descending (desc) or ascending (asc) date.
|
||||
order = "desc"
|
||||
|
||||
# Filter posts by a taxonomy term.
|
||||
[content.filters]
|
||||
tag = ""
|
||||
category = ""
|
||||
publication_type = ""
|
||||
exclude_featured = false
|
||||
|
||||
[design]
|
||||
# Toggle between the various page layout types.
|
||||
# 1 = List
|
||||
# 2 = Compact
|
||||
# 3 = Card
|
||||
# 4 = Citation (publication only)
|
||||
view = 2
|
||||
|
||||
[design.background]
|
||||
# Apply a background color, gradient, or image.
|
||||
# Uncomment (by removing `#`) an option to apply it.
|
||||
# Choose a light or dark text color by setting `text_color_light`.
|
||||
# Any HTML color name or Hex value is valid.
|
||||
|
||||
# Background color.
|
||||
# color = "navy"
|
||||
|
||||
# Background gradient.
|
||||
# gradient_start = "DeepSkyBlue"
|
||||
# gradient_end = "SkyBlue"
|
||||
|
||||
# Background image.
|
||||
# image = "background.jpg" # Name of image in `static/img/`.
|
||||
# image_darken = 0.6 # Darken the image? Range 0-1 where 0 is transparent and 1 is opaque.
|
||||
|
||||
# Text color (true=light or false=dark).
|
||||
# text_color_light = true
|
||||
|
||||
[advanced]
|
||||
# Custom CSS.
|
||||
css_style = ""
|
||||
|
||||
# CSS class.
|
||||
css_class = ""
|
||||
+++
|
|
@ -1,77 +0,0 @@
|
|||
+++
|
||||
# A Projects section created with the Portfolio widget.
|
||||
widget = "portfolio" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = true # Activate this widget? true/false
|
||||
weight = 65 # Order that this section will appear.
|
||||
|
||||
title = "Projects"
|
||||
subtitle = ""
|
||||
|
||||
[content]
|
||||
# Page type to display. E.g. project.
|
||||
page_type = "project"
|
||||
|
||||
# Filter toolbar (optional).
|
||||
# Add or remove as many filters (`[[content.filter_button]]` instances) as you like.
|
||||
# To show all items, set `tag` to "*".
|
||||
# To filter by a specific tag, set `tag` to an existing tag name.
|
||||
# To remove toolbar, delete/comment all instances of `[[content.filter_button]]` below.
|
||||
|
||||
# Default filter index (e.g. 0 corresponds to the first `[[filter_button]]` instance below).
|
||||
filter_default = 0
|
||||
|
||||
# [[content.filter_button]]
|
||||
# name = "All"
|
||||
# tag = "*"
|
||||
|
||||
# [[content.filter_button]]
|
||||
# name = "Deep Learning"
|
||||
# tag = "Deep Learning"
|
||||
|
||||
# [[content.filter_button]]
|
||||
# name = "Other"
|
||||
# tag = "Demo"
|
||||
|
||||
[design]
|
||||
# Choose how many columns the section has. Valid values: 1 or 2.
|
||||
columns = "2"
|
||||
|
||||
# Toggle between the various page layout types.
|
||||
# 1 = List
|
||||
# 2 = Compact
|
||||
# 3 = Card
|
||||
# 5 = Showcase
|
||||
view = 2
|
||||
|
||||
# For Showcase view, flip alternate rows?
|
||||
flip_alt_rows = false
|
||||
|
||||
[design.background]
|
||||
# Apply a background color, gradient, or image.
|
||||
# Uncomment (by removing `#`) an option to apply it.
|
||||
# Choose a light or dark text color by setting `text_color_light`.
|
||||
# Any HTML color name or Hex value is valid.
|
||||
|
||||
# Background color.
|
||||
# color = "navy"
|
||||
|
||||
# Background gradient.
|
||||
# gradient_start = "DeepSkyBlue"
|
||||
# gradient_end = "SkyBlue"
|
||||
|
||||
# Background image.
|
||||
# image = "background.jpg" # Name of image in `static/img/`.
|
||||
# image_darken = 0.6 # Darken the image? Range 0-1 where 0 is transparent and 1 is opaque.
|
||||
|
||||
# Text color (true=light or false=dark).
|
||||
# text_color_light = true
|
||||
|
||||
[advanced]
|
||||
# Custom CSS.
|
||||
css_style = ""
|
||||
|
||||
# CSS class.
|
||||
css_class = ""
|
||||
+++
|
||||
|
|
@ -1,71 +0,0 @@
|
|||
+++
|
||||
# A Recent Publications section created with the Pages widget.
|
||||
# This section displays recent blog posts from `content/publication/`.
|
||||
|
||||
widget = "pages" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 90 # Order that this section will appear.
|
||||
|
||||
title = "Recent Publications"
|
||||
subtitle = ""
|
||||
|
||||
[content]
|
||||
# Page type to display. E.g. post, talk, or publication.
|
||||
page_type = "publication"
|
||||
|
||||
# Choose how much pages you would like to display (0 = all pages)
|
||||
count = 5
|
||||
|
||||
# Choose how many pages you would like to offset by
|
||||
offset = 0
|
||||
|
||||
# Page order. Descending (desc) or ascending (asc) date.
|
||||
order = "desc"
|
||||
|
||||
# Filter posts by a taxonomy term.
|
||||
[content.filters]
|
||||
tag = ""
|
||||
category = ""
|
||||
publication_type = ""
|
||||
exclude_featured = false
|
||||
|
||||
[design]
|
||||
# Toggle between the various page layout types.
|
||||
# 1 = List
|
||||
# 2 = Compact
|
||||
# 3 = Card
|
||||
# 4 = Citation (publication only)
|
||||
view = 2
|
||||
|
||||
[design.background]
|
||||
# Apply a background color, gradient, or image.
|
||||
# Uncomment (by removing `#`) an option to apply it.
|
||||
# Choose a light or dark text color by setting `text_color_light`.
|
||||
# Any HTML color name or Hex value is valid.
|
||||
|
||||
# Background color.
|
||||
# color = "navy"
|
||||
|
||||
# Background gradient.
|
||||
# gradient_start = "DeepSkyBlue"
|
||||
# gradient_end = "SkyBlue"
|
||||
|
||||
# Background image.
|
||||
# image = "background.jpg" # Name of image in `static/img/`.
|
||||
# image_darken = 0.6 # Darken the image? Range 0-1 where 0 is transparent and 1 is opaque.
|
||||
|
||||
# Text color (true=light or false=dark).
|
||||
# text_color_light = true
|
||||
|
||||
[advanced]
|
||||
# Custom CSS.
|
||||
css_style = ""
|
||||
|
||||
# CSS class.
|
||||
css_class = ""
|
||||
+++
|
||||
|
||||
{{% alert note %}}
|
||||
Quickly discover relevant content by [filtering publications]({{< ref "/publication/_index.md" >}}).
|
||||
{{% /alert %}}
|
|
@ -1,35 +0,0 @@
|
|||
+++
|
||||
# A Skills section created with the Featurette widget.
|
||||
widget = "featurette" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 30 # Order that this section will appear.
|
||||
|
||||
title = "Skills"
|
||||
subtitle = ""
|
||||
|
||||
# Showcase personal skills or business features.
|
||||
#
|
||||
# Add/remove as many `[[feature]]` blocks below as you like.
|
||||
#
|
||||
# For available icons, see: https://sourcethemes.com/academic/docs/widgets/#icons
|
||||
|
||||
[[feature]]
|
||||
icon = "r-project"
|
||||
icon_pack = "fab"
|
||||
name = "R"
|
||||
description = "90%"
|
||||
|
||||
[[feature]]
|
||||
icon = "chart-line"
|
||||
icon_pack = "fas"
|
||||
name = "Statistics"
|
||||
description = "100%"
|
||||
|
||||
[[feature]]
|
||||
icon = "camera-retro"
|
||||
icon_pack = "fas"
|
||||
name = "Photography"
|
||||
description = "10%"
|
||||
|
||||
+++
|
|
@ -1,54 +0,0 @@
|
|||
+++
|
||||
# Slider widget.
|
||||
widget = "slider" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 1 # Order that this section will appear.
|
||||
|
||||
# Slide interval.
|
||||
# Use `false` to disable animation or enter a time in ms, e.g. `5000` (5s).
|
||||
interval = false
|
||||
|
||||
# Slide height (optional).
|
||||
# E.g. `500px` for 500 pixels or `calc(100vh - 70px)` for full screen.
|
||||
height = ""
|
||||
|
||||
# Slides.
|
||||
# Duplicate an `[[item]]` block to add more slides.
|
||||
[[item]]
|
||||
title = "Hello"
|
||||
content = "I am center aligned :smile:"
|
||||
align = "center" # Choose `center`, `left`, or `right`.
|
||||
|
||||
# Overlay a color or image (optional).
|
||||
# Deactivate an option by commenting out the line, prefixing it with `#`.
|
||||
overlay_color = "#666" # An HTML color value.
|
||||
overlay_img = "headers/bubbles-wide.jpg" # Image path relative to your `static/img/` folder.
|
||||
overlay_filter = 0.5 # Darken the image. Value in range 0-1.
|
||||
|
||||
# Call to action button (optional).
|
||||
# Activate the button by specifying a URL and button label below.
|
||||
# Deactivate by commenting out parameters, prefixing lines with `#`.
|
||||
cta_label = "Get Academic"
|
||||
cta_url = "https://sourcethemes.com/academic/"
|
||||
cta_icon_pack = "fas"
|
||||
cta_icon = "graduation-cap"
|
||||
|
||||
[[item]]
|
||||
title = "Left"
|
||||
content = "I am left aligned :smile:"
|
||||
align = "left"
|
||||
|
||||
overlay_color = "#555" # An HTML color value.
|
||||
overlay_img = "" # Image path relative to your `static/img/` folder.
|
||||
overlay_filter = 0.5 # Darken the image. Value in range 0-1.
|
||||
|
||||
[[item]]
|
||||
title = "Right"
|
||||
content = "I am right aligned :smile:"
|
||||
align = "right"
|
||||
|
||||
overlay_color = "#333" # An HTML color value.
|
||||
overlay_img = "" # Image path relative to your `static/img/` folder.
|
||||
overlay_filter = 0.5 # Darken the image. Value in range 0-1.
|
||||
+++
|
|
@ -1,22 +0,0 @@
|
|||
+++
|
||||
# Tag Cloud widget.
|
||||
widget = "tag_cloud" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 120 # Order that this section will appear.
|
||||
|
||||
title = "Popular Topics"
|
||||
subtitle = ""
|
||||
|
||||
[content]
|
||||
# Choose the taxonomy from `config.toml` to display (e.g. tags, categories)
|
||||
taxonomy = "tags"
|
||||
|
||||
# Choose how many tags you would like to display (0 = all tags)
|
||||
count = 20
|
||||
|
||||
[design]
|
||||
# Minimum and maximum font sizes (1.0 = 100%).
|
||||
font_size_min = 0.7
|
||||
font_size_max = 2.0
|
||||
+++
|
|
@ -1,69 +0,0 @@
|
|||
+++
|
||||
# A Recent and Upcoming Talks section created with the Pages widget.
|
||||
# This section displays recent talks from `content/talk/`.
|
||||
|
||||
widget = "pages" # See https://sourcethemes.com/academic/docs/page-builder/
|
||||
headless = true # This file represents a page section.
|
||||
active = false # Activate this widget? true/false
|
||||
weight = 70 # Order that this section will appear.
|
||||
|
||||
title = "Recent & Upcoming Talks"
|
||||
subtitle = ""
|
||||
|
||||
[content]
|
||||
# Page type to display. E.g. post, talk, or publication.
|
||||
page_type = "talk"
|
||||
|
||||
# Choose how much pages you would like to display (0 = all pages)
|
||||
count = 5
|
||||
|
||||
# Choose how many pages you would like to offset by
|
||||
offset = 0
|
||||
|
||||
# Page order. Descending (desc) or ascending (asc) date.
|
||||
order = "desc"
|
||||
|
||||
# Filter posts by a taxonomy term.
|
||||
[content.filters]
|
||||
tag = ""
|
||||
category = ""
|
||||
publication_type = ""
|
||||
exclude_featured = false
|
||||
exclude_past = false
|
||||
exclude_future = false
|
||||
|
||||
[design]
|
||||
# Toggle between the various page layout types.
|
||||
# 1 = List
|
||||
# 2 = Compact
|
||||
# 3 = Card
|
||||
# 4 = Citation (publication only)
|
||||
view = 2
|
||||
|
||||
[design.background]
|
||||
# Apply a background color, gradient, or image.
|
||||
# Uncomment (by removing `#`) an option to apply it.
|
||||
# Choose a light or dark text color by setting `text_color_light`.
|
||||
# Any HTML color name or Hex value is valid.
|
||||
|
||||
# Background color.
|
||||
# color = "navy"
|
||||
|
||||
# Background gradient.
|
||||
# gradient_start = "DeepSkyBlue"
|
||||
# gradient_end = "SkyBlue"
|
||||
|
||||
# Background image.
|
||||
# image = "background.jpg" # Name of image in `static/img/`.
|
||||
# image_darken = 0.6 # Darken the image? Range 0-1 where 0 is transparent and 1 is opaque.
|
||||
|
||||
# Text color (true=light or false=dark).
|
||||
# text_color_light = true
|
||||
|
||||
[advanced]
|
||||
# Custom CSS.
|
||||
css_style = ""
|
||||
|
||||
# CSS class.
|
||||
css_class = ""
|
||||
+++
|
|
@ -43,7 +43,7 @@ The number of blocks a mino has is also known as its rank.
|
|||
Tetris is played on an [X-Y grid](https://en.wikipedia.org/wiki/Cartesian_coordinate_system).
|
||||
We will store Minos as slices of points.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
type Point struct {
|
||||
X, Y int
|
||||
}
|
||||
|
@ -56,7 +56,7 @@ func (p Point) Reflect() Point { return Point{-p.X, p.Y} }
|
|||
type Mino []Point
|
||||
|
||||
var minoT = Mino{{0, 0}, {1, 0}, {2, 0}, {1, 1}}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
## Generation
|
||||
|
||||
|
@ -69,7 +69,7 @@ To compare minos efficiently while generating, we will compare their string repr
|
|||
We will define a String method which sorts the coordinates before printing.
|
||||
This allows us to compare duplicate minos just by checking their string values.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (m Mino) Len() int { return len(m) }
|
||||
func (m Mino) Swap(i, j int) { m[i], m[j] = m[j], m[i] }
|
||||
func (m Mino) Less(i, j int) bool {
|
||||
|
@ -96,11 +96,11 @@ func (m Mino) String() string {
|
|||
|
||||
return b.String()
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
Origin returns a translated mino located at 0,0 and with positive coordinates only.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (m Mino) minCoords() (int, int) {
|
||||
minx := m[0].X
|
||||
miny := m[0].Y
|
||||
|
@ -128,13 +128,13 @@ func (m Mino) Origin() Mino {
|
|||
|
||||
return newMino
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
Another transformation is applied not only to help identify duplicate minos, but also to retrieve their initial rotation, as [pieces should spawn flat-side down](https://tetris.wiki/Super_Rotation_System).
|
||||
|
||||
The flattest side is calculated and a flattened mino is returned.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (m Mino) Flatten() Mino {
|
||||
var (
|
||||
w, h = m.Size()
|
||||
|
@ -185,11 +185,11 @@ func (m Mino) Flatten() Mino {
|
|||
|
||||
return newMino
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
Variations returns the three other rotations of a mino.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (m Mino) Variations() []Mino {
|
||||
v := make([]Mino, 3)
|
||||
for i := 0; i < 3; i++ {
|
||||
|
@ -204,11 +204,11 @@ func (m Mino) Variations() []Mino {
|
|||
|
||||
return v
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
Canonical returns a flattened mino translated to 0,0.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (m Mino) Canonical() Mino {
|
||||
var (
|
||||
ms = m.Origin().String()
|
||||
|
@ -231,13 +231,13 @@ func (m Mino) Canonical() Mino {
|
|||
|
||||
return v[c].Origin().Flatten().Origin()
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
### Generating new minos
|
||||
|
||||
Neighborhood returns the [Von Neumann neighborhood](https://en.wikipedia.org/wiki/Von_Neumann_neighborhood) of a point.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (p Point) Neighborhood() []Point {
|
||||
return []Point{
|
||||
{p.X - 1, p.Y},
|
||||
|
@ -245,11 +245,11 @@ func (p Point) Neighborhood() []Point {
|
|||
{p.X + 1, p.Y},
|
||||
{p.X, p.Y + 1}}
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
NewPoints calculates the neighborhood of each point of a mino and returns only the new points.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (m Mino) HasPoint(p Point) bool {
|
||||
for _, mp := range m {
|
||||
if mp == p {
|
||||
|
@ -275,11 +275,11 @@ func (m Mino) NewPoints() []Point {
|
|||
|
||||
return newPoints
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
NewMinos returns a new mino for every new neighborhood point of a supplied mino.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func (m Mino) NewMinos() []Mino {
|
||||
points := m.NewPoints()
|
||||
|
||||
|
@ -290,11 +290,11 @@ func (m Mino) NewMinos() []Mino {
|
|||
|
||||
return minos
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
Generate procedurally generates minos of a supplied rank.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func Generate(rank int) ([]Mino, error) {
|
||||
switch {
|
||||
case rank < 0:
|
||||
|
@ -333,7 +333,7 @@ func Generate(rank int) ([]Mino, error) {
|
|||
func monomino() Mino {
|
||||
return Mino{{0, 0}}
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
# Matrix
|
||||
|
||||
|
@ -343,7 +343,7 @@ The matrix is typically 10 blocks wide and 20 blocks high.
|
|||
|
||||
A block is an integer representing the contents of a single X-Y coordinate on the matrix.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
type Block int
|
||||
|
||||
const (
|
||||
|
@ -356,7 +356,7 @@ const (
|
|||
BlockSolidGreen
|
||||
BlockSolidOrange
|
||||
)
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
The matrix will be stored as a slice of blocks.
|
||||
The zero-value of Block is a blank space.
|
||||
|
@ -364,7 +364,7 @@ The zero-value of Block is a blank space.
|
|||
The matrix has a width, height and buffer height.
|
||||
The buffer is additional space above the visible playfield.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
type Matrix struct {
|
||||
W int // Width
|
||||
H in // Height
|
||||
|
@ -383,11 +383,11 @@ func NewMatrix(w int, h int, b int) *Matrix {
|
|||
|
||||
return &m
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
To retrieve the contents of a point, we calculate its index by multiplying the Y coordinate with the matrix width and adding the X coordinate.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
func I(x int, y int, w int) int {
|
||||
if x < 0 || x >= w || y < 0 {
|
||||
log.Panicf("failed to retrieve index for %d,%d width %d: invalid coordinates", x, y, w)
|
||||
|
@ -404,4 +404,4 @@ func (m *Matrix) Block(x int, y int) Block {
|
|||
index := I(x, y, m.W)
|
||||
return m.M[index]
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
|
|
@ -4,24 +4,15 @@ date: 2019-11-08T01:42:18-07:00
|
|||
categories: [tutorial]
|
||||
---
|
||||
|
||||
<a href="https://github.com/rivo/tview/tree/master/demos/presentation"><img src="https://raw.githubusercontent.com/rivo/tview/master/tview.gif" width=640" height="446" border="0" title="tview presentation demo"></a>
|
||||
[![Recording of presentation demo](https://raw.githubusercontent.com/rivo/tview/master/tview.gif)](https://github.com/rivo/tview/tree/master/demos/presentation)
|
||||
|
||||
This is an introduction to using [tview](https://github.com/rivo/tview) to create rich terminal-based user interfaces with [Go](https://golang.org).
|
||||
This is an introduction to using [tview](https://github.com/rivo/tview) (or [cview](https://git.sr.ht/~tslocum/cview)) to create rich terminal-based user interfaces with [Go](https://golang.org).
|
||||
|
||||
## Contents
|
||||
|
||||
* [Primitives](#primitives)
|
||||
* [Widgets](#widgets)
|
||||
* [Elements](#widget-elements)
|
||||
* [Containers](#widget-containers)
|
||||
* [Thread Safety](#thread-safety)
|
||||
* [Example Application](#example-application)
|
||||
|
||||
# Primitives
|
||||
## Primitives
|
||||
|
||||
The [Primitive](https://godoc.org/github.com/rivo/tview#Primitive) interface is as follows:
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
type Primitive interface {
|
||||
Draw(screen tcell.Screen)
|
||||
GetRect() (int, int, int, int)
|
||||
|
@ -31,18 +22,18 @@ type Primitive interface {
|
|||
Blur()
|
||||
GetFocusable() Focusable
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
[Box](https://godoc.org/github.com/rivo/tview#Box) is the only primitive implemented.
|
||||
It has a size, padding amount, optional border, optional title and background color.
|
||||
|
||||
# Widgets
|
||||
## Widgets
|
||||
|
||||
Widgets are structs which embed a [Box](https://godoc.org/github.com/rivo/tview#Box) and build upon it.
|
||||
|
||||
From the [TextView](https://godoc.org/github.com/rivo/tview#TextView) declaration:
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
type TextView struct {
|
||||
*Box
|
||||
|
||||
|
@ -54,58 +45,58 @@ type TextView struct {
|
|||
|
||||
// ...
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
Some widgets allow nesting other widgets within them, such as [Grid](https://godoc.org/github.com/rivo/tview#Grid).
|
||||
|
||||
Most widget commands may be chained together:
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
nameLabel := tview.NewTextView().
|
||||
SetTextAlign(tview.AlignRight).
|
||||
SetDynamicColors(true).
|
||||
SetWrap(true).
|
||||
SetWordWrap(true).
|
||||
SetText("Please enter your name:")
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
New widgets may be defined, as documented in the [Primitive demo](https://github.com/rivo/tview/tree/master/demos/primitive).
|
||||
|
||||
## Widget Elements
|
||||
### Widget Elements
|
||||
|
||||
---
|
||||
|
||||
[**Button**](https://godoc.org/github.com/rivo/tview#Button) is a labeled box that triggers an action when selected.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
button := tview.NewButton("OK").SetSelectedFunc(func() {
|
||||
pressedOK()
|
||||
})
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
---
|
||||
|
||||
[**Checkbox**](https://godoc.org/github.com/rivo/tview#Checkbox) holds a label and boolean value which may be checked and unchecked.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
checkbox := tview.NewCheckbox().SetLabel("Toggle value with Enter: ")
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
---
|
||||
|
||||
[**DropDown**](https://godoc.org/github.com/rivo/tview#DropDown) holds one or more options which may be selected as a dropdown list.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
dropdown := tview.NewDropDown().
|
||||
SetLabel("Select an option with Enter: ").
|
||||
SetOptions([]string{"Foo", "Bar", "Baz"}, nil)
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
---
|
||||
|
||||
[**InputField**](https://godoc.org/github.com/rivo/tview#InputField) is a box where text may be entered.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
inputField := tview.NewInputField().
|
||||
SetLabel("Name: ").
|
||||
SetPlaceholder("John Smith").
|
||||
|
@ -113,13 +104,13 @@ inputField := tview.NewInputField().
|
|||
SetDoneFunc(func(key tcell.Key) {
|
||||
processName()
|
||||
})
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
---
|
||||
|
||||
[**Modal**](https://godoc.org/github.com/rivo/tview#Modal) is a centered message window which may have one or more buttons.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
modal := tview.NewModal().
|
||||
SetText("Are you sure you want to exit?").
|
||||
AddButtons([]string{"Cancel", "Quit"}).
|
||||
|
@ -128,23 +119,23 @@ modal := tview.NewModal().
|
|||
app.Stop()
|
||||
}
|
||||
})
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
---
|
||||
|
||||
[**TextView**](https://godoc.org/github.com/rivo/tview#TextView) is a box containing text.
|
||||
[Colored text](https://godoc.org/github.com/rivo/tview#hdr-Colors) is supported when enabled.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
textView := tview.NewTextView().
|
||||
SetWrap(true).
|
||||
SetWordWrap(true).
|
||||
SetText("Hello, World!")
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
---
|
||||
|
||||
## Widget Containers
|
||||
### Widget Containers
|
||||
|
||||
---
|
||||
|
||||
|
@ -190,7 +181,7 @@ See the [TreeView demo](https://github.com/rivo/tview/tree/master/demos/treeview
|
|||
|
||||
---
|
||||
|
||||
# Thread Safety
|
||||
## Thread Safety
|
||||
|
||||
**Most tview functions cannot safely be called from any thread except the main one**.
|
||||
|
||||
|
@ -205,13 +196,13 @@ One exception is [TextView.Write](https://godoc.org/github.com/rivo/tview#TextVi
|
|||
|
||||
Below is an example of setting a new root primitive from another goroutine.
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
app.QueueUpdateDraw(func() {
|
||||
app.SetRoot(appGrid, true)
|
||||
})
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
# Example Application
|
||||
## Example Application
|
||||
|
||||
A tview application is constructed of a running [Application](https://godoc.org/github.com/rivo/tview#Application) with at least one root widget.
|
||||
|
||||
|
@ -223,13 +214,13 @@ In this example, the root is a Grid containing a label, an input and a submit bu
|
|||
|
||||
Install tview if you haven't already:
|
||||
|
||||
```command
|
||||
{{< highlight command >}}
|
||||
go get -u github.com/rivo/tview
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
||||
Then create a file named greet.go:
|
||||
|
||||
```go
|
||||
{{< highlight go >}}
|
||||
package main
|
||||
|
||||
import (
|
||||
|
@ -318,4 +309,4 @@ func main() {
|
|||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
```
|
||||
{{< / highlight >}}
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
title: Projects
|
||||
authorbox: false
|
||||
sidebar: true
|
||||
menu: main
|
||||
toc: false
|
||||
weight: 10
|
||||
---
|
||||
|
||||
| Name | Description |
|
||||
| --- | --- |
|
||||
| [cview](https://git.sr.ht/~tslocum/cview) | Terminal-based user interface toolkit |
|
||||
| [ditty](https://git.sr.ht/~tslocum/ditty) | Audio player |
|
||||
| [gmenu](https://git.sr.ht/~tslocum/gmenu) | Desktop application launcher |
|
||||
| [gophast](https://git.sr.ht/~tslocum/gophast) | Download manager and accelerator
|
||||
| [harmony](https://git.sr.ht/~tslocum/harmony) | Voice and text communications platform
|
||||
| [joker](https://git.sr.ht/~tslocum/joker) | Playing card library
|
||||
| [Meditation Assistant](https://gitlab.com/tslocum/meditationassistant) | Feature packed meditation session timer and recorder
|
||||
| [netris](https://git.sr.ht/~tslocum/netris) | Multiplayer Tetris clone
|
||||
| [sage](https://git.sr.ht/~tslocum/sage) | Markov chain IRC bot
|
||||
| [sshtargate](https://git.sr.ht/~tslocum/sshtargate) | Host SSH portals to applications
|
||||
| [stick](https://git.sr.ht/~tslocum/stick) | Shareable Git-backed Markdown-formatted notes
|
||||
| [TinyIB](https://gitlab.com/tslocum/tinyib) | Lightweight image board |
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"name": "Rocket Nine Labs",
|
||||
"short_name": "Rocket Nine Labs",
|
||||
"lang": "en-us",
|
||||
"theme_color": "#2962ff",
|
||||
"background_color": "#2962ff",
|
||||
"icons": [{
|
||||
"src": "../img/icon-192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
}, {
|
||||
"src": "../img/icon-512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}],
|
||||
"display": "standalone",
|
||||
"start_url": "/?utm_source=web_app_manifest"
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
Subproject commit 2b05d4b1956591cdf2fc692776be3b5efdde777c
|
Loading…
Reference in New Issue